Skip to content

List network interfaces in a project.

GET
/v1/projects/{projectId}/network/network-interfaces
Code sample: Shell / cURL
curl --request GET \
--url https://stratum.example.com/v1/projects/example/network/network-interfaces \
--header 'Authorization: Bearer <token>'

Optional ?subnetId= filter narrows to a subnet; ?instanceId= narrows to NICs attached to a specific instance; ?securityGroupId= returns only NICs that have that SG attached (backs the SG detail page’s “used by” reverse- reference in the web UI).

Every returned NIC has its securityGroupIds hydrated — the list payload matches the shape of the per-NIC GET so clients don’t need a second round-trip per NIC.

projectId
required
string
/^p-[a-z0-9-]+$/
subnetId
string
/^subnet-[a-z0-9-]+$/
instanceId
string
securityGroupId
string
/^sg-[a-z0-9-]+$/

NICs.

Media typeapplication/json
object
items
required
Array<object>
object
id
required
string
/^nic-[a-z0-9-]+$/
projectId
required
string
/^p-[a-z0-9-]+$/
subnetId
required
string
/^subnet-[a-z0-9-]+$/
vpcId
required
string
/^vpc-[a-z0-9-]+$/
region
required
string
/^[a-z][a-z0-9]+(-[a-z0-9]+)*$/
availabilityZone
required
string
name
required
string
/^[a-z][a-z0-9-]{1,38}[a-z0-9]$/
displayName
required
string
>= 1 characters <= 100 characters
description
string
macAddress
required

Server-generated QEMU 52:54:00:XX:XX:XX MAC.

string
primaryIP
required

IPv4 address allocated by Stratum IPAM.

string
secondaryIPs

Reserved for 2.x multi-IP NICs.

Array<string>
floatingIPId

0-or-1 floating IPs per NIC at v1.

string
securityGroupIds
required
Array<string>
0 <= 5 items
attachment

Embedded on a NIC when state is in-use. instanceId is the opaque Compute-side identifier; deviceIndex orders the NIC within the instance’s domain XML.

object
instanceId
required
string
deviceIndex
required
integer
attachedAt
required
string format: date-time
interfaceType

What kind of port this is. interface is a plain instance-attachable NIC; load-balancer marks a Stratum-owned LB data-plane port whose owning LB is in ownerId; nat-gateway is reserved; database is a Stratum Database endpoint port in your subnet whose owning db instance is in ownerId — it carries your security groups and is released with the instance. System-set — never accepted on create.

string
Allowed values: interface load-balancer nat-gateway resolver-inbound database
ownerId

The owning resource for non-interface kinds (e.g. the lb-... id for a load-balancer data-plane port). Absent on plain interfaces — instance attachments stay on attachment.instanceId.

string
sourceDestCheck
required

AWS-style anti-spoofing; drop packets not addressed to this NIC’s IP.

boolean
state
required
string
Allowed values: creating available attaching in-use detaching deleting deleted error
tags

AWS-shape resource tags. Freeform UTF-8 keys (1-128 bytes, no leading/trailing whitespace) mapped to freeform UTF-8 values (0-256 bytes). Max 50 tags per resource. Reserved prefixes (stratum.dev/, stratum.platform_health., stratum:, aws:) return 400 RESERVED_NAMESPACE on customer input. PATCH replaces the whole map..

object
<= 50 properties
key
additional properties
string
<= 256 characters
createdAt
required
string format: date-time
updatedAt
required
string format: date-time
deletedAt
string format: date-time
nullable
createdBy
required
string
nextPageToken
string
isTruncated

True when the server had more rows than it returned. The response is a valid prefix of the result, not the whole of it.

Without this flag a client at the server’s row ceiling receives a full page and no nextPageToken, which means “this is the complete set” — so data it never saw would be indistinguishable from data that does not exist.

It does not imply a cursor exists. These queries do not all sort on a total order, so a resumable token cannot be minted for them yet. The remedy is to narrow the request (a filter, or a tighter scope), not to page.

boolean

Example

{
"items": [
{
"interfaceType": "interface",
"state": "creating"
}
]
}