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).