diff --git a/docs/api-reference/rest/openapi.yml b/docs/api-reference/rest/openapi.yml index 0e0dbfc..fb5890e 100644 --- a/docs/api-reference/rest/openapi.yml +++ b/docs/api-reference/rest/openapi.yml @@ -20,12 +20,12 @@ info: version: 1.0.0 description: | This OpenAPI specification is a part of the Lance namespace specification. It contains 2 parts: - + The `components/schemas`, `components/responses`, `components/examples`, `tags` sections define the request and response shape for each operation in a Lance Namespace across all implementations. See https://lance.org/format/namespace/operations for more details. - - The `servers`, `security`, `paths`, `components/parameters` sections are for the + + The `servers`, `security`, `paths`, `components/parameters` sections are for the Lance REST Namespace implementation, which defines a complete REST server that can work with Lance datasets. See https://lance.org/format/namespace/rest for more details. servers: @@ -79,13 +79,12 @@ security: - ApiKeyAuth: [] paths: - # Namespace APIs /v1/namespace/{id}/create: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Namespace @@ -94,42 +93,42 @@ paths: operationId: CreateNamespace description: | Create new namespace `id`. - - During the creation process, the implementation may modify user-provided `properties`, - such as adding additional properties like `created_at` to user-provided properties, + + During the creation process, the implementation may modify user-provided `properties`, + such as adding additional properties like `created_at` to user-provided properties, omitting any specific property, or performing actions based on any property value. requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/CreateNamespaceRequest' + $ref: "#/components/schemas/CreateNamespaceRequest" responses: 200: - $ref: '#/components/responses/CreateNamespaceResponse' + $ref: "#/components/responses/CreateNamespaceResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 406: - $ref: '#/components/responses/UnsupportedOperationErrorResponse' + $ref: "#/components/responses/UnsupportedOperationErrorResponse" 409: - $ref: '#/components/responses/ConflictErrorResponse' + $ref: "#/components/responses/ConflictErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/namespace/{id}/list: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' - - $ref: '#/components/parameters/page_token' - - $ref: '#/components/parameters/limit' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" + - $ref: "#/components/parameters/page_token" + - $ref: "#/components/parameters/limit" get: tags: - Namespace @@ -138,7 +137,7 @@ paths: operationId: ListNamespaces 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: @@ -147,26 +146,26 @@ paths: - `limit`: pass through query parameter of the same name responses: 200: - $ref: '#/components/responses/ListNamespacesResponse' + $ref: "#/components/responses/ListNamespacesResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 406: - $ref: '#/components/responses/UnsupportedOperationErrorResponse' + $ref: "#/components/responses/UnsupportedOperationErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/namespace/{id}/describe: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Namespace @@ -180,27 +179,27 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DescribeNamespaceRequest' + $ref: "#/components/schemas/DescribeNamespaceRequest" responses: 200: - $ref: '#/components/responses/DescribeNamespaceResponse' + $ref: "#/components/responses/DescribeNamespaceResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/namespace/{id}/drop: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Namespace @@ -214,29 +213,29 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DropNamespaceRequest' + $ref: "#/components/schemas/DropNamespaceRequest" responses: 200: - $ref: '#/components/responses/DropNamespaceResponse' + $ref: "#/components/responses/DropNamespaceResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 409: - $ref: '#/components/responses/ConflictErrorResponse' + $ref: "#/components/responses/ConflictErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/namespace/{id}/exists: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Namespace @@ -245,37 +244,37 @@ paths: operationId: NamespaceExists description: | Check if namespace `id` exists. - - This operation must behave exactly like the DescribeNamespace API, + + This operation must behave exactly like the DescribeNamespace API, except it does not contain a response body. requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/NamespaceExistsRequest' + $ref: "#/components/schemas/NamespaceExistsRequest" responses: 200: description: Success, no content 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/namespace/{id}/table/list: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' - - $ref: '#/components/parameters/page_token' - - $ref: '#/components/parameters/limit' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" + - $ref: "#/components/parameters/page_token" + - $ref: "#/components/parameters/limit" get: tags: - Namespace @@ -285,7 +284,7 @@ paths: operationId: ListTables 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: @@ -294,21 +293,21 @@ paths: - `limit`: pass through query parameter of the same name responses: 200: - $ref: '#/components/responses/ListTablesResponse' + $ref: "#/components/responses/ListTablesResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 406: - $ref: '#/components/responses/UnsupportedOperationErrorResponse' + $ref: "#/components/responses/UnsupportedOperationErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" # Table Metadata APIs @@ -328,27 +327,27 @@ paths: - `limit`: pass through query parameter of the same name - `delimiter`: pass through query parameter of the same name parameters: - - $ref: '#/components/parameters/delimiter' - - $ref: '#/components/parameters/page_token' - - $ref: '#/components/parameters/limit' + - $ref: "#/components/parameters/delimiter" + - $ref: "#/components/parameters/page_token" + - $ref: "#/components/parameters/limit" responses: 200: - $ref: '#/components/responses/ListTablesResponse' + $ref: "#/components/responses/ListTablesResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/register: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Table @@ -362,33 +361,33 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/RegisterTableRequest' + $ref: "#/components/schemas/RegisterTableRequest" responses: 200: - $ref: '#/components/responses/RegisterTableResponse' + $ref: "#/components/responses/RegisterTableResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 406: - $ref: '#/components/responses/UnsupportedOperationErrorResponse' + $ref: "#/components/responses/UnsupportedOperationErrorResponse" 409: - $ref: '#/components/responses/ConflictErrorResponse' + $ref: "#/components/responses/ConflictErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/describe: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' - - $ref: '#/components/parameters/with_table_uri' - - $ref: '#/components/parameters/load_detailed_metadata' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" + - $ref: "#/components/parameters/with_table_uri" + - $ref: "#/components/parameters/load_detailed_metadata" post: tags: - Table @@ -405,27 +404,27 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DescribeTableRequest' + $ref: "#/components/schemas/DescribeTableRequest" responses: 200: - $ref: '#/components/responses/DescribeTableResponse' + $ref: "#/components/responses/DescribeTableResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/exists: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Table @@ -434,10 +433,10 @@ paths: operationId: TableExists description: | Check if table `id` exists. - - This operation should behave exactly like DescribeTable, + + This operation should behave exactly like DescribeTable, except it does not contain a response body. - + For DirectoryNamespace implementation, a table exists if either: - The table has Lance data versions (regular table created with CreateTable) - A `.lance-reserved` file exists in the table directory (declared table created with DeclareTable) @@ -446,27 +445,27 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/TableExistsRequest' + $ref: "#/components/schemas/TableExistsRequest" responses: 200: description: Success, no content 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/drop: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Table @@ -482,24 +481,24 @@ paths: - `id`: pass through path parameter of the same name responses: 200: - $ref: '#/components/responses/DropTableResponse' + $ref: "#/components/responses/DropTableResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/deregister: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Table @@ -513,27 +512,27 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DeregisterTableRequest' + $ref: "#/components/schemas/DeregisterTableRequest" responses: 200: - $ref: '#/components/responses/DeregisterTableResponse' + $ref: "#/components/responses/DeregisterTableResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/restore: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Table @@ -547,27 +546,27 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/RestoreTableRequest' + $ref: "#/components/schemas/RestoreTableRequest" responses: 200: - $ref: '#/components/responses/RestoreTableResponse' + $ref: "#/components/responses/RestoreTableResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/rename: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Table @@ -581,29 +580,29 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/RenameTableRequest' + $ref: "#/components/schemas/RenameTableRequest" responses: 200: - $ref: '#/components/responses/RenameTableResponse' + $ref: "#/components/responses/RenameTableResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 409: - $ref: '#/components/responses/ConflictErrorResponse' + $ref: "#/components/responses/ConflictErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/schema_metadata/update: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Table @@ -636,24 +635,32 @@ paths: type: string description: The updated schema metadata 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/version/list: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' - - $ref: '#/components/parameters/page_token' - - $ref: '#/components/parameters/limit' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" + - $ref: "#/components/parameters/page_token" + - $ref: "#/components/parameters/limit" + - name: descending + in: query + description: | + When true, versions are guaranteed to be returned in descending order (latest to oldest). + When false or not specified, the ordering is implementation-defined. + required: false + schema: + type: boolean post: tags: - Table @@ -663,32 +670,193 @@ paths: description: | List all versions (commits) of table `id` with their metadata. + Use `descending=true` to guarantee versions are returned in descending order (latest to oldest). + Otherwise, the ordering is implementation-defined. + REST NAMESPACE ONLY REST namespace does not use a request body for this operation. The `ListTableVersionsRequest` information is passed 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 + - `descending`: pass through query parameter of the same name + responses: + 200: + $ref: "#/components/responses/ListTableVersionsResponse" + 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" + + /v1/table/{id}/version/create: + parameters: + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" + post: + tags: + - Table + - Metadata + summary: Create a new table version + operationId: CreateTableVersion + description: | + Create a new version entry for table `id`. + + This operation supports `put_if_not_exists` semantics. + The operation will fail with 409 Conflict if the version already exists. + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/CreateTableVersionRequest" + responses: + 200: + $ref: "#/components/responses/CreateTableVersionResponse" + 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" + + /v1/table/{id}/version/describe: + parameters: + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" + post: + tags: + - Table + - Metadata + summary: Describe a specific table version + operationId: DescribeTableVersion + description: | + Describe the detailed information for a specific version of table `id`. + + Returns the manifest path and metadata for the specified version. + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/DescribeTableVersionRequest" responses: 200: - $ref: '#/components/responses/ListTableVersionsResponse' + $ref: "#/components/responses/DescribeTableVersionResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" + + /v1/table/{id}/version/delete: + parameters: + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" + post: + tags: + - Table + - Metadata + summary: Delete table version records + operationId: BatchDeleteTableVersions + description: | + Delete version metadata records for table `id`. + + This operation deletes version tracking records, NOT the actual table data. + It supports deleting ranges of versions for efficient bulk cleanup. + + Special range values: + - `start_version: 0` with `end_version: -1` means delete ALL version records + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/BatchDeleteTableVersionsRequest" + responses: + 200: + $ref: "#/components/responses/BatchDeleteTableVersionsResponse" + 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" + + /v1/table/version/batch-create: + parameters: + - $ref: "#/components/parameters/delimiter" + post: + tags: + - Table + - Metadata + summary: Atomically create versions for multiple tables + operationId: BatchCreateTableVersions + description: | + Atomically create new version entries for multiple tables. + + This operation is atomic: either all table versions are created successfully, + or none are created. If any version creation fails (e.g., due to conflict), + the entire batch operation fails. + + Each entry in the request specifies the table identifier and version details. + This supports `put_if_not_exists` semantics for each version entry. + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/BatchCreateTableVersionsRequest" + responses: + 200: + $ref: "#/components/responses/BatchCreateTableVersionsResponse" + 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" /v1/table/{id}/alter_columns: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Table @@ -702,27 +870,27 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AlterTableAlterColumnsRequest' + $ref: "#/components/schemas/AlterTableAlterColumnsRequest" responses: 200: - $ref: '#/components/responses/AlterTableAlterColumnsResponse' + $ref: "#/components/responses/AlterTableAlterColumnsResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/drop_columns: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Table @@ -736,27 +904,27 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AlterTableDropColumnsRequest' + $ref: "#/components/schemas/AlterTableDropColumnsRequest" responses: 200: - $ref: '#/components/responses/AlterTableDropColumnsResponse' + $ref: "#/components/responses/AlterTableDropColumnsResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/stats: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Table @@ -770,29 +938,29 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetTableStatsRequest' + $ref: "#/components/schemas/GetTableStatsRequest" responses: 200: - $ref: '#/components/responses/GetTableStatsResponse' + $ref: "#/components/responses/GetTableStatsResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" # Table Data APIs /v1/table/{id}/insert: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" - name: mode in: query description: | @@ -811,7 +979,7 @@ paths: operationId: InsertIntoTable 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: @@ -827,24 +995,24 @@ paths: required: true responses: 200: - $ref: '#/components/responses/InsertIntoTableResponse' + $ref: "#/components/responses/InsertIntoTableResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/merge_insert: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" - name: "on" in: query description: Column name to use for matching rows (required) @@ -907,7 +1075,7 @@ paths: 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: @@ -928,24 +1096,24 @@ paths: required: true responses: 200: - $ref: '#/components/responses/MergeInsertIntoTableResponse' + $ref: "#/components/responses/MergeInsertIntoTableResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/update: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Table @@ -959,28 +1127,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/UpdateTableRequest' + $ref: "#/components/schemas/UpdateTableRequest" required: true responses: 200: - $ref: '#/components/responses/UpdateTableResponse' + $ref: "#/components/responses/UpdateTableResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/delete: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Table @@ -994,28 +1162,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DeleteFromTableRequest' + $ref: "#/components/schemas/DeleteFromTableRequest" required: true responses: 200: - $ref: '#/components/responses/DeleteFromTableResponse' + $ref: "#/components/responses/DeleteFromTableResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/query: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Table @@ -1034,28 +1202,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/QueryTableRequest' + $ref: "#/components/schemas/QueryTableRequest" required: true responses: 200: - $ref: '#/components/responses/QueryTableResponse' + $ref: "#/components/responses/QueryTableResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/count_rows: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Table @@ -1073,27 +1241,27 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CountTableRowsRequest' + $ref: "#/components/schemas/CountTableRowsRequest" responses: 200: - $ref: '#/components/responses/CountTableRowsResponse' + $ref: "#/components/responses/CountTableRowsResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/create: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" - name: "mode" in: query required: false @@ -1126,24 +1294,24 @@ paths: required: true responses: 200: - $ref: '#/components/responses/CreateTableResponse' + $ref: "#/components/responses/CreateTableResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/explain_plan: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Table @@ -1162,27 +1330,27 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ExplainTableQueryPlanRequest' + $ref: "#/components/schemas/ExplainTableQueryPlanRequest" responses: 200: - $ref: '#/components/responses/ExplainTableQueryPlanResponse' + $ref: "#/components/responses/ExplainTableQueryPlanResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/analyze_plan: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Table @@ -1201,27 +1369,27 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AnalyzeTableQueryPlanRequest' + $ref: "#/components/schemas/AnalyzeTableQueryPlanRequest" responses: 200: - $ref: '#/components/responses/AnalyzeTableQueryPlanResponse' + $ref: "#/components/responses/AnalyzeTableQueryPlanResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/add_columns: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Table @@ -1235,29 +1403,29 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AlterTableAddColumnsRequest' + $ref: "#/components/schemas/AlterTableAddColumnsRequest" responses: 200: - $ref: '#/components/responses/AlterTableAddColumnsResponse' + $ref: "#/components/responses/AlterTableAddColumnsResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" # Table Index APIs /v1/table/{id}/create_index: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Table @@ -1268,35 +1436,35 @@ paths: description: | Create an index on a table column for faster search operations. Supports vector indexes (IVF_FLAT, IVF_HNSW_SQ, IVF_PQ, etc.) and scalar indexes (BTREE, BITMAP, FTS, etc.). - Index creation is handled asynchronously. + Index creation is handled asynchronously. Use the `ListTableIndices` and `DescribeTableIndexStats` operations to monitor index creation progress. requestBody: description: Index creation request content: application/json: schema: - $ref: '#/components/schemas/CreateTableIndexRequest' + $ref: "#/components/schemas/CreateTableIndexRequest" required: true responses: 200: - $ref: '#/components/responses/CreateTableIndexResponse' + $ref: "#/components/responses/CreateTableIndexResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/create_scalar_index: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Table @@ -1315,28 +1483,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CreateTableIndexRequest' + $ref: "#/components/schemas/CreateTableIndexRequest" required: true responses: 200: - $ref: '#/components/responses/CreateTableScalarIndexResponse' + $ref: "#/components/responses/CreateTableScalarIndexResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/index/list: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Table @@ -1352,28 +1520,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ListTableIndicesRequest' + $ref: "#/components/schemas/ListTableIndicesRequest" required: true responses: 200: - $ref: '#/components/responses/ListTableIndicesResponse' + $ref: "#/components/responses/ListTableIndicesResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/index/{index_name}/stats: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" - name: index_name in: path description: Name of the index to get stats for @@ -1395,28 +1563,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DescribeTableIndexStatsRequest' + $ref: "#/components/schemas/DescribeTableIndexStatsRequest" required: true responses: 200: - $ref: '#/components/responses/DescribeTableIndexStatsResponse' + $ref: "#/components/responses/DescribeTableIndexStatsResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/index/{index_name}/drop: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" - name: index_name in: path description: Name of the index to drop @@ -1440,28 +1608,28 @@ paths: - `index_name`: pass through path parameter of the same name responses: 200: - $ref: '#/components/responses/DropTableIndexResponse' + $ref: "#/components/responses/DropTableIndexResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" # Table Tag APIs /v1/table/{id}/tags/list: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' - - $ref: '#/components/parameters/page_token' - - $ref: '#/components/parameters/limit' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" + - $ref: "#/components/parameters/page_token" + - $ref: "#/components/parameters/limit" post: tags: - Table @@ -1481,24 +1649,24 @@ paths: - `limit`: pass through query parameter of the same name responses: 200: - $ref: '#/components/responses/ListTableTagsResponse' + $ref: "#/components/responses/ListTableTagsResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/tags/version: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Table @@ -1513,27 +1681,27 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetTableTagVersionRequest' + $ref: "#/components/schemas/GetTableTagVersionRequest" responses: 200: - $ref: '#/components/responses/GetTableTagVersionResponse' + $ref: "#/components/responses/GetTableTagVersionResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/declare: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Table @@ -1551,29 +1719,29 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DeclareTableRequest' + $ref: "#/components/schemas/DeclareTableRequest" responses: 200: - $ref: '#/components/responses/DeclareTableResponse' + $ref: "#/components/responses/DeclareTableResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 409: - $ref: '#/components/responses/ConflictErrorResponse' + $ref: "#/components/responses/ConflictErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/create-empty: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Table @@ -1594,29 +1762,29 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CreateEmptyTableRequest' + $ref: "#/components/schemas/CreateEmptyTableRequest" responses: 200: - $ref: '#/components/responses/CreateEmptyTableResponse' + $ref: "#/components/responses/CreateEmptyTableResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 409: - $ref: '#/components/responses/ConflictErrorResponse' + $ref: "#/components/responses/ConflictErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/tags/create: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Table @@ -1631,29 +1799,29 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CreateTableTagRequest' + $ref: "#/components/schemas/CreateTableTagRequest" responses: 200: - $ref: '#/components/responses/CreateTableTagResponse' + $ref: "#/components/responses/CreateTableTagResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 409: - $ref: '#/components/responses/ConflictErrorResponse' + $ref: "#/components/responses/ConflictErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/tags/delete: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Table @@ -1668,27 +1836,27 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DeleteTableTagRequest' + $ref: "#/components/schemas/DeleteTableTagRequest" responses: 200: - $ref: '#/components/responses/DeleteTableTagResponse' + $ref: "#/components/responses/DeleteTableTagResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/table/{id}/tags/update: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Table @@ -1703,29 +1871,29 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/UpdateTableTagRequest' + $ref: "#/components/schemas/UpdateTableTagRequest" responses: 200: - $ref: '#/components/responses/UpdateTableTagResponse' + $ref: "#/components/responses/UpdateTableTagResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" # Transaction API /v1/transaction/{id}/describe: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Transaction @@ -1739,27 +1907,27 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DescribeTransactionRequest' + $ref: "#/components/schemas/DescribeTransactionRequest" responses: 200: - $ref: '#/components/responses/DescribeTransactionResponse' + $ref: "#/components/responses/DescribeTransactionResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" /v1/transaction/{id}/alter: parameters: - - $ref: '#/components/parameters/id' - - $ref: '#/components/parameters/delimiter' + - $ref: "#/components/parameters/id" + - $ref: "#/components/parameters/delimiter" post: tags: - Transaction @@ -1774,24 +1942,24 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AlterTransactionRequest' + $ref: "#/components/schemas/AlterTransactionRequest" responses: 200: - $ref: '#/components/responses/AlterTransactionResponse' + $ref: "#/components/responses/AlterTransactionResponse" 400: - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: "#/components/responses/BadRequestErrorResponse" 401: - $ref: '#/components/responses/UnauthorizedErrorResponse' + $ref: "#/components/responses/UnauthorizedErrorResponse" 403: - $ref: '#/components/responses/ForbiddenErrorResponse' + $ref: "#/components/responses/ForbiddenErrorResponse" 404: - $ref: '#/components/responses/NotFoundErrorResponse' + $ref: "#/components/responses/NotFoundErrorResponse" 409: - $ref: '#/components/responses/ConflictErrorResponse' + $ref: "#/components/responses/ConflictErrorResponse" 503: - $ref: '#/components/responses/ServiceUnavailableErrorResponse' + $ref: "#/components/responses/ServiceUnavailableErrorResponse" 5XX: - $ref: '#/components/responses/ServerErrorResponse' + $ref: "#/components/responses/ServerErrorResponse" components: parameters: @@ -1820,14 +1988,14 @@ components: in: query required: false schema: - $ref: '#/components/schemas/PageToken' + $ref: "#/components/schemas/PageToken" limit: name: limit description: Maximum number of items to return in: query required: false schema: - $ref: '#/components/schemas/PageLimit' + $ref: "#/components/schemas/PageLimit" with_table_uri: name: with_table_uri description: Whether to include the table URI in the response @@ -1940,9 +2108,9 @@ components: type: object properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -1958,6 +2126,8 @@ components: * Overwrite: the existing namespace is dropped and a new empty namespace with this name is created. properties: type: object + description: | + Properties stored on the namespace, if supported by the implementation. additionalProperties: type: string @@ -1981,9 +2151,9 @@ components: type: object properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -2012,9 +2182,9 @@ components: type: object properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -2031,17 +2201,17 @@ components: If namespace properties are supported, but none are set, it should return an empty object. additionalProperties: type: string - example: { "owner": "Ralph", 'created_at': '1452120468' } - default: { } + example: { "owner": "Ralph", "created_at": "1452120468" } + default: {} nullable: true DropNamespaceRequest: type: object properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -2067,6 +2237,8 @@ components: properties: properties: type: object + description: | + If the implementation does not support namespace properties, it should return null for this field. Otherwise it should return the properties. additionalProperties: type: string transaction_id: @@ -2080,9 +2252,9 @@ components: type: object properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -2091,18 +2263,18 @@ components: PageToken: description: | An opaque token that allows pagination for list operations (e.g. ListNamespaces). - - For an initial request of a list operation, + + For an initial request of a list operation, if the implementation cannot return all items in one response, or if there are more items than the page limit specified in the request, the implementation must return a page token in the response, indicating there are more results available. - - After the initial request, + + After the initial request, the value of the page token from each response must be used as the page token value for the next request. - - Caller must interpret either `null`, + + Caller must interpret either `null`, missing value or empty string value of the page token from the implementation's response as the end of the listing results. type: string @@ -2110,7 +2282,7 @@ components: PageLimit: description: | - An inclusive upper bound of the + An inclusive upper bound of the number of results that a caller will receive. type: integer nullable: true @@ -2121,9 +2293,9 @@ components: - location properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -2140,6 +2312,8 @@ components: * Overwrite: the existing table registration is replaced with the new registration. properties: type: object + description: | + Properties stored on the table, if supported by the implementation. additionalProperties: type: string @@ -2153,6 +2327,8 @@ components: type: string properties: type: object + description: | + If the implementation does not support table properties, it should return null for this field. Otherwise, it should return the properties. additionalProperties: type: string @@ -2160,9 +2336,9 @@ components: type: object properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -2193,9 +2369,9 @@ components: type: object properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -2260,7 +2436,7 @@ components: Table URI. Unlike location, this field must be a complete and valid URI. Only returned when `with_table_uri` is true. schema: - $ref: '#/components/schemas/JsonArrowSchema' + $ref: "#/components/schemas/JsonArrowSchema" description: | Table schema in JSON Arrow format. Only populated when `load_detailed_metadata` is true. @@ -2276,7 +2452,7 @@ components: additionalProperties: type: string stats: - $ref: '#/components/schemas/TableBasicStats' + $ref: "#/components/schemas/TableBasicStats" nullable: true description: | Table statistics. @@ -2284,9 +2460,29 @@ components: metadata: type: object description: | - Optional table metadata as key-value pairs. + Optional table metadata as key-value pairs. This records the information of the table + and requires loading the table. + It is only populated when `load_detailed_metadata` is true. additionalProperties: type: string + properties: + type: object + description: + Properties stored on the table, if supported by the server. This records the + information managed by the namespace. + If the server does not support table properties, it should return null for this field. + If table properties are supported, but none are set, it should return an empty object. + additionalProperties: + type: string + example: { "owner": "Ralph", "created_at": "1452120468" } + default: {} + nullable: true + managed_versioning: + type: boolean + description: | + When true, the caller should use namespace table version operations + (CreateTableVersion, BatchCreateTableVersions, DescribeTableVersion, ListTableVersions, BatchDeleteTableVersions) + to manage table versions instead of relying on Lance's native version management. TableBasicStats: type: object @@ -2307,9 +2503,9 @@ components: type: object properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -2330,7 +2526,7 @@ components: type: integer format: int64 description: | - Response containing the count of rows. + Response containing the count of rows. Serializes transparently as just the number for backward compatibility. minimum: 0 @@ -2340,9 +2536,9 @@ components: Request for inserting records into a table, excluding the Arrow IPC stream. properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -2369,9 +2565,9 @@ components: Request for merging or inserting records into a table, excluding the Arrow IPC stream. properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -2443,9 +2639,9 @@ components: - updates properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -2463,6 +2659,12 @@ components: items: type: string description: List of column updates as [column_name, expression] pairs + properties: + type: object + description: | + Properties stored on the table, if supported by the implementation. + additionalProperties: + type: string UpdateTableResponse: type: object @@ -2483,6 +2685,12 @@ components: format: int64 description: The commit version associated with the operation minimum: 0 + properties: + type: object + description: | + If the implementation does not support table properties, it should return null for this field. Otherwise, it should return the properties. + additionalProperties: + type: string DeleteFromTableRequest: type: object @@ -2493,9 +2701,9 @@ components: - predicate properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -2524,9 +2732,9 @@ components: - k properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -2569,9 +2777,9 @@ components: description: Optional full-text search query. Provide either string_query or structured_query, not both. properties: string_query: - $ref: '#/components/schemas/StringFtsQuery' + $ref: "#/components/schemas/StringFtsQuery" structured_query: - $ref: '#/components/schemas/StructuredFtsQuery' + $ref: "#/components/schemas/StructuredFtsQuery" k: type: integer minimum: 0 @@ -2638,9 +2846,9 @@ components: - index_type properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -2712,9 +2920,9 @@ components: type: object properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -2727,9 +2935,9 @@ components: nullable: true description: Optional table version to list indexes from page_token: - $ref: '#/components/schemas/PageToken' + $ref: "#/components/schemas/PageToken" limit: - $ref: '#/components/schemas/PageLimit' + $ref: "#/components/schemas/PageLimit" ListTableIndicesResponse: type: object @@ -2739,10 +2947,10 @@ components: indexes: type: array items: - $ref: '#/components/schemas/IndexContent' + $ref: "#/components/schemas/IndexContent" description: List of indexes on the table page_token: - $ref: '#/components/schemas/PageToken' + $ref: "#/components/schemas/PageToken" IndexContent: type: object @@ -2771,9 +2979,9 @@ components: type: object properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -2823,12 +3031,12 @@ components: description: | JSON representation of a Apache Arrow schema. required: - - fields + - fields properties: fields: type: array items: - $ref: '#/components/schemas/JsonArrowField' + $ref: "#/components/schemas/JsonArrowField" metadata: type: object additionalProperties: @@ -2841,9 +3049,9 @@ components: description: | JSON representation of an Apache Arrow field. required: - - name - - type - - nullable + - name + - type + - nullable properties: metadata: type: object @@ -2856,17 +3064,17 @@ components: nullable: type: boolean type: - $ref: '#/components/schemas/JsonArrowDataType' + $ref: "#/components/schemas/JsonArrowDataType" JsonArrowDataType: type: object description: JSON representation of an Apache Arrow DataType required: - - type + - type properties: fields: type: array items: - $ref: '#/components/schemas/JsonArrowField' + $ref: "#/components/schemas/JsonArrowField" description: Fields for complex types like Struct, Union, etc. length: type: integer @@ -2887,9 +3095,9 @@ components: Request for creating a table, excluding the Arrow IPC stream. properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -2903,6 +3111,12 @@ components: * Create: the operation fails with 409. * ExistOk: the operation succeeds and the existing table is kept. * Overwrite: the existing table is dropped and a new table with this name is created. + properties: + type: object + description: | + Properties stored on the table, if supported by the implementation. + additionalProperties: + type: string CreateTableResponse: type: object @@ -2924,6 +3138,15 @@ components: passed directly to Lance to initialize storage access. additionalProperties: type: string + properties: + type: object + description: | + If the implementation does not support table properties, it should return null for this field. Otherwise it should return the properties. + additionalProperties: + type: string + example: { "owner": "Ralph", "created_at": "1452120468" } + default: {} + nullable: true CreateEmptyTableRequest: type: object @@ -2934,9 +3157,9 @@ components: **Deprecated**: Use `DeclareTableRequest` instead. properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -2952,6 +3175,12 @@ components: When true, the implementation should provide vended credentials for accessing storage. When not set, the implementation can decide whether to return vended credentials. type: boolean + properties: + type: object + description: | + Properties stored on the table, if supported by the server. + additionalProperties: + type: string CreateEmptyTableResponse: type: object @@ -2974,6 +3203,15 @@ components: passed directly to Lance to initialize storage access. additionalProperties: type: string + properties: + type: object + description: | + If the implementation does not support table properties, it should return null for this field. Otherwise it should return the properties. + additionalProperties: + type: string + example: { "owner": "Ralph", "created_at": "1452120468" } + default: {} + nullable: true DeclareTableRequest: type: object @@ -2981,9 +3219,9 @@ components: Request for declaring a table. properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -2999,6 +3237,12 @@ components: When true, the implementation should provide vended credentials for accessing storage. When not set, the implementation can decide whether to return vended credentials. type: boolean + properties: + type: object + description: | + Properties stored on the table, if supported by the server. + additionalProperties: + type: string DeclareTableResponse: type: object @@ -3018,14 +3262,29 @@ components: passed directly to Lance to initialize storage access. additionalProperties: type: string + properties: + type: object + description: | + If the implementation does not support table properties, it should return null for this field. Otherwise it should return the properties. + additionalProperties: + type: string + example: { "owner": "Ralph", "created_at": "1452120468" } + default: {} + nullable: true + managed_versioning: + type: boolean + description: | + When true, the caller should use namespace table version operations + (CreateTableVersion, BatchCreateTableVersions, DescribeTableVersion, ListTableVersions, BatchDeleteTableVersions) + to manage table versions instead of relying on Lance's native version management. TableExistsRequest: type: object properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -3053,9 +3312,9 @@ components: type: object properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -3067,7 +3326,7 @@ components: - status properties: status: - $ref: '#/components/schemas/TransactionStatus' + $ref: "#/components/schemas/TransactionStatus" properties: type: object additionalProperties: @@ -3077,7 +3336,7 @@ components: type: object properties: status: - $ref: '#/components/schemas/TransactionStatus' + $ref: "#/components/schemas/TransactionStatus" AlterTransactionSetProperty: type: object @@ -3087,7 +3346,7 @@ components: value: type: string mode: - $ref: '#/components/schemas/SetPropertyMode' + $ref: "#/components/schemas/SetPropertyMode" SetPropertyMode: type: string @@ -3104,7 +3363,7 @@ components: key: type: string mode: - $ref: '#/components/schemas/UnsetPropertyMode' + $ref: "#/components/schemas/UnsetPropertyMode" UnsetPropertyMode: type: string @@ -3124,11 +3383,11 @@ components: If you would like to perform multiple actions, set a list of actions in the AlterTransactionRequest. properties: setStatusAction: - $ref: '#/components/schemas/AlterTransactionSetStatus' + $ref: "#/components/schemas/AlterTransactionSetStatus" setPropertyAction: - $ref: '#/components/schemas/AlterTransactionSetProperty' + $ref: "#/components/schemas/AlterTransactionSetProperty" unsetPropertyAction: - $ref: '#/components/schemas/AlterTransactionUnsetProperty' + $ref: "#/components/schemas/AlterTransactionUnsetProperty" AlterTransactionRequest: type: object @@ -3139,9 +3398,9 @@ components: - actions properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -3150,7 +3409,7 @@ components: type: array minItems: 1 items: - $ref: '#/components/schemas/AlterTransactionAction' + $ref: "#/components/schemas/AlterTransactionAction" AlterTransactionResponse: type: object @@ -3158,7 +3417,7 @@ components: - status properties: status: - $ref: '#/components/schemas/TransactionStatus' + $ref: "#/components/schemas/TransactionStatus" properties: type: object additionalProperties: @@ -3171,9 +3430,9 @@ components: Otherwise, return a transaction ID that client can use to track deletion progress. properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -3193,18 +3452,23 @@ components: type: string properties: type: object + description: | + If the implementation does not support table properties, it should return null for this field. Otherwise it should return the properties. additionalProperties: type: string + example: { "owner": "Ralph", "created_at": "1452120468" } + default: {} + nullable: true DeregisterTableRequest: type: object description: | - The table content remains available in the storage. + The table content remains available in the storage. properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -3224,13 +3488,18 @@ components: type: string properties: type: object + description: | + If the implementation does not support table properties, it should return null for this field. Otherwise it should return the properties. additionalProperties: type: string + example: { "owner": "Ralph", "created_at": "1452120468" } + default: {} + nullable: true StringFtsQuery: type: object required: - - query + - query properties: columns: type: array @@ -3242,10 +3511,10 @@ components: StructuredFtsQuery: type: object required: - - query + - query properties: query: - $ref: '#/components/schemas/FtsQuery' + $ref: "#/components/schemas/FtsQuery" FtsQuery: type: object @@ -3255,20 +3524,20 @@ components: differences and compatibility issues across codegen in different languages. properties: match: - $ref: '#/components/schemas/MatchQuery' + $ref: "#/components/schemas/MatchQuery" phrase: - $ref: '#/components/schemas/PhraseQuery' + $ref: "#/components/schemas/PhraseQuery" boost: - $ref: '#/components/schemas/BoostQuery' + $ref: "#/components/schemas/BoostQuery" multi_match: - $ref: '#/components/schemas/MultiMatchQuery' + $ref: "#/components/schemas/MultiMatchQuery" boolean: - $ref: '#/components/schemas/BooleanQuery' + $ref: "#/components/schemas/BooleanQuery" MatchQuery: type: object required: - - terms + - terms properties: boost: type: number @@ -3286,7 +3555,7 @@ components: Default to 50. minimum: 0 operator: - $ref: '#/components/schemas/Operator' + $ref: "#/components/schemas/Operator" description: |- The operator to use for combining terms. This can be either `And` or `Or`, it's 'Or' by default. @@ -3305,7 +3574,7 @@ components: PhraseQuery: type: object required: - - terms + - terms properties: column: type: string @@ -3320,51 +3589,51 @@ components: type: object description: Boost query that scores documents matching positive query higher and negative query lower required: - - positive - - negative + - positive + - negative properties: positive: - $ref: '#/components/schemas/FtsQuery' + $ref: "#/components/schemas/FtsQuery" negative: - $ref: '#/components/schemas/FtsQuery' + $ref: "#/components/schemas/FtsQuery" negative_boost: type: number format: float - description: 'Boost factor for negative query (default: 0.5)' + description: "Boost factor for negative query (default: 0.5)" default: 0.5 MultiMatchQuery: type: object required: - - match_queries + - match_queries properties: match_queries: type: array items: - $ref: '#/components/schemas/MatchQuery' + $ref: "#/components/schemas/MatchQuery" BooleanQuery: type: object description: Boolean query with must, should, and must_not clauses required: - - should - - must - - must_not + - should + - must + - must_not properties: must: type: array items: - $ref: '#/components/schemas/FtsQuery' + $ref: "#/components/schemas/FtsQuery" description: Queries that must match (AND) must_not: type: array items: - $ref: '#/components/schemas/FtsQuery' + $ref: "#/components/schemas/FtsQuery" description: Queries that must not match (NOT) should: type: array items: - $ref: '#/components/schemas/FtsQuery' + $ref: "#/components/schemas/FtsQuery" description: Queries that should match (OR) Operator: @@ -3381,9 +3650,9 @@ components: - tag properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -3410,9 +3679,9 @@ components: - version properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -3440,9 +3709,9 @@ components: - tag properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -3466,9 +3735,9 @@ components: - version properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -3494,18 +3763,18 @@ components: type: object properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: type: string description: The table identifier page_token: - $ref: '#/components/schemas/PageToken' + $ref: "#/components/schemas/PageToken" limit: - $ref: '#/components/schemas/PageLimit' + $ref: "#/components/schemas/PageLimit" ListTableTagsResponse: type: object @@ -3516,10 +3785,10 @@ components: tags: type: object additionalProperties: - $ref: '#/components/schemas/TagContents' + $ref: "#/components/schemas/TagContents" description: Map of tag names to their contents page_token: - $ref: '#/components/schemas/PageToken' + $ref: "#/components/schemas/PageToken" TagContents: type: object @@ -3547,9 +3816,9 @@ components: - version properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -3574,9 +3843,9 @@ components: - new_table_name properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -3602,9 +3871,9 @@ components: type: object properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -3632,17 +3901,22 @@ components: type: object properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: type: string page_token: - $ref: '#/components/schemas/PageToken' + $ref: "#/components/schemas/PageToken" limit: - $ref: '#/components/schemas/PageLimit' + $ref: "#/components/schemas/PageLimit" + descending: + type: boolean + description: | + When true, versions are guaranteed to be returned in descending order (latest to oldest). + When false or not specified, the ordering is implementation-defined. ListTableVersionsResponse: type: object @@ -3652,32 +3926,278 @@ components: versions: type: array items: - $ref: '#/components/schemas/TableVersion' - description: List of table versions + $ref: "#/components/schemas/TableVersion" + description: | + List of table versions. When `descending=true`, guaranteed to be ordered from latest to oldest. + Otherwise, ordering is implementation-defined. page_token: - $ref: '#/components/schemas/PageToken' + $ref: "#/components/schemas/PageToken" + + CreateTableVersionRequest: + type: object + description: | + Request to create a new table version entry. + This supports `put_if_not_exists` semantics, + where the operation fails if the version already exists. + required: + - version + - manifest_path + properties: + identity: + $ref: "#/components/schemas/Identity" + context: + $ref: "#/components/schemas/Context" + id: + type: array + items: + type: string + description: The table identifier + version: + type: integer + format: int64 + minimum: 0 + description: Version number to create + manifest_path: + type: string + description: Path to the manifest file for this version + manifest_size: + type: integer + format: int64 + minimum: 0 + description: Size of the manifest file in bytes + e_tag: + type: string + description: Optional ETag for the manifest file + metadata: + type: object + additionalProperties: + type: string + description: Optional metadata for the version + naming_scheme: + $ref: "#/components/schemas/ManifestNamingScheme" + + CreateTableVersionResponse: + type: object + description: Response for creating a table version + properties: + transaction_id: + type: string + description: Optional transaction identifier + version: + $ref: "#/components/schemas/TableVersion" + + DescribeTableVersionRequest: + type: object + description: Request to describe a specific table version + properties: + identity: + $ref: "#/components/schemas/Identity" + context: + $ref: "#/components/schemas/Context" + id: + type: array + items: + type: string + description: The table identifier + version: + type: integer + format: int64 + minimum: 0 + description: Version number to describe + + DescribeTableVersionResponse: + type: object + description: Response containing the table version information + required: + - version + properties: + version: + $ref: "#/components/schemas/TableVersion" + description: The table version information + + BatchDeleteTableVersionsRequest: + type: object + description: | + Request to delete table version records. + Supports deleting ranges of versions for efficient bulk cleanup. + required: + - ranges + properties: + identity: + $ref: "#/components/schemas/Identity" + context: + $ref: "#/components/schemas/Context" + id: + type: array + items: + type: string + description: The table identifier + ranges: + type: array + items: + $ref: "#/components/schemas/VersionRange" + description: | + List of version ranges to delete. + Each range specifies start (inclusive) and end (exclusive) versions. + + VersionRange: + type: object + description: | + A range of versions to delete (start inclusive, end exclusive). + Special values: + - `start_version: 0` with `end_version: -1` means ALL versions + required: + - start_version + - end_version + properties: + start_version: + type: integer + format: int64 + description: | + Start version of the range (inclusive). + Use 0 to start from the first version. + end_version: + type: integer + format: int64 + description: | + End version of the range (exclusive). + Use -1 to indicate all versions up to and including the latest. + + BatchDeleteTableVersionsResponse: + type: object + description: Response for deleting table version records + properties: + deleted_count: + type: integer + format: int64 + minimum: 0 + description: Number of version records deleted + transaction_id: + type: string + description: Optional transaction identifier + + BatchCreateTableVersionsRequest: + type: object + description: | + Request to atomically create new version entries for multiple tables. + The operation is atomic: all versions are created or none are. + required: + - entries + properties: + identity: + $ref: "#/components/schemas/Identity" + context: + $ref: "#/components/schemas/Context" + entries: + type: array + items: + $ref: "#/components/schemas/CreateTableVersionEntry" + description: List of table version entries to create atomically + + CreateTableVersionEntry: + type: object + description: | + An entry for creating a new table version in a batch operation. + This supports `put_if_not_exists` semantics, + where the operation fails if the version already exists. + required: + - id + - version + - manifest_path + properties: + id: + type: array + items: + type: string + description: The table identifier + version: + type: integer + format: int64 + minimum: 0 + description: Version number to create + manifest_path: + type: string + description: Path to the manifest file for this version + manifest_size: + type: integer + format: int64 + minimum: 0 + description: Size of the manifest file in bytes + e_tag: + type: string + description: Optional ETag for the manifest file + metadata: + type: object + additionalProperties: + type: string + description: Optional metadata for the version + naming_scheme: + $ref: "#/components/schemas/ManifestNamingScheme" + + BatchCreateTableVersionsResponse: + type: object + description: | + Response for batch creating table versions. + Contains the created versions for each table in the same order as the request. + required: + - versions + properties: + transaction_id: + type: string + description: Optional transaction identifier + versions: + type: array + items: + $ref: "#/components/schemas/TableVersion" + description: List of created table versions in the same order as the request entries TableVersion: type: object required: - version - - timestamp - - metadata + - manifest_path properties: version: type: integer format: int64 minimum: 0 description: Version number - timestamp: + manifest_path: + type: string + description: Path to the manifest file for this version. + manifest_size: + type: integer + format: int64 + minimum: 0 + description: Size of the manifest file in bytes + e_tag: type: string - format: date-time - description: Timestamp when the version was created + description: | + Optional ETag for optimistic concurrency control. + Useful for S3 and similar object stores. + timestamp_millis: + type: integer + format: int64 + description: Timestamp when the version was created, in milliseconds since epoch (Unix time) metadata: type: object additionalProperties: type: string - description: Key-value pairs of metadata + description: Optional key-value pairs of metadata + + ManifestNamingScheme: + type: string + description: | + The naming scheme used for manifest files in the `_versions/` directory. + + Known values: + - `V1`: `_versions/{version}.manifest` - Simple version-based naming + - `V2`: `_versions/{inverted_version}.manifest` - Zero-padded, reversed version number + (uses `u64::MAX - version`) for O(1) lookup of latest version on object stores + + V2 is preferred for new tables as it enables efficient latest-version discovery + without needing to list all versions. + example: V2 ExplainTableQueryPlanRequest: type: object @@ -3685,15 +4205,15 @@ components: - query properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: type: string query: - $ref: '#/components/schemas/QueryTableRequest' + $ref: "#/components/schemas/QueryTableRequest" verbose: type: boolean default: false @@ -3715,9 +4235,9 @@ components: - k properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -3760,9 +4280,9 @@ components: description: Optional full-text search query. Provide either string_query or structured_query, not both. properties: string_query: - $ref: '#/components/schemas/StringFtsQuery' + $ref: "#/components/schemas/StringFtsQuery" structured_query: - $ref: '#/components/schemas/StructuredFtsQuery' + $ref: "#/components/schemas/StructuredFtsQuery" k: type: integer minimum: 0 @@ -3837,9 +4357,9 @@ components: - new_columns properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -3847,7 +4367,7 @@ components: new_columns: type: array items: - $ref: '#/components/schemas/NewColumnTransform' + $ref: "#/components/schemas/NewColumnTransform" description: List of new columns to add NewColumnTransform: @@ -3863,7 +4383,7 @@ components: nullable: true description: SQL expression to compute the column value (optional if virtual_column is specified) virtual_column: - $ref: '#/components/schemas/AddVirtualColumnEntry' + $ref: "#/components/schemas/AddVirtualColumnEntry" nullable: true description: Virtual column definition (optional if expression is specified) @@ -3918,9 +4438,9 @@ components: - alterations properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -3928,7 +4448,7 @@ components: alterations: type: array items: - $ref: '#/components/schemas/AlterColumnsEntry' + $ref: "#/components/schemas/AlterColumnsEntry" description: List of column alterations to perform AlterColumnsEntry: @@ -3952,7 +4472,7 @@ components: nullable: true description: Whether the column should be nullable (optional) virtual_column: - $ref: '#/components/schemas/AlterVirtualColumnEntry' + $ref: "#/components/schemas/AlterVirtualColumnEntry" nullable: true description: Virtual column alterations (optional) @@ -4002,9 +4522,9 @@ components: - columns properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -4033,9 +4553,9 @@ components: type: object properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -4065,7 +4585,7 @@ components: minimum: 0 description: The number of indices in the table fragment_stats: - $ref: '#/components/schemas/FragmentStats' + $ref: "#/components/schemas/FragmentStats" description: Statistics on table fragments FragmentStats: @@ -4086,7 +4606,7 @@ components: minimum: 0 description: The number of uncompacted fragments in the table lengths: - $ref: '#/components/schemas/FragmentSummary' + $ref: "#/components/schemas/FragmentSummary" description: Statistics on the number of rows in the table fragments FragmentSummary: @@ -4133,9 +4653,9 @@ components: type: object properties: identity: - $ref: '#/components/schemas/Identity' + $ref: "#/components/schemas/Identity" context: - $ref: '#/components/schemas/Context' + $ref: "#/components/schemas/Context" id: type: array items: @@ -4187,16 +4707,16 @@ components: description: Field IDs of the source columns in the schema example: [1] transform: - $ref: '#/components/schemas/PartitionTransform' + $ref: "#/components/schemas/PartitionTransform" description: Well-known partition transform. Exactly one of transform or expression must be specified. expression: type: string description: DataFusion SQL expression using col0, col1, ... as column references. Exactly one of transform or expression must be specified. example: "date_part('year', col0)" result_type: - $ref: '#/components/schemas/JsonArrowDataType' + $ref: "#/components/schemas/JsonArrowDataType" description: The output type of the partition value (JsonArrowDataType format) - example: {"type": "int32"} + example: { "type": "int32" } PartitionSpec: type: object @@ -4212,7 +4732,7 @@ components: fields: type: array items: - $ref: '#/components/schemas/PartitionField' + $ref: "#/components/schemas/PartitionField" description: Array of partition field definitions responses: @@ -4221,12 +4741,12 @@ components: content: application/json: schema: - $ref: '#/components/schemas/ListNamespacesResponse' + $ref: "#/components/schemas/ListNamespacesResponse" examples: NonEmptyResponse: - $ref: '#/components/examples/ListNamespacesNonEmptyExample' + $ref: "#/components/examples/ListNamespacesNonEmptyExample" EmptyResponse: - $ref: '#/components/examples/ListNamespacesEmptyExample' + $ref: "#/components/examples/ListNamespacesEmptyExample" DescribeNamespaceResponse: description: @@ -4235,116 +4755,112 @@ components: content: application/json: schema: - $ref: '#/components/schemas/DescribeNamespaceResponse' + $ref: "#/components/schemas/DescribeNamespaceResponse" CreateNamespaceResponse: - description: - Result of creating a namespace + description: Result of creating a namespace content: application/json: schema: - $ref: '#/components/schemas/CreateNamespaceResponse' + $ref: "#/components/schemas/CreateNamespaceResponse" DropNamespaceResponse: - description: - Result of dropping a namespace + description: Result of dropping a namespace content: application/json: schema: - $ref: '#/components/schemas/DropNamespaceResponse' + $ref: "#/components/schemas/DropNamespaceResponse" ListTablesResponse: description: A list of tables content: application/json: schema: - $ref: '#/components/schemas/ListTablesResponse' + $ref: "#/components/schemas/ListTablesResponse" DescribeTableResponse: description: Table properties result when loading a table content: application/json: schema: - $ref: '#/components/schemas/DescribeTableResponse' + $ref: "#/components/schemas/DescribeTableResponse" CountTableRowsResponse: description: Result of counting rows in a table content: application/json: schema: - $ref: '#/components/schemas/CountTableRowsResponse' + $ref: "#/components/schemas/CountTableRowsResponse" CreateTableResponse: description: Table properties result when creating a table content: application/json: schema: - $ref: '#/components/schemas/CreateTableResponse' + $ref: "#/components/schemas/CreateTableResponse" InsertIntoTableResponse: description: Result of inserting records into a table content: application/json: schema: - $ref: '#/components/schemas/InsertIntoTableResponse' + $ref: "#/components/schemas/InsertIntoTableResponse" MergeInsertIntoTableResponse: description: Result of merge insert operation content: application/json: schema: - $ref: '#/components/schemas/MergeInsertIntoTableResponse' + $ref: "#/components/schemas/MergeInsertIntoTableResponse" RegisterTableResponse: description: Table properties result when registering a table content: application/json: schema: - $ref: '#/components/schemas/RegisterTableResponse' + $ref: "#/components/schemas/RegisterTableResponse" DescribeTransactionResponse: description: Response of DescribeTransaction content: application/json: schema: - $ref: '#/components/schemas/DescribeTransactionResponse' + $ref: "#/components/schemas/DescribeTransactionResponse" AlterTransactionResponse: description: Response of AlterTransaction content: application/json: schema: - $ref: '#/components/schemas/AlterTransactionResponse' + $ref: "#/components/schemas/AlterTransactionResponse" DropTableResponse: - description: - Response of DropTable + description: Response of DropTable content: application/json: schema: - $ref: '#/components/schemas/DropTableResponse' + $ref: "#/components/schemas/DropTableResponse" DeregisterTableResponse: - description: - Response of DeregisterTable + description: Response of DeregisterTable content: application/json: schema: - $ref: '#/components/schemas/DeregisterTableResponse' + $ref: "#/components/schemas/DeregisterTableResponse" UpdateTableResponse: description: Update successful content: application/json: schema: - $ref: '#/components/schemas/UpdateTableResponse' + $ref: "#/components/schemas/UpdateTableResponse" DeleteFromTableResponse: description: Delete successful content: application/json: schema: - $ref: '#/components/schemas/DeleteFromTableResponse' + $ref: "#/components/schemas/DeleteFromTableResponse" QueryTableResponse: description: Query results in Arrow IPC file format @@ -4359,28 +4875,28 @@ components: content: application/json: schema: - $ref: '#/components/schemas/CreateTableIndexResponse' + $ref: "#/components/schemas/CreateTableIndexResponse" CreateTableScalarIndexResponse: description: Scalar index created successfully content: application/json: schema: - $ref: '#/components/schemas/CreateTableScalarIndexResponse' + $ref: "#/components/schemas/CreateTableScalarIndexResponse" ListTableIndicesResponse: description: List of indices on the table content: application/json: schema: - $ref: '#/components/schemas/ListTableIndicesResponse' + $ref: "#/components/schemas/ListTableIndicesResponse" DescribeTableIndexStatsResponse: description: Index statistics content: application/json: schema: - $ref: '#/components/schemas/DescribeTableIndexStatsResponse' + $ref: "#/components/schemas/DescribeTableIndexStatsResponse" # Tag operation responses @@ -4389,35 +4905,35 @@ components: content: application/json: schema: - $ref: '#/components/schemas/ListTableTagsResponse' + $ref: "#/components/schemas/ListTableTagsResponse" GetTableTagVersionResponse: description: Tag version information content: application/json: schema: - $ref: '#/components/schemas/GetTableTagVersionResponse' + $ref: "#/components/schemas/GetTableTagVersionResponse" CreateTableTagResponse: description: Create tag response content: application/json: schema: - $ref: '#/components/schemas/CreateTableTagResponse' + $ref: "#/components/schemas/CreateTableTagResponse" DeleteTableTagResponse: description: Delete tag response content: application/json: schema: - $ref: '#/components/schemas/DeleteTableTagResponse' + $ref: "#/components/schemas/DeleteTableTagResponse" UpdateTableTagResponse: description: Update tag response content: application/json: schema: - $ref: '#/components/schemas/UpdateTableTagResponse' + $ref: "#/components/schemas/UpdateTableTagResponse" # Table operation responses @@ -4426,7 +4942,35 @@ components: content: application/json: schema: - $ref: '#/components/schemas/ListTableVersionsResponse' + $ref: "#/components/schemas/ListTableVersionsResponse" + + CreateTableVersionResponse: + description: Result of creating a table version + content: + application/json: + schema: + $ref: "#/components/schemas/CreateTableVersionResponse" + + DescribeTableVersionResponse: + description: Table version information + content: + application/json: + schema: + $ref: "#/components/schemas/DescribeTableVersionResponse" + + BatchDeleteTableVersionsResponse: + description: Result of deleting table version records + content: + application/json: + schema: + $ref: "#/components/schemas/BatchDeleteTableVersionsResponse" + + BatchCreateTableVersionsResponse: + description: Result of atomically creating table versions + content: + application/json: + schema: + $ref: "#/components/schemas/BatchCreateTableVersionsResponse" ExplainTableQueryPlanResponse: description: Query execution plan explanation @@ -4449,63 +4993,63 @@ components: content: application/json: schema: - $ref: '#/components/schemas/AlterTableAddColumnsResponse' + $ref: "#/components/schemas/AlterTableAddColumnsResponse" AlterTableAlterColumnsResponse: description: Alter columns operation result content: application/json: schema: - $ref: '#/components/schemas/AlterTableAlterColumnsResponse' + $ref: "#/components/schemas/AlterTableAlterColumnsResponse" AlterTableDropColumnsResponse: description: Drop columns operation result content: application/json: schema: - $ref: '#/components/schemas/AlterTableDropColumnsResponse' + $ref: "#/components/schemas/AlterTableDropColumnsResponse" GetTableStatsResponse: description: Table statistics content: application/json: schema: - $ref: '#/components/schemas/GetTableStatsResponse' + $ref: "#/components/schemas/GetTableStatsResponse" RestoreTableResponse: description: Table restore operation result content: application/json: schema: - $ref: '#/components/schemas/RestoreTableResponse' + $ref: "#/components/schemas/RestoreTableResponse" RenameTableResponse: description: Table rename operation result content: application/json: schema: - $ref: '#/components/schemas/RenameTableResponse' + $ref: "#/components/schemas/RenameTableResponse" DropTableIndexResponse: description: Index drop operation result content: application/json: schema: - $ref: '#/components/schemas/DropTableIndexResponse' + $ref: "#/components/schemas/DropTableIndexResponse" DeclareTableResponse: description: Table properties result when declaring a table content: application/json: schema: - $ref: '#/components/schemas/DeclareTableResponse' + $ref: "#/components/schemas/DeclareTableResponse" CreateEmptyTableResponse: description: Table properties result when creating an empty table content: application/json: schema: - $ref: '#/components/schemas/CreateEmptyTableResponse' + $ref: "#/components/schemas/CreateEmptyTableResponse" # Error Responses @@ -4518,85 +5062,90 @@ components: content: application/json: schema: - $ref: '#/components/schemas/ErrorResponse' - example: { - "type": "/errors/bad-request", - "title": "Malformed request", - "status": 400, - "detail": "", - "instance": "/v1/namespaces" - } + $ref: "#/components/schemas/ErrorResponse" + example: + { + "type": "/errors/bad-request", + "title": "Malformed request", + "status": 400, + "detail": "", + "instance": "/v1/namespaces", + } UnauthorizedErrorResponse: description: Unauthorized. The request lacks valid authentication credentials for the operation. content: application/json: schema: - $ref: '#/components/schemas/ErrorResponse' - example: { - "type": "/errors/unauthorized-request", - "title": "No valid authentication credentials for the operation", - "status": 401, - "detail": "", - "instance": "/v1/namespaces" - } + $ref: "#/components/schemas/ErrorResponse" + example: + { + "type": "/errors/unauthorized-request", + "title": "No valid authentication credentials for the operation", + "status": 401, + "detail": "", + "instance": "/v1/namespaces", + } ForbiddenErrorResponse: description: Forbidden. Authenticated user does not have the necessary permissions. content: application/json: schema: - $ref: '#/components/schemas/ErrorResponse' - example: { - "type": "/errors/forbidden-request", - "title": "Not authorized to make this request", - "status": 403, - "detail": "", - "instance": "/v1/namespaces" - } + $ref: "#/components/schemas/ErrorResponse" + example: + { + "type": "/errors/forbidden-request", + "title": "Not authorized to make this request", + "status": 403, + "detail": "", + "instance": "/v1/namespaces", + } NotFoundErrorResponse: - description: - A server-side problem that means can not find the specified resource. + description: A server-side problem that means can not find the specified resource. content: application/json: schema: - $ref: '#/components/schemas/ErrorResponse' - example: { - "type": "/errors/not-found-error", - "title": "Not found Error", - "status": 404, - "detail": "", - "instance": "/v1/namespaces/{ns}" - } + $ref: "#/components/schemas/ErrorResponse" + example: + { + "type": "/errors/not-found-error", + "title": "Not found Error", + "status": 404, + "detail": "", + "instance": "/v1/namespaces/{ns}", + } UnsupportedOperationErrorResponse: description: Not Acceptable / Unsupported Operation. The server does not support this operation. content: application/json: schema: - $ref: '#/components/schemas/ErrorResponse' - example: { - "type": "/errors/unsupported-operation", - "title": "The server does not support this operation", - "status": 406, - "detail": "", - "instance": "/v1/namespaces" - } + $ref: "#/components/schemas/ErrorResponse" + example: + { + "type": "/errors/unsupported-operation", + "title": "The server does not support this operation", + "status": 406, + "detail": "", + "instance": "/v1/namespaces", + } ConflictErrorResponse: description: The request conflicts with the current state of the target resource. content: application/json: schema: - $ref: '#/components/schemas/ErrorResponse' - example: { - "type": "/errors/conflict", - "title": "The namespace has been concurrently modified", - "status": 409, - "detail": "", - "instance": "/v1/namespaces/{ns}" - } + $ref: "#/components/schemas/ErrorResponse" + example: + { + "type": "/errors/conflict", + "title": "The namespace has been concurrently modified", + "status": 409, + "detail": "", + "instance": "/v1/namespaces/{ns}", + } ServiceUnavailableErrorResponse: description: @@ -4605,14 +5154,15 @@ components: content: application/json: schema: - $ref: '#/components/schemas/ErrorResponse' - example: { - "type": "/errors/service-unavailable", - "title": "Slow down", - "status": 503, - "detail": "", - "instance": "/v1/namespaces" - } + $ref: "#/components/schemas/ErrorResponse" + example: + { + "type": "/errors/service-unavailable", + "title": "Slow down", + "status": 503, + "detail": "", + "instance": "/v1/namespaces", + } ServerErrorResponse: description: @@ -4622,30 +5172,24 @@ components: content: application/json: schema: - $ref: '#/components/schemas/ErrorResponse' - example: { - "type": "/errors/server-error", - "title": "Internal Server Error", - "status": 500, - "detail": "", - "instance": "/v1/namespaces" - } + $ref: "#/components/schemas/ErrorResponse" + example: + { + "type": "/errors/server-error", + "title": "Internal Server Error", + "status": 500, + "detail": "", + "instance": "/v1/namespaces", + } examples: ListNamespacesEmptyExample: summary: An empty list of namespaces - value: { - "namespaces": [ ] - } + value: { "namespaces": [] } ListNamespacesNonEmptyExample: summary: A non-empty list of namespaces - value: { - "namespaces": [ - "accounting", - "credits" - ] - } + value: { "namespaces": ["accounting", "credits"] } securitySchemes: OAuth2: diff --git a/lance-namespace b/lance-namespace index 439938c..505b547 160000 --- a/lance-namespace +++ b/lance-namespace @@ -1 +1 @@ -Subproject commit 439938c144c8c9167ff6676711c6d9cc00dbb988 +Subproject commit 505b54764095b59e80c2cf0d542430e7f8ddff31