Skip to content

System#

Appliance health, status, hardware inventory, and network interface table.

9 operations. Roles, error format and pagination are common to the whole API — see the REST API overview.

Authentication

Use a named bearer token. Every endpoint except POST /api/v1/auth/login, POST /api/v1/auth/enrol and GET /api/v1/system/health requires one. A super-user creates a token with POST /api/v1/auth/tokens; the plaintext (bngtok_…) is returned exactly once at creation and only a SHA-256 hash is stored on the appliance, so a lost token is replaced rather than recovered. Send it on every request:

Authorization: Bearer bngtok_…

Each token carries a fixed role (read-only, operator or super-user) and is exempt from CSRF checks. This is the single credential you need for scripts, integrations and monitoring.

Accounts and tokens share one identity model with the appliance CLI (login.users). Repeated authentication failures lock the account/source-IP pair out temporarily (HTTP 423 on login).

Session cookies (bundled web UI only)

The appliance also accepts an interactive session cookie, which is how the bundled web UI authenticates. It is documented for completeness — API clients should not use it. It is bound to a login session and obliges the caller to manage a CSRF token, neither of which suits automation.

POST /api/v1/auth/login with username + password (and a TOTP code when enrolled) sets the bng_session cookie and returns a csrfToken (also available from GET /api/v1/auth/whoami). Cookie-authenticated mutating requests (anything other than GET/HEAD/OPTIONS) must also send that value in the X-CSRF-Token header or they are rejected with 403.

NetavoBNG Management API v1#

Contact: Netavo

System#


POST /api/v1/diagnostics/inject#

Inject a synthetic packet at ingress and report what the pipeline does with it.

Description

Enters the pipeline where received traffic does, so unlike ping it reaches punt classification, MPLS pop, source-VRF classification, uRPF, CGN, session lookup and QoS.

 By default this is a DRY RUN: the packet traverses everything and is dropped at the egress
 staging point, so a forwarding question can be asked of a live customer VRF without putting
 a frame on anyone's wire. Set `emit` to actually transmit — that sends an operator-chosen
 frame out a real port, and is audited as such. Operator role or above.

Input parameters

Parameter In Type Default Nullable Description
bearerToken header string N/A No Named API token — the recommended credential for automation. See Authentication in the API overview.

Request body

{
    "port": 1,
    "source": "172.31.224.233",
    "destination": "10.254.0.12",
    "sVlan": null,
    "cVlan": null,
    "mplsLabel": 100,
    "protocol": 17,
    "sourcePort": 5000,
    "destinationPort": 53,
    "size": 32,
    "emit": false
}

Other accepted types: application/*+json, text/json

Schema of the request body
{
    "required": [
        "port",
        "source",
        "destination",
        "sVlan",
        "cVlan",
        "mplsLabel",
        "protocol",
        "sourcePort",
        "destinationPort",
        "size",
        "emit"
    ],
    "type": "object",
    "properties": {
        "port": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "description": "Ingress port index to pretend the frame arrived on.",
            "format": "int32"
        },
        "source": {
            "type": "string",
            "description": "Source address. What a source-VRF rule matches on."
        },
        "destination": {
            "type": "string",
            "description": "Destination address."
        },
        "sVlan": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "description": "Outer S-VLAN (0/null = none).",
            "format": "int32",
            "nullable": true
        },
        "cVlan": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "description": "Inner C-VLAN (0/null = none).",
            "format": "int32",
            "nullable": true
        },
        "mplsLabel": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "description": "L3VPN label to arrive under (0/null = none).",
            "format": "int64",
            "nullable": true
        },
        "protocol": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "description": "IP protocol number; 17 = UDP, 6 = TCP, 1 = ICMP.",
            "format": "int32",
            "nullable": true
        },
        "sourcePort": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "description": "L4 source port for TCP/UDP.",
            "format": "int32",
            "nullable": true
        },
        "destinationPort": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "description": "L4 destination port for TCP/UDP.",
            "format": "int32",
            "nullable": true
        },
        "size": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "description": "Payload bytes after the L4 header.",
            "format": "int32",
            "nullable": true
        },
        "emit": {
            "type": "boolean",
            "description": "Actually transmit. Default false — trace and drop before egress.",
            "nullable": true
        }
    },
    "description": "POST /api/v1/diagnostics/inject body — a packet described, not hex-encoded.",
    "example": {
        "port": 1,
        "source": "172.31.224.233",
        "destination": "10.254.0.12",
        "sVlan": null,
        "cVlan": null,
        "mplsLabel": 100,
        "protocol": 17,
        "sourcePort": 5000,
        "destinationPort": 53,
        "size": 32,
        "emit": false
    }
}

Responses

{
    "frameBytes": 82,
    "emitted": false,
    "dryRun": true,
    "steps": [
        {
            "stage": "SourceVrf",
            "verdict": "Ok",
            "a": 7,
            "b": 16
        }
    ]
}
Schema of the response body
{
    "required": [
        "frameBytes",
        "emitted",
        "dryRun",
        "steps"
    ],
    "type": "object",
    "properties": {
        "frameBytes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "description": "Size of the frame that was built.",
            "format": "int32"
        },
        "emitted": {
            "type": "boolean",
            "description": "True if it was actually transmitted rather than traced and dropped."
        },
        "dryRun": {
            "type": "boolean",
            "description": "True when the packet was dropped before egress."
        },
        "steps": {
            "type": "array",
            "items": {
                "$ref": "#/components/schemas/TraceStep"
            },
            "description": "Per-stage decisions, in the order the pipeline took them."
        }
    },
    "description": "What the data plane did with an injected packet.",
    "example": {
        "frameBytes": 82,
        "emitted": false,
        "dryRun": true,
        "steps": [
            {
                "stage": "SourceVrf",
                "verdict": "Ok",
                "a": 7,
                "b": 16
            }
        ]
    }
}
{
    "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
    "title": "VRF not found",
    "status": 404,
    "detail": "No VRF named 'wholesale-b' is configured.",
    "instance": "/api/v1/vrfs/wholesale-b"
}
Schema of the response body
{
    "type": "object",
    "properties": {
        "type": {
            "type": "string",
            "nullable": true
        },
        "title": {
            "type": "string",
            "nullable": true
        },
        "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32",
            "nullable": true
        },
        "detail": {
            "type": "string",
            "nullable": true
        },
        "instance": {
            "type": "string",
            "nullable": true
        }
    },
    "example": {
        "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
        "title": "VRF not found",
        "status": 404,
        "detail": "No VRF named 'wholesale-b' is configured.",
        "instance": "/api/v1/vrfs/wholesale-b"
    }
}
Schema of the response body

{
    "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
    "title": "VRF not found",
    "status": 404,
    "detail": "No VRF named 'wholesale-b' is configured.",
    "instance": "/api/v1/vrfs/wholesale-b"
}
Schema of the response body
{
    "type": "object",
    "properties": {
        "type": {
            "type": "string",
            "nullable": true
        },
        "title": {
            "type": "string",
            "nullable": true
        },
        "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32",
            "nullable": true
        },
        "detail": {
            "type": "string",
            "nullable": true
        },
        "instance": {
            "type": "string",
            "nullable": true
        }
    },
    "example": {
        "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
        "title": "VRF not found",
        "status": 404,
        "detail": "No VRF named 'wholesale-b' is configured.",
        "instance": "/api/v1/vrfs/wholesale-b"
    }
}
Schema of the response body

{
    "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
    "title": "VRF not found",
    "status": 404,
    "detail": "No VRF named 'wholesale-b' is configured.",
    "instance": "/api/v1/vrfs/wholesale-b"
}
Schema of the response body
{
    "type": "object",
    "properties": {
        "type": {
            "type": "string",
            "nullable": true
        },
        "title": {
            "type": "string",
            "nullable": true
        },
        "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32",
            "nullable": true
        },
        "detail": {
            "type": "string",
            "nullable": true
        },
        "instance": {
            "type": "string",
            "nullable": true
        }
    },
    "example": {
        "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
        "title": "VRF not found",
        "status": 404,
        "detail": "No VRF named 'wholesale-b' is configured.",
        "instance": "/api/v1/vrfs/wholesale-b"
    }
}
{
    "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
    "title": "VRF not found",
    "status": 404,
    "detail": "No VRF named 'wholesale-b' is configured.",
    "instance": "/api/v1/vrfs/wholesale-b"
}
Schema of the response body
{
    "type": "object",
    "properties": {
        "type": {
            "type": "string",
            "nullable": true
        },
        "title": {
            "type": "string",
            "nullable": true
        },
        "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32",
            "nullable": true
        },
        "detail": {
            "type": "string",
            "nullable": true
        },
        "instance": {
            "type": "string",
            "nullable": true
        }
    },
    "example": {
        "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
        "title": "VRF not found",
        "status": 404,
        "detail": "No VRF named 'wholesale-b' is configured.",
        "instance": "/api/v1/vrfs/wholesale-b"
    }
}

POST /api/v1/diagnostics/ping#

Ping from the data plane, optionally inside a VRF.

Description

Originated by the forwarding plane, not the host: a service VRF carries no kernel addresses, so the host cannot source a packet in one at all. The reply traverses the full ingress path. A payload larger than the path MTU with dontFragment set is sent deliberately — "would fragment" is a result, not an input error. Operator role or above; local appliance only (the fleet proxy is GET-only).

Input parameters

Parameter In Type Default Nullable Description
bearerToken header string N/A No Named API token — the recommended credential for automation. See Authentication in the API overview.

Request body

{
    "destination": "192.0.2.50",
    "vrf": "cust-alt-jat",
    "source": null,
    "count": 5,
    "size": 56,
    "dontFragment": false,
    "ttl": 64,
    "timeoutMs": 1000
}

Other accepted types: application/*+json, text/json

Schema of the request body
{
    "required": [
        "destination",
        "vrf",
        "source",
        "count",
        "size",
        "dontFragment",
        "ttl",
        "timeoutMs"
    ],
    "type": "object",
    "properties": {
        "destination": {
            "type": "string",
            "description": "Address to ping, IPv4 or IPv6."
        },
        "vrf": {
            "type": "string",
            "description": "VRF to send from; omit for the default table.",
            "nullable": true
        },
        "source": {
            "type": "string",
            "description": "Address to source from; defaults to that VRF's configured gateway.",
            "nullable": true
        },
        "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "description": "Number of echoes (capped).",
            "format": "int32",
            "nullable": true
        },
        "size": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "description": "ICMP payload bytes (capped).",
            "format": "int32",
            "nullable": true
        },
        "dontFragment": {
            "type": "boolean",
            "description": "Set DF. Ignored for IPv6, which never fragments in transit.",
            "nullable": true
        },
        "ttl": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "description": "TTL / hop limit.",
            "format": "int32",
            "nullable": true
        },
        "timeoutMs": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "description": "Per-probe wait.",
            "format": "int32",
            "nullable": true
        }
    },
    "description": "POST /api/v1/diagnostics/ping body.",
    "example": {
        "destination": "192.0.2.50",
        "vrf": "cust-alt-jat",
        "source": null,
        "count": 5,
        "size": 56,
        "dontFragment": false,
        "ttl": 64,
        "timeoutMs": 1000
    }
}

Responses

{
    "destination": "192.0.2.50",
    "source": "10.254.0.14",
    "vrf": "cust-alt-jat",
    "sent": 5,
    "received": 5,
    "minMs": 0.9,
    "avgMs": 1.2,
    "maxMs": 1.8,
    "probes": [
        {
            "sequence": 1,
            "rttMs": 1.24,
            "ttl": 62
        }
    ]
}
Schema of the response body
{
    "required": [
        "destination",
        "source",
        "vrf",
        "sent",
        "received",
        "minMs",
        "avgMs",
        "maxMs",
        "probes"
    ],
    "type": "object",
    "properties": {
        "destination": {
            "type": "string",
            "description": "Address pinged."
        },
        "source": {
            "type": "string",
            "description": "Address actually sourced from — worth reporting, since a VRF gateway in\n    documentation space may never see a reply."
        },
        "vrf": {
            "type": "string",
            "description": "VRF used, or null for the default table.",
            "nullable": true
        },
        "sent": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "description": "Echoes sent.",
            "format": "int32"
        },
        "received": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "description": "Replies matched.",
            "format": "int32"
        },
        "minMs": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "description": "Fastest round trip.",
            "format": "double",
            "nullable": true
        },
        "avgMs": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "description": "Mean round trip.",
            "format": "double",
            "nullable": true
        },
        "maxMs": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "description": "Slowest round trip.",
            "format": "double",
            "nullable": true
        },
        "probes": {
            "type": "array",
            "items": {
                "$ref": "#/components/schemas/PingProbe"
            },
            "description": "Per-probe detail."
        }
    },
    "description": "The result of a ping run.",
    "example": {
        "destination": "192.0.2.50",
        "source": "10.254.0.14",
        "vrf": "cust-alt-jat",
        "sent": 5,
        "received": 5,
        "minMs": 0.9,
        "avgMs": 1.2,
        "maxMs": 1.8,
        "probes": [
            {
                "sequence": 1,
                "rttMs": 1.24,
                "ttl": 62
            }
        ]
    }
}
{
    "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
    "title": "VRF not found",
    "status": 404,
    "detail": "No VRF named 'wholesale-b' is configured.",
    "instance": "/api/v1/vrfs/wholesale-b"
}
Schema of the response body
{
    "type": "object",
    "properties": {
        "type": {
            "type": "string",
            "nullable": true
        },
        "title": {
            "type": "string",
            "nullable": true
        },
        "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32",
            "nullable": true
        },
        "detail": {
            "type": "string",
            "nullable": true
        },
        "instance": {
            "type": "string",
            "nullable": true
        }
    },
    "example": {
        "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
        "title": "VRF not found",
        "status": 404,
        "detail": "No VRF named 'wholesale-b' is configured.",
        "instance": "/api/v1/vrfs/wholesale-b"
    }
}
Schema of the response body

{
    "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
    "title": "VRF not found",
    "status": 404,
    "detail": "No VRF named 'wholesale-b' is configured.",
    "instance": "/api/v1/vrfs/wholesale-b"
}
Schema of the response body
{
    "type": "object",
    "properties": {
        "type": {
            "type": "string",
            "nullable": true
        },
        "title": {
            "type": "string",
            "nullable": true
        },
        "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32",
            "nullable": true
        },
        "detail": {
            "type": "string",
            "nullable": true
        },
        "instance": {
            "type": "string",
            "nullable": true
        }
    },
    "example": {
        "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
        "title": "VRF not found",
        "status": 404,
        "detail": "No VRF named 'wholesale-b' is configured.",
        "instance": "/api/v1/vrfs/wholesale-b"
    }
}
Schema of the response body

{
    "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
    "title": "VRF not found",
    "status": 404,
    "detail": "No VRF named 'wholesale-b' is configured.",
    "instance": "/api/v1/vrfs/wholesale-b"
}
Schema of the response body
{
    "type": "object",
    "properties": {
        "type": {
            "type": "string",
            "nullable": true
        },
        "title": {
            "type": "string",
            "nullable": true
        },
        "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32",
            "nullable": true
        },
        "detail": {
            "type": "string",
            "nullable": true
        },
        "instance": {
            "type": "string",
            "nullable": true
        }
    },
    "example": {
        "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
        "title": "VRF not found",
        "status": 404,
        "detail": "No VRF named 'wholesale-b' is configured.",
        "instance": "/api/v1/vrfs/wholesale-b"
    }
}
{
    "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
    "title": "VRF not found",
    "status": 404,
    "detail": "No VRF named 'wholesale-b' is configured.",
    "instance": "/api/v1/vrfs/wholesale-b"
}
Schema of the response body
{
    "type": "object",
    "properties": {
        "type": {
            "type": "string",
            "nullable": true
        },
        "title": {
            "type": "string",
            "nullable": true
        },
        "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32",
            "nullable": true
        },
        "detail": {
            "type": "string",
            "nullable": true
        },
        "instance": {
            "type": "string",
            "nullable": true
        }
    },
    "example": {
        "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
        "title": "VRF not found",
        "status": 404,
        "detail": "No VRF named 'wholesale-b' is configured.",
        "instance": "/api/v1/vrfs/wholesale-b"
    }
}

GET /api/v1/system/hardware#

Hardware inventory.

Description

CPU, memory, storage, board and NIC inventory. Static — gathered once and cached until POST /api/v1/system/hardware/refresh. Fields a platform cannot provide are null. Fleet-proxyable.

Input parameters

Parameter In Type Default Nullable Description
bearerToken header string N/A No Named API token — the recommended credential for automation. See Authentication in the API overview.

Responses

{
    "cpu": {
        "model": "Intel(R) Xeon(R) Gold 6338N CPU @ 2.20GHz",
        "vendor": "GenuineIntel",
        "sockets": 2,
        "cores": 32,
        "threads": 64,
        "mhz": 2194.867,
        "numaNodes": 2,
        "flags": [
            "sse4_2",
            "avx2",
            "aes"
        ]
    },
    "memory": {
        "totalBytes": 135223480320,
        "numaNodes": [
            {
                "node": 0,
                "totalBytes": 67611740160
            },
            {
                "node": 1,
                "totalBytes": 67611740160
            }
        ],
        "hugepages": [
            {
                "sizeKb": 1048576,
                "total": 32,
                "free": 8
            }
        ]
    },
    "storage": {
        "blockDevices": [
            {
                "name": "nvme0n1",
                "model": "SAMSUNG MZQL2960HCJR-00A07",
                "sizeBytes": 960197124096,
                "rotational": false,
                "transport": "nvme"
            }
        ],
        "filesystems": [
            {
                "mountPoint": "/",
                "fsType": "ext4",
                "totalBytes": 491921162240,
                "availableBytes": 463138689024
            }
        ]
    },
    "board": {
        "systemVendor": "Supermicro",
        "systemProduct": "SYS-111C-NR",
        "boardVendor": "Supermicro",
        "boardProduct": "X13SEI-F",
        "biosVendor": "American Megatrends International, LLC.",
        "biosVersion": "1.4",
        "biosDate": "05/22/2025"
    },
    "nics": [
        {
            "pciAddress": "0000:5e:00.0",
            "vendorId": "0x8086",
            "deviceId": "0x1572",
            "vendorName": "Intel Corporation",
            "model": "Ethernet Controller X710 for 10GbE SFP+",
            "driver": "vfio-pci",
            "numaNode": 0,
            "kernelInterface": null
        }
    ]
}
Schema of the response body
{
    "type": "object",
    "properties": {
        "cpu": {
            "$ref": "#/components/schemas/CpuInfo"
        },
        "memory": {
            "$ref": "#/components/schemas/MemoryInfo"
        },
        "storage": {
            "$ref": "#/components/schemas/StorageInfo"
        },
        "board": {
            "$ref": "#/components/schemas/BoardInfo"
        },
        "nics": {
            "type": "array",
            "items": {
                "$ref": "#/components/schemas/Nic"
            }
        }
    },
    "description": "GET /api/v1/system/hardware — static inventory, cached until refresh.",
    "example": {
        "cpu": {
            "model": "Intel(R) Xeon(R) Gold 6338N CPU @ 2.20GHz",
            "vendor": "GenuineIntel",
            "sockets": 2,
            "cores": 32,
            "threads": 64,
            "mhz": 2194.867,
            "numaNodes": 2,
            "flags": [
                "sse4_2",
                "avx2",
                "aes"
            ]
        },
        "memory": {
            "totalBytes": 135223480320,
            "numaNodes": [
                {
                    "node": 0,
                    "totalBytes": 67611740160
                },
                {
                    "node": 1,
                    "totalBytes": 67611740160
                }
            ],
            "hugepages": [
                {
                    "sizeKb": 1048576,
                    "total": 32,
                    "free": 8
                }
            ]
        },
        "storage": {
            "blockDevices": [
                {
                    "name": "nvme0n1",
                    "model": "SAMSUNG MZQL2960HCJR-00A07",
                    "sizeBytes": 960197124096,
                    "rotational": false,
                    "transport": "nvme"
                }
            ],
            "filesystems": [
                {
                    "mountPoint": "/",
                    "fsType": "ext4",
                    "totalBytes": 491921162240,
                    "availableBytes": 463138689024
                }
            ]
        },
        "board": {
            "systemVendor": "Supermicro",
            "systemProduct": "SYS-111C-NR",
            "boardVendor": "Supermicro",
            "boardProduct": "X13SEI-F",
            "biosVendor": "American Megatrends International, LLC.",
            "biosVersion": "1.4",
            "biosDate": "05/22/2025"
        },
        "nics": [
            {
                "pciAddress": "0000:5e:00.0",
                "vendorId": "0x8086",
                "deviceId": "0x1572",
                "vendorName": "Intel Corporation",
                "model": "Ethernet Controller X710 for 10GbE SFP+",
                "driver": "vfio-pci",
                "numaNode": 0,
                "kernelInterface": null
            }
        ]
    }
}
{
    "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
    "title": "VRF not found",
    "status": 404,
    "detail": "No VRF named 'wholesale-b' is configured.",
    "instance": "/api/v1/vrfs/wholesale-b"
}
Schema of the response body
{
    "type": "object",
    "properties": {
        "type": {
            "type": "string",
            "nullable": true
        },
        "title": {
            "type": "string",
            "nullable": true
        },
        "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32",
            "nullable": true
        },
        "detail": {
            "type": "string",
            "nullable": true
        },
        "instance": {
            "type": "string",
            "nullable": true
        }
    },
    "example": {
        "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
        "title": "VRF not found",
        "status": 404,
        "detail": "No VRF named 'wholesale-b' is configured.",
        "instance": "/api/v1/vrfs/wholesale-b"
    }
}
{
    "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
    "title": "VRF not found",
    "status": 404,
    "detail": "No VRF named 'wholesale-b' is configured.",
    "instance": "/api/v1/vrfs/wholesale-b"
}
Schema of the response body
{
    "type": "object",
    "properties": {
        "type": {
            "type": "string",
            "nullable": true
        },
        "title": {
            "type": "string",
            "nullable": true
        },
        "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32",
            "nullable": true
        },
        "detail": {
            "type": "string",
            "nullable": true
        },
        "instance": {
            "type": "string",
            "nullable": true
        }
    },
    "example": {
        "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
        "title": "VRF not found",
        "status": 404,
        "detail": "No VRF named 'wholesale-b' is configured.",
        "instance": "/api/v1/vrfs/wholesale-b"
    }
}

POST /api/v1/system/hardware/refresh#

Re-gather the hardware inventory.

Description

Invalidates the cached inventory so the next read reflects hardware changes. Operator role or above.

Input parameters

Parameter In Type Default Nullable Description
bearerToken header string N/A No Named API token — the recommended credential for automation. See Authentication in the API overview.

Responses

{
    "refreshed": true
}
Schema of the response body
{
    "required": [
        "refreshed"
    ],
    "type": "object",
    "properties": {
        "refreshed": {
            "type": "boolean",
            "description": "Always true — the cached inventory was invalidated."
        }
    },
    "description": "POST /api/v1/system/hardware/refresh result.",
    "example": {
        "refreshed": true
    }
}
{
    "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
    "title": "VRF not found",
    "status": 404,
    "detail": "No VRF named 'wholesale-b' is configured.",
    "instance": "/api/v1/vrfs/wholesale-b"
}
Schema of the response body
{
    "type": "object",
    "properties": {
        "type": {
            "type": "string",
            "nullable": true
        },
        "title": {
            "type": "string",
            "nullable": true
        },
        "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32",
            "nullable": true
        },
        "detail": {
            "type": "string",
            "nullable": true
        },
        "instance": {
            "type": "string",
            "nullable": true
        }
    },
    "example": {
        "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
        "title": "VRF not found",
        "status": 404,
        "detail": "No VRF named 'wholesale-b' is configured.",
        "instance": "/api/v1/vrfs/wholesale-b"
    }
}
{
    "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
    "title": "VRF not found",
    "status": 404,
    "detail": "No VRF named 'wholesale-b' is configured.",
    "instance": "/api/v1/vrfs/wholesale-b"
}
Schema of the response body
{
    "type": "object",
    "properties": {
        "type": {
            "type": "string",
            "nullable": true
        },
        "title": {
            "type": "string",
            "nullable": true
        },
        "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32",
            "nullable": true
        },
        "detail": {
            "type": "string",
            "nullable": true
        },
        "instance": {
            "type": "string",
            "nullable": true
        }
    },
    "example": {
        "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
        "title": "VRF not found",
        "status": 404,
        "detail": "No VRF named 'wholesale-b' is configured.",
        "instance": "/api/v1/vrfs/wholesale-b"
    }
}

GET /api/v1/system/health#

Liveness probe.

Description

Unauthenticated (the only anonymous GET on the API) — for load balancers and monitoring. Answers whenever the control plane can serve requests; use GET /api/v1/system/status for real health detail (data plane, memory, disk).

Responses

{
    "status": "ok"
}
Schema of the response body
{
    "required": [
        "status"
    ],
    "type": "object",
    "properties": {
        "status": {
            "type": "string",
            "description": "Always \"ok\" while the control plane can serve requests."
        }
    },
    "description": "Liveness probe response.",
    "example": {
        "status": "ok"
    }
}

GET /api/v1/system/info#

What product this API belongs to, and what it can serve.

Description

The counterpart of the NetavoVPE management plane's identical endpoint, so a client — the shared web UI in particular — discovers which product it is talking to POSITIVELY rather than inferring it from which endpoints 404.

Input parameters

Parameter In Type Default Nullable Description
bearerToken header string N/A No Named API token — the recommended credential for automation. See Authentication in the API overview.

Responses

{
    "product": "netavo-vpe",
    "version": "1.0.0",
    "hostname": "vpe-cpe1",
    "features": [
        "routing",
        "vrfs",
        "gre-circuits",
        "configuration",
        "logs"
    ]
}
Schema of the response body
{
    "required": [
        "product",
        "version",
        "hostname",
        "features"
    ],
    "type": "object",
    "properties": {
        "product": {
            "type": "string",
            "description": "Package identity: `netavo-bng` or `netavo-vpe`."
        },
        "version": {
            "type": "string",
            "description": "Running software version."
        },
        "hostname": {
            "type": "string",
            "description": "Configured hostname."
        },
        "features": {
            "type": "array",
            "items": {
                "type": "string"
            },
            "description": "Capability tags the client may branch on, e.g. `gre-circuits`."
        }
    },
    "description": "What product a management API belongs to, and what it can serve.\n\nBoth hosts answer `GET /api/v1/system/info` with this, so a client discovers what it is\ntalking to POSITIVELY — rather than inferring it from which endpoints 404, which is how a UI\nends up showing an operator a page that cannot work. The shared web UI uses it to decide which\nnavigation sections apply.",
    "example": {
        "product": "netavo-vpe",
        "version": "1.0.0",
        "hostname": "vpe-cpe1",
        "features": [
            "routing",
            "vrfs",
            "gre-circuits",
            "configuration",
            "logs"
        ]
    }
}
{
    "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
    "title": "VRF not found",
    "status": 404,
    "detail": "No VRF named 'wholesale-b' is configured.",
    "instance": "/api/v1/vrfs/wholesale-b"
}
Schema of the response body
{
    "type": "object",
    "properties": {
        "type": {
            "type": "string",
            "nullable": true
        },
        "title": {
            "type": "string",
            "nullable": true
        },
        "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32",
            "nullable": true
        },
        "detail": {
            "type": "string",
            "nullable": true
        },
        "instance": {
            "type": "string",
            "nullable": true
        }
    },
    "example": {
        "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
        "title": "VRF not found",
        "status": 404,
        "detail": "No VRF named 'wholesale-b' is configured.",
        "instance": "/api/v1/vrfs/wholesale-b"
    }
}
{
    "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
    "title": "VRF not found",
    "status": 404,
    "detail": "No VRF named 'wholesale-b' is configured.",
    "instance": "/api/v1/vrfs/wholesale-b"
}
Schema of the response body
{
    "type": "object",
    "properties": {
        "type": {
            "type": "string",
            "nullable": true
        },
        "title": {
            "type": "string",
            "nullable": true
        },
        "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32",
            "nullable": true
        },
        "detail": {
            "type": "string",
            "nullable": true
        },
        "instance": {
            "type": "string",
            "nullable": true
        }
    },
    "example": {
        "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
        "title": "VRF not found",
        "status": 404,
        "detail": "No VRF named 'wholesale-b' is configured.",
        "instance": "/api/v1/vrfs/wholesale-b"
    }
}

GET /api/v1/system/interfaces#

Network interface table.

Description

All host interfaces with state, speed, addresses and counters, including data-plane ports (whose link state comes from the data plane when the kernel cannot see them). Fleet-proxyable.

Input parameters

Parameter In Type Default Nullable Description
bearerToken header string N/A No Named API token — the recommended credential for automation. See Authentication in the API overview.

Responses

[
    {
        "name": "core0",
        "label": "MS3 NNI 2",
        "pciAddress": "0000:5e:00.1",
        "mac": "a4:2b:8c:11:04:02",
        "driver": "vfio-pci",
        "operState": "up",
        "speedMbps": 10000,
        "mtu": 9000,
        "role": "network",
        "owner": "dataplane",
        "vrfMaster": null
    }
]
Schema of the response body
{
    "type": "array",
    "items": {
        "$ref": "#/components/schemas/Interface"
    }
}
{
    "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
    "title": "VRF not found",
    "status": 404,
    "detail": "No VRF named 'wholesale-b' is configured.",
    "instance": "/api/v1/vrfs/wholesale-b"
}
Schema of the response body
{
    "type": "object",
    "properties": {
        "type": {
            "type": "string",
            "nullable": true
        },
        "title": {
            "type": "string",
            "nullable": true
        },
        "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32",
            "nullable": true
        },
        "detail": {
            "type": "string",
            "nullable": true
        },
        "instance": {
            "type": "string",
            "nullable": true
        }
    },
    "example": {
        "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
        "title": "VRF not found",
        "status": 404,
        "detail": "No VRF named 'wholesale-b' is configured.",
        "instance": "/api/v1/vrfs/wholesale-b"
    }
}
{
    "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
    "title": "VRF not found",
    "status": 404,
    "detail": "No VRF named 'wholesale-b' is configured.",
    "instance": "/api/v1/vrfs/wholesale-b"
}
Schema of the response body
{
    "type": "object",
    "properties": {
        "type": {
            "type": "string",
            "nullable": true
        },
        "title": {
            "type": "string",
            "nullable": true
        },
        "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32",
            "nullable": true
        },
        "detail": {
            "type": "string",
            "nullable": true
        },
        "instance": {
            "type": "string",
            "nullable": true
        }
    },
    "example": {
        "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
        "title": "VRF not found",
        "status": 404,
        "detail": "No VRF named 'wholesale-b' is configured.",
        "instance": "/api/v1/vrfs/wholesale-b"
    }
}

POST /api/v1/system/restart#

Restart the control plane and data plane.

Description

For config changes marked "restart required" that can't be hot-applied. Drops all active sessions immediately; established subscriber sessions re-establish on their own once the appliance is back up. Not fleet-proxyable — always acts on the box actually serving the request, never a remote appliance selected in the fleet view. Admin role required.

Input parameters

Parameter In Type Default Nullable Description
bearerToken header string N/A No Named API token — the recommended credential for automation. See Authentication in the API overview.

Responses

{
    "status": "restarting",
    "message": "Restarting the control plane and data plane now. Active sessions will drop and re-establish automatically."
}
Schema of the response body
{
    "required": [
        "status",
        "message"
    ],
    "type": "object",
    "properties": {
        "status": {
            "type": "string",
            "description": "Always \"restarting\" — the request was accepted."
        },
        "message": {
            "type": "string",
            "description": "Human-readable detail for display."
        }
    },
    "description": "POST /api/v1/system/restart result.",
    "example": {
        "status": "restarting",
        "message": "Restarting the control plane and data plane now. Active sessions will drop and re-establish automatically."
    }
}
{
    "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
    "title": "VRF not found",
    "status": 404,
    "detail": "No VRF named 'wholesale-b' is configured.",
    "instance": "/api/v1/vrfs/wholesale-b"
}
Schema of the response body
{
    "type": "object",
    "properties": {
        "type": {
            "type": "string",
            "nullable": true
        },
        "title": {
            "type": "string",
            "nullable": true
        },
        "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32",
            "nullable": true
        },
        "detail": {
            "type": "string",
            "nullable": true
        },
        "instance": {
            "type": "string",
            "nullable": true
        }
    },
    "example": {
        "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
        "title": "VRF not found",
        "status": 404,
        "detail": "No VRF named 'wholesale-b' is configured.",
        "instance": "/api/v1/vrfs/wholesale-b"
    }
}
{
    "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
    "title": "VRF not found",
    "status": 404,
    "detail": "No VRF named 'wholesale-b' is configured.",
    "instance": "/api/v1/vrfs/wholesale-b"
}
Schema of the response body
{
    "type": "object",
    "properties": {
        "type": {
            "type": "string",
            "nullable": true
        },
        "title": {
            "type": "string",
            "nullable": true
        },
        "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32",
            "nullable": true
        },
        "detail": {
            "type": "string",
            "nullable": true
        },
        "instance": {
            "type": "string",
            "nullable": true
        }
    },
    "example": {
        "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
        "title": "VRF not found",
        "status": 404,
        "detail": "No VRF named 'wholesale-b' is configured.",
        "instance": "/api/v1/vrfs/wholesale-b"
    }
}
{
    "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
    "title": "VRF not found",
    "status": 404,
    "detail": "No VRF named 'wholesale-b' is configured.",
    "instance": "/api/v1/vrfs/wholesale-b"
}
Schema of the response body
{
    "type": "object",
    "properties": {
        "type": {
            "type": "string",
            "nullable": true
        },
        "title": {
            "type": "string",
            "nullable": true
        },
        "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32",
            "nullable": true
        },
        "detail": {
            "type": "string",
            "nullable": true
        },
        "instance": {
            "type": "string",
            "nullable": true
        }
    },
    "example": {
        "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
        "title": "VRF not found",
        "status": 404,
        "detail": "No VRF named 'wholesale-b' is configured.",
        "instance": "/api/v1/vrfs/wholesale-b"
    }
}

GET /api/v1/system/status#

Appliance status: host health + control-plane/data-plane state.

Description

Hostname, uptime, OS/kernel, load, memory, root filesystem, control-plane version/uptime, and live data-plane state (running, heartbeat age, PAL backend). The data-plane block reflects shared-memory liveness when available; this endpoint never errors over a dead data plane — reporting that is its purpose. Fleet-proxyable.

Input parameters

Parameter In Type Default Nullable Description
bearerToken header string N/A No Named API token — the recommended credential for automation. See Authentication in the API overview.

Responses

{
    "hostname": "lns1-hul1",
    "systemUptimeSeconds": 1042318.72,
    "osDescription": "Debian GNU/Linux 13 (trixie)",
    "kernelVersion": "6.12.32-amd64",
    "loadAverages": [
        1.42,
        1.31,
        1.28
    ],
    "memoryTotalBytes": 135223480320,
    "memoryAvailableBytes": 118429581312,
    "rootFsTotalBytes": 491921162240,
    "rootFsAvailableBytes": 463138689024,
    "controlPlane": {
        "uptimeSeconds": 86412.538912,
        "version": "1.4.0",
        "drainState": "normal"
    },
    "dataPlane": {
        "running": true,
        "heartbeatAgeSeconds": 0.184,
        "palBackend": "dpdk"
    }
}
Schema of the response body
{
    "type": "object",
    "properties": {
        "hostname": {
            "type": "string",
            "description": "OS hostname of the appliance (kernel hostname, not webUi.hostname).",
            "nullable": true
        },
        "systemUptimeSeconds": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "format": "double",
            "nullable": true
        },
        "osDescription": {
            "type": "string",
            "nullable": true
        },
        "kernelVersion": {
            "type": "string",
            "nullable": true
        },
        "loadAverages": {
            "type": "array",
            "items": {
                "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
                "format": "double"
            },
            "nullable": true
        },
        "memoryTotalBytes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int64",
            "nullable": true
        },
        "memoryAvailableBytes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int64",
            "nullable": true
        },
        "rootFsTotalBytes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int64",
            "nullable": true
        },
        "rootFsAvailableBytes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int64",
            "nullable": true
        },
        "controlPlane": {
            "$ref": "#/components/schemas/ControlPlaneStatus"
        },
        "dataPlane": {
            "$ref": "#/components/schemas/DataPlaneStatus"
        }
    },
    "description": "GET /api/v1/system/status — dynamic health, poll/stream-friendly.",
    "example": {
        "hostname": "lns1-hul1",
        "systemUptimeSeconds": 1042318.72,
        "osDescription": "Debian GNU/Linux 13 (trixie)",
        "kernelVersion": "6.12.32-amd64",
        "loadAverages": [
            1.42,
            1.31,
            1.28
        ],
        "memoryTotalBytes": 135223480320,
        "memoryAvailableBytes": 118429581312,
        "rootFsTotalBytes": 491921162240,
        "rootFsAvailableBytes": 463138689024,
        "controlPlane": {
            "uptimeSeconds": 86412.538912,
            "version": "1.4.0",
            "drainState": "normal"
        },
        "dataPlane": {
            "running": true,
            "heartbeatAgeSeconds": 0.184,
            "palBackend": "dpdk"
        }
    }
}
{
    "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
    "title": "VRF not found",
    "status": 404,
    "detail": "No VRF named 'wholesale-b' is configured.",
    "instance": "/api/v1/vrfs/wholesale-b"
}
Schema of the response body
{
    "type": "object",
    "properties": {
        "type": {
            "type": "string",
            "nullable": true
        },
        "title": {
            "type": "string",
            "nullable": true
        },
        "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32",
            "nullable": true
        },
        "detail": {
            "type": "string",
            "nullable": true
        },
        "instance": {
            "type": "string",
            "nullable": true
        }
    },
    "example": {
        "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
        "title": "VRF not found",
        "status": 404,
        "detail": "No VRF named 'wholesale-b' is configured.",
        "instance": "/api/v1/vrfs/wholesale-b"
    }
}
{
    "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
    "title": "VRF not found",
    "status": 404,
    "detail": "No VRF named 'wholesale-b' is configured.",
    "instance": "/api/v1/vrfs/wholesale-b"
}
Schema of the response body
{
    "type": "object",
    "properties": {
        "type": {
            "type": "string",
            "nullable": true
        },
        "title": {
            "type": "string",
            "nullable": true
        },
        "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32",
            "nullable": true
        },
        "detail": {
            "type": "string",
            "nullable": true
        },
        "instance": {
            "type": "string",
            "nullable": true
        }
    },
    "example": {
        "type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
        "title": "VRF not found",
        "status": 404,
        "detail": "No VRF named 'wholesale-b' is configured.",
        "instance": "/api/v1/vrfs/wholesale-b"
    }
}

Schemas#

BlockDevice#

Name Type Description
model string | null
name string
rotational boolean | null
sizeBytes
transport string | null Best-effort transport classification: nvme / scsi / virtio / mmc.

BoardInfo#

Name Type Description
biosDate string | null
biosVendor string | null
biosVersion string | null
boardProduct string | null
boardVendor string | null
systemProduct string | null
systemVendor string | null

ControlPlaneStatus#

Name Type Description
drainState string Placeholder until drain orchestration exists; always "normal" for now.
uptimeSeconds
version string | null Informational assembly version of the control plane build.

CpuInfo#

Name Type Description
cores
flags Array<string> Curated subset of CPU flags relevant to the BNG (sse4_2 for the CRC32C ECMP path, avx2, aes) — never the full flag soup.
mhz
model string | null
numaNodes
sockets
threads
vendor string | null

DataPlaneStatus#

Name Type Description
heartbeatAgeSeconds
palBackend string PAL backend: dpdk / af_xdp / mock (config dataPlane.mode).
running boolean

Filesystem#

Name Type Description
availableBytes
fsType string | null
mountPoint string
totalBytes

HardwareInventory#

Name Type Description
board BoardInfo
cpu CpuInfo
memory MemoryInfo
nics Array<Nic>
storage StorageInfo

HardwareRefreshResult#

Name Type Description
refreshed boolean Always true — the cached inventory was invalidated.

Health#

Name Type Description
status string Always "ok" while the control plane can serve requests.

HugepagePool#

Name Type Description
free
sizeKb
total

InjectRequest#

Name Type Description
cVlan Inner C-VLAN (0/null = none).
destination string Destination address.
destinationPort L4 destination port for TCP/UDP.
emit boolean | null Actually transmit. Default false — trace and drop before egress.
mplsLabel L3VPN label to arrive under (0/null = none).
port Ingress port index to pretend the frame arrived on.
protocol IP protocol number; 17 = UDP, 6 = TCP, 1 = ICMP.
size Payload bytes after the L4 header.
source string Source address. What a source-VRF rule matches on.
sourcePort L4 source port for TCP/UDP.
sVlan Outer S-VLAN (0/null = none).

InjectResult#

Name Type Description
dryRun boolean True when the packet was dropped before egress.
emitted boolean True if it was actually transmitted rather than traced and dropped.
frameBytes Size of the frame that was built.
steps Array<TraceStep> Per-stage decisions, in the order the pipeline took them.

Interface#

Name Type Description
driver string | null
label string | null Operator label from dataPlane.*Interfaces[].label ("MS3 NNI 2", ...).
mac string | null
mtu
name string
operState string | null
owner string dataplane | kernel | kernel-vrf.
pciAddress string | null
role string subscriber | network | management | loopback | other (derived from config).
speedMbps
vrfMaster string | null VRF master device name when owner is kernel-vrf.

MemoryInfo#

Name Type Description
hugepages Array<HugepagePool>
numaNodes Array<NumaNodeMemory>
totalBytes

Nic#

Name Type Description
deviceId string | null Raw PCI device id, e.g. "0x1572".
driver string | null Kernel driver in use ("vfio-pci" = DPDK-bound).
kernelInterface string | null Kernel netdev name bound to this PCI function, if any.
model string | null Friendly device/chipset model, e.g. "Ethernet Controller X710 for 10GbE SFP+".
numaNode
pciAddress string
vendorId string | null Raw PCI vendor id, e.g. "0x8086".
vendorName string | null Friendly vendor name resolved from pci.ids / built-ins, e.g. "Intel Corporation".

NumaNodeMemory#

Name Type Description
node
totalBytes

PingProbe#

Name Type Description
rttMs Round-trip time in milliseconds, or null if nothing returned.
sequence 1-based sequence number.
ttl TTL / hop limit the reply carried, or null.

PingRequest#

Name Type Description
count Number of echoes (capped).
destination string Address to ping, IPv4 or IPv6.
dontFragment boolean | null Set DF. Ignored for IPv6, which never fragments in transit.
size ICMP payload bytes (capped).
source string | null Address to source from; defaults to that VRF's configured gateway.
timeoutMs Per-probe wait.
ttl TTL / hop limit.
vrf string | null VRF to send from; omit for the default table.

PingResult#

Name Type Description
avgMs Mean round trip.
destination string Address pinged.
maxMs Slowest round trip.
minMs Fastest round trip.
probes Array<PingProbe> Per-probe detail.
received Replies matched.
sent Echoes sent.
source string Address actually sourced from — worth reporting, since a VRF gateway in documentation space may never see a reply.
vrf string | null VRF used, or null for the default table.

ProblemDetails#

Name Type Description
detail string | null
instance string | null
status
title string | null
type string | null

ProductInfo#

Name Type Description
features Array<string> Capability tags the client may branch on, e.g. `gre-circuits`.
hostname string Configured hostname.
product string Package identity: `netavo-bng` or `netavo-vpe`.
version string Running software version.

RestartResult#

Name Type Description
message string Human-readable detail for display.
status string Always "restarting" — the request was accepted.

StorageInfo#

Name Type Description
blockDevices Array<BlockDevice>
filesystems Array<Filesystem>

SystemStatus#

Name Type Description
controlPlane ControlPlaneStatus
dataPlane DataPlaneStatus
hostname string | null OS hostname of the appliance (kernel hostname, not webUi.hostname).
kernelVersion string | null
loadAverages Array<>
memoryAvailableBytes
memoryTotalBytes
osDescription string | null
rootFsAvailableBytes
rootFsTotalBytes
systemUptimeSeconds

TraceStep#

Name Type Description
a
b
stage string
verdict string

Security schemes#

Name Type Scheme Description
bearerToken http bearer Named API token — the recommended credential for automation. See Authentication in the API overview.
sessionCookie apiKey Interactive session cookie used by the bundled web UI. Not the integration path for API clients — use a bearer token. See Authentication in the API overview.

Tags#

Name Description
System Appliance health, status, hardware inventory, and network interface table.