LanceDB Data API

Operations that interact with object data and might be computationally intensive

OpenAPI Specification

lancedb-data-api-openapi.yml Raw ↑
openapi: 3.1.1
info:
  title: Lance Namespace Specification Data API
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  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

    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:
- url: '{scheme}://{host}:{port}/{basePath}'
  description: Generic server URL with all parts configurable
  variables:
    scheme:
      default: http
    host:
      default: localhost
    port:
      default: '2333'
    basePath:
      default: ''
- url: '{scheme}://{host}/{basePath}'
  description: Server URL when the port can be inferred from the scheme
  variables:
    scheme:
      default: http
    host:
      default: localhost
    basePath:
      default: ''
security:
- OAuth2: []
- BearerAuth: []
- ApiKeyAuth: []
tags:
- name: Data
  description: 'Operations that interact with object data and might be computationally intensive

    '
paths:
  /v1/table/{id}/insert:
    parameters:
    - $ref: '#/components/parameters/id'
    - $ref: '#/components/parameters/delimiter'
    - name: mode
      in: query
      description: 'How the insert should behave. Case insensitive, supports both PascalCase and snake_case. Valid values are:

        - Append (default): insert data to the existing table

        - Overwrite: remove all data in the table and then insert data to it

        '
      required: false
      schema:
        type: string
        default: append
    post:
      tags:
      - Data
      summary: Insert records into a table
      operationId: InsertIntoTable
      description: 'Insert new records into table `id`.


        For tables that have been declared but not yet created on storage

        (is_only_declared=true), this operation will create the table with

        the provided data.


        REST NAMESPACE ONLY

        REST namespace uses Arrow IPC stream as the request body.

        It passes in the `InsertIntoTableRequest` information in the following way:

        - `id`: pass through path parameter of the same name

        - `mode`: pass through query parameter of the same name

        '
      requestBody:
        description: Arrow IPC stream containing the records to insert
        content:
          application/vnd.apache.arrow.stream:
            schema:
              type: string
              format: binary
        required: true
      responses:
        200:
          $ref: '#/components/responses/InsertIntoTableResponse'
        400:
          $ref: '#/components/responses/BadRequestErrorResponse'
        401:
          $ref: '#/components/responses/UnauthorizedErrorResponse'
        403:
          $ref: '#/components/responses/ForbiddenErrorResponse'
        404:
          $ref: '#/components/responses/NotFoundErrorResponse'
        503:
          $ref: '#/components/responses/ServiceUnavailableErrorResponse'
        5XX:
          $ref: '#/components/responses/ServerErrorResponse'
  /v1/table/{id}/merge_insert:
    parameters:
    - $ref: '#/components/parameters/id'
    - $ref: '#/components/parameters/delimiter'
    - name: 'on'
      in: query
      description: Column name to use for matching rows (required)
      required: true
      schema:
        type: string
    - name: when_matched_update_all
      in: query
      description: Update all columns when rows match
      required: false
      schema:
        type: boolean
        default: false
    - name: when_matched_update_all_filt
      in: query
      description: The row is updated (similar to UpdateAll) only for rows where the SQL expression evaluates to true
      required: false
      schema:
        type: string
    - name: when_not_matched_insert_all
      in: query
      description: Insert all columns when rows don't match
      required: false
      schema:
        type: boolean
        default: false
    - name: when_not_matched_by_source_delete
      in: query
      description: Delete all rows from target table that don't match a row in the source table
      required: false
      schema:
        type: boolean
        default: false
    - name: when_not_matched_by_source_delete_filt
      in: query
      description: Delete rows from the target table if there is no match AND the SQL expression evaluates to true
      schema:
        type: string
    - name: timeout
      in: query
      description: Timeout for the operation (e.g., "30s", "5m")
      required: false
      schema:
        type: string
    - name: use_index
      in: query
      description: Whether to use index for matching rows
      required: false
      schema:
        type: boolean
        default: false
    post:
      tags:
      - Data
      summary: Merge insert (upsert) records into a table
      operationId: MergeInsertIntoTable
      description: 'Performs a merge insert (upsert) operation on table `id`.

        This operation updates existing rows

        based on a matching column and inserts new rows that don''t match.

        It returns the number of rows inserted and updated.


        For tables that have been declared but not yet created on storage

        (is_only_declared=true), this operation will create the table with

        the provided data (since there are no existing rows to merge with).


        REST NAMESPACE ONLY

        REST namespace uses Arrow IPC stream as the request body.

        It passes in the `MergeInsertIntoTableRequest` information in the following way:

        - `id`: pass through path parameter of the same name

        - `on`: pass through query parameter of the same name

        - `when_matched_update_all`: pass through query parameter of the same name

        - `when_matched_update_all_filt`: pass through query parameter of the same name

        - `when_not_matched_insert_all`: pass through query parameter of the same name

        - `when_not_matched_by_source_delete`: pass through query parameter of the same name

        - `when_not_matched_by_source_delete_filt`: pass through query parameter of the same name

        '
      requestBody:
        description: Arrow IPC stream containing the records to merge
        content:
          application/vnd.apache.arrow.stream:
            schema:
              type: string
              format: binary
        required: true
      responses:
        200:
          $ref: '#/components/responses/MergeInsertIntoTableResponse'
        400:
          $ref: '#/components/responses/BadRequestErrorResponse'
        401:
          $ref: '#/components/responses/UnauthorizedErrorResponse'
        403:
          $ref: '#/components/responses/ForbiddenErrorResponse'
        404:
          $ref: '#/components/responses/NotFoundErrorResponse'
        503:
          $ref: '#/components/responses/ServiceUnavailableErrorResponse'
        5XX:
          $ref: '#/components/responses/ServerErrorResponse'
  /v1/table/{id}/update:
    parameters:
    - $ref: '#/components/parameters/id'
    - $ref: '#/components/parameters/delimiter'
    post:
      tags:
      - Data
      summary: Update rows in a table
      operationId: UpdateTable
      description: 'Update existing rows in table `id`.

        '
      requestBody:
        description: Update request
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateTableRequest'
        required: true
      responses:
        200:
          $ref: '#/components/responses/UpdateTableResponse'
        400:
          $ref: '#/components/responses/BadRequestErrorResponse'
        401:
          $ref: '#/components/responses/UnauthorizedErrorResponse'
        403:
          $ref: '#/components/responses/ForbiddenErrorResponse'
        404:
          $ref: '#/components/responses/NotFoundErrorResponse'
        503:
          $ref: '#/components/responses/ServiceUnavailableErrorResponse'
        5XX:
          $ref: '#/components/responses/ServerErrorResponse'
  /v1/table/{id}/delete:
    parameters:
    - $ref: '#/components/parameters/id'
    - $ref: '#/components/parameters/delimiter'
    post:
      tags:
      - Data
      summary: Delete rows from a table
      operationId: DeleteFromTable
      description: 'Delete rows from table `id`.

        '
      requestBody:
        description: Delete request
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteFromTableRequest'
        required: true
      responses:
        200:
          $ref: '#/components/responses/DeleteFromTableResponse'
        400:
          $ref: '#/components/responses/BadRequestErrorResponse'
        401:
          $ref: '#/components/responses/UnauthorizedErrorResponse'
        403:
          $ref: '#/components/responses/ForbiddenErrorResponse'
        404:
          $ref: '#/components/responses/NotFoundErrorResponse'
        503:
          $ref: '#/components/responses/ServiceUnavailableErrorResponse'
        5XX:
          $ref: '#/components/responses/ServerErrorResponse'
  /v1/table/{id}/query:
    parameters:
    - $ref: '#/components/parameters/id'
    - $ref: '#/components/parameters/delimiter'
    post:
      tags:
      - Data
      summary: Query a table
      operationId: QueryTable
      description: 'Query table `id` with vector search, full text search and optional SQL filtering.

        Returns results in Arrow IPC file or stream format.


        REST NAMESPACE ONLY

        REST namespace returns the response as Arrow IPC file binary data

        instead of the `QueryTableResponse` JSON object.

        '
      requestBody:
        description: Query request
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryTableRequest'
        required: true
      responses:
        200:
          $ref: '#/components/responses/QueryTableResponse'
        400:
          $ref: '#/components/responses/BadRequestErrorResponse'
        401:
          $ref: '#/components/responses/UnauthorizedErrorResponse'
        403:
          $ref: '#/components/responses/ForbiddenErrorResponse'
        404:
          $ref: '#/components/responses/NotFoundErrorResponse'
        503:
          $ref: '#/components/responses/ServiceUnavailableErrorResponse'
        5XX:
          $ref: '#/components/responses/ServerErrorResponse'
  /v1/table/{id}/count_rows:
    parameters:
    - $ref: '#/components/parameters/id'
    - $ref: '#/components/parameters/delimiter'
    post:
      tags:
      - Data
      summary: Count rows in a table
      operationId: CountTableRows
      description: 'Count the number of rows in table `id`


        REST NAMESPACE ONLY

        REST namespace returns the response as a plain integer

        instead of the `CountTableRowsResponse` JSON object.

        '
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CountTableRowsRequest'
      responses:
        200:
          $ref: '#/components/responses/CountTableRowsResponse'
        400:
          $ref: '#/components/responses/BadRequestErrorResponse'
        401:
          $ref: '#/components/responses/UnauthorizedErrorResponse'
        403:
          $ref: '#/components/responses/ForbiddenErrorResponse'
        404:
          $ref: '#/components/responses/NotFoundErrorResponse'
        503:
          $ref: '#/components/responses/ServiceUnavailableErrorResponse'
        5XX:
          $ref: '#/components/responses/ServerErrorResponse'
  /v1/table/{id}/create:
    parameters:
    - $ref: '#/components/parameters/id'
    - $ref: '#/components/parameters/delimiter'
    - name: mode
      in: query
      required: false
      schema:
        type: string
    - name: properties
      in: query
      required: false
      schema:
        type: string
      description: 'Business logic properties managed by the namespace implementation outside Lance context.

        The map is translated to a single JSON-encoded query parameter such as

        `properties={"user":"alice","team":"eng"}`.

        '
    - name: storage_options
      in: query
      required: false
      schema:
        type: string
      description: 'Storage options that configure overrides for writing table data and metadata during

        table creation. These are passed to Lance for the write path.

        The map is translated to a single JSON-encoded query parameter such as

        `storage_options={"aws_region":"us-east-1","timeout":"30s"}`.

        '
    post:
      tags:
      - Data
      summary: Create a table with the given name
      operationId: CreateTable
      description: "Create table `id` in the namespace with the given data in Arrow IPC stream.\n\nThe schema of the Arrow IPC stream is used as the table schema.\nIf the stream is empty, the API creates a new empty table.\n\nREST NAMESPACE ONLY\nREST namespace uses Arrow IPC stream as the request body.\nIt passes in the `CreateTableRequest` information in the following way:\n- `id`: pass through path parameter of the same name\n- `mode`: pass through query parameter of the same name\n- `properties`: serialize as a single JSON-encoded query parameter such as\n  `properties={\"user\":\"alice\",\"team\":\"eng\"}`; these are business logic properties\n  managed by the namespace implementation outside Lance context\n- `storage_options`: serialize as a single JSON-encoded query parameter such as\n  `storage_options={\"aws_region\":\"us-east-1\",\"timeout\":\"30s\"}`; these configure\n  write-time overrides for data and metadata written during table creation\n"
      requestBody:
        description: Arrow IPC data
        content:
          application/vnd.apache.arrow.stream:
            schema:
              type: string
              format: binary
        required: true
      responses:
        200:
          $ref: '#/components/responses/CreateTableResponse'
        400:
          $ref: '#/components/responses/BadRequestErrorResponse'
        401:
          $ref: '#/components/responses/UnauthorizedErrorResponse'
        403:
          $ref: '#/components/responses/ForbiddenErrorResponse'
        404:
          $ref: '#/components/responses/NotFoundErrorResponse'
        409:
          $ref: '#/components/responses/ConflictErrorResponse'
        503:
          $ref: '#/components/responses/ServiceUnavailableErrorResponse'
        5XX:
          $ref: '#/components/responses/ServerErrorResponse'
  /v1/table/{id}/explain_plan:
    parameters:
    - $ref: '#/components/parameters/id'
    - $ref: '#/components/parameters/delimiter'
    post:
      tags:
      - Data
      summary: Get query execution plan explanation
      operationId: ExplainTableQueryPlan
      description: 'Get the query execution plan for a query against table `id`.

        Returns a human-readable explanation of how the query will be executed.


        REST NAMESPACE ONLY

        REST namespace returns the response as a plain string

        instead of the `ExplainTableQueryPlanResponse` JSON object.

        '
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExplainTableQueryPlanRequest'
      responses:
        200:
          $ref: '#/components/responses/ExplainTableQueryPlanResponse'
        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}/analyze_plan:
    parameters:
    - $ref: '#/components/parameters/id'
    - $ref: '#/components/parameters/delimiter'
    post:
      tags:
      - Data
      summary: Analyze query execution plan
      operationId: AnalyzeTableQueryPlan
      description: 'Analyze the query execution plan for a query against table `id`.

        Returns detailed statistics and analysis of the query execution plan.


        REST NAMESPACE ONLY

        REST namespace returns the response as a plain string

        instead of the `AnalyzeTableQueryPlanResponse` JSON object.

        '
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AnalyzeTableQueryPlanRequest'
      responses:
        200:
          $ref: '#/components/responses/AnalyzeTableQueryPlanResponse'
        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}/add_columns:
    parameters:
    - $ref: '#/components/parameters/id'
    - $ref: '#/components/parameters/delimiter'
    post:
      tags:
      - Data
      summary: Add new columns to table schema
      operationId: AlterTableAddColumns
      description: 'Add new columns to table `id` using SQL expressions or default values.

        '
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AlterTableAddColumnsRequest'
      responses:
        200:
          $ref: '#/components/responses/AlterTableAddColumnsResponse'
        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}/backfill_column:
    parameters:
    - $ref: '#/components/parameters/id'
    - $ref: '#/components/parameters/delimiter'
    post:
      tags:
      - Data
      summary: Trigger an async column backfill job
      operationId: AlterTableBackfillColumns
      description: 'Trigger an asynchronous backfill job for a computed column on table `id`.

        The column must be a virtual (UDF-backed) column. Returns a job ID for tracking.

        '
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AlterTableBackfillColumnsRequest'
      responses:
        202:
          $ref: '#/components/responses/AlterTableBackfillColumnsResponse'
        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/materialized_view/{id}/refresh:
    parameters:
    - $ref: '#/components/parameters/id'
    - $ref: '#/components/parameters/delimiter'
    post:
      tags:
      - Data
      summary: Trigger an async materialized view refresh
      operationId: RefreshMaterializedView
      description: 'Trigger an asynchronous refresh job for materialized view `id`.

        Returns a job ID for tracking.

        '
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RefreshMaterializedViewRequest'
      responses:
        202:
          $ref: '#/components/responses/RefreshMaterializedViewResponse'
        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/materialized_view/{id}/create:
    parameters:
    - $ref: '#/components/parameters/id'
    - $ref: '#/components/parameters/delimiter'
    post:
      tags:
      - Data
      summary: Create a materialized view
      operationId: CreateMaterializedView
      description: 'Create a materialized view at identifier `id`. The view may be

        query-backed, UDTF-backed, or chunker-backed, controlled by the

        `kind` discriminator.

        '
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateMaterializedViewRequest'
      responses:
        201:
          $ref: '#/components/responses/CreateMaterializedViewResponse'
        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'
components:
  schemas:
    PhraseQuery:
      type: object
      required:
      - terms
      properties:
        column:
          type: string
        slop:
          type: integer
          format: int32
          minimum: 0
        terms:
          type: string
    CreateTableResponse:
      type: object
      properties:
        transaction_id:
          type: string
          description: Optional transaction identifier
        location:
          type: string
        version:
          type: integer
          format: int64
          minimum: 0
        storage_options:
          type: object
          description: 'Configuration options to be used to access storage. The available

            options depend on the type of storage in use. These will be

            passed directly to Lance to initialize storage access.

            '
          additionalProperties:
            type: string
        properties:
          type: object
          description: 'Business logic properties stored and managed by the namespace implementation outside

            Lance context. If the implementation does not support table properties, it should

            return null for this field.

            '
          additionalProperties:
            type: string
          example:
            owner: Ralph
            created_at: '1452120468'
          default: {}
          nullable: true
    CountTableRowsResponse:
      type: integer
      format: int64
      description: 'Response containing the count of rows.

        Serializes transparently as just the number for backward compatibility.

        '
      minimum: 0
    ExplainTableQueryPlanRequest:
      type: object
      required:
      - query
      properties:
        identity:
          $ref: '#/components/schemas/Identity'
        context:
          $ref: '#/components/schemas/Context'
        id:
          type: array
          items:
            type: string
        query:
          $ref: '#/components/schemas/QueryTableRequest'
        verbose:
          type: boolean
          default: false
          description: Whether to return verbose explanation
    MaterializedViewUdtfEntry:
      type: object
      required:
      - kind
      - udtf
      - udtf_sha
      - udtf_name
      - udtf_version
      properties:
        kind:
          type: string
          enum:
          - udtf
          - chunker
          description: 'Discriminates a batch UDTF (`udtf`, full-overwrite refresh)

            from a chunker (`chunker`, incremental 1:N refresh). Must match

            the enclosing request''s `kind`.

            '
        udtf:
          type: string
          description: 'Base64-encoded UDTFSpec / ChunkerSpec JSON envelope (per kind).

            '
        udtf_sha:
          type: string
          description: SHA-256 checksum of the envelope; server validates.
        udtf_name:
          type: string
          description: Name of the UDTF
        udtf_version:
          type: string
          description: Version of the UDTF
        input_columns:
          type:
          - array
          - 'null'
          items:
            type: string
          description: 'Source columns the UDTF reads. Null means all columns (batch

            UDTF only).

            '
        partition_by:
          type:
          - string
          - 'null'
          description: 'Batch UDTF only. Column-value partition key for

            partition-parallel execution. Mutually exclusive with

            `partition_by_indexed_column`.

            '
        partition_by_indexed_column:
          type:
          - string
          - 'null'
          description: 'Batch UDTF only. Source column with an IVF-family index used

            for index-based partitioning. The server validates the index

            exists at create time.

            '
        num_cpus:
          type:
          - number
          - 'null'
          description: Ray actor CPU request.
        num_gpus:
          type:
          - number
          - 'null'
          description: Ray actor GPU request.
        memory:
          type:
          - integer
          - 'null'
          description: Ray actor memory request, in bytes.
        error_handling:
          type:
          - object
          - 'null'
          description: 'Batch UDTF only. Serialized ErrorHandlingConfig controlling

            partition-grain fail/retry/skip behavior.

            '
        batch:
          type:
          - boolean
          - 'null'
          description: 'Chunker only. True for a batched chunker; affects how the

            worker dispatches input rows.

            '
        manifest:
          type:
          - string
          - 'null'
          description: JSON-serialized GenevaManifest for the UDTF environment.
        manifest_checksum:
          type:
          - string
          - 'null'
          description: SHA-256 checksum of the manifest content.
    AlterTableAddColumnsRequest:
      type: object
      required:
      - new_columns
      properties:
        identity:
          $ref: '#/components/schemas/Identity'
        id:
          type: array
          items:
            type: string
          description: Table identifier path (namespace + table name)
        new_columns:
          type: array
          items:
            $ref: '#/components/schemas/AddColumnsEntry'
          description: List of new columns to add to the table
    BoostQuery:
      type: object
      description: Boost query that scores documents matching positive query higher and negative query lower
      required:
      - positive
      - negative
      properties:
        positive:
          $ref: '#/components/schemas/FtsQuery'
        negative:
          $ref: '#/components/schemas/FtsQuery'
        negative_boost:
          type: number
          format: float
          description: 'Boost factor for negative query (default: 0.5)'
          default: 0.5
    DeleteFromTableResponse:
      type: object
      properties:
        transaction_id:
          type: string
          description: Optional transaction identifier
        version:
          type: integer
          format: int64
          description: The commit version associated with the operation
          minimum: 0
    AddColumnsEntry:
      type: object
      required:
      - name
      properties:
        name:
          type: string
          description: Name of the new column
        expression:
          type:
          - string
          - 'null'
          description: SQL expression for the column (optional if virtual_column is specified)
        virtual_column:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/AddVirtualColumnEntry'
          description: Virtual column definition (optional if expression is specified)
    FtsQuery:
      type: object
      description: 'Full-text search query. Exactly one query type field must be provided.

        This structure follows the same pattern as AlterTransactionAction to minimize

        differences and compatibility issues across codegen in different languages.

        '
      properties:
        match:
          $ref: '#/components/schemas/MatchQuery'
        phrase:
          $ref: '#/components/schemas/PhraseQuery'
        boost:
          $ref: '#/components/schemas/BoostQuery'
        multi_match:
          $ref: '#/components/schemas/MultiMatchQuery'
        boolean:
          $ref: '#/components/schemas/BooleanQuery'
    AddVirtualColumnEntry:
      type: object
      required:
      - input_columns
      - data_type
      - image
      - udf_version
      - udf_name
      - udf
      properties:
        input_columns:
          type: array
          items:
            type: string
          description: List of input column names for the virtual column
        data_type:
          type: object
          description: Data type of the virtual column using JSON representation
        image:
          type: string
          description: Docker image to use for the UDF
        udf:
          type: string
          description: Base64 encoded pickled UDF
        udf_name:
          type: string
          description: Name of the UDF
        udf_version:
          type: string
          description: Version of the UDF
        udf_backend:
          type:
          - string
          - 'null'
          description: UDF backend type (e.g. DockerUDFSpecV1)
        auto_backfill:
          type:
          - boolean
          - 'null'
          description: Whether to automatically backfill the column after creation
        manifest:
          type:
          - string
          - 'null'
          description: JSON-serialized manifest for the UDF environment
        manifest_checksum:
          type:
          - string
          - 'null'
          description: SHA-256 checksum of the manifest content
        field_metadata:
          type:
          - object
          - 'null'
          additionalProperties:
            type: string
          description: User-supplied field metadata (string key-value pairs)
    QueryTableRequest:
      type: object
      required:
      - vector
      - k
      properties:
        identity:
          $ref: '#/components/schemas/Identity'
        context:
          $ref: '#/components/schemas/Context'
        id:
          type: array
          items:
            type: string
        bypass_vector_index:
          type: boolean
          description: Whether to bypass vector index
        columns:
          type: object
          nullable: true
          description: 'Optional columns to return. Provide either column_names or column_aliases, not both.

            '
          properties:
            column_names:
              type: array
              items:
                type: string
              description: List of column names to return
            column_aliases:
              type: object
              additionalProperties:
                type: string
              description: Object mapping output aliases to source column names
        distance_type:
          type: string
          description: Distance metric to use
        e

# --- truncated at 32 KB (61 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/lancedb/refs/heads/main/openapi/lancedb-data-api-openapi.yml