VPC

POST /network/routers/{router_id}/diagnostics

Run network diagnostic on router (ping/arping/traceroute)

POST /network/routers/{router_id}/diagnostics/files

Get diagnostics files from router (returns signed download URL)

POST /network/vpc-offerings

Ensure (idempotent create) Karios VPC offering

Request JSON Object:
  • display_text (string)

  • name (string)

  • network_mode (string)

  • redundant_router (boolean) – RedundantRouter, when true, advertises the RedundantRouter capability on the offering’s SourceNat service (NATTED) or Gateway service (ROUTED), so every VPC created against this offering comes up with an HA VR pair. This replaces the post-create restartVPC(makeredundant=true) path — CS’s makeredundant forcibly swaps the VPC onto the stock “Redundant VPC offering” (VpcManagerImpl.restartVpc), destroying the Karios family marker. Baking redundancy into a dedicated offering variant avoids that.

  • routing_mode (string)

  • service_offering_id (string)

  • service_provider_list (object) – ServiceProviderList advertises which providers can supply each service at the VPC level. Multiple providers per service are supported (e.g. {“Lb”: [“VpcVirtualRouter”, “InternalLbVm”]} so tiers inside the VPC can pick Public LB or Internal LB independently). When empty, CS auto- picks the first registered provider per service (typically VpcVirtualRouter). Note: csgo-sdk’s CreateVPCOfferingParams.SetServiceproviderlist takes map[string]string (single-provider). Multi-provider goes through a raw HMAC-signed HTTP call — see createVPCOfferingMultiProvider in vpc.go.

  • specify_as_number (boolean)

  • supported_services[] (string)

POST /network/vpc-offerings/ensure-for-size

Compose (lazy create) a VPC offering for a chosen VR size

Request JSON Object:
  • cpu_number (integer)

  • isolation (string) – Isolation selects the VPC offering family at composition time. “vlan” (default, empty) → karios-vpc-natted-<size> “vxlan” → karios-vpc-vxlan-<size> The VLAN-vs-VXLAN decision is purely Karios-side (CS’s VpcOffering has no Tags field); composed-name suffix drives Karios-layer pairing validation when tiers are later created inside the VPC.

  • memory_mb (integer)

  • network_mode (string)

  • redundant_router (boolean) – RedundantRouter selects the HA offering variant. When true the composed name gains a “-redundant” suffix (karios-vpc-vxlan-medium-redundant) and the offering is created with the RedundantRouter capability. The VPC is then born redundant from the offering — the caller MUST NOT also fire restartVPC(makeredundant=true), which would swap the offering away.

  • routing_mode (string)

  • service_provider_list (object) – ServiceProviderList carries the same multi-provider intent as EnsureOfferingRequest.ServiceProviderList — propagated so per-size variants (karios-vpc-natted-medium etc.) inherit the multi-provider Lb advertisement from their base spec.

  • supported_services[] (string)

  • vr_size_id (string)

  • vr_size_name (string)

  • zone_id (string)

POST /network/vpcs

Create VPC

Request JSON Object:
  • cidr (string)

  • display_text (string)

  • max_tiers (integer) – MaxTiers is the soft per-VPC tier limit persisted on the parent NetBox prefix as karios_max_tiers. <=0 means use the karios default (atlassdn.DefaultVPCMaxTiers). Operator-editable via NetBox UI later.

  • name (string)

  • network_domain (string)

  • offering_id (string)

  • public_mtu (integer)

  • redundant_vr (boolean) – RedundantVR=true makes the VPC come up with a redundant VR pair (HA). CS’s createVPC API doesn’t take a redundancy flag directly — we achieve this by calling restartVPC?makeredundant=true immediately after create. The VPC is briefly non-redundant before the restart promotes it; total time is ~30s for the second VR to deploy.

  • skip_start (boolean) – SkipStart=true tells the wrapper to set CS start=false on the create call so the VPC stays Inactive (no VR system VM). Default false — CS will implement the VPC eagerly per its normal create flow.

  • zone_id (string)

Status Codes:
DELETE /network/vpcs/acl-lists

Delete VPC ACL list

Request JSON Object:
  • acl_list_id (string)

  • vpc_id (string)

POST /network/vpcs/acl-lists

Create VPC ACL list

Request JSON Object:
  • description (string)

  • name (string)

  • vpc_id (string)

PUT /network/vpcs/acl-lists

Update VPC ACL list

Request JSON Object:
  • acl_list_id (string)

  • description (string)

  • name (string)

  • vpc_id (string)

POST /network/vpcs/acl-lists/attach

Attach ACL list to tier

Request JSON Object:
  • acl_list_id (string)

  • tier_network_id (string)

  • vpc_id (string)

DELETE /network/vpcs/acl-lists/items

Delete ACL item

Request JSON Object:
  • acl_list_id (string)

  • acl_rule_id (string)

  • vpc_id (string)

POST /network/vpcs/acl-lists/items

Create ACL item

Request JSON Object:
  • acl_list_id (string)

  • action (string) – allow|deny

  • cidr_list[] (string)

  • end_port (integer)

  • icmp_code (integer)

  • icmp_type (integer)

  • number (integer) – rule order; default = max+10

  • protocol (string)

  • reason (string)

  • start_port (integer)

  • traffic_type (string) – ingress|egress

  • vpc_id (string)

PUT /network/vpcs/acl-lists/items

Update ACL item

Request JSON Object:
  • acl_list_id (string)

  • acl_rule_id (string)

  • action (string)

  • cidr_list[] (string)

  • end_port (integer)

  • icmp_code (integer)

  • icmp_type (integer)

  • number (integer)

  • protocol (string)

  • reason (string)

  • start_port (integer)

  • traffic_type (string)

  • vpc_id (string)

POST /network/vpcs/acl-lists/items/list

List ACL items

Request JSON Object:
  • acl_list_id (string)

  • vpc_id (string)

POST /network/vpcs/acl-lists/items/reposition

Reposition ACL item by explicit siblings, returns ordered items

Request JSON Object:
  • acl_list_id (string)

  • acl_rule_id (string)

  • next_acl_rule_id (string)

  • previous_acl_rule_id (string)

  • vpc_id (string)

POST /network/vpcs/acl-lists/items/shift-position

Shift ACL item position one step (up|down), returns ordered items

Request JSON Object:
  • acl_list_id (string)

  • acl_rule_id (string)

  • direction (string) – “up” | “down”

  • vpc_id (string)

POST /network/vpcs/acl-lists/list

List VPC ACL lists

Request JSON Object:
  • vpc_id (string)

POST /network/vpcs/list

List VPCs

Status Codes:
POST /network/vpcs/public-ips/acquire

Acquire a public IP for a VPC (CS auto-picks from zone pool)

Request JSON Object:
  • description (string) – default “vpc:<id>”

  • vpc_id (string) – (required)

POST /network/vpcs/tiers

Create VPC tier

Request JSON Object:
  • acl_id (string)

  • display_text (string)

  • gateway (string)

  • name (string)

  • netmask (string)

  • network_offering_id (string)

  • vlan (string) – VLAN carries the isolation tag the offering’s SpecifyVLAN=true flag requires. For VLAN-based offerings this is a VLAN tag (1-4094); for VXLAN-based offerings (future) it is a VNI. Optional only when the resolved offering has SpecifyVLAN=false.

  • vpc_id (string)

  • zone_id (string)

DELETE /network/vpcs/{id}

Delete VPC

Parameters:
  • id (string) – VPC ID

GET /network/vpcs/{id}

Get VPC

Parameters:
  • id (string) – VPC ID

PUT /network/vpcs/{id}

Update VPC

Parameters:
  • id (string) – VPC ID

Request JSON Object:
  • display_text (string)

  • id (string)

  • name (string)

  • public_mtu (integer)

POST /network/vpcs/{id}/bgp-peers/change

Change BGP peers for VPC (atomic bulk apply)

Parameters:
  • id (string) – VPC ID

POST /network/vpcs/{id}/private-gateways

Create VPC private gateway

Parameters:
  • id (string) – VPC ID

Request JSON Object:
  • acl_id (string)

  • gateway (string)

  • ip_address (string)

  • netmask (string)

  • physical_network_id (string)

  • source_nat_supported (boolean)

  • vlan (string)

  • vpc_id (string)

POST /network/vpcs/{id}/private-gateways/list

List VPC private gateways

Parameters:
  • id (string) – VPC ID

DELETE /network/vpcs/{id}/private-gateways/{gw_id}

Delete VPC private gateway

Parameters:
  • id (string) – VPC ID (scope only)

  • gw_id (string) – Private Gateway ID

PUT /network/vpcs/{id}/restart

Restart VPC

Parameters:
  • id (string) – VPC ID

Query Parameters:
  • cleanup (boolean) – force VR redeploy

POST /network/vpcs/{id}/routers/list

List VPC routers (system VMs)

Parameters:
  • id (string) – VPC ID

DELETE /network/vpcs/{id}/routers/{router_id}

Destroy VPC router (force redeploy)

POST /network/vpcs/{id}/routers/{router_id}/reboot

Reboot VPC router

POST /network/vpcs/{id}/routers/{router_id}/start

Start VPC router

POST /network/vpcs/{id}/routers/{router_id}/stop

Stop VPC router

POST /network/vpcs/{id}/routers/{router_id}/usage-history

Get VPC router usage history (CPU/Mem/Disk/Net time series)

Parameters:
  • router_id (string) – Router ID

POST /network/vpcs/{id}/static-routes

Create VPC static route

POST /network/vpcs/{id}/static-routes/list

List VPC static routes

Parameters:
  • id (string) – VPC ID

DELETE /network/vpcs/{id}/static-routes/{route_id}

Delete VPC static route

Parameters:
  • route_id (string) – route ID

POST /network/vpcs/{id}/tiers/list

List VPC tiers

Parameters:
  • id (string) – VPC ID

DELETE /network/vpcs/{id}/tiers/{tier_id}

Delete VPC tier

Parameters:
  • id (string) – VPC ID (scope only)

  • tier_id (string) – Tier ID

PUT /network/vpcs/{id}/tiers/{tier_id}

Update VPC tier

Parameters:
  • id (string) – VPC ID (scope only)

  • tier_id (string) – Tier ID

Request JSON Object:
  • display_text (string)

  • id (string)

  • name (string)

  • network_offering_id (string)