HTTP API¶
The ingest HTTP adapter exposes deterministic chunking and a process-local
retrieval workflow. It is a FastAPI application created by create_app() and
published as bijux_canon_ingest.interfaces.http.app:app.
Operations¶
| Method and path | Request | Success | Governed result |
|---|---|---|---|
GET /v1/healthz |
none | 200 |
{ "ok": true } liveness response |
POST /v1/chunks |
documents, chunk size, overlap, embedding flag | 200 |
chunks with source identity, offsets, metadata, and optional embeddings |
POST /v1/index/build |
documents, bm25 or numpy-cosine, chunk geometry |
200 |
process-local index_id, content/configuration fingerprint, schema version |
POST /v1/retrieve |
index_id, query, top_k, metadata filters |
200 |
ranked candidates with scores and chunk metadata |
POST /v1/ask |
index_id, query, top_k, filters, rerank flag |
200 |
extractive answer, citations, and the candidates used |
sequenceDiagram
participant Client
participant API
participant Service
participant Store as In-memory index store
Client->>API: POST /v1/index/build
API->>Service: clean, chunk, build
Service-->>Store: index + fingerprint
Store-->>Client: index_id
Client->>API: POST /v1/retrieve or /v1/ask
API->>Store: resolve index_id
Store-->>Service: built index
Service-->>Client: candidates or cited answer
Build And Query An Index¶
curl --fail-with-body http://127.0.0.1:8000/v1/index/build \
--header 'content-type: application/json' \
--data '{
"backend": "bm25",
"chunk_size": 256,
"overlap": 32,
"docs": [{"doc_id": "policy-17", "text": "Keep signed records."}]
}'
Use the returned index_id in /v1/retrieve or /v1/ask. Preserve the
fingerprint with any result that may be reviewed later.
Validation And Failure Semantics¶
- Documents and queries must be non-empty; each request requiring documents requires at least one.
- Chunk size is positive and overlap is non-negative and strictly smaller than
chunk size. Request-model violations return
422. - Unsupported preparation or retrieval work returns
400with FastAPI's structureddetailfield. - Retrieval or answering with an unknown
index_idreturns404. top_kis positive. Filters are string-to-string metadata predicates.- Candidate order is the service ranking order; clients must not reorder it before preserving evidence for an answer.
Persistence And Deployment Boundary¶
The default HTTP application stores built indexes in memory. An index_id is
valid only inside the process that created it and is lost on restart. The API
does not provide index enumeration, deletion, replication, or durable recovery.
Use the CLI/storage adapters for file-backed workflows, or supply a governed
service boundary before treating this application as durable infrastructure.
The application does not implement authentication or tenant isolation. Deploy it behind an authenticated boundary, enforce request limits at the edge, and do not expose process-local indexes across untrusted tenants.
Contract Authority¶
The versioned source is
apis/bijux-canon-ingest/v1/schema.yaml,
with a pinned representation and schema hash beside it. The Pydantic request
and response models and live contract tests establish implementation behavior.
Schema presence alone does not establish persistence, authentication, or an
operation not listed above.
See Entrypoints and Examples for server startup and chunking examples, and Data Contracts for the record shapes carried across this boundary.