Preview — pending review
This reference is generated from the platform API contract and is still under review. Operations, fields, and descriptions can change before publication.
Get virtual network detail
Retrieves the full read model behind the network detail page: the core network record (status, CIDR,
MTU, admin state, shared/external flags, availability zone, embedded subnets and connected
device ports) plus the detail-only extras — DNS servers and mode, DDoS protection tier, flow-log
configuration, VNet encryption, BGP flag, embedded peering links and address-space utilization
counters (totalAddresses/usedAddresses).
Validation: networkId must reference a network inside the given scope, else 404 NOT_FOUND;
the caller needs at least reader access to the scope, else 403 FORBIDDEN.
Async & state: Synchronous read; no state change. The response carries an ETag the client
can echo as If-Match on subsequent PATCH/DELETE calls.
Errors: 401 unauthenticated; 403 no read access to the scope; 404 unknown networkId or a
network soft-deleted out of view; 500 on read-model failure.
Idempotency/Concurrency: Safe, cacheable; no idempotency key required.
bearerTokenAuthorizationBearer <token>An API token (pc_live_…) or a service-account key (sak_live_…), created in Identity & Access Management and sent as Authorization: Bearer <token>. Requests are rate limited per credential and per tenant: every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset, and a refused request gets 429 RATE_LIMITED with Retry-After.
scopeId*stringOpaque ownership+authorization scope resolving to tenant + subscription + project.
networkId*stringIdentifier of the virtual network within the scope.
Virtual network detail read model.
application/json- response
Full network detail read model — the core record plus the resolved DNS servers and address-usage counters.
origin?stringWhere the resource was made -- portal for a create on the console, api for an object made straight against the OpenStack API (CLI, Terraform, the Kubernetes cloud provider) that discovery adopted. Informational; nothing behaves differently. Absent from a backend that predates it, which means portal.
"portal""api""system""imported"id*stringname*stringcidr?|Address space CIDR, e.g. 10.0.0.0/16. Null until a subnet defines address space.
status*VirtualNetworkStatusLifecycle status of a virtual network (status-registry kind network).
"ACTIVE""DOWN""BUILD""ERROR"statusReason*|Human-readable reason for the current status when it is a failure (e.g. "Requested MTU is too big, maximum is 1400." on an ERROR network); null while the network is healthy or the failure carried no detail. Mirrors Instance.statusReason / Volume.statusReason: an ERROR row explains itself on the read model instead of forcing the console to go read the tracking Operation.
statusReasonCode*|Machine-readable companion to statusReason: a small, OPEN vocabulary of codes the console can branch on without parsing the human text, deliberately a plain string rather than a closed enum so a code the client does not recognize yet degrades to the generic failure message. Today the only value is cancelled: the resource is in its failure state because its create operation was CANCELLED; a provider object the create had already built may be left in place, and the resource's DELETE removes it. Reported only while the resource is in that failure state; null otherwise.
shared*booleanShared across projects in the subscription.
external*booleanProvider/external network flag.
mtu*integeradminStateUp*booleanavailabilityZone*stringsubnets*array<>tags*array<>User-supplied resource tags applied to the network.
createdAt*stringdate-timeproviderId?|neutron's UUID for this network; null until the worker has created it. An instance NIC's netId is this id.
dnsServers*array<string>The network's resolver list — what a subnet created under it inherits as its dnsNameservers when the create request does not supply its own, and what a PATCH of this field writes onto every existing subnet. It is not a live rollup, so it can differ from an individual subnet: a subnet created with an explicit dnsNameservers, or patched afterwards, keeps its own list until the next network-level PATCH overwrites it. Read subnets[].dnsNameservers for what instances on a given subnet actually receive.
totalAddresses*integerTotal usable host capacity across allocation pools.
usedAddresses*integercurl -X GET "https://example.com/scopes/string/network/networks/string"{ "origin": "portal", "id": "string", "name": "string", "cidr": "string", "status": "ACTIVE", "statusReason": "string", "statusReasonCode": "string", "shared": true, "external": true, "mtu": 0, "adminStateUp": true, "availabilityZone": "string", "subnets": [ { "id": "string", "name": "string", "cidr": "string", "ipVersion": 4, "gatewayIp": "string", "dhcpEnabled": true, "allocationStart": "string", "allocationEnd": "string", "dnsNameservers": [ "string" ], "hostRoutes": [ { "destination": "string", "nexthop": "string" } ], "allocationPools": [ { "start": "string", "end": "string" } ] } ], "tags": [ { "key": "string", "value": "string" } ], "createdAt": "2019-08-24T14:15:22Z", "providerId": "string", "dnsServers": [ "string" ], "totalAddresses": 0, "usedAddresses": 0}