Reference4 min readgenerated from the code

HTTP API

Every route the server serves, read from its own route table.

The console

Read-only. Nothing here writes to a dataset, and nothing materialises a blob column.

method path what it does
GET /catalog/runtime Which Lance is underneath, and what this build of it can do.
GET /catalog/tables Every table under the root.
GET /catalog/tables/{name:path} One table in full: schema, stats, and the real on-disk byte split.
GET /catalog/tables/{name:path}/blob Stream the bytes of one heavy cell, honouring HTTP Range.
GET /catalog/tables/{name:path}/compare Two versions of one table, side by side and pinned.
POST /catalog/tables/{name:path}/compare/query The same query against both versions — the before and after of an operation.
GET /catalog/tables/{name:path}/findings What is worth saying about this table, derived rather than generated.
GET /catalog/tables/{name:path}/fragments The physical layout: what each fragment holds and what it weighs.
GET /catalog/tables/{name:path}/indices What is indexed on this table — and, more usefully, what isn't.
POST /catalog/tables/{name:path}/query Run it, and report what it cost and which path it took.
GET /catalog/tables/{name:path}/query/capabilities What this table can be asked, and why not where it cannot.
GET /catalog/tables/{name:path}/query/completions The columns, the operators each one accepts, and what is in the short ones.
POST /catalog/tables/{name:path}/query/explain The plan, without running the query.
POST /catalog/tables/{name:path}/query/validate Does this predicate parse, and how many rows does it match.
GET /catalog/tables/{name:path}/rows Browse rows, without ever materialising a blob.
GET /catalog/tables/{name:path}/versions The table's history, newest first, with what each version changed.

The language layer

Optional. Every route answers with nothing configured, and says what is missing.

method path what it does
DELETE /intel/cache Forget cached answers.
GET /intel/capabilities What the language layer is right now, and why it is that.
GET /intel/meter Tokens and dollars spent by this process, beside the bytes it read.
POST /intel/meter/reset
POST /intel/selftest One real call, end to end, reported honestly.
POST /intel/tables/{name:path}/filter English in, a Lance predicate out — as a draft, never as an action.
POST /intel/tables/{name:path}/summary Describe a table in a few sentences, and remember the answer.

Configuration

The only routes that write anything, and what they write is the settings file.

method path what it does
GET /settings
POST /settings/connections
POST /settings/connections/probe Check a path before committing to it.
DELETE /settings/connections/{conn_id}
POST /settings/connections/{conn_id}/activate
PUT /settings/intelligence
GET /settings/intelligence/probe What is actually available on this machine right now.
GET /settings/samples Public Lance datasets worth opening, for a console with nothing in it yet.
POST /settings/samples/open Save a sample as a connection and point the console at it.

Creating a database

The only routes permitted to write a dataset, and the only ones that may create a table. They may never modify one that already exists.

method path what it does
GET /ingest/capabilities What this build could create, before anyone asks it to create anything.
GET /ingest/jobs Every job this server knows, including ones a restart interrupted.
POST /ingest/jobs Begin an ingest.
DELETE /ingest/jobs/{job_id} Forget the record.
GET /ingest/jobs/{job_id} A job's current state.
POST /ingest/jobs/{job_id}/adopt Point the console at what this job wrote.
POST /ingest/jobs/{job_id}/cancel Stop after the current file.
POST /ingest/jobs/{job_id}/discard Delete the table this job created.
GET /ingest/jobs/{job_id}/events The per-file log after a cursor — a stream's content without a stream.
POST /ingest/query-vector Turn a sentence into a vector in this table's space.
POST /ingest/scan Survey a source directory.
GET /ingest/tables/{name:path}/text-search Can this table be searched by typing?

Ctrl-F for Video

The demo's own routes. They return 503 when the corpus is absent.

method path what it does
GET /health
GET /meter
POST /meter/reset
GET /meter/stream
GET /sample A spread of moments from across the corpus, for the opening screen.
GET /schema The actual tables, read off disk — the Act 3 slide, live.
POST /search
GET /tracks
GET /video/{talk_id}/{segment_idx}