Skip to content

admin ​

34 endpoints at a glance
MethodPathSummary
GET/admin/db-statsAdmin Db Stats
GET/admin/locations/cities/datasetsList Datasets
GET/admin/locations/cities/importsList Imports
GET/admin/locations/cities/imports/{import_id}Get Import
POST/admin/locations/cities/imports/runSubmit Import
GET/admin/locations/cities/statsCities Stats
GET/admin/locations/cities/statusCities Status
GET/admin/locations/languages/importsList Language Imports
GET/admin/locations/languages/imports/{import_id}Get Language Import
POST/admin/locations/languages/imports/runRun Language Import
GET/admin/locations/languages/statsLanguages Stats
GET/admin/locations/languages/statusLanguages Status
GET/admin/mail/global-blocklistList Global Blocklist
POST/admin/mail/global-blocklistAdd Global Blocklist
DELETE/admin/mail/global-blocklist/{entry_id}Remove Global Blocklist
GET/admin/mail/keywordsList Keywords
POST/admin/mail/keywordsAdd Keyword
DELETE/admin/mail/keywords/{keyword_id}Remove Keyword
PATCH/admin/mail/keywords/{keyword_id}Patch Keyword
GET/admin/mail/nrd/importsList Nrd Imports
POST/admin/mail/nrd/imports/runRun Nrd Import
GET/admin/mail/nrd/statsNrd Stats
GET/admin/mail/nrd/statusNrd Status
GET/admin/mail/stalwart/allowed-ipsStalwart Allowed Ips
GET/admin/mail/stalwart/blocked-ipsStalwart Blocked Ips
DELETE/admin/mail/stalwart/blocked-ips/{ip}Stalwart Unblock Ip
GET/admin/mail/stalwart/healthStalwart Health
GET/admin/mail/stalwart/queueStalwart Queue
DELETE/admin/mail/stalwart/queue/{message_id}Stalwart Queue Cancel
GET/admin/mail/stalwart/queue/{message_id}Stalwart Queue Message
POST/admin/mail/stalwart/queue/{message_id}/retryStalwart Queue Retry
POST/admin/reminders/runAdmin Run Reminders
GET/admin/task-historyAdmin Task History
GET/admin/task-history/{task_id}Admin Task History Detail

admin​


Admin Db Stats​

GET
/admin/db-stats

Return the admin dashboard payload.

stale_days controls the threshold for the stale-users list
(default 14). Recomputed on every request — no caching.

Parameters​

Header Parameters

authorization

Query Parameters

stale_days
Type
integer
Default
14

Responses​

Successful Response

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

Playground​

Headers
Variables
Key
Value

Samples​


Admin Run Reminders​

POST
/admin/reminders/run

Run the due-date reminder scan once, now (all users).

The daily cron only runs on the scheduler-owning instance (production);
this button makes the feature testable on develop and lets an admin
force a pass after changing data. Idempotent — the per-item dedupe
markers mean a manual run never double-notifies.

Parameters​

Header Parameters

authorization

Responses​

Successful Response

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

Playground​

Headers

Samples​


Admin Task History​

GET
/admin/task-history

List recent task runs, newest-first, with optional filters.

Always returns names (every distinct task name seen) and
counts_by_status so the SPA can render its filter dropdown and
status badges in one request.

Parameters​

Header Parameters

authorization

Query Parameters

page
Type
integer
Default
1
limit
Type
integer
Default
50
name
status

Responses​

Successful Response

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

Playground​

Headers
Variables
Key
Value

Samples​


Admin Task History Detail​

GET
/admin/task-history/{task_id}

Parameters​

Header Parameters

authorization

Path Parameters

task_id*
Type
string
Required

Responses​

Successful Response

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

Playground​

Headers
Variables
Key
Value

Samples​


List Datasets​

GET
/admin/locations/cities/datasets

Importable GeoNames datasets with label + estimated row count.

Parameters​

Header Parameters

authorization

Responses​

Successful Response

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

Playground​

Headers

Samples​


Cities Status​

GET
/admin/locations/cities/status

Current dataset, total cities, last import + live worker state.

Parameters​

Header Parameters

authorization

Responses​

Successful Response

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

Playground​

Headers

Samples​


Cities Stats​

GET
/admin/locations/cities/stats

Live distributions + totals over the loaded dataset.

Parameters​

Header Parameters

authorization

Responses​

Successful Response

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

Playground​

Headers

Samples​


List Imports​

GET
/admin/locations/cities/imports

Newest-first import-run rows. Optional YYYY-MM-DD bounds.

Parameters​

Header Parameters

authorization

Query Parameters

since
until
limit
Type
integer
Maximum
1000
Minimum
1
Default
100

Responses​

Successful Response

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

Playground​

Headers
Variables
Key
Value

Samples​


Get Import​

GET
/admin/locations/cities/imports/{import_id}

Parameters​

Header Parameters

authorization

Path Parameters

import_id*
Type
string
Required

Responses​

Successful Response

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

Playground​

Headers
Variables
Key
Value

Samples​


Submit Import​

POST
/admin/locations/cities/imports/run

Queue a cities import. Returns immediately with worker state.

Parameters​

Header Parameters

authorization

Request Body​

application/json
JSON
{
  
"dataset": "string",
  
"skip_if_unchanged": false
}

Responses​

Successful Response

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

Playground​

Headers
Body

Samples​


Languages Status​

GET
/admin/locations/languages/status

Parameters​

Header Parameters

authorization

Responses​

Successful Response

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

Playground​

Headers

Samples​


Languages Stats​

GET
/admin/locations/languages/stats

Parameters​

Header Parameters

authorization

Responses​

Successful Response

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

Playground​

Headers

Samples​


List Language Imports​

GET
/admin/locations/languages/imports

Parameters​

Header Parameters

authorization

Query Parameters

since
until
limit
Type
integer
Maximum
1000
Minimum
1
Default
100

Responses​

Successful Response

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

Playground​

Headers
Variables
Key
Value

Samples​


Get Language Import​

GET
/admin/locations/languages/imports/{import_id}

Parameters​

Header Parameters

authorization

Path Parameters

import_id*
Type
string
Required

Responses​

Successful Response

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

Playground​

Headers
Variables
Key
Value

Samples​


Run Language Import​

POST
/admin/locations/languages/imports/run

Download the SIL tables + upsert (admin only). Runs the blocking work
off the event loop and returns the resulting import-audit row.

Parameters​

Header Parameters

authorization

Responses​

Successful Response

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

Playground​

Headers

Samples​


List Keywords​

GET
/admin/mail/keywords

Parameters​

Header Parameters

authorization

Responses​

Successful Response

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

Playground​

Headers

Samples​


Add Keyword​

POST
/admin/mail/keywords

Parameters​

Header Parameters

authorization

Request Body​

application/json
JSON
{
  
"keyword": "string",
  
"block_domain": false
}

Responses​

Successful Response

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

Playground​

Headers
Body

Samples​


Remove Keyword​

DELETE
/admin/mail/keywords/{keyword_id}

Parameters​

Header Parameters

authorization

Path Parameters

keyword_id*
Type
string
Required

Responses​

Successful Response

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

Playground​

Headers
Variables
Key
Value

Samples​


Patch Keyword​

PATCH
/admin/mail/keywords/{keyword_id}

Parameters​

Header Parameters

authorization

Path Parameters

keyword_id*
Type
string
Required

Request Body​

application/json
JSON
{
  
"block_domain": true
}

Responses​

Successful Response

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

Playground​

Headers
Variables
Key
Value
Body

Samples​


List Global Blocklist​

GET
/admin/mail/global-blocklist

Parameters​

Header Parameters

authorization

Responses​

Successful Response

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

Playground​

Headers

Samples​


Add Global Blocklist​

POST
/admin/mail/global-blocklist

Parameters​

Header Parameters

authorization

Request Body​

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

Responses​

Successful Response

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

Playground​

Headers
Body

Samples​


Remove Global Blocklist​

DELETE
/admin/mail/global-blocklist/{entry_id}

Parameters​

Header Parameters

authorization

Path Parameters

entry_id*
Type
string
Required

Responses​

Successful Response

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

Playground​

Headers
Variables
Key
Value

Samples​


Nrd Status​

GET
/admin/mail/nrd/status

Parameters​

Header Parameters

authorization

Responses​

Successful Response

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

Playground​

Headers

Samples​


Nrd Stats​

GET
/admin/mail/nrd/stats

Parameters​

Header Parameters

authorization

Responses​

Successful Response

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

Playground​

Headers

Samples​


List Nrd Imports​

GET
/admin/mail/nrd/imports

Parameters​

Header Parameters

authorization

Query Parameters

limit
Type
integer
Maximum
1000
Minimum
1
Default
100

Responses​

Successful Response

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

Playground​

Headers
Variables
Key
Value

Samples​


Run Nrd Import​

POST
/admin/mail/nrd/imports/run

Import the Whoisds NRD list — a specific date, else the daily default.
Runs the blocking download/upsert off the event loop.

Parameters​

Header Parameters

authorization

Request Body​

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

Responses​

Successful Response

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

Playground​

Headers
Body

Samples​


Stalwart Health​

GET
/admin/mail/stalwart/health

Parameters​

Header Parameters

authorization

Responses​

Successful Response

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

Playground​

Headers

Samples​


Stalwart Queue​

GET
/admin/mail/stalwart/queue

Parameters​

Header Parameters

authorization

Query Parameters

limit
Type
integer
Maximum
200
Minimum
1
Default
25

Responses​

Successful Response

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

Playground​

Headers
Variables
Key
Value

Samples​


Stalwart Queue Message​

GET
/admin/mail/stalwart/queue/{message_id}

Parameters​

Header Parameters

authorization

Path Parameters

message_id*
Type
string
Required

Responses​

Successful Response

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

Playground​

Headers
Variables
Key
Value

Samples​


Stalwart Queue Cancel​

DELETE
/admin/mail/stalwart/queue/{message_id}

Parameters​

Header Parameters

authorization

Path Parameters

message_id*
Type
string
Required

Responses​

Successful Response

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

Playground​

Headers
Variables
Key
Value

Samples​


Stalwart Blocked Ips​

GET
/admin/mail/stalwart/blocked-ips

Parameters​

Header Parameters

authorization

Responses​

Successful Response

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

Playground​

Headers

Samples​


Stalwart Allowed Ips​

GET
/admin/mail/stalwart/allowed-ips

Allowlist + integrity check (are the required Docker subnets still on it?).

Parameters​

Header Parameters

authorization

Responses​

Successful Response

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

Playground​

Headers

Samples​


Stalwart Queue Retry​

POST
/admin/mail/stalwart/queue/{message_id}/retry

Parameters​

Header Parameters

authorization

Path Parameters

message_id*
Type
string
Required

Responses​

Successful Response

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

Playground​

Headers
Variables
Key
Value

Samples​


Stalwart Unblock Ip​

DELETE
/admin/mail/stalwart/blocked-ips/{ip}

Remove one banned IP from Stalwart's config.

Returns a caveat the UI must show: the delete clears the persistent
ban, but a live in-memory ban may survive until a Stalwart reload/restart
(learned during the 502 incident). The durable fix is the allowlist, not
repeated unblocks.

Parameters​

Header Parameters

authorization

Path Parameters

ip*
Type
string
Required

Responses​

Successful Response

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

Playground​

Headers
Variables
Key
Value

Samples​


Kancil — one workspace for contacts, work and money.