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 network interface detail

GET
/scopes/{scopeId}/network/network-interfaces/{networkInterfaceId}

Retrieves the full Network Interface read model that backs the network interface detail page and its tabs (Overview, Security groups, Allowed address pairs, Floating IP, Activity, Tags): identity (id, name, description, ARN, DNS name), network placement (network id/name/external flag, subnet name + CIDR, fixed IP, MAC, MTU), state (status, adminStateUp, binding type/host), security posture (portSecurity, attached security-group ids, allowed address pairs), floating-IP association, attached device (instance / load balancer / router / DHCP agent) and live throughput gauges (rxMbps, txMbps, pps). Validation: networkInterfaceId must reference a port that exists and is visible inside scopeId; an unknown or out-of-scope id → ERR_NOT_FOUND (404). Async & state: Synchronous read; no state change. Errors: 401 when the session is missing/expired; 403 when the caller lacks reader access to the scope; 404 when the port does not exist in the scope; 500 on backend read failure. Idempotency/Concurrency: Safe, cacheable; no idempotency key required. The response carries an ETag usable as If-Match on subsequent PATCH/PUT/DELETE calls.

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.

networkInterfaceId*string

Network interface (port) identifier, e.g. port-web01.

Response Body

The Network Interface detail read model.

application/json
  1. response

Network interface (port) read model.

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

Port identifier (e.g. port-web01).

name*string

Port name, unique within the project.

description*string
arn*string

Resource name, e.g. arn:publiccloud:network:ist-1:{account}:port/{name}.

networkId*string

Identifier of the network the port lives on.

networkName*string
networkExternal*boolean

True when the network is a public (provider) network.

subnetName*string
subnetCidr*string

CIDR of the subnet the fixed IP is reserved on.

fixedIp*string

PRIMARY fixed address — the first entry of fixedIps. Not the only one: read fixedIps to see the whole reservation. Empty string until the provider allocates.

fixedIps*array<>

The port's FULL fixed-IP reservation as Neutron holds it, in provider order (fixedIp mirrors the first entry). A consumer that shows only fixedIp silently hides every further address, which is how a two-address port read back as a single-address one. Empty until the provider allocates.

mac*string

MAC address under the fa:16:3e OUI, auto-generated at create time.

status*NetworkInterfaceStatus

Port lifecycle status. UI labels Active / Down / Build.

Value in"active""down""build"
statusReason*|

Human-readable, customer-facing reason the last lifecycle command on this port failed (e.g. "The request could not be completed after repeated attempts. Try again, or contact support if it persists."); a create that failed after the port already existed settles down with the reason here. Never raw provider text. Null while healthy, once a later settle clears it, or when the failure carried no detail. Mirrors VirtualNetwork.statusReason.

adminStateUp*boolean

Administrative state; false forces the port down regardless of binding.

portSecurity*boolean

Anti-spoofing filter + security-group enforcement flag.

securityGroups*array<string>

Attached security-group ids; empty when port security is off.

floatingIp*|

Associated floating IP, or null when none is associated.

device*|null

Bound device, or null when the port is unattached.

bindingType*NetworkInterfaceBindingType

Port binding type (BindingType). UI labels: Normal (virtio) / Direct (SR-IOV) / MACVTAP.

Value in"normal""direct""macvtap"
bindingHost*|

Hypervisor the port is bound to, or null when unbound.

mtu*integer

Effective MTU (9000 for SR-IOV direct bindings, otherwise the network MTU).

dnsName*string

A name the platform derives from the interface name and region ({name}.{region}. followed by an internal zone). Informational: it is not guaranteed to resolve.

allowedAddressPairs*array<>
region*RegionId

Platform region code (a DNS-label-shaped slug, e.g. ist-1). No longer a closed enum: the set of valid region codes is operator-managed in the platform-region registry, so this carries only a shape guard. The authoritative set of activated regions is read from GET /regions; invalid-shape codes are VALIDATION_FAILED and codes absent from the registry are rejected at the resolving endpoint.

Match^[a-z][a-z0-9-]{1,39}$
createdAt*string
Formatdate-time
updatedAt*string
Formatdate-time
rxMbps*integer

Current receive throughput in Mb/s (0 when the port is not active).

txMbps*integer

Current transmit throughput in Mb/s (0 when the port is not active).

pps*integer

Current packets-per-second (0 when the port is not active).

curl -X GET "https://example.com/scopes/string/network/network-interfaces/string"
{  "origin": "portal",  "id": "string",  "name": "string",  "description": "string",  "arn": "string",  "networkId": "string",  "networkName": "string",  "networkExternal": true,  "subnetName": "string",  "subnetCidr": "string",  "fixedIp": "string",  "fixedIps": [    {      "ipAddress": "string",      "subnetId": "string"    }  ],  "mac": "string",  "status": "active",  "statusReason": "string",  "adminStateUp": true,  "portSecurity": true,  "securityGroups": [    "string"  ],  "floatingIp": "string",  "device": {    "kind": "instance",    "id": "string",    "name": "string",    "owner": "string"  },  "bindingType": "normal",  "bindingHost": "string",  "mtu": 0,  "dnsName": "string",  "allowedAddressPairs": [    {      "ip": "string",      "mac": ""    }  ],  "region": "string",  "createdAt": "2019-08-24T14:15:22Z",  "updatedAt": "2019-08-24T14:15:22Z",  "rxMbps": 0,  "txMbps": 0,  "pps": 0}