openapi: 3.0.1
info:
  title: Geodatakatalog för Höjdmodell Brytgeometri
  version: '1.0'
  description: |-
    Detta dokument beskriver Lantmäteriets API "Geodatakatalog Sökning för Höjdmodell Brytgeometri
    som implementerar SpatioTemporal Asset Catalog API (STAC) med STAC API och OGC API - Features (OAPIF).

    Följande utökningar är implementerade:
    * OAPIF Part 2: CRS för att hämta och söka med geometrier i olika referenssystem.
    * STAC API Query Extension för attributvis sökning.

    Bas-URL:en för denna dokumentation är https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1
    
    **Skillnader från Sökning v1**
    
    Den största skillnaden är att SWEREF 99 TM inte längre är standardkoordinatsystem för alla geometrier.
    Istället används WGS 84 som standard, enligt STAC- och OAPIF-specarna. Man kan fortfarande använda SWEREF
    i frågor och svar genom `crs`- och `bbox-crs`-parametern, enligt OAPIF Part 2: CRS.
    
    Dessutom har tjänsten har bytt versioner av de specifikationer som implementeras:  
    * STAC - v0.9.0 -> v1.0.0
    * STAC API - ny -> v1.0.0
    * OAPIF Part 1: Core - v1.0 -> v1.0.1
    * OAPIF Part 2: CRS - Draft 1 -> v1.0
    
    I praktiken innebär det följande ändringar:
    * Utseende på `Content-Crs` headern har bytt format, från `urn:ogc:def:crs:EPSG::3006; axisOrder=lon,lat`
      till `<http://www.opengis.net/def/crs/EPSG/0/3006>`.
    * Alla attribut av typen datumtid visas i UTC istället för svensk tidszon.
    * Överallt där attributet `stacVersion` finns har värdet bytts från `0.9.0` till `1.0.0`.
    * Attributen `title` och `providers` har tagits bort från Features.
    * I `/` har attributet `conformsTo` lagts till.
    * I `/conformance` har följande conformance-klasser lagts till:
      ```
      https://api.stacspec.org/v1.0.0/core
      https://api.stacspec.org/v1.0.0/collections
      https://api.stacspec.org/v1.0.0/ogcapi-features
      https://api.stacspec.org/v1.0.0/item-search
      https://api.stacspec.org/v1.0.0/item-search#query
      ```
    * I `/collections` har länken till schemat ändrat värdet på `rel` från `describedBy` till `describedby`.
    * I `/search`-ingången ignorerades tidigare övriga sökparametrar om `ids` angavs, nu kombineras de med övriga parametrar som vanligt.

    **Länkar**
    * [STAC Spec](https://stacspec.org)
    * [OGC API - Features Spec](https://www.opengeospatial.org/standards/ogcapi-features)
  contact:
    name: Lantmäteriet
    url: 'https://www.lantmateriet.se'
  license:
    name: 'CC0-1.0'
    url: 'https://creativecommons.org/publicdomain/zero/1.0/legalcode'
servers:
  - url: https://api-ver.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1
    description: Verifikation
  - url: https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1
    description: Produktion
security:
  - clientCredentialsAuth: []
  - passwordAuth: []
  - clientCredentialsVerAuth: []
  - passwordVerAuth: []
tags:
  - name: Egenskaper
    description: Information om detta API och dess datamängder.
  - name: Data
    description: Åtkomst till data (referensobjekt).
  - name: STAC
    description: Utökning av OGC API - Features för att stöda sök-API.
paths:
  '/':
    get:
      tags:
        - Egenskaper
      summary: Startsida
      description: |-
        Hämtar rotkatalogen som är startpunkten för att bläddra bland informationen.

        Startsidan har länkar till API-definitionen, kompatibilitetsinformation,
        sökingång, och till datamängder.
      operationId: getLandingPage
      responses:
        '200':
          $ref: '#/components/responses/LandingPage'
        '500':
          $ref: '#/components/responses/ServerError'
  '/conformance':
    get:
      tags:
        - Egenskaper
      summary: Information om specifikationer som detta API följer
      description: |-
        En lista på OAPIF kompatibilitetsklasser som tjänsten uppfyller.
      operationId: getConformanceDeclaration
      responses:
        '200':
          $ref: '#/components/responses/ConformanceDeclaration'
        '500':
          $ref: '#/components/responses/ServerError'
  '/collections':
    get:
      tags:
        - Egenskaper
      summary: Datamängderna i informationsområdet
      operationId: getCollections
      parameters:
        - $ref: '#/components/parameters/crs'
      responses:
        '200':
          $ref: '#/components/responses/Collections'
        '500':
          $ref: '#/components/responses/ServerError'
  '/collections/{collectionId}':
    get:
      tags:
        - Egenskaper
      summary: Beskriv datamängden med id collectionId
      operationId: describeCollection
      parameters:
        - $ref: '#/components/parameters/collectionId'
        - $ref: '#/components/parameters/crs'
      responses:
        '200':
          $ref: '#/components/responses/Collection'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  '/collections/{collectionId}/items':
    get:
      tags:
        - Data
      summary: Hämta referensobjekt
      description: |-
        Hämta referensobjekt från datamängden med id `collectionId`.

        Alla referensobjekt tillhör en datamängd. Ett informationsområde har flera
        datamängder, ofta en per kommun.
      operationId: getFeatures
      parameters:
        - $ref: '#/components/parameters/collectionId'
        - $ref: '#/components/parameters/bbox'
        - $ref: '#/components/parameters/bbox-crs'
        - $ref: '#/components/parameters/datetime'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/afterId'
        - $ref: '#/components/parameters/crs'
      responses:
        '200':
          $ref: '#/components/responses/Features'
        '400':
          $ref: '#/components/responses/InvalidParameter'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  '/collections/{collectionId}/items/{featureId}':
    get:
      tags:
        - Data
      summary: Hämta enstaka referensobjekt
      description: |-
        Hämta referensobjektet med id `featureId` i datamängden med id `collectionId`.
      operationId: getFeature
      parameters:
        - $ref: '#/components/parameters/collectionId'
        - $ref: '#/components/parameters/featureId'
        - $ref: '#/components/parameters/crs'
      responses:
        '200':
          $ref: '#/components/responses/Feature'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /search:
    get:
      summary: Sök bland referensobjekt med enkel filtrering
      description: |-
        Hämta referensobjekt som matchar givna filter. Använd `POST /search`
        för mer avancerade sökningar.
      operationId: getSearchSTAC
      tags:
        - STAC
      parameters:
        - $ref: '#/components/parameters/bbox'
        - $ref: '#/components/parameters/bbox-crs'
        - $ref: '#/components/parameters/datetime'
        - $ref: '#/components/parameters/intersects'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/afterId'
        - $ref: '#/components/parameters/ids'
        - $ref: '#/components/parameters/collectionsArray'
        - $ref: '#/components/parameters/crs'
      responses:
        '200':
          $ref: '#/components/responses/Features'
        '500':
          $ref: '#/components/responses/ServerError'
    post:
      summary: Sök bland referensobjekt
      description: |-
        Hämta referensobjekt som matchar givna filter.
      operationId: postSearchSTAC
      parameters:
        - $ref: '#/components/parameters/bbox-crs'
        - $ref: '#/components/parameters/afterId'
        - $ref: '#/components/parameters/crs'
      tags:
        - STAC
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/searchBody'
      responses:
        '200':
          $ref: '#/components/responses/Features'
        '500':
          $ref: '#/components/responses/ServerError'
components:
  securitySchemes:
    clientCredentialsAuth:
      type: oauth2
      description: Autentisering med OAuth2 Client Credentials flow i produktionsmiljön.
      flows:
        clientCredentials:
          tokenUrl: https://api.lantmateriet.se/token
          scopes: { }
    passwordAuth:
      type: oauth2
      description: Autentisering med OAuth2 Resource Owner/Password flow i produktionsmiljön.
      flows:
        password:
          tokenUrl: https://api.lantmateriet.se/token
          scopes: { }
    clientCredentialsVerAuth:
      type: oauth2
      description: Autentisering med OAuth2 Client Credentials flow i verifikationsmiljön.
      flows:
        clientCredentials:
          tokenUrl: https://api-ver.lantmateriet.se/token
          scopes: { }
    passwordVerAuth:
      type: oauth2
      description: Autentisering med OAuth2 Resource Owner/Password flow i verifikationsmiljön.
      flows:
        password:
          tokenUrl: https://api-ver.lantmateriet.se/token
          scopes: { }
  parameters:
    afterId:
      name: afterId
      in: query
      description: |-
        Används för paginering ihop med `limit`-parametern.

        Om en fråga ger fler träffar än vad som tillåts av `limit`, så kan nästa "sida"
        hämtas genom att ställa samma fråga igen, men där `afterId` sätts till idt för det sista
        objektet i det föregående svaret.

        Klienter avråds dock från att bry sig om logiken i detta. Istället bör de använda länken där
        `rel` har värdet `next`, som sätts i `links`-listan om svaret inte innehåller alla träffar.
      required: false
      schema:
        type: string
        format: uuid
      style: form
      explode: false
    bbox:
      name: bbox
      in: query
      description: |-
        Hämta bara referensobjekt vars geometri berör rutan. Avgränsningen kan anges som
        fyra eller sex siffror, men höjdledsaxeln kommer att ignoreras.

        * Sydvästra hörnet, östlig riktning
        * Sydvästra hörnet, nordlig riktning
        * Lägsta höjd (valfri)
        * Nordöstra hörnet, östlig riktning
        * Nordöstra hörnet, nordlig riktning
        * Högsta höjd (valfri)

        Koordinatsystemet är WGS 84, om inte annat anges i `bbox-crs`-parametern.

        Exempel: En ruta över Sverige kan representeras i en fråga som
        `bbox=10.94,55.98,26.08,69.05`.
      required: false
      schema:
        type: array
        minItems: 4
        maxItems: 6
        items:
          type: number
      style: form
      explode: false
    bbox-crs:
      name: bbox-crs
      in: query
      description: |-
        Anger vilket referenssystem som frågans geometrier (`bbox` eller `intersects`) är i.
        Som standard används WGS 84.

        EPSG-koder kan anges på formen `http://www.opengis.net/def/crs/EPSG/0/3006` eller
        `urn:ogc:def:crs:EPSG::3006`.
      required: false
      schema:
        type: string
        default: 'http://www.opengis.net/def/crs/OGC/1.3/CRS84'
      style: form
      explode: false
    collectionId:
      name: collectionId
      in: path
      description: Lokalt id för en datamängd.
      required: true
      schema:
        type: string
    collectionsArray:
      name: collections
      in: query
      description: |
        Lista med datamängdsidn som ska ingå i sökningen. Bara referensobjekt som ingår
        i något av de angivna datamängderna hämtas.
      required: false
      schema:
        $ref: '#/components/schemas/collectionsArray'
      explode: false
    crs:
      name: crs
      in: query
      description: |-
        Anger vilket referenssystem som svarets geometrier ska vara i. Som standard
        används WGS 84.

        EPSG-koder kan anges på formen `http://www.opengis.net/def/crs/EPSG/0/3006` eller
        `urn:ogc:def:crs:EPSG::3006`.
      required: false
      schema:
        type: string
        default: 'http://www.opengis.net/def/crs/OGC/1.3/CRS84'
      style: form
      explode: false
    datetime:
      name: datetime
      in: query
      description: |-
        Filtrering på attributet `datetime` i referensobjektet, vilket innehåller tiden då
        den senaste versionen av objektet blev tillgängligt för åtkomst. Parametern kan
        alltså t.ex. används för att hitta objekt som är nya eller har ändrats sedan en viss
        tidpunkt.

        En datumtid eller ett intervall, öppet eller stängt. Datum och tid ska följa
        RFC 3339. Intervall är två datumtider åtskilda av ett snedstreck. Öppna
        intervall uttrycks med två punkter.

        Exempel:

        * En datumtid: `2018-02-12T23:20:50+01:00`
        * Ett stängt intervall: `2018-02-12T00:00:00+01:00/2018-03-18T12:31:12+01:00`
        * Öppna intervall: `2018-02-12T00:00:00+01:00/..` eller `../2018-03-18T12:31:12+01:00`
      required: false
      schema:
        type: string
      style: form
      explode: false
    featureId:
      name: featureId
      in: path
      description: Ett referensobjekts objektidentitet.
      required: true
      schema:
        type: string
    ids:
      name: ids
      in: query
      description: |-
        Lista med objektidentiteter.
      required: false
      schema:
        $ref: '#/components/schemas/ids'
      explode: false
    intersects:
      name: intersects
      in: query
      description: |-
        Hämta bara referensobjekt vars geometri berör den angivna geometrin. Geometrin
        ska vara i GeoJSON-format, men måste URL-encodas när den skickas in i en queryparameter.

        Koordinatsystemet är WGS 84, om inte annat anges i `bbox-crs`-parametern.

        Exempel: En punkt i Gävle: `intersects={"type": "Point", "coordinates": [17.1322537, 60.6664553]}`.
      required: false
      schema:
        type: string
    limit:
      name: limit
      in: query
      description: |-
        Valfri parameter för att begränsa antalet referensobjekt som presenteras i svaret.

        Om fler objekt finns tillgängliga än vad som tillåts av `limit` så innehåller svaret
        en länk där `rel` har värdet `next` i `links`-listan. Den kan följas för att hämta
        nästa "sida".

        Minimum = 1. Maximum = 10000. Default = 10.
      required: false
      schema:
        type: integer
        minimum: 1
        maximum: 10000
        default: 10
      style: form
      explode: false
  responses:
    LandingPage:
      description: |-
        Startsidan innehåller länkar till API-definitionen (länkrelationerna `service-desc`
        och `service-doc`), kompatibilitetsinformation (sökväg `/conformance`, länkrelation
        `conformance`), datamängder (sökväg `/collections`, länkrelation `data`) samt
        sökingångarna (sökväg `/search`, länkrelation `search`, metod `GET` och `POST`)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/landingPage'
          example:
            type: Catalog
            stac_version: 1.0.0
            id: hojdmodellbrytgeometri.v1
            title: 'Geodatakatalog för hojdmodellbrytgeometri'
            description: 'Geodatakatalog för hojdmodellbrytgeometri'
            conformsTo:
              - 'http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/core'
              - 'http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/oas30'
              - 'http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/geojson'
              - 'http://www.opengis.net/spec/ogcapi-features-2/1.0/conf/crs'
              - 'https://api.stacspec.org/v1.0.0/core'
              - 'https://api.stacspec.org/v1.0.0/collections'
              - 'https://api.stacspec.org/v1.0.0/ogcapi-features'
              - 'https://api.stacspec.org/v1.0.0/item-search'
              - 'https://api.stacspec.org/v1.0.0/item-search#query'
            links:
              - rel: self
                href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1/'
                type: application/json
              - rel: root
                href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1/'
                type: application/json
              - rel: service-doc
                href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1/api'
                title: 'API dokumentation'
                type: text/html
              - rel: service-desc
                href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1/api'
                title: 'API definition'
                type: application/vnd.oai.openapi+json;version=3.0
              - rel: service-desc
                href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1/api'
                title: 'API definition'
                type: application/vnd.oai.openapi;version=3.0
              - rel: conformance
                href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1/conformance'
                type: application/json
              - rel: data
                href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1/collections'
                type: application/json
              - rel: search
                href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1/search'
                type: application/geo+json
              - rel: search
                href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1/search'
                type: application/geo+json
                method: POST
    ConformanceDeclaration:
      description: |-
        URI för alla STAC och OAPIF kompatibilitetsklasser tjänsten upfyller.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/confClasses'
          example:
            conformsTo:
              - 'http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/core'
              - 'http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/oas30'
              - 'http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/geojson'
              - 'http://www.opengis.net/spec/ogcapi-features-2/1.0/conf/crs'
              - 'https://api.stacspec.org/v1.0.0/core'
              - 'https://api.stacspec.org/v1.0.0/collections'
              - 'https://api.stacspec.org/v1.0.0/ogcapi-features'
              - 'https://api.stacspec.org/v1.0.0/item-search'
              - 'https://api.stacspec.org/v1.0.0/item-search#query'
    Collections:
      description: |-
        Referensobjekten i är indelade i datamängder. Den här resursen ger information
        om och tillgång till dessa.

        Svaret innehåller en lista på alla datamängder för informationsområdet, där varje
        datamängd har en länk för att komma åt referensobjekten som hör till den
        (sökväg `/collections/{collectionId}/items`, länkrelation `items`), tillsammans
        med viss metadata. Sådan information kan innehålla:

        * Ett id för datamängden som är unik per informationsområde.
        * En lista med referenssystem som geometrier kan hämtas i. Standard är WGS 84.
        * Information om datamängdens utsträckning, i tid och rum.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/collections'
          example:
            links:
              - rel: root
                href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1/'
                type: application/json
              - rel: self
                href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1/collections'
                type: application/json
              - rel: describedby
                href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1/api'
                title: JSON Schema för domänspecifika attribut.
                type: application/schema+json
            crs:
              - 'http://www.opengis.net/def/crs/OGC/1.3/CRS84'
              - 'http://www.opengis.net/def/crs/EPSG/0/3006'
              - 'http://www.opengis.net/def/crs/EPSG/0/3007'
              - 'http://www.opengis.net/def/crs/EPSG/0/3008'
              - 'http://www.opengis.net/def/crs/EPSG/0/3012'
              - 'http://www.opengis.net/def/crs/EPSG/0/3009'
              - 'http://www.opengis.net/def/crs/EPSG/0/3013'
              - 'http://www.opengis.net/def/crs/EPSG/0/3010'
              - 'http://www.opengis.net/def/crs/EPSG/0/3014'
              - 'http://www.opengis.net/def/crs/EPSG/0/3011'
              - 'http://www.opengis.net/def/crs/EPSG/0/3015'
              - 'http://www.opengis.net/def/crs/EPSG/0/3016'
              - 'http://www.opengis.net/def/crs/EPSG/0/3017'
              - 'http://www.opengis.net/def/crs/EPSG/0/3018'
              - 'http://www.opengis.net/def/crs/EPSG/0/4619'
              - 'http://www.opengis.net/def/crs/EPSG/0/3021'
            collections:
              - type: Collection
                stac_version: 1.0.0
                id: 'hojdmodellbrytgeometri'
                description: 'Geodatakatalog med hojdmodellbrytgeometri för brytgeometri'
                license: CC0-1.0
                providers:
                  - name: 'Lantmäteriet'
                    roles:
                      - producer
                    kod: 'LM'
                extent:
                  spatial:
                    bbox:
                      - - 18.1981515
                        - 57.3846993
                        - 18.2010169
                        - 57.3860647
                  temporal:
                    interval:
                      - - null
                        - '2020-01-31T17:01:45.302Z'
                links:
                  - rel: self
                    href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1/collections/brytgeometri'
                    type: application/json
                  - rel: root
                    href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1'
                    type: application/json
                  - rel: parent
                    href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1'
                    type: application/json
                  - rel: items
                    href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1/collections/brytgeometri/items'
                    type: application/geo+json
                crs:
                  - '#/crs'
                storageCrs: 'http://www.opengis.net/def/crs/EPSG/0/3006'
    Collection:
      description: |-
        Information om datamängden med id `collectionId`.

        Svaret innehåller en länk för att komma åt referensobjekten som hör till den
        (sökväg `/collections/{collectionId}/items`, länkrelation `items`), tillsammans
        med viss metadata. Sådan information kan innehålla:

        * Ett id för datamängden som är unik per informationsområde.
        * En lista med referenssystem som geometrier kan hämtas i. Standard är WGS 84.
        * Information om datamängdens utsträckning, i tid och rum.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/collection'
          example:
            type: Collection
            stac_version: 1.0.0
            id: 'hojdmodellbrytgeometri'
            title: 'hojdmodellbrytgeometri'
            description: 'Geodatakatalog med hojdmodellbrytgeometri för brytgeometri'
            license: CC0-1.0
            providers:
              - name: 'Lantmäteriet'
                roles:
                  - producer
                kod: 'LM'
            extent:
              spatial:
                bbox:
                  - - 18.1981515
                    - 57.3846993
                    - 18.2010169
                    - 57.3860647
              temporal:
                interval:
                  - - null
                    - '2020-01-31T17:01:45.302Z'
            links:
              - rel: self
                href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1/collections/brytgeometri'
                type: application/json
              - rel: root
                href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1/'
                type: application/json
              - rel: parent
                href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1/'
                type: application/json
              - rel: items
                href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1/collections/brytgeometri/items'
                type: application/geo+json
    Features:
      description: |-
        Svaret är ett dokument bestående av en samling referensobjekt. Vilka
        referensobjekt som ingår i svaret beror på frågeparametrarna.

        Med `crs`-parametern kan geometrierna hämtas i ett annat referenssystem.

        `limit`-parametern kan användas för att kontrollera hur många referensobjekt
        som ska visas i svaret. Om fler objekt finns tillgängliga än vad som tillåts
        av `limit` så innehåller svaret en länk där `rel` har värdet `next` i
        `links`-listan. Den kan följas för att hämta nästa "sida".
      content:
        application/geo+json:
          schema:
            $ref: '#/components/schemas/itemCollection'
          example:
            type: FeatureCollection
            bbox:
              - 18.1981564
              - 57.3846987
              - 18.2010182
              - 57.3860633
            features:
              - stac_version: 1.0.0
                id: 2ca2ef06-0a48-4d34-ae53-29730f29d498
                type: Feature
                geometry:
                  type: Polygon
                  coordinates:
                    - ...
                bbox:
                  - 18.1981564
                  - 57.3846987
                  - 18.2010182
                  - 57.3860633
                properties:
                  datetime: '2020-01-31T17:01:45.302Z'
                  feature:
                    typ: insamlingsområde
                    etikett: 'en beskrivning'
                  insamlingsomrade:
                    objektidentitet: 4d96b7ea-04b4-4477-a843-bd5d176553cd
                    beteckning: 'en beskrivning'
                    status: 'utförd'
                    insamlingsperiod:
                      fran: '2024-04-01T01:00:00Z'
                      till: '2024-04-02T02:00:00Z'
                    geodataproducent:
                      namn: 'en organisation'
                      orgnr: '1234-1234'
                links:
                  - rel: self
                    href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1/collections/insamlingsomrade/items/2ca2ef06-0a48-4d34-ae53-29730f29d498'
                    type: application/geo+json
                  - rel: root
                    href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1'
                    type: application/json
                  - rel: parent
                    href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1/collections/insamlingsomrade'
                    type: application/json
                  - rel: collection
                    href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1/collections/insamlingsomrade'
                    type: application/json
                collection: 'insamlingsomrade'
            links:
              - rel: self
                href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1/collections/insamlingsomrade/items'
                type: application/geo+json
    Feature:
      description: |-
        Hämta referensobjektet med id `featureId` i datamängden med id `collectionId`.
      content:
        application/geo+json:
          schema:
            $ref: '#/components/schemas/item'
          example:
            stac_version: 1.0.0
            id: 269ceb95-52f0-4886-b1ee-e74060f0d72e
            type: Feature
            geometry:
              type: Polygon
              coordinates:
                - - [ 18.1984204, 57.3848486 ]
                  - [ 18.1984132, 57.3848506 ]
                  - ...
            bbox:
              - 18.1981564
              - 57.3846987
              - 18.2010182
              - 57.3860633
            properties:
              datetime: '2020-01-31T17:01:45.302Z'
              feature:
                typ: insamlingsområde
                etikett: 'en beskrivning'
              insamlingsomrade:
                objektidentitet: 4d96b7ea-04b4-4477-a843-bd5d176553cd
                beteckning: 'en beskrivning'
                status: 'utförd'
                insamlingsperiod:
                  fran: '2024-04-01T00:00:00Z'
                  till: '2024-04-02T00:00:00Z'
                geodataproducent:
                  namn: 'en organisation'
                  orgnr: '1234-1234'
            links:
              - rel: huvudobjekt
                href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1/collections/insamlingsomrade/items/2ca2ef06-0a48-4d34-ae53-29730f29d498'
                type: application/geo+json
              - rel: self
                href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1/collections/insamlingsomrade/items/269ceb95-52f0-4886-b1ee-e74060f0d72e'
                type: application/geo+json
              - rel: root
                href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1'
                type: application/json
              - rel: parent
                href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1/collections/insamlingsomrade'
                type: application/json
              - rel: collection
                href: 'https://api.lantmateriet.se/distribution/geodatakatalog/sokning/v2/hojdmodellbrytgeometri/v1/collections/insamlingsomrade'
                type: application/json
            collection: 'insamlingsomrade'
    InvalidParameter:
      description: En frågeparameter har ett ogiltigt värde.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/exception'
    NotFound:
      description: Den efterfrågade resursen hittades inte.
    ServerError:
      description: Ett serverfel uppstod.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/exception'
  schemas:
    landingPage:
      type: object
      required:
        - links
        - type
        - stac_version
        - id
        - description
        - conformsTo
      properties:
        type:
          type: string
          enum:
            - Catalog
        stac_version:
          $ref: '#/components/schemas/stac_version'
        stac_extensions:
          $ref: '#/components/schemas/stac_extensions'
        id:
          type: string
        title:
          type: string
        description:
          $ref: '#/components/schemas/description'
        conformsTo:
          type: array
          items:
            type: string
        links:
          type: array
          items:
            $ref: '#/components/schemas/link'
    confClasses:
      type: object
      required:
        - conformsTo
      properties:
        conformsTo:
          type: array
          items:
            type: string
    collections:
      type: object
      required:
        - links
        - collections
      properties:
        links:
          type: array
          items:
            $ref: '#/components/schemas/link'
        crs:
          $ref: '#/components/schemas/crs'
        collections:
          type: array
          items:
            $ref: '#/components/schemas/collection'
    collection:
      type: object
      required:
        - stac_version
        - type
        - id
        - description
        - license
        - extent
        - links
      properties:
        type:
          type: string
          enum:
            - Collection
        stac_version:
          $ref: '#/components/schemas/stac_version'
        stac_extensions:
          $ref: '#/components/schemas/stac_extensions'
        id:
          type: string
        title:
          type: string
        description:
          $ref: '#/components/schemas/description'
        keywords:
          type: array
          description: Används ej.
          items:
            type: string
        license:
          type: string
          description: |-
            Licenserna för datat som en [SPDX License identifier](https://spdx.org/licenses/).
            Alternativt värdet `proprietary` om licensen inte finns med i SPDX-listan, eller
            `various` om flera licenser gäller. I dessa två fall kan en länk till licensen
            finnas med i `links`-listan med länkrelationen `licence`. Om samma licens gäller
            för hela informationsområdet kan licenslänken istället ligga i `links`-listan under
            `/collections`.
        providers:
          type: array
          description: |-
            En lista med organisationer som har haft en del i att samla in, behandla eller
            tillgängliggöra informationen.
          items:
            type: object
            title: Leverantör
            required:
              - name
            properties:
              name:
                description: Namn på organisationen.
                type: string
              description:
                $ref: '#/components/schemas/description'
              roles:
                description: |-
                  Leverantörens roll. Kan vara en eller fler av följande:

                  * licensor: Organisationen som ger tillstånd att använda informationen
                    under licensen i datamängdens license-attribut.
                  * producer: Organisationen som från början samlade in och behandlade datat.
                  * processor: En leverantör som behandlat datat för att skapa en förädlad produkt.
                  * host: Datavärden som tillgängliggör informationen. Det bör bara finnas en host,
                    som sista elementet i listan.
                type: array
                items:
                  type: string
                  enum:
                    - producer
                    - licensor
                    - processor
                    - host
              url:
                description: |-
                  Hemsida där leverantören beskriver datamängden och publicerar kontaktinformation.
                type: string
                format: url
        extent:
          type: object
          description: |-
            Utbredning av referensobjekten i delmängden.
          properties:
            spatial:
              description: Den spatiella utbredningen av referensobjekten i delmängden.
              type: object
              properties:
                bbox:
                  description: |-
                    En ruta som beskriver den spatiella utbredningen av delmängden.
                  type: array
                  minItems: 1
                  items:
                    $ref: '#/components/schemas/bbox'
                crs:
                  description: |-
                    Referenssystem för koordinaterna i `bbox`-rutan. Standard är WGS 84.
                  type: string
                  default: 'http://www.opengis.net/def/crs/OGC/1.3/CRS84'
              required:
                - bbox
            temporal:
              description: Den temporala utbredningen av referensobjekten i delmängden.
              type: object
              properties:
                interval:
                  description: |-
                    En tidsintervall som beskriver delmändens temporala utbredning. Värdet `null`
                    tillåts, och indikerar ett öppet intervall.
                  type: array
                  minItems: 1
                  items:
                    description: |-
                      Start- och sluttid för tidsintervallet. Tidsstämplarna är i referenssystemet
                      som anges i `trs`. Som standard används den gregorianska kalendern.
                      Tiderna anges alltid i UTC.
                    type: array
                    minItems: 2
                    maxItems: 2
                    items:
                      type: string
                      format: date-time
                      nullable: true
                    example:
                      - '2011-11-11T12:22:11Z'
                      - null
                trs:
                  description: |-
                    Referenssystem för den temporala utbredningen. Standard är den gregorianska
                    kalendern.
                  type: string
                  enum:
                    - 'http://www.opengis.net/def/uom/ISO-8601/0/Gregorian'
                  default: 'http://www.opengis.net/def/uom/ISO-8601/0/Gregorian'
              required:
                - interval
          required:
            - spatial
            - temporal
        links:
          type: array
          items:
            $ref: '#/components/schemas/link'
        itemType:
          type: string
          default: feature
        crs:
          $ref: '#/components/schemas/crs'
        summaries:
          type: object
          description: Används ej.
          additionalProperties:
            oneOf:
              - type: array
              - type: object
                required:
                  - min
                  - max
                properties:
                  min:
                    anyOf:
                      - type: string
                      - type: number
                  max:
                    anyOf:
                      - type: string
                      - type: number
    itemCollection:
      type: object
      required:
        - type
        - features
      properties:
        type:
          type: string
          enum:
            - FeatureCollection
        bbox:
          $ref: '#/components/schemas/bbox'
        features:
          type: array
          items:
            $ref: '#/components/schemas/item'
        links:
          type: array
          items:
            $ref: '#/components/schemas/link'
        timeStamp:
          description: Används ej.
          type: string
          format: date-time
        numberMatched:
          description: Används ej.
          type: integer
          minimum: 0
        numberReturned:
          description: Används ej.
          type: integer
          minimum: 0
    item:
      description: |-
        En GeoJSON Feature med extra attribut för OAPIF och STAC. Se JSON-schema [hojdmodellbrytgeometri-ref-1.0.json]
        för domänspecifika attribut.
      type: object
      required:
        - stac_version
        - id
        - type
        - geometry
        - bbox
        - links
        - properties
        - assets
      properties:
        stac_version:
          $ref: '#/components/schemas/stac_version'
        stac_extensions:
          $ref: '#/components/schemas/stac_extensions'
        id:
          type: string
          format: uuid
          description: Referensobjektets id, ska vara samma som domänobjektets objektidentitet.
        bbox:
          $ref: '#/components/schemas/bbox'
        geometry:
          $ref: '#/components/schemas/geometryGeoJSON'
        type:
          type: string
          enum:
            - Feature
        properties:
          type: object
          required:
            - datetime
          properties:
            datetime:
              $ref: '#/components/schemas/datetime'
          additionalProperties:
            $ref: 'hojdmodellbrytgeometri-ref-1.0.json'
        links:
          type: array
          items:
            $ref: '#/components/schemas/link'
        assets:
          type: object
          additionalProperties:
            type: object
            required:
              - href
            properties:
              href:
                type: string
                format: url
                description: Länk till webbresursen.
              title:
                type: string
              description:
                $ref: '#/components/schemas/description'
              type:
                type: string
                description: Webbresursens mediatyp.
              roles:
                type: array
                items:
                  type: string
                description: Används ej.
    exception:
      type: object
      description: |-
        Information om felet: en HTTP-felkod och en beskrivning.
      required:
        - code
      properties:
        code:
          type: string
        description:
          type: string
    stac_version:
      type: string
      description: STAC-versionen.
    stac_extensions:
      description: Används ej.
      type: array
      uniqueItems: true
      items:
        anyOf:
          - type: string
            format: uri
          - type: string
    description:
      type: string
      description: |-
        Detaljerad beskrivning för att ge ytterligare information.

        [CommonMark 0.29](http://commonmark.org/) syntax kan användas för att formatera text.
    link:
      type: object
      required:
        - href
        - rel
      properties:
        href:
          type: string
          format: url
        rel:
          type: string
        type:
          type: string
        hreflang:
          type: string
        title:
          type: string
        length:
          type: integer
        method:
          type: string
          enum:
            - GET
            - POST
          default: GET
          description: Anger vilken HTTP-metod som ska användas för länken.
        headers:
          type: object
          description: Objekt med nycklar och värden som mappas till HTTP-headrar.
        body:
          type: object
        merge:
          type: boolean
          default: false
          description: |-
            Bara giltigt när tjänsten svarar på ett POST-anrop.

            Om `merge` är `true` förväntas klienten lägga till attributen och
            värdena i `body` till kroppen i det föregående anropet innan länken
            följs. Detta för att undvika att skicka stora frågeobjekt fram och
            tillbaka, särskillt när sidor bläddras från `POST /search`-ingången.
    crs:
      description: Listan på referenssystem som stöds av tjänsten.
      type: array
      items:
        type: string
      default:
        - 'http://www.opengis.net/def/crs/OGC/1.3/CRS84'
    bbox:
      description: |-
        Hämta bara referensobjekt vars geometri berör rutan. Avgränsningen kan anges som
        fyra eller sex siffror, men höjdledsaxeln kommer att ignoreras.

        * Sydvästra hörnet, östlig riktning
        * Sydvästra hörnet, nordlig riktning
        * Lägsta höjd (valfri)
        * Nordöstra hörnet, östlig riktning
        * Nordöstra hörnet, nordlig riktning
        * Högsta höjd (valfri)

        Koordinatsystemet är WGS 84, om inte annat anges i `bbox-crs`-parametern.

        Exempel: En ruta över Sverige kan representeras i en fråga som
        `bbox=10.94,55.98,26.08,69.05`.
      type: array
      minItems: 4
      maxItems: 6
      items:
        type: number
    datetime:
      type: string
      description: |-
        En datumtid eller ett intervall, öppet eller stängt. Datum och tid ska följa
        RFC 3339. Intervall är två datumtider åtskilda av ett snedstreck. Öppna
        intervall uttrycks med två punkter. Alla tider visas i UTC.

        Exempel:

        * En datumtid: `2018-02-12T23:20:50Z`
        * Ett stängt intervall: `2018-02-12T00:00:00Z/2018-03-18T12:31:12Z`
        * Öppna intervall: `2018-02-12T00:00:00Z/..` eller `../2018-03-18T12:31:12Z`
    geometryGeoJSON:
      oneOf:
        - $ref: '#/components/schemas/pointGeoJSON'
        - $ref: '#/components/schemas/multipointGeoJSON'
        - $ref: '#/components/schemas/linestringGeoJSON'
        - $ref: '#/components/schemas/multilinestringGeoJSON'
        - $ref: '#/components/schemas/polygonGeoJSON'
        - $ref: '#/components/schemas/multipolygonGeoJSON'
        - $ref: '#/components/schemas/geometrycollectionGeoJSON'
    pointGeoJSON:
      type: object
      required:
        - type
        - coordinates
      properties:
        type:
          type: string
          enum:
            - Point
        coordinates:
          type: array
          minItems: 2
          items:
            type: number
    linestringGeoJSON:
      type: object
      required:
        - type
        - coordinates
      properties:
        type:
          type: string
          enum:
            - LineString
        coordinates:
          type: array
          minItems: 2
          items:
            type: array
            minItems: 2
            items:
              type: number
    polygonGeoJSON:
      type: object
      required:
        - type
        - coordinates
      properties:
        type:
          type: string
          enum:
            - Polygon
        coordinates:
          type: array
          items:
            type: array
            minItems: 4
            items:
              type: array
              minItems: 2
              items:
                type: number
    multipointGeoJSON:
      type: object
      required:
        - type
        - coordinates
      properties:
        type:
          type: string
          enum:
            - MultiPoint
        coordinates:
          type: array
          items:
            type: array
            minItems: 2
            items:
              type: number
    multilinestringGeoJSON:
      type: object
      required:
        - type
        - coordinates
      properties:
        type:
          type: string
          enum:
            - MultiLineString
        coordinates:
          type: array
          items:
            type: array
            minItems: 2
            items:
              type: array
              minItems: 2
              items:
                type: number
    multipolygonGeoJSON:
      type: object
      required:
        - type
        - coordinates
      properties:
        type:
          type: string
          enum:
            - MultiPolygon
        coordinates:
          type: array
          items:
            type: array
            items:
              type: array
              minItems: 4
              items:
                type: array
                minItems: 2
                items:
                  type: number
    geometrycollectionGeoJSON:
      type: object
      required:
        - type
        - geometries
      properties:
        type:
          type: string
          enum:
            - GeometryCollection
        geometries:
          type: array
          items:
            $ref: '#/components/schemas/geometryGeoJSON'
    collectionsArray:
      type: array
      description: |-
        Lista med datamängdsidn som ska ingå i sökningen. Bara referensobjekt som ingår
        i något av de angivna datamängderna hämtas.
      items:
        type: string
    ids:
      type: array
      description: |-
        Lista med objektidentiteter.
      items:
        type: string
    searchBody:
      description: Sökkriteriet
      type: object
      allOf:
        - $ref: '#/components/schemas/bboxFilter'
        - $ref: '#/components/schemas/datetimeFilter'
        - $ref: '#/components/schemas/intersectsFilter'
        - $ref: '#/components/schemas/collectionsFilter'
        - $ref: '#/components/schemas/idsFilter'
        - $ref: '#/components/schemas/limitFilter'
        - $ref: '#/components/schemas/queryFilter'
      example:
        bbox:
          - 692230
          - 6364731
          - 692395
          - 6364891
        datetime: '2020-02-15T10:43:10.123+01:00/..'
        intersects:
          type: Polygon
          coordinates:
            - - [692245.372, 6364748.369]
            - [692244.930, 6364748.573]
            - ...
        collections:
          - 'insamlingsomrade'
          - 'brytgeometri'
        ids:
          - a45eed78-5048-4c08-a4cb-d5845f8e58fb
          - 138867b3-3a6e-4316-bd36-1342497e91ab
        limit: 10
        query:
          feature.typ:
            eq: insamlingsområde
          insamlingsomrade.objektidentitet:
            eq: 4d96b7ea-04b4-4477-a843-bd5d176553cd
          insamlingsomrade.beteckning:
            eq: 'en beskrivning'
          insamlingsomrade.status:
            eq: 'planerad'
          insamlingsomrade.insamlingsperiod.fran:
            gt: '2024-04-01T00:00:00Z'
          insamlingsomrade.insamlingsperiod.till:
            lte: '2024-04-02T00:00:00Z'
          insamlingsomrade.geodataproducent.namn:
            eq: 'en organisation'
          insamlingsomrade.geodataproducent.orgnr:
            eq: '1234-1234'
    bboxFilter:
      type: object
      description: Hämta bara objekt vars geometri berör den angivna rutan.
      properties:
        bbox:
          $ref: '#/components/schemas/bbox'
    datetimeFilter:
      description: Ett tidsstämpelfilter.
      type: object
      properties:
        datetime:
          $ref: '#/components/schemas/datetime'
    intersectsFilter:
      type: object
      description: Hämta bara objekt vars geometri berör den angivna geometrin.
      properties:
        intersects:
          $ref: '#/components/schemas/geometryGeoJSON'
    collectionsFilter:
      type: object
      description: Hämta bara objekt från den angivna datamängden.
      properties:
        collections:
          $ref: '#/components/schemas/collectionsArray'
    idsFilter:
      type: object
      description: Hämta bara objekt som ingår i den angivna idlistan.
      properties:
        ids:
          $ref: '#/components/schemas/ids'
    limitFilter:
      type: object
      description: Begränsa antal objekt som hämtas i sökningen.
      properties:
        limit:
          type: integer
          minimum: 1
          default: 10
          maximum: 10000
          description: Maximalt antal objekt som hämtas åt gången. Standard är 10.
    queryFilter:
      type: object
      description: Möjliggör attributvis sökning.
      properties:
        query:
          $ref: '#/components/schemas/query'
    query:
      type: object
      description: Definiera vilka attribut som ska frågas med vilka operationer.
      additionalProperties:
        $ref: '#/components/schemas/queryProp'
    queryProp:
      description: Kör frågeoperationer mot ett specifikt attribut.
      type: object
      properties:
        eq:
          description: |-
            Hitta objekt med ett attribut som är lika med det angivna värdet. För strängar
            görs en skiftlägesokänslig jämförelse.
          nullable: true
          oneOf:
            - type: string
            - type: number
            - type: boolean
        neq:
          description: |-
            Hitta objekt med ett attribut som *inte* är lika med det angivna värdet. För strängar
            görs en skiftlägesokänslig jämförelse.
          nullable: true
          oneOf:
            - type: string
            - type: number
            - type: boolean
        gt:
          description: |-
            Hitta objekt med ett attribut som är större än det angivna värdet.
          oneOf:
            - type: string
              format: date-time
            - type: number
        lt:
          description: |-
            Hitta objekt med ett attribut som är mindre än det angivna värdet.
          oneOf:
            - type: string
              format: date-time
            - type: number
        gte:
          description: |-
            Hitta objekt med ett attribut som är större än eller lika med det angivna värdet.
          oneOf:
            - type: string
              format: date-time
            - type: number
        lte:
          description: |-
            Hitta objekt med ett attribut som är mindre än eller lika med det angivna värdet.
          oneOf:
            - type: string
              format: date-time
            - type: number
        startsWith:
          description: |-
            Hitta objekt med ett attribut som börjar med det angivna värdet. Jämförelse
            görs skiftlägesokänsligt.
          type: string
        endsWith:
          description: |-
            Hitta objekt med ett attribut som slutar med det angivna värdet. Jämförelse
            görs skiftlägesokänsligt.
          type: string
        contains:
          description: |-
            Hitta objekt med ett attribut som innehåller det angivna värdet. Jämförelse
            görs skiftlägesokänsligt.
          type: string
        in:
          description: |-
            Hitta objekt med ett attribut som är lika med minst ett av de angivna värdena.
            För strängar görs en skiftlägesokänslig jämförelse.
          type: array
          items:
            oneOf:
              - type: string
              - type: number