OGC API - DGGS

Standards-compliant OGC API - Discrete Global Grid Systems endpoint exposing the GeoInsight Spatial Token store for zone-based queries. Fourteen read operations across four resource families: a landing page and service description, a collection catalogue (22 published collections), the DGGRS registry (H3, ISEA3H via both DGGRID and DGGAL, IGEO7, IVEA3H), zone discovery and zone data retrieval with relative-depth aggregation, and an OGC API - Features style /items surface backed by a GeoParquet lake with CQL2 filtering. Zone data requests accept COG raster statistics parameters (band, no-data, sampling factor, all-touched) and STAC search strategies (single, latest, mosaic) with cloud-cover and intersection thresholds. Reads answer anonymously at the time of probing; the official Python package documents a GeoInsight Personal Token (GPT) plus API Private Key (APK) issued from the dashboard.

OpenAPI Specification

geoinsight-ogc-api-dggs-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: oda
  description: ''
  license:
    name: ''
  version: 3.0.0
  x-apievangelist-note: Harvested verbatim from https://api.geoinsight.ai/api?f=json on 2026-08-20. info.title is the vendor
    internal name "oda"; the service self-identifies at its root document as "OGC DGGS API" with attribution to GeoInsight
    (https://docs.geoinsight.ai). servers[] was absent in the published document and was added by API Evangelist from the
    fetch host; nothing else was altered.
paths:
  /:
    get:
      tags:
      - root
      operationId: root_handler
      responses:
        '200':
          description: Get root
  /collections:
    get:
      tags:
      - Collections
      operationId: utoipa_doc
      responses:
        '200':
          description: Get Collections
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionsResponse'
            text/html:
              schema:
                type: string
  /collections/{collection_id}:
    get:
      tags:
      - Collection ID
      operationId: collection_id_utoipa_doc
      parameters:
      - name: collection_id
        in: path
        description: Collection identifier
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Get Collection ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionIdResponse'
            text/html:
              schema:
                type: string
  /collections/{collection_id}/dggs:
    get:
      tags:
      - DGGS
      operationId: collection_id_utoipa_doc
      parameters:
      - name: collection_id
        in: path
        description: Collection identifier
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Get collection_id DGGS's
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DggsResponse'
            text/html:
              schema:
                type: string
  /collections/{collection_id}/dggs/{dggrs_id}:
    get:
      tags:
      - DGGRS ID
      operationId: collection_id_dggrs_id_utoipa_doc
      parameters:
      - name: collection_id
        in: path
        description: Collection identifier
        required: true
        schema:
          type: string
      - name: dggrs_id
        in: path
        description: DGGRS_ID identifier
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Get collection_id DGGRS
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DggrsIdResponse'
            text/html:
              schema:
                type: string
  /collections/{collection_id}/dggs/{dggrs_id}/zones:
    get:
      tags:
      - Zones
      operationId: collection_id_dggrs_id_utoipa_doc
      parameters:
      - name: collection_id
        in: path
        description: Collection identifier
        required: true
        schema:
          type: string
      - name: dggrs_id
        in: path
        description: DGGRS identifier
        required: true
        schema:
          type: string
      - name: refined-geometry
        in: query
        description: 'Densify zone geometry by interpolating additional points along edges. Default: true.'
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: Get ZONES
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZonesResponse'
            text/html:
              schema:
                type: string
            application/geo+json:
              schema:
                type: string
            application/vnd.apache.parquet:
              schema:
                type: string
            application/vnd.geo+parquet:
              schema:
                type: string
        '422':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
  /collections/{collection_id}/dggs/{dggrs_id}/zones/{zone_id}:
    get:
      tags:
      - Zone ID
      operationId: collection_id_dggrs_id_zone_id_utoipa_doc
      parameters:
      - name: collection_id
        in: path
        description: Collection identifier
        required: true
        schema:
          type: string
      - name: dggrs_id
        in: path
        description: DGGRS identifier
        required: true
        schema:
          type: string
      - name: zone_id
        in: path
        description: Zone identifier
        required: true
        schema:
          type: string
      - name: refined-geometry
        in: query
        description: 'Densify zone geometry by interpolating additional points along edges. Default: true.'
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: Get ZONES
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZoneIdResponse'
            text/html:
              schema:
                type: string
            application/geo+json:
              schema:
                type: string
  /collections/{collection_id}/dggs/{dggrs_id}/zones/{zone_id}/data:
    get:
      tags:
      - Data
      operationId: collection_id_dggrs_id_zone_id_data_utoipa_doc
      parameters:
      - name: collection_id
        in: path
        description: Collection identifier
        required: true
        schema:
          type: string
      - name: dggrs_id
        in: path
        description: DGGRS identifier
        required: true
        schema:
          type: string
      - name: zone_id
        in: path
        description: Zone identifier
        required: true
        schema:
          type: string
      - name: f
        in: query
        description: 'Response format. Accepted values: `json`, `dggs+json`, `geo+json`, `html`, `parquet`, `geoparquet`.
          Defaults to content negotiation via the `Accept` header.'
        required: false
        schema:
          type: string
      - name: zone-depth
        in: query
        description: Relative depth of child zones to aggregate. Accepts a single integer (e.g. `1`) or a comma-separated
          list (e.g. `1,2`). Defaults to the DGGRS-defined default depth.
        required: false
        schema:
          type: string
      - name: datetime
        in: query
        description: Temporal filter in RFC 3339 format. Accepts an instant (`2024-01-01T00:00:00Z`) or an interval (`2024-01-01/2025-01-01`).
          Open-ended intervals use `..` (e.g. `2024-01-01/..`).
        required: false
        schema:
          type: string
      - name: properties
        in: query
        description: Comma-separated list of queryable names to include in the response (e.g. `ndvi,evi`). Returns all queryables
          when omitted.
        required: false
        schema:
          type: string
      - name: exclude-properties
        in: query
        description: Comma-separated list of queryable names to exclude from the response. Applied after `properties`.
        required: false
        schema:
          type: string
      - name: refined-geometry
        in: query
        description: 'Densify zone geometry by interpolating additional points along edges. Relevant for geo+json and geoparquet
          formats. Default: false.'
        required: false
        schema:
          type: boolean
      - name: cog-url
        in: query
        description: URL of an arbitrary COG to query directly. Used on the /dggs/{dggrs_id}/zones/{zone_id}/data route (no
          collection). Bypasses collection lookup and caching.
        required: false
        schema:
          type: string
      - name: cog-stat
        in: query
        description: 'Comma-separated statistics for a cog-url query (e.g. mean,min,max). Accepted values: count, valid, min,
          max, mean, median. Defaults to mean.'
        required: false
        schema:
          type: string
      - name: cog-band
        in: query
        description: Comma-separated 1-based band indices to read (e.g. 1,2,3). Defaults to 1.
        required: false
        schema:
          type: string
      - name: cog-no-data-value
        in: query
        description: Override the COG no-data value. Pixels equal to this value are excluded from statistics. Applies to all
          raster sources (STAC, URL, direct COG). Overrides the collection-level default.
        required: false
        schema:
          type: number
          format: double
      - name: cog-sampling-factor
        in: query
        description: Sampling density multiplier relative to zone count. Higher values increase accuracy. Defaults to 8.0.
        required: false
        schema:
          type: number
          format: double
      - name: cog-all-touched
        in: query
        description: When true, include pixels whose boundaries are only touched by zone polygons. Defaults to false.
        required: false
        schema:
          type: boolean
      - name: stac-search-strategy
        in: query
        description: 'STAC search strategy: `single` (default), `latest`, or `mosaic`. `latest` takes the newest item with
          no intersection check; `single` takes the newest item individually meeting the intersection threshold; `mosaic`
          accumulates items newest-first until their combined footprint reaches the coverage target (requires a `datetime`
          range). Overrides the collection-level default.'
        required: false
        schema:
          type: string
      - name: intersection_percent
        in: query
        description: 'Intersection percentage (0–100) of the parent zone. For `single`: minimum that the chosen item alone
          must cover (`0` disables the check, default). For `mosaic`: total combined coverage target (unset = 100%). Ignored
          for `latest`. Overrides the collection-level default.'
        required: false
        schema:
          type: number
          format: double
      - name: cloud_cover_percent
        in: query
        description: Maximum `eo:cloud_cover` percentage (0–100) allowed for STAC items. Omit to disable the filter (default).
          Overrides the collection-level default.
        required: false
        schema:
          type: number
          format: double
      responses:
        '200':
          description: Get DATA
          content:
            application/vnd.ogc.dggs+json:
              schema:
                $ref: '#/components/schemas/DataResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/DataResponse'
            application/geo+json:
              schema:
                type: string
            text/html:
              schema:
                type: string
            application/vnd.apache.parquet:
              schema:
                type: string
            application/vnd.geo+parquet:
              schema:
                type: string
        '422':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
  /collections/{collection_id}/items:
    get:
      tags:
      - Items
      operationId: items_utoipa_doc
      parameters:
      - name: collection_id
        in: path
        description: Collection identifier
        required: true
        schema:
          type: string
      - name: limit
        in: query
        description: Page size (default 10, max 1000)
        required: false
        schema:
          type: integer
          minimum: 0
      - name: offset
        in: query
        description: 0-based row offset into the lake parquet; numberMatched - limit pages the tail of the data
        required: false
        schema:
          type: integer
          minimum: 0
      - name: bbox
        in: query
        description: Spatial filter min_x,min_y,max_x,max_y (CRS84 lon/lat); rows whose geometry intersects the box. Uses
          bbox_* zonemap columns and/or ST_Intersects on the geometry column
        required: false
        schema:
          type: string
      - name: datetime
        in: query
        description: 'Temporal filter on the datetime column: RFC 3339 instant or interval (start/end, start/.., ../end)'
        required: false
        schema:
          type: string
      - name: properties
        in: query
        description: Comma-separated columns to keep (geometry is retained for geojson/geoparquet unless excluded explicitly)
        required: false
        schema:
          type: string
      - name: exclude-properties
        in: query
        description: Comma-separated columns to drop
        required: false
        schema:
          type: string
      - name: filter
        in: query
        description: CQL2 filter expression over the parquet columns, e.g. population > 10000 AND name LIKE 'A%'
        required: false
        schema:
          type: string
      - name: filter-lang
        in: query
        description: 'Language of filter: cql2-text (default) or cql2-json'
        required: false
        schema:
          type: string
      - name: f
        in: query
        description: 'Format: geojson (default, FeatureCollection), json (raw inspection view with files, columns and WKB
          previews), html (table view), parquet (page as a parquet file), geoparquet (page as GeoParquet)'
        required: false
        schema:
          type: string
      responses:
        '200':
          description: One page of the collection's raw lake parquet rows
          content:
            application/geo+json:
              schema:
                $ref: '#/components/schemas/FeatureCollectionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/RawItemsResponse'
            text/html:
              schema:
                type: string
        '400':
          description: Invalid collection id or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: No parquet data in the lake for this collection
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '406':
          description: Unsupported format (png, tiff)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
  /collections/{collection_id}/items/{feature_id}:
    get:
      tags:
      - Items
      operationId: item_id_utoipa_doc
      parameters:
      - name: collection_id
        in: path
        description: Collection identifier
        required: true
        schema:
          type: string
      - name: feature_id
        in: path
        description: 0-based row index in lake parquet glob scan order (within the filtered set when bbox/datetime are given);
          only stable while the lake prefix does not change
        required: true
        schema:
          type: integer
          minimum: 0
      - name: bbox
        in: query
        description: Spatial filter min_x,min_y,max_x,max_y (CRS84 lon/lat)
        required: false
        schema:
          type: string
      - name: datetime
        in: query
        description: 'Temporal filter on the datetime column: RFC 3339 instant or interval'
        required: false
        schema:
          type: string
      - name: properties
        in: query
        description: Comma-separated columns to keep
        required: false
        schema:
          type: string
      - name: exclude-properties
        in: query
        description: Comma-separated columns to drop
        required: false
        schema:
          type: string
      - name: filter
        in: query
        description: CQL2 filter expression over the parquet columns
        required: false
        schema:
          type: string
      - name: filter-lang
        in: query
        description: 'Language of filter: cql2-text (default) or cql2-json'
        required: false
        schema:
          type: string
      - name: f
        in: query
        description: 'Format: geojson (default, Feature), json (raw row), html (property table), parquet / geoparquet (single-row
          file)'
        required: false
        schema:
          type: string
      responses:
        '200':
          description: A single raw lake parquet row
          content:
            application/geo+json:
              schema:
                $ref: '#/components/schemas/FeatureResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/RawItemResponse'
            text/html:
              schema:
                type: string
        '400':
          description: Invalid collection id
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Collection has no lake data or feature_id is out of range
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '406':
          description: Unsupported format (png, tiff)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
  /dggs:
    get:
      tags:
      - DGGS
      operationId: utoipa_doc
      responses:
        '200':
          description: Get DGGS's
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DggsResponse'
            text/html:
              schema:
                type: string
  /dggs/{dggrs_id}:
    get:
      tags:
      - DGGRS ID
      operationId: dggrs_id_utoipa_doc
      parameters:
      - name: dggrs_id
        in: path
        description: DGGRS_ID identifier
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Get DGGRS_ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DggrsIdResponse'
            text/html:
              schema:
                type: string
  /dggs/{dggrs_id}/zones:
    get:
      tags:
      - Zones
      operationId: dggrs_id_utoipa_doc
      parameters:
      - name: dggrs_id
        in: path
        description: DGGRS identifier
        required: true
        schema:
          type: string
      - name: refined-geometry
        in: query
        description: 'Densify zone geometry by interpolating additional points along edges. Default: true.'
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: Get ZONES
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZonesResponse'
            text/html:
              schema:
                type: string
            application/geo+json:
              schema:
                type: string
            application/vnd.apache.parquet:
              schema:
                type: string
            application/vnd.geo+parquet:
              schema:
                type: string
        '422':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
  /dggs/{dggrs_id}/zones/{zone_id}:
    get:
      tags:
      - Zone ID
      operationId: dggrs_id_zone_id_utoipa_doc
      parameters:
      - name: dggrs_id
        in: path
        description: DGGRS identifier
        required: true
        schema:
          type: string
      - name: zone_id
        in: path
        description: Zone identifier
        required: true
        schema:
          type: string
      - name: refined-geometry
        in: query
        description: 'Densify zone geometry by interpolating additional points along edges. Default: true.'
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: Get ZONES
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZoneIdResponse'
            text/html:
              schema:
                type: string
            application/geo+json:
              schema:
                type: string
components:
  schemas:
    ApiError:
      type: object
      description: API error response body for JSON error messages.
      required:
      - code
      - message
      properties:
        code:
          type: integer
          format: int32
          description: HTTP status code
          example: 422
          minimum: 0
        hint:
          type:
          - string
          - 'null'
          description: Optional hint to help client fix the request
          example: Parameter `parent-zone-level` is required when `parent-zone` is provided
        message:
          type: string
          description: Fixed message describing the error
          example: Validation Failed
        redirect_location:
          type:
          - string
          - 'null'
    CollectionId:
      type: object
      required:
      - id
      - links
      properties:
        attribution:
          type:
          - string
          - 'null'
        crs:
          type:
          - array
          - 'null'
          items:
            type: string
        description:
          type:
          - string
          - 'null'
        extent:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/Extent'
        id:
          type: string
        item_type:
          type:
          - string
          - 'null'
        links:
          type: array
          items:
            $ref: '#/components/schemas/Link'
        title:
          type:
          - string
          - 'null'
    CollectionIdResponse:
      type: object
      required:
      - id
      - links
      properties:
        attribution:
          type:
          - string
          - 'null'
        crs:
          type:
          - array
          - 'null'
          items:
            type: string
        description:
          type:
          - string
          - 'null'
        extent:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/Extent'
        id:
          type: string
        item_type:
          type:
          - string
          - 'null'
        links:
          type: array
          items:
            $ref: '#/components/schemas/Link'
        title:
          type:
          - string
          - 'null'
    CollectionsResponse:
      type: object
      required:
      - links
      - collections
      properties:
        collections:
          type: array
          items:
            $ref: '#/components/schemas/CollectionId'
        links:
          type: array
          items:
            $ref: '#/components/schemas/Link'
    DataResponse:
      type: object
      required:
      - dggrs
      - zoneId
      - depths
      - links
      properties:
        defaultDepth:
          type:
          - integer
          - 'null'
          format: int32
        depths:
          type: array
          items:
            type: integer
            format: int32
        dggrs:
          type: string
        dimensions:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/Dimension'
        links:
          type: array
          items:
            $ref: '#/components/schemas/Link'
        schema:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/Schema'
        zoneId:
          type: string
    DggrsId:
      type: object
      required:
      - id
      - title
      - uri
      - links
      properties:
        id:
          type: string
        links:
          type: array
          items:
            $ref: '#/components/schemas/Link'
        title:
          type: string
        uri:
          type: string
    DggrsIdResponse:
      type: object
      required:
      - id
      - title
      - uri
      properties:
        crs:
          type:
          - array
          - 'null'
          items:
            type: string
        default_depth:
          type:
          - integer
          - 'null'
          format: int32
        description:
          type:
          - string
          - 'null'
        id:
          type: string
        links:
          type: array
          items:
            $ref: '#/components/schemas/Link'
        max_refinement_level:
          type:
          - integer
          - 'null'
          format: int32
        max_relative_depth:
          type:
          - integer
          - 'null'
          format: int32
        title:
          type: string
        uri:
          type: string
    DggsResponse:
      type: object
      required:
      - links
      - dggrs
      properties:
        dggrs:
          type: array
          items:
            $ref: '#/components/schemas/DggrsId'
        links:
          type: array
          items:
            $ref: '#/components/schemas/Link'
    Dimension:
      type: object
      required:
      - name
      - grid
      - interval
      properties:
        definition:
          type:
          - string
          - 'null'
        grid:
          $ref: '#/components/schemas/Grid'
        interval:
          type: array
          items:
            oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/NumStr'
        name:
          type: string
        unit:
          type:
          - string
          - 'null'
        unitLang:
          type:
          - string
          - 'null'
    Extent:
      type: object
      properties:
        spatial:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/Spatial'
        temporal:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/Temporal'
    FeatureCollectionResponse:
      type: object
      description: OGC API Features `getFeatures` response over the collection's lake parquet.
      required:
      - type
      - timeStamp
      - numberMatched
      - numberReturned
      - features
      - links
      properties:
        features:
          type: array
          items:
            $ref: '#/components/schemas/FeatureResponse'
        links:
          type: array
          items:
            $ref: '#/components/schemas/Link'
        numberMatched:
          type: integer
          format: int64
        numberReturned:
          type: integer
          minimum: 0
        timeStamp:
          type: string
        type:
          type: string
    FeatureResponse:
      type: object
      description: 'A single GeoJSON Feature read from the lake parquet. `id` is the 0-based

        row index in glob scan order (the raw parquet carries no guaranteed id

        column) — only stable while the lake prefix doesn''t change.'
      required:
      - type
      - id
      - geometry
      - properties
      properties:
        geometry:
          type: object
        id:
          type: integer
          minimum: 0
        links:
          type: array
          items:
            $ref: '#/components/schemas/Link'
        properties:
          type: object
        type:
          type: string
    FileInfo:
      type: object
      description: One parquet file under the collection's lake data prefix with its row count.
      required:
      - file
      - rows
      properties:
        file:
          type: string
        rows:
          type: integer
          format: int64
    Grid:
      type: object
      required:
      - cellsCount
      properties:
        boundCoordinates:
          type:
          - array
          - 'null'
          items:
            oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/NumStr'
        cellsCount:
          type: integer
          format: int32
          minimum: 0
        coordinates:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/NumStr'
        firstCoordinate:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/NumStr'
        relativeBounds:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/NumStr'
        resolution:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/NumStr'
    Link:
      type: object
      required:
      - href
      - rel
      properties:
        href:
          type: string
        hreflang:
          type:
          - string
          - 'null'
        length:
          type:
          - integer
          - 'null'
          format: int64
        rel:
          type: string
        title:
          type:
          - string
          - 'null'
        type:
          type:
          - string
          - 'null'
    LinkTemplate:
      type: object
      required:
      - rel
      - title
      - uriTemplate
      properties:
        rel:
          type: string
        title:
          type: string
        uriTemplate:
          type: string
    NumStr:
      oneOf:
      - type: object
        required:
        - U8
        properties:
          U8:
            type: integer
            format: int32
            minimum: 0
      - type: object
        required:
        - String
        properties:
          String:
            type: string
    PropertyType:
      type: string
      enum:
      - array
      - boolean
      - integer
      - 'null'
      - number
      - object
      - string
    RawItemResponse:
      type: object
      description: Raw inspection view of a single row (`/items/{feature_id}?f=json`).
      required:
      - collection
      - source
      - numberMatched
      - feature_id
      - item
      - links
      properties:
        collection:
          type: string
        feature_id:
          type: integer
          minimum: 0
        item:
          type: object
        links:
          type: array
          items:
            $ref: '#/components/schemas/Link'
        numberMatched:
          type: integer
          format: int64
        source:
          type: string
          description: The `read_parquet` glob the row was read from.
    RawItemsResponse:
      type: object
      description: 'Raw inspection view (`f=json`): rows exactly as they sit in the lake

        parquet (geometry as a truncated WKB hex preview), plus the file list and

        row counts a local `SELECT * FROM read_parquet(''s3://…'')` would show.'
      required:
      - collection
      - source
      - numberMatched
      - numberReturned
      - limit
      - offset
      - files
      - columns
      - items
      - links
      properties:
        collection:
          type: string
        columns:
          type: array
          items:
            type: string
        files:
          type: array
          items:
            $ref: '#/components/schemas/FileInfo'
        items:
          type: array
          items:
            type: object
        limit:
          type: integer
          minimum: 0
        links:
          type: array
          items:
            $ref: '#/components/schemas/Link'
        numberMatched:
          type: integer
          format: int64
        numberReturned:
          type: integer
          minimum: 0
        offset:
          type: integer
          minimum: 0
        source:
          type: string
          description: The `read_parquet` glob the rows were read from.
    RootResponse:
      type: object
      required:
      - links
      properties:
        attribution:
          type:
          - string
          - 'null'
        description:
          type:
          - string
          - 'null'
        links:
          type: array
          items:
            $ref: '#/components/schemas/Link'
        title:
          type:
          - string
          - 'null'
    Schema:
      type: object
      required:
      - type
      - properties
      properties:
        properties:
          type: object
          additionalProperties:
            $ref: '#

# --- truncated at 32 KB (36 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/geoinsight/refs/heads/main/openapi/geoinsight-ogc-api-dggs-openapi.yml