Maia-analytics table API

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

Operations 12

GET /api/v1/table/{layer_id}/features/paginated Get Layer Features Paginated #
GET /api/v1/table/{layer_id}/columns Get Layer Columns Metadata #
GET /api/v1/table/{layer_id}/columns/{column_id}/values Get Column Distinct Values #
GET /api/v1/table/{layer_id}/features/filtered-ids Get Layer Filtered Ids #
GET /api/v1/table/{layer_id}/features/filtered-count Get Layer Filtered Count #
GET /api/v1/table/{layer_id}/features/navigate Navigate Layer Feature #
GET /api/v1/table/{layer_id}/export Export Layer Features #
GET /api/v1/table/{layer_id}/feature/{feature_id} Get Feature Detail #
GET /api/v1/table/{layer_id}/search Search Layer Features #
POST /api/v1/table/{layer_id}/features Add Feature To Layer #
POST /api/v1/table/{project_id}/features/from-source Create Layer From Feature #
GET /api/v1/table/{project_id}/search/{lat}/{lng} Search Feature #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/maia-analytics-table-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

maia-analytics-table-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: MAIA Ah Table API
  description: API for MAIA application (migrated from Firebase)
  version: 0.1.0
servers:
- url: https://api.maia-analytics.com
  description: Base URL declared by the provider in apis.yml (roadmap#122).
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:
    FeatureSearchResult:
      properties:
        featureId:
          type: string
          title: Featureid
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
        owner:
          anyOf:
          - type: string
          - type: 'null'
          title: Owner
        address:
          anyOf:
          - type: string
          - type: 'null'
          title: Address
        parcelnumb:
          anyOf:
          - type: string
          - type: 'null'
          title: Parcelnumb
        matchField:
          type: string
          title: Matchfield
      type: object
      required:
      - featureId
      - matchField
      title: FeatureSearchResult
      description: A single hit from GET /table/{layer_id}/search.
    CreateLayerFromFeatureResponse:
      properties:
        layer_id:
          type: string
          format: uuid
          title: Layer Id
        layer_name:
          type: string
          title: Layer Name
      type: object
      required:
      - layer_id
      - layer_name
      title: CreateLayerFromFeatureResponse
      description: 'Response for creating a new typed layer seeded with one Overture feature.


        Returned when the user adds a nearby feature whose Overture table has no

        layer in the project yet; the client uses ``layer_id`` to focus/refresh the

        newly created layer.'
    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.
    FeatureAddResponse:
      properties:
        success:
          type: boolean
          title: Success
        data_version:
          anyOf:
          - type: integer
          - type: 'null'
          title: Data Version
        feature_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Feature Id
      type: object
      required:
      - success
      title: FeatureAddResponse
      description: 'Response model for adding a feature.


        ``data_version`` is the layer''s new version after a successful add (bumped

        in the same transaction). None on failure since a failed create does not

        bump. The FE uses this to rotate the tile URL''s ``?v=``.'
    ColumnDetail:
      properties:
        name:
          type: string
          title: Name
        pg_type:
          type: string
          title: Pg Type
        type:
          type: string
          title: Type
        source:
          type: string
          enum:
          - base
          - enrichment
          - agent
          title: Source
        display_name:
          anyOf:
          - type: string
          - type: 'null'
          title: Display Name
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
        categorical_options:
          anyOf:
          - items:
              additionalProperties: true
              type: object
            type: array
          - type: 'null'
          title: Categorical Options
        stats:
          $ref: '#/components/schemas/ColumnStats'
        enrichment:
          anyOf:
          - $ref: '#/components/schemas/EnrichmentColumnConfig'
          - type: 'null'
        unit:
          anyOf:
          - type: string
          - type: 'null'
          title: Unit
      type: object
      required:
      - name
      - pg_type
      - type
      - source
      - stats
      title: ColumnDetail
      description: Rich per-column metada

# --- 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