List BMP targets

GET /bgp/targets

List all BMP monitoring targets. Typically < 20 targets, no pagination. Accepts optional pi_id query parameter to filter by protocol instance (for sidebar lazy-load).

Auth: all authenticated roles

Response: 200 OK

[
  {
    "id": "uuid",
    "device_id": "uuid",
    "name": "rr1",
    "description": "Route Reflector 1",
    "sys_name": "rr1.example.com",
    "router_ip": "198.51.100.1",
    "as_id": "uuid",
    "routing_domain_id": "uuid",
    "protocol_instance_id": "uuid",
    "state": "connected",
    "rib_mode": "loc_rib",
    "enabled": true,
    "last_connected": "2026-03-18T12:00:00Z",
    "consecutive_failures": 0,
    "max_prefixes": 2000000,
    "max_initial_dump_seconds": 300,
    "history_mode": "best_path_peer",
    "history_prefix_filter": ["10.0.0.0/8"],
    "stats_prefixes_ipv4": 850000,
    "stats_prefixes_ipv6": 200000,
    "created_at": "2026-03-01T00:00:00Z",
    "updated_at": "2026-03-18T12:00:00Z",
    "device_hostname": "rr1",
    "as_name": "AS65001",
    "rd_name": "global"
  }
]

max_initial_dump_seconds (initial RIB-dump quiet/hard timeout, seconds) is always present. bgpls_enabled, max_bgpls_nlri, bgpls_exceeded, bgpls_refusal_reason and bgpls_dump_session are always present. The refusal reason names only object loss: budget, objects dropped in transit, malformed objects skipped, or unparsable update; inferred completion is not a refusal. Also returned: bgpls_strict_eor, bgpls_completion_inferred, bgpls_completion_af, optional bgpls_completion_at, and bgpls_completion_session. An inferred quiet boundary advances bgpls_dump_session by default but never sweeps; strict EoR records and acknowledges the inference while holding the previous epoch. bgpls_completion_session is the monotonic publisher acknowledgement and may therefore advance when strict mode leaves bgpls_dump_session unchanged. bgpls_completion_af is currently always link-state once a marker has been applied: Osprey implements AFI 16388 / SAFI 71 today, while the explicit field leaves future SAFI 72 completion provenance unambiguous. history_mode is always present; history_prefix_filter is omitempty. protocol_instance_id and last_error are omitempty. This same shape is returned by GET /bgp/targets/{id}, POST /bgp/targets, and PUT /bgp/targets/{id}. Create and update accept bgpls_strict_eor (default false; update uses presence semantics so omission preserves it and explicit false clears it).