Skip to content

LocalSubscribers#

10 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

LocalSubscribers#


GET /api/v1/subscribers/local#

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

{
    "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/subscribers/local/ipoe#

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

{
    "vrfName": "residential",
    "framedIp": "100.64.12.38",
    "framedIpv6": "2001:db8:64:12::26",
    "ipv6PdPrefix": "2001:db8:a012:3500::",
    "ipv6PdLength": 56,
    "dns1": "1.1.1.1",
    "dns2": "1.0.0.1",
    "dnsV6_1": "2606:4700:4700::1111",
    "dnsV6_2": "2606:4700:4700::1001",
    "planName": "Fibre 500",
    "downloadRateKbps": 500000,
    "uploadRateKbps": 100000,
    "downloadRatePps": 0,
    "uploadRatePps": 0,
    "downloadBurstKb": 2048,
    "uploadBurstKb": 1024,
    "additionalRoutes": [],
    "port": 0,
    "vlan": 712,
    "sVlan": 101,
    "option82CircuitId": "MS3-HUL1-0712",
    "subscriberServiceId": "SVC-100413"
}

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

Schema of the request body
{
    "type": "object",
    "properties": {
        "vrfName": {
            "type": "string",
            "nullable": true
        },
        "framedIp": {
            "type": "string",
            "nullable": true
        },
        "framedIpv6": {
            "type": "string",
            "nullable": true
        },
        "ipv6PdPrefix": {
            "type": "string",
            "nullable": true
        },
        "ipv6PdLength": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "uint8",
            "nullable": true
        },
        "dns1": {
            "type": "string",
            "nullable": true
        },
        "dns2": {
            "type": "string",
            "nullable": true
        },
        "dnsV6_1": {
            "type": "string",
            "nullable": true
        },
        "dnsV6_2": {
            "type": "string",
            "nullable": true
        },
        "planName": {
            "type": "string",
            "nullable": true
        },
        "downloadRateKbps": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32"
        },
        "uploadRateKbps": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32"
        },
        "downloadRatePps": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32"
        },
        "uploadRatePps": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32"
        },
        "downloadBurstKb": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32",
            "nullable": true
        },
        "uploadBurstKb": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32",
            "nullable": true
        },
        "additionalRoutes": {
            "type": "array",
            "items": {
                "type": "string"
            },
            "nullable": true
        },
        "port": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "uint8"
        },
        "vlan": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "uint16"
        },
        "sVlan": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "uint16"
        },
        "option82CircuitId": {
            "type": "string",
            "nullable": true
        },
        "subscriberServiceId": {
            "type": "string",
            "nullable": true
        }
    },
    "description": "Create/update body for a locally-defined IPoE (DHCP) subscriber.",
    "example": {
        "vrfName": "residential",
        "framedIp": "100.64.12.38",
        "framedIpv6": "2001:db8:64:12::26",
        "ipv6PdPrefix": "2001:db8:a012:3500::",
        "ipv6PdLength": 56,
        "dns1": "1.1.1.1",
        "dns2": "1.0.0.1",
        "dnsV6_1": "2606:4700:4700::1111",
        "dnsV6_2": "2606:4700:4700::1001",
        "planName": "Fibre 500",
        "downloadRateKbps": 500000,
        "uploadRateKbps": 100000,
        "downloadRatePps": 0,
        "uploadRatePps": 0,
        "downloadBurstKb": 2048,
        "uploadBurstKb": 1024,
        "additionalRoutes": [],
        "port": 0,
        "vlan": 712,
        "sVlan": 101,
        "option82CircuitId": "MS3-HUL1-0712",
        "subscriberServiceId": "SVC-100413"
    }
}

Responses

{
    "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"
    }
}

PUT /api/v1/subscribers/local/ipoe/{key}#

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.
key path string No

Request body

{
    "vrfName": "residential",
    "framedIp": "100.64.12.38",
    "framedIpv6": "2001:db8:64:12::26",
    "ipv6PdPrefix": "2001:db8:a012:3500::",
    "ipv6PdLength": 56,
    "dns1": "1.1.1.1",
    "dns2": "1.0.0.1",
    "dnsV6_1": "2606:4700:4700::1111",
    "dnsV6_2": "2606:4700:4700::1001",
    "planName": "Fibre 500",
    "downloadRateKbps": 500000,
    "uploadRateKbps": 100000,
    "downloadRatePps": 0,
    "uploadRatePps": 0,
    "downloadBurstKb": 2048,
    "uploadBurstKb": 1024,
    "additionalRoutes": [],
    "port": 0,
    "vlan": 712,
    "sVlan": 101,
    "option82CircuitId": "MS3-HUL1-0712",
    "subscriberServiceId": "SVC-100413"
}

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

Schema of the request body
{
    "type": "object",
    "properties": {
        "vrfName": {
            "type": "string",
            "nullable": true
        },
        "framedIp": {
            "type": "string",
            "nullable": true
        },
        "framedIpv6": {
            "type": "string",
            "nullable": true
        },
        "ipv6PdPrefix": {
            "type": "string",
            "nullable": true
        },
        "ipv6PdLength": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "uint8",
            "nullable": true
        },
        "dns1": {
            "type": "string",
            "nullable": true
        },
        "dns2": {
            "type": "string",
            "nullable": true
        },
        "dnsV6_1": {
            "type": "string",
            "nullable": true
        },
        "dnsV6_2": {
            "type": "string",
            "nullable": true
        },
        "planName": {
            "type": "string",
            "nullable": true
        },
        "downloadRateKbps": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32"
        },
        "uploadRateKbps": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32"
        },
        "downloadRatePps": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32"
        },
        "uploadRatePps": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32"
        },
        "downloadBurstKb": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32",
            "nullable": true
        },
        "uploadBurstKb": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32",
            "nullable": true
        },
        "additionalRoutes": {
            "type": "array",
            "items": {
                "type": "string"
            },
            "nullable": true
        },
        "port": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "uint8"
        },
        "vlan": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "uint16"
        },
        "sVlan": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "uint16"
        },
        "option82CircuitId": {
            "type": "string",
            "nullable": true
        },
        "subscriberServiceId": {
            "type": "string",
            "nullable": true
        }
    },
    "description": "Create/update body for a locally-defined IPoE (DHCP) subscriber.",
    "example": {
        "vrfName": "residential",
        "framedIp": "100.64.12.38",
        "framedIpv6": "2001:db8:64:12::26",
        "ipv6PdPrefix": "2001:db8:a012:3500::",
        "ipv6PdLength": 56,
        "dns1": "1.1.1.1",
        "dns2": "1.0.0.1",
        "dnsV6_1": "2606:4700:4700::1111",
        "dnsV6_2": "2606:4700:4700::1001",
        "planName": "Fibre 500",
        "downloadRateKbps": 500000,
        "uploadRateKbps": 100000,
        "downloadRatePps": 0,
        "uploadRatePps": 0,
        "downloadBurstKb": 2048,
        "uploadBurstKb": 1024,
        "additionalRoutes": [],
        "port": 0,
        "vlan": 712,
        "sVlan": 101,
        "option82CircuitId": "MS3-HUL1-0712",
        "subscriberServiceId": "SVC-100413"
    }
}

Responses

{
    "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"
    }
}

DELETE /api/v1/subscribers/local/ipoe/{key}#

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.
key path string No

Responses

{
    "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/subscribers/local/ppp#

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

{
    "username": "alice@example.net",
    "password": "correct horse battery staple",
    "subscriberServiceId": "SVC-100412",
    "vrfName": "residential",
    "framedIp": "100.64.12.37",
    "framedIpv6": "2001:db8:64:12::25",
    "ipv6PdPrefix": "2001:db8:a012:3400::",
    "ipv6PdLength": 56,
    "dns1": "1.1.1.1",
    "dns2": "1.0.0.1",
    "dnsV6_1": "2606:4700:4700::1111",
    "dnsV6_2": "2606:4700:4700::1001",
    "planName": "Fibre 500",
    "downloadRateKbps": 500000,
    "uploadRateKbps": 100000,
    "downloadRatePps": 0,
    "uploadRatePps": 0,
    "additionalRoutes": [
        "192.0.2.64/28"
    ]
}

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

Schema of the request body
{
    "type": "object",
    "properties": {
        "username": {
            "type": "string",
            "nullable": true
        },
        "password": {
            "type": "string",
            "nullable": true
        },
        "subscriberServiceId": {
            "type": "string",
            "nullable": true
        },
        "vrfName": {
            "type": "string",
            "nullable": true
        },
        "framedIp": {
            "type": "string",
            "nullable": true
        },
        "framedIpv6": {
            "type": "string",
            "nullable": true
        },
        "ipv6PdPrefix": {
            "type": "string",
            "nullable": true
        },
        "ipv6PdLength": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "uint8",
            "nullable": true
        },
        "dns1": {
            "type": "string",
            "nullable": true
        },
        "dns2": {
            "type": "string",
            "nullable": true
        },
        "dnsV6_1": {
            "type": "string",
            "nullable": true
        },
        "dnsV6_2": {
            "type": "string",
            "nullable": true
        },
        "planName": {
            "type": "string",
            "nullable": true
        },
        "downloadRateKbps": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32"
        },
        "uploadRateKbps": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32"
        },
        "downloadRatePps": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32"
        },
        "uploadRatePps": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32"
        },
        "additionalRoutes": {
            "type": "array",
            "items": {
                "type": "string"
            },
            "nullable": true
        }
    },
    "description": "Create/update body for a PPP (username/password) subscriber.\n    On update, a null/empty password keeps the stored one.",
    "example": {
        "username": "alice@example.net",
        "password": "correct horse battery staple",
        "subscriberServiceId": "SVC-100412",
        "vrfName": "residential",
        "framedIp": "100.64.12.37",
        "framedIpv6": "2001:db8:64:12::25",
        "ipv6PdPrefix": "2001:db8:a012:3400::",
        "ipv6PdLength": 56,
        "dns1": "1.1.1.1",
        "dns2": "1.0.0.1",
        "dnsV6_1": "2606:4700:4700::1111",
        "dnsV6_2": "2606:4700:4700::1001",
        "planName": "Fibre 500",
        "downloadRateKbps": 500000,
        "uploadRateKbps": 100000,
        "downloadRatePps": 0,
        "uploadRatePps": 0,
        "additionalRoutes": [
            "192.0.2.64/28"
        ]
    }
}

Responses

{
    "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"
    }
}

PUT /api/v1/subscribers/local/ppp/{key}#

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.
key path string No

Request body

{
    "username": "alice@example.net",
    "password": "correct horse battery staple",
    "subscriberServiceId": "SVC-100412",
    "vrfName": "residential",
    "framedIp": "100.64.12.37",
    "framedIpv6": "2001:db8:64:12::25",
    "ipv6PdPrefix": "2001:db8:a012:3400::",
    "ipv6PdLength": 56,
    "dns1": "1.1.1.1",
    "dns2": "1.0.0.1",
    "dnsV6_1": "2606:4700:4700::1111",
    "dnsV6_2": "2606:4700:4700::1001",
    "planName": "Fibre 500",
    "downloadRateKbps": 500000,
    "uploadRateKbps": 100000,
    "downloadRatePps": 0,
    "uploadRatePps": 0,
    "additionalRoutes": [
        "192.0.2.64/28"
    ]
}

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

Schema of the request body
{
    "type": "object",
    "properties": {
        "username": {
            "type": "string",
            "nullable": true
        },
        "password": {
            "type": "string",
            "nullable": true
        },
        "subscriberServiceId": {
            "type": "string",
            "nullable": true
        },
        "vrfName": {
            "type": "string",
            "nullable": true
        },
        "framedIp": {
            "type": "string",
            "nullable": true
        },
        "framedIpv6": {
            "type": "string",
            "nullable": true
        },
        "ipv6PdPrefix": {
            "type": "string",
            "nullable": true
        },
        "ipv6PdLength": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "uint8",
            "nullable": true
        },
        "dns1": {
            "type": "string",
            "nullable": true
        },
        "dns2": {
            "type": "string",
            "nullable": true
        },
        "dnsV6_1": {
            "type": "string",
            "nullable": true
        },
        "dnsV6_2": {
            "type": "string",
            "nullable": true
        },
        "planName": {
            "type": "string",
            "nullable": true
        },
        "downloadRateKbps": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32"
        },
        "uploadRateKbps": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32"
        },
        "downloadRatePps": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32"
        },
        "uploadRatePps": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "int32"
        },
        "additionalRoutes": {
            "type": "array",
            "items": {
                "type": "string"
            },
            "nullable": true
        }
    },
    "description": "Create/update body for a PPP (username/password) subscriber.\n    On update, a null/empty password keeps the stored one.",
    "example": {
        "username": "alice@example.net",
        "password": "correct horse battery staple",
        "subscriberServiceId": "SVC-100412",
        "vrfName": "residential",
        "framedIp": "100.64.12.37",
        "framedIpv6": "2001:db8:64:12::25",
        "ipv6PdPrefix": "2001:db8:a012:3400::",
        "ipv6PdLength": 56,
        "dns1": "1.1.1.1",
        "dns2": "1.0.0.1",
        "dnsV6_1": "2606:4700:4700::1111",
        "dnsV6_2": "2606:4700:4700::1001",
        "planName": "Fibre 500",
        "downloadRateKbps": 500000,
        "uploadRateKbps": 100000,
        "downloadRatePps": 0,
        "uploadRatePps": 0,
        "additionalRoutes": [
            "192.0.2.64/28"
        ]
    }
}

Responses

{
    "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"
    }
}

DELETE /api/v1/subscribers/local/ppp/{key}#

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.
key path string No

Responses

{
    "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/subscribers/local/pppoe#

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

{
    "tunnelEndpoints": [
        {
            "address": "45.84.200.80",
            "port": 1701,
            "vrfName": "wholesale-a",
            "sharedSecret": "correct horse battery staple",
            "assignmentId": "acme-ltd",
            "priority": 1
        }
    ],
    "port": 0,
    "vlan": 713,
    "sVlan": 101,
    "option82CircuitId": "MS3-HUL1-0713",
    "subscriberServiceId": "SVC-100414"
}

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

Schema of the request body
{
    "type": "object",
    "properties": {
        "tunnelEndpoints": {
            "type": "array",
            "items": {
                "$ref": "#/components/schemas/TunnelEndpointWrite"
            },
            "nullable": true
        },
        "port": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "uint8"
        },
        "vlan": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "uint16"
        },
        "sVlan": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "uint16"
        },
        "option82CircuitId": {
            "type": "string",
            "nullable": true
        },
        "subscriberServiceId": {
            "type": "string",
            "nullable": true
        }
    },
    "description": "Create/update body for a wholesale (L2TP-relayed) PPPoE subscriber.",
    "example": {
        "tunnelEndpoints": [
            {
                "address": "45.84.200.80",
                "port": 1701,
                "vrfName": "wholesale-a",
                "sharedSecret": "correct horse battery staple",
                "assignmentId": "acme-ltd",
                "priority": 1
            }
        ],
        "port": 0,
        "vlan": 713,
        "sVlan": 101,
        "option82CircuitId": "MS3-HUL1-0713",
        "subscriberServiceId": "SVC-100414"
    }
}

Responses

{
    "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"
    }
}

PUT /api/v1/subscribers/local/pppoe/{key}#

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.
key path string No

Request body

{
    "tunnelEndpoints": [
        {
            "address": "45.84.200.80",
            "port": 1701,
            "vrfName": "wholesale-a",
            "sharedSecret": "correct horse battery staple",
            "assignmentId": "acme-ltd",
            "priority": 1
        }
    ],
    "port": 0,
    "vlan": 713,
    "sVlan": 101,
    "option82CircuitId": "MS3-HUL1-0713",
    "subscriberServiceId": "SVC-100414"
}

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

Schema of the request body
{
    "type": "object",
    "properties": {
        "tunnelEndpoints": {
            "type": "array",
            "items": {
                "$ref": "#/components/schemas/TunnelEndpointWrite"
            },
            "nullable": true
        },
        "port": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "uint8"
        },
        "vlan": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "uint16"
        },
        "sVlan": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "format": "uint16"
        },
        "option82CircuitId": {
            "type": "string",
            "nullable": true
        },
        "subscriberServiceId": {
            "type": "string",
            "nullable": true
        }
    },
    "description": "Create/update body for a wholesale (L2TP-relayed) PPPoE subscriber.",
    "example": {
        "tunnelEndpoints": [
            {
                "address": "45.84.200.80",
                "port": 1701,
                "vrfName": "wholesale-a",
                "sharedSecret": "correct horse battery staple",
                "assignmentId": "acme-ltd",
                "priority": 1
            }
        ],
        "port": 0,
        "vlan": 713,
        "sVlan": 101,
        "option82CircuitId": "MS3-HUL1-0713",
        "subscriberServiceId": "SVC-100414"
    }
}

Responses

{
    "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"
    }
}

DELETE /api/v1/subscribers/local/pppoe/{key}#

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.
key path string No

Responses

{
    "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#

IpoeSubscriberWrite#

Name Type Description
additionalRoutes Array<string>
dns1 string | null
dns2 string | null
dnsV6_1 string | null
dnsV6_2 string | null
downloadBurstKb
downloadRateKbps
downloadRatePps
framedIp string | null
framedIpv6 string | null
ipv6PdLength
ipv6PdPrefix string | null
option82CircuitId string | null
planName string | null
port
subscriberServiceId string | null
sVlan
uploadBurstKb
uploadRateKbps
uploadRatePps
vlan
vrfName string | null

PppoeSubscriberWrite#

Name Type Description
option82CircuitId string | null
port
subscriberServiceId string | null
sVlan
tunnelEndpoints Array<TunnelEndpointWrite>
vlan

PppSubscriberWrite#

Name Type Description
additionalRoutes Array<string>
dns1 string | null
dns2 string | null
dnsV6_1 string | null
dnsV6_2 string | null
downloadRateKbps
downloadRatePps
framedIp string | null
framedIpv6 string | null
ipv6PdLength
ipv6PdPrefix string | null
password string | null
planName string | null
subscriberServiceId string | null
uploadRateKbps
uploadRatePps
username string | null
vrfName string | null

ProblemDetails#

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

TunnelEndpointWrite#

Name Type Description
address string | null
assignmentId string | null
port
priority
sharedSecret string | null
vrfName string | null

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
LocalSubscribers