ServicesScanDALHTTP APIScans

Read legacy table rows

POST
/legacy-tables/read

Read legacy keyed table rows using metadata resolved by the Tables API and a scoped storage binding. ScanDAL merges key-space and column-group fragments, WAL patches and deletions through the legacy native reader. It calls no control-plane service. Returns an Arrow IPC stream, including its schema when limit is zero. Hosted ScanDAL rejects local file roots with the same policy as Arbor reads.

Authorization

bearerAuth
headerAuthorizationBearer <token>

Request Body

application/json
  1. body

A bounded legacy read over host-resolved metadata and storage. limit is at most 10000; zero reads only the schema, otherwise one extra row signals truncation. offset is at most 10000. Up to 32 filters are allowed. scope is Cell, Panel or FullView for images. The read has a one-minute deadline and a 64 MiB output bound. Optional filter is an exact synchronous expression conjoined with filters before the window. Supported forms are field references, typed literals, comparisons, boolean operators, null checks and synchronous SPQL calls. Other expression forms are rejected. Optional columns selects top-level fields in output order after filtering; absent selects all fields.

columns?array<string>|null
filter?|null
filters*array<>
limit*integer
Formatuint32
Range0 <= value <= 4294967295
offset*integer
Formatuint32
Range0 <= value <= 4294967295
scope*string
snapshot*scandal.LegacyTableSnapshot

Resolved legacy table metadata from GET /v1/tables/{tableId}/read-snapshot, passed unchanged: tableId, asof, keySchema, keySpace and columnGroups. WAL patches are already folded at asof. No credentials or endpoints occur here. This is a live read snapshot, not an Arbor version or a resumable split.

storage?|null

Response Body

Success

response?fileapplication/vnd.apache.arrow.stream
Formatbinary
curl -X POST 'https://scandal.spiraldb.dev/legacy-tables/read' \  -H 'Content-Type: application/json' \  -d '{  "filters": [    {      "field": "string",      "kind": "string",      "operator": "string"    }  ],  "limit": 0,  "offset": 0,  "scope": "string",  "snapshot": null}'
"string"