Sources
Connected systems, their syncs, and documents pushed to a push source.
📄️ List sources
Get a list of all configured data sources with sync status
📄️ Create source
Create a new data source (admin only)
📄️ Get source
Get a data source by ID
📄️ Delete source
Delete a data source by ID (admin only). This also removes all indexed documents from this source.
📄️ Trigger sync
Trigger a sync operation for a specific source (admin only)
📄️ Get sync state for source
Get the current sync state and statistics for a specific source. Returns the last sync time, status, and document/chunk counts from the most recent sync operation.
📄️ Cancel a sync
Cancels an in-flight sync for a source. Stops the running sync's
📄️ Push documents to a push source
Accepts one or more documents for a push-provider source (see POST /sources with provider_type=push) and enqueues each for ingest through the same index/claim/extract path a pulled document takes. Returns 202 Accepted: the document rows exist and their raw bytes are retained, but nothing has been normalised, indexed or extracted yet. Poll GET /api/v1/documents/{id} and read ingest_status ('processing' / 'indexed' / 'failed') to find out when a document became searchable. Re-pushing the same external_id is idempotent and returns the same document_id. Admin only - see the RequireAdmin wiring at setupRoutes for why a pushing service's m2m token must resolve to a users row with Role=admin. Bytes travel base64-encoded in JSON; see the doc comment body below for why that was chosen over multipart/form-data. Body limited to pushDocumentMaxBodyBytes (larger than the default 10 MiB, since base64 inflates size by roughly a third).
📄️ List source documents
Get all documents indexed from a specific source with pagination support. Optionally filter to a subset of containers via the container_ids query parameter (comma-separated).