openapi: 3.1.1 info: description: "This OpenAPI specification is a part of the Lance namespace specification.\ \ It contains 2 parts:\n\nThe `components/schemas`, `components/responses`, `components/examples`,\ \ `tags` sections define\nthe request and response shape for each operation in\ \ a Lance Namespace across all implementations.\nSee https://lancedb.github.io/lance-namespace/spec/operations\ \ for more details.\n\nThe `servers`, `security`, `paths`, `components/parameters`\ \ sections are for the \nLance REST Namespace implementation, which defines a\ \ complete REST server that can work with Lance datasets.\nSee https://lancedb.github.io/lance-namespace/spec/impls/rest\ \ for more details.\n" license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0.html title: Lance Namespace Specification version: 1.0.0 servers: - description: Generic server URL with all parts configurable url: "{scheme}://{host}:{port}/{basePath}" variables: scheme: default: http host: default: localhost port: default: "2333" basePath: default: "" - description: Server URL when the port can be inferred from the scheme url: "{scheme}://{host}/{basePath}" variables: scheme: default: http host: default: localhost basePath: default: "" security: - OAuth2: [] - BearerAuth: [] tags: - description: | Operations that are related to a namespace name: Namespace - description: | Operations that are related to a table name: Table - description: | Operations that are related to an index name: Index - description: | Operations that are related to a transaction name: Transaction - description: | Operations that only interact with object metadata and should be computationally lightweight name: Metadata - description: | Operations that interact with object data and might be computationally intensive name: Data paths: /v1/namespace/{id}/create: parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' post: description: "Create new namespace `id`.\n\nDuring the creation process, the\ \ implementation may modify user-provided `properties`, \nsuch as adding additional\ \ properties like `created_at` to user-provided properties, \nomitting any\ \ specific property, or performing actions based on any property value.\n" operationId: CreateNamespace parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateNamespaceRequest' required: true responses: "200": $ref: '#/components/responses/CreateNamespaceResponse' "400": $ref: '#/components/responses/BadRequestErrorResponse' "401": $ref: '#/components/responses/UnauthorizedErrorResponse' "403": $ref: '#/components/responses/ForbiddenErrorResponse' "404": $ref: '#/components/responses/NotFoundErrorResponse' "406": $ref: '#/components/responses/UnsupportedOperationErrorResponse' "409": $ref: '#/components/responses/ConflictErrorResponse' "503": $ref: '#/components/responses/ServiceUnavailableErrorResponse' "5XX": $ref: '#/components/responses/ServerErrorResponse' summary: Create a new namespace tags: - Namespace - Metadata x-content-type: application/json x-accepts: - application/json /v1/namespace/{id}/list: get: description: | List all child namespace names of the parent namespace `id`. REST NAMESPACE ONLY REST namespace uses GET to perform this operation without a request body. It passes in the `ListNamespacesRequest` information in the following way: - `id`: pass through path parameter of the same name - `page_token`: pass through query parameter of the same name - `limit`: pass through query parameter of the same name operationId: ListNamespaces parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' - explode: true in: query name: page_token required: false schema: $ref: '#/components/schemas/PageToken' style: form - explode: true in: query name: limit required: false schema: $ref: '#/components/schemas/PageLimit' style: form responses: "200": $ref: '#/components/responses/ListNamespacesResponse' "400": $ref: '#/components/responses/BadRequestErrorResponse' "401": $ref: '#/components/responses/UnauthorizedErrorResponse' "403": $ref: '#/components/responses/ForbiddenErrorResponse' "404": $ref: '#/components/responses/NotFoundErrorResponse' "406": $ref: '#/components/responses/UnsupportedOperationErrorResponse' "503": $ref: '#/components/responses/ServiceUnavailableErrorResponse' "5XX": $ref: '#/components/responses/ServerErrorResponse' summary: List namespaces tags: - Namespace - Metadata x-accepts: - application/json parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' - explode: true in: query name: page_token required: false schema: $ref: '#/components/schemas/PageToken' style: form - explode: true in: query name: limit required: false schema: $ref: '#/components/schemas/PageLimit' style: form /v1/namespace/{id}/describe: parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' post: description: | Describe the detailed information for namespace `id`. operationId: DescribeNamespace parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' requestBody: content: application/json: schema: $ref: '#/components/schemas/DescribeNamespaceRequest' required: true responses: "200": $ref: '#/components/responses/DescribeNamespaceResponse' "400": $ref: '#/components/responses/BadRequestErrorResponse' "401": $ref: '#/components/responses/UnauthorizedErrorResponse' "403": $ref: '#/components/responses/ForbiddenErrorResponse' "404": $ref: '#/components/responses/NotFoundErrorResponse' "503": $ref: '#/components/responses/ServiceUnavailableErrorResponse' "5XX": $ref: '#/components/responses/ServerErrorResponse' summary: Describe a namespace tags: - Namespace - Metadata x-content-type: application/json x-accepts: - application/json /v1/namespace/{id}/drop: parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' post: description: | Drop namespace `id` from its parent namespace. operationId: DropNamespace parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' requestBody: content: application/json: schema: $ref: '#/components/schemas/DropNamespaceRequest' required: true responses: "200": $ref: '#/components/responses/DropNamespaceResponse' "400": $ref: '#/components/responses/BadRequestErrorResponse' "401": $ref: '#/components/responses/UnauthorizedErrorResponse' "403": $ref: '#/components/responses/ForbiddenErrorResponse' "404": $ref: '#/components/responses/NotFoundErrorResponse' "409": $ref: '#/components/responses/ConflictErrorResponse' "503": $ref: '#/components/responses/ServiceUnavailableErrorResponse' "5XX": $ref: '#/components/responses/ServerErrorResponse' summary: Drop a namespace tags: - Namespace - Metadata x-content-type: application/json x-accepts: - application/json /v1/namespace/{id}/exists: parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' post: description: "Check if namespace `id` exists.\n\nThis operation must behave\ \ exactly like the DescribeNamespace API, \nexcept it does not contain a response\ \ body.\n" operationId: NamespaceExists parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' requestBody: content: application/json: schema: $ref: '#/components/schemas/NamespaceExistsRequest' required: true responses: "200": description: "Success, no content" "400": $ref: '#/components/responses/BadRequestErrorResponse' "401": $ref: '#/components/responses/UnauthorizedErrorResponse' "403": $ref: '#/components/responses/ForbiddenErrorResponse' "404": $ref: '#/components/responses/NotFoundErrorResponse' "503": $ref: '#/components/responses/ServiceUnavailableErrorResponse' "5XX": $ref: '#/components/responses/ServerErrorResponse' summary: Check if a namespace exists tags: - Namespace - Metadata x-content-type: application/json x-accepts: - application/json /v1/namespace/{id}/table/list: get: description: | List all child table names of the parent namespace `id`. REST NAMESPACE ONLY REST namespace uses GET to perform this operation without a request body. It passes in the `ListTablesRequest` information in the following way: - `id`: pass through path parameter of the same name - `page_token`: pass through query parameter of the same name - `limit`: pass through query parameter of the same name operationId: ListTables parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' - explode: true in: query name: page_token required: false schema: $ref: '#/components/schemas/PageToken' style: form - explode: true in: query name: limit required: false schema: $ref: '#/components/schemas/PageLimit' style: form responses: "200": $ref: '#/components/responses/ListTablesResponse' "400": $ref: '#/components/responses/BadRequestErrorResponse' "401": $ref: '#/components/responses/UnauthorizedErrorResponse' "403": $ref: '#/components/responses/ForbiddenErrorResponse' "404": $ref: '#/components/responses/NotFoundErrorResponse' "406": $ref: '#/components/responses/UnsupportedOperationErrorResponse' "503": $ref: '#/components/responses/ServiceUnavailableErrorResponse' "5XX": $ref: '#/components/responses/ServerErrorResponse' summary: List tables in a namespace tags: - Namespace - Table - Metadata x-accepts: - application/json parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' - explode: true in: query name: page_token required: false schema: $ref: '#/components/schemas/PageToken' style: form - explode: true in: query name: limit required: false schema: $ref: '#/components/schemas/PageLimit' style: form /v1/table/{id}/register: parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' post: description: | Register an existing table at a given storage location as `id`. operationId: RegisterTable parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' requestBody: content: application/json: schema: $ref: '#/components/schemas/RegisterTableRequest' required: true responses: "200": $ref: '#/components/responses/RegisterTableResponse' "400": $ref: '#/components/responses/BadRequestErrorResponse' "401": $ref: '#/components/responses/UnauthorizedErrorResponse' "403": $ref: '#/components/responses/ForbiddenErrorResponse' "404": $ref: '#/components/responses/NotFoundErrorResponse' "406": $ref: '#/components/responses/UnsupportedOperationErrorResponse' "409": $ref: '#/components/responses/ConflictErrorResponse' "503": $ref: '#/components/responses/ServiceUnavailableErrorResponse' "5XX": $ref: '#/components/responses/ServerErrorResponse' summary: Register a table to a namespace tags: - Table - Metadata x-content-type: application/json x-accepts: - application/json /v1/table/{id}/describe: parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' post: description: | Describe the detailed information for table `id`. operationId: DescribeTable parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' requestBody: content: application/json: schema: $ref: '#/components/schemas/DescribeTableRequest' required: true responses: "200": $ref: '#/components/responses/DescribeTableResponse' "400": $ref: '#/components/responses/BadRequestErrorResponse' "401": $ref: '#/components/responses/UnauthorizedErrorResponse' "403": $ref: '#/components/responses/ForbiddenErrorResponse' "404": $ref: '#/components/responses/NotFoundErrorResponse' "503": $ref: '#/components/responses/ServiceUnavailableErrorResponse' "5XX": $ref: '#/components/responses/ServerErrorResponse' summary: Describe information of a table tags: - Table - Metadata x-content-type: application/json x-accepts: - application/json /v1/table/{id}/exists: parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' post: description: "Check if table `id` exists.\n\nThis operation should behave exactly\ \ like DescribeTable, \nexcept it does not contain a response body.\n" operationId: TableExists parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' requestBody: content: application/json: schema: $ref: '#/components/schemas/TableExistsRequest' required: true responses: "200": description: "Success, no content" "400": $ref: '#/components/responses/BadRequestErrorResponse' "401": $ref: '#/components/responses/UnauthorizedErrorResponse' "403": $ref: '#/components/responses/ForbiddenErrorResponse' "404": $ref: '#/components/responses/NotFoundErrorResponse' "503": $ref: '#/components/responses/ServiceUnavailableErrorResponse' "5XX": $ref: '#/components/responses/ServerErrorResponse' summary: Check if a table exists tags: - Table - Metadata x-content-type: application/json x-accepts: - application/json /v1/table/{id}/drop: parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' post: description: | Drop table `id` and delete its data. operationId: DropTable parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' requestBody: content: application/json: schema: $ref: '#/components/schemas/DropTableRequest' required: true responses: "200": $ref: '#/components/responses/DropTableResponse' "400": $ref: '#/components/responses/BadRequestErrorResponse' "401": $ref: '#/components/responses/UnauthorizedErrorResponse' "403": $ref: '#/components/responses/ForbiddenErrorResponse' "404": $ref: '#/components/responses/NotFoundErrorResponse' "503": $ref: '#/components/responses/ServiceUnavailableErrorResponse' "5XX": $ref: '#/components/responses/ServerErrorResponse' summary: Drop a table tags: - Table - Metadata x-content-type: application/json x-accepts: - application/json /v1/table/{id}/deregister: parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' post: description: | Deregister table `id` from its namespace. operationId: DeregisterTable parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' requestBody: content: application/json: schema: $ref: '#/components/schemas/DeregisterTableRequest' required: true responses: "200": $ref: '#/components/responses/DeregisterTableResponse' "400": $ref: '#/components/responses/BadRequestErrorResponse' "401": $ref: '#/components/responses/UnauthorizedErrorResponse' "403": $ref: '#/components/responses/ForbiddenErrorResponse' "404": $ref: '#/components/responses/NotFoundErrorResponse' "503": $ref: '#/components/responses/ServiceUnavailableErrorResponse' "5XX": $ref: '#/components/responses/ServerErrorResponse' summary: Deregister a table tags: - Table - Metadata x-content-type: application/json x-accepts: - application/json /v1/table/{id}/insert: parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' - description: | How the insert should behave: - append (default): insert data to the existing table - overwrite: remove all data in the table and then insert data to it explode: true in: query name: mode required: false schema: default: append enum: - append - overwrite type: string style: form post: description: | Insert new records into table `id`. REST NAMESPACE ONLY REST namespace uses Arrow IPC stream as the request body. It passes in the `InsertIntoTableRequest` information in the following way: - `id`: pass through path parameter of the same name - `mode`: pass through query parameter of the same name operationId: InsertIntoTable parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' - description: | How the insert should behave: - append (default): insert data to the existing table - overwrite: remove all data in the table and then insert data to it explode: true in: query name: mode required: false schema: default: append enum: - append - overwrite type: string style: form requestBody: content: application/vnd.apache.arrow.stream: schema: format: binary type: string description: Arrow IPC stream containing the records to insert required: true responses: "200": $ref: '#/components/responses/InsertIntoTableResponse' "400": $ref: '#/components/responses/BadRequestErrorResponse' "401": $ref: '#/components/responses/UnauthorizedErrorResponse' "403": $ref: '#/components/responses/ForbiddenErrorResponse' "404": $ref: '#/components/responses/NotFoundErrorResponse' "503": $ref: '#/components/responses/ServiceUnavailableErrorResponse' "5XX": $ref: '#/components/responses/ServerErrorResponse' summary: Insert records into a table tags: - Table - Data x-content-type: application/vnd.apache.arrow.stream x-accepts: - application/json /v1/table/{id}/merge_insert: parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' - description: Column name to use for matching rows (required) explode: true in: query name: "on" required: true schema: type: string style: form - description: Update all columns when rows match explode: true in: query name: when_matched_update_all required: false schema: default: false type: boolean style: form - description: The row is updated (similar to UpdateAll) only for rows where the SQL expression evaluates to true explode: true in: query name: when_matched_update_all_filt required: false schema: type: string style: form - description: Insert all columns when rows don't match explode: true in: query name: when_not_matched_insert_all required: false schema: default: false type: boolean style: form - description: Delete all rows from target table that don't match a row in the source table explode: true in: query name: when_not_matched_by_source_delete required: false schema: default: false type: boolean style: form - description: Delete rows from the target table if there is no match AND the SQL expression evaluates to true explode: true in: query name: when_not_matched_by_source_delete_filt required: false schema: type: string style: form post: description: | Performs a merge insert (upsert) operation on table `id`. This operation updates existing rows based on a matching column and inserts new rows that don't match. It returns the number of rows inserted and updated. REST NAMESPACE ONLY REST namespace uses Arrow IPC stream as the request body. It passes in the `MergeInsertIntoTableRequest` information in the following way: - `id`: pass through path parameter of the same name - `on`: pass through query parameter of the same name - `when_matched_update_all`: pass through query parameter of the same name - `when_matched_update_all_filt`: pass through query parameter of the same name - `when_not_matched_insert_all`: pass through query parameter of the same name - `when_not_matched_by_source_delete`: pass through query parameter of the same name - `when_not_matched_by_source_delete_filt`: pass through query parameter of the same name operationId: MergeInsertIntoTable parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' - description: Column name to use for matching rows (required) explode: true in: query name: "on" required: true schema: type: string style: form - description: Update all columns when rows match explode: true in: query name: when_matched_update_all required: false schema: default: false type: boolean style: form - description: The row is updated (similar to UpdateAll) only for rows where the SQL expression evaluates to true explode: true in: query name: when_matched_update_all_filt required: false schema: type: string style: form - description: Insert all columns when rows don't match explode: true in: query name: when_not_matched_insert_all required: false schema: default: false type: boolean style: form - description: Delete all rows from target table that don't match a row in the source table explode: true in: query name: when_not_matched_by_source_delete required: false schema: default: false type: boolean style: form - description: Delete rows from the target table if there is no match AND the SQL expression evaluates to true explode: true in: query name: when_not_matched_by_source_delete_filt required: false schema: type: string style: form requestBody: content: application/vnd.apache.arrow.stream: schema: format: binary type: string description: Arrow IPC stream containing the records to merge required: true responses: "200": $ref: '#/components/responses/MergeInsertIntoTableResponse' "400": $ref: '#/components/responses/BadRequestErrorResponse' "401": $ref: '#/components/responses/UnauthorizedErrorResponse' "403": $ref: '#/components/responses/ForbiddenErrorResponse' "404": $ref: '#/components/responses/NotFoundErrorResponse' "503": $ref: '#/components/responses/ServiceUnavailableErrorResponse' "5XX": $ref: '#/components/responses/ServerErrorResponse' summary: Merge insert (upsert) records into a table tags: - Table - Data x-content-type: application/vnd.apache.arrow.stream x-accepts: - application/json /v1/table/{id}/update: parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' post: description: | Update existing rows in table `id`. operationId: UpdateTable parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateTableRequest' description: Update request required: true responses: "200": $ref: '#/components/responses/UpdateTableResponse' "400": $ref: '#/components/responses/BadRequestErrorResponse' "401": $ref: '#/components/responses/UnauthorizedErrorResponse' "403": $ref: '#/components/responses/ForbiddenErrorResponse' "404": $ref: '#/components/responses/NotFoundErrorResponse' "503": $ref: '#/components/responses/ServiceUnavailableErrorResponse' "5XX": $ref: '#/components/responses/ServerErrorResponse' summary: Update rows in a table tags: - Table - Data x-content-type: application/json x-accepts: - application/json /v1/table/{id}/delete: parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' post: description: | Delete rows from table `id`. operationId: DeleteFromTable parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' requestBody: content: application/json: schema: $ref: '#/components/schemas/DeleteFromTableRequest' description: Delete request required: true responses: "200": $ref: '#/components/responses/DeleteFromTableResponse' "400": $ref: '#/components/responses/BadRequestErrorResponse' "401": $ref: '#/components/responses/UnauthorizedErrorResponse' "403": $ref: '#/components/responses/ForbiddenErrorResponse' "404": $ref: '#/components/responses/NotFoundErrorResponse' "503": $ref: '#/components/responses/ServiceUnavailableErrorResponse' "5XX": $ref: '#/components/responses/ServerErrorResponse' summary: Delete rows from a table tags: - Table - Data x-content-type: application/json x-accepts: - application/json /v1/table/{id}/query: parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' post: description: | Query table `id` with vector search, full text search and optional SQL filtering. Returns results in Arrow IPC file or stream format. operationId: QueryTable parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' requestBody: content: application/json: schema: $ref: '#/components/schemas/QueryTableRequest' description: Query request required: true responses: "200": $ref: '#/components/responses/QueryTableResponse' "400": $ref: '#/components/responses/BadRequestErrorResponse' "401": $ref: '#/components/responses/UnauthorizedErrorResponse' "403": $ref: '#/components/responses/ForbiddenErrorResponse' "404": $ref: '#/components/responses/NotFoundErrorResponse' "503": $ref: '#/components/responses/ServiceUnavailableErrorResponse' "5XX": $ref: '#/components/responses/ServerErrorResponse' summary: Query a table tags: - Table - Data x-content-type: application/json x-accepts: - application/json - application/vnd.apache.arrow.file - application/vnd.apache.arrow.stream /v1/table/{id}/count_rows: parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' post: description: | Count the number of rows in table `id` operationId: CountTableRows parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' requestBody: content: application/json: schema: $ref: '#/components/schemas/CountTableRowsRequest' required: true responses: "200": $ref: '#/components/responses/CountTableRowsResponse' "400": $ref: '#/components/responses/BadRequestErrorResponse' "401": $ref: '#/components/responses/UnauthorizedErrorResponse' "403": $ref: '#/components/responses/ForbiddenErrorResponse' "404": $ref: '#/components/responses/NotFoundErrorResponse' "503": $ref: '#/components/responses/ServiceUnavailableErrorResponse' "5XX": $ref: '#/components/responses/ServerErrorResponse' summary: Count rows in a table tags: - Table - Data x-content-type: application/json x-accepts: - application/json /v1/table/{id}/create: parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' - description: URI pointing to root location to create the table at explode: false in: header name: x-lance-table-location required: false schema: type: string style: simple - description: | JSON-encoded string map (e.g. { "owner": "jack" }) explode: false in: header name: x-lance-table-properties required: false schema: type: string style: simple post: description: "Create table `id` in the namespace with the given data in Arrow\ \ IPC stream.\n\nThe schema of the Arrow IPC stream is used as the table schema.\ \ \nIf the stream is empty, the API creates a new empty table.\n\nREST\ \ NAMESPACE ONLY\nREST namespace uses Arrow IPC stream as the request body.\n\ It passes in the `CreateTableRequest` information in the following way:\n\ - `id`: pass through path parameter of the same name\n- `location`: pass through\ \ header `x-lance-table-location`\n- `properties`: pass through header `x-lance-table-properties`\n" operationId: CreateTable parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' - description: URI pointing to root location to create the table at explode: false in: header name: x-lance-table-location required: false schema: type: string style: simple - description: | JSON-encoded string map (e.g. { "owner": "jack" }) explode: false in: header name: x-lance-table-properties required: false schema: type: string style: simple requestBody: content: application/vnd.apache.arrow.stream: schema: format: binary type: string description: Arrow IPC data required: true responses: "200": $ref: '#/components/responses/CreateTableResponse' "400": $ref: '#/components/responses/BadRequestErrorResponse' "401": $ref: '#/components/responses/UnauthorizedErrorResponse' "403": $ref: '#/components/responses/ForbiddenErrorResponse' "404": $ref: '#/components/responses/NotFoundErrorResponse' "503": $ref: '#/components/responses/ServiceUnavailableErrorResponse' "5XX": $ref: '#/components/responses/ServerErrorResponse' summary: Create a table with the given name tags: - Table - Data x-content-type: application/vnd.apache.arrow.stream x-accepts: - application/json /v1/table/{id}/create_index: parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' post: description: "Create an index on a table column for faster search operations.\n\ Supports vector indexes (IVF_FLAT, IVF_HNSW_SQ, IVF_PQ, etc.) and scalar indexes\ \ (BTREE, BITMAP, FTS, etc.).\nIndex creation is handled asynchronously. \n\ Use the `ListTableIndices` and `DescribeTableIndexStats` operations to monitor\ \ index creation progress.\n" operationId: CreateTableIndex parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateTableIndexRequest' description: Index creation request required: true responses: "200": $ref: '#/components/responses/CreateTableIndexResponse' "400": $ref: '#/components/responses/BadRequestErrorResponse' "401": $ref: '#/components/responses/UnauthorizedErrorResponse' "403": $ref: '#/components/responses/ForbiddenErrorResponse' "404": $ref: '#/components/responses/NotFoundErrorResponse' "503": $ref: '#/components/responses/ServiceUnavailableErrorResponse' "5XX": $ref: '#/components/responses/ServerErrorResponse' summary: Create an index on a table tags: - Table - Index - Metadata x-content-type: application/json x-accepts: - application/json /v1/table/{id}/index/list: parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' post: description: | List all indices created on a table. Returns information about each index including name, columns, status, and UUID. operationId: ListTableIndices parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' requestBody: content: application/json: schema: $ref: '#/components/schemas/ListTableIndicesRequest' description: Index list request required: true responses: "200": $ref: '#/components/responses/ListTableIndicesResponse' "400": $ref: '#/components/responses/BadRequestErrorResponse' "401": $ref: '#/components/responses/UnauthorizedErrorResponse' "403": $ref: '#/components/responses/ForbiddenErrorResponse' "404": $ref: '#/components/responses/NotFoundErrorResponse' "503": $ref: '#/components/responses/ServiceUnavailableErrorResponse' "5XX": $ref: '#/components/responses/ServerErrorResponse' summary: List indexes on a table tags: - Table - Index - Metadata x-content-type: application/json x-accepts: - application/json /v1/table/{id}/index/{index_name}/stats: parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' - description: Name of the index to get stats for explode: false in: path name: index_name required: true schema: type: string style: simple post: description: | Get statistics for a specific index on a table. Returns information about the index type, distance type (for vector indices), and row counts. operationId: DescribeTableIndexStats parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' - description: Name of the index to get stats for explode: false in: path name: index_name required: true schema: type: string style: simple requestBody: content: application/json: schema: $ref: '#/components/schemas/DescribeTableIndexStatsRequest' description: Index stats request required: true responses: "200": $ref: '#/components/responses/DescribeTableIndexStatsResponse' "400": $ref: '#/components/responses/BadRequestErrorResponse' "401": $ref: '#/components/responses/UnauthorizedErrorResponse' "403": $ref: '#/components/responses/ForbiddenErrorResponse' "404": $ref: '#/components/responses/NotFoundErrorResponse' "503": $ref: '#/components/responses/ServiceUnavailableErrorResponse' "5XX": $ref: '#/components/responses/ServerErrorResponse' summary: Get table index statistics tags: - Table - Index - Metadata x-content-type: application/json x-accepts: - application/json /v1/transaction/{id}/describe: parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' post: description: | Return a detailed information for a given transaction operationId: DescribeTransaction parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' requestBody: content: application/json: schema: $ref: '#/components/schemas/DescribeTransactionRequest' required: true responses: "200": $ref: '#/components/responses/DescribeTransactionResponse' "400": $ref: '#/components/responses/BadRequestErrorResponse' "401": $ref: '#/components/responses/UnauthorizedErrorResponse' "403": $ref: '#/components/responses/ForbiddenErrorResponse' "404": $ref: '#/components/responses/NotFoundErrorResponse' "503": $ref: '#/components/responses/ServiceUnavailableErrorResponse' "5XX": $ref: '#/components/responses/ServerErrorResponse' summary: Describe information about a transaction tags: - Transaction - Metadata x-content-type: application/json x-accepts: - application/json /v1/transaction/{id}/alter: parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' post: description: | Alter a transaction with a list of actions such as setting status or properties. The server should either succeed and apply all actions, or fail and apply no action. operationId: AlterTransaction parameters: - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/delimiter' requestBody: content: application/json: schema: $ref: '#/components/schemas/AlterTransactionRequest' required: true responses: "200": $ref: '#/components/responses/AlterTransactionResponse' "400": $ref: '#/components/responses/BadRequestErrorResponse' "401": $ref: '#/components/responses/UnauthorizedErrorResponse' "403": $ref: '#/components/responses/ForbiddenErrorResponse' "404": $ref: '#/components/responses/NotFoundErrorResponse' "409": $ref: '#/components/responses/ConflictErrorResponse' "503": $ref: '#/components/responses/ServiceUnavailableErrorResponse' "5XX": $ref: '#/components/responses/ServerErrorResponse' summary: Alter information of a transaction. tags: - Transaction - Metadata x-content-type: application/json x-accepts: - application/json components: examples: ListNamespacesEmptyExample: summary: An empty list of namespaces value: namespaces: [] ListNamespacesNonEmptyExample: summary: A non-empty list of namespaces value: namespaces: - accounting - credits parameters: id: description: | `string identifier` of an object in a namespace, following the Lance Namespace spec. When the value is equal to the delimiter, it represents the root namespace. For example, `v1/namespace/./list` performs a `ListNamespace` on the root namespace. explode: false in: path name: id required: true schema: type: string style: simple delimiter: description: | An optional delimiter of the `string identifier`, following the Lance Namespace spec. When not specified, the `.` delimiter must be used. explode: true in: query name: delimiter required: false schema: $ref: '#/components/schemas/PageToken' style: form responses: ListNamespacesResponse: content: application/json: examples: NonEmptyResponse: $ref: '#/components/examples/ListNamespacesNonEmptyExample' EmptyResponse: $ref: '#/components/examples/ListNamespacesEmptyExample' schema: $ref: '#/components/schemas/ListNamespacesResponse' description: A list of namespaces DescribeNamespaceResponse: content: application/json: schema: $ref: '#/components/schemas/DescribeNamespaceResponse' description: "Returns a namespace, as well as any properties stored on the namespace\ \ if namespace properties are supported by the server." CreateNamespaceResponse: content: application/json: schema: $ref: '#/components/schemas/CreateNamespaceResponse' description: Result of creating a namespace DropNamespaceResponse: content: application/json: schema: $ref: '#/components/schemas/DropNamespaceResponse' description: Result of dropping a namespace ListTablesResponse: content: application/json: schema: $ref: '#/components/schemas/ListTablesResponse' description: A list of tables DescribeTableResponse: content: application/json: schema: $ref: '#/components/schemas/DescribeTableResponse' description: Table properties result when loading a table CountTableRowsResponse: content: application/json: schema: $ref: '#/components/schemas/CountTableRowsResponse' description: Result of counting rows in a table CreateTableResponse: content: application/json: schema: $ref: '#/components/schemas/CreateTableResponse' description: Table properties result when creating a table InsertIntoTableResponse: content: application/json: schema: $ref: '#/components/schemas/InsertIntoTableResponse' description: Result of inserting records into a table MergeInsertIntoTableResponse: content: application/json: schema: $ref: '#/components/schemas/MergeInsertIntoTableResponse' description: Result of merge insert operation RegisterTableResponse: content: application/json: schema: $ref: '#/components/schemas/RegisterTableResponse' description: Table properties result when registering a table DescribeTransactionResponse: content: application/json: schema: $ref: '#/components/schemas/DescribeTransactionResponse' description: Response of GetTransaction AlterTransactionResponse: content: application/json: schema: $ref: '#/components/schemas/AlterTransactionResponse' description: Response of AlterTransaction DropTableResponse: content: application/json: schema: $ref: '#/components/schemas/DropTableResponse' description: Response of DropTable DeregisterTableResponse: content: application/json: schema: $ref: '#/components/schemas/DeregisterTableResponse' description: Response of DeregisterTable UpdateTableResponse: content: application/json: schema: $ref: '#/components/schemas/UpdateTableResponse' description: Update successful DeleteFromTableResponse: content: application/json: schema: $ref: '#/components/schemas/DeleteFromTableResponse' description: Delete successful QueryTableResponse: content: application/vnd.apache.arrow.file: schema: format: binary type: string application/vnd.apache.arrow.stream: schema: format: binary type: string description: Query results in Arrow IPC file or stream format CreateTableIndexResponse: content: application/json: schema: $ref: '#/components/schemas/CreateTableIndexResponse' description: Index created successfully ListTableIndicesResponse: content: application/json: schema: $ref: '#/components/schemas/ListTableIndicesResponse' description: List of indices on the table DescribeTableIndexStatsResponse: content: application/json: schema: $ref: '#/components/schemas/DescribeTableIndexStatsResponse' description: Index statistics BadRequestErrorResponse: content: application/json: example: type: /errors/bad-request title: Malformed request status: 400 detail: "" instance: /v1/namespaces schema: $ref: '#/components/schemas/ErrorResponse' description: "Indicates a bad request error. It could be caused by an unexpected\ \ request body format or other forms of request validation failure, such as\ \ invalid json. Usually serves application/json content, although in some\ \ cases simple text/plain content might be returned by the server's middleware." UnauthorizedErrorResponse: content: application/json: example: type: /errors/unauthorized-request title: No valid authentication credentials for the operation status: 401 detail: "" instance: /v1/namespaces schema: $ref: '#/components/schemas/ErrorResponse' description: Unauthorized. The request lacks valid authentication credentials for the operation. ForbiddenErrorResponse: content: application/json: example: type: /errors/forbidden-request title: Not authorized to make this request status: 403 detail: "" instance: /v1/namespaces schema: $ref: '#/components/schemas/ErrorResponse' description: Forbidden. Authenticated user does not have the necessary permissions. NotFoundErrorResponse: content: application/json: example: type: /errors/not-found-error title: Not found Error status: 404 detail: "" instance: "/v1/namespaces/{ns}" schema: $ref: '#/components/schemas/ErrorResponse' description: A server-side problem that means can not find the specified resource. UnsupportedOperationErrorResponse: content: application/json: example: type: /errors/unsupported-operation title: The server does not support this operation status: 406 detail: "" instance: /v1/namespaces schema: $ref: '#/components/schemas/ErrorResponse' description: Not Acceptable / Unsupported Operation. The server does not support this operation. ConflictErrorResponse: content: application/json: example: type: /errors/conflict title: The namespace has been concurrently modified status: 409 detail: "" instance: "/v1/namespaces/{ns}" schema: $ref: '#/components/schemas/ErrorResponse' description: The request conflicts with the current state of the target resource. ServiceUnavailableErrorResponse: content: application/json: example: type: /errors/service-unavailable title: Slow down status: 503 detail: "" instance: /v1/namespaces schema: $ref: '#/components/schemas/ErrorResponse' description: The service is not ready to handle the request. The client should wait and retry. The service may additionally send a Retry-After header to indicate when to retry. ServerErrorResponse: content: application/json: example: type: /errors/server-error title: Internal Server Error status: 500 detail: "" instance: /v1/namespaces schema: $ref: '#/components/schemas/ErrorResponse' description: A server-side problem that might not be addressable from the client side. Used for server 5xx errors without more specific documentation in individual routes. schemas: ErrorResponse: description: Common JSON error response model example: code: 404 instance: /login/log/abc123 detail: Authentication failed due to incorrect username or password error: Incorrect username or password type: /errors/incorrect-user-pass properties: error: description: "a brief, human-readable message about the error" example: Incorrect username or password type: string code: description: "HTTP style response code, where 4XX represents client side\ \ errors \nand 5XX represents server side errors.\n\nFor implementations\ \ that uses HTTP (e.g. REST namespace),\nthis field can be optional in\ \ favor of the HTTP response status code.\nIn case both values exist and\ \ do not match, the HTTP response status code should be used.\n" example: 404 maximum: 600 minimum: 400 type: integer type: description: | An optional type identifier string for the error. This allows the implementation to specify their internal error type, which could be more detailed than the HTTP standard status code. example: /errors/incorrect-user-pass type: string detail: description: | an optional human-readable explanation of the error. This can be used to record information such as stack trace. example: Authentication failed due to incorrect username or password type: string instance: description: "a string that identifies the specific occurrence of the error.\n\ This can be a URI, a request or response ID, \nor anything that the implementation\ \ can recognize to trace specific occurrence of the error.\n" example: /login/log/abc123 type: string CreateNamespaceRequest: example: mode: CREATE id: - id - id properties: key: properties properties: id: items: type: string type: array mode: description: | There are three modes when trying to create a namespace, to differentiate the behavior when a namespace of the same name already exists: * CREATE: the operation fails with 400. * EXIST_OK: the operation succeeds and the existing namespace is kept. * OVERWRITE: the existing namespace is dropped and a new empty namespace with this name is created. enum: - CREATE - EXIST_OK - OVERWRITE type: string properties: additionalProperties: type: string CreateNamespaceResponse: example: properties: key: properties properties: properties: additionalProperties: type: string description: | Properties after the namespace is created. If the server does not support namespace properties, it should return null for this field. If namespace properties are supported, but none are set, it should return an empty object. ListNamespacesRequest: properties: id: items: type: string type: array page_token: description: "An opaque token that allows pagination for list operations\ \ (e.g. ListNamespaces).\n\nFor an initial request of a list operation,\ \ \nif the implementation cannot return all items in one response,\nor\ \ if there are more items than the page limit specified in the request,\n\ the implementation must return a page token in the response,\nindicating\ \ there are more results available.\n\nAfter the initial request, \nthe\ \ value of the page token from each response must be used\nas the page\ \ token value for the next request.\n\nCaller must interpret either `null`,\ \ \nmissing value or empty string value of the page token from\nthe implementation's\ \ response as the end of the listing results.\n" type: string nullable: true limit: description: "An inclusive upper bound of the \nnumber of results that a\ \ caller will receive.\n" type: integer nullable: true ListNamespacesResponse: example: page_token: page_token namespaces: - namespaces - namespaces properties: namespaces: description: | The list of names of the child namespaces relative to the parent namespace `id` in the request. items: type: string type: array uniqueItems: true page_token: description: "An opaque token that allows pagination for list operations\ \ (e.g. ListNamespaces).\n\nFor an initial request of a list operation,\ \ \nif the implementation cannot return all items in one response,\nor\ \ if there are more items than the page limit specified in the request,\n\ the implementation must return a page token in the response,\nindicating\ \ there are more results available.\n\nAfter the initial request, \nthe\ \ value of the page token from each response must be used\nas the page\ \ token value for the next request.\n\nCaller must interpret either `null`,\ \ \nmissing value or empty string value of the page token from\nthe implementation's\ \ response as the end of the listing results.\n" type: string nullable: true required: - namespaces DescribeNamespaceRequest: example: id: - id - id properties: id: items: type: string type: array DescribeNamespaceResponse: example: properties: owner: Ralph created_at: "1452120468" properties: properties: additionalProperties: type: string default: {} description: "Properties stored on the namespace, if supported by the server.\ \ If the server does not support namespace properties, it should return\ \ null for this field. If namespace properties are supported, but none\ \ are set, it should return an empty object." example: owner: Ralph created_at: "1452120468" nullable: true DropNamespaceRequest: example: mode: SKIP id: - id - id behavior: RESTRICT properties: id: items: type: string type: array mode: description: | The mode for dropping a namespace, deciding the server behavior when the namespace to drop is not found. - FAIL (default): the server must return 400 indicating the namespace to drop does not exist. - SKIP: the server must return 204 indicating the drop operation has succeeded. enum: - SKIP - FAIL type: string behavior: description: | The behavior for dropping a namespace. - RESTRICT (default): the namespace should not contain any table or child namespace when drop is initiated. If tables are found, the server should return error and not drop the namespace. - CASCADE: all tables and child namespaces in the namespace are dropped before the namespace is dropped. enum: - RESTRICT - CASCADE type: string DropNamespaceResponse: example: properties: key: properties transactionId: - transactionId - transactionId properties: properties: additionalProperties: type: string transactionId: description: | If present, indicating the operation is long running and should be tracked using GetTransaction items: type: string type: array NamespaceExistsRequest: example: id: - id - id properties: id: items: type: string type: array PageToken: description: "An opaque token that allows pagination for list operations (e.g.\ \ ListNamespaces).\n\nFor an initial request of a list operation, \nif the\ \ implementation cannot return all items in one response,\nor if there are\ \ more items than the page limit specified in the request,\nthe implementation\ \ must return a page token in the response,\nindicating there are more results\ \ available.\n\nAfter the initial request, \nthe value of the page token from\ \ each response must be used\nas the page token value for the next request.\n\ \nCaller must interpret either `null`, \nmissing value or empty string value\ \ of the page token from\nthe implementation's response as the end of the\ \ listing results.\n" type: string nullable: true PageLimit: description: "An inclusive upper bound of the \nnumber of results that a caller\ \ will receive.\n" type: integer nullable: true RegisterTableRequest: example: location: location id: - id - id properties: key: properties properties: id: items: type: string type: array location: type: string properties: additionalProperties: type: string required: - location RegisterTableResponse: example: location: location properties: key: properties properties: location: type: string properties: additionalProperties: type: string required: - location ListTablesRequest: properties: id: items: type: string type: array page_token: description: "An opaque token that allows pagination for list operations\ \ (e.g. ListNamespaces).\n\nFor an initial request of a list operation,\ \ \nif the implementation cannot return all items in one response,\nor\ \ if there are more items than the page limit specified in the request,\n\ the implementation must return a page token in the response,\nindicating\ \ there are more results available.\n\nAfter the initial request, \nthe\ \ value of the page token from each response must be used\nas the page\ \ token value for the next request.\n\nCaller must interpret either `null`,\ \ \nmissing value or empty string value of the page token from\nthe implementation's\ \ response as the end of the listing results.\n" type: string nullable: true limit: description: "An inclusive upper bound of the \nnumber of results that a\ \ caller will receive.\n" type: integer nullable: true ListTablesResponse: example: tables: - tables - tables page_token: page_token properties: tables: description: | The list of names of the tables relative to the parent namespace `id` in the request. items: type: string type: array uniqueItems: true page_token: description: "An opaque token that allows pagination for list operations\ \ (e.g. ListNamespaces).\n\nFor an initial request of a list operation,\ \ \nif the implementation cannot return all items in one response,\nor\ \ if there are more items than the page limit specified in the request,\n\ the implementation must return a page token in the response,\nindicating\ \ there are more results available.\n\nAfter the initial request, \nthe\ \ value of the page token from each response must be used\nas the page\ \ token value for the next request.\n\nCaller must interpret either `null`,\ \ \nmissing value or empty string value of the page token from\nthe implementation's\ \ response as the end of the listing results.\n" type: string nullable: true required: - tables DescribeTableRequest: example: id: - id - id version: 0 properties: id: items: type: string type: array version: description: | Version of the table to describe. If not specified, server should resolve it to the latest version. format: int64 minimum: 0 type: integer DescribeTableResponse: example: schema: metadata: key: metadata fields: - metadata: key: metadata nullable: true name: name type: length: 0 fields: - null - null type: type - metadata: key: metadata nullable: true name: name type: length: 0 fields: - null - null type: type location: location version: 0 properties: key: properties storage_options: key: storage_options properties: version: format: int64 minimum: 0 type: integer location: type: string schema: $ref: '#/components/schemas/JsonArrowSchema' properties: additionalProperties: type: string storage_options: additionalProperties: type: string description: | Configuration options to be used to access storage. The available options depend on the type of storage in use. These will be passed directly to Lance to initialize storage access. required: - schema - version CountTableRowsRequest: example: filter: filter id: - id - id version: 0 properties: id: items: type: string type: array version: description: | Version of the table to describe. If not specified, server should resolve it to the latest version. format: int64 minimum: 0 type: integer filter: description: | SQL filter expression to be applied type: string CountTableRowsResponse: description: "Response containing the count of rows. \nSerializes transparently\ \ as just the number for backward compatibility.\n" format: int64 minimum: 0 type: integer InsertIntoTableRequest: description: | Request for inserting records into a table, excluding the Arrow IPC stream. properties: id: items: type: string type: array mode: default: append enum: - append - overwrite type: string InsertIntoTableResponse: description: Response from inserting records into a table example: version: 0 properties: version: description: The version of the table after the insert format: int64 minimum: 0 type: integer MergeInsertIntoTableRequest: description: | Request for merging or inserting records into a table, excluding the Arrow IPC stream. properties: id: items: type: string type: array "on": description: Column name to use for matching rows (required) type: string when_matched_update_all: default: false description: Update all columns when rows match type: boolean when_matched_update_all_filt: description: The row is updated (similar to UpdateAll) only for rows where the SQL expression evaluates to true type: string when_not_matched_insert_all: default: false description: Insert all columns when rows don't match type: boolean when_not_matched_by_source_delete: default: false description: Delete all rows from target table that don't match a row in the source table type: boolean when_not_matched_by_source_delete_filt: description: Delete rows from the target table if there is no match AND the SQL expression evaluates to true type: string MergeInsertIntoTableResponse: description: Response from merge insert operation example: num_inserted_rows: 0 num_updated_rows: 0 num_deleted_rows: 0 version: 0 properties: num_updated_rows: description: Number of rows updated format: int64 minimum: 0 type: integer num_inserted_rows: description: Number of rows inserted format: int64 minimum: 0 type: integer num_deleted_rows: description: Number of rows deleted (typically 0 for merge insert) format: int64 minimum: 0 type: integer version: description: The commit version associated with the operation format: int64 minimum: 0 type: integer UpdateTableRequest: description: | Each update consists of a column name and an SQL expression that will be evaluated against the current row's value. Optionally, a predicate can be provided to filter which rows to update. example: predicate: predicate id: - id - id updates: - - updates - updates - - updates - updates properties: id: items: type: string type: array predicate: description: Optional SQL predicate to filter rows for update type: string nullable: true updates: description: "List of column updates as [column_name, expression] pairs" items: items: type: string maxItems: 2 minItems: 2 type: array type: array required: - updates UpdateTableResponse: example: updated_rows: 0 version: 0 properties: updated_rows: description: Number of rows updated format: int64 minimum: 0 type: integer version: description: The commit version associated with the operation format: int64 minimum: 0 type: integer required: - updated_rows - version DeleteFromTableRequest: description: | Delete data from table based on a SQL predicate. Returns the number of rows that were deleted. example: predicate: predicate id: - id - id properties: id: description: The namespace identifier items: type: string type: array predicate: description: SQL predicate to filter rows for deletion type: string required: - predicate DeleteFromTableResponse: example: version: 0 properties: version: description: The commit version associated with the operation format: int64 minimum: 0 type: integer required: - version QueryTableRequest: example: ef: 0 offset: 0 columns: - columns - columns vector_column: vector_column fast_search: true k: 0 upper_bound: 1.2315135 version: 0 with_row_id: true prefilter: true filter: filter refine_factor: 0 full_text_query: string_query: columns: - columns - columns query: query structured_query: query: boolean: must_not: - null - null should: - null - null must: - null - null phrase: terms: terms column: column slop: 0 match: fuzziness: 0 terms: terms column: column boost: 6.0274563 prefix_length: 0 operator: And max_expansions: 0 boost: negative: null negative_boost: 7.0614014 positive: null multi_match: match_queries: - fuzziness: 0 terms: terms column: column boost: 6.0274563 prefix_length: 0 operator: And max_expansions: 0 - fuzziness: 0 terms: terms column: column boost: 6.0274563 prefix_length: 0 operator: And max_expansions: 0 distance_type: distance_type lower_bound: 3.6160767 bypass_vector_index: true nprobes: 0 vector: single_vector: - 1.0246457 - 1.0246457 multi_vector: - - 1.4894159 - 1.4894159 - - 1.4894159 - 1.4894159 id: - id - id properties: id: items: type: string type: array bypass_vector_index: description: Whether to bypass vector index type: boolean columns: description: Optional list of columns to return items: type: string type: array nullable: true distance_type: description: Distance metric to use type: string ef: description: Search effort parameter for HNSW index minimum: 0 type: integer fast_search: description: Whether to use fast search type: boolean filter: description: Optional SQL filter expression type: string full_text_query: $ref: '#/components/schemas/QueryTableRequest_full_text_query' k: description: Number of results to return minimum: 0 type: integer lower_bound: description: Lower bound for search format: float type: number nprobes: description: Number of probes for IVF index minimum: 0 type: integer offset: description: Number of results to skip minimum: 0 type: integer prefilter: description: Whether to apply filtering before vector search type: boolean refine_factor: description: Refine factor for search format: int32 minimum: 0 type: integer upper_bound: description: Upper bound for search format: float type: number vector: $ref: '#/components/schemas/QueryTableRequest_vector' vector_column: description: Name of the vector column to search type: string version: description: Table version to query format: int64 minimum: 0 type: integer with_row_id: description: "If true, return the row id as a column called `_rowid`" type: boolean required: - k - vector CreateTableIndexRequest: example: with_position: true lower_case: true base_tokenizer: base_tokenizer column: column metric_type: l2 max_token_length: 0 ascii_folding: true language: language id: - id - id remove_stop_words: true index_type: BTREE stem: true properties: id: items: type: string type: array column: description: Name of the column to create index on type: string index_type: description: Type of index to create enum: - BTREE - BITMAP - LABEL_LIST - IVF_FLAT - IVF_PQ - IVF_HNSW_SQ - FTS type: string metric_type: description: Distance metric type for vector indexes enum: - l2 - cosine - dot type: string nullable: true with_position: description: Optional FTS parameter for position tracking type: boolean nullable: true base_tokenizer: description: Optional FTS parameter for base tokenizer type: string nullable: true language: description: Optional FTS parameter for language type: string nullable: true max_token_length: description: Optional FTS parameter for maximum token length minimum: 0 type: integer nullable: true lower_case: description: Optional FTS parameter for lowercase conversion type: boolean nullable: true stem: description: Optional FTS parameter for stemming type: boolean nullable: true remove_stop_words: description: Optional FTS parameter for stop word removal type: boolean nullable: true ascii_folding: description: Optional FTS parameter for ASCII folding type: boolean nullable: true required: - column - index_type CreateTableIndexResponse: example: location: location id: - id - id properties: key: properties properties: id: items: type: string type: array location: description: Table location (usually empty) type: string properties: additionalProperties: type: string description: Additional properties (usually empty) required: - location ListTableIndicesRequest: example: id: - id - id version: 0 properties: id: description: The namespace identifier items: type: string type: array version: description: Optional table version to list indexes from format: int64 minimum: 0 type: integer nullable: true ListTableIndicesResponse: example: indexes: - index_uuid: index_uuid columns: - columns - columns index_name: index_name status: status - index_uuid: index_uuid columns: - columns - columns index_name: index_name status: status properties: indexes: description: List of indexes on the table items: $ref: '#/components/schemas/IndexListItemResponse' type: array required: - indexes IndexListItemResponse: example: index_uuid: index_uuid columns: - columns - columns index_name: index_name status: status properties: index_name: description: Name of the index type: string index_uuid: description: Unique identifier for the index type: string columns: description: Columns covered by this index items: type: string type: array status: description: Current status of the index type: string required: - columns - index_name - index_uuid - status DescribeTableIndexStatsRequest: example: id: - id - id version: 0 index_name: index_name properties: id: items: type: string type: array version: description: Optional table version to get stats for format: int64 minimum: 0 type: integer nullable: true index_name: description: Name of the index type: string DescribeTableIndexStatsResponse: example: distance_type: distance_type num_unindexed_rows: 0 num_indexed_rows: 0 index_type: index_type properties: distance_type: description: Distance type for vector indexes type: string nullable: true index_type: description: Type of the index type: string nullable: true num_indexed_rows: description: Number of indexed rows format: int64 minimum: 0 type: integer nullable: true num_unindexed_rows: description: Number of unindexed rows format: int64 minimum: 0 type: integer nullable: true JsonArrowSchema: description: | JSON representation of a Apache Arrow schema. example: metadata: key: metadata fields: - metadata: key: metadata nullable: true name: name type: length: 0 fields: - null - null type: type - metadata: key: metadata nullable: true name: name type: length: 0 fields: - null - null type: type properties: fields: items: $ref: '#/components/schemas/JsonArrowField' type: array metadata: additionalProperties: type: string required: - fields JsonArrowField: description: | JSON representation of an Apache Arrow field. example: metadata: key: metadata nullable: true name: name type: length: 0 fields: - null - null type: type properties: metadata: additionalProperties: type: string name: type: string nullable: type: boolean type: $ref: '#/components/schemas/JsonDataType' required: - name - nullable - type JsonDataType: description: JSON representation of an Apache Arrow DataType example: length: 0 fields: - null - null type: type properties: fields: description: "Fields for complex types like Struct, Union, etc." items: $ref: '#/components/schemas/JsonArrowField' type: array length: description: Length for fixed-size types format: int64 minimum: 0 type: integer type: description: The data type name type: string required: - type Binary: format: binary type: string CreateTableRequest: description: | Request for creating a table, excluding the Arrow IPC stream. properties: id: items: type: string type: array location: type: string properties: additionalProperties: type: string CreateTableResponse: example: schema: metadata: key: metadata fields: - metadata: key: metadata nullable: true name: name type: length: 0 fields: - null - null type: type - metadata: key: metadata nullable: true name: name type: length: 0 fields: - null - null type: type location: location version: 0 properties: key: properties storage_options: key: storage_options properties: location: type: string version: format: int64 minimum: 0 type: integer schema: $ref: '#/components/schemas/JsonArrowSchema' properties: additionalProperties: type: string storage_options: additionalProperties: type: string description: | Configuration options to be used to access storage. The available options depend on the type of storage in use. These will be passed directly to Lance to initialize storage access. required: - location TableExistsRequest: example: id: - id - id version: 0 properties: id: items: type: string type: array version: description: | Version of the table to check existence. If not specified, server should resolve it to the latest version. format: int64 minimum: 0 type: integer TransactionStatus: enum: - QUEUED - RUNNING - SUCCEEDED - FAILED - CANCELED type: string DescribeTransactionRequest: example: id: - id - id properties: id: items: type: string type: array DescribeTransactionResponse: example: properties: key: properties status: QUEUED properties: status: $ref: '#/components/schemas/TransactionStatus' properties: additionalProperties: type: string required: - status AlterTransactionSetStatus: example: status: QUEUED properties: status: $ref: '#/components/schemas/TransactionStatus' AlterTransactionSetProperty: example: mode: OVERWRITE value: value key: key properties: key: type: string value: type: string mode: $ref: '#/components/schemas/SetPropertyMode' SetPropertyMode: description: | The behavior if the property key already exists. - OVERWRITE (default): overwrite the existing value with the provided value - FAIL: fail the entire operation - SKIP: keep the existing value and skip setting the provided value enum: - OVERWRITE - FAIL - SKIP type: string AlterTransactionUnsetProperty: example: mode: SKIP key: key properties: key: type: string mode: $ref: '#/components/schemas/UnsetPropertyMode' UnsetPropertyMode: description: | The behavior if the property key to unset does not exist. - SKIP (default): skip the property to unset - FAIL: fail the entire operation enum: - SKIP - FAIL type: string AlterTransactionAction: description: | A single action that could be performed to alter a transaction. This action holds the model definition for all types of specific actions models, this is to minimize difference and compatibility issue across codegen in different languages. When used, only one of the actions should be non-null for each action. If you would like to perform multiple actions, set a list of actions in the AlterTransactionRequest. example: setStatusAction: status: QUEUED unsetPropertyAction: mode: SKIP key: key setPropertyAction: mode: OVERWRITE value: value key: key properties: setStatusAction: $ref: '#/components/schemas/AlterTransactionSetStatus' setPropertyAction: $ref: '#/components/schemas/AlterTransactionSetProperty' unsetPropertyAction: $ref: '#/components/schemas/AlterTransactionUnsetProperty' AlterTransactionRequest: description: | Alter a transaction with a list of actions. The server should either succeed and apply all actions, or fail and apply no action. example: id: - id - id actions: - setStatusAction: status: QUEUED unsetPropertyAction: mode: SKIP key: key setPropertyAction: mode: OVERWRITE value: value key: key - setStatusAction: status: QUEUED unsetPropertyAction: mode: SKIP key: key setPropertyAction: mode: OVERWRITE value: value key: key properties: id: items: type: string type: array actions: items: $ref: '#/components/schemas/AlterTransactionAction' minItems: 1 type: array required: - actions AlterTransactionResponse: example: properties: key: properties status: QUEUED properties: status: $ref: '#/components/schemas/TransactionStatus' properties: additionalProperties: type: string required: - status DropTableRequest: description: | If the table and its data can be immediately deleted, return information of the deleted table. Otherwise, return a transaction ID that client can use to track deletion progress. example: id: - id - id properties: id: items: type: string type: array DropTableResponse: example: location: location id: - id - id properties: key: properties transactionId: - transactionId - transactionId properties: id: items: type: string type: array location: type: string properties: additionalProperties: type: string transactionId: description: | If present, indicating the operation is long running and should be tracked using GetTransaction items: type: string type: array DeregisterTableRequest: description: | The table content remains available in the storage. example: id: - id - id properties: id: items: type: string type: array DeregisterTableResponse: example: location: location id: - id - id properties: key: properties properties: id: items: type: string type: array location: type: string properties: additionalProperties: type: string StringFtsQuery: example: columns: - columns - columns query: query properties: columns: items: type: string type: array query: type: string required: - query StructuredFtsQuery: example: query: boolean: must_not: - null - null should: - null - null must: - null - null phrase: terms: terms column: column slop: 0 match: fuzziness: 0 terms: terms column: column boost: 6.0274563 prefix_length: 0 operator: And max_expansions: 0 boost: negative: null negative_boost: 7.0614014 positive: null multi_match: match_queries: - fuzziness: 0 terms: terms column: column boost: 6.0274563 prefix_length: 0 operator: And max_expansions: 0 - fuzziness: 0 terms: terms column: column boost: 6.0274563 prefix_length: 0 operator: And max_expansions: 0 properties: query: $ref: '#/components/schemas/FtsQuery' required: - query FtsQuery: description: | Full-text search query. Exactly one query type field must be provided. This structure follows the same pattern as AlterTransactionAction to minimize differences and compatibility issues across codegen in different languages. example: boolean: must_not: - null - null should: - null - null must: - null - null phrase: terms: terms column: column slop: 0 match: fuzziness: 0 terms: terms column: column boost: 6.0274563 prefix_length: 0 operator: And max_expansions: 0 boost: negative: null negative_boost: 7.0614014 positive: null multi_match: match_queries: - fuzziness: 0 terms: terms column: column boost: 6.0274563 prefix_length: 0 operator: And max_expansions: 0 - fuzziness: 0 terms: terms column: column boost: 6.0274563 prefix_length: 0 operator: And max_expansions: 0 properties: match: $ref: '#/components/schemas/MatchQuery' phrase: $ref: '#/components/schemas/PhraseQuery' boost: $ref: '#/components/schemas/BoostQuery' multi_match: $ref: '#/components/schemas/MultiMatchQuery' boolean: $ref: '#/components/schemas/BooleanQuery' MatchQuery: example: fuzziness: 0 terms: terms column: column boost: 6.0274563 prefix_length: 0 operator: And max_expansions: 0 properties: boost: format: float type: number column: type: string fuzziness: format: int32 minimum: 0 type: integer max_expansions: description: |- The maximum number of terms to expand for fuzzy matching. Default to 50. minimum: 0 type: integer operator: $ref: '#/components/schemas/Operator' prefix_length: description: |- The number of beginning characters being unchanged for fuzzy matching. Default to 0. format: int32 minimum: 0 type: integer terms: type: string required: - column - terms PhraseQuery: example: terms: terms column: column slop: 0 properties: column: type: string slop: format: int32 minimum: 0 type: integer terms: type: string required: - terms BoostQuery: description: Boost query that scores documents matching positive query higher and negative query lower example: negative: null negative_boost: 7.0614014 positive: null properties: positive: $ref: '#/components/schemas/FtsQuery' negative: $ref: '#/components/schemas/FtsQuery' negative_boost: default: 0.5 description: "Boost factor for negative query (default: 0.5)" format: float type: number required: - negative - positive MultiMatchQuery: example: match_queries: - fuzziness: 0 terms: terms column: column boost: 6.0274563 prefix_length: 0 operator: And max_expansions: 0 - fuzziness: 0 terms: terms column: column boost: 6.0274563 prefix_length: 0 operator: And max_expansions: 0 properties: match_queries: items: $ref: '#/components/schemas/MatchQuery' type: array required: - match_queries BooleanQuery: description: "Boolean query with must, should, and must_not clauses" example: must_not: - null - null should: - null - null must: - null - null properties: must: description: Queries that must match (AND) items: $ref: '#/components/schemas/FtsQuery' type: array must_not: description: Queries that must not match (NOT) items: $ref: '#/components/schemas/FtsQuery' type: array should: description: Queries that should match (OR) items: $ref: '#/components/schemas/FtsQuery' type: array required: - must - must_not - should Operator: enum: - And - Or type: string QueryTableRequest_full_text_query: description: "Optional full-text search query. Provide either string_query or\ \ structured_query, not both." example: string_query: columns: - columns - columns query: query structured_query: query: boolean: must_not: - null - null should: - null - null must: - null - null phrase: terms: terms column: column slop: 0 match: fuzziness: 0 terms: terms column: column boost: 6.0274563 prefix_length: 0 operator: And max_expansions: 0 boost: negative: null negative_boost: 7.0614014 positive: null multi_match: match_queries: - fuzziness: 0 terms: terms column: column boost: 6.0274563 prefix_length: 0 operator: And max_expansions: 0 - fuzziness: 0 terms: terms column: column boost: 6.0274563 prefix_length: 0 operator: And max_expansions: 0 properties: string_query: $ref: '#/components/schemas/StringFtsQuery' structured_query: $ref: '#/components/schemas/StructuredFtsQuery' nullable: true QueryTableRequest_vector: description: "Query vector(s) for similarity search. Provide either single_vector\ \ or multi_vector, not both." example: single_vector: - 1.0246457 - 1.0246457 multi_vector: - - 1.4894159 - 1.4894159 - - 1.4894159 - 1.4894159 properties: single_vector: description: Single query vector items: format: float type: number type: array multi_vector: description: Multiple query vectors for batch search items: items: format: float type: number type: array type: array nullable: true