List BGP-LS objects
GET /bgpls/objects
List staged BGP-LS observations of one kind. Required type=node|link|prefix (prefix covers both address families; rows carry nlri_type 3/4). Optional: as_id, protocol_id (1/2 IS-IS L1/L2, 3 OSPFv2, 6 OSPFv3), target_id, peer_id, include_stale=true, limit (default 50, max 1000), offset.
Rows are per (object, reporting session): the same object reported by two exporters appears once per reporter, sharing nlri_hash — consumers collapse by hash and treat the reporter set as corroboration input, never as a count. Fields: identity (nlri_hash, nlri_raw base64, protocol_id, identifier, mt_id), decomposition per kind (node: local_asn/local_igp_router_id/local_router_kind/node_name/isis_area/ipv4_router_id/ospf_area_id/node_flags + sr_capability (TLVs 1034/1035/1036/266: flags, SRGB/SRLB ranges, algorithms, node MSD); link: + remote identity, iface_addr/neighbor_addr or link_local_id/link_remote_id, igp_metric/te_metric/max_bandwidth_bps/admin_group + sr_adj_sids (TLVs 1099/1100 — neighbor_id base64 only on LAN SIDs); prefix: prefix, ospf_route_type, prefix_metric, updown + sr_prefix_sids (TLV 1158)), honesty flags (withheld — the announcement carried no BGP-LS Attribute, RFC 9552 §8.2.2; attrs_discarded — it carried one that was malformed and discarded: the exporter tried and failed; stale — the reporting session is down: a monitoring gap, never a withdrawal), and reporter/reporter_name. local_router_kind/remote_router_kind pseudonode marks a LAN pseudonode (RFC 9552 §5.2.1.4) — never a router.
Auth: all authenticated roles. Response: 200 OK paginated {data, total, limit, offset}. 400 on a missing/unknown type.