feat(topology): serve bounded route links and identify decoded Public traffic

This commit is contained in:
n30nex committed 2026-10-04 01:03:08 -04:00
1 parent 53f2467864
commit 84ac3c8781
19 files changed
+486

No files matched your search

+69
View File
@@ -2179,6 +2179,52 @@ const docTemplate = `{
}
}
},
"/routes/topology": {
"get": {
"description": "Returns up to 100000 undirected node-ID pairs, deduplicated across known routes. Minute-aligned window includes the current minute. Existing rate limits apply; no per-node lookup or route pagination is needed. Capped is true when more links exist.",
"produces": [
"application/json"
],
"tags": [
"Routes"
],
"summary": "Unique adjacent route links for a topology snapshot",
"parameters": [
{
"type": "string",
"description": "History window: 15m (default), 1h, or 24h",
"name": "window",
"in": "query"
},
{
"type": "string",
"description": "Comma-separated reception IATA codes",
"name": "iatas",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/github_com_MeshCore-Beacon_beacon-server_internal_api.TopologyLinks"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/internal_api_handlers.APIError"
}
},
"503": {
"description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/internal_api_handlers.APIError"
}
}
}
}
},
"/routes/{iata}/{pathKey}/observations": {
"get": {
"description": "Matches one complete path representation in the saved IATA. Defaults to the latest processed prefixes; hashSize/pathBytes pin a prior response. Excludes TRACE and unclassified reports; widths are never combined. Pinned prefixes must match the saved node chain or its current metadata. Byte matches do not prove hop identities or delivery. The route counter can outlive raw evidence. New cursors pin path, route, window and full timestamp precision; legacy unpinned cursors remain supported.",
@@ -5642,6 +5688,29 @@ const docTemplate = `{
}
}
},
"github_com_MeshCore-Beacon_beacon-server_internal_api.TopologyLinks": {
"type": "object",
"properties": {
"capped": {
"type": "boolean"
},
"links": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "string"
}
}
},
"since": {
"type": "integer"
},
"until": {
"type": "integer"
}
}
},
"github_com_MeshCore-Beacon_beacon-server_internal_api.TraceDetail": {
"type": "object",
"properties": {
+69
View File
@@ -2177,6 +2177,52 @@
}
}
},
"/routes/topology": {
"get": {
"description": "Returns up to 100000 undirected node-ID pairs, deduplicated across known routes. Minute-aligned window includes the current minute. Existing rate limits apply; no per-node lookup or route pagination is needed. Capped is true when more links exist.",
"produces": [
"application/json"
],
"tags": [
"Routes"
],
"summary": "Unique adjacent route links for a topology snapshot",
"parameters": [
{
"type": "string",
"description": "History window: 15m (default), 1h, or 24h",
"name": "window",
"in": "query"
},
{
"type": "string",
"description": "Comma-separated reception IATA codes",
"name": "iatas",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/github_com_MeshCore-Beacon_beacon-server_internal_api.TopologyLinks"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/internal_api_handlers.APIError"
}
},
"503": {
"description": "Service Unavailable",
"schema": {
"$ref": "#/definitions/internal_api_handlers.APIError"
}
}
}
}
},
"/routes/{iata}/{pathKey}/observations": {
"get": {
"description": "Matches one complete path representation in the saved IATA. Defaults to the latest processed prefixes; hashSize/pathBytes pin a prior response. Excludes TRACE and unclassified reports; widths are never combined. Pinned prefixes must match the saved node chain or its current metadata. Byte matches do not prove hop identities or delivery. The route counter can outlive raw evidence. New cursors pin path, route, window and full timestamp precision; legacy unpinned cursors remain supported.",
@@ -5640,6 +5686,29 @@
}
}
},
"github_com_MeshCore-Beacon_beacon-server_internal_api.TopologyLinks": {
"type": "object",
"properties": {
"capped": {
"type": "boolean"
},
"links": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "string"
}
}
},
"since": {
"type": "integer"
},
"until": {
"type": "integer"
}
}
},
"github_com_MeshCore-Beacon_beacon-server_internal_api.TraceDetail": {
"type": "object",
"properties": {
+48
View File
@@ -1515,6 +1515,21 @@ definitions:
senderName:
type: string
type: object
github_com_MeshCore-Beacon_beacon-server_internal_api.TopologyLinks:
properties:
capped:
type: boolean
links:
items:
items:
type: string
type: array
type: array
since:
type: integer
until:
type: integer
type: object
github_com_MeshCore-Beacon_beacon-server_internal_api.TraceDetail:
properties:
packets:
@@ -3233,6 +3248,39 @@ paths:
summary: Search known routes by source and destination hash
tags:
- Routes
/routes/topology:
get:
description: Returns up to 100000 undirected node-ID pairs, deduplicated across
known routes. Minute-aligned window includes the current minute. Existing
rate limits apply; no per-node lookup or route pagination is needed. Capped
is true when more links exist.
parameters:
- description: 'History window: 15m (default), 1h, or 24h'
in: query
name: window
type: string
- description: Comma-separated reception IATA codes
in: query
name: iatas
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/github_com_MeshCore-Beacon_beacon-server_internal_api.TopologyLinks'
"400":
description: Bad Request
schema:
$ref: '#/definitions/internal_api_handlers.APIError'
"503":
description: Service Unavailable
schema:
$ref: '#/definitions/internal_api_handlers.APIError'
summary: Unique adjacent route links for a topology snapshot
tags:
- Routes
/scope-catalogues:
get:
description: Discovered sources only. Counts describe the source region, not