Skip to content

admin ​

43 endpoints at a glance
MethodPathSummary
GET/admin/anchors-mesh-topology/Admin Topology Summary
POST/admin/anchors-mesh-topology/rangeAdmin Topology Range
POST/admin/anchors-mesh-topology/runAdmin Topology Run
GET/admin/database/collections/{name}Get Collection Detail
GET/admin/database/historyGet History
GET/admin/database/overviewGet Overview
GET/admin/enrichment/Enrichment Summary
POST/admin/enrichment/discoverRun Discovery
POST/admin/enrichment/discover-deepRun Deep Discovery
POST/admin/enrichment/recoverRecover
POST/admin/enrichment/refreshForce Refresh
GET/admin/enrichment/targetsList Targets
GET/admin/geofeeds/Admin Status
POST/admin/geofeeds/accuracy/runAccuracy Run
POST/admin/geofeeds/check-enableTrigger Check Enable
GET/admin/geofeeds/check-enable/statusGet Check Enable Status
POST/admin/geofeeds/discoverTrigger Discovery
GET/admin/geofeeds/discover/statusGet Discovery Status
GET/admin/geofeeds/imports/List Imports
GET/admin/geofeeds/imports/{import_id}Get Import
POST/admin/geofeeds/mergeMerge Source
POST/admin/geofeeds/refreshTrigger Refresh
GET/admin/geofeeds/refresh/statusGet Refresh Status
POST/admin/geofeeds/resolve-geonamesTrigger Resolve Geonames
GET/admin/geofeeds/resolve-geonames/statusGet Resolve Geonames Status
DELETE/admin/geofeeds/sourcesDelete Source
PATCH/admin/geofeeds/sourcesPatch Source
GET/admin/geofeeds/sources/List Sources
POST/admin/geofeeds/sources/Add Source
POST/admin/geofeeds/unmergeUnmerge Source
GET/admin/gotosocial/checkCheck Connection
POST/admin/gotosocial/postPost Status
GET/admin/gotosocial/preview/{kind}Preview Post
POST/admin/gotosocial/run/{kind}Run Post
GET/admin/measurements-latest/Latest Summary
POST/admin/measurements-latest/discoverRun Discover
POST/admin/measurements-latest/recoverRecover Stale
POST/admin/measurements-latest/refreshForce Refresh
GET/admin/measurements-latest/rowsList Rows
GET/admin/weather/imports/List Imports
GET/admin/workers/List Workers
POST/admin/workers/{key}/recoverRecover Worker
POST/admin/workers/{key}/stop-allStop All Active

admin​


Get Overview​

GET
/admin/database/overview

Server info + db-level stats + per-collection list. One
round-trip per Mongo command — page-load cost is bounded by the
number of collections, not their size.

Parameters​

Header Parameters

authorization
x-api-key

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers

Samples​


Get Collection Detail​

GET
/admin/database/collections/{name}

Drill-down for a single collection: index list with sizes,
plus the most recent docs (truncated per-doc — see
:data:api.atlas.database_stats._PREVIEW_DOC_MAX_BYTES).

Parameters​

Header Parameters

authorization
x-api-key

Path Parameters

name*
Type
string
Required

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers
Variables
Key
Value

Samples​


Get History​

GET
/admin/database/history

Last days daily snapshots from db.database_stats_history.
Powers the per-collection growth sparklines on the dashboard.

days is clamped to 400 server-side (the retention horizon).

Parameters​

Header Parameters

authorization
x-api-key

Query Parameters

days
Type
integer
Default
30

Responses​

Successful Response

application/json
JSON
[
  
{
  
  
"additionalProperties": "string"
  
}
]

Playground​

Headers
Variables
Key
Value

Samples​


List Workers​

GET
/admin/workers/

Live snapshot of all in-process workers.

Sync route — FastAPI offloads it to the threadpool, so the
blocking Mongo finds are fine here. Each descriptor carries the
consumer-task liveness, in-memory queue depth, the in-flight
item, and the DB-backed queued / running rows (the
actionable "should be moving" set) plus a deep-link to the
full per-subsystem admin panel.

Each descriptor is computed defensively: if one fails (e.g. a Mongo
read times out under a pathological backlog) it degrades to a stub
rather than failing the whole snapshot.

Parameters​

Header Parameters

authorization
x-api-key

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers

Samples​


Stop All Active​

POST
/admin/workers/{key}/stop-all

Stop every queued/running row in this worker's queue.

Iterates the DB-backed active rows and invokes the subsystem's
request_stop(...) for each — the same cooperative-stop
method the per-row Stop button calls. Queued rows are cancelled
before they start; running rows finish with partial progress kept.
One audit row per click, with counts in the result. Idempotent —
re-running after the rows have already stopped finds nothing and
returns a no-op summary.

400 for enrichment / measurements_latest_backfill (no
per-row stop — both workers are globally rate-paced, no per-entity
job to cancel); 404 for an unknown key.

Parameters​

Header Parameters

authorization
x-api-key

Path Parameters

key*
Type
string
Required

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers
Variables
Key
Value

Samples​


Recover Worker​

POST
/admin/workers/{key}/recover

Re-enqueue orphaned queued / running jobs for one
worker. Dispatches to that worker's own recovery (the same one
its start() runs). Idempotent — safe to click any time, a
double-enqueue no-ops at the claim.

Parameters​

Header Parameters

authorization
x-api-key

Path Parameters

key*
Type
string
Required

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers
Variables
Key
Value

Samples​


Enrichment Summary​

GET
/admin/enrichment/

Ledger rollup + today's shared IPLocate budget + worker
snapshot. Drives the admin panel header.

Parameters​

Header Parameters

authorization
x-api-key

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers

Samples​


List Targets​

GET
/admin/enrichment/targets

Paginated ledger rows, newest-seen first. Optional type
(ip/asn/host) and status filters.

Parameters​

Header Parameters

authorization
x-api-key

Query Parameters

type
status
limit
Type
integer
Default
100
skip
Type
integer
Default
0

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers
Variables
Key
Value

Samples​


Force Refresh​

POST
/admin/enrichment/refresh

Make matching ledger rows due now (manual staleness bust).

Parameters​

Header Parameters

authorization
x-api-key

Request Body​

application/json
JSON
{
  
"entity_id": "string",
  
"type": "string",
  
"hard": false
}

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers
Body

Samples​


Run Discovery​

POST
/admin/enrichment/discover

Run the discovery scan now (off the event loop — it's blocking
Mongo work).

Parameters​

Header Parameters

authorization
x-api-key

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers

Samples​


Run Deep Discovery​

POST
/admin/enrichment/discover-deep

Run the phase-2 deep scan now (traceroute hop IPs + DNS A/AAAA
answers out of measurements_latest).

Bounded + incremental like the scheduled job — one tick processes
up to EnrichmentSettings.DEEP_SCAN_DOC_CAP new rows and
advances the watermark, so repeated clicks walk the backlog.
Off the event loop (heavier blocking Mongo work). The only
on-demand trigger when the scheduler is disabled (it otherwise
only runs via ENRICHMENT_DEEP_SCAN_CRON).

Parameters​

Header Parameters

authorization
x-api-key

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers

Samples​


Recover​

POST
/admin/enrichment/recover

Requeue ledger rows stranded in running (worker crashed
mid-item).

Parameters​

Header Parameters

authorization
x-api-key

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers

Samples​


Latest Summary​

GET
/admin/measurements-latest/

Ledger rollup + worker snapshot. Drives the admin panel header.

Parameters​

Header Parameters

authorization
x-api-key

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers

Samples​


List Rows​

GET
/admin/measurements-latest/rows

Paginated ledger rows. Optional status filter (pending /
running / done / failed / dead).

Parameters​

Header Parameters

authorization
x-api-key

Query Parameters

status
limit
Type
integer
Default
100
skip
Type
integer
Default
0

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers
Variables
Key
Value

Samples​


Force Refresh​

POST
/admin/measurements-latest/refresh

Make matching ledger rows due now (manual retry / unstick).

Parameters​

Header Parameters

authorization
x-api-key

Request Body​

application/json
JSON
{
  
"msm_id": 0,
  
"status": "string"
}

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers
Body

Samples​


Run Discover​

POST
/admin/measurements-latest/discover

Trigger the discovery scan now (out-of-cycle). Idempotent —
only finds terminal+uncached measurements not already in the
ledger. Wrapped in asyncio.to_thread because the underlying
scan is blocking (Mongo aggregate + per-id $setOnInsert).

Parameters​

Header Parameters

authorization
x-api-key

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers

Samples​


Recover Stale​

POST
/admin/measurements-latest/recover

Flip rows stuck in running past the stale deadline back to
pending + due-now and re-enqueue them on the worker. Same
cooperative contract as the workers-panel "Recover stale" action
but scoped only to this ledger.

Parameters​

Header Parameters

authorization
x-api-key

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers

Samples​


Admin Status​

GET
/admin/geofeeds/

Header data for the admin panel — source count, prefix count,
last successful refresh ts, plus worker liveness.

Parameters​

Header Parameters

authorization
x-api-key

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers

Samples​


List Sources​

GET
/admin/geofeeds/sources/

List geofeed sources with per-source row counts. enabled /
discovery filters mirror the admin-panel toggle chips.
duplicate filters on the merge marker (False powers the
panel's "hide duplicates" default; True shows only merged-away
duplicates).

Parameters​

Header Parameters

authorization
x-api-key

Query Parameters

enabled
discovery
duplicate
limit
Type
integer
Default
500
skip
Type
integer
Default
0

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers
Variables
Key
Value

Samples​


Add Source​

POST
/admin/geofeeds/sources/

Manual add. URL must start with http:// or https://.

Parameters​

Header Parameters

authorization
x-api-key

Request Body​

application/json
JSON
{
  
"url": "string",
  
"label": "string",
  
"enabled": true,
  
"verify_tls": true
}

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers
Body

Samples​


Delete Source​

DELETE
/admin/geofeeds/sources

Remove the source row + sweep its prefixes. Returns the
deletion tally for the admin toast.

The source URL is passed as a query parameter (not a path segment)
so its scheme's // isn't collapsed to / in transit.

Parameters​

Header Parameters

authorization
x-api-key

Query Parameters

url*

The geofeed source URL (its _id).

Type
string
Required

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers
Variables
Key
Value

Samples​


Patch Source​

PATCH
/admin/geofeeds/sources

Update label, enabled flag, or verify_tls without re-importing.

The source URL is passed as a query parameter (not a path segment)
so its scheme's // isn't collapsed to / in transit.

Parameters​

Header Parameters

authorization
x-api-key

Query Parameters

url*

The geofeed source URL (its _id).

Type
string
Required

Request Body​

application/json
JSON
{
  
"label": "string",
  
"enabled": true,
  
"verify_tls": true
}

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers
Variables
Key
Value
Body

Samples​


Merge Source​

POST
/admin/geofeeds/merge

Mark source as a duplicate of into: it's disabled, never
fetched again, and its prefixes are swept (the survivor is
authoritative). The survivor absorbs the duplicate's provenance.
Returns {duplicate, into, removed_prefixes}.

Parameters​

Header Parameters

authorization
x-api-key

Request Body​

application/json
JSON
{
  
"source": "string",
  
"into": "string"
}

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers
Body

Samples​


Unmerge Source​

POST
/admin/geofeeds/unmerge

Undo a merge — clear the duplicate_of marker on url and
drop it from its survivor's aliases. The row stays disabled until the
operator re-enables it.

The URL is a query parameter (not a path segment) so its scheme's
// isn't collapsed to / in transit.

Parameters​

Header Parameters

authorization
x-api-key

Query Parameters

url*

The merged-away duplicate URL (its _id).

Type
string
Required

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers
Variables
Key
Value

Samples​


Trigger Refresh​

POST
/admin/geofeeds/refresh

Queue a refresh. Returns immediately with the queue depth +
the live progress state. UI polls /refresh/status for live
updates.

Parameters​

Header Parameters

authorization
x-api-key

Request Body​

application/json
JSON
{
  
"url": "string",
  
"all": false
}

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers
Body

Samples​


Get Refresh Status​

GET
/admin/geofeeds/refresh/status

Parameters​

Header Parameters

authorization
x-api-key

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers

Samples​


Trigger Discovery​

POST
/admin/geofeeds/discover

Queue the whois discovery scan. Walks
db.ips.whois.data.records[] for geofeed: attributes (RFC
8805) + remarks: Geofeed … (RFC 9092); newly-found URLs are
upserted with enabled=False so admin reviews before they're
fetched.

Parameters​

Header Parameters

authorization
x-api-key

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers

Samples​


Get Discovery Status​

GET
/admin/geofeeds/discover/status

Parameters​

Header Parameters

authorization
x-api-key

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers

Samples​


Trigger Resolve Geonames​

POST
/admin/geofeeds/resolve-geonames

Queue a GeoNames-resolve pass over db.geofeed_prefixes.
Stamps geonames_id on every prefix row whose country +
city resolves; coords for the cross-check map follow from the
GeoNames link.

Parameters​

Header Parameters

authorization
x-api-key

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers

Samples​


Get Resolve Geonames Status​

GET
/admin/geofeeds/resolve-geonames/status

Parameters​

Header Parameters

authorization
x-api-key

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers

Samples​


Trigger Check Enable​

POST
/admin/geofeeds/check-enable

Queue a TLS check-and-enable pass: each disabled, non-duplicate
source is fetched over TLS (certificate verification on) and, if it
succeeds and returns ≥1 prefix, enabled. Background — poll
/check-enable/status.

Parameters​

Header Parameters

authorization
x-api-key

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers

Samples​


Get Check Enable Status​

GET
/admin/geofeeds/check-enable/status

Parameters​

Header Parameters

authorization
x-api-key

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers

Samples​


List Imports​

GET
/admin/geofeeds/imports/

Parameters​

Header Parameters

authorization
x-api-key

Query Parameters

source
since
until
limit
Type
integer
Default
100

Responses​

Successful Response

application/json
JSON
[
  
{
  
  
"additionalProperties": "string"
  
}
]

Playground​

Headers
Variables
Key
Value

Samples​


Get Import​

GET
/admin/geofeeds/imports/{import_id}

Parameters​

Header Parameters

authorization
x-api-key

Path Parameters

import_id*
Type
string
Required

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers
Variables
Key
Value

Samples​


Accuracy Run​

POST
/admin/geofeeds/accuracy/run

Recompute the accuracy snapshot now. Fire-and-forget — the scan
over the geofeed-stamped db.ips subset can run past the gateway
timeout, so it's handed to a background task and recorded in
db.task_history (derive_geofeed_accuracy, trigger=manual).

Parameters​

Header Parameters

authorization
x-api-key

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers

Samples​


List Imports​

GET
/admin/weather/imports/

Parameters​

Header Parameters

authorization
x-api-key

Query Parameters

limit
Type
integer
Default
50

Responses​

Successful Response

application/json
JSON
[
  
{
  
  
"additionalProperties": "string"
  
}
]

Playground​

Headers
Variables
Key
Value

Samples​


Check Connection​

GET
/admin/gotosocial/check

Round-trip the GoToSocial token + read instance metadata.

Returns {"ok": True, "account": {...}, "instance": {...}} on
success, or {"ok": False, "status": <int>, ...} when either
call fails — the operator UI can render the failure detail
directly. Never raises: status_code == 0 from the wrapper
means the request didn't reach the server (DNS / connect timeout
/ TLS error), which we surface as ok: False like any other
error.

Parameters​

Header Parameters

authorization
x-api-key

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers

Samples​


Post Status​

POST
/admin/gotosocial/post

Manual ad-hoc post to GoToSocial.

Wraps :meth:GotoSocial.post_status with no extra processing —
the operator types a message, picks a visibility, hits Send.
Same token, same instance, no preview / scheduling.

Returns the raw upstream payload (id + url + content + …) on
success so the UI can render a "view post" link straight to the
new status. On a non-200 from upstream we map to a 502 with the
error detail attached, so axios on the frontend surfaces the
failure naturally rather than rendering a "successful" empty
response.

Parameters​

Header Parameters

authorization
x-api-key

Request Body​

application/json
JSON
{
  
"status": "string",
  
"visibility": "public"
}

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers
Body

Samples​


Preview Post​

GET
/admin/gotosocial/preview/{kind}

Render the text a scheduled post would publish — no post made.

Parameters​

Header Parameters

authorization
x-api-key

Path Parameters

kind*
Type
string
Required

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers
Variables
Key
Value

Samples​


Run Post​

POST
/admin/gotosocial/run/{kind}

Fire one scheduled post now. Bypasses the enable flag (admin
intent) but still dedups on the day/week key.

Parameters​

Header Parameters

authorization
x-api-key

Path Parameters

kind*
Type
string
Required

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers
Variables
Key
Value

Samples​


Admin Topology Summary​

GET
/admin/anchors-mesh-topology/

Admin-panel header: snapshot counts, eligible-country count,
last-snapshot timestamp, recent country leaderboard.

Parameters​

Header Parameters

authorization
x-api-key

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers

Samples​


Admin Topology Run​

POST
/admin/anchors-mesh-topology/run

Manual one-shot trigger. Single-country mode when cc is
given (and af optionally), full eligible-set mode otherwise.

Wrapped in :func:run_and_record so the run shows up in
db.task_history alongside the scheduled ones.

Parameters​

Header Parameters

authorization
x-api-key

Request Body​

application/json
JSON
{
  
"date": "string",
  
"cc": "string",
  
"af": 0
}

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers
Body

Samples​


Admin Topology Range​

POST
/admin/anchors-mesh-topology/range

Window rebuild. 400 on bad input or span > settings cap.

Parameters​

Header Parameters

authorization
x-api-key

Request Body​

application/json
JSON
{
  
"since": "string",
  
"until": "string"
}

Responses​

Successful Response

application/json
JSON
{
  
"additionalProperties": "string"
}

Playground​

Headers
Body

Samples​


Atlas — built on RIPE Atlas data.