Skip to content

REST API Reference

Base URL: http://your-server:8000

All endpoints that modify state require an X-API-Key header (unless HMDB_AUTH_DISABLED=1).

X-API-Key: hmdb_yoursecretkey

Roles:

RoleDescription
readonlyRead-only queries, health checks, metrics
readwriteAll reads + insert, delete, compact, batch
adminAll of the above + key management, backup, DDL

Kubernetes liveness probe. No authentication required.

Response 200:

{ "status": "live" }

Kubernetes readiness probe. No authentication required.

Response 200:

{ "status": "ready" }

Full database statistics. Requires readonly.

Response 200:

{
"status": "ok",
"version": "1.0.0",
"db_dir": "/data",
"total_records": 1000000,
"bucket_count": 100,
"bucket_seconds": 10,
"node_count": 5000,
"wal_pending": 0,
"uptime_seconds": 3600.5
}

Prometheus text format. Requires readonly.

# HELP hypermeshdb_records_total Total records in TPI index
# TYPE hypermeshdb_records_total gauge
hypermeshdb_records_total 1000000
...

Execute any Cypher statement. Requires readwrite for writes, readonly for reads.

Request:

{
"query": "MATCH HYPEREDGE (he:CoProximity) WHERE he.event_ts >= 1000 RETURN *",
"parameters": { "start": 1000 }
}

Response 200:

{
"columns": ["event_ts", "members", "weight"],
"rows": [{ "event_ts": 1000, "members": [1, 2, 3], "weight": 0.95 }
],
"num_tuples": 1,
"query_plan": {
"strategy": "TPI_BUCKET_PUSHDOWN",
"buckets_scanned": 3,
"total_buckets": 100,
"speedup_factor": 33.3,
"elapsed_us": 42
}
}

Temporal range query (TPI pushdown). Requires readonly.

Query paramTypeRequiredDescription
start_tsintyesInclusive start timestamp
end_tsintyesInclusive end timestamp
tablestringnoTable name (default: primary table)

Insert a single hyperedge. Requires readwrite.

Request:

{
"event_ts": 1000,
"members": [1, 2, 3],
"weight": 0.95,
"mean_dist_m": 5.2,
"formation": "delta",
"table": "CoProximity"
}

Write a tombstone (soft delete). Requires readwrite.

{ "event_ts": 1000, "members": [1, 2, 3] }

FMI membership lookup. Requires readonly.

Query paramTypeDescription
tablestringTable name (default: primary)

Compact WAL. Requires readwrite.

{ "ttl_seconds": 3600, "table": "CoProximity" }

Set auto-compact threshold. Requires readwrite.

{ "threshold": 1000, "table": "CoProximity" }

List all hyperedge tables. Requires readonly.


Get a single table definition. Requires readonly.


Create a table. Requires admin.

{
"name": "Events",
"member_tables": ["Drone", "Host"],
"bucket_seconds": 10,
"compact_threshold": 1000
}

Drop a table. Requires admin.

List PSI indexes. Requires readonly.


Create a PSI index. Requires admin.

{ "table": "CoProximity", "column": "weight" }

Drop a PSI index. Requires admin.

Execute operations atomically. All commit or all roll back. Requires readwrite.

Request:

{
"operations": [{ "type": "insert", "event_ts": 100, "members": [1, 2] },
{ "type": "insert", "event_ts": 101, "members": [2, 3] },
{ "type": "query", "cypher": "MATCH HYPEREDGE (he:CoProximity) RETURN *" }
]
}

Response 200:

{
"committed": true,
"ops_total": 3,
"ops_success": 3,
"results": [{ "op": 0, "type": "insert", "success": true },
{ "op": 1, "type": "insert", "success": true },
{ "op": 2, "type": "query", "success": true, "rows": [...] }
]
}

Compute a hypergraph analytics measure. Requires readonly.

Request:

{ "params": { "s": 2 } }

Response 200:

{
"measure": "spectral_gap",
"table": "CoProximity",
"result": 0.42
}

Supported measures: density, uniformity, overlapping_coefficient, node_degree, edge_size, isolated_nodes, isolated_edges, redundancy, betweenness, closeness, pagerank, harmonic_centrality, clique_number, spectral_gap, algebraic_connectivity, zhou_clustering, pairwise_clustering, modularity, s_adjacency, s_distance, s_connected_components, s_diameter, temporal_activity, temporal_burstiness, temporal_coreness.

Trigger server-side backup. Requires admin.

{
"backup_dir": "/backups",
"compact_first": true
}

Response 200:

{
"path": "/backups/hypermeshdb_20260409_120000.tar.gz",
"size_bytes": 1048576,
"tables": ["CoProximity"],
"compact_first": true
}

List API keys. Requires admin.


Create an API key. Requires admin.

{ "role": "readwrite", "description": "ci-pipeline" }

Response 200 (plaintext key shown once only):

{
"key_id": "key_a3f9...",
"description": "ci-pipeline",
"role": "readwrite",
"created_at": 1712600000,
"plaintext_key": "hmdb_a3f9c2b1..."
}

Revoke an API key. Requires admin.

Responses include rate-limit headers:

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
X-RateLimit-Reset: 1712600060

When the limit is exceeded, the server returns 429 Too Many Requests.

Configure with HMDB_RATE_LIMIT_QPM environment variable (default: 1000 req/min per key).

WAL status. Requires readonly.

{ "pending": 42, "threshold": 1000 }