Skip to content

REST reference

All JSON responses follow an envelope:

{ "data": <T>, "error": null }

On failure:

{ "data": null, "error": { "code": "<code>", "message": "<human>" } }

Health

MethodPathPurpose
GET/healthzLiveness — always 200.
GET/readyzReadiness.

Query

MethodPathBody
POST/v1/query{ "schema": "ns.Name", "query": "...", "top_k": 10, "filters": {} }

Returns a SearchResponse with hits, a receipt id, and elapsed ms.

Schemas

MethodPathPurpose
GET/v1/schemasList every registered schema (summary).
POST/v1/schemasRegister a compiled schema. Body: { meta }.
GET/v1/schemas/:qualifiedFull schema metadata.
POST/v1/schemas/:qualified/ddlApply a DDL bundle produced by sealstack-csl.

Schemas registered via POST /v1/schemas persist to Postgres and survive a gateway restart. The in-memory SchemaRegistry is rehydrated from the DB at boot.

Connectors

MethodPathPurpose
GET/v1/connectorsList registered bindings.
POST/v1/connectorsRegister a binding.
POST/v1/connectors/:id/syncRun one-shot sync.

POST /v1/connectors body:

{
"kind": "local-files",
"schema": "acme.Doc",
"config": { "root": "/srv/docs" }
}

Receipts

MethodPathPurpose
GET/v1/receipts/:idFetch a receipt.

Error codes

CodeHTTPMeaning
invalid_argument400Body shape or field value rejected.
unknown_schema404Schema not registered.
not_found404Resource (receipt, connector, row) not found.
policy_denied403CSL policy rule rejected the caller.
backend500Postgres, Qdrant, or embedder error.
internal500Uncategorized — check gateway logs.