Maia-analytics table API

The table API from Maia-analytics — 12 operation(s) for table.

OpenAPI Specification

maia-analytics-table-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: MAIA Ah table API
  description: API for MAIA application (migrated from Firebase)
  version: 0.1.0
tags:
- name: table
paths:
  /api/v1/table/{layer_id}/features/paginated:
    get:
      tags:
      - table
      summary: Get Layer Features Paginated
      description: 'Paginated features from the workspace sandbox for AG Grid SSR.


        Query params use AG Grid''s native camelCase (``startRow``, ``sortModel``,

        etc.) to match the ``IServerSideGetRowsRequest`` shape.'
      operationId: get_layer_features_paginated_api_v1_table__layer_id__features_paginated_get
      security:
      - FirebaseAuthMiddleware: []
      parameters:
      - name: startRow
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
            minimum: 0
          - type: 'null'
          default: 0
          title: Startrow
      - name: endRow
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
            exclusiveMinimum: 0
          - type: 'null'
          default: 100
          title: Endrow
      - name: sortModel
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Sortmodel
      - name: filterModel
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Filtermodel
      - name: filterId
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Filterid
      - name: groupKeys
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Groupkeys
      - name: rowGroupCols
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Rowgroupcols
      - name: searchText
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          title: Searchtext
      - name: geometry
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Geometry
      - name: favoritesOnly
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
          - type: 'null'
          default: false
          title: Favoritesonly
      - name: token
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Firebase ID token for MVT authentication
          title: Token
        description: Firebase ID token for MVT authentication
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedFeaturesResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/table/{layer_id}/columns:
    get:
      tags:
      - table
      summary: Get Layer Columns Metadata
      description: Column metadata + aggregate stats for a layer, without fetching row data.
      operationId: get_layer_columns_metadata_api_v1_table__layer_id__columns_get
      security:
      - FirebaseAuthMiddleware: []
      parameters:
      - name: token
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Firebase ID token for MVT authentication
          title: Token
        description: Firebase ID token for MVT authentication
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ColumnsMetadataResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/table/{layer_id}/columns/{column_id}/values:
    get:
      tags:
      - table
      summary: Get Column Distinct Values
      description: Distinct values + counts for a column — populates AG Grid's set filter.
      operationId: get_column_distinct_values_api_v1_table__layer_id__columns__column_id__values_get
      security:
      - FirebaseAuthMiddleware: []
      parameters:
      - name: column_id
        in: path
        required: true
        schema:
          type: string
          title: Column Id
      - name: search
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          title: Search
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 5000
          minimum: 1
          default: 500
          title: Limit
      - name: token
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Firebase ID token for MVT authentication
          title: Token
        description: Firebase ID token for MVT authentication
      - name: filterModel
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Filtermodel
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DistinctValuesResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/table/{layer_id}/features/filtered-ids:
    get:
      tags:
      - table
      summary: Get Layer Filtered Ids
      description: 'Feature ids matching the current filter set, capped by ``limit``.


        Powers map filter sync (which features to show on the map given the

        current table filters), spatial polygon filtering (draw polygon →

        filter table to features inside it), and enrichment targeting (find

        unenriched rows for a given enrichment, capped). ``total`` reflects

        the full match count regardless of ``limit``.


        Honors ``favoritesOnly`` so map-filter sync and enrichment targeting

        stay consistent with the table when the favorites toggle is on.'
      operationId: get_layer_filtered_ids_api_v1_table__layer_id__features_filtered_ids_get
      security:
      - FirebaseAuthMiddleware: []
      parameters:
      - name: enrichmentState
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 32
          - type: 'null'
          title: Enrichmentstate
      - name: enrichmentName
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Enrichmentname
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 500000
          minimum: 1
          default: 100000
          title: Limit
      - name: startRow
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
            minimum: 0
          - type: 'null'
          default: 0
          title: Startrow
      - name: endRow
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
            exclusiveMinimum: 0
          - type: 'null'
          default: 100
          title: Endrow
      - name: sortModel
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Sortmodel
      - name: filterModel
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Filtermodel
      - name: filterId
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Filterid
      - name: groupKeys
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Groupkeys
      - name: rowGroupCols
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Rowgroupcols
      - name: searchText
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          title: Searchtext
      - name: geometry
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Geometry
      - name: favoritesOnly
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
          - type: 'null'
          default: false
          title: Favoritesonly
      - name: token
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Firebase ID token for MVT authentication
          title: Token
        description: Firebase ID token for MVT authentication
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FilteredIdsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/table/{layer_id}/features/filtered-count:
    get:
      tags:
      - table
      summary: Get Layer Filtered Count
      description: 'Total row count matching the current filter set; no ids materialized.


        Counterpart to ``/filtered-ids`` for callers that only need the total —

        skips the sort + id fetch. Backs the column-wide bulk-enrich confirm gate.'
      operationId: get_layer_filtered_count_api_v1_table__layer_id__features_filtered_count_get
      security:
      - FirebaseAuthMiddleware: []
      parameters:
      - name: enrichmentState
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 32
          - type: 'null'
          title: Enrichmentstate
      - name: enrichmentName
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Enrichmentname
      - name: startRow
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
            minimum: 0
          - type: 'null'
          default: 0
          title: Startrow
      - name: endRow
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
            exclusiveMinimum: 0
          - type: 'null'
          default: 100
          title: Endrow
      - name: sortModel
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Sortmodel
      - name: filterModel
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Filtermodel
      - name: filterId
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Filterid
      - name: groupKeys
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Groupkeys
      - name: rowGroupCols
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Rowgroupcols
      - name: searchText
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          title: Searchtext
      - name: geometry
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Geometry
      - name: favoritesOnly
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
          - type: 'null'
          default: false
          title: Favoritesonly
      - name: token
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Firebase ID token for MVT authentication
          title: Token
        description: Firebase ID token for MVT authentication
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FilteredCountResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/table/{layer_id}/features/navigate:
    get:
      tags:
      - table
      summary: Navigate Layer Feature
      description: 'Server-side prev/next cursor for the focused-feature panel.


        Runs a single CTE on the current filtered set per call — no cap on

        set size and no client-side id materialization, so navigation works

        past the old 100k boundary. ``wrap`` controls behavior at the

        endpoints (true → loop, false → ``None``).'
      operationId: navigate_layer_feature_api_v1_table__layer_id__features_navigate_get
      security:
      - FirebaseAuthMiddleware: []
      parameters:
      - name: currentId
        in: query
        required: true
        schema:
          type: string
          minLength: 1
          title: Currentid
      - name: wrap
        in: query
        required: false
        schema:
          type: boolean
          default: true
          title: Wrap
      - name: enrichmentState
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 32
          - type: 'null'
          title: Enrichmentstate
      - name: enrichmentName
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Enrichmentname
      - name: startRow
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
            minimum: 0
          - type: 'null'
          default: 0
          title: Startrow
      - name: endRow
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
            exclusiveMinimum: 0
          - type: 'null'
          default: 100
          title: Endrow
      - name: sortModel
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Sortmodel
      - name: filterModel
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Filtermodel
      - name: filterId
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Filterid
      - name: groupKeys
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Groupkeys
      - name: rowGroupCols
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Rowgroupcols
      - name: searchText
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          title: Searchtext
      - name: geometry
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Geometry
      - name: favoritesOnly
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
          - type: 'null'
          default: false
          title: Favoritesonly
      - name: token
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Firebase ID token for MVT authentication
          title: Token
        description: Firebase ID token for MVT authentication
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NavigateCursorResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/table/{layer_id}/export:
    get:
      tags:
      - table
      summary: Export Layer Features
      description: 'Stream the filtered layer rows as CSV or XLSX.


        Replaces the page-scoped client-side export for SSR-backed layers.

        Row shaping mirrors ``client/src/components/Table/csvExportUtils.ts``

        — contact/tenant sub-field expansion, reasoning columns, and a

        ``Favorited`` column when requested. Exceeding

        ``settings.MAX_EXPORT_ROWS`` returns 413 before any byte streams.'
      operationId: export_layer_features_api_v1_table__layer_id__export_get
      security:
      - FirebaseAuthMiddleware: []
      parameters:
      - name: token
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Firebase ID token for MVT authentication
          title: Token
        description: Firebase ID token for MVT authentication
      - name: startRow
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
            minimum: 0
          - type: 'null'
          default: 0
          title: Startrow
      - name: endRow
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
            exclusiveMinimum: 0
          - type: 'null'
          default: 100
          title: Endrow
      - name: sortModel
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Sortmodel
      - name: filterModel
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Filtermodel
      - name: filterId
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Filterid
      - name: groupKeys
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Groupkeys
      - name: rowGroupCols
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Rowgroupcols
      - name: searchText
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          title: Searchtext
      - name: geometry
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Geometry
      - name: favoritesOnly
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
          - type: 'null'
          default: false
          title: Favoritesonly
      - name: format
        in: query
        required: false
        schema:
          anyOf:
          - enum:
            - csv
            - xlsx
            type: string
          - type: 'null'
          title: Format
      - name: columns
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Columns
      - name: includeReasoning
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
          - type: 'null'
          default: false
          title: Includereasoning
      - name: includeProvenance
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
          - type: 'null'
          default: true
          title: Includeprovenance
      - name: selectedContactFields
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Selectedcontactfields
      - name: includeFavorites
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
          - type: 'null'
          default: false
          title: Includefavorites
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/table/{layer_id}/feature/{feature_id}:
    get:
      tags:
      - table
      summary: Get Feature Detail
      description: 'Full properties + GeoJSON geometry for a single feature.


        Powers the feature detail panel and ``MapboxService.flyToFeature()``.

        Enrichment wrappers always include ``reasoning`` and ``citations`` when

        a sidecar row exists.'
      operationId: get_feature_detail_api_v1_table__layer_id__feature__feature_id__get
      security:
      - FirebaseAuthMiddleware: []
      parameters:
      - name: feature_id
        in: path
        required: true
        schema:
          type: string
          title: Feature Id
      - name: token
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Firebase ID token for MVT authentication
          title: Token
        description: Firebase ID token for MVT authentication
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeatureDetailResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/table/{layer_id}/search:
    get:
      tags:
      - table
      summary: Search Layer Features
      description: Case-insensitive substring search across feature display fields.
      operationId: search_layer_features_api_v1_table__layer_id__search_get
      security:
      - FirebaseAuthMiddleware: []
      parameters:
      - name: q
        in: query
        required: true
        schema:
          type: string
          minLength: 1
          maxLength: 200
          title: Q
      - name: fields
        in: query
        required: false
        schema:
          anyOf:
          - type: array
            items:
              type: string
          - type: 'null'
          title: Fields
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 200
          minimum: 1
          default: 50
          title: Limit
      - name: token
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Firebase ID token for MVT authentication
          title: Token
        description: Firebase ID token for MVT authentication
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeatureSearchResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/table/{layer_id}/features:
    post:
      tags:
      - table
      summary: Add Feature To Layer
      description: Add a complete GeoJSON feature to a layer.
      operationId: add_feature_to_layer_api_v1_table__layer_id__features_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FeatureAddRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeatureAddResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - FirebaseAuthMiddleware: []
  /api/v1/table/{project_id}/features/from-source:
    post:
      tags:
      - table
      summary: Create Layer From Feature
      description: 'Create a new typed layer seeded with one Overture feature.


        Used when a nearby-features add targets an Overture table (building/parcel/

        place) with no layer in the project yet. Idempotent on the feature ref.'
      operationId: create_layer_from_feature_api_v1_table__project_id__features_from_source_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateLayerFromFeatureRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateLayerFromFeatureResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - FirebaseAuthMiddleware: []
  /api/v1/table/{project_id}/search/{lat}/{lng}:
    get:
      tags:
      - table
      summary: Search Feature
      description: Find a feature by latitude, longitude, or address.
      operationId: search_feature_api_v1_table__project_id__search__lat___lng__get
      security:
      - FirebaseAuthMiddleware: []
      parameters:
      - name: lat
        in: path
        required: true
        schema:
          type: number
          title: Lat
      - name: lng
        in: path
        required: true
        schema:
          type: number
          title: Lng
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FindFeatureResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    FeatureAddRequest:
      properties:
        type:
          type: string
          enum:
          - Point
          - LineString
          - Polygon
          - MultiPoint
          - MultiLineString
          - MultiPolygon
          title: Type
        coordinates:
          items: {}
          type: array
          title: Coordinates
        properties:
          additionalProperties: true
          type: object
          title: Properties
          default: {}
        layer_id:
          type: string
          format: uuid
          title: Layer Id
        source_feature_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Source Feature Id
      type: object
      required:
      - type
      - coordinates
      - layer_id
      title: FeatureAddRequest
      description: Lightweight request for adding GeoJSON features.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    SourceTable:
      type: string
      enum:
      - parcel
      - building
      - place
      - address
      title: SourceTable
      description: 'The table a resolved feature lives in — what a caller pulls its data from,

        and the feature''s kind. A text match in the ``address`` or ``place`` table

        resolves (point-in-feature) to a ``parcel``/``building``; a ``parcel`` attribute

        match resolves to the parcel itself.'
    FeatureDetailResponse:
      properties:
        properties:
          additionalProperties: true
          type: object
          title: Properties
        geometry:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Geometry
        enrichments:
          additionalProperties:
            $ref: '#/components/schemas/EnrichmentValueBaseModel'
          type: object
          title: Enrichments
      type: object
      required:
      - properties
      - geometry
      title: FeatureDetailResponse
      description: 'Full properties + GeoJSON geometry for a single feature.


        Powers the feature detail panel and ``MapboxService.flyToFeature()``.

        Base attributes live in ``properties``; enrichment wrappers live in

        ``enrichments``, keyed by enrichment UUID so consumers can look them up

        by ``config.id`` without reconciling column names. The paginated

        endpoint keeps column-name-keyed wrappers in row data for AG Grid SSR.'
    FeatureSearchResponse:
      properties:
        results:
          items:
            $ref: '#/components/schemas/FeatureSearchResult'
          type: array
          title: Results
      type: object
      required:
      - results
      title: FeatureSearchResponse
      description: Response for GET /table/{layer_id}/search.
    FilteredIdsResponse:
      properties:
        ids:
          items:
            type: string
          type: array
          title: Ids
        total:
          type: integer
          title: Total
      type: object
      required:
      - ids
      - total
      title: FilteredIdsResponse
      description: 'Feature ids matching the current filter set, plus the unfiltered total.


        ``total`` reflects the full match count even when ``limit`` truncates ``ids`` —

        callers use it for "showing X of Y" UI and bulk-action sizing decisions.'
    DistinctValuesResponse:
      properties:
        values:
          items:
            $ref: '#/components/schemas/DistinctValue'
          type: array
          title: Values
        truncated:
          type: boolean
          title: Truncated
      type: object
      required:
      - values
      - truncated
      title: DistinctValuesResponse
      description: Respons

# --- truncated at 32 KB (48 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/maia-analytics/refs/heads/main/openapi/maia-analytics-table-api-openapi.yml