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 router detail

GET
/scopes/{scopeId}/network/routers/{routerId}

Retrieves the full Router read model that hydrates the router detail page: identity (id, name), lifecycle status, adminStateUp, HA and distributed (DVR) flags, the external gateway block (external network, external IP, SNAT flag) or null when no gateway is attached, the attached internal interfaces with their network/subnet/fixed-IP/status, the configured static routes, and createdAt. The detail view derives its Overview essentials, Interfaces tab, Static routes tab, and effective Route table from this single payload. Validation: scopeId must be accessible to the caller and routerId must identify a router visible in that scope → 404 NOT_FOUND when unknown or outside the caller's scope. Async & state: Synchronous read; no state change. The response includes an ETag so subsequent PATCH/DELETE calls can use If-Match for optimistic concurrency. Errors: 401 unauthenticated; 403 caller lacks reader access to the scope; 404 router not found in scope; 500 internal read failure. Idempotency/Concurrency: Safe, cacheable; no idempotency key required. The returned ETag changes whenever the router, its interfaces, its routes, or its gateway are mutated.

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.

routerId*string

Identifier of the router.

Response Body

The router detail read model.

application/json
  1. response

Virtual router connecting subnets and reaching external networks.

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

Router identifier.

name*string

Router name (lowercase letters, numbers, hyphens; max 63 chars).

status*NetworkStatus

Lifecycle status shared by networking resources.

Value in"ACTIVE""DOWN""BUILD""ERROR"
statusReason*|

Human-readable reason the last lifecycle command on this router failed (e.g. the Neutron message of a refused create or gateway attach); null once a later command settles the router healthy, or when nothing failed. Mirrors VirtualNetwork.statusReason. A router whose create failed after the Neutron router already existed shows the provider's real status, gateway, interfaces and routes, with the failure explained here.

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.

adminStateUp*boolean

Administrative state of the router.

ha*boolean

High availability (active/standby pair) enabled.

distributed*boolean

Distributed virtual router (DVR) mode.

externalGateway*|null

External gateway attachment, or null when the router is internal-only.

interfaces*array<>

Internal interfaces attached to the router.

routes*array<>

Static routes configured on the router.

createdAt*string

Creation timestamp (ISO 8601).

Formatdate-time
curl -X GET "https://example.com/scopes/string/network/routers/string"
{  "origin": "portal",  "id": "string",  "name": "string",  "status": "ACTIVE",  "statusReason": "string",  "statusReasonCode": "string",  "adminStateUp": true,  "ha": true,  "distributed": true,  "externalGateway": {    "externalNetwork": "string",    "externalIp": "string",    "snatEnabled": true  },  "interfaces": [    {      "id": "string",      "subnet": "string",      "network": "string",      "fixedIp": "string",      "status": "ACTIVE",      "platformManaged": true    }  ],  "routes": [    {      "id": "string",      "destination": "string",      "nexthop": "string"    }  ],  "createdAt": "2019-08-24T14:15:22Z"}