DLR

DLR Data API

access to data (features)

OpenAPI Specification

dlr-data-api-openapi.yml Raw ↑
openapi: 3.0.2
info:
  title: EOC EO Products Service Capabilities Data API
  description: Provides interoperable access to metadata from EO collections and products of DLR's Earth Observation Center (EOC).
  contact:
    name: Geoservice Manager - Earth Observation Center (EOC), DLR
    email: geoservice@dlr.de
  version: 1.0.0
servers:
- url: https://geoservice.dlr.de/eoc/ogc/stac/v1
  description: This server
tags:
- name: Data
  description: access to data (features)
paths:
  /collections/{collectionId}/items:
    get:
      tags:
      - Data
      summary: fetch features
      description: 'Fetch features of the feature collection with id `collectionId`.


        Every feature in a dataset belongs to a collection. A dataset may

        consist of multiple feature collections. A feature collection is often a

        collection of features of a similar type, based on a common schema.


        Use content negotiation to request HTML or GeoJSON.'
      operationId: getFeatures
      parameters:
      - $ref: '#/components/parameters/collectionId'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/bbox'
      - $ref: '#/components/parameters/datetime'
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/filter-lang'
      - $ref: '#/components/parameters/sortby'
      - $ref: '#/components/parameters/crs'
      - $ref: '#/components/parameters/bbox-crs'
      - $ref: '#/components/parameters/otherParameters'
      responses:
        '200':
          content:
            application/json:
              schema:
                type: string
                format: binary
            application/yaml:
              schema:
                type: string
                format: binary
            text/html:
              schema:
                type: string
          $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: fetch a single feature
      description: 'Fetch the feature with id `featureId` in the feature collection

        with id `collectionId`.


        Use content negotiation to request HTML or GeoJSON.'
      operationId: getFeature
      parameters:
      - $ref: '#/components/parameters/collectionId'
      - $ref: '#/components/parameters/featureId'
      - $ref: '#/components/parameters/crs'
      - $ref: '#/components/parameters/otherParameters'
      responses:
        '200':
          content:
            application/json:
              schema:
                type: string
                format: binary
            application/yaml:
              schema:
                type: string
                format: binary
            text/html:
              schema:
                type: string
          $ref: '#/components/responses/Feature'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
components:
  schemas:
    timeStamp:
      type: string
      description: This property indicates the time and date when the response was generated.
      format: date-time
    numberMatched:
      minimum: 0
      type: integer
      description: 'The number of features of the feature type that match the selection

        parameters like `bbox`.'
      example: 127
    featureGeoJSON:
      required:
      - geometry
      - properties
      - type
      type: object
      properties:
        type:
          type: string
          enum:
          - Feature
        geometry:
          $ref: '#/components/schemas/geometryGeoJSON'
        properties:
          type: object
          nullable: true
        id:
          oneOf:
          - type: string
          - type: integer
        links:
          type: array
          items:
            $ref: '#/components/schemas/link'
    exception:
      required:
      - code
      type: object
      properties:
        code:
          type: string
        description:
          type: string
      description: 'Information about the exception: an error code plus an optional description.'
    link:
      required:
      - href
      type: object
      properties:
        href:
          type: string
          example: http://data.example.com/buildings/123
        rel:
          type: string
          example: alternate
        type:
          type: string
          example: application/geo+json
        hreflang:
          type: string
          example: en
        title:
          type: string
          example: Trierer Strasse 70, 53115 Bonn
        length:
          type: integer
    polygonGeoJSON:
      required:
      - coordinates
      - type
      type: object
      properties:
        type:
          type: string
          enum:
          - Polygon
        coordinates:
          type: array
          items:
            minItems: 4
            type: array
            items:
              minItems: 2
              type: array
              items:
                type: number
    multipolygonGeoJSON:
      required:
      - coordinates
      - type
      type: object
      properties:
        type:
          type: string
          enum:
          - MultiPolygon
        coordinates:
          type: array
          items:
            type: array
            items:
              minItems: 4
              type: array
              items:
                minItems: 2
                type: array
                items:
                  type: number
    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'
    linestringGeoJSON:
      required:
      - coordinates
      - type
      type: object
      properties:
        type:
          type: string
          enum:
          - LineString
        coordinates:
          minItems: 2
          type: array
          items:
            minItems: 2
            type: array
            items:
              type: number
    multilinestringGeoJSON:
      required:
      - coordinates
      - type
      type: object
      properties:
        type:
          type: string
          enum:
          - MultiLineString
        coordinates:
          type: array
          items:
            minItems: 2
            type: array
            items:
              minItems: 2
              type: array
              items:
                type: number
    featureCollectionGeoJSON:
      required:
      - features
      - type
      type: object
      properties:
        type:
          type: string
          enum:
          - FeatureCollection
        features:
          type: array
          items:
            $ref: '#/components/schemas/featureGeoJSON'
        links:
          type: array
          items:
            $ref: '#/components/schemas/link'
        timeStamp:
          $ref: '#/components/schemas/timeStamp'
        numberMatched:
          $ref: '#/components/schemas/numberMatched'
        numberReturned:
          $ref: '#/components/schemas/numberReturned'
    geometrycollectionGeoJSON:
      required:
      - geometries
      - type
      type: object
      properties:
        type:
          type: string
          enum:
          - GeometryCollection
        geometries:
          type: array
          items:
            $ref: '#/components/schemas/geometryGeoJSON'
    pointGeoJSON:
      required:
      - coordinates
      - type
      type: object
      properties:
        type:
          type: string
          enum:
          - Point
        coordinates:
          minItems: 2
          type: array
          items:
            type: number
    multipointGeoJSON:
      required:
      - coordinates
      - type
      type: object
      properties:
        type:
          type: string
          enum:
          - MultiPoint
        coordinates:
          type: array
          items:
            minItems: 2
            type: array
            items:
              type: number
    numberReturned:
      minimum: 0
      type: integer
      description: 'The number of features in the feature collection.


        A server may omit this information in a response, if the information

        about the number of features is not known or difficult to compute.


        If the value is provided, the value shall be identical to the number

        of items in the "features" array.'
      example: 10
  parameters:
    featureId:
      name: featureId
      in: path
      description: local identifier of a feature
      required: true
      schema:
        type: string
    bbox:
      name: bbox
      in: query
      description: 'Only features that have a geometry that intersects the bounding box are selected.

        The bounding box is provided as four or six numbers, depending on whether the

        coordinate reference system includes a vertical axis (height or depth):


        * Lower left corner, coordinate axis 1

        * Lower left corner, coordinate axis 2

        * Minimum value, coordinate axis 3 (optional)

        * Upper right corner, coordinate axis 1

        * Upper right corner, coordinate axis 2

        * Maximum value, coordinate axis 3 (optional)


        The coordinate reference system of the values is WGS 84 longitude/latitude

        (http://www.opengis.net/def/crs/OGC/1.3/CRS84) unless a different coordinate

        reference system is specified in the parameter `bbox-crs`.


        For WGS 84 longitude/latitude the values are in most cases the sequence of

        minimum longitude, minimum latitude, maximum longitude and maximum latitude.

        However, in cases where the box spans the antimeridian the first value

        (west-most box edge) is larger than the third value (east-most box edge).


        If the vertical axis is included, the third and the sixth number are

        the bottom and the top of the 3-dimensional bounding box.


        If a feature has multiple spatial geometry properties, it is the decision of the

        server whether only a single spatial geometry property is used to determine

        the extent or all relevant geometries.'
      required: false
      style: form
      explode: false
      schema:
        maxItems: 6
        minItems: 4
        type: array
        items:
          type: number
    collectionId:
      name: collectionId
      in: path
      description: local identifier of a collection
      required: true
      schema:
        type: string
        enum:
        - CROPTYPES_DE_P1Y
        - CROPTYPES_DE_P1Y_V02
        - D4H
        - DESIS_HSI_L2A
        - DatKI_LBMDE_2021
        - ENMAP_HSI_L0_QL
        - ENMAP_HSI_L2A
        - FCCL_DE_P1M
        - FOREST_STRUCTURE_DE_AGBD_P1Y
        - FOREST_STRUCTURE_DE_COVER_P1Y
        - FOREST_STRUCTURE_DE_RH95_P1Y
        - GL_MOW_DE_P1Y_FC
        - GL_MOW_DE_P1Y_FREQ
        - GSP_SCDE_MEAN
        - GSP_SCDE_P1Y
        - GSP_SCDL_MEAN
        - GSP_SCDL_P1Y
        - GSP_SCD_MEAN
        - GSP_SCD_P1Y
        - GSP_SCE_P1D
        - GWP_P1D
        - GWP_P1M
        - GWP_P1Y
        - METOP_GOME2_L3_P1D_BRO
        - METOP_GOME2_L3_P1D_CF
        - METOP_GOME2_L3_P1D_H2O
        - METOP_GOME2_L3_P1D_HCHO
        - METOP_GOME2_L3_P1D_NO2
        - METOP_GOME2_L3_P1D_NO2TROPO
        - METOP_GOME2_L3_P1D_O3
        - METOP_GOME2_L3_P1D_SO2
        - N2N_NOISE_AI_DE_2017
        - N2N_NOISE_DE_2017
        - S2-soilsuite-africa-2018-2021-P4Y
        - S2-soilsuite-europe-2018-2022-P5Y
        - S2_L2A_MAJA
        - S2_L2A_MAJA_v2
        - S2_L3A_WASP
        - S2_L3A_WASP_V2
        - S5P_TROPOMI_L3_P1D_AI_v2
        - S5P_TROPOMI_L3_P1D_ALH_v2
        - S5P_TROPOMI_L3_P1D_AOD_v2
        - S5P_TROPOMI_L3_P1D_ASSA_v2
        - S5P_TROPOMI_L3_P1D_CF
        - S5P_TROPOMI_L3_P1D_CF_v2
        - S5P_TROPOMI_L3_P1D_COT
        - S5P_TROPOMI_L3_P1D_COT_v2
        - S5P_TROPOMI_L3_P1D_CTH
        - S5P_TROPOMI_L3_P1D_CTH_v2
        - S5P_TROPOMI_L3_P1D_H2O_v2
        - S5P_TROPOMI_L3_P1D_HCHO
        - S5P_TROPOMI_L3_P1D_HCHO_v2
        - S5P_TROPOMI_L3_P1D_O3
        - S5P_TROPOMI_L3_P1D_O3_v2
        - S5P_TROPOMI_L3_P1D_SO2
        - S5P_TROPOMI_L3_P1D_SO2LH_v2
        - S5P_TROPOMI_L3_P1D_SO2_v2
        - S5P_TROPOMI_L3_P1D_UVI_v2
        - S5P_TROPOMI_L4_P1D_NO2surf
        - SAR4TEC_ASCE
        - SAR4TEC_DESC
        - SUPERSITES
        - SWIM_WE
        - TDM_DEM_90
        - TDM_FNF_50
        - TIMELINE_AVHRR_P1M_LSTD
        - TIMELINE_AVHRR_P1M_SST
        - URBAN_DEGREE_DE
        - WSF3D_MATSTOCK
        - WSF_2015
        - WSF_2019
        - WSF_Evolution
    datetime:
      name: datetime
      in: query
      description: 'Either a date-time or an interval, open or closed. Date and time expressions

        adhere to RFC 3339. Open intervals are expressed using double-dots.


        Examples:


        * A date-time: "2018-02-12T23:20:50Z"

        * A closed interval: "2018-02-12T00:00:00Z/2018-03-18T12:31:12Z"

        * Open intervals: "2018-02-12T00:00:00Z/.." or "../2018-03-18T12:31:12Z"


        Only features that have a temporal property that intersects the value of

        `datetime` are selected.


        If a feature has multiple temporal properties, it is the decision of the

        server whether only a single temporal property is used to determine

        the extent or all relevant temporal properties.'
      required: false
      style: form
      explode: false
      schema:
        type: string
    sortby:
      name: sortby
      in: query
      required: false
      style: form
      explode: false
      schema:
        minItems: 1
        type: array
        items:
          pattern: '[+|-][A-Za-z_][A-Za-z_0-9]*'
          type: string
    filter-lang:
      name: filter-lang
      in: query
      description: Filter encoding used in the filter parameter
      schema:
        type: string
        enum:
        - cql-text
        - cql-json
        default: cql-text
    limit:
      name: limit
      in: query
      description: 'The optional limit parameter limits the number of items that are presented in the response document.


        Only items are counted that are on the first level of the collection in the response document.

        Nested objects contained within the explicitly requested items shall not be counted.


        Minimum = 1. Maximum = 10000. Default = 10.'
      required: false
      style: form
      explode: false
      schema:
        maximum: 500
        minimum: 1
        type: integer
        default: 20
    crs:
      name: crs
      in: query
      required: false
      style: form
      explode: false
      schema:
        type: string
        format: uri
    bbox-crs:
      name: bbox-crs
      in: query
      required: false
      style: form
      explode: false
      schema:
        type: string
        format: uri
    filter:
      name: filter
      in: query
      description: Defines a filter that will be applied on items, only items matching the filter will be returned
      schema:
        type: string
    otherParameters:
      name: otherParameters
      in: query
      description: Allows unrecognized parameters to be added in the query string without getting a 400 back (e.g., cache busters)
      style: form
      schema:
        type: object
        additionalProperties: true
  responses:
    Feature:
      description: 'fetch the feature with id `featureId` in the feature collection

        with id `collectionId`'
      content:
        application/geo+json:
          schema:
            $ref: '#/components/schemas/featureGeoJSON'
          example:
            type: Feature
            links:
            - href: http://data.example.com/id/building/123
              rel: canonical
              title: canonical URI of the building
            - href: http://data.example.com/collections/buildings/items/123.json
              rel: self
              type: application/geo+json
              title: this document
            - href: http://data.example.com/collections/buildings/items/123.html
              rel: alternate
              type: text/html
              title: this document as HTML
            - href: http://data.example.com/collections/buildings
              rel: collection
              type: application/geo+json
              title: the collection document
            id: '123'
            geometry:
              type: Polygon
              coordinates:
              - '...'
            properties:
              function: residential
              floors: '2'
              lastUpdate: '2015-08-01T12:34:56Z'
        text/html:
          schema:
            type: string
    NotFound:
      description: The requested URI was not found.
    InvalidParameter:
      description: A query parameter has an invalid value.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/exception'
        text/html:
          schema:
            type: string
    Features:
      description: 'The response is a document consisting of features in the collection.

        The features included in the response are determined by the server

        based on the query parameters of the request. To support access to

        larger collections without overloading the client, the API supports

        paged access with links to the next page, if more features are selected

        that the page size.


        The `bbox` and `datetime` parameter can be used to select only a

        subset of the features in the collection (the features that are in the

        bounding box or time interval). The `bbox` parameter matches all features

        in the collection that are not associated with a location, too. The

        `datetime` parameter matches all features in the collection that are

        not associated with a time stamp or interval, too.


        The `limit` parameter may be used to control the subset of the

        selected features that should be returned in the response, the page size.

        Each page may include information about the number of selected and

        returned features (`numberMatched` and `numberReturned`) as well as

        links to support paging (link relation `next`).'
      content:
        application/geo+json:
          schema:
            $ref: '#/components/schemas/featureCollectionGeoJSON'
          example:
            type: FeatureCollection
            links:
            - href: http://data.example.com/collections/buildings/items.json
              rel: self
              type: application/geo+json
              title: this document
            - href: http://data.example.com/collections/buildings/items.html
              rel: alternate
              type: text/html
              title: this document as HTML
            - href: http://data.example.com/collections/buildings/items.json&offset=10&limit=2
              rel: next
              type: application/geo+json
              title: next page
            timeStamp: '2018-04-03T14:52:23Z'
            numberMatched: 123
            numberReturned: 2
            features:
            - type: Feature
              id: '123'
              geometry:
                type: Polygon
                coordinates:
                - '...'
              properties:
                function: residential
                floors: '2'
                lastUpdate: '2015-08-01T12:34:56Z'
            - type: Feature
              id: '132'
              geometry:
                type: Polygon
                coordinates:
                - '...'
              properties:
                function: public use
                floors: '10'
                lastUpdate: '2013-12-03T10:15:37Z'
        text/html:
          schema:
            type: string
    ServerError:
      description: A server error occurred.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/exception'
        text/html:
          schema:
            type: string
externalDocs:
  description: STAC API specification
  url: https://github.com/radiantearth/stac-api-spec