Networking

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

GET
/scopes/{scopeId}/network/networks/{networkId}

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.

Authorization

bearerToken
headerAuthorizationBearer <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.

Path Parameters

scopeId*string

Opaque ownership+authorization scope resolving to tenant + subscription + project.

networkId*string

Identifier of the virtual network within the scope.

Response Body

Virtual network detail read model.

application/json
  1. response

Full network detail read model — the core record plus the resolved DNS servers and address-usage counters.

origin?string

Where 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.

Value in"portal""api""system""imported"
id*string
name*string
cidr?|

Address space CIDR, e.g. 10.0.0.0/16. Null until a subnet defines address space.

status*VirtualNetworkStatus

Lifecycle status of a virtual network (status-registry kind network).

Value in"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*boolean

Shared across projects in the subscription.

external*boolean

Provider/external network flag.

mtu*integer
adminStateUp*boolean
availabilityZone*string
subnets*array<>
tags*array<>

User-supplied resource tags applied to the network.

createdAt*string
Formatdate-time
providerId?|

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*integer

Total usable host capacity across allocation pools.

usedAddresses*integer
curl -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}