MPLS-TE Tunnels

Discovered MPLS-TE tunnels (RFC 3812), walked from the MPLS-TE-STD-MIB mplsTunnelTable by the SNMP poller and written directly to the store. Read-only — there is no create/update/delete surface. Scoped per network.

Auth: All roles (admin, engineer, operator). Read-only observed topology state; license state never gates reads.

List MPLS-TE Tunnels

GET /api/v1/networks/{networkID}/mpls-tunnels

Returns discovered tunnels for a network. The default view collapses instance and observer rows to one row per logical tunnel, preferring the headend observation.

Query parameters:

Response: 200 OK (paginated envelope)

{
  "data": [
    {
      "id": "uuid",
      "network_id": "uuid",
      "area_id": "uuid",
      "tunnel_index": 65437,
      "active_instance": 34,
      "ingress_lsr_id": "192.0.2.1",
      "egress_lsr_id": "192.0.2.11",
      "headend_device_id": "uuid",
      "tailend_device_id": "uuid",
      "observed_by_device_id": "uuid",
      "tunnel_role": 1,
      "name": "Tunnel65437",
      "admin_status": 1,
      "oper_status": 1,
      "signalling_proto": 2,
      "bandwidth_bps": 0,
      "first_seen": "2026-07-04T12:00:00Z",
      "last_seen": "2026-07-04T12:05:00Z",
      "updated_at": "2026-07-04T12:05:00Z"
    }
  ],
  "total": 1,
  "limit": 50,
  "offset": 0
}

tunnel_role = mplsTunnelRole {head=1, transit=2, tail=3, headTail=4}; admin_status / oper_status per RFC 3812; signalling_proto {none=1, rsvp=2, crldp=3, other=4} (0 = not yet enriched). area_id, headend_device_id, tailend_device_id are omitted when unresolved. Data is [] (not null) when empty.

Error responses:


Get MPLS-TE Tunnel

GET /api/v1/mpls-tunnels/{id}

Returns a single tunnel row by ID (same schema as a List data entry).

Error responses: