Maia-analytics share API

The share API from Maia-analytics — 17 operation(s) for share.

OpenAPI Specification

maia-analytics-share-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: MAIA Ah share API
  description: API for MAIA application (migrated from Firebase)
  version: 0.1.0
tags:
- name: share
paths:
  /api/v1/share/{share_token}:
    get:
      tags:
      - share
      summary: Get Shared Project
      description: "Get metadata for a shared project (read-only, no side effects).\n\nThis is the primary entry point for shared project access. Validates\nthe share token and returns project metadata. View count tracking is\nhandled separately via POST /{share_token}/view.\n\nArgs:\n    share: Validated ProjectShare from token (injected by validate_share_token)\n    share_service: ProjectShareService for fetching project data\n\nReturns:\n    Shared project metadata (subset of full project data)\n\nRaises:\n    HTTPException: 404 if project not found"
      operationId: get_shared_project_api_v1_share__share_token__get
      parameters:
      - name: share_token
        in: path
        required: true
        schema:
          type: string
          title: Share Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SharedProjectResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/share/{share_token}/view:
    post:
      tags:
      - share
      summary: Track Share View
      description: "Increment the view count for a shared project.\n\nCalled by the frontend once per browser session to track views.\nSeparated from the GET endpoint to avoid double-counting from\nReact StrictMode's double-mount cycle.\n\nArgs:\n    share: Validated ProjectShare from token\n    share_service: ProjectShareService for view count operations\n\nReturns:\n    Success confirmation"
      operationId: track_share_view_api_v1_share__share_token__view_post
      parameters:
      - name: share_token
        in: path
        required: true
        schema:
          type: string
          title: Share Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShareViewResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/share/{share_token}/layers:
    get:
      tags:
      - share
      summary: Get Shared Project Layers
      description: "Get all layers for a shared project.\n\nArgs:\n    share: Validated ProjectShare from token\n    layer_service: Service for fetching layer data\n\nReturns:\n    List of layers in API format (excludes soft-deleted and\n    parcel-restricted layers)"
      operationId: get_shared_project_layers_api_v1_share__share_token__layers_get
      parameters:
      - name: share_token
        in: path
        required: true
        schema:
          type: string
          title: Share Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LayerModel'
                title: Response Get Shared Project Layers Api V1 Share  Share Token  Layers Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/share/{share_token}/enrichments:
    get:
      tags:
      - share
      summary: Get Shared Project Enrichments
      description: "Get enrichment metadata for a shared project (slim, read-only).\n\nReturns only the fields needed for column mapping (id, name, layer_id,\nis_data_source, dtype). Excludes sensitive fields like params, tool,\nand description. Enrichments on share-restricted (parcel) layers are\ndropped — the layer is hidden, so its enrichment metadata must be too.\n\nArgs:\n    share: Validated ProjectShare from token\n    enrichment_repo: Repository for fetching enrichment data\n    layer_service: Service resolving which layers are share-restricted\n\nReturns:\n    Slim enrichment metadata for visible enrichments on non-restricted layers"
      operationId: get_shared_project_enrichments_api_v1_share__share_token__enrichments_get
      parameters:
      - name: share_token
        in: path
        required: true
        schema:
          type: string
          title: Share Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SharedEnrichmentListResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/share/{share_token}/filters:
    post:
      tags:
      - share
      summary: Create Shared Filter Spec
      description: 'Share-mode twin of ``POST /filters`` — anonymous viewers create the

        FilterSpec their tile / paginated / count requests will dereference.


        Without this, share-mode clients had no path to a ``filter_id``: the

        authed ``POST /filters`` blocks on Firebase auth that share viewers don''t

        have, so polygon and column filters never synced to map tiles on shared

        dashboards. ``favoritesOnly`` is rejected up front — share mode has no

        user identity to resolve favorites against (matches

        ``_reject_favorites_in_share_mode``).'
      operationId: create_shared_filter_spec_api_v1_share__share_token__filters_post
      parameters:
      - name: share_token
        in: path
        required: true
        schema:
          type: string
          title: Share Token
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FilterSpecRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FilterSpecResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/share/{share_token}/layers/{layer_id}/tiles/{z}/{x}/{y}.pbf:
    get:
      tags:
      - share
      summary: Get Shared Layer Mvt Tile
      description: 'Serve an MVT tile for a layer in a shared project (anonymous access).


        ``filter_id`` references a server-side FilterSpec; when present, the

        tile contains only matching rows. ``viz`` is the share-mode twin of the

        authed tile endpoint''s param — it names a layer column to embed so

        classed styling has values below the include-all zoom.'
      operationId: get_shared_layer_mvt_tile_api_v1_share__share_token__layers__layer_id__tiles__z___x___y__pbf_get
      parameters:
      - name: share_token
        in: path
        required: true
        schema:
          type: string
          title: Share Token
      - name: z
        in: path
        required: true
        schema:
          type: integer
          title: Z
      - name: x
        in: path
        required: true
        schema:
          type: integer
          title: X
      - name: y
        in: path
        required: true
        schema:
          type: integer
          title: Y
      - name: layer_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Layer Id
      - name: v
        in: query
        required: false
        schema:
          type: string
          default: '0'
          title: V
      - name: filter_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Filter Id
      - name: viz
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          title: Viz
      responses:
        '200':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/share/{share_token}/layers/{layer_id}/agg-tiles/{z}/{x}/{y}.pbf:
    get:
      tags:
      - share
      summary: Get Shared Layer Mvt Agg Tile
      description: 'Serve an aggregate MVT tile for a layer in a shared project.


        ``filter_id`` — share-mode twin of the auth-side agg-tile endpoint;

        counts only matching rows when present.'
      operationId: get_shared_layer_mvt_agg_tile_api_v1_share__share_token__layers__layer_id__agg_tiles__z___x___y__pbf_get
      parameters:
      - name: share_token
        in: path
        required: true
        schema:
          type: string
          title: Share Token
      - name: z
        in: path
        required: true
        schema:
          type: integer
          title: Z
      - name: x
        in: path
        required: true
        schema:
          type: integer
          title: X
      - name: y
        in: path
        required: true
        schema:
          type: integer
          title: Y
      - name: layer_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Layer Id
      - name: v
        in: query
        required: false
        schema:
          type: string
          default: '0'
          title: V
      - name: filter_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Filter Id
      responses:
        '200':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/share/{share_token}/layers/{layer_id}/viz-stats:
    get:
      tags:
      - share
      summary: Get Shared Layer Viz Stats
      description: 'Share-mode twin of ``GET /map/{layer_id}/viz-stats``.


        Shared views persist ``layerViz``, so anonymous viewers need the same

        whole-layer quantile breaks that drive classed styling for the owner.'
      operationId: get_shared_layer_viz_stats_api_v1_share__share_token__layers__layer_id__viz_stats_get
      parameters:
      - name: share_token
        in: path
        required: true
        schema:
          type: string
          title: Share Token
      - name: layer_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Layer Id
      - name: column
        in: query
        required: true
        schema:
          type: string
          maxLength: 200
          title: Column
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LayerVizStatsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/share/{share_token}/layers/{layer_id}/extent:
    get:
      tags:
      - share
      summary: Get Shared Layer Extent
      description: Bounding box of a shared layer's features (anonymous access).
      operationId: get_shared_layer_extent_api_v1_share__share_token__layers__layer_id__extent_get
      parameters:
      - name: layer_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Layer Id
      - name: share_token
        in: path
        required: true
        schema:
          type: string
          title: Share Token
      - name: searchText
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          title: Searchtext
      - 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/LayerExtentResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/share/{share_token}/layers/{layer_id}/feature/{feature_id}:
    get:
      tags:
      - share
      summary: Get Shared Feature Detail
      description: Full properties + GeoJSON geometry for a single feature in a shared layer.
      operationId: get_shared_feature_detail_api_v1_share__share_token__layers__layer_id__feature__feature_id__get
      parameters:
      - name: share_token
        in: path
        required: true
        schema:
          type: string
          title: Share Token
      - name: feature_id
        in: path
        required: true
        schema:
          type: string
          title: Feature Id
      - name: layer_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Layer Id
      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/share/{share_token}/layers/{layer_id}/features/paginated:
    get:
      tags:
      - share
      summary: Get Shared Layer Features Paginated
      description: 'Share-scoped AG Grid SSR paginated features. Mirrors the authenticated

        path in ``table_handlers.get_layer_features_paginated`` but guards with the

        share token + verifies the layer belongs to the shared project.'
      operationId: get_shared_layer_features_paginated_api_v1_share__share_token__layers__layer_id__features_paginated_get
      parameters:
      - name: layer_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Layer Id
      - name: share_token
        in: path
        required: true
        schema:
          type: string
          title: Share Token
      - 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
      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/share/{share_token}/layers/{layer_id}/features/filtered-ids:
    get:
      tags:
      - share
      summary: Get Shared Layer Filtered Ids
      description: 'Share-scoped feature ids matching the current filter set.


        Mirrors ``table_handlers.get_layer_filtered_ids`` but guards with the

        share token + verifies the layer belongs to the shared project. Powers

        map-filter sync and spatial polygon filtering on shared dashboards.'
      operationId: get_shared_layer_filtered_ids_api_v1_share__share_token__layers__layer_id__features_filtered_ids_get
      parameters:
      - name: layer_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Layer Id
      - name: share_token
        in: path
        required: true
        schema:
          type: string
          title: Share Token
      - 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
      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/share/{share_token}/layers/{layer_id}/features/filtered-count:
    get:
      tags:
      - share
      summary: Get Shared Layer Filtered Count
      description: 'Share-scoped total row count matching the current filter set.


        Mirrors ``table_handlers.get_layer_filtered_count`` but guards with the

        share token + verifies the layer belongs to the shared project.'
      operationId: get_shared_layer_filtered_count_api_v1_share__share_token__layers__layer_id__features_filtered_count_get
      parameters:
      - name: layer_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Layer Id
      - name: share_token
        in: path
        required: true
        schema:
          type: string
          title: Share Token
      - 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
      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/share/{share_token}/layers/{layer_id}/features/navigate:
    get:
      tags:
      - share
      summary: Get Shared Layer Navigate
      description: 'Share-scoped prev/next cursor for shared dashboards. Mirrors

        ``table_handlers.navigate_layer_feature`` — single CTE per call,

        cap-free up to whatever the filtered set contains.'
      operationId: get_shared_layer_navigate_api_v1_share__share_token__layers__layer_id__features_navigate_get
      parameters:
      - name: layer_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Layer Id
      - name: share_token
        in: path
        required: true
        schema:
          type: string
          title: Share Token
      - 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
      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/share/{share_token}/layers/{layer_id}/columns:
    get:
      tags:
      - share
      summary: Get Shared Layer Columns Metadata
      description: 'Share-scoped column metadata + aggregate stats. Mirrors

        ``table_handlers.get_layer_columns_metadata`` with a share-token guard.'
      operationId: get_shared_layer_columns_metadata_api_v1_share__share_token__layers__layer_id__columns_get
      parameters:
      - name: share_token
        in: path
        required: true
        schema:
          type: string
          title: Share Token
      - name: layer_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Layer Id
      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/share/{share_token}/views:
    get:
      tags:
      - share
      summary: Get Shared Project Views
      description: "Get all views for a shared project.\n\nPer-view state is keyed by layer id (filters, column visibility/order,\nlayer visibility), so state for share-restricted (parcel) layers is\nstripped from each view — otherwise a shared view leaks the parcel\nlayer's column keys and the user's filter values even though the layer\nis omitted from the shared layer list.\n\nArgs:\n    share: Validated ProjectShare from token\n    share_service: ProjectShareService for fetching view data\n    layer_service: Service resolving which layers are share-restricted\n\nReturns:\n    List of views with filters converted to client display units\n\nRaises:\n    HTTPException: 404 if project not found"
      operationId: get_shared_project_views_api_v1_share__share_token__views_get
      parameters:
      - name: share_token
        in: path
        required: true
        schema:
          type: string
          title: Share Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ViewsGetResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/share/{share_token}/chats:
    get:
      tags:
      - share
      summary: Get Shared Project Chats
      description: "Get chat history for a shared project (read-only).\n\nStructured tool data IS stripped: tool-call and tool-return parts (e.g.\nquery_sql parcel rows persisted as ToolReturnParts) are removed before the\npayload reaches the anonymous share wire. Only prose is not stripped —\nassistant natural-language messages are preserved, because scanning free-form\nconversation for incidental parcel mentions would mean parsing LLM text,\nunreliable and out of this restriction's scope.\n\nArgs:\n    share: Validated ProjectShare from token\n    share_service: ProjectShareService for fetching chat data\n\nReturns:\n    Chat history with system instructions stripped, or None if no chat exists"
      operationId: get_shared_project_chats_api_v1_share__share_token__chats_get
      parameters:
      - name: share_token
        in: path
        required: true
        schema:
          type: string
          title: Share Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChatHistoryResponseSchema'
        '422':
          description: Validation E

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