Add a Provider#

eodag provides a set of plugins which don’t know anything about the providers themselves, they just implement generic methods required to talk to different kinds of data catalog. For instance:

Configure a new provider#

The simplest way to add a new provider is to configure existing plugins. This approach requires to provide the new provider’s configuration in a YAML format. The following example, extracted from the STAC client page, shows how to add a new STAC provider:

tamn:
   search:
      type: StacSearch
      api_endpoint: https://tamn.snapplanet.io/search
      need_auth: false
   products:
      S2_MSI_L1C:
            productType: S2
      GENERIC_PRODUCT_TYPE:
            productType: '{productType}'
   download:
      type: AwsDownload
      base_uri: https://tamn.snapplanet.io
      flatten_top_dirs: True
   auth:
      type: AwsAuth
      credentials:
            aws_access_key_id: PLEASE_CHANGE_ME
            aws_secret_access_key: PLEASE_CHANGE_ME

It configures the following existing plugins: StacSearch (search), AwsAuth (authentication) and AwsDownload (download).

Of course, it is also necessary to know how to configure these plugins (which parameters they take, what values they can have, etc.). You can get some inspiration from the Providers pre-configuration section by analysing how eodag configures the providers it comes installed with.

Add more plugins#

eodag is a plugin-oriented framework which means it can be easily extended. If the plugins it offers are not sufficient for your own needs (i.e. getting data from a provider not supported by eodag), you should then write your own plugins (possibly by extending one of provided by eodag) and configure them. What you are the most likely to be willing to do is either to develop a new Search plugin or an Api plugin (e.g. to create an interface with another program).

eodag-sentinelsat is a good example of an Api plugin. It creates an interface with the sentinalsat library to search and download products from SciHub.

See more details about how to create a new plugin in this dedicated section.

Providers pre-configuration#

All the providers are pre-configured in eodag in a YAML file. Click on the link below to display its full content.

providers.yml
---
!provider
  name: usgs
  priority: 0
  description: U.S geological survey catalog for Landsat products
  roles:
    - host
  url: https://earthexplorer.usgs.gov/
  api: !plugin
    type: UsgsApi
    need_auth: true
    google_base_url: 'http://storage.googleapis.com/earthengine-public/landsat/'
    pagination:
      max_items_per_page: 5000
      total_items_nb_key_path: '$.totalHits'
    metadata_mapping:
      id: '$.displayId'
      geometry: '$.spatialBounds'
      productType: '$.productType'
      title: '$.displayId'
      abstract: '$.summary'
      cloudCover: '$.cloudCover'
      startTimeFromAscendingNode: '$.temporalCoverage.startDate'
      completionTimeFromAscendingNode: '$.temporalCoverage.endDate'
      publicationDate: '$.publishDate'
      thumbnail: '$.browse[0].thumbnailPath'
      quicklook: '$.browse[0].browsePath'
      storageStatus: '{$.available#get_group_name((?P<ONLINE>True)|(?P<OFFLINE>False))}'
      downloadLink: 'https://earthexplorer.usgs.gov/download/external/options/{productType}/{entityId}/M2M/'
      # metadata needed for download
      entityId: '$.entityId'
      productId: '$.id'
    extract: True
    order_enabled: true
  products:
    # datasets list http://kapadia.github.io/usgs/_sources/reference/catalog/ee.txt may be outdated
    # see also https://dds.cr.usgs.gov/ee-data/coveragemaps/shp/ee/
    LANDSAT_C2L1:
      dataset: landsat_ot_c2_l1
      outputs_extension: .tar.gz
    LANDSAT_C2L2:
      dataset: landsat_ot_c2_l2
      outputs_extension: .tar.gz
    LANDSAT_TM_C1:
      dataset: landsat_tm_c1
      outputs_extension: .tar.gz
    LANDSAT_TM_C2L1:
      dataset: landsat_tm_c2_l1
      outputs_extension: .tar.gz
    LANDSAT_TM_C2L2:
      dataset: landsat_tm_c2_l2
      outputs_extension: .tar.gz
    LANDSAT_ETM_C1:
      dataset: landsat_etm_c1
      outputs_extension: .tar.gz
    LANDSAT_ETM_C2L1:
      dataset: landsat_etm_c2_l1
      outputs_extension: .tar.gz
    LANDSAT_ETM_C2L2:
      dataset: landsat_etm_c2_l2
      outputs_extension: .tar.gz
    S2_MSI_L1C:
      dataset: SENTINEL_2A
      outputs_extension: .zip
    GENERIC_PRODUCT_TYPE:
      dataset: '{productType}'

---
!provider
  name: aws_eos
  priority: 0
  description: EOS search for Amazon public datasets
  roles:
    - host
  url: https://developers.eos.com/datasets_description.html
  search: !plugin
    type: PostJsonSearch
    api_endpoint: 'https://gate.eos.com/api/lms/search/v2/{collection}?api_key={apikey}'
    need_auth: true
    auth_error_code: 403
    results_entry: 'results'
    pagination:
      next_page_query_obj: '{{"limit":{items_per_page},"page":{page}}}'
      total_items_nb_key_path: '$.meta.found'
      # 2021/04/28: aws_eos doesn't specify a limit in its docs. It says that the default
      # value is 500 (https://doc.eos.com/search.api/#single-dataset-search).
      # Let's set it to this value for now
      max_items_per_page: 500
    query_params_key: 'search'
    discover_metadata:
      auto_discovery: true
      metadata_pattern: '^[a-zA-Z0-9_]+$'
      search_param: '{{{{"search":{{{{"{metadata}":"{{{metadata}}}" }}}} }}}}'
      metadata_path: '$.*'
    metadata_mapping:
      # landsat8_downloadLink : 's3://landsat-pds/c{storedInCollection}/L8/{path}/{row}/{productID}'
      geometry:
        - '{{"search":{{"shape": {geometry#to_geojson} }} }}'
        - '$.dataGeometry'
      # storageStatus set to ONLINE for consistency between providers
      storageStatus: '{$.null#replace_str("Not Available","ONLINE")}'
  products:
    CBERS4_PAN10M_L2:
      instrument: PAN10M
      collection: cbers4
      processingLevel: 2
      metadata_mapping:
        # OpenSearch Parameters for Collection Search (Table 3)
        productType: '$.null'
        platformSerialIdentifier:
          - '{{"search":{{"satelliteName":"{platformSerialIdentifier}" }} }}'
          - '$.satelliteName'
        instrument:
          - '{{"search":{{"sensor":"{instrument}" }} }}'
          - '$.sensor'
        processingLevel:
          - '{{"search":{{"processingLevel":"{processingLevel}" }} }}'
          - '$.processingLevel'
        # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4)
        title:
          - '{{"search":{{"sceneID":"{title}" }} }}'
          - '$.sceneID'
        # OpenSearch Parameters for Acquistion Parameters Search (Table 6)
        startTimeFromAscendingNode:
          - '{{"search":{{"date":{{"from":"{startTimeFromAscendingNode}"}} }} }}'
          - '$.date'
        completionTimeFromAscendingNode:
          - '{{"search":{{"date":{{"to":"{completionTimeFromAscendingNode}"}} }} }}'
          - '$.date'
        illuminationAzimuthAngle:
          - '{{"search":{{"sunAzimuth":"{illuminationAzimuthAngle}" }} }}'
          - '$.sunAzimuth'
        illuminationElevationAngle:
          - '{{"search":{{"sunElevation":"{illuminationElevationAngle}" }} }}'
          - '$.sunElevation'
        # Custom parameters (not defined in the base document referenced above)
        awsPath:
          - '{{"search":{{"downloadUrl":"{awsPath}" }} }}'
          - '$.downloadUrl'
        downloadLink: 's3://cbers-pds/{awsPath}'
        metaDownloadLink: 's3://cbers-meta-pds/{awsPath}'
        previewBaseName: '{$.sceneID#replace_str("_L2","")}'
        thumbnail: 'https://s3.amazonaws.com/cbers-meta-pds/{awsPath}/{previewBaseName}_small.jpeg'
        quicklook: 'https://s3.amazonaws.com/cbers-meta-pds/{awsPath}/{previewBaseName}.jpg'
        id:
          - '{{"search":{{"sceneID":"{id}" }} }}'
          - '{title}'
    CBERS4_PAN10M_L4:
      instrument: PAN10M
      collection: cbers4
      processingLevel: 4
      metadata_mapping_from_product: CBERS4_PAN10M_L2
      metadata_mapping:
        # Custom parameters (not defined in the base document referenced above)
        previewBaseName: '{$.sceneID#replace_str("_L4","")}'
        thumbnail: 'https://s3.amazonaws.com/cbers-meta-pds/{awsPath}/{previewBaseName}_small.jpeg'
        quicklook: 'https://s3.amazonaws.com/cbers-meta-pds/{awsPath}/{previewBaseName}.jpg'
    CBERS4_PAN5M_L2:
      instrument: PAN5M
      collection: cbers4
      processingLevel: 2
      metadata_mapping_from_product: CBERS4_PAN10M_L2
    CBERS4_PAN5M_L4:
      instrument: PAN5M
      collection: cbers4
      processingLevel: 4
      metadata_mapping_from_product: CBERS4_PAN10M_L2
      metadata_mapping:
        # Custom parameters (not defined in the base document referenced above)
        previewBaseName: '{$.sceneID#replace_str("_L4","")}'
        thumbnail: 'https://s3.amazonaws.com/cbers-meta-pds/{awsPath}/{previewBaseName}_small.jpeg'
        quicklook: 'https://s3.amazonaws.com/cbers-meta-pds/{awsPath}/{previewBaseName}.jpg'
    CBERS4_MUX_L2:
      instrument: MUX
      collection: cbers4
      processingLevel: 2
      metadata_mapping_from_product: CBERS4_PAN10M_L2
    CBERS4_MUX_L4:
      instrument: MUX
      collection: cbers4
      processingLevel: 4
      metadata_mapping_from_product: CBERS4_PAN10M_L2
      metadata_mapping:
        # Custom parameters (not defined in the base document referenced above)
        previewBaseName: '{$.sceneID#replace_str("_L4","")}'
        thumbnail: 'https://s3.amazonaws.com/cbers-meta-pds/{awsPath}/{previewBaseName}_small.jpeg'
        quicklook: 'https://s3.amazonaws.com/cbers-meta-pds/{awsPath}/{previewBaseName}.jpg'
    CBERS4_AWFI_L2:
      instrument: AWFI
      collection: cbers4
      processingLevel: 2
      metadata_mapping_from_product: CBERS4_PAN10M_L2
    CBERS4_AWFI_L4:
      instrument: AWFI
      collection: cbers4
      processingLevel: 4
      metadata_mapping_from_product: CBERS4_PAN10M_L2
      metadata_mapping:
        # Custom parameters (not defined in the base document referenced above)
        previewBaseName: '{$.sceneID#replace_str("_L4","")}'
        thumbnail: 'https://s3.amazonaws.com/cbers-meta-pds/{awsPath}/{previewBaseName}_small.jpeg'
        quicklook: 'https://s3.amazonaws.com/cbers-meta-pds/{awsPath}/{previewBaseName}.jpg'
    L8_OLI_TIRS_C1L1:
      collection: landsat8
      onAmazon: true
      metadata_mapping:
        # OpenSearch Parameters for Collection Search (Table 3)
        productType: '$.null'
        platform:
          - '{{"search":{{"satelliteName":"{platform}" }} }}'
          - '$.satelliteName'
        instrument:
          - '{{"search":{{"sensor":"{instrument}" }} }}'
          - '$.sensor'
        # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4)
        title:
          - '{{"search":{{"productID":"{title}" }} }}'
          - '$.productID'
        # OpenSearch Parameters for Product Search (Table 5)
        cloudCover:
          - '{{"search":{{"cloudCoverage":"{cloudCover}" }} }}'
          - '$.cloudCoverage'
        # OpenSearch Parameters for Acquistion Parameters Search (Table 6)
        availabilityTime:
          - '{{"search":{{"IndexingTime":{{"from":"{availabilityTime}"}} }} }}'
          - '$.IndexingTime'
        acquisitionStation:
          - '{{"search":{{"receivingStation":{{"from":"{acquisitionStation}"}} }} }}'
          - '$.receivingStation'
        startTimeFromAscendingNode:
          - '{{"search":{{"date":{{"from":"{startTimeFromAscendingNode}"}} }} }}'
          - '$.sceneStartTime'
        completionTimeFromAscendingNode:
          - '{{"search":{{"date":{{"to":"{completionTimeFromAscendingNode}"}} }} }}'
          - '$.sceneStopTime'
        illuminationAzimuthAngle:
          - '{{"search":{{"sunAzimuth":"{illuminationAzimuthAngle}" }} }}'
          - '$.sunAzimuth'
        illuminationElevationAngle:
          - '{{"search":{{"sunElevation":"{illuminationElevationAngle}" }} }}'
          - '$.sunElevation'
        # Custom parameters (not defined in the base document referenced above)
        onAmazon:
          - '{{"search":{{"onAmazon":"{onAmazon}" }} }}'
          - '$.onAmazon'
        path:
          - '{{"search":{{"path":"{path}" }} }}'
          - '$.path'
        row:
          - '{{"search":{{"row":"{row}" }} }}'
          - '$.row'
        downloadLink: 's3://landsat-pds/c1/L8/{path:03.0f}/{row:03.0f}/{title}/'
        thumbnail: '$.thumbnail'
        quicklook: 'https://landsat-pds.s3.amazonaws.com/c1/L8/{path:03.0f}/{row:03.0f}/{title}/{title}_thumb_large.jpg'
        id:
          - '{{"search":{{"productID":"{id}" }} }}'
          - '{title}'
    MODIS_MCD43A4:
      collection: modis
      metadata_mapping:
        # OpenSearch Parameters for Collection Search (Table 3)
        productType: '$.null'
        instrument:
          - '{{"search":{{"satelliteName":"{instrument}" }} }}'
          - '$.satelliteName'
        # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4)
        title:
          - '{{"search":{{"sceneID":"{title}" }} }}'
          - '$.sceneID'
        # OpenSearch Parameters for Product Search (Table 5)
        cloudCover:
          - '{{"search":{{"cloudCoverage":"{cloudCover}" }} }}'
          - '$.cloudCoverage'
        # OpenSearch Parameters for Acquistion Parameters Search (Table 6)
        startTimeFromAscendingNode:
          - '{{"search":{{"date":{{"from":"{startTimeFromAscendingNode}"}} }} }}'
          - '$.BeginningDateTime'
        completionTimeFromAscendingNode:
          - '{{"search":{{"date":{{"to":"{completionTimeFromAscendingNode}"}} }} }}'
          - '$.EndingDateTime'
        # Custom parameters (not defined in the base document referenced above)
        verticalTileNumber:
          - '{{"search":{{"verticalTileNumber":"{verticalTileNumber}" }} }}'
          - '$.verticalTileNumber'
        horizontalTileNumber:
          - '{{"search":{{"horizontalTileNumber":"{horizontalTileNumber}" }} }}'
          - '$.horizontalTileNumber'
        doyDate: '{$.sceneID#slice_str(9,16,1)}'
        downloadLink: 's3://modis-pds/MCD43A4.006/{horizontalTileNumber:02.0f}/{verticalTileNumber:02.0f}/{doyDate}/'
        thumbnail: '$.thumbnail'
        quicklook: '$.thumbnail'
        id:
          - '{{"search":{{"sceneID":"{id}" }} }}'
          - '{title}'
    NAIP:
      collection: naip
      metadata_mapping:
        # OpenSearch Parameters for Collection Search (Table 3)
        productType: '$.null'
        platformSerialIdentifier:
          - '{{"search":{{"satelliteName":"{platformSerialIdentifier}" }} }}'
          - '$.satelliteName'
        # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4)
        title:
          - '{{"search":{{"sceneID":"{title}" }} }}'
          - '$.sceneID'
        # OpenSearch Parameters for Acquistion Parameters Search (Table 6)
        startTimeFromAscendingNode:
          - '{{"search":{{"date":{{"from":"{startTimeFromAscendingNode}"}} }} }}'
          - '$.date'
        completionTimeFromAscendingNode:
          - '{{"search":{{"date":{{"to":"{completionTimeFromAscendingNode}"}} }} }}'
          - '$.date'
        # Custom parameters (not defined in the base document referenced above)
        awsPath:
          - '{{"search":{{"awsPath":"{awsPath}" }} }}'
          - '$.awsPath'
        downloadLink: 's3://naip-analytic/{awsPath}'
        id:
          - '{{"search":{{"sceneID":"{id}" }} }}'
          - '{title}'
    S1_SAR_GRD:
      productType: GRD
      collection: sentinel1
      metadata_mapping:
        cloudCover: '$.null'
        # OpenSearch Parameters for Collection Search (Table 3)
        platformSerialIdentifier:
          - '{{"search":{{"missionId":"{platformSerialIdentifier}" }} }}'
          - '$.missionId'
        # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4)
        title:
          - '{{"search":{{"sceneID":"{title}" }} }}'
          - '$.sceneID'
        # OpenSearch Parameters for Product Search (Table 5)
        orbitNumber:
          - '{{"search":{{"absoluteOrbitNumber":"{orbitNumber}" }} }}'
          - '$.absoluteOrbitNumber'
        orbitDirection:
          - '{{"search":{{"passDirection":"{orbitDirection}" }} }}'
          - '$.passDirection'
        sensorMode:
          - '{{"search":{{"mode":"{sensorMode}" }} }}'
          - '$.mode'
        # OpenSearch Parameters for Acquistion Parameters Search (Table 6)
        startTimeFromAscendingNode:
          - '{{"search":{{"date":{{"from":"{startTimeFromAscendingNode}"}} }} }}'
          - '$.date'
        completionTimeFromAscendingNode:
          - '{{"search":{{"date":{{"to":"{completionTimeFromAscendingNode}"}} }} }}'
          - '$.date'
        polarizationMode:
          - '{{"search":{{"polarization":"{polarizationMode}" }} }}'
          - '$.polarization'
        # Custom parameters (not defined in the base document referenced above)
        awsPath:
          - '{{"search":{{"awsPath":"{awsPath}" }} }}'
          - '$.awsPath'
        downloadLink: 's3://sentinel-s1-l1c/{awsPath}'
        thumbnail: 'https://render.eosda.com/S1/thumb/{title}.png'
        quicklook: 'https://render.eosda.com/S1/thumb/{title}.png'
        id:
          - '{{"search":{{"sceneID":"{id}" }} }}'
          - '{title}'
    S2_MSI_L1C:
      collection: sentinel2
      metadata_mapping:
        # OpenSearch Parameters for Collection Search (Table 3)
        productType: '$.null'
        platformSerialIdentifier:
          - '{{"search":{{"satelliteName":"{platformSerialIdentifier}" }} }}'
          - '$.satelliteName'
        # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4)
        title:
          - '{{"search":{{"productName":"{title}" }} }}'
          - '$.productName'
        # OpenSearch Parameters for Product Search (Table 5)
        cloudCover:
          - '{{"search":{{"cloudCoverage":"{cloudCover}" }} }}'
          - '$.cloudCoverage'
        # OpenSearch Parameters for Acquistion Parameters Search (Table 6)
        startTimeFromAscendingNode:
          - '{{"search":{{"date":{{"from":"{startTimeFromAscendingNode}"}} }} }}'
          - '$.timestamp'
        completionTimeFromAscendingNode:
          - '{{"search":{{"date":{{"to":"{completionTimeFromAscendingNode}"}} }} }}'
          - '$.timestamp'
        illuminationAzimuthAngle:
          - '{{"search":{{"azimuthAngle":"{illuminationAzimuthAngle}" }} }}'
          - '$.azimuthAngle'
        illuminationZenithAngle:
          - '{{"search":{{"zenithAngle":"{illuminationZenithAngle}" }} }}'
          - '$.zenithAngle'
        # Custom parameters (not defined in the base document referenced above)
        originalTileMeta: '{$.originalTileMeta#replace_str("sentinel-s2-l1c.s3.amazonaws.com","roda.sentinel-hub.com/sentinel-s2-l1c")}'
        thumbnail: '{$.thumbnail#replace_str("sentinel-s2-l1c.s3.amazonaws.com","roda.sentinel-hub.com/sentinel-s2-l1c")}'
        awsPath:
          - '{{"search":{{"awsPath":"{awsPath}" }} }}'
          - '$.awsPath'
        downloadLink: 's3://sentinel-s2-l1c/{awsPath}'
        productMetaLink: '{$.productMetaLink#replace_str("sentinel-s2-l1c.s3.amazonaws.com","roda.sentinel-hub.com/sentinel-s2-l1c")}'
        productPath:
          - '{{"search":{{"productPath":"{productPath}" }} }}'
          - '$.productPath'
        id:
          - '{{"search":{{"productName":"{id}" }} }}'
          - '{title}'
        processedL2A: '$.null'
        awsPathL2A: '$.null'
    S2_MSI_L2A:
      collection: sentinel2
      processedL2A: true
      # specific QueryStringSearch usage for these parameters (replaces current query)
      specific_qssearch:
        parameters:
          - title
          - id
        results_entry: '$'
        collection:
          - tileInfo
          - productInfo
        merge_responses: true
        metadata_mapping:
          title:
            - 'title'
            - '$.name'
          id:
            - 'title'
            - '{title}'
          awsPathL2A: '$.tiles[0].path'
          downloadLink: 's3://sentinel-s2-l2a/{awsPathL2A}'
          productPath: '$.path'
          startTimeFromAscendingNode: '$.timestamp'
          completionTimeFromAscendingNode: '$.timestamp'
          geometry: '$.tileDataGeometry'
          productInfo: 'https://roda.sentinel-hub.com/sentinel-s2-l2a/{awsPathL2A}/productInfo.json'
          originalSceneID: '$.tiles[0].datastrip.id'
      metadata_mapping:
        # OpenSearch Parameters for Collection Search (Table 3)
        productType: '$.null'
        platformSerialIdentifier:
          - '{{"search":{{"satelliteName":"{platformSerialIdentifier}" }} }}'
          - '$.satelliteName'
        # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4)
        title: '{$.productName#fake_l2a_title_from_l1c}'
        # OpenSearch Parameters for Product Search (Table 5)
        cloudCover:
          - '{{"search":{{"cloudCoverage":"{cloudCover}" }} }}'
          - '$.cloudCoverage'
        # OpenSearch Parameters for Acquistion Parameters Search (Table 6)
        startTimeFromAscendingNode:
          - '{{"search":{{"date":{{"from":"{startTimeFromAscendingNode}"}} }} }}'
          - '$.timestamp'
        completionTimeFromAscendingNode:
          - '{{"search":{{"date":{{"to":"{completionTimeFromAscendingNode}"}} }} }}'
          - '$.timestamp'
        illuminationAzimuthAngle:
          - '{{"search":{{"azimuthAngle":"{illuminationAzimuthAngle}" }} }}'
          - '$.azimuthAngle'
        illuminationZenithAngle:
          - '{{"search":{{"zenithAngle":"{illuminationZenithAngle}" }} }}'
          - '$.zenithAngle'
        # Custom parameters (not defined in the base document referenced above)
        originalTileMeta: '{$.originalTileMeta#replace_str("sentinel-s2-l1c.s3.amazonaws.com","roda.sentinel-hub.com/sentinel-s2-l2a")}'
        thumbnail: '{$.thumbnail#replace_str("sentinel-s2-l1c.s3.amazonaws.com","roda.sentinel-hub.com/sentinel-s2-l1c")}'
        quicklook: '{thumbnail}'
        downloadLink: 's3://sentinel-s2-l2a/{awsPathL2A}'
        awsPath: '$.null'
        productMetaLink: '$.null'
        productPath: '$.null'
        productInfo: 'https://roda.sentinel-hub.com/sentinel-s2-l2a/{awsPathL2A}/productInfo.json'
        id:
          - '{id#s2msil2a_title_to_aws_productinfo}'
          - '{title}'
        processedL2A:
          - '{{"search":{{"processedL2A":"{processedL2A}" }} }}'
          - '$.processedL2A'
        awsPathL2A:
          - '{{"search":{{"awsPathL2A":"{awsPathL2A}" }} }}'
          - '$.awsPathL2A'

  download: !plugin
    type: AwsDownload
    requester_pays: True
    products:
      CBERS4_MUX_L2:
        default_bucket: 'cbers-pds'
        complementary_url_key:
          - metaDownloadLink
      CBERS4_AWFI_L2:
        complementary_url_key:
          - metaDownloadLink
      CBERS4_PAN5M_L2:
        complementary_url_key:
          - metaDownloadLink
      CBERS4_PAN10M_L2:
        complementary_url_key:
          - metaDownloadLink
      S1_SAR_GRD:
        default_bucket: 'sentinel-s1-l1c'
        build_safe: true
      S2_MSI_L1C:
        default_bucket: 'sentinel-s2-l1c'
        build_safe: true
        complementary_url_key:
          - productPath
      S2_MSI_L2A:
        default_bucket: 'sentinel-s2-l2a'
        build_safe: true
        fetch_metadata:
          fetch_url: '{productInfo}'
          fetch_format: json
          update_metadata:
            title: '$.name'
            id: '{title}'
            productPath: '$.path'
        complementary_url_key:
          - productPath
  auth: !plugin
    type: AwsAuth

---
!provider
  name: theia
  priority: 0
  description: French National Space Agency (CNES) catalog for Sentinel 2 products, Pleiades and Landsat products
  roles:
    - host
  url: https://theia.cnes.fr/atdistrib/rocket/
  search: !plugin
    type: QueryStringSearch
    api_endpoint: 'https://theia.cnes.fr/atdistrib/resto2/api/collections/{collection}/search.json'
    need_auth: false
    pagination:
      next_page_url_tpl: '{url}?{search}&maxRecords={items_per_page}&page={page}'
      total_items_nb_key_path: '$.properties.totalResults'
      # 2021/03/19: Returns a 400 error code if greater than 500.
      max_items_per_page: 500
    discover_metadata:
      auto_discovery: true
      metadata_pattern: '^(?!collection)[a-zA-Z0-9_]+$'
      search_param: '{metadata}={{{metadata}}}'
      metadata_path: '$.properties.*'
    metadata_mapping:
      # Opensearch resource identifier within the search engine context (in our case
      # within the context of the data provider)
      uid: '$.id'
      # OpenSearch Parameters for Collection Search (Table 3)
      productType:
        - productType
        - '$.properties.productType'
      platform:
        - platform
        - '$.properties.platform'
      platformSerialIdentifier:
        - 'platform={platformSerialIdentifier}'
        - '$.properties.platform'
      instrument:
        - instrument
        - '$.properties.instrument'
      processingLevel:
        - processingLevel
        - '$.properties.processingLevel'

      # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4)
      title: '$.properties.title'
      keyword: '$.properties.keywords'
      resolution: '$.properties.resolution'
      organisationName: '$.properties.organisationName'
      publicationDate: '$.properties.published'
      accessConstraint: '$.properties.license'

      # OpenSearch Parameters for Product Search (Table 5)
      parentIdentifier: '$.properties.parentIdentifier'
      orbitNumber: '$.properties.orbitNumber'
      cloudCover:
        - 'cloudCover=[0,{cloudCover}]'
        - '$.properties.cloudCover'
      snowCover: '$.properties.snowCover'
      productVersion: '$.properties.version'
      creationDate: '$.properties.productionDate'
      modificationDate: '$.properties.modificationDate'
      processingDate: '$.properties.processingDate'
      sensorMode: '$.properties.sensorMode'
      archivingCenter: '$.properties.archivingCenter'
      processingMode: '$.properties.processingMode'

      # OpenSearch Parameters for Acquistion Parameters Search (Table 6)
      availabilityTime: '$.properties.availabilityTime'
      acquisitionStation: '$.properties.acquisitionStation'
      acquisitionSubType: '$.properties.acquisitionSubType'
      startTimeFromAscendingNode:
        - 'startDate={startTimeFromAscendingNode#to_iso_date}'
        - '$.properties.startDate'
      completionTimeFromAscendingNode:
        - 'completionDate={completionTimeFromAscendingNode#to_iso_date}'
        - '$.properties.completionDate'
      illuminationAzimuthAngle: '$.properties.illuminationAzimuthAngle'
      illuminationZenithAngle: '$.properties.illuminationZenithAngle'
      illuminationElevationAngle: '$.properties.illuminationElevationAngle'
      polarizationMode: '$.properties.polarizationMode'
      polarizationChannels: '$.properties.polarisationChannels'
      antennaLookDirection: '$.properties.antennaLookDirection'
      minimumIncidenceAngle: '$.properties.minimumIncidenceAngle'
      maximumIncidenceAngle: '$.properties.maximumIncidenceAngle'
      dopplerFrequency: '$.properties.dopplerFrequency'
      incidenceAngleVariation: '$.properties.incidenceAngleVariation'

      # Custom parameters (not defined in the base document referenced above)
      id: '$.properties.productIdentifier'
      tileIdentifier:
        - 'location=T{tileIdentifier#replace_str(r"^T(.*)$",r"\1")}'
        - '{$.properties.location#replace_str(r"^T(.*)$",r"\1")}'
      # The geographic extent of the product
      geometry:
        - 'geometry={geometry#to_rounded_wkt}'
        - '$.geometry'
      # The url of the quicklook
      quicklook: '$.properties.quicklook'
      # The url to download the product "as is" (literal or as a template to be completed either after the search result
      # is obtained from the provider or during the eodag download phase)
      downloadLink: '$.properties.services.download.url'

      # Additional metadata provided by the providers but that don't appear in the reference spec
      # Or has a different signification for the provider
      thumbnail: '$.properties.thumbnail'

      # storageStatus set to ONLINE for consistency between providers
      storageStatus: '{$.null#replace_str("Not Available","ONLINE")}'

  products:
    S2_MSI_L2A_MAJA:
      processingLevel: LEVEL2A
      collection: SENTINEL2
    S2_MSI_L2B_MAJA_SNOW:
      processingLevel: L2B-SNOW
      collection: Snow
    S2_MSI_L2B_MAJA_WATER:
      processingLevel: L2B-WATER
      collection: WaterQual
    S2_MSI_L3A_WASP:
      processingLevel: LEVEL3A
      collection: SENTINEL2
    SPOT_SWH:
      collection: SPOTWORLDHERITAGE
      processingLevel: LEVEL1C
    SPOT_SWH_OLD:
      collection: SWH1
      processingLevel: LEVEL1C
    SPOT5_SPIRIT:
      collection: Spirit
      processingLevel: 1A
    VENUS_L1C:
      collection: VENUS
      processingLevel: LEVEL1C
    VENUS_L2A_MAJA:
      collection: VENUS
      processingLevel: LEVEL2A
    VENUS_L3A_MAJA:
      collection: VENUS
      processingLevel: LEVEL3A
    L8_REFLECTANCE:
      collection: LANDSAT
      productType: REFLECTANCE
    L57_REFLECTANCE:
      collection: Landsat57
      productType: REFLECTANCE
    PLD_PAN:
      collection: Pleiades
      productType: Panchromatique+(Pan)
    PLD_XS:
      collection: Pleiades
      productType: Multispectral+(XS)
    PLD_BUNDLE:
      collection: Pleiades
      productType: Bundle+(Pan,+XS)
    PLD_PANSHARPENED:
      collection: Pleiades
      productType: Pansharpened+(Pan%2BXS)
    OSO:
      collection: OSO
    GENERIC_PRODUCT_TYPE:
      productType: '{productType}'
      collection: '{collection}'
      processingLevel: '{processingLevel}'
  download: !plugin
    type: HTTPDownload
    base_uri: 'https://theia.cnes.fr/atdistrib/resto2'
    extract: true
    order_enabled: true
    auth_error_code: 403
    dl_url_params:
      issuerId: theia
  auth: !plugin
    type: TokenAuth
    auth_uri: 'https://theia.cnes.fr/atdistrib/services/authenticate/'

---
!provider
  name: peps
  priority: 1
  description: |
    The PEPS platform, the French "mirror site", redistributes the products of Sentinel satellites,
    S1A, S1B, S2A and S2B, S3A and S3B from COPERNICUS, the European system for the Earth monitoring.
  roles:
    - host
  url: https://peps.cnes.fr
  search: !plugin
    type: QueryStringSearch
    api_endpoint: 'https://peps.cnes.fr/resto/api/collections/{collection}/search.json'
    need_auth: false
    pagination:
      next_page_url_tpl: '{url}?{search}&maxRecords={items_per_page}&page={page}'
      total_items_nb_key_path: '$.properties.totalResults'
      # 2021/03/19: 500 is the max, no error if greater
      max_items_per_page: 500
    discover_metadata:
      auto_discovery: true
      metadata_pattern: '^(?!collection)[a-zA-Z0-9_]+$'
      search_param: '{metadata}={{{metadata}}}'
      metadata_path: '$.properties.*'
    metadata_mapping:
      # Opensearch resource identifier within the search engine context (in our case
      # within the context of the data provider)
      uid: '$.id'
      # OpenSearch Parameters for Collection Search (Table 3)
      productType:
        - productType
        - '$.properties.productType'
      platform: '$.properties.collection'
      platformSerialIdentifier:
        - platform
        - '$.properties.platform'
      instrument:
        - instrument
        - '$.properties.instrument'
      processingLevel:
        - processingLevel
        - '$.properties.processingLevel'

      # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4)
      title: '$.properties.title'
      topicCategory: '$.properties.topicCategory'
      keyword: '$.properties.keywords'
      abstract: '$.properties.description'
      resolution:
        - 'resolution'
        - '$.properties.resolution'
      organisationName:
        - 'organisationName'
        - '$.properties.organisationName'
      publicationDate: '$.properties.published'
      accessConstraint: '$.properties.license'

      # OpenSearch Parameters for Product Search (Table 5)
      parentIdentifier:
        - 'parentIdentifier'
        - '$.properties.parentIdentifier'
      acquisitionType: '$.properties.acquisitionType'
      orbitNumber:
        - 'orbitNumber'
        - '$.properties.orbitNumber'
      orbitDirection:
        - 'orbitDirection'
        - '$.properties.orbitDirection'
      swathIdentifier:
        - 'swath'
        - '$.properties.swath'
      cloudCover:
        - 'cloudCover=[0,{cloudCover}]'
        - '$.properties.cloudCover'
      snowCover:
        - 'snowCover=[0,{snowCover}]'
        - '$.properties.snowCover'
      productVersion: '$.properties.version'
      productQualityStatus: '$.properties.onlineQualityCheck'
      processorName: '$.properties.processingName'
      processingCenter: '$.properties.processingCenter'
      creationDate: '$.properties.dhusIngestDate'
      modificationDate: '$.properties.updated'
      sensorMode:
        - 'sensorMode'
        - '$.properties.sensorMode'

      # OpenSearch Parameters for Acquistion Parameters Search (Table 6)
      startTimeFromAscendingNode:
        - startDate
        - '$.properties.startDate'
      completionTimeFromAscendingNode:
        - completionDate
        - '$.properties.completionDate'
      polarizationMode:
        - 'polarisation'
        - '$.properties.polarisation'

      # Custom parameters (not defined in the base document referenced above)
      id:
        - 'productIdentifier={id#remove_extension}'
        - '$.properties.productIdentifier'
      tileIdentifier:
        - 'tileid'
        - '$.properties.mgrs'
      # The geographic extent of the product
      geometry:
        - 'geometry={geometry#to_rounded_wkt}'
        - '$.geometry'
      # The url of the quicklook
      quicklook: '$.properties.quicklook'
      # The url to download the product "as is" (literal or as a template to be completed either after the search result
      # is obtained from the provider or during the eodag download phase)
      downloadLink: '$.properties.services.download.url'
      # storageStatus: must be one of ONLINE, STAGING, OFFLINE
      storageStatus: '{$.properties.storage.mode#get_group_name((?P<ONLINE>disk|tier2)|(?P<STAGING>staging)|(?P<OFFLINE>unknown|tape|tier3))}'

      # Additional metadata provided by the providers but that don't appear in the reference spec
      thumbnail: '$.properties.thumbnail'
  products:
    S1_SAR_OCN:
      productType: OCN
      collection: S1
      metadata_mapping:
        cloudCover: '$.null'
    S1_SAR_GRD:
      productType: GRD
      collection: S1
      metadata_mapping:
        cloudCover: '$.null'
    S1_SAR_SLC:
      productType: SLC
      collection: S1
      metadata_mapping:
        cloudCover: '$.null'
    S2_MSI_L1C:
      collection: S2ST
      productType: S2MSI1C
    GENERIC_PRODUCT_TYPE:
      productType: '{productType}'
      collection: '{collection}'
  download: !plugin
    type: HTTPDownload
    base_uri: 'https://peps.cnes.fr/resto'
    extract: true
    archive_depth: 2
    order_enabled: true
    auth_error_code: 401
    dl_url_params:
      issuerId: peps
  auth: !plugin
    type: GenericAuth
    auth_uri: 'https://peps.cnes.fr/resto/api/users/connect'
---
!provider
  name: creodias
  priority: 0
  description: CloudFerro DIAS
  roles:
    - host
  url: https://creodias.eu/
  search: !plugin
    type: QueryStringSearch
    api_endpoint: 'http://datahub.creodias.eu/resto/api/collections/{collection}/search.json'
    need_auth: false
    timeout: 60
    pagination:
      next_page_url_tpl: '{url}?{search}&maxRecords={items_per_page}&page={page}&exactCount=1'
      total_items_nb_key_path: '$.properties.totalResults'
      max_items_per_page: 1_000
    discover_metadata:
      auto_discovery: true
      metadata_pattern: '^(?!collection)[a-zA-Z0-9]+$'
      search_param: '{metadata}={{{metadata}}}'
      metadata_path: '$.properties.*'
    discover_product_types:
      fetch_url: https://finder.creodias.eu/attributes.json
      result_type: json
      results_entry: 'collections[?billing=="free"]'
      generic_product_type_id: '$.id'
      generic_product_type_parsable_properties:
        collection: '$.id'
      generic_product_type_parsable_metadata:
        abstract: '$.description'
        instrument: '{$.summaries.instruments#csv_list}'
        platform: '{$.summaries.constellation#csv_list}'
        platformSerialIdentifier: '{$.summaries.platform#csv_list}'
        processingLevel: '$.summaries."processing:level"'
        keywords: '{$.keywords#csv_list}'
        license: '$.license'
        title: '$.title'
        missionStartDate: '$.extent.temporal.interval[0][0]'
    metadata_mapping:
      uid: '$.id'
      productType:
        - productType
        - '$.properties.productType'
      platform: '$.properties.collection'
      platformSerialIdentifier:
        - platform
        - '$.properties.platform'
      instrument:
        - instrument
        - '$.properties.instrument'
      processingLevel:
        - processingLevel
        - '$.properties.processingLevel'
      # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4)
      title: '{$.properties.title#remove_extension}'
      topicCategory: '$.properties.topicCategory'
      keyword: '$.properties.keywords'
      abstract: '$.properties.description'
      resolution:
        - 'resolution'
        - '$.properties.resolution'
      organisationName:
        - 'organisationName'
        - '$.properties.organisationName'
      publicationDate: '$.properties.published'
      accessConstraint: '$.properties.license'

      # OpenSearch Parameters for Product Search (Table 5)
      parentIdentifier:
        - 'parentIdentifier'
        - '$.properties.parentIdentifier'
      acquisitionType: '$.properties.acquisitionType'
      orbitNumber:
        - 'orbitNumber'
        - '$.properties.orbitNumber'
      orbitDirection:
        - 'orbitDirection'
        - '$.properties.orbitDirection'
      swathIdentifier:
        - 'swath'
        - '$.properties.swath'
      cloudCover:
        - 'cloudCover=[0,{cloudCover}]'
        - '$.properties.cloudCover'
      snowCover:
        - 'snowCover=[0,{snowCover}]'
        - '$.properties.snowCover'
      productVersion: '$.properties.version'
      productQualityStatus: '$.properties.onlineQualityCheck'
      processorName: '$.properties.processingName'
      processingCenter: '$.properties.processingCenter'
      creationDate: '$.properties.dhusIngestDate'
      modificationDate: '$.properties.updated'
      sensorMode:
        - 'sensorMode'
        - '$.properties.sensorMode'
      # OpenSearch Parameters for Acquistion Parameters Search (Table 6)
      startTimeFromAscendingNode:
        - startDate
        - '$.properties.startDate'
      completionTimeFromAscendingNode:
        - completionDate
        - '$.properties.completionDate'
      polarizationMode:
        - 'polarisation'
        - '$.properties.polarisation'

      # Custom parameters (not defined in the base document referenced above)
      id:
        - 'productIdentifier=%{id#remove_extension}%'
        - '{$.properties.title#remove_extension}'
      tileIdentifier:
        - tileId
        - '$.null'
      # The geographic extent of the product
      geometry:
        - 'geometry={geometry#to_rounded_wkt}'
        # - '$.geometry'
        - '($.geometry.`str()`.`sub(/^\\[\\]$/, POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90)))`)|($.geometry[*])'
      # The url of the quicklook
      quicklook: '$.properties.thumbnail'
      # The url to download the product "as is" (literal or as a template to be completed either after the search result
      # is obtained from the provider or during the eodag download phase)
      downloadLink: 'https://zipper.creodias.eu/download/{uid}'
      # storageStatus must be one of ONLINE, STAGING, OFFLINE
      storageStatus: '$.properties.status'

      # Additional metadata provided by the providers but that don't appear in the reference spec
      thumbnail: '$.properties.thumbnail'
  download: !plugin
    type: HTTPDownload
    base_uri: 'https://zipper.creodias.eu/download/'
    extract: true
    order_enabled: false
    archive_depth: 2
  auth: !plugin
    type: KeycloakOIDCPasswordAuth
    auth_base_uri: 'https://identity.cloudferro.com/auth'
    realm: 'Creodias-new'
    client_id: 'CLOUDFERRO_PUBLIC'
    client_secret: 'dc0aca03-2dc6-4798-a5de-fc5aeb6c8ee1'
    token_provision: qs
    token_qs_key: 'token'
    auth_error_code: 401
  products:
      # S1
    S1_SAR_RAW:
      productType: RAW
      collection: Sentinel1
      metadata_mapping:
        cloudCover: '$.null'
    S1_SAR_GRD:
      productType: GRD
      collection: Sentinel1
      metadata_mapping:
        cloudCover: '$.null'
    S1_SAR_SLC:
      productType: SLC
      collection: Sentinel1
      metadata_mapping:
        cloudCover: '$.null'
    S1_SAR_OCN:
      productType: OCN
      collection: Sentinel1
      metadata_mapping:
        cloudCover: '$.null'
    # S2
    S2_MSI_L1C:
      collection: SENTINEL-2
      productType: S2MSI1C
    S2_MSI_L2A:
      collection: SENTINEL-2
      productType: S2MSI2A
    # S3 SRAL
    S3_SRA:
      productType: SRA
      collection: Sentinel3
      metadata_mapping:
        cloudCover: '$.null'
    S3_SRA_A:
      productType: SRA_A
      collection: Sentinel3
      metadata_mapping:
        cloudCover: '$.null'
    S3_SRA_BS:
      productType: SRA_BS
      collection: Sentinel3
      metadata_mapping:
        cloudCover: '$.null'
    S3_LAN:
      productType: LAN
      collection: Sentinel3
      metadata_mapping:
        cloudCover: '$.null'
    S3_WAT:
      productType: WAT
      collection: Sentinel3
      metadata_mapping:
        cloudCover: '$.null'
    # S3 OLCI
    S3_EFR:
      productType: EFR
      collection: Sentinel3
    S3_ERR:
      productType: ERR
      collection: Sentinel3
    S3_OLCI_L2LRR:
      productType: LRR
      collection: Sentinel3
    S3_OLCI_L2LFR:
      productType: LFR
      collection: Sentinel3
    S3_OLCI_L2WRR:
      productType: WRR
      collection: Sentinel3
    S3_OLCI_L2WFR:
      productType: WFR
      collection: Sentinel3
    # S3 SLSTR
    S3_SLSTR_L1RBT:
      productType: RBT
      collection: Sentinel3
    S3_SLSTR_L2LST:
      productType: LST
      collection: Sentinel3
    S3_SLSTR_L2WST:
      productType: WST
      collection: Sentinel3
    S3_SLSTR_L2AOD:
      productType: AOD___
      collection: Sentinel3
    S3_SLSTR_L2FRP:
      productType: FRP___
      collection: Sentinel3
    # S3 SY
    S3_SY_AOD:
      productType: SY_2_AOD___
      collection: Sentinel3
    S3_SY_SYN:
      productType: SY_2_SYN___
      collection: Sentinel3
    S3_SY_V10:
      productType: SY_2_V10___
      collection: Sentinel3
    S3_SY_VG1:
      productType: SY_2_VG1___
      collection: Sentinel3
    S3_SY_VGP:
      productType: SY_2_VGP___
      collection: Sentinel3
    # S5P L1
    S5P_L1B_IR_SIR:
      productType: L1B_IR_SIR
      collection: Sentinel5P
    S5P_L1B_IR_UVN:
      productType: L1B_IR_UVN
      collection: Sentinel5P
    S5P_L1B_RA_BD1:
      productType: L1B_RA_BD1
      collection: Sentinel5P
    S5P_L1B_RA_BD2:
      productType: L1B_RA_BD2
      collection: Sentinel5P
    S5P_L1B_RA_BD3:
      productType: L1B_RA_BD3
      collection: Sentinel5P
    S5P_L1B_RA_BD4:
      productType: L1B_RA_BD4
      collection: Sentinel5P
    S5P_L1B_RA_BD5:
      productType: L1B_RA_BD5
      collection: Sentinel5P
    S5P_L1B_RA_BD6:
      productType: L1B_RA_BD6
      collection: Sentinel5P
    S5P_L1B_RA_BD7:
      productType: L1B_RA_BD7
      collection: Sentinel5P
    S5P_L1B_RA_BD8:
      productType: L1B_RA_BD8
      collection: Sentinel5P
    # S5P L2
    S5P_L2_NO2:
      productType: L2__NO2___
      collection: Sentinel5P
    S5P_L2_CLOUD:
      productType: L2__CLOUD_
      collection: Sentinel5P
    S5P_L2_O3:
      productType: L2__O3____
      collection: Sentinel5P
    S5P_L2_CO:
      productType: L2__CO____
      collection: Sentinel5P
    S5P_L2_AER_AI:
      productType: L2__AER_AI
      collection: Sentinel5P
    S5P_L2_O3_PR:
      productType: L2__O3__PR
      collection: Sentinel5P
    S5P_L2_O3_TCL:
      productType: L2__O3_TCL
      collection: Sentinel5P
    S5P_L2_AER_LH:
      productType: L2__AER_LH
      collection: Sentinel5P
    S5P_L2_HCHO:
      productType: L2__HCHO__
      collection: Sentinel5P
    S5P_L2_CH4:
      productType: L2__CH4___
      collection: Sentinel5P
    S5P_L2_NP_BD3:
      productType: L2__NP_BD3
      collection: Sentinel5P
    S5P_L2_NP_BD6:
      productType: L2__NP_BD6
      collection: Sentinel5P
    S5P_L2_NP_BD7:
      productType: L2__NP_BD7
      collection: Sentinel5P
    S5P_L2_SO2:
      productType: L2__SO2___
      collection: Sentinel5P
    # COP DEM
    COP_DEM_GLO30_DGED:
      productType: DGE_30
      collection: CopDem
      metadata_mapping:
        cloudCover: '$.null'
    COP_DEM_GLO30_DTED:
      productType: DTE_30
      collection: CopDem
      metadata_mapping:
        cloudCover: '$.null'
    COP_DEM_GLO90_DGED:
      productType: DGE_90
      collection: CopDem
      metadata_mapping:
        cloudCover: '$.null'
    COP_DEM_GLO90_DTED:
      productType: DTE_90
      collection: CopDem
      metadata_mapping:
        cloudCover: '$.null'
    GENERIC_PRODUCT_TYPE:
      productType: '{productType}'
      collection: '{collection}'
---
!provider
  name: onda
  priority: 0
  description: Serco DIAS
  roles:
    - host
  url: https://www.onda-dias.eu/cms/
  search: !plugin
    type: ODataV4Search
    api_endpoint: 'https://catalogue.onda-dias.eu/dias-catalogue/Products'
    timeout: 60
    need_auth: false
    dont_quote:
      - '['
      - ']'
      - '$'
      - '='
      - '&'
      - ':'
    pagination:
      count_endpoint: 'https://catalogue.onda-dias.eu/dias-catalogue/Products/$count'
      next_page_url_tpl: '{url}?{search}&$top={items_per_page}&$skip={skip}&$expand=Metadata'
      # 2021/03/19: 2000 is the max, if greater 200 response but contains an error message
      max_items_per_page: 2_000
    results_entry: 'value'
    literal_search_params:
      $format: json
    free_text_search_operations:
      $search:
        union: ' OR '
        wrapper: '"{}"'
        operations:
          AND:
            - 'footprint:"Intersects({geometry#to_rounded_wkt})"'
            - 'productType:{productType}'
            - 'platformName:{platform}'
            - 'cloudCoverPercentage:[0 TO {cloudCover}]'
            - 'beginPosition:[{startTimeFromAscendingNode#to_iso_utc_datetime} TO *]'
            - 'endPosition:[* TO {completionTimeFromAscendingNode#to_iso_utc_datetime}]'
            - '{id#remove_extension}'
            - 'platformSerialIdentifier:{platformSerialIdentifier}'
            - 'instrumentShortName:{instrument}'
            - 'processingLevel:{processingLevel}'
            - 'sensorType:{sensorType}'
            - 'topicCategory:{topicCategory}'
            - 'lineage:{lineage}'
            - 'orbitNumber:{orbitNumber}'
            - 'orbitDirection:{orbitDirection}'
            - 'processingBaseline:{productVersion}'
            - 'generalQualityFlag:{productQualityStatus}'
            - 'sensorOperationalMode:{sensorMode}'
            - 'tileIdentifier:{tileIdentifier}'
    discover_metadata:
      auto_discovery: true
      metadata_pattern: '^[a-zA-Z0-9]+$'
      search_param:
        free_text_search_operations:
          $search:
            operations:
              AND:
                - '{metadata}:{{{metadata}}}'
      metadata_path: '$.Metadata.*'
    per_product_metadata_query: false
    metadata_pre_mapping:
      metadata_path: '$.Metadata'
      metadata_path_id: 'id'
      metadata_path_value: 'value'
    metadata_mapping:
      # Opensearch resource identifier within the search engine context (in our case
      # within the context of the data provider)
      # Queryable parameters are set with null as 1st configuration list value to mark them as queryable,
      #   but `free_text_search_operations.$search.operations.AND` entries are then used instead.
      uid: '$.id'
      # OpenSearch Parameters for Collection Search (Table 3)
      productType:
        - null
        - '$.Metadata.productType'
      platform:
        - null
        - '$.Metadata.platformName'
      platformSerialIdentifier:
        - null
        - '$.Metadata.platformSerialIdentifier'
      instrument:
        - null
        - '$.Metadata.instrumentShortName'
      processingLevel:
        - null
        - '$.Metadata.processingLevel'
      sensorType:
        - null
        - '$.Metadata.sensorType'

      # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4)
      title: '$.Metadata.filename'
      topicCategory:
        - null
        - '$.Metadata.topicCategory'
      lineage:
        - null
        - '$.Metadata.lineage'

      # OpenSearch Parameters for Product Search (Table 5)
      orbitNumber:
        - null
        - '$.Metadata.orbitNumber'
      orbitDirection:
        - null
        - '$.Metadata.orbitDirection'
      cloudCover:
        - null
        - '$.Metadata.cloudCoverPercentage'
      productVersion:
        - null
        - '$.Metadata.processingBaseline'
      productQualityStatus:
        - null
        - '$.Metadata.generalQualityFlag'
      creationDate: '$.Metadata.creationDate'
      processingDate: '$.Metadata.processingDate'
      sensorMode:
        - null
        - '$.Metadata.sensorOperationalMode'

      # OpenSearch Parameters for Acquistion Parameters Search (Table 6)
      startTimeFromAscendingNode:
        - null
        - '$.beginPosition'
      completionTimeFromAscendingNode:
        - null
        - '$.endPosition'
      polarizationChannels: '{$.Metadata.polarisationChannels#replace_str(","," ")}'

      # Custom parameters (not defined in the base document referenced above)
      id:
        - null
        - '{$.Metadata.filename#remove_extension}'
      tileIdentifier:
        - null
        - '$.Metadata.tileIdentifier'
      # The geographic extent of the product
      geometry:
        - null
        - '$.footprint'
      # The url of the quicklook
      quicklook: '$.quicklook'
      # The url to download the product "as is" (literal or as a template to be completed either after the search result
      # is obtained from the provider or during the eodag download phase)
      downloadLink: '%(base_uri)s({uid})/$value'
      # storageStatus: must be one of ONLINE, STAGING, OFFLINE
      storageStatus: '{$.offline#get_group_name((?P<ONLINE>False)|(?P<OFFLINE>True))}'
      # Url used for ordering product if it is offline/archived
      orderLink: 'https://catalogue.onda-dias.eu/dias-catalogue/Products({uid})/Ens.Order'
  products:
    # S1
    S1_SAR_OCN:
      productType: '*OCN*'
      metadata_mapping:
        cloudCover: '$.null'
    S1_SAR_GRD:
      productType: '*GRD*'
      metadata_mapping:
        cloudCover: '$.null'
    S1_SAR_SLC:
      productType: '*SLC*'
      metadata_mapping:
        cloudCover: '$.null'
    S1_SAR_RAW:
      productType: '*RAW*'
      metadata_mapping:
        cloudCover: '$.null'
    # S2
    S2_MSI_L1C:
      productType: S2MSI1C
    S2_MSI_L2A:
      productType: S2MSI2A
    # S3 SRAL
    S3_SRA:
      productType: SR_1_SRA___
      metadata_mapping:
        cloudCover: '$.null'
    S3_SRA_A:
      productType: SR_1_SRA_A_
      metadata_mapping:
        cloudCover: '$.null'
    S3_SRA_BS:
      productType: SR_1_SRA_BS
      metadata_mapping:
        cloudCover: '$.null'
    S3_LAN:
      productType: SR_2_LAN___
      metadata_mapping:
        cloudCover: '$.null'
    S3_WAT:
      productType: SR_2_WAT___
      metadata_mapping:
        cloudCover: '$.null'
    # S3 OLCI
    S3_EFR:
      productType: OL_1_EFR___
    S3_ERR:
      productType: OL_1_ERR___
    S3_OLCI_L2LFR:
      productType: OL_2_LFR___
    S3_OLCI_L2LRR:
      productType: OL_2_LRR___
    S3_OLCI_L2WRR:
      productType: OL_2_WRR___
    S3_OLCI_L2WFR:
      productType: OL_2_WFR___
    # S3 SLSTR
    S3_SLSTR_L1RBT:
      productType: SL_1_RBT___
    S3_SLSTR_L2LST:
      productType: SL_2_LST___
    S3_SLSTR_L2WST:
      productType: SL_2_WST___
    S3_SLSTR_L2FRP:
      productType: SL_2_FRP___
    # S3 SY
    S3_SY_AOD:
      productType: SY_2_AOD___
    S3_SY_SYN:
      productType: SY_2_SYN___
    S3_SY_V10:
      productType: SY_2_V10___
    S3_SY_VG1:
      productType: SY_2_VG1___
    S3_SY_VGP:
      productType: SY_2_VGP___
    # S5P L1
    S5P_L1B_RA_BD1:
      productType: L1B_RA_BD1
    S5P_L1B_RA_BD2:
      productType: L1B_RA_BD2
    S5P_L1B_RA_BD3:
      productType: L1B_RA_BD3
    S5P_L1B_RA_BD4:
      productType: L1B_RA_BD4
    S5P_L1B_RA_BD5:
      productType: L1B_RA_BD5
    S5P_L1B_RA_BD6:
      productType: L1B_RA_BD6
    S5P_L1B_RA_BD7:
      productType: L1B_RA_BD7
    S5P_L1B_RA_BD8:
      productType: L1B_RA_BD8
    # S5P L2
    S5P_L2_NO2:
      productType: L2__NO2___
    S5P_L2_CLOUD:
      productType: L2__CLOUD_
    S5P_L2_O3:
      productType: L2__O3____
    S5P_L2_CO:
      productType: L2__CO____
    S5P_L2_AER_AI:
      productType: L2__AER_AI
    S5P_L2_O3_PR:
      productType: L2__O3__PR
    S5P_L2_AER_LH:
      productType: L2__AER_LH
    S5P_L2_HCHO:
      productType: L2__HCHO__
    S5P_L2_CH4:
      productType: L2__CH4___
    S5P_L2_NP_BD3:
      productType: L2__NP_BD3
    S5P_L2_NP_BD6:
      productType: L2__NP_BD6
    S5P_L2_NP_BD7:
      productType: L2__NP_BD7
    S5P_L2_SO2:
      productType: L2__SO2___
    # Landsat
    L8_OLI_TIRS_C1L1:
      platform: 'Landsat-*'
    GENERIC_PRODUCT_TYPE:
      productType: '{productType}'
      platform: '{platform}'
  download: !plugin
    type: HTTPDownload
    base_uri: 'https://catalogue.onda-dias.eu/dias-catalogue/Products'
    extract: true
    auth_error_code: 401
    order_enabled: true
    order_method: 'POST'
    order_headers:
      Content-Type: application/json
  auth: !plugin
    type: GenericAuth

---
!provider
  name: astraea_eod
  priority: 0
  roles:
    - host
  description: Astraea Earth OnDemand
  url: https://earthondemand.astraea.earth
  search: !plugin
    type: StacSearch
    api_endpoint: https://eod-catalog-svc-prod.astraea.earth/search
    need_auth: false
    discover_queryables:
      fetch_url: null
      product_type_fetch_url: null
    pagination:
      # 2021/03/19: The docs (https://eod-catalog-svc-prod.astraea.earth/api.html#operation/getSearchSTAC)
      # say the max is 10_000. In practice 1_000 products are returned if more are asked (even greater
      # than 10_000), without any error.
      # This provider doesn't implement any pagination, let's just try to get the maximum number of
      # products available at once then, so we stick to 10_000.
      max_items_per_page: 10_000
    metadata_mapping:
      # redefine the following mapppings as the provider does not support advanced queries/filtering,
      # these parameters will not be queryable
      doi: '$.properties."sci:doi"'
      processingLevel: '$.properties."processing:level"'
      platform: '$.properties.constellation'
      platformSerialIdentifier: '$.properties.platform'
      instrument: '$.properties.instruments'
      # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4)
      title: '$.id'
      abstract: '$.properties.description'
      resolution: '$.properties.gsd'
      publicationDate: '$.properties.published'
      # OpenSearch Parameters for Product Search (Table 5)
      orbitNumber: '$.properties."sat:relative_orbit"'
      orbitDirection: '$.properties."sat:orbit_state"'
      cloudCover: '$.properties."eo:cloud_cover"'
      sensorMode: '$.properties."sar:instrument_mode"'
      creationDate: '$.properties.created'
      modificationDate: '$.properties.updated'
      productVersion: '$.properties.version'
      # OpenSearch Parameters for Acquistion Parameters Search (Table 6)
      availabilityTime: '$.properties.availabilityTime'
      acquisitionStation: '$.properties.acquisitionStation'
      acquisitionSubType: '$.properties.acquisitionSubType'
      illuminationAzimuthAngle: '$.properties."view:sun_azimuth"'
      illuminationElevationAngle: '$.properties."view:sun_elevation"'
      polarizationChannels: '$.properties."sar:polarizations"'
      dopplerFrequency: '$.properties."sar:frequency_band"'
  products:
    S1_SAR_GRD:
      productType: sentinel1_l1c_grd
      metadata_mapping:
        cloudCover: '$.null'
        platformSerialIdentifier: '$.id.`split(_, 0, -1)`'
        polarizationMode: '$.id.`sub(/.{14}([A-Z]{2}).*/, \\1)`'
        awsPath: '$.assets.productInfo.href.`sub(/(.*)\/productInfo\.json/, \\1)`'
        assets: |
          {$.assets#dict_update([["manifest.safe",[["title","manifest.safe"],["href","{awsPath}/manifest.safe"],["roles",["metadata"]],["type","application/xml"]]]])}
    S2_MSI_L1C:
      productType: sentinel2_l1c
      metadata_mapping:
        platformSerialIdentifier: '$.id.`split(_, 0, -1)`'
        tileInfo: '{$.assets.tileInfo.href#replace_str(r"s3(.*)sentinel-s2-l1c/",r"https\1roda.sentinel-hub.com/sentinel-s2-l1c/")}'
        tilePath: |
          $.assets.tileInfo.href.`sub(/.*\/sentinel-s2-l1c\/(tiles\/.*)\/tileInfo\.json/, \\1)`
    S2_MSI_L2A:
      productType: sentinel2_l2a
      metadata_mapping:
        platformSerialIdentifier: '$.id.`split(_, 0, -1)`'
        tileInfo: '{$.assets.tileInfo.href#replace_str(r"s3(.*)sentinel-s2-l2a/",r"https\1roda.sentinel-hub.com/sentinel-s2-l2a/")}'
        tilePath: |
          $.assets.tileInfo.href.`sub(/.*\/sentinel-s2-l2a\/(tiles\/.*)\/tileInfo\.json/, \\1)`
    LANDSAT_C2L1:
      productType: landsat8_c2l1t1
    MODIS_MCD43A4:
      productType: mcd43a4
    NAIP:
      productType: naip
    GENERIC_PRODUCT_TYPE:
      productType: '{productType}'
  download: !plugin
    type: AwsDownload
    requester_pays: True
    flatten_top_dirs: True
    products:
      S1_SAR_GRD:
        default_bucket: 'sentinel-s1-l1c'
        build_safe: true
        complementary_url_key:
          - awsPath
      S2_MSI_L1C:
        default_bucket: 'sentinel-s2-l1c'
        build_safe: true
        fetch_metadata:
          fetch_url: '{tileInfo}'
          fetch_format: json
          update_metadata:
            title: '$.productName'
            productPath: '$.productPath'
        complementary_url_key:
          - productPath
          - tilePath
      S2_MSI_L2A:
        default_bucket: 'sentinel-s2-l2a'
        build_safe: true
        fetch_metadata:
          fetch_url: '{tileInfo}'
          fetch_format: json
          update_metadata:
            title: '$.productName'
            productPath: '$.productPath'
        complementary_url_key:
          - productPath
          - tilePath
  auth: !plugin
    type: AwsAuth

---
!provider
  name: usgs_satapi_aws
  priority: 0
  roles:
    - host
  description: USGS Landsatlook SAT API
  url: https://landsatlook.usgs.gov/stac-server
  search: !plugin
    type: StacSearch
    api_endpoint: https://landsatlook.usgs.gov/stac-server/search
    need_auth: false
    discover_queryables:
      fetch_url: null
      product_type_fetch_url: null
    pagination:
      # 2021/03/19: no more than 10_000 (if greater, returns a 500 error code)
      # but in practive if an Internal Server Error is returned for more than
      # about 500 products.
      max_items_per_page: 500
    metadata_mapping:
      assets: '{$.assets#recursive_sub_str(r"https?(.*)landsatlook.usgs.gov/data/",r"s3\1usgs-landsat/")}'
      awsProductId: '{$.assets.thumbnail.href#replace_str(r".+/([A-Z0-9_]+)/[\w.]+$",r"\1")}'
  products:
    LANDSAT_C2L1:
      productType: landsat-c2l1
    LANDSAT_C2L2_SR:
      productType: landsat-c2l2-sr
    LANDSAT_C2L2_ST:
      productType: landsat-c2l2-st
    LANDSAT_C2L2ALB_BT:
      productType: landsat-c2l2alb-bt
    LANDSAT_C2L2ALB_SR:
      productType: landsat-c2l2alb-sr
    LANDSAT_C2L2ALB_ST:
      productType: landsat-c2l2alb-st
    LANDSAT_C2L2ALB_TA:
      productType: landsat-c2l2alb-ta
    GENERIC_PRODUCT_TYPE:
      productType: '{productType}'
  download: !plugin
    type: AwsDownload
    requester_pays: True
    flatten_top_dirs: True
  auth: !plugin
    type: AwsAuth

---
!provider
  name: earth_search
  priority: 0
  roles:
    - host
  description: Earth Search
  url: https://www.element84.com/earth-search/
  search: !plugin
    type: StacSearch
    api_endpoint: https://earth-search.aws.element84.com/v1/search
    need_auth: false
    discover_product_types:
      results_entry: '$.collections[?id!="sentinel-s2-l2a-cogs"]'
    discover_queryables:
      fetch_url: null
      product_type_fetch_url: null
    pagination:
      # Override the default next page url key path of StacSearch because the next link returned
      # by Earth Search is invalid (as of 2021/04/29). Entry set to null (None) to avoid using the
      # next page retrieval mechanism, `next_page_url_tpl` will be used instead (inherited from StacSearch)
      # Remove that entry if Earth Search updates that and returns a valid link.
      next_page_url_key_path: null
      # 2021/04/28: Earth-Search relies on Sat-API whose docs (http://sat-utils.github.io/sat-api/#search-stac-items-by-simple-filtering-)
      # say the max is 10_000. In practice a too high number (e.g. 5_000) returns a 502 error ({"message": "Internal server error"}).
      # Let's set it to a more robust number: 500
      max_items_per_page: 500
    metadata_mapping:
      utmZone:
        - '{{"query":{{"mgrs:utm_zone":{{"eq":"{utmZone}"}}}}}}'
        - '$.properties."mgrs:utm_zone"'
      latitudeBand:
        - '{{"query":{{"mgrs:latitude_band":{{"eq":"{latitudeBand}"}}}}}}'
        - '$.properties."mgrs:latitude_band"'
      gridSquare:
        - '{{"query":{{"mgrs:grid_square":{{"eq":"{gridSquare}"}}}}}}'
        - '$.properties."mgrs:grid_square"'
      tileIdentifier:
        - '{{"query":{{"mgrs:utm_zone":{{"eq":"{tileIdentifier#slice_str(0,2,1)}"}},"mgrs:latitude_band":{{"eq":"{tileIdentifier#slice_str(2,3,1)}"}},"mgrs:grid_square":{{"eq":"{tileIdentifier#slice_str(3,5,1)}"}}}}}}'
        - '{utmZone}{latitudeBand}{gridSquare}'
  products:
    S1_SAR_GRD:
      productType: sentinel-1-grd
    S2_MSI_L1C:
      productType: sentinel-2-l1c
      metadata_mapping:
        title: '{$.properties."s2:product_uri"#remove_extension}'
        platformSerialIdentifier: '$.id.`split(_, 0, -1)`'
        polarizationMode: '$.id.`sub(/.{14}([A-Z]{2}).*/, \\1)`'
        productPath: |
          $.properties."s2:product_uri".`sub(/([S2AB]{3})_MSIL1C_([0-9]{4})([0-9]{2})([0-9]{2})(T.*).SAFE/, products!\\2!\\3!\\4!\\1_MSIL1C_\\2\\3\\4\\5)`.`sub(/!0*/, /)`
        tilePath: |
          $.assets.tileinfo_metadata.href.`sub(/.*/sentinel-s2-l1c\/(tiles\/.*)\/tileInfo\.json/, \\1)`
        utmZone:
          - '{{"query":{{"mgrs:utm_zone":{{"eq":"{utmZone}"}}}}}}'
          - '$.properties."mgrs:utm_zone"'
        latitudeBand:
          - '{{"query":{{"mgrs:latitude_band":{{"eq":"{latitudeBand}"}}}}}}'
          - '$.properties."mgrs:latitude_band"'
        gridSquare:
          - '{{"query":{{"mgrs:grid_square":{{"eq":"{gridSquare}"}}}}}}'
          - '$.properties."mgrs:grid_square"'
        tileIdentifier:
          - '{{"query":{{"mgrs:utm_zone":{{"eq":"{tileIdentifier#slice_str(0,2,1)}"}},"mgrs:latitude_band":{{"eq":"{tileIdentifier#slice_str(2,3,1)}"}},"mgrs:grid_square":{{"eq":"{tileIdentifier#slice_str(3,5,1)}"}}}}}}'
          - '{utmZone}{latitudeBand}{gridSquare}'
    LANDSAT_C2L2:
      productType: landsat-c2-l2
    NAIP:
      productType: naip
    COP_DEM_GLO30_DGED:
      productType: cop-dem-glo-30
    COP_DEM_GLO90_DGED:
      productType: cop-dem-glo-90
    GENERIC_PRODUCT_TYPE:
      productType: '{productType}'
  download: !plugin
    type: AwsDownload
    requester_pays: True
    flatten_top_dirs: True
    products:
      S2_MSI_L1C:
        default_bucket: 'sentinel-s2-l1c'
        build_safe: true
        complementary_url_key:
          - productPath
          - tilePath
  auth: !plugin
    type: AwsAuth

---
!provider
  name: earth_search_cog
  priority: 0
  roles:
    - host
  description: Earth Search with Cloud Optimized GeoTIFF (COG) formatted assets
  url: https://www.element84.com/earth-search/
  search: !plugin
    type: StacSearch
    api_endpoint: https://earth-search.aws.element84.com/v1/search
    need_auth: false
    discover_product_types:
      fetch_url: null
    discover_queryables:
      fetch_url: null
      product_type_fetch_url: null
    pagination:
      # Override the default next page url key path of StacSearch because the next link returned
      # by Earth Search is invalid (as of 2021/04/29). Entry set to null (None) to avoid using the
      # next page retrieval mechanism, `next_page_url_tpl` will be used instead (inherited from StacSearch)
      # Remove that entry if Earth Search updates that and returns a valid link.
      next_page_url_key_path: null
      # 2021/04/28: Earth-Search relies on Sat-API whose docs (http://sat-utils.github.io/sat-api/#search-stac-items-by-simple-filtering-)
      # say the max is 10_000. In practice a too high number (e.g. 5_000) returns a 502 error ({"message": "Internal server error"}).
      # Let's set it to a more robust number: 500
      max_items_per_page: 500
    metadata_mapping:
      platformSerialIdentifier: '$.id.`split(_, 0, -1)`'
      polarizationMode: '$.id.`sub(/.{14}([A-Z]{2}).*/, \\1)`'
      title: '{$.properties."s2:product_uri"#remove_extension}'
  products:
    S2_MSI_L2A_COG:
      productType: sentinel-2-l2a
    GENERIC_PRODUCT_TYPE:
      productType: '{productType}'
  download: !plugin
    type: HTTPDownload
    base_uri: 'https://sentinel-cogs.s3.us-west-2.amazonaws.com'
---
!provider
  name: earth_search_gcs
  priority: 0
  roles:
    - host
  description: Google Cloud Storage through Earth Search
  url: https://www.element84.com/earth-search/
  search: !plugin
    type: StacSearch
    api_endpoint: https://earth-search.aws.element84.com/v0/search
    need_auth: false
    discover_product_types:
      fetch_url: null
    discover_queryables:
      fetch_url: null
      product_type_fetch_url: null
    pagination:
      # Override the default next page url key path of StacSearch because the next link returned
      # by Earth Search is invalid (as of 2021/04/29). Entry set to null (None) to avoid using the
      # next page retrieval mechanism, `next_page_url_tpl` will be used instead (inherited from StacSearch)
      # Remove that entry if Earth Search updates that and returns a valid link.
      next_page_url_key_path: null
      # 2021/04/28: Earth-Search relies on Sat-API whose docs (http://sat-utils.github.io/sat-api/#search-stac-items-by-simple-filtering-)
      # say the max is 10_000. In practice a too high number (e.g. 5_000) returns a 502 error ({"message": "Internal server error"}).
      # Let's set it to a more robust number: 500
      max_items_per_page: 500
  products:
    S2_MSI_L1C:
      productType: sentinel-s2-l1c
      metadata_mapping:
        title: '$.properties."sentinel:product_id"'
        platformSerialIdentifier: '$.id.`split(_, 0, -1)`'
        polarizationMode: '$.id.`sub(/.{14}([A-Z]{2}).*/, \\1)`'
        utmZone: '$.properties."sentinel:utm_zone"'
        latitudeBand: '$.properties."sentinel:latitude_band"'
        gridSquare: '$.properties."sentinel:grid_square"'
        downloadLink: 's3://gcp-public-data-sentinel-2/tiles/{utmZone}/{latitudeBand}/{gridSquare}/{title}.SAFE'
    L8_OLI_TIRS_C1L1:
      productType: landsat-8-l1-c1
      metadata_mapping:
        wrsPath: '$.properties."landsat:wrs_path"'
        wrsRow: '$.properties."landsat:wrs_row"'
        downloadLink: 's3://gcp-public-data-landsat/LC08/01/{wrsPath:03d}/{wrsRow:03d}/{title}'
    GENERIC_PRODUCT_TYPE:
      productType: '{productType}'
  download: !plugin
    type: AwsDownload
    base_uri: https://storage.googleapis.com
    ignore_assets: True
    products:
      S2_MSI_L1C:
        default_bucket: 'gcp-public-data-sentinel-2'
  auth: !plugin
    type: AwsAuth
---
!provider
  name: ecmwf
  priority: 0
  description: ECMWF archive products
  roles:
    - host
  url: https://www.ecmwf.int
  api: !plugin
    type: EcmwfApi
    api_endpoint: https://api.ecmwf.int/v1
    extract: false
    metadata_mapping:
      productType: '$.productType'
      title: '$.id'
      startTimeFromAscendingNode: '{$.startTimeFromAscendingNode#to_iso_date}'
      completionTimeFromAscendingNode:
        - 'date={startTimeFromAscendingNode#to_iso_date}/to/{completionTimeFromAscendingNode#to_iso_date(-1,)}'
        - '{$.completionTimeFromAscendingNode#to_iso_date}'
      id: '$.id'
      # The geographic extent of the product
      geometry:
        - 'area={geometry#to_nwse_bounds_str(/)}'
        - '$.geometry'
      defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
      # storageStatus set to ONLINE for consistency between providers
      storageStatus: '{$.null#replace_str("Not Available","ONLINE")}'
      downloadLink: 'https://apps.ecmwf.int/datasets/data/{dataset}'
      # ECMWF/MARS specific parameters
      # Full list here https://confluence.ecmwf.int/display/UDOC/Keywords+in+MARS+and+Dissemination+requests
      accuracy:
        - accuracy
        - '$.accuracy'
      anoffset:
        - anoffset
        - '$.anoffset'
      bitmap:
        - bitmap
        - '$.bitmap'
      block:
        - block
        - '$.block'
      channel:
        - channel
        - '$.channel'
      class:
        - class
        - '$.class'
      database:
        - database
        - '$.database'
      dataset:
        - dataset
        - '$.dataset'
      diagnostic:
        - diagnostic
        - '$.diagnostic'
      direction:
        - direction
        - '$.direction'
      domain:
        - domain
        - '$.domain'
      duplicates:
        - duplicates
        - '$.duplicates'
      expect:
        - expect
        - '$.expect'
      expver:
        - expver
        - '$.expver'
      fcmonth:
        - fcmonth
        - '$.fcmonth'
      fcperiod:
        - fcperiod
        - '$.fcperiod'
      fieldset:
        - fieldset
        - '$.fieldset'
      filter:
        - filter
        - '$.filter'
      format:
        - format
        - '$.format'
      frame:
        - frame
        - '$.frame'
      frequency:
        - frequency
        - '$.frequency'
      grid:
        - grid
        - '$.grid'
      hdate:
        - hdate
        - '$.hdate'
      ident:
        - ident
        - '$.ident'
      interpolation:
        - interpolation
        - '$.interpolation'
      intgrid:
        - intgrid
        - '$.intgrid'
      iteration:
        - iteration
        - '$.iteration'
      latitude:
        - latitude
        - '$.latitude'
      levelist:
        - levelist
        - '$.levelist'
      levtype:
        - levtype
        - '$.levtype'
      longitude:
        - longitude
        - '$.longitude'
      lsm:
        - lsm
        - '$.lsm'
      method:
        - method
        - '$.method'
      number:
        - number
        - '$.number'
      obsgroup:
        - obsgroup
        - '$.obsgroup'
      obstype:
        - obstype
        - '$.obstype'
      origin:
        - origin
        - '$.origin'
      packing:
        - packing
        - '$.packing'
      padding:
        - padding
        - '$.padding'
      param:
        - param
        - '$.param'
      priority:
        - priority
        - '$.priority'
      product:
        - product
        - '$.product'
      range:
        - range
        - '$.range'
      refdate:
        - refdate
        - '$.refdate'
      reference:
        - reference
        - '$.reference'
      reportype:
        - reportype
        - '$.reportype'
      repres:
        - repres
        - '$.repres'
      resol:
        - resol
        - '$.resol'
      rotation:
        - rotation
        - '$.rotation'
      section:
        - section
        - '$.section'
      source:
        - source
        - '$.source'
      step:
        - step
        - '$.step'
      stream:
        - stream
        - '$.stream'
      system:
        - system
        - '$.system'
      target:
        - target
        - '$.target'
      time:
        - time
        - '$.time'
      truncation:
        - truncation
        - '$.truncation'
      type:
        - type
        - '$.type'
      use:
        - use
        - '$.use'
  products:
    # See Archive Catalog in https://apps.ecmwf.int/archive-catalogue/
    # See available Public Datasets in https://apps.ecmwf.int/datasets/
    TIGGE_CF_SFC:
      class: ti
      dataset: tigge
      expver: prod
      type: cf
      levtype: sfc
      origin: ecmf
      grid: 0.5/0.5
      param: 59/134/136/146/147/151/165/166/167/168/172/176/177/179/189/235/228001/228002/228039/228139/228141/228144/228164/228228
      step: 0
      time: 00:00
    GENERIC_PRODUCT_TYPE:
      dataset: '{productType}'
---
!provider
  name: cop_ads
  priority: 0
  description: Copernicus Atmosphere Data Store
  roles:
    - host
  url: https://ads.atmosphere.copernicus.eu/
  api: !plugin
    type: CdsApi
    api_endpoint: https://ads.atmosphere.copernicus.eu/api/v2
    extract: false
    flatten_top_dirs: True
    constraints_file_url: "https://datastore.copernicus-climate.eu/cams/published-forms/camsprod/{dataset}/constraints.json"
    metadata_mapping:
      productType: '$.productType'
      title: '$.id'
      startTimeFromAscendingNode: '{$.startTimeFromAscendingNode#to_iso_date}'
      completionTimeFromAscendingNode:
        - 'date={startTimeFromAscendingNode#to_iso_date}/{completionTimeFromAscendingNode#to_iso_date(-1,)}'
        - '{$.completionTimeFromAscendingNode#to_iso_date}'
      id: '$.id'
      # The geographic extent of the product
      geometry:
        - 'area={geometry#to_nwse_bounds_str(/)}'
        - '$.geometry'
      defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
      # storageStatus set to ONLINE for consistency between providers
      storageStatus: '{$.null#replace_str("Not Available","ONLINE")}'
      downloadLink: 'https://ads.atmosphere.copernicus.eu/cdsapp#!/dataset/{dataset}'
      # Copernicus ADS specific parameters
      accuracy:
        - accuracy
        - '$.accuracy'
      aerosol_type:
        - aerosol_type
        - '$.aerosol_type'
      altitude:
        - altitude
        - '$.altitude'
      anoffset:
        - anoffset
        - '$.anoffset'
      api_product_type:
        - product_type
        - '$.api_product_type'
      band:
        - band
        - '$.band'
      bitmap:
        - bitmap
        - '$.bitmap'
      block:
        - block
        - '$.block'
      channel:
        - channel
        - '$.channel'
      class:
        - class
        - '$.class'
      database:
        - database
        - '$.database'
      dataset:
        - dataset
        - '$.dataset'
      date_range:
        - date_range
        - '$.date_range'
      day:
        - day
        - '$.day'
      diagnostic:
        - diagnostic
        - '$.diagnostic'
      direction:
        - direction
        - '$.direction'
      domain:
        - domain
        - '$.domain'
      duplicates:
        - duplicates
        - '$.duplicates'
      expect:
        - expect
        - '$.expect'
      expver:
        - expver
        - '$.expver'
      fcperiod:
        - fcperiod
        - '$.fcperiod'
      fieldset:
        - fieldset
        - '$.fieldset'
      filter:
        - filter
        - '$.filter'
      forcing_type:
        - forcing_type
        - '$.forcing_type'
      format:
        - format
        - '$.format'
      frequency:
        - frequency
        - '$.frequency'
      grid:
        - grid
        - '$.grid'
      hdate:
        - hdate
        - '$.hdate'
      ident:
        - ident
        - '$.ident'
      input_observations:
        - input_observations
        - '$.input_observations'
      interpolation:
        - interpolation
        - '$.interpolation'
      intgrid:
        - intgrid
        - '$.intgrid'
      iteration:
        - iteration
        - '$.iteration'
      latitude:
        - latitude
        - '$.latitude'
      level:
        - level
        - '$.level'
      levelist:
        - levelist
        - '$.levelist'
      leadtime_hour:
        - leadtime_hour
        - '$.leadtime_hour'
      levtype:
        - levtype
        - '$.levtype'
      location:
        - location
        - '$.location'
      longitude:
        - longitude
        - '$.longitude'
      lsm:
        - lsm
        - '$.lsm'
      method:
        - method
        - '$.method'
      model:
        - model
        - '$.model'
      model_level:
        - model_level
        - '$.model_level'
      month:
        - month
        - '$.month'
      number:
        - number
        - '$.number'
      obsgroup:
        - obsgroup
        - '$.obsgroup'
      obstype:
        - obstype
        - '$.obstype'
      origin:
        - origin
        - '$.origin'
      packing:
        - packing
        - '$.packing'
      padding:
        - padding
        - '$.padding'
      param:
        - param
        - '$.param'
      pressure_level:
        - pressure_level
        - '$.pressure_level'
      priority:
        - priority
        - '$.priority'
      product:
        - product
        - '$.product'
      range:
        - range
        - '$.range'
      refdate:
        - refdate
        - '$.refdate'
      reference:
        - reference
        - '$.reference'
      reportype:
        - reportype
        - '$.reportype'
      repres:
        - repres
        - '$.repres'
      resol:
        - resol
        - '$.resol'
      rotation:
        - rotation
        - '$.rotation'
      section:
        - section
        - '$.section'
      sky_type:
        - sky_type
        - '$.sky_type'
      source:
        - source
        - '$.source'
      step:
        - step
        - '$.step'
      stream:
        - stream
        - '$.stream'
      system:
        - system
        - '$.system'
      target:
        - target
        - '$.target'
      time:
        - time
        - '$.time'
      time_aggregation:
        - time_aggregation
        - '$.time_aggregation'
      time_reference:
        - time_reference
        - '$.time_reference'
      time_step:
        - time_step
        - '$.time_step'
      truncation:
        - truncation
        - '$.truncation'
      type:
        - type
        - '$.type'
      use:
        - use
        - '$.use'
      variable:
        - variable
        - '$.variable'
      version:
        - version
        - '$.version'
      quantity:
        - quantity
        - '$.quantity'
      year:
        - year
        - '$.year'
  products:
    # See available Public Datasets in https://ads.atmosphere.copernicus.eu/cdsapp#!/search?type=dataset
    CAMS_GAC_FORECAST:
      dataset: cams-global-atmospheric-composition-forecasts
      type: forecast
      format: grib
      variable: ammonium_aerosol_optical_depth_550nm
      time: '00:00'
      leadtime_hour: '0'
      _default_end_date: '2019-07-12T00:00Z'
    CAMS_GFE_GFAS:
      dataset: cams-global-fire-emissions-gfas
      format: grib
      variable: altitude_of_plume_bottom
      _default_end_date: '2018-07-03T00:00Z'
    CAMS_EU_AIR_QUALITY_FORECAST:
      dataset: cams-europe-air-quality-forecasts
      model: ensemble
      format: grib
      variable: alder_pollen
      type: forecast
      time: '00:00'
      level: '0'
      leadtime_hour: '0'
      metadata_mapping:
        geometry:
          - 'area={geometry#to_nwse_bounds}'
          - '$.geometry'
    CAMS_EU_AIR_QUALITY_RE:
      dataset: cams-europe-air-quality-reanalyses
      type: validated_reanalysis
      format: zip
      variable: nitrogen_dioxide
      model: ensemble
      level: '0'
      metadata_mapping:
        completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}'
        _date:
          - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}'
          - '{$._date}'
    CAMS_GRF:
      dataset: cams-global-radiative-forcings
      format: zip
      variable: radiative_forcing_of_carbon_dioxide
      forcing_type: instantaneous
      band: long_wave
      sky_type: all_sky
      level: surface
      version: '2'
      metadata_mapping:
        completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}'
        _date:
          - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}'
          - '{$._date}'
    CAMS_GRF_AUX:
      dataset: cams-global-radiative-forcing-auxilliary-variables
      band: short_wave
      sky_type: clear_sky
      version: '1.5'
      format: zip
      variable: aerosol_radiation_effect
      aerosol_type: marine
      level: surface
      metadata_mapping:
        completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}'
        _date:
          - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}'
          - '{$._date}'
    CAMS_SOLAR_RADIATION:
      dataset: cams-solar-radiation-timeseries
      sky_type: clear
      time_step: 1minute
      time_reference: true_solar_time
      location:
        latitude: 0
        longitude: 0
      altitude: -999
      format: csv
    CAMS_GREENHOUSE_EGG4_MONTHLY:
      dataset: cams-global-ghg-reanalysis-egg4-monthly
      format: grib
      variable: snow_albedo
      api_product_type: monthly_mean
      metadata_mapping:
        completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}'
        _date:
          - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}'
          - '{$._date}'
    CAMS_GREENHOUSE_EGG4:
      dataset: cams-global-ghg-reanalysis-egg4
      format: grib
      variable: snow_albedo
      step: '0'
    CAMS_GREENHOUSE_INVERSION:
      dataset: cams-global-greenhouse-gas-inversion
      version: latest
      variable: carbon_dioxide
      quantity: mean_column
      input_observations: surface
      time_aggregation: instantaneous
      metadata_mapping:
        completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}'
        _date:
          - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}'
          - '{$._date}'
    CAMS_GLOBAL_EMISSIONS:
      dataset: cams-global-emission-inventories
      version: latest
      format: zip
      variable: acids
      source: anthropogenic
      metadata_mapping:
        completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}'
        _date:
          - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}'
          - '{$._date}'
    CAMS_EAC4:
      dataset: cams-global-reanalysis-eac4
      format: grib
      variable: '2m_dewpoint_temperature'
      time: '00:00'
    CAMS_EAC4_MONTHLY:
      dataset: cams-global-reanalysis-eac4-monthly
      format: grib
      variable: 2m_dewpoint_temperature
      api_product_type: monthly_mean
      metadata_mapping:
        completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}'
        _date:
          - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}'
          - '{$._date}'
    GENERIC_PRODUCT_TYPE:
      dataset: '{productType}'
      format: grib
      time: '00:00'
---
!provider
  name: cop_cds
  priority: 0
  description: Copernicus Climate Data Store
  roles:
    - host
  url: https://cds.climate.copernicus.eu/
  api: !plugin
    type: CdsApi
    api_endpoint: https://cds.climate.copernicus.eu/api/v2
    extract: false
    discover_queryables:
      fetch_url: null
      product_type_fetch_url: null
    flatten_top_dirs: True
    constraints_file_url: "http://datastore.copernicus-climate.eu/c3s/published-forms/c3sprod/{dataset}/constraints.json"
    metadata_mapping:
      productType: '$.productType'
      title: '$.id'
      startTimeFromAscendingNode: '{$.startTimeFromAscendingNode#to_iso_date}'
      completionTimeFromAscendingNode:
        - 'date={startTimeFromAscendingNode#to_iso_date}/{completionTimeFromAscendingNode#to_iso_date(-1,)}'
        - '{$.completionTimeFromAscendingNode#to_iso_date}'
      id: '$.id'
      # The geographic extent of the product
      geometry:
        - 'area={geometry#to_nwse_bounds_str(/)}'
        - '$.geometry'
      defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
      # storageStatus set to ONLINE for consistency between providers
      storageStatus: '{$.null#replace_str("Not Available","ONLINE")}'
      downloadLink: 'https://cds.climate.copernicus.eu/cdsapp#!/dataset/{dataset}'
      # Copernicus CDS specific parameters
      accuracy:
        - accuracy
        - '$.accuracy'
      anoffset:
        - anoffset
        - '$.anoffset'
      api_product_type:
        - product_type
        - '$.api_product_type'
      bitmap:
        - bitmap
        - '$.bitmap'
      block:
        - block
        - '$.block'
      channel:
        - channel
        - '$.channel'
      class:
        - class
        - '$.class'
      database:
        - database
        - '$.database'
      dataset:
        - dataset
        - '$.dataset'
      dataset_type:
        - dataset_type
        - '$.dataset_type'
      date_range:
        - date_range
        - '$.date_range'
      day:
        - day
        - '$.day'
      diagnostic:
        - diagnostic
        - '$.diagnostic'
      direction:
        - direction
        - '$.direction'
      domain:
        - domain
        - '$.domain'
      duplicates:
        - duplicates
        - '$.duplicates'
      ensemble_member:
        - ensemble_member
        - '$.ensemble_member'
      expect:
        - expect
        - '$.expect'
      experiment:
        - experiment
        - '$.experiment'
      expver:
        - expver
        - '$.expver'
      fcperiod:
        - fcperiod
        - '$.fcperiod'
      fieldset:
        - fieldset
        - '$.fieldset'
      filter:
        - filter
        - '$.filter'
      format:
        - format
        - '$.format'
      frequency:
        - frequency
        - '$.frequency'
      gcm:
        - gcm
        - '$.gcm'
      grid:
        - grid
        - '$.grid'
      hdate:
        - hdate
        - '$.hdate'
      horizontal_resolution:
        - horizontal_resolution
        - '$.horizontal_resolution'
      hydrological_model:
        - hydrological_model
        - '$.hydrological_model'
      ident:
        - ident
        - '$.ident'
      interpolation:
        - interpolation
        - '$.interpolation'
      intgrid:
        - intgrid
        - '$.intgrid'
      iteration:
        - iteration
        - '$.iteration'
      latitude:
        - latitude
        - '$.latitude'
      levelist:
        - levelist
        - '$.levelist'
      leadtime_hour:
        - leadtime_hour
        - '$.leadtime_hour'
      leadtime_month:
        - leadtime_month
        - '$.leadtime_month'
      levtype:
        - levtype
        - '$.levtype'
      longitude:
        - longitude
        - '$.longitude'
      lsm:
        - lsm
        - '$.lsm'
      method:
        - method
        - '$.method'
      model_levels:
        - model_levels
        - '$.model_levels'
      month:
        - month
        - '$.month'
      number:
        - number
        - '$.number'
      obsgroup:
        - obsgroup
        - '$.obsgroup'
      obstype:
        - obstype
        - '$.obstype'
      origin:
        - origin
        - '$.origin'
      originating_centre:
        - originating_centre
        - '$.originating_centre'
      packing:
        - packing
        - '$.packing'
      padding:
        - padding
        - '$.padding'
      param:
        - param
        - '$.param'
      period:
        - period
        - '$.period'
      pressure_level:
        - pressure_level
        - '$.pressure_level'
      priority:
        - priority
        - '$.priority'
      processing_level:
        - processing_level
        - '$.processing_level'
      processing_type:
        - processing_type
        - '$.processing_type'
      product:
        - product
        - '$.product'
      range:
        - range
        - '$.range'
      rcm:
        - rcm
        - '$.rcm'
      refdate:
        - refdate
        - '$.refdate'
      reference:
        - reference
        - '$.reference'
      reportype:
        - reportype
        - '$.reportype'
      repres:
        - repres
        - '$.repres'
      resol:
        - resol
        - '$.resol'
      rotation:
        - rotation
        - '$.rotation'
      section:
        - section
        - '$.section'
      sensor_and_algorithm:
        - sensor_and_algorithm
        - '$.sensor_and_algorithm'
      source:
        - source
        - '$.source'
      step:
        - step
        - '$.step'
      stream:
        - stream
        - '$.stream'
      system:
        - system
        - '$.system'
      target:
        - target
        - '$.target'
      time:
        - time
        - '$.time'
      time_aggregation:
        - time_aggregation
        - '$.time_aggregation'
      truncation:
        - truncation
        - '$.truncation'
      type:
        - type
        - '$.type'
      use:
        - use
        - '$.use'
      variable:
        - variable
        - '$.variable'
      variable_type:
        - variable_type
        - '$.variable_type'
      version:
        - version
        - '$.version'
      system_version:
        - system_version
        - '$.system_version'
      year:
        - year
        - '$.year'
  products:
    # See available Public Datasets in https://cds.climate.copernicus.eu/cdsapp#!/search?type=dataset
    ERA5_SL:
      dataset: reanalysis-era5-single-levels
      api_product_type: reanalysis
      time: '00:00'
      format: grib
    ERA5_PL:
      dataset: reanalysis-era5-pressure-levels
      api_product_type: reanalysis
      time: '00:00'
      format: grib
    ERA5_PL_MONTHLY:
      dataset: reanalysis-era5-pressure-levels-monthly-means
      api_product_type: monthly_averaged_reanalysis
      time: '00:00'
      format: grib
      variable: divergence
      pressure_level: '1'
      metadata_mapping:
        completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}'
        _date:
          - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}'
          - '{$._date}'
    ERA5_LAND:
      dataset: reanalysis-era5-land
      variable: 2m_dewpoint_temperature
      time: '01:00'
      format: grib
    ERA5_LAND_MONTHLY:
      dataset: reanalysis-era5-land-monthly-means
      api_product_type: monthly_averaged_reanalysis
      variable: 2m_dewpoint_temperature
      time: '00:00'
      format: grib
      metadata_mapping:
        completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}'
        _date:
          - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}'
          - '{$._date}'
    ERA5_SL_MONTHLY:
      dataset: reanalysis-era5-single-levels-monthly-means
      api_product_type: monthly_averaged_reanalysis
      time: '00:00'
      format: grib
      metadata_mapping:
        completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}'
        _date:
          - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}'
          - '{$._date}'
    UERRA_EUROPE_SL:
      dataset: reanalysis-uerra-europe-single-levels
      origin: mescan_surfex
      variable: 10m_wind_direction
      time: '00:00'
      format: grib
    SATELLITE_SEA_LEVEL_BLACK_SEA:
      dataset: satellite-sea-level-black-sea
      format: zip
      metadata_mapping:
        completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}'
        _date:
          - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}'
          - '{$._date}'
    GLACIERS_DIST_RANDOLPH:
      dataset: insitu-glaciers-extent
      variable: glacier_area
      api_product_type: gridded
      version: '6_0'
      format: zip
    FIRE_HISTORICAL:
      dataset: cems-fire-historical-v1
      grid: original_grid
      dataset_type: consolidated_dataset
      api_product_type: reanalysis
      variable: build_up_index
      system_version: '4_1'
      format: grib
    GLOFAS_FORECAST:
      dataset: cems-glofas-forecast
      system_version: operational
      variable: river_discharge_in_the_last_24_hours
      format: grib
      hydrological_model: lisflood
      api_product_type: control_forecast
      leadtime_hour: '24'
    GLOFAS_REFORECAST:
      dataset: cems-glofas-reforecast
      variable: river_discharge_in_the_last_24_hours
      format: grib
      system_version: version_4_0
      hydrological_model: lisflood
      api_product_type: control_reforecast
      leadtime_hour: '24'
    GLOFAS_HISTORICAL:
      dataset: cems-glofas-historical
      system_version: version_4_0
      variable: river_discharge_in_the_last_24_hours
      format: grib
      hydrological_model: lisflood
      api_product_type: consolidated
      metadata_mapping:
        completionTimeFromAscendingNode:
          - 'hdate={startTimeFromAscendingNode#to_iso_date}/{completionTimeFromAscendingNode#to_iso_date(-1,)}'
          - '{$.completionTimeFromAscendingNode#to_iso_date}'
    GLOFAS_SEASONAL:
      dataset: cems-glofas-seasonal
      variable: river_discharge_in_the_last_24_hours
      format: grib
      system_version: operational
      hydrological_model: lisflood
      leadtime_hour: '24'
      metadata_mapping:
        completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}'
        _date:
          - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}'
          - '{$._date}'
    GLOFAS_SEASONAL_REFORECAST:
      dataset: cems-glofas-seasonal-reforecast
      format: grib
      variable: river_discharge_in_the_last_24_hours
      system_version: version_4_0
      hydrological_model: lisflood
      leadtime_hour: '24'
      metadata_mapping:
        completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}'
        _date:
          - '{{"_date": {{"hyear": {_date#interval_to_datetime_dict}["year"], "hmonth": {_date#interval_to_datetime_dict}["month"], "hday": {_date#interval_to_datetime_dict}["day"]}} }}'
          - '{$._date}'
    EFAS_FORECAST:
      dataset: efas-forecast
      format: grib.zip
      system_version: operational
      originating_centre: ecmwf
      api_product_type: control_forecast
      variable: river_discharge_in_the_last_24_hours
      model_levels: surface_level
      time: '00:00'
      leadtime_hour: '24'
    EFAS_HISTORICAL:
      dataset: efas-historical
      format: grib.zip
      model_levels: surface_level
      variable: snow_depth_water_equivalent
      system_version: version_5_0
      time: '00:00'
      metadata_mapping:
        completionTimeFromAscendingNode:
          - 'hdate={startTimeFromAscendingNode#to_iso_date}/{completionTimeFromAscendingNode#to_iso_date(-1,)}'
          - '{$.completionTimeFromAscendingNode#to_iso_date}'
    EFAS_REFORECAST:
      dataset: efas-reforecast
      system_version: version_5_0
      format: grib.zip
      api_product_type: control_forecast
      variable: river_discharge_in_the_last_6_hours
      model_levels: surface_level
      leadtime_hour: '6'
      metadata_mapping:
        completionTimeFromAscendingNode:
          - 'hdate={startTimeFromAscendingNode#to_iso_date}/{completionTimeFromAscendingNode#to_iso_date(-1,)}'
          - '{$.completionTimeFromAscendingNode#to_iso_date}'
    EFAS_SEASONAL:
      dataset: efas-seasonal
      system_version: operational
      format: grib.zip
      variable: river_discharge_in_the_last_24_hours
      model_levels: surface_level
      leadtime_hour: '24'
      metadata_mapping:
        completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}'
        _date:
          - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}'
          - '{$._date}'
    EFAS_SEASONAL_REFORECAST:
      dataset: efas-seasonal-reforecast
      system_version: version_5_0
      format: grib.zip
      variable: river_discharge_in_the_last_24_hours
      model_levels: surface_level
      leadtime_hour: '24'
      metadata_mapping:
        completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}'
        _date:
          - '{{"_date": {{"hyear": {_date#interval_to_datetime_dict}["year"], "hmonth": {_date#interval_to_datetime_dict}["month"], "hday": {_date#interval_to_datetime_dict}["day"]}} }}'
          - '{$._date}'
    SATELLITE_CARBON_DIOXIDE:
      dataset: satellite-carbon-dioxide
      format: zip
      processing_level: level_2
      variable: xco2
      sensor_and_algorithm: sciamachy_wfmd
      version: '4.0'
      metadata_mapping:
        completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}'
        _date:
          - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}'
          - '{$._date}'
    SATELLITE_METHANE:
      dataset: satellite-methane
      format: zip
      processing_level: level_2
      variable: xch4
      sensor_and_algorithm: sciamachy_wfmd
      version: '4.0'
      metadata_mapping:
        completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}'
        _date:
          - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}'
          - '{$._date}'
    SEASONAL_POSTPROCESSED_PL:
      dataset: seasonal-postprocessed-pressure-levels
      format: grib
      originating_centre: ecmwf
      system: '4'
      variable: geopotential_anomaly
      pressure_level: '10'
      api_product_type: 'ensemble_mean'
      leadtime_month: '1'
      metadata_mapping:
        completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}'
        _date:
          - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}'
          - '{$._date}'
    SEASONAL_POSTPROCESSED_SL:
      dataset: seasonal-postprocessed-single-levels
      format: grib
      originating_centre: ecmwf
      system: '4'
      variable: 2m_dewpoint_temperature_anomaly
      api_product_type: 'ensemble_mean'
      leadtime_month: '1'
      metadata_mapping:
        completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}'
        _date:
          - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}'
          - '{$._date}'
    SEASONAL_ORIGINAL_SL:
      dataset: seasonal-original-single-levels
      format: grib
      originating_centre: ecmwf
      system: '5'
      variable: 10m_u_component_of_wind
      leadtime_hour: '6'
    SEASONAL_ORIGINAL_PL:
      dataset: seasonal-original-pressure-levels
      format: grib
      originating_centre: ecmwf
      system: '5'
      variable: geopotential
      pressure_level: '10'
      leadtime_hour: '12'
    SEASONAL_MONTHLY_PL:
      dataset: seasonal-monthly-pressure-levels
      format: grib
      originating_centre: ecmwf
      system: '5'
      variable: geopotential
      pressure_level: '10'
      api_product_type: monthly_mean
      leadtime_month: '1'
      metadata_mapping:
        completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}'
        _date:
          - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}'
          - '{$._date}'
    SEASONAL_MONTHLY_SL:
      dataset: seasonal-monthly-single-levels
      format: grib
      originating_centre: ecmwf
      system: '5'
      variable: 10m_u_component_of_wind
      api_product_type: monthly_mean
      leadtime_month: '1'
      metadata_mapping:
        completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}'
        _date:
          - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}'
          - '{$._date}'
    SIS_HYDRO_MET_PROJ:
      dataset: sis-hydrology-meteorology-derived-projections
      format: zip
      api_product_type: climate_impact_indicators
      variable: 2m_air_temperature
      variable_type: absolute_change_from_reference_period
      processing_type: original
      time_aggregation: monthly_mean
      horizontal_resolution: 5_km
      experiment: degree_scenario
      rcm: cclm4_8_17
      gcm: ec_earth
      ensemble_member: r12i1p1
      period: 1_5_c
    GENERIC_PRODUCT_TYPE:
      dataset: '{productType}'
      time: '00:00'
      format: netcdf
---
!provider
  name: sara
  priority: 0
  description: Sentinel Australasia Regional Access
  roles:
    - host
  search: !plugin
    type: QueryStringSearch
    # The endpoint is based off of the collection. There is a generic endpoint,
    # but can be very slow if not enough metdata is provided.
    api_endpoint: 'https://copernicus.nci.org.au/sara.server/1.0/api/collections/{collection}/search.json'
    need_auth: false
    pagination:
      next_page_url_tpl: '{url}?{search}&maxRecords={items_per_page}&page={page}'
      total_items_nb_key_path: '$.properties.totalResults'
      # 2021/03/19: 500 is the max, no error if greater
      max_items_per_page: 500
    discover_metadata:
      auto_discovery: true
      metadata_pattern: '^(?!collection)[a-zA-Z0-9_]+$'
      search_param: '{metadata}={{{metadata}}}'
      metadata_path: '$.properties.*'
    metadata_mapping:
      # Opensearch resource identifier within the search engine context (in our case
      # within the context of the data provider)
      uid: '$.id'
      # OpenSearch Parameters for Collection Search (Table 3)
      productType:
        - productType
        - '$.properties.productType'
      platform: '$.properties.collection'
      platformSerialIdentifier:
        - platform
        - '$.properties.platform'
      instrument:
        - instrument
        - '$.properties.instrument'
      processingLevel:
        - processingLevel
        - '$.properties.processingLevel'
      # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4)
      title: '$.properties.title'
      topicCategory: '$.properties.topicCategory'
      keyword: '$.properties.keywords'
      abstract: '$.properties.description'
      resolution:
        - 'resolution'
        - '$.properties.resolution'
      organisationName:
        - 'organisationName'
        - '$.properties.organisationName'
      publicationDate: '$.properties.published'
      accessConstraint: '$.properties.license'
      # OpenSearch Parameters for Product Search (Table 5)
      parentIdentifier:
        - 'parentIdentifier'
        - '$.properties.parentIdentifier'
      acquisitionType: '$.properties.acquisitionType'
      orbitNumber:
        - 'orbitNumber'
        - '$.properties.orbitNumber'
      orbitDirection:
        - 'orbitDirection'
        - '$.properties.orbitDirection'
      swathIdentifier:
        - 'swath'
        - '$.properties.swath'
      cloudCover:
        - 'cloudCover=[0,{cloudCover}]'
        - '$.properties.cloudCover'
      snowCover:
        - 'snowCover=[0,{snowCover}]'
        - '$.properties.snowCover'
      productVersion: '$.properties.version'
      productQualityStatus: '$.properties.onlineQualityCheck'
      processorName: '$.properties.processingName'
      processingCenter: '$.properties.processingCenter'
      creationDate: '$.properties.dhusIngestDate'
      modificationDate: '$.properties.updated'
      sensorMode:
        - 'sensorMode'
        - '$.properties.sensorMode'
      # OpenSearch Parameters for Acquistion Parameters Search (Table 6)
      startTimeFromAscendingNode:
        - startDate
        - '$.properties.startDate'
      completionTimeFromAscendingNode:
        - completionDate
        - '$.properties.completionDate'
      polarizationMode:
        - 'polarisation'
        - '$.properties.polarisation'
      # Custom parameters (not defined in the base document referenced above)
      id:
        - 'productIdentifier={id#remove_extension}'
        - '$.properties.productIdentifier'
      # The geographic extent of the product
      geometry:
        - 'geometry={geometry#to_rounded_wkt}'
        - '$.geometry'
      # The url of the quicklook
      quicklook: '$.properties.quicklook'
      # The url to download the product "as is" (literal or as a template to be completed either after the search result
      # is obtained from the provider or during the eodag download phase)
      downloadLink: '$.properties.services.download.url'
      # storageStatus set to ONLINE for consistency between providers
      storageStatus: '{$.null#replace_str("Not Available","ONLINE")}'
      # Additional metadata provided by the providers but that don't appear in the reference spec
      thumbnail: '$.properties.thumbnail'
  products:
    # Sentinel 1
    S1_SAR_OCN:
      productType: OCN
      collection: S1
      instrument: C-SAR
    S1_SAR_GRD:
      productType: GRD
      collection: S1
      instrument: C-SAR
    S1_SAR_SLC:
      productType: SLC
      collection: S1
      instrument: C-SAR
    # Sentinel 2
    S2_MSI_L1C:
      collection: S2
      productType: S2MSIL1C
      instrument: MSI
      processingLevel: L1C
    S2_MSI_L2A:
      collection: S2
      productType: S2MSIL2A
      instrument: MSI
      processingLevel: L2A
    # OLCI products
    # L1
    S3_EFR:
      productType: OL_1_EFR___
      collection: S3
      instrument: OLCI
      processingLevel: LEVEL-1
    S3_ERR:
      productType: OL_1_ERR___
      collection: S3
      instrument: OLCI
      processingLevel: LEVEL-1
    # output during radiometric calibration mode
    S3_RAC:
      productType: OL_1_RAC___
      collection: S3
      instrument: OLCI
      processingLevel: LEVEL-1
    # L2
    S3_OLCI_L2LRR:
      productType: OL_2_LRR___
      collection: S3
      instrument: OLCI
      processingLevel: LEVEL-2
    S3_OLCI_L2LFR:
      productType: OL_2_LFR___
      collection: S3
      instrument: OLCI
      processingLevel: LEVEL-2
    S3_OLCI_L2WRR:
      productType: OL_2_WRR___
      collection: S3
      instrument: OLCI
      processingLevel: LEVEL-2
    S3_OLCI_L2WFR:
      productType: OL_2_WFR___
      collection: S3
      instrument: OLCI
      processingLevel: LEVEL-2
    # SLSTR products
    S3_SLSTR_L1RBT:
      productType: SL_1_RBT___
      collection: S3
      instrument: SLSTR
      processingLevel: LEVEL-1
    S3_SLSTR_L2LST:
      productType: SL_2_LST___
      collection: S3
      instrument: SLSTR
      processingLevel: LEVEL-2
    S3_SLSTR_L2WST:
      productType: SL_2_WST___
      collection: S3
      instrument: SLSTR
      processingLevel: LEVEL-2
    S3_SLSTR_L2AOD:
      productType: SL_2_AOD___
      collection: S3
      instrument: SLSTR
      processingLevel: LEVEL-2
    S3_SLSTR_L2FRP:
      productType: SL_2_FRP___
      collection: S3
      instrument: SLSTR
      processingLevel: LEVEL-2
    # SRAL
    # L1
    S3_SRA:
      productType: SR_1_SRA___
      collection: S3
      instrument: SRAL
      processingLevel: LEVEL-1
    S3_SRA_A:
      productType: SR_1_SRA_A_
      collection: S3
      instrument: SRAL
      processingLevel: LEVEL-1
    S3_SRA_BS:
      productType: SR_1_SRA_BS
      collection: S3
      instrument: SRAL
      processingLevel: LEVEL-1
    # L2
    S3_LAN:
      productType: SR_2_LAN___
      collection: S3
      instrument: SRAL
      processingLevel: LEVEL-2
    S3_WAT:
      productType: SR_2_WAT___
      collection: S3
      instrument: SRAL
      processingLevel: LEVEL-2
    # Synergy products
    S3_SY_AOD:
      productType: SY_2_AOD___
      collection: S3
      instrument: SYNERGY
      processingLevel: LEVEL-2
    S3_SY_SYN:
      productType: SY_2_SYN___
      collection: S3
      instrument: SYNERGY
      processingLevel: LEVEL-2
    S3_SY_V10:
      productType: SY_2_V10___
      collection: S3
      instrument: SYNERGY
      processingLevel: LEVEL-2W
    S3_SY_VG1:
      productType: SY_2_VG1___
      collection: S3
      instrument: SYNERGY
      processingLevel: LEVEL-2
    S3_SY_VGP:
      productType: SY_2_VGP___
      collection: S3
      instrument: SYNERGY
      processingLevel: LEVEL-2
    GENERIC_PRODUCT_TYPE:
      productType: '{productType}'
      collection: '{collection}'
  download: !plugin
    type: HTTPDownload
    base_uri: 'https://copernicus.nci.org.au/'
    extract: true
    archive_depth: 2
    order_enabled: true
    auth_error_code: 403
  auth: !plugin
    type: GenericAuth
    method: basic
---
!provider
  name: meteoblue
  priority: 0
  roles:
    - host
  description: Meteoblue
  url: https://www.meteoblue.com
  search: !plugin
    type: BuildPostSearchResult
    api_endpoint: 'https://my.meteoblue.com/dataset/query'
    need_auth: true
    pagination:
      next_page_query_obj: '{{"checkOnly":true}}'
    discover_metadata:
      auto_discovery: true
      metadata_pattern: '^[a-zA-Z0-9_]+$'
      search_param: '{{{{"{metadata}":{{{metadata}#to_geojson}} }}}}'
      metadata_path: '$.*'
    metadata_mapping:
      startTimeFromAscendingNode: '{$.startTimeFromAscendingNode#to_iso_utc_datetime}'
      completionTimeFromAscendingNode:
        - '{{"timeIntervals": [ "{startTimeFromAscendingNode#to_iso_date}/{completionTimeFromAscendingNode#to_iso_date(-1,)}" ] }}'
        - '{$.completionTimeFromAscendingNode#to_iso_utc_datetime}'
      geometry:
        - '{{"geometry": {geometry#to_geojson} }}'
        - '$.geometry'
      defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
      productType: '$.queries[0].domain'
      storageStatus: '{$.requiresJobQueue#get_group_name((?P<ONLINE>False)|(?P<OFFLINE>True))}'
      downloadLink: 'https://my.meteoblue.com/dataset/query'
      # Meteoblue specific parameters
      datapoints: '$.datapoints'
      requiresJobQueue: '$.requiresJobQueue'
      requiresComplexJobQueue: '$.requiresComplexJobQueue'
      units:
        - '{{"units": {units#to_geojson} }}'
        - '$.units'
      queries:
        - '{{"queries": {queries#to_geojson} }}'
        - '$.queries'
      format:
        - '{{"format": {format#to_geojson} }}'
        - '$.format'
      timeIntervalsAlignment:
        - '{{"timeIntervalsAlignment": {timeIntervalsAlignment#to_geojson} }}'
        - '$.timeIntervalsAlignment'
      orderLink: '{downloadLink#replace_str(r"^(.*)(\")(queries\")(.)",r"\1\2runOnJobQueue\2\4 true, \2\3\4")}'
  products:
    NEMSGLOBAL_TCDC:
      queries: [{'domain':'NEMSGLOBAL','gapFillDomain':null,'timeResolution':'daily','codes':[{'code':71,'level':'sfc','aggregation':'mean'}]}]
      format: netCDF
      units: {'temperature':'C','velocity':'km/h','length':'metric','energy':'watts'}
      timeIntervalsAlignment:
      geometry: {"type": "Polygon", "coordinates": [[[180, -90], [180, 90], [-180, 90], [-180, -90], [180, -90]]]}
    NEMSAUTO_TCDC:
      queries: [{'domain':'NEMSAUTO','gapFillDomain':null,'timeResolution':'daily','codes':[{'code':71,'level':'sfc','aggregation':'mean'}]}]
      format: netCDF
      units: {'temperature':'C','velocity':'km/h','length':'metric','energy':'watts'}
      timeIntervalsAlignment:
      geometry: {"type": "Polygon", "coordinates": [[[180, -90], [180, 90], [-180, 90], [-180, -90], [180, -90]]]}
    GENERIC_PRODUCT_TYPE:
      productType: '{productType}'
      geometry: {"type": "Polygon", "coordinates": [[[180, -90], [180, 90], [-180, 90], [-180, -90], [180, -90]]]}
  download: !plugin
    type: HTTPDownload
    base_uri: 'https://my.meteoblue.com/dataset/query'
    method: POST
    extract: False
    order_enabled: true
    order_method: 'POST'
    order_on_response:
      metadata_mapping:
        order_id: '$.id'
        downloadLink: 'http://queueresults.meteoblue.com/{order_id}'
        downloadMethod: '{$.null#replace_str("Not Available","GET")}'
        orderStatusLink: 'http://my.meteoblue.com/queue/status/{order_id}'
    order_status_method: 'GET'
    order_status_percent: percentCompleted
    order_status_error:
      status: error
    outputs_extension: .nc
  auth: !plugin
    type: HttpQueryStringAuth
    auth_uri: 'http://my.meteoblue.com/dataset/meta?dataset=NEMSAUTO'
---
!provider
  name: cop_dataspace
  priority: 0
  description: Copernicus Data Space Ecosystem
  roles:
    - host
  url: https://dataspace.copernicus.eu/
  search: !plugin
    type: QueryStringSearch
    api_endpoint: 'http://catalogue.dataspace.copernicus.eu/resto/api/collections/{collection}/search.json'
    need_auth: false
    timeout: 60
    pagination:
      next_page_url_tpl: '{url}?{search}&maxRecords={items_per_page}&page={page}&exactCount=1'
      total_items_nb_key_path: '$.properties.totalResults'
      max_items_per_page: 1_000
    discover_metadata:
      auto_discovery: true
      metadata_pattern: '^(?!collection)[a-zA-Z0-9]+$'
      search_param: '{metadata}={{{metadata}}}'
      metadata_path: '$.properties.*'
    metadata_mapping:
      # Opensearch resource identifier within the search engine context (in our case
      # within the context of the data provider)
      uid: '$.id'
      # OpenSearch Parameters for Collection Search (Table 3)
      productType:
        - productType
        - '$.properties.productType'
      platform: '$.properties.collection'
      platformSerialIdentifier:
        - platform
        - '$.properties.platform'
      instrument:
        - instrument
        - '$.properties.instrument'
      processingLevel:
        - processingLevel
        - '$.properties.processingLevel'
      # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4)
      title: '{$.properties.title#remove_extension}'
      resolution:
        - 'resolution'
        - '$.properties.resolution'
      organisationName:
        - 'organisationName'
        - '$.properties.organisationName'
      publicationDate: '$.properties.published'
      # OpenSearch Parameters for Product Search (Table 5)
      orbitNumber:
        - 'orbitNumber'
        - '$.properties.orbitNumber'
      orbitDirection:
        - 'orbitDirection'
        - '$.properties.orbitDirection'
      cloudCover:
        - 'cloudCover=[0,{cloudCover}]'
        - '$.properties.cloudCover'
      modificationDate: '$.properties.updated'
      sensorMode:
        - 'sensorMode'
        - '$.properties.sensorMode'
      # OpenSearch Parameters for Acquistion Parameters Search (Table 6)
      startTimeFromAscendingNode:
        - startDate
        - '$.properties.startDate'
      completionTimeFromAscendingNode:
        - completionDate
        - '$.properties.completionDate'
      polarizationChannels:
        - 'polarisation'
        - '$.properties.polarisation'
      # Custom parameters (not defined in the base document referenced above)
      id:
        - 'productIdentifier={id#remove_extension}'
        - '{$.properties.title#remove_extension}'
      tileIdentifier:
        - tileId
        - '$.null'
      # The geographic extent of the product
      geometry:
        - 'geometry={geometry#to_rounded_wkt}'
        - '($.geometry.`str()`.`sub(/^\\[\\]$/, POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90)))`)|($.geometry[*])'
      # The url of the quicklook
      quicklook: '$.properties.thumbnail'
      # The url to download the product "as is" (literal or as a template to be completed either after the search result
      # is obtained from the provider or during the eodag download phase)
      downloadLink: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Products({uid})/$value'
      # storageStatus: must be one of ONLINE, STAGING, OFFLINE
      storageStatus: '$.properties.status'
      # Additional metadata provided by the providers but that don't appear in the reference spec
      thumbnail: '$.properties.thumbnail'
  download: !plugin
    type: HTTPDownload
    base_uri: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Products'
    extract: true
    order_enabled: false
    archive_depth: 2
  auth: !plugin
    type: KeycloakOIDCPasswordAuth
    auth_base_uri: 'https://identity.dataspace.copernicus.eu/auth'
    realm: 'CDSE'
    client_id: 'cdse-public'
    client_secret: null
    token_provision: qs
    token_qs_key: 'token'
    auth_error_code: 401
  products:
    # S2
    S2_MSI_L1C:
      collection: Sentinel2
      productType: S2MSI1C
    S2_MSI_L2A:
      collection: Sentinel2
      productType: S2MSI2A
    # S1
    S1_SAR_RAW:
      productType: RAW
      collection: Sentinel1
      metadata_mapping:
        cloudCover: '$.null'
    S1_SAR_GRD:
      productType: GRD
      collection: Sentinel1
      metadata_mapping:
        cloudCover: '$.null'
    S1_SAR_SLC:
      productType: SLC
      collection: Sentinel1
      metadata_mapping:
        cloudCover: '$.null'
    S1_SAR_OCN:
      productType: OCN
      collection: Sentinel1
      metadata_mapping:
        cloudCover: '$.null'
    # S3 SRAL
    S3_SRA:
      productType: SR_1_SRA___
      collection: Sentinel3
      metadata_mapping:
        cloudCover: '$.null'
    S3_SRA_A:
      productType: SR_1_SRA_A_
      collection: Sentinel3
      metadata_mapping:
        cloudCover: '$.null'
    S3_SRA_BS:
      productType: SR_1_SRA_BS
      collection: Sentinel3
      metadata_mapping:
        cloudCover: '$.null'
    S3_LAN:
      productType: SR_2_LAN___
      collection: Sentinel3
      metadata_mapping:
        cloudCover: '$.null'
    S3_WAT:
      productType: SR_2_WAT___
      collection: Sentinel3
      metadata_mapping:
        cloudCover: '$.null'
    # S3 OLCI
    S3_EFR:
      productType: OL_1_EFR___
      collection: Sentinel3
    S3_ERR:
      productType: OL_1_ERR___
      collection: Sentinel3
    S3_OLCI_L2LRR:
      productType: OL_2_LRR___
      collection: Sentinel3
    S3_OLCI_L2LFR:
      productType: OL_2_LFR___
      collection: Sentinel3
    S3_OLCI_L2WRR:
      productType: OL_2_WRR___
      collection: Sentinel3
    S3_OLCI_L2WFR:
      productType: OL_2_WFR___
      collection: Sentinel3
    # S3 SLSTR
    S3_SLSTR_L1RBT:
      productType: SL_1_RBT___
      collection: Sentinel3
    S3_SLSTR_L2LST:
      productType: SL_2_LST___
      collection: Sentinel3
    S3_SLSTR_L2WST:
      productType: SL_2_WST___
      collection: Sentinel3
    S3_SLSTR_L2AOD:
      productType: SL_2_AOD___
      collection: Sentinel3
    S3_SLSTR_L2FRP:
      productType: SL_2_FRP___
      collection: Sentinel3
    # S3 SY
    S3_SY_AOD:
      productType: SY_2_AOD___
      collection: Sentinel3
    S3_SY_SYN:
      productType: SY_2_SYN___
      collection: Sentinel3
    S3_SY_V10:
      productType: SY_2_V10___
      collection: Sentinel3
    S3_SY_VG1:
      productType: SY_2_VG1___
      collection: Sentinel3
    S3_SY_VGP:
      productType: SY_2_VGP___
      collection: Sentinel3
    # S5P L1
    S5P_L1B_IR_SIR:
      productType: L1B_IR_SIR
      collection: Sentinel5P
    S5P_L1B_IR_UVN:
      productType: L1B_IR_UVN
      collection: Sentinel5P
    S5P_L1B_RA_BD1:
      productType: L1B_RA_BD1
      collection: Sentinel5P
    S5P_L1B_RA_BD2:
      productType: L1B_RA_BD2
      collection: Sentinel5P
    S5P_L1B_RA_BD3:
      productType: L1B_RA_BD3
      collection: Sentinel5P
    S5P_L1B_RA_BD4:
      productType: L1B_RA_BD4
      collection: Sentinel5P
    S5P_L1B_RA_BD5:
      productType: L1B_RA_BD5
      collection: Sentinel5P
    S5P_L1B_RA_BD6:
      productType: L1B_RA_BD6
      collection: Sentinel5P
    S5P_L1B_RA_BD7:
      productType: L1B_RA_BD7
      collection: Sentinel5P
    S5P_L1B_RA_BD8:
      productType: L1B_RA_BD8
      collection: Sentinel5P
    # S5P L2
    S5P_L2_NO2:
      productType: L2__NO2___
      collection: Sentinel5P
    S5P_L2_CLOUD:
      productType: L2__CLOUD_
      collection: Sentinel5P
    S5P_L2_O3:
      productType: L2__O3____
      collection: Sentinel5P
    S5P_L2_CO:
      productType: L2__CO____
      collection: Sentinel5P
    S5P_L2_AER_AI:
      productType: L2__AER_AI
      collection: Sentinel5P
    S5P_L2_O3_PR:
      productType: L2__O3__PR
      collection: Sentinel5P
    S5P_L2_O3_TCL:
      productType: L2__O3_TCL
      collection: Sentinel5P
    S5P_L2_AER_LH:
      productType: L2__AER_LH
      collection: Sentinel5P
    S5P_L2_HCHO:
      productType: L2__HCHO__
      collection: Sentinel5P
    S5P_L2_CH4:
      productType: L2__CH4___
      collection: Sentinel5P
    S5P_L2_NP_BD3:
      productType: L2__NP_BD3
      collection: Sentinel5P
    S5P_L2_NP_BD6:
      productType: L2__NP_BD6
      collection: Sentinel5P
    S5P_L2_NP_BD7:
      productType: L2__NP_BD7
      collection: Sentinel5P
    S5P_L2_SO2:
      productType: L2__SO2___
      collection: Sentinel5P
    GENERIC_PRODUCT_TYPE:
      productType: '{productType}'
      collection: '{collection}'
---
!provider
  name: planetary_computer
  priority: 0
  roles:
    - host
  description: Microsoft Planetary Computer
  url: https://planetarycomputer.microsoft.com
  search: !plugin
    type: StacSearch
    api_endpoint: https://planetarycomputer.microsoft.com/api/stac/v1/search
    need_auth: false
    pagination:
      max_items_per_page: 1000
    metadata_mapping:
      tileIdentifier:
        - '{{"query":{{"s2:mgrs_tile":{{"eq":"{tileIdentifier}"}}}}}}'
        - '$.properties."s2:mgrs_tile"'
  products:
    S1_SAR_GRD:
      productType: sentinel-1-grd
      metadata_mapping:
        processingLevel:
          - '{{"query":{{"s1:processing_level":{{"eq":"{processingLevel}"}}}}}}'
          - '$.properties."s1:processing_level"'
    S2_MSI_L2A:
      productType: sentinel-2-l2a
    LANDSAT_C2L1:
      productType: landsat-c2-l1
    LANDSAT_C2L2:
      productType: landsat-c2-l2
    MODIS_MCD43A4:
      productType: modis-43A4-061
    NAIP:
      productType: naip
    GENERIC_PRODUCT_TYPE:
      productType: '{productType}'
  download: !plugin
    type: HTTPDownload
    base_uri: 'https://planetarycomputer.microsoft.com/api/stac/download'
    flatten_top_dirs: True
    auth_error_code: 403
  auth: !plugin
    type: SASAuth
    auth_uri: 'https://planetarycomputer.microsoft.com/api/sas/v1/sign?href={url}'
    signed_url_key: href
    headers:
      Ocp-Apim-Subscription-Key: "{apikey}"
---
!provider
  name: hydroweb_next
  priority: 0
  roles:
    - host
  description: hydroweb.next thematic hub for hydrology data access
  url: https://hydroweb.next.theia-land.fr
  search: !plugin
    type: StacSearch
    api_endpoint: https://hydroweb.next.theia-land.fr/api/v1/rs-catalog/stac/search
    need_auth: true
    auth_error_code: 401
    discover_queryables:
      fetch_url: null
      product_type_fetch_url: null
    pagination:
      max_items_per_page: 10_000
    metadata_mapping:
      startTimeFromAscendingNode:
        - '{{"query":{{"end_datetime":{{"gte":"{startTimeFromAscendingNode#to_iso_utc_datetime}"}}}}}}'
        - '$.properties.start_datetime'
      completionTimeFromAscendingNode:
        - '{{"query":{{"start_datetime":{{"lte":"{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}}}}}'
        - '$.properties.end_datetime'
  products:
    GENERIC_PRODUCT_TYPE:
      productType: '{productType}'
  download: !plugin
    type: HTTPDownload
    base_uri: https://hydroweb.next.theia-land.fr
    flatten_top_dirs: true
    auth_error_code: 401
  auth: !plugin
    type: HTTPHeaderAuth
    headers:
      X-API-Key: "{apikey}"
---
!provider
  name: wekeo
  priority: 0
  roles:
    - host
  description: WEkEO - Copernicus and Sentinel data
  url: https://www.wekeo.eu/
  search: !plugin
    type: DataRequestSearch
    api_endpoint: "https://wekeo-broker.prod.wekeo2.eu/databroker/"
    data_request_url: "https://wekeo-broker.prod.wekeo2.eu/databroker/datarequest"
    metadata_url: "https://wekeo-broker.prod.wekeo2.eu/databroker/querymetadata/"
    status_url: "https://wekeo-broker.prod.wekeo2.eu/databroker/datarequest/status/"
    result_url: "https://wekeo-broker.prod.wekeo2.eu/databroker/datarequest/jobs/{jobId}/result?size={items_per_page}&page={page}"
    timeout: 60
    need_auth: true
    auth_error_code: 401
    results_entry: content
    two_passes_id_search: true
    dates_required: true
    pagination:
      start_page: 0
      max_items_per_page: 20
      total_items_nb_key_path: '$.totItems'
    discover_product_types:
      fetch_url: null
    constraints_file_url: "https://wekeo-broker.apps.mercator.dpi.wekeo.eu/databroker/querymetadata/{dataset}"
    constraints_entry: constraints
    metadata_mapping:
      productType:
        - '{{"datasetId": "{productType}"}}'
        - '$.productInfo.datasetId'
      startTimeFromAscendingNode:
        - '{{"dateRangeSelectValues": [{{"name": "position", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
        - '$.productInfo.productStartDate'
      completionTimeFromAscendingNode:
        - '{{"dateRangeSelectValues": [{{"name": "position", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
        - '$.productInfo.productEndDate'
      geometry:
        - '{{"boundingBoxValues": [{{"name": "bbox", "bbox": {geometry#to_bounds}}}]}}'
        - '$.extraInformation.footprint'
      cloudCover: '$.extraInformation.cloudCover'
      downloadLink: '$.url'
      title: '$.productInfo.product'
      orderLink: 'https://wekeo-broker.prod.wekeo2.eu/databroker/dataorder?{{"uri": "{downloadLink}","jobId":"requestJobId"}}'
      storageStatus: 'OFFLINE'
  auth: !plugin
    type: TokenAuth
    auth_uri: 'https://wekeo-broker.prod.wekeo2.eu/databroker/gettoken'
    token_type: json
    token_key: access_token
    request_method: GET
    headers:
      Authorization: Bearer $token
  products:
    S2_MSI_L1C:
      productType: EO:ESA:DAT:SENTINEL-2:MSI
      processingLevel: S2MSI1C
      metadata_mapping:
        id:
          - '{{"stringInputValues": [{{"name": "productIdentifier", "value": "{id}"}}]}}'
          - '{$.productInfo.product#remove_extension}'
        processingLevel:
          - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}'
          - '{$.productInfo.product#get_processing_level_from_s2_id}'
        cloudCover:
          - '{{"stringInputValues": [{{"name": "cloudCover", "value": "{cloudCover}"}}]}}'
          - '$.extraInformation.cloudCover'
        productIdentifier:
          - '{{"stringInputValues": [{{"name": "productIdentifier", "value": "{productIdentifier}"}}]}}'
          - '$.null'
    S2_MSI_L2A:
      productType: EO:ESA:DAT:SENTINEL-2:MSI
      processingLevel: S2MSI2A
      metadata_mapping:
        id:
          - '{{"stringInputValues": [{{"name": "productIdentifier", "value": "{id}"}}]}}'
          - '{$.productInfo.product#remove_extension}'
        processingLevel:
          - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}'
          - '{$.productInfo.product#get_processing_level_from_s2_id}'
        cloudCover:
          - '{{"stringInputValues": [{{"name": "cloudCover", "value": "{cloudCover}"}}]}}'
          - '$.extraInformation.cloudCover'
        productIdentifier:
          - '{{"stringInputValues": [{{"name": "productIdentifier", "value": "{productIdentifier}"}}]}}'
          - '$.null'
    S2_MSI_L2AP:
      productType: EO:ESA:DAT:SENTINEL-2:MSI
      processingLevel: S2MSI2AP
      metadata_mapping:
        id:
          - '{{"stringInputValues": [{{"name": "productIdentifier", "value": "{id}"}}]}}'
          - '{$.productInfo.product#remove_extension}'
        processingLevel:
          - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}'
          - '{$.productInfo.product#get_processing_level_from_s2_id}'
        cloudCover:
          - '{{"stringInputValues": [{{"name": "cloudCover", "value": "{cloudCover}"}}]}}'
          - '$.extraInformation.cloudCover'
        productIdentifier:
          - '{{"stringInputValues": [{{"name": "productIdentifier", "value": "{productIdentifier}"}}]}}'
          - '$.null'
    S1_SAR_GRD:
      productType: EO:ESA:DAT:SENTINEL-1:SAR
      providerProductType: "GRD"
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "productType", "value": "GRD"}}, {{"name": "sensorMode", "value": {id#split_id_into_s1_params}["sensorMode"]}}, {{"name": "processingLevel", "value": {id#split_id_into_s1_params}["processingLevel"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s1_params}["startDate"], "end": {id#split_id_into_s1_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        startTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "position", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productStartDate'
        completionTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "position", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productEndDate'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "productType", "value": "{providerProductType}"}}]}}'
          - '$.null'
        processingLevel:
          - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}'
          - '{$.productInfo.product#get_processing_level_from_s1_id}'
        sensorMode:
          - '{{"stringChoiceValues": [{{"name": "sensorMode", "value": "{sensorMode}"}}]}}'
          - '{$.productInfo.product#get_sensor_mode_from_s1_id}'
        swath:
          - '{{"stringChoiceValues": [{{"name": "swath", "value": "{swath}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        orbitDirection:
          - '{{"stringChoiceValues": [{{"name": "orbitDirection", "value": "{orbitDirection}"}}]}}'
          - '$.null'
        polarisation:
          - '{{"stringChoiceValues": [{{"name": "polarisation", "value": "{polarisation}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relativeOrbitNumber", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        missionTakeId:
          - '{{"stringInputValues": [{{"name": "missionTakeId", "value": "{missionTakeId}"}}]}}'
          - '$.null'
    S1_SAR_RAW:
      productType: EO:ESA:DAT:SENTINEL-1:SAR
      providerProductType: "RAW"
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "productType", "value": "RAW"}}, {{"name": "sensorMode", "value": {id#split_id_into_s1_params}["sensorMode"]}}, {{"name": "processingLevel", "value": {id#split_id_into_s1_params}["processingLevel"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s1_params}["startDate"], "end": {id#split_id_into_s1_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        startTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "position", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productStartDate'
        completionTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "position", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productEndDate'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "productType", "value": "{providerProductType}"}}]}}'
          - '$.null'
        processingLevel:
          - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}'
          - '{$.productInfo.product#get_processing_level_from_s1_id}'
        sensorMode:
          - '{{"stringChoiceValues": [{{"name": "sensorMode", "value": "{sensorMode}"}}]}}'
          - '{$.productInfo.product#get_sensor_mode_from_s1_id}'
        swath:
          - '{{"stringChoiceValues": [{{"name": "swath", "value": "{swath}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        orbitDirection:
          - '{{"stringChoiceValues": [{{"name": "orbitDirection", "value": "{orbitDirection}"}}]}}'
          - '$.null'
        polarisation:
          - '{{"stringChoiceValues": [{{"name": "polarisation", "value": "{polarisation}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relativeOrbitNumber", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        missionTakeId:
          - '{{"stringInputValues": [{{"name": "missionTakeId", "value": "{missionTakeId}"}}]}}'
          - '$.null'
    S1_SAR_OCN:
      productType: EO:ESA:DAT:SENTINEL-1:SAR
      providerProductType: "OCN"
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "productType", "value": "OCN"}}, {{"name": "sensorMode", "value": {id#split_id_into_s1_params}["sensorMode"]}}, {{"name": "processingLevel", "value": {id#split_id_into_s1_params}["processingLevel"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s1_params}["startDate"], "end": {id#split_id_into_s1_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        startTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "position", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productStartDate'
        completionTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "position", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productEndDate'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "productType", "value": "{providerProductType}"}}]}}'
          - '$.null'
        processingLevel:
          - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}'
          - '{$.productInfo.product#get_processing_level_from_s1_id}'
        sensorMode:
          - '{{"stringChoiceValues": [{{"name": "sensorMode", "value": "{sensorMode}"}}]}}'
          - '{$.productInfo.product#get_sensor_mode_from_s1_id}'
        swath:
          - '{{"stringChoiceValues": [{{"name": "swath", "value": "{swath}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        orbitDirection:
          - '{{"stringChoiceValues": [{{"name": "orbitDirection", "value": "{orbitDirection}"}}]}}'
          - '$.null'
        polarisation:
          - '{{"stringChoiceValues": [{{"name": "polarisation", "value": "{polarisation}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relativeOrbitNumber", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        missionTakeId:
          - '{{"stringInputValues": [{{"name": "missionTakeId", "value": "{missionTakeId}"}}]}}'
          - '$.null'
    S1_SAR_SLC:
      productType: EO:ESA:DAT:SENTINEL-1:SAR
      providerProductType: SLC
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "productType", "value": "SLC"}}, {{"name": "sensorMode", "value": {id#split_id_into_s1_params}["sensorMode"]}}, {{"name": "processingLevel", "value": {id#split_id_into_s1_params}["processingLevel"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s1_params}["startDate"], "end": {id#split_id_into_s1_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        startTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "position", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productStartDate'
        completionTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "position", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productEndDate'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "productType", "value": "{providerProductType}"}}]}}'
          - '$.null'
        processingLevel:
          - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}'
          - '{$.productInfo.product#get_processing_level_from_s1_id}'
        sensorMode:
          - '{{"stringChoiceValues": [{{"name": "sensorMode", "value": "{sensorMode}"}}]}}'
          - '{$.productInfo.product#get_sensor_mode_from_s1_id}'
        swath:
          - '{{"stringChoiceValues": [{{"name": "swath", "value": "{swath}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        orbitDirection:
          - '{{"stringChoiceValues": [{{"name": "orbitDirection", "value": "{orbitDirection}"}}]}}'
          - '$.null'
        polarisation:
          - '{{"stringChoiceValues": [{{"name": "polarisation", "value": "{polarisation}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relativeOrbitNumber", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        missionTakeId:
          - '{{"stringInputValues": [{{"name": "missionTakeId", "value": "{missionTakeId}"}}]}}'
          - '$.null'
    S3_OLCI_L2LRR:
      productType: EO:ESA:DAT:SENTINEL-3:OL_2_LRR___
      providerProductType: LRR
      processingLevel: 2
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "productType", "value": "LRR"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "productType", "value": "{providerProductType}"}}]}}'
          - '$.null'
        processingLevel:
          - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}'
          - '2'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        orbitDirection:
          - '{{"stringChoiceValues": [{{"name": "orbitDirection", "value": "{orbitDirection}"}}]}}'
          - '$.null'
    S3_OLCI_L2LFR:
      productType: EO:ESA:DAT:SENTINEL-3:OL_2_LFR___
      providerProductType: OL_2_LFR___
      processingLevel: 2
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "productType", "value": "OL_2_LFR___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "productType", "value": "{providerProductType}"}}]}}'
          - '$.null'
        processingLevel:
          - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}'
          - '2'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        orbitDirection:
          - '{{"stringChoiceValues": [{{"name": "orbitDirection", "value": "{orbitDirection}"}}]}}'
          - '$.null'
    S3_SY_SYN:
      productType: EO:ESA:DAT:SENTINEL-3:SYNERGY
      processingLevel: 2
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "productType", "value": {id#split_id_into_s3_params}["productType"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "productType", "value": "{providerProductType}"}}]}}'
          - '$.null'
        processingLevel:
          - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}'
          - '2'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        orbitDirection:
          - '{{"stringChoiceValues": [{{"name": "orbitDirection", "value": "{orbitDirection}"}}]}}'
          - '$.null'
        cloudCover:
          - '{{"stringInputValues": [{{"name": "cloudCover", "value": "{cloudCover}"}}]}}'
          - '$.extraInformation.cloudCover'
      # additional filtering to only return the desired product types (defining datasetId EO:ESA:DAT:SENTINEL-3:SYNERGY is not enough for that)
      custom_filters:
        filter_attribute: "$.productInfo.product"
        indexes: 4-15
        filter_clause: "in ['SY_2_AOD___', 'SY_2_V10___', 'SY_2_VGP___', 'SY_2_SYN___', 'SY_2_VG1___']"
    S3_LAN:
      productType: EO:ESA:DAT:SENTINEL-3:SR_2_LAN___
      providerProductType: SR_2_LAN___
      processingLevel: 2
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "productType", "value": "SR_2_LAN___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "productType", "value": "{providerProductType}"}}]}}'
          - '$.null'
        processingLevel:
          - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}'
          - '2'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        orbitDirection:
          - '{{"stringChoiceValues": [{{"name": "orbitDirection", "value": "{orbitDirection}"}}]}}'
          - '$.null'
    S3_SLSTR_L2:
      productType: EO:ESA:DAT:SENTINEL-3:SL_2_LST___
      providerProductType: SL_2_LST___
      processingLevel: 2
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "productType", "value": "SL_2_LST___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "productType", "value": "{providerProductType}"}}]}}'
          - '$.null'
        processingLevel:
          - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}'
          - '2'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        orbitDirection:
          - '{{"stringChoiceValues": [{{"name": "orbitDirection", "value": "{orbitDirection}"}}]}}'
          - '$.null'
    S3_SLSTR_L2AOD:
      productType: EO:EUM:DAT:SENTINEL-3:0416
      providerProductType: SL_2_AOD___
      timeliness: NR
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "SL_2_AOD___"}}, {{"name": "timeliness", "value": "NR"}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        platform:
          - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        orbitDirection:
          - '{{"stringChoiceValues": [{{"name": "orbitdir", "value": "{orbitDirection}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        orbitNumber:
          - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}'
          - '$.null'
        cycleNumber:
          - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    S3_SLSTR_L2FRP:
      productType: EO:EUM:DAT:SENTINEL-3:0417
      providerProductType: SL_2_FRP___
      timeliness: NR
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "SL_2_FRP___"}}, {{"name": "timeliness", "value": "NR"}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        platform:
          - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        orbitDirection:
          - '{{"stringChoiceValues": [{{"name": "orbitdir", "value": "{orbitDirection}"}}]}}'
          - '$.null'
        fire:
          - '{{"stringChoiceValues": [{{"name": "fire", "value": "{fire}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        orbitNumber:
          - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}'
          - '$.null'
        cycleNumber:
          - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    S3_EFR:
      productType: EO:EUM:DAT:SENTINEL-3:OL_1_EFR___
      providerProductType: OL_1_EFR___
      metadata_mapping:
        productType:
          - '{{"datasetId": "EO:EUM:DAT:SENTINEL-3:0577"}}'
          - 'EO:EUM:DAT:SENTINEL-3:OL_1_EFR___'
        id:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "OL_1_EFR___"}}, {{"name": "timeliness", "value": "NT"}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        platform:
          - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        orbitDirection:
          - '{{"stringChoiceValues": [{{"name": "orbitdir", "value": "{orbitDirection}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        orbitNumber:
          - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}'
          - '$.null'
        cycleNumber:
          - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    S3_ERR:
      productType: EO:EUM:DAT:SENTINEL-3:OL_1_ERR___
      providerProductType: OL_1_ERR___
      metadata_mapping:
        productType:
          - '{{"datasetId": "EO:EUM:DAT:SENTINEL-3:0578"}}'
          - 'EO:EUM:DAT:SENTINEL-3:OL_1_ERR___'
        id:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "OL_1_ERR___"}}, {{"name": "timeliness", "value": "NT"}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        platform:
          - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        orbitDirection:
          - '{{"stringChoiceValues": [{{"name": "orbitdir", "value": "{orbitDirection}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        orbitNumber:
          - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}'
          - '$.null'
        cycleNumber:
          - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    S3_OLCI_L2WFR:
      productType: EO:EUM:DAT:SENTINEL-3:OL_2_WFR___
      providerProductType: OL_2_WFR___
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "OL_2_WFR___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        platform:
          - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        orbitDirection:
          - '{{"stringChoiceValues": [{{"name": "orbitdir", "value": "{orbitDirection}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        orbitNumber:
          - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}'
          - '$.null'
        cycleNumber:
          - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    S3_OLCI_L2WRR:
      productType: EO:EUM:DAT:SENTINEL-3:OL_2_WRR___
      providerProductType: OL_2_WRR___
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "OL_2_WRR___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        platform:
          - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        orbitDirection:
          - '{{"stringChoiceValues": [{{"name": "orbitdir", "value": "{orbitDirection}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        orbitNumber:
          - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}'
          - '$.null'
        cycleNumber:
          - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    S3_OLCI_L2WFR_BC003:
      productType: EO:EUM:DAT:SENTINEL-3:0556
      providerProductType: OL_2_WFR___
      timeliness: NT
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "OL_2_WFR___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        platform:
          - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        orbitNumber:
          - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}'
          - '$.null'
        cycleNumber:
          - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    S3_OLCI_L2WRR_BC003:
      productType: EO:EUM:DAT:SENTINEL-3:0557
      providerProductType: OL_2_WRR___
      timeliness: NT
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "OL_2_WRR___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        platform:
          - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        orbitNumber:
          - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}'
          - '$.null'
        cycleNumber:
          - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    S3_SRA:
      productType: EO:EUM:DAT:SENTINEL-3:SR_1_SRA___
      providerProductType: SR_1_SRA___
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "SR_1_SRA___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        platform:
          - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        orbitDirection:
          - '{{"stringChoiceValues": [{{"name": "orbitdir", "value": "{orbitDirection}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        orbitNumber:
          - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}'
          - '$.null'
        cycleNumber:
          - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    S3_SRA_A:
      productType: EO:EUM:DAT:SENTINEL-3:SR_1_SRA_A_
      providerProductType: SR_1_SRA_A_
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "SR_1_SRA_A_"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        platform:
          - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        orbitDirection:
          - '{{"stringChoiceValues": [{{"name": "orbitdir", "value": "{orbitDirection}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        orbitNumber:
          - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}'
          - '$.null'
        cycleNumber:
          - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    S3_SRA_BS:
      productType: EO:EUM:DAT:SENTINEL-3:SR_1_SRA_BS
      providerProductType: SR_1_SRA_BS
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "SR_1_SRA_BS"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        platform:
          - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        orbitDirection:
          - '{{"stringChoiceValues": [{{"name": "orbitdir", "value": "{orbitDirection}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        orbitNumber:
          - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}'
          - '$.null'
        cycleNumber:
          - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    S3_SRA_1A_BC004:
      productType: EO:EUM:DAT:SENTINEL-3:0583
      providerProductType: SR_1_SRA_A_
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "SR_1_SRA_A_"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        platform:
          - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        orbitNumber:
          - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}'
          - '$.null'
        cycleNumber:
          - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    S3_SRA_1B_BC004:
      productType: EO:EUM:DAT:SENTINEL-3:0584
      providerProductType: SR_1_SRA___
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "SR_1_SRA___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        platform:
          - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        orbitNumber:
          - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}'
          - '$.null'
        cycleNumber:
          - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    S3_SRA_BS_BC004:
      productType: EO:EUM:DAT:SENTINEL-3:0585
      providerProductType: SR_1_SRA_BS
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "SR_1_SRA_BS"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        platform:
          - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        orbitNumber:
          - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}'
          - '$.null'
        cycleNumber:
          - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    S3_WAT:
      productType: EO:EUM:DAT:SENTINEL-3:SR_2_WAT___
      providerProductType: SR_2_WAT___
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "SR_2_WAT___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        platform:
          - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        orbitDirection:
          - '{{"stringChoiceValues": [{{"name": "orbitdir", "value": "{orbitDirection}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        orbitNumber:
          - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}'
          - '$.null'
        cycleNumber:
          - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    S3_WAT_BC004:
      productType: EO:EUM:DAT:SENTINEL-3:0586
      providerProductType: SR_2_WAT___
      timeliness: NT
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "SR_2_WAT___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        platform:
          - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        orbitNumber:
          - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}'
          - '$.null'
        cycleNumber:
          - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    S3_SLSTR_L1RBT:
      productType: EO:EUM:DAT:SENTINEL-3:SL_1_RBT___
      providerProductType: SL_1_RBT___
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "SL_1_RBT___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        platform:
          - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        orbitDirection:
          - '{{"stringChoiceValues": [{{"name": "orbitdir", "value": "{orbitDirection}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        orbitNumber:
          - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}'
          - '$.null'
        cycleNumber:
          - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    S3_SLSTR_L1RBT_BC004:
      productType: EO:EUM:DAT:SENTINEL-3:0615
      providerProductType: SL_1_RBT___
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "SL_1_RBT___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        platform:
          - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        orbitNumber:
          - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}'
          - '$.null'
        cycleNumber:
          - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    S3_SLSTR_L2WST:
      productType: EO:EUM:DAT:SENTINEL-3:SL_2_WST___
      providerProductType: SL_2_WST___
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "SL_2_WST___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        platform:
          - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        orbitDirection:
          - '{{"stringChoiceValues": [{{"name": "orbitdir", "value": "{orbitDirection}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        orbitNumber:
          - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}'
          - '$.null'
        cycleNumber:
          - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    S3_SLSTR_L2WST_BC003:
      productType: EO:EUM:DAT:SENTINEL-3:0582
      providerProductType: SL_2_WST___
      timeliness: NT
      platform: Sentinel-3A
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "SL_2_WST___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        platform:
          - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        orbitNumber:
          - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}'
          - '$.null'
        cycleNumber:
          - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    S3_OLCI_L4BALTIC:
      productType: EO:MO:DAT:OCEANCOLOUR_BAL_BGC_L4_NRT_009_132:cmems_obs-oc_bal_bgc-plankton_nrt_l4-olci-300m_P1M_202207
      variable:
        - lat
        - CHL
        - lon
        - CHL_count
        - time
        - CHL_error
      metadata_mapping:
        id:
          - '{{"dateRangeSelectValues": [{{"name": "time", "start": {id#get_dates_from_string}["startDate"], "end": {id#get_dates_from_string}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        startTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "time", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productStartDate'
        completionTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "time", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productEndDate'
        variable:
          - '{{"multiStringSelectValues": [{{"name": "variables", "value": {variable}}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    S5P_L1B2_IR_ALL:
      productType: EO:ESA:DAT:SENTINEL-5P:TROPOMI
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "productType", "value": {id#split_id_into_s5p_params}["productType"]}}, {{"name": "processingMode", "value": {id#split_id_into_s5p_params}["processingMode"]}}, {{"name": "processingLevel", "value": {id#split_id_into_s5p_params}["processingLevel"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s5p_params}["startDate"], "end": {id#split_id_into_s5p_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        processingLevel:
          - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}'
          - '{$.productInfo.product#get_processing_level_from_s5p_id}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "productType", "value": "{providerProductType}"}}]}}'
          - '$.null'
        processingMode:
          - '{{"stringChoiceValues": [{{"name": "processingMode", "value": "{processingMode}"}}]}}'
          - '$.null'
    S6_P4_L1AHR_F06:
      productType: EO:EUM:DAT:0236
      platform: Sentinel-6A
      providerProductType: P4_1A_HR_____
      timeliness: NT
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "P4_1A_HR_____"}}, {{"name": "timeliness", "value": "NT"}}, {{"name": "sat", "value": "Sentinel-6A"}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        platform:
          - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        orbitNumber:
          - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}'
          - '$.null'
        cycleNumber:
          - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    S6_P4_L1BLR_F06:
      productType: EO:EUM:DAT:0237
      platform: Sentinel-6A
      providerProductType: P4_1B_LR_____
      timeliness: NT
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "P4_1B_LR_____"}}, {{"name": "timeliness", "value": "NT"}}, {{"name": "sat", "value": "Sentinel-6A"}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        platform:
          - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        orbitNumber:
          - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}'
          - '$.null'
        cycleNumber:
          - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    S6_P4_L1BAHR_F06:
      productType: EO:EUM:DAT:0238
      platform: Sentinel-6A
      providerProductType: P4_1B_HR_____
      timeliness: NT
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "P4_1B_HR_____"}}, {{"name": "timeliness", "value": "NT"}}, {{"name": "sat", "value": "Sentinel-6A"}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        platform:
          - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        orbitNumber:
          - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}'
          - '$.null'
        cycleNumber:
          - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    S6_P4_L2LR_F06:
      productType: EO:EUM:DAT:0239
      platform: Sentinel-6A
      providerProductType: P4_2__LR_____
      timeliness: NT
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "P4_2__LR_____"}}, {{"name": "timeliness", "value": "NT"}}, {{"name": "sat", "value": "Sentinel-6A"}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        platform:
          - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        orbitNumber:
          - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}'
          - '$.null'
        cycleNumber:
          - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    S6_P4_L2HR_F06:
      productType: EO:EUM:DAT:0240
      platform: Sentinel-6A
      providerProductType: P4_2__HR_____
      timeliness: NT
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "P4_2__HR_____"}}, {{"name": "timeliness", "value": "NT"}}, {{"name": "sat", "value": "Sentinel-6A"}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        platform:
          - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        orbitNumber:
          - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}'
          - '$.null'
        cycleNumber:
          - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    S6_AMR_L2_F06:
      productType: EO:EUM:DAT:0241
      platform: Sentinel-6A
      providerProductType: MW_2__AMR____
      timeliness: NT
      metadata_mapping:
        id:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "MW_2__AMR____"}}, {{"name": "timeliness", "value": "NT"}}, {{"name": "sat", "value": "Sentinel-6A"}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}'
          - '{$.productInfo.product#remove_extension}'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        platform:
          - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}'
          - '$.null'
        timeliness:
          - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}'
          - '$.null'
        relativeOrbitNumber:
          - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}'
          - '$.null'
        orbitNumber:
          - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}'
          - '$.null'
        cycleNumber:
          - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}'
          - '$.null'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    COP_DEM_GLO30_DGED:
      productType: EO:DEM:DAT:COP-DEM_GLO-30-DGED__2022_1
      metadata_mapping:
        id:
          - '{{"boundingBoxValues": [{{"name": "bbox", "bbox": {id#split_cop_dem_id}}}]}}'
          - '{$.productInfo.product#remove_extension}'
        startTimeFromAscendingNode: '$.productInfo.productStartDate'
        completionTimeFromAscendingNode: '$.productInfo.productEndDate'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
    COP_DEM_GLO90_DGED:
      productType: EO:DEM:DAT:COP-DEM_GLO-90-DGED__2022_1
      metadata_mapping:
        id:
          - '{{"boundingBoxValues": [{{"name": "bbox", "bbox": {id#split_cop_dem_id}}}]}}'
          - '{$.productInfo.product#remove_extension}'
        startTimeFromAscendingNode: '$.productInfo.productStartDate'
        completionTimeFromAscendingNode: '$.productInfo.productEndDate'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
    CLMS_CORINE:
      productType: EO:CLMS:DAT:CORINE
      providerProductType: "Corine Land Cover 2018"
      format: "GeoTiff100mt"
      metadata_mapping:
        # the given datetimes are used to determine the product type, i.e. from which year the data will be taken
        startTimeFromAscendingNode: '$.productInfo.productStartDate'
        completionTimeFromAscendingNode: '$.productInfo.productEndDate'
        providerProductType:
          - '{{"stringChoiceValues": [{{"name": "product_type", "value": "{providerProductType}"}}]}}'
          - '$.null'
        format:
          - '{{"stringChoiceValues": [{{"name": "format", "value": "{format}"}}]}}'
          - '$.null'
        id:
          - '{{"stringChoiceValues": [{{"name": "format", "value": "{format}"}}, {{"name": "product_type", "value": "{id#split_corine_id}"}}]}}'
          - '{$.productInfo.product#remove_extension}'
        geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    CLMS_GLO_FCOVER_333M:
      productType: EO:CLMS:DAT:CGLS_GLOBAL_FCOVER300_V1_333M
      metadata_mapping:
        id: '{$.productInfo.product#remove_extension}'
        startTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productStartDate'
        completionTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productEndDate'
        geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    CLMS_GLO_NDVI_333M:
      productType: EO:CLMS:DAT:CGLS_GLOBAL_NDVI300_V1_333M
      metadata_mapping:
        id: '{$.productInfo.product#remove_extension}'
        startTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productStartDate'
        completionTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productEndDate'
        geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    CLMS_GLO_NDVI_1KM_LTS:
      productType: EO:CLMS:DAT:CGLS_GLOBAL_NDVI_V2_1KM_LTS
      metadata_mapping:
        id: '{$.productInfo.product#remove_extension}'
        startTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productStartDate'
        completionTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productEndDate'
        geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    CLMS_GLO_DMP_333M:
      productType: EO:CLMS:DAT:CGLS_GLOBAL_DMP300_V1_333M
      metadata_mapping:
        id: '{$.productInfo.product#remove_extension}'
        startTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productStartDate'
        completionTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productEndDate'
        geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    CLMS_GLO_GDMP_333M:
      productType: EO:CLMS:DAT:CGLS_GLOBAL_GDMP300_V1_333M
      metadata_mapping:
        id: '{$.productInfo.product#remove_extension}'
        startTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productStartDate'
        completionTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productEndDate'
        geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    CLMS_GLO_LAI_333M:
      productType: EO:CLMS:DAT:CGLS_GLOBAL_LAI300_V1_333M
      metadata_mapping:
        id: '{$.productInfo.product#remove_extension}'
        startTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productStartDate'
        completionTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productEndDate'
        geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    CLMS_GLO_FAPAR_333M:
      productType: EO:CLMS:DAT:CGLS_GLOBAL_FAPAR300_V1_333M
      metadata_mapping:
        id: '{$.productInfo.product#remove_extension}'
        startTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productStartDate'
        completionTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productEndDate'
        geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    EEA_DAILY_SWI_1KM:
      productType: EO:EEA:DAT:VEGETATION:DAILY_SWI_1KM_EUROPE_V1
      metadata_mapping:
        id: '{$.productInfo.product#remove_extension}'
        startTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productStartDate'
        completionTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productEndDate'
        geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    EEA_DAILY_SSM_1KM:
      productType: EO:EEA:DAT:VEGETATION:DAILY_SSM_1KM_EUROPE_V1
      metadata_mapping:
        id: '{$.productInfo.product#remove_extension}'
        startTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productStartDate'
        completionTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productEndDate'
        geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type
    EEA_DAILY_VI:
      productType: EO:EEA:DAT:CLMS_HRVPP_VI
      metadata_mapping:
        id:
          - '{{"stringInputValues": [{{"name": "uid", "value": "{id}"}}]}}'
          - '{$.productInfo.product#remove_extension}'
        startTimeFromAscendingNode:
          - '{{"dateRangeSelectValues": [{{"name": "temporal_interval", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}'
          - '$.productInfo.productStartDate'
        completionTimeFromAscendingNode: '$.productInfo.productEndDate'
        platformSerialIdentifier:
          - '{{"stringChoiceValues": [{{"name": "platformSerialIdentifier", "value": "{platformSerialIdentifier}"}}]}}'
          - '$.null'
        productVersion:
          - '{{"stringInputValues": [{{"name": "productVersion", "value": "{productVersion}"}}]}}'
          - '$.null'
        collection:
          - '{{"stringChoiceValues": [{{"name": "productType", "value": "{collection}"}}]}}'
          - '$.null'
        processingStartDate:
         - '{{"dateRangeSelectValues": [{{"name": "processingDate", "start": "{processingStartDate#to_iso_utc_datetime}", "end": "{processingEndDate#to_iso_utc_datetime}"}}]}}'
         - '$.null'
        tileIdentifier:
          - '{{"stringInputValues": [{{"name": "tileId", "value": "{tileIdentifier}"}}]}}'
          - '$.null'
        place:
          - '{{"stringInputValues": [{{"name": "name", "value": "{place}"}}]}}'
          - '$.null'
        geometry:
          - '{{"boundingBoxValues": [{{"name": "bbox", "bbox": {geometry#to_bounds}}}]}}'
          - '$.extraInformation.footprint'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
    ERA5_PL:
      productType: EO:ECMWF:DAT:REANALYSIS_ERA5_PRESSURE_LEVELS
      providerProductType:
        - ensemble_mean
        - ensemble_members
        - reanalysis
        - ensemble_spread
      variable:
        - temperature
        - fraction_of_cloud_cover
        - geopotential
        - ozone_mass_mixing_ratio
        - potential_vorticity
        - relative_humidity
        - specific_cloud_ice_water_content
        - specific_cloud_liquid_water_content
        - specific_humidity
        - specific_rain_water_content
        - specific_snow_water_content
        - vertical_velocity
        - vorticity
      pressure_level:
        - "1"
        - "2"
        - "3"
        - "5"
        - "7"
        - "10"
        - "20"
        - "30"
        - "50"
        - "70"
        - "100"
        - "125"
        - "150"
        - "175"
        - "200"
        - "225"
        - "250"
        - "300"
        - "350"
        - "400"
        - "450"
        - "500"
        - "550"
        - "600"
        - "650"
        - "700"
        - "750"
        - "775"
        - "800"
        - "825"
        - "850"
        - "875"
        - "900"
        - "925"
        - "950"
        - "975"
        - "1000"
      format: grib # netcdf format may fail
      metadata_mapping:
        id: '$.productInfo.product'
        startTimeFromAscendingNode:
          - '{{"multiStringSelectValues": [{{"name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"]}}, {{"name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"]}}, {{"name": "day", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"]}}, {{"name": "time", "value": {startTimeFromAscendingNode#get_ecmwf_time}}}]}}'
          - '$.productInfo.productStartDate'
        completionTimeFromAscendingNode: '$.productInfo.productEndDate'
        providerProductType:
          - '{{"multiStringSelectValues": [{{"name": "product_type", "value": {providerProductType}}}]}}'
          - '$.null'
        variable:
          - '{{"multiStringSelectValues": [{{"name": "variable", "value": {variable}}}]}}'
          - '$.null'
        pressure_level:
          - '{{"multiStringSelectValues": [{{"name": "pressure_level", "value": {pressure_level}}}]}}'
          - '$.null'
        format:
          - '{{"stringChoiceValues": [{{"name": "format", "value": "{format}"}}]}}'
          - '$.null'
        geometry:
          - '{{"boundingBoxValues": [{{"name": "area", "bbox": {geometry#to_bounds}}}]}}'
          - '$.extraInformation.footprint'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
      storeDownloadUrl: True
    ERA5_PL_MONTHLY:
      productType: EO:ECMWF:DAT:REANALYSIS_ERA5_PRESSURE_LEVELS_MONTHLY_MEANS
      providerProductType:
        - monthly_averaged_ensemble_members
        - monthly_averaged_ensemble_members_by_hour_of_day
        - monthly_averaged_reanalysis
        - monthly_averaged_reanalysis_by_hour_of_day
      variable:
        - divergence
        - fraction_of_cloud_cover
        - geopotential
        - ozone_mass_mixing_ratio
        - potential_vorticity
        - relative_humidity
        - specific_cloud_ice_water_content
        - specific_cloud_liquid_water_content
        - specific_humidity
        - specific_rain_water_content
        - specific_snow_water_content
        - temperature
        - u_component_of_wind
        - v_component_of_wind
        - vertical_velocity
        - vorticity
      pressure_level:
        - "1"
        - "2"
        - "3"
        - "5"
        - "7"
        - "10"
        - "20"
        - "30"
        - "50"
        - "70"
        - "100"
        - "125"
        - "150"
        - "175"
        - "200"
        - "225"
        - "250"
        - "300"
        - "350"
        - "400"
        - "450"
        - "500"
        - "550"
        - "600"
        - "650"
        - "700"
        - "750"
        - "775"
        - "800"
        - "825"
        - "850"
        - "875"
        - "900"
        - "925"
        - "950"
        - "975"
        - "1000"
      format: grib # netcdf format may fail
      metadata_mapping:
        id: '$.productInfo.product'
        startTimeFromAscendingNode:
          - '{{"multiStringSelectValues": [{{"name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"]}}, {{"name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"]}}, {{"name": "time", "value": {startTimeFromAscendingNode#get_ecmwf_time}}}]}}'
          - '$.productInfo.productStartDate'
        completionTimeFromAscendingNode: '$.productInfo.productEndDate'
        providerProductType:
          - '{{"multiStringSelectValues": [{{"name": "product_type", "value": {providerProductType}}}]}}'
          - '$.null'
        variable:
          - '{{"multiStringSelectValues": [{{"name": "variable", "value": {variable}}}]}}'
          - '$.null'
        pressure_level:
          - '{{"multiStringSelectValues": [{{"name": "pressure_level", "value": {pressure_level}}}]}}'
          - '$.null'
        format:
          - '{{"stringChoiceValues": [{{"name": "format", "value": "{format}"}}]}}'
          - '$.null'
        geometry:
          - '{{"boundingBoxValues": [{{"name": "area", "bbox": {geometry#to_bounds}}}]}}'
          - '$.extraInformation.footprint'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
      storeDownloadUrl: True
    ERA5_LAND:
      productType: EO:ECMWF:DAT:REANALYSIS_ERA5_LAND
      variable:
        - 2m_dewpoint_temperature
        - 2m_temperature
        - skin_temperature
        - soil_temperature_level_1
        - lake_bottom_temperature
        - lake_total_layer_temperature
        - lake_shape_factor
        - snow_cover
        - temperature_of_snow_layer
        - snow_depth
        - snow_albedo
        - skin_reservoir_content
        - volumetric_soil_water_layer_1
        - forecast_albedo
        - surface_net_thermal_radiation
        - surface_net_solar_radiation
        - evaporation_from_bare_soil
        - evaporation_from_open_water_surfaces_excluding_oceans
        - total_evaporation
        - surface_runoff
        - snow_evaporation
        - potential_evaporation
        - snow_density
        - snowmelt
        - surface_latent_heat_flux
        - 10m_u_component_of_wind
        - 10m_v_component_of_wind
        - surface_pressure
        - total_precipitation
        - leaf_area_index_high_vegetation
        - leaf_area_index_low_vegetation
      format: grib # netcdf format may fail
      metadata_mapping:
        id: '$.productInfo.product'
        startTimeFromAscendingNode:
          - '{{"stringChoiceValues": [{{"name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(string)}["year"]}}, {{"name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(string)}["month"]}}], "multiStringSelectValues": [{{"name": "day", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"]}}, {{"name": "time", "value": {startTimeFromAscendingNode#get_ecmwf_time}}}]}}'
          - '$.productInfo.productStartDate'
        completionTimeFromAscendingNode: '$.productInfo.productEndDate'
        variable:
          - '{{"multiStringSelectValues": [{{"name": "variable", "value": {variable}}}]}}'
          - '$.null'
        format:
          - '{{"stringChoiceValues": [{{"name": "format", "value": "{format}"}}]}}'
          - '$.null'
        geometry:
          - '{{"boundingBoxValues": [{{"name": "area", "bbox": {geometry#to_bounds}}}]}}'
          - '$.extraInformation.footprint'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
      storeDownloadUrl: True
    ERA5_LAND_MONTHLY:
      productType: EO:ECMWF:DAT:REANALYSIS_ERA5_LAND_MONTHLY_MEANS
      providerProductType:
        - monthly_averaged_reanalysis
        - monthly_averaged_reanalysis_by_hour_of_day
      variable:
        - 2m_dewpoint_temperature
        - 2m_temperature
        - skin_temperature
        - soil_temperature_level_1
        - lake_bottom_temperature
        - lake_total_layer_temperature
        - lake_shape_factor
        - snow_cover
        - temperature_of_snow_layer
        - snow_depth
        - snow_albedo
        - skin_reservoir_content
        - volumetric_soil_water_layer_1
        - forecast_albedo
        - surface_net_thermal_radiation
        - surface_net_solar_radiation
        - evaporation_from_bare_soil
        - evaporation_from_open_water_surfaces_excluding_oceans
        - total_evaporation
        - surface_runoff
        - snow_evaporation
        - potential_evaporation
        - snow_density
        - snowmelt
        - surface_latent_heat_flux
        - 10m_u_component_of_wind
        - 10m_v_component_of_wind
        - surface_pressure
        - total_precipitation
        - leaf_area_index_high_vegetation
        - leaf_area_index_low_vegetation
      format: grib # netcdf format may fail
      metadata_mapping:
        id: '$.productInfo.product'
        startTimeFromAscendingNode:
          - '{{"multiStringSelectValues": [{{"name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"]}}, {{"name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"]}}, {{"name": "time", "value": {startTimeFromAscendingNode#get_ecmwf_time}}}]}}'
          - '$.productInfo.productStartDate'
        completionTimeFromAscendingNode: '$.productInfo.productEndDate'
        providerProductType:
          - '{{"multiStringSelectValues": [{{"name": "product_type", "value": {providerProductType}}}]}}'
          - '$.null'
        variable:
          - '{{"multiStringSelectValues": [{{"name": "variable", "value": {variable}}}]}}'
          - '$.null'
        format:
          - '{{"stringChoiceValues": [{{"name": "format", "value": "{format}"}}]}}'
          - '$.null'
        geometry:
          - '{{"boundingBoxValues": [{{"name": "area", "bbox": {geometry#to_bounds}}}]}}'
          - '$.extraInformation.footprint'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
      storeDownloadUrl: True
    ERA5_SL:
      productType: EO:ECMWF:DAT:REANALYSIS_ERA5_SINGLE_LEVELS
      providerProductType:
        - ensemble_mean
        - ensemble_members
        - reanalysis
        - ensemble_spread
      variable:
        - 10m_u_component_of_wind
        - 10m_v_component_of_wind
        - 2m_dewpoint_temperature
        - 2m_temperature
        - mean_sea_level_pressure
        - mean_wave_direction
        - mean_wave_period
        - sea_surface_temperature
        - significant_height_of_combined_wind_waves_and_swell
        - surface_pressure
        - total_precipitation
      format: grib # netcdf format may fail
      metadata_mapping:
        id: '$.productInfo.product'
        startTimeFromAscendingNode:
          - '{{"multiStringSelectValues": [{{"name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"]}}, {{"name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"]}}, {{"name": "day", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"]}}, {{"name": "time", "value": {startTimeFromAscendingNode#get_ecmwf_time}}}]}}'
          - '$.productInfo.productStartDate'
        completionTimeFromAscendingNode: '$.productInfo.productEndDate'
        providerProductType:
          - '{{"multiStringSelectValues": [{{"name": "product_type", "value": {providerProductType}}}]}}'
          - '$.null'
        variable:
          - '{{"multiStringSelectValues": [{{"name": "variable", "value": {variable}}}]}}'
          - '$.null'
        format:
          - '{{"stringChoiceValues": [{{"name": "format", "value": "{format}"}}]}}'
          - '$.null'
        geometry:
          - '{{"boundingBoxValues": [{{"name": "area", "bbox": {geometry#to_bounds}}}]}}'
          - '$.extraInformation.footprint'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
      storeDownloadUrl: True
    ERA5_SL_MONTHLY:
      productType: EO:ECMWF:DAT:REANALYSIS_ERA5_SINGLE_LEVELS_MONTHLY_MEANS
      providerProductType:
        - monthly_averaged_ensemble_members
        - monthly_averaged_ensemble_members_by_hour_of_day
        - monthly_averaged_reanalysis
        - monthly_averaged_reanalysis_by_hour_of_day
      variable:
        - 10m_u_component_of_wind
        - 10m_v_component_of_wind
        - 2m_dewpoint_temperature
        - 2m_temperature
        - mean_sea_level_pressure
        - mean_wave_direction
        - mean_wave_period
        - sea_surface_temperature
        - significant_height_of_combined_wind_waves_and_swell
        - surface_pressure
        - total_precipitation
      format: grib # netcdf format may fail
      metadata_mapping:
        id: '$.productInfo.product'
        startTimeFromAscendingNode:
          - '{{"multiStringSelectValues": [{{"name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"]}}, {{"name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"]}}, {{"name": "time", "value": {startTimeFromAscendingNode#get_ecmwf_time}}}]}}'
          - '$.productInfo.productStartDate'
        completionTimeFromAscendingNode: '$.productInfo.productEndDate'
        providerProductType:
          - '{{"multiStringSelectValues": [{{"name": "product_type", "value": {providerProductType}}}]}}'
          - '$.null'
        variable:
          - '{{"multiStringSelectValues": [{{"name": "variable", "value": {variable}}}]}}'
          - '$.null'
        format:
          - '{{"stringChoiceValues": [{{"name": "format", "value": "{format}"}}]}}'
          - '$.null'
        geometry:
          - '{{"boundingBoxValues": [{{"name": "area", "bbox": {geometry#to_bounds}}}]}}'
          - '$.extraInformation.footprint'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
      storeDownloadUrl: True
    UERRA_EUROPE_SL:
      productType: EO:ECMWF:DAT:REANALYSIS_UERRA_EUROPE_SINGLE_LEVELS
      variable: total_cloud_cover
      origin: uerra_harmonie
      format: grib # netcdf format may fail
      metadata_mapping:
        id: '$.productInfo.product'
        startTimeFromAscendingNode:
          - '{{"multiStringSelectValues": [{{"name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"]}}, {{"name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"]}}, {{"name": "day", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"]}}, {{"name": "time", "value": {startTimeFromAscendingNode#get_ecmwf_time}}}]}}'
          - '$.productInfo.productStartDate'
        completionTimeFromAscendingNode: '$.productInfo.productEndDate'
        variable:
          - '{{"stringChoiceValues": [{{"name": "variable", "value": "{variable}"}}]}}'
          - '$.null'
        origin:
          - '{{"stringChoiceValues": [{{"name": "origin", "value": "{origin}"}}]}}'
          - '$.null'
        format:
          - '{{"stringChoiceValues": [{{"name": "format", "value": "{format}"}}]}}'
          - '$.null'
        geometry:
          - '{{"boundingBoxValues": [{{"name": "area", "bbox": {geometry#to_bounds}}}]}}'
          - 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
      storeDownloadUrl: True
    SATELLITE_SEA_LEVEL_BLACK_SEA:
      productType: EO:ECMWF:DAT:SATELLITE_SEA_LEVEL_BLACK_SEA
      variable: all
      format: zip
      metadata_mapping:
        id: '$.productInfo.product'
        variable:
          - '{{ "stringChoiceValues": [ {{"name": "variable", "value": "{variable}" }} ] }}'
          - $.null
        format:
          - '{{ "stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}'
          - '$.null'
        startTimeFromAscendingNode:
          - |
            {{ "multiStringSelectValues": [
              {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }},
              {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }},
              {{ "name": "day", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] }}
            ] }}
          - $.productInfo.productStartDate
        completionTimeFromAscendingNode: $.productInfo.productEndDate
        geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
    GLACIERS_ELEVATION_AND_MASS_CHANGE:
      productType: EO:ECMWF:DAT:INSITU_GLACIERS_ELEVATION_MASS
      variable: all
      format: zip
      providerProductType:
        - elevation_change
      file_version:
        - "20200824"
      metadata_mapping:
        variable:
          - '{{ "stringChoiceValues": [ {{"name": "variable", "value": "{variable}" }} ] }}'
          - $.null
        format:
          - '{{ "stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}'
          - $.null
        providerProductType:
          - '{{ "multiStringSelectValues": [ {{"name": "product_type", "value": {providerProductType} }} ] }}'
          - $.null
        file_version:
          - '{{ "multiStringSelectValues": [ {{"name": "file_version", "value": {file_version} }} ] }}'
          - $.null
        id: $.productInfo.product
        geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
        startTimeFromAscendingNode: $.productInfo.productStartDate
        completionTimeFromAscendingNode: $.productInfo.productEndDate
      storeDownloadUrl: True
    GLACIERS_DIST_RANDOLPH:
      productType: EO:ECMWF:DAT:INSITU_GLACIERS_EXTENT
      variable: all
      format: zip
      version:
        - "6_0"
      metadata_mapping:
        variable:
          - '{{ "stringChoiceValues": [ {{"name": "variable", "value": "{variable}" }} ] }}'
          - $.null
        format:
          - '{{ "stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}'
          - $.null
        version:
          - '{{ "multiStringSelectValues": [ {{"name": "version", "value": {version} }} ] }}'
          - $.null
        id: $.productInfo.product
        geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
        startTimeFromAscendingNode: $.productInfo.productStartDate
        completionTimeFromAscendingNode: $.productInfo.productEndDate
      storeDownloadUrl: True
    FIRE_HISTORICAL:
      productType: EO:ECMWF:DAT:CEMS_FIRE_HISTORICAL
      providerProductType:
        - reanalysis
      dataset:
        - Consolidated dataset
      variable:
        - fire_danger_index
        - build_up_index
        - danger_risk
        - drought_code
        - duff_moisture_code
        - fine_fuel_moisture_code
        - fire_daily_severity_rating
        - fire_weather_index
        - initial_fire_spread_index
        - keetch_byram_drought_index
        - burning_index
        - energy_release_component
        - ignition_component
      version:
        - "4.0"
      metadata_mapping:
        providerProductType:
          - '{{ "multiStringSelectValues": [ {{"name": "product_type", "value": {providerProductType} }} ] }}'
          - $.null
        variable:
          - '{{ "multiStringSelectValues": [ {{"name": "variable", "value": {variable} }} ] }}'
          - $.null
        dataset:
          - '{{ "multiStringSelectValues": [ {{"name": "dataset", "value": {dataset} }} ] }}'
          - $.null
        version:
          - '{{ "multiStringSelectValues": [ {{"name": "version", "value": {version} }} ] }}'
          - $.null
        startTimeFromAscendingNode:
          - |
            {{ "multiStringSelectValues": [
              {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }},
              {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }},
              {{ "name": "day", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] }}
            ] }}
          - $.productInfo.productStartDate
        completionTimeFromAscendingNode: $.productInfo.productEndDate
        geometry: POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))
        id: $.productInfo.product
    GLOFAS_FORECAST:
      productType: EO:ECMWF:DAT:CEMS_GLOFAS_FORECAST
      variable:
        - river_discharge_in_the_last_24_hours
      system_version:
        - operational
      leadtime_hour:
        - "24"
        - "48"
        - "72"
        - "96"
        - "120"
        - "144"
        - "168"
        - "192"
        - "216"
        - "240"
        - "264"
        - "288"
        - "312"
        - "336"
        - "360"
        - "384"
        - "408"
        - "432"
        - "456"
        - "480"
        - "504"
        - "528"
        - "552"
        - "576"
        - "600"
        - "624"
        - "648"
        - "672"
        - "696"
        - "720"
      hydrological_model:
        - lisflood
      providerProductType:
        - control_forecast
      format: grib
      metadata_mapping:
        providerProductType:
          - '{{ "multiStringSelectValues": [ {{"name": "product_type", "value": {providerProductType} }} ] }}'
          - $.null
        variable:
          - '{{ "multiStringSelectValues": [ {{"name": "variable", "value": {variable} }} ] }}'
          - $.null
        leadtime_hour:
          - '{{ "multiStringSelectValues": [ {{"name": "leadtime_hour", "value": {leadtime_hour} }} ] }}'
          - $.null
        hydrological_model:
          - '{{ "multiStringSelectValues": [ {{"name": "hydrological_model", "value": {hydrological_model} }} ] }}'
          - $.null
        format:
          - '{{"stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}'
          - $.null
        startTimeFromAscendingNode:
          - |
            {{ "multiStringSelectValues": [
              {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }},
              {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }},
              {{ "name": "day", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] }}
            ] }}
          - $.productInfo.productStartDate
        completionTimeFromAscendingNode: $.productInfo.productEndDate
        geometry:
          - '{{ "boundingBoxValues": [ {{ "name": "area", "bbox": {geometry#to_bounds} }} ] }}'
          - $.extraInformation.footprint
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
        id: $.productInfo.product
      storeDownloadUrl: True
    GLOFAS_HISTORICAL:
      productType: EO:ECMWF:DAT:CEMS_GLOFAS_HISTORICAL
      variable:
        - river_discharge_in_the_last_24_hours
      system_version:
        - version_4_0
      hydrological_model:
        - lisflood
      providerProductType:
        - consolidated
      format: grib
      metadata_mapping:
        providerProductType:
          - '{{ "multiStringSelectValues": [ {{"name": "product_type", "value": {providerProductType} }} ] }}'
          - $.null
        variable:
          - '{{ "multiStringSelectValues": [ {{"name": "variable", "value": {variable} }} ] }}'
          - $.null
        system_version:
          - '{{ "multiStringSelectValues": [ {{"name": "system_version", "value": {system_version} }} ] }}'
          - $.null
        hydrological_model:
          - '{{ "multiStringSelectValues": [ {{"name": "hydrological_model", "value": {hydrological_model} }} ] }}'
          - $.null
        format:
          - '{{ "stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}'
          - $.null
        startTimeFromAscendingNode:
          - |
            {{ "multiStringSelectValues": [
              {{ "name": "hyear", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }},
              {{ "name": "hmonth", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }},
              {{ "name": "hday", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] }}
            ] }}
          - $.productInfo.productStartDate
        completionTimeFromAscendingNode: $.productInfo.productEndDate
        geometry:
          - '{{ "boundingBoxValues": [ {{ "name": "area", "bbox": {geometry#to_bounds} }} ] }}'
          - $.extraInformation.footprint
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
        id: $.productInfo.product
      storeDownloadUrl: True
    GLOFAS_REFORECAST:
      productType: EO:ECMWF:DAT:CEMS_GLOFAS_REFORECAST
      variable:
        - river_discharge_in_the_last_24_hours
      providerProductType:
        - control_reforecast
      leadtime_hour:
        - "24"
        - "48"
        - "72"
        - "96"
        - "120"
        - "144"
        - "168"
        - "192"
        - "216"
        - "240"
        - "264"
        - "288"
        - "312"
        - "336"
        - "360"
        - "384"
        - "408"
        - "432"
        - "456"
        - "480"
        - "504"
        - "528"
        - "552"
        - "576"
        - "600"
        - "624"
        - "648"
        - "672"
        - "696"
        - "720"
        - "744"
        - "768"
        - "792"
        - "816"
        - "840"
        - "864"
        - "888"
        - "912"
        - "936"
        - "960"
        - "984"
        - "1008"
        - "1032"
        - "1056"
        - "1080"
        - "1104"
      system_version:
        - version_3_1
      hydrological_model:
        - lisflood
      format: grib
      metadata_mapping:
        providerProductType:
          - '{{ "multiStringSelectValues": [ {{"name": "product_type", "value": {providerProductType} }} ] }}'
          - $.null
        variable:
          - '{{ "multiStringSelectValues": [ {{"name": "variable", "value": {variable} }} ] }}'
          - $.null
        leadtime_hour:
          - '{{ "multiStringSelectValues": [ {{"name": "leadtime_hour", "value": {leadtime_hour} }} ] }}'
          - $.null
        system_version:
          - '{{ "multiStringSelectValues": [ {{"name": "system_version", "value": {system_version} }} ] }}'
          - $.null
        hydrological_model:
          - '{{ "multiStringSelectValues": [ {{"name": "hydrological_model", "value": {hydrological_model} }} ] }}'
          - $.null
        format:
          - '{{ "stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}'
          - $.null
        startTimeFromAscendingNode:
          - |
            {{ "multiStringSelectValues": [
              {{ "name": "hyear", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }},
              {{ "name": "hmonth", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }},
              {{ "name": "hday", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] }}
            ] }}
          - $.productInfo.productStartDate
        completionTimeFromAscendingNode: $.productInfo.productEndDate
        geometry:
          - '{{ "boundingBoxValues": [ {{ "name": "area", "bbox": {geometry#to_bounds} }} ] }}'
          - $.extraInformation.footprint
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
        id: $.productInfo.product
      storeDownloadUrl: True
    GLOFAS_SEASONAL:
      productType: EO:ECMWF:DAT:CEMS_GLOFAS_SEASONAL
      variable:
        - river_discharge_in_the_last_24_hours
      system_version:
        - operational
      hydrological_model:
        - htessel_lisflood
      leadtime_hour:
        - "24"
        - "48"
        - "72"
        - "96"
        - "120"
        - "144"
      format: grib
      metadata_mapping:
        variable:
          - '{{ "multiStringSelectValues": [ {{"name": "variable", "value": {variable} }} ] }}'
          - $.null
        system_version:
          - '{{ "multiStringSelectValues": [ {{"name": "system_version", "value": {system_version} }} ] }}'
          - $.null
        hydrological_model:
          - '{{ "multiStringSelectValues": [ {{"name": "hydrological_model", "value": {hydrological_model} }} ] }}'
          - $.null
        leadtime_hour:
          - '{{ "multiStringSelectValues": [ {{"name": "leadtime_hour", "value": {leadtime_hour} }} ] }}'
          - $.null
        format:
          - '{{ "stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}'
          - $.null
        startTimeFromAscendingNode:
          - |
            {{ "multiStringSelectValues": [
              {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }},
              {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }}
            ] }}
          - $.productInfo.productStartDate
        completionTimeFromAscendingNode: $.productInfo.productEndDate
        geometry:
          - '{{ "boundingBoxValues": [ {{"name": "area", "bbox": {geometry#to_bounds} }} ] }}'
          - '$.extraInformation.footprint'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
        id: $.productInfo.product
      storeDownloadUrl: True
    GLOFAS_SEASONAL_REFORECAST:
      productType: EO:ECMWF:DAT:CEMS_GLOFAS_SEASONAL_REFORECAST
      variable:
        - river_discharge_in_the_last_24_hours
      system_version:
        - version_4_0
      hydrological_model:
        - lisflood
      leadtime_hour:
        - "24"
      format: grib
      metadata_mapping:
        variable:
          - '{{ "multiStringSelectValues": [ {{"name": "variable", "value": {variable} }} ] }}'
          - $.null
        system_version:
          - '{{ "multiStringSelectValues": [ {{"name": "system_version", "value": {system_version} }} ] }}'
          - $.null
        hydrological_model:
          - '{{ "multiStringSelectValues": [ {{"name": "hydrological_model", "value": {hydrological_model} }} ] }}'
          - $.null
        leadtime_hour:
          - '{{ "multiStringSelectValues": [ {{"name": "leadtime_hour", "value": {leadtime_hour} }} ] }}'
          - $.null
        format:
          - '{{"stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}'
          - $.null
        startTimeFromAscendingNode:
          - |
            {{ "multiStringSelectValues": [
              {{ "name": "hyear", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }},
              {{ "name": "hmonth", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }}
            ] }}
          - $.productInfo.productStartDate
        completionTimeFromAscendingNode: $.productInfo.productEndDate
        geometry:
          - '{{ "boundingBoxValues": [ {{ "name": "area", "bbox": {geometry#to_bounds} }} ] }}'
          - '$.extraInformation.footprint'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
        id: $.productInfo.product
      storeDownloadUrl: True
    EFAS_FORECAST:
      productType: EO:ECMWF:DAT:EFAS_FORECAST
      providerProductType:
        - control_forecast
      soil_level:
        - "1"
      leadtime_hour:
        - "0"
        - "6"
        - "12"
        - "18"
        - "24"
        - "30"
        - "36"
        - "42"
        - "48"
        - "54"
        - "60"
        - "66"
        - "72"
        - "78"
        - "84"
        - "90"
        - "96"
        - "102"
        - "108"
        - "114"
        - "120"
        - "126"
        - "132"
        - "138"
        - "144"
        - "150"
        - "156"
        - "162"
        - "168"
        - "174"
        - "180"
        - "186"
        - "192"
        - "198"
        - "204"
        - "210"
        - "216"
        - "222"
        - "228"
        - "234"
        - "240"
        - "246"
        - "252"
        - "258"
        - "264"
        - "270"
        - "276"
        - "282"
        - "288"
        - "294"
        - "300"
        - "306"
        - "312"
        - "318"
        - "324"
        - "330"
        - "336"
        - "342"
        - "348"
        - "354"
        - "360"
      originating_centre: ecmwf
      variable: volumetric_soil_moisture
      model_levels: soil_levels
      format: grib.zip
      metadata_mapping:
        providerProductType:
          - '{{ "multiStringSelectValues": [ {{"name": "product_type", "value": {providerProductType} }} ] }}'
          - $.null
        soil_level:
          - '{{ "multiStringSelectValues": [ {{"name": "soil_level", "value": {soil_level} }} ] }}'
          - $.null
        leadtime_hour:
          - '{{ "multiStringSelectValues": [ {{"name": "leadtime_hour", "value": {leadtime_hour} }} ] }}'
          - $.null
        originating_centre:
          - '{{ "stringChoiceValues": [ {{"name": "originating_centre", "value": "{originating_centre}" }} ] }}'
          - $.null
        variable:
          - '{{ "stringChoiceValues": [ {{"name": "variable", "value": "{variable}" }} ] }}'
          - $.null
        model_levels:
          - '{{ "stringChoiceValues": [ {{"name": "model_levels", "value": "{model_levels}" }} ] }}'
          - $.null
        format:
          - '{{ "stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}'
          - $.null
        startTimeFromAscendingNode:
          - |
            {{ "multiStringSelectValues": [
              {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }},
              {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }},
              {{ "name": "day", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] }},
              {{ "name": "time", "value": {startTimeFromAscendingNode#get_ecmwf_time} }}
            ] }}
          - $.productInfo.productStartDate
        completionTimeFromAscendingNode: $.productInfo.productEndDate
        geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
        id: $.productInfo.product
      storeDownloadUrl: True
    EFAS_HISTORICAL:
      productType: EO:ECMWF:DAT:EFAS_HISTORICAL
      soil_level:
        - "1"
      system_version: version_4_0
      variable: volumetric_soil_moisture
      model_levels: soil_levels
      metadata_mapping:
        soil_level:
          - '{{ "multiStringSelectValues": [ {{"name": "soil_level", "value": {soil_level} }} ] }}'
          - $.null
        system_version:
          - '{{ "stringChoiceValues": [ {{"name": "system_version", "value": "{system_version}" }} ] }}'
          - $.null
        variable:
          - '{{ "stringChoiceValues": [ {{"name": "variable", "value": "{variable}" }} ] }}'
          - $.null
        model_levels:
          - '{{ "stringChoiceValues": [ {{"name": "model_levels", "value": "{model_levels}" }} ] }}'
          - $.null
        format:
          - '{{ "stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}'
          - $.null
        startTimeFromAscendingNode:
          - |
            {{ "multiStringSelectValues": [
              {{ "name": "hyear", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }},
              {{ "name": "hmonth", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }},
              {{ "name": "hday", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] }},
              {{ "name": "time", "value": {startTimeFromAscendingNode#get_ecmwf_time} }}
            ] }}
          - $.productInfo.productStartDate
        completionTimeFromAscendingNode: $.productInfo.productEndDate
        geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
        id: $.productInfo.product
      storeDownloadUrl: True
    EFAS_REFORECAST:
      productType: EO:ECMWF:DAT:EFAS_REFORECAST
      providerProductType:
        - control_forecast
      soil_level:
        - "1"
      leadtime_hour:
        - "0"
        - "6"
        - "12"
        - "18"
        - "24"
        - "30"
        - "36"
        - "42"
        - "48"
        - "54"
        - "60"
        - "66"
        - "72"
        - "78"
        - "84"
        - "90"
        - "96"
        - "102"
        - "108"
        - "114"
        - "120"
        - "126"
        - "132"
        - "138"
        - "144"
        - "150"
        - "156"
        - "162"
        - "168"
        - "174"
        - "180"
        - "186"
        - "192"
        - "198"
      variable: volumetric_soil_moisture
      model_levels: soil_levels
      format: grib.zip
      metadata_mapping:
        providerProductType:
          - '{{ "multiStringSelectValues": [ {{"name": "product_type", "value": {providerProductType} }} ] }}'
          - $.null
        soil_level:
          - '{{ "multiStringSelectValues": [ {{"name": "soil_level", "value": {soil_level} }} ] }}'
          - $.null
        leadtime_hour:
          - '{{ "multiStringSelectValues": [ {{"name": "leadtime_hour", "value": {leadtime_hour} }} ] }}'
          - $.null
        variable:
          - '{{ "stringChoiceValues": [ {{"name": "variable", "value": "{variable}" }} ] }}'
          - $.null
        model_levels:
          - '{{ "stringChoiceValues": [ {{"name": "model_levels", "value": "{model_levels}" }} ] }}'
          - $.null
        format:
          - '{{ "stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}'
          - $.null
        startTimeFromAscendingNode:
          - |
            {{ "multiStringSelectValues": [
              {{ "name": "hyear", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }},
              {{ "name": "hmonth", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }},
              {{ "name": "hday", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] }}
            ] }}
          - $.productInfo.productStartDate
        completionTimeFromAscendingNode: $.productInfo.productEndDate
        geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
        id: $.productInfo.product
      storeDownloadUrl: True
    EFAS_SEASONAL:
      productType: EO:ECMWF:DAT:EFAS_SEASONAL
      soil_level:
        - "1"
      leadtime_hour:
        - "24"
        - "48"
        - "72"
        - "96"
        - "120"
        - "144"
        - "168"
        - "192"
      variable: volumetric_soil_moisture
      model_levels: soil_levels
      format: grib.zip
      metadata_mapping:
        soil_level:
          - '{{ "multiStringSelectValues": [ {{"name": "soil_level", "value": {soil_level} }} ] }}'
          - $.null
        leadtime_hour:
          - '{{ "multiStringSelectValues": [ {{"name": "leadtime_hour", "value": {leadtime_hour} }} ] }}'
          - $.null
        variable:
          - '{{"stringChoiceValues": [ {{"name": "variable", "value": "{variable}" }} ] }}'
          - $.null
        model_levels:
          - '{{"stringChoiceValues": [ {{"name": "model_levels", "value": "{model_levels}" }} ] }}'
          - $.null
        format:
          - '{{"stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}'
          - $.null
        startTimeFromAscendingNode:
          - |
            {{ "multiStringSelectValues": [
              {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }},
              {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }}
            ] }}
          - $.productInfo.productStartDate
        completionTimeFromAscendingNode: $.productInfo.productEndDate
        geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
        id: $.productInfo.product
      storeDownloadUrl: True
    EFAS_SEASONAL_REFORECAST:
      productType: EO:ECMWF:DAT:EFAS_SEASONAL_REFORECAST
      soil_level:
        - "1"
      leadtime_hour:
        - "24"
        - "48"
        - "72"
        - "96"
        - "120"
        - "144"
        - "168"
        - "192"
      variable: volumetric_soil_moisture
      model_levels: soil_levels
      format: grib.zip
      metadata_mapping:
        soil_level:
          - '{{ "multiStringSelectValues": [ {{"name": "soil_level", "value": {soil_level} }} ] }}'
          - $.null
        leadtime_hour:
          - '{{ "multiStringSelectValues": [ {{"name": "leadtime_hour", "value": {leadtime_hour} }} ] }}'
          - $.null
        variable:
          - '{{ "stringChoiceValues": [ {{"name": "variable", "value": "{variable}" }} ] }}'
          - $.null
        model_levels:
          - '{{ "stringChoiceValues": [ {{"name": "model_levels", "value": "{model_levels}" }} ] }}'
          - $.null
        format:
          - '{{ "stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}'
          - $.null
        startTimeFromAscendingNode:
          - |
            {{ "multiStringSelectValues": [
              {{ "name": "hyear", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }},
              {{ "name": "hmonth", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }}
            ] }}
          - $.productInfo.productStartDate
        completionTimeFromAscendingNode: $.productInfo.productEndDate
        geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
        id: $.productInfo.product
      storeDownloadUrl: True
    SATELLITE_CARBON_DIOXIDE:
      productType: EO:ECMWF:DAT:SATELLITE_CARBON_DIOXIDE
      processing_level:
        - level_2
      version:
        - "4.0"
      variable: xco2
      sensor_and_algorithm: sciamachy_wfmd
      format: zip
      metadata_mapping:
        processing_level:
          - '{{ "multiStringSelectValues": [ {{"name": "processing_level", "value": {processing_level} }} ] }}'
          - $.null
        version:
          - '{{ "multiStringSelectValues": [ {{"name": "version", "value": {version} }} ] }}'
          - $.null
        variable:
          - '{{ "stringChoiceValues": [ {{"name": "variable", "value": "{variable}" }} ] }}'
          - $.null
        sensor_and_algorithm:
          - '{{ "stringChoiceValues": [ {{"name": "sensor_and_algorithm", "value": "{sensor_and_algorithm}" }} ] }}'
          - $.null
        format:
          - '{{ "stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}'
          - $.null
        startTimeFromAscendingNode:
          - |
            {{ "multiStringSelectValues": [
              {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }},
              {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }},
               {{ "name": "day", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] }}
            ] }}
          - $.productInfo.productStartDate
        completionTimeFromAscendingNode: $.productInfo.productEndDate
        geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
        id: $.productInfo.product
      storeDownloadUrl: True
    SATELLITE_METHANE:
      productType: EO:ECMWF:DAT:SATELLITE_METHANE
      processing_level:
        - level_2
      version:
        - "4.0"
      variable: xch4
      sensor_and_algorithm: sciamachy_wfmd
      format: zip
      metadata_mapping:
        processing_level:
          - '{{ "multiStringSelectValues": [ {{"name": "processing_level", "value": {processing_level} }} ] }}'
          - $.null
        version:
          - '{{ "multiStringSelectValues": [ {{"name": "version", "value": {version} }} ] }}'
          - $.null
        variable:
          - '{{ "stringChoiceValues": [ {{"name": "variable", "value": "{variable}" }} ] }}'
          - $.null
        sensor_and_algorithm:
          - '{{ "stringChoiceValues": [ {{"name": "sensor_and_algorithm", "value": "{sensor_and_algorithm}" }} ] }}'
          - $.null
        format:
          - '{{ "stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}'
          - $.null
        startTimeFromAscendingNode:
          - |
            {{ "multiStringSelectValues": [
              {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }},
              {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }},
               {{ "name": "day", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] }}
            ] }}
          - $.productInfo.productStartDate
        completionTimeFromAscendingNode: $.productInfo.productEndDate
        geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
        id: $.productInfo.product
      storeDownloadUrl: True
    SEASONAL_POSTPROCESSED_PL:
      productType: EO:ECMWF:DAT:SEASONAL_POSTPROCESSED_PRESSURE_LEVELS
      providerProductType:
        - ensemble_mean
      variable:
        - geopotential_anomaly
        - specific_humidity_anomaly
        - temperature_anomaly
        - u_component_of_wind_anomaly
        - v_component_of_wind_anomaly
      pressure_level:
        - "10"
        - "30"
        - "50"
        - "100"
        - "200"
        - "300"
        - "400"
        - "500"
        - "700"
        - "850"
        - "925"
        - "1000"
      leadtime_month:
        - "1"
      originating_centre: ecmwf
      system: "5"
      format: grib
      metadata_mapping:
        providerProductType:
          - '{{ "multiStringSelectValues": [ {{"name": "product_type", "value": {providerProductType} }} ] }}'
          - $.null
        variable:
          - '{{ "multiStringSelectValues": [ {{"name": "variable", "value": {variable} }} ] }}'
          - $.null
        pressure_level:
          - '{{ "multiStringSelectValues": [ {{"name": "pressure_level", "value": {pressure_level} }} ] }}'
          - $.null
        leadtime_month:
          - '{{ "multiStringSelectValues": [ {{"name": "leadtime_month", "value": {leadtime_month} }} ] }}'
          - $.null
        originating_centre:
          - '{{"stringChoiceValues": [ {{"name": "originating_centre", "value": "{originating_centre}" }} ] }}'
          - $.null
        system:
          - '{{"stringChoiceValues": [ {{"name": "system", "value": "{system}" }} ] }}'
          - $.null
        format:
          - '{{"stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}'
          - $.null
        startTimeFromAscendingNode:
          - |
            {{ "multiStringSelectValues": [
              {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }},
              {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }}
            ] }}
          - $.productInfo.productStartDate
        completionTimeFromAscendingNode: $.productInfo.productEndDate
        geometry:
          - '{{ "boundingBoxValues": [ {{ "name": "area", "bbox": {geometry#to_bounds} }} ] }}'
          - '$.extraInformation.footprint'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
        id: $.productInfo.product
      storeDownloadUrl: True
    SEASONAL_POSTPROCESSED_SL:
      productType: EO:ECMWF:DAT:SEASONAL_POSTPROCESSED_SINGLE_LEVELS
      providerProductType:
        - ensemble_mean
      variable:
        - 10m_u_component_of_wind_anomaly
        - 10m_v_component_of_wind_anomaly
        - 10m_wind_gust_anomaly
        - 10m_wind_speed_anomaly
      leadtime_month:
        - "1"
      originating_centre: ecmwf
      system: "51"
      format: grib
      metadata_mapping:
        providerProductType:
          - '{{ "multiStringSelectValues": [ {{"name": "product_type", "value": {providerProductType} }} ] }}'
          - $.null
        variable:
          - '{{ "multiStringSelectValues": [ {{"name": "variable", "value": {variable} }} ] }}'
          - $.null
        leadtime_month:
          - '{{ "multiStringSelectValues": [ {{"name": "leadtime_month", "value": {leadtime_month} }} ] }}'
          - $.null
        originating_centre:
          - '{{"stringChoiceValues": [ {{"name": "originating_centre", "value": "{originating_centre}" }} ] }}'
          - $.null
        system:
          - '{{"stringChoiceValues": [ {{"name": "system", "value": "{system}" }} ] }}'
          - $.null
        format:
          - '{{"stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}'
          - $.null
        startTimeFromAscendingNode:
          - |
            {{ "multiStringSelectValues": [
              {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }},
              {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }}
            ] }}
          - $.productInfo.productStartDate
        completionTimeFromAscendingNode: $.productInfo.productEndDate
        geometry:
          - '{{ "boundingBoxValues": [ {{ "name": "area", "bbox": {geometry#to_bounds} }} ] }}'
          - '$.extraInformation.footprint'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
        id: $.productInfo.product
      storeDownloadUrl: True
    SEASONAL_ORIGINAL_SL:
      productType: EO:ECMWF:DAT:SEASONAL_ORIGINAL_SINGLE_LEVELS
      variable:
        - 10m_u_component_of_wind
        - 10m_v_component_of_wind
        - 10m_wind_gust_since_previous_post_processing
      leadtime_hour:
        - "0"
        - "6"
        - "12"
        - "18"
        - "24"
        - "30"
        - "36"
        - "42"
        - "48"
        - "54"
        - "60"
        - "66"
        - "72"
        - "78"
        - "84"
        - "90"
        - "96"
        - "102"
        - "108"
        - "114"
        - "120"
        - "126"
        - "132"
        - "138"
        - "144"
        - "150"
        - "156"
        - "162"
        - "168"
        - "174"
        - "180"
        - "186"
        - "192"
        - "198"
      originating_centre: ecmwf
      system: "51"
      format: grib
      metadata_mapping:
        providerProductType:
          - '{{ "multiStringSelectValues": [ {{"name": "product_type", "value": {providerProductType} }} ] }}'
          - $.null
        variable:
          - '{{ "multiStringSelectValues": [ {{"name": "variable", "value": {variable} }} ] }}'
          - $.null
        leadtime_hour:
          - '{{ "multiStringSelectValues": [ {{"name": "leadtime_hour", "value": {leadtime_hour} }} ] }}'
          - $.null
        originating_centre:
          - '{{"stringChoiceValues": [ {{"name": "originating_centre", "value": "{originating_centre}" }} ] }}'
          - $.null
        system:
          - '{{"stringChoiceValues": [ {{"name": "system", "value": "{system}" }} ] }}'
          - $.null
        format:
          - '{{"stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}'
          - $.null
        startTimeFromAscendingNode:
          - |
            {{ "multiStringSelectValues": [
              {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }},
              {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }},
              {{ "name": "day", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] }}
            ] }}
          - $.productInfo.productStartDate
        completionTimeFromAscendingNode: $.productInfo.productEndDate
        geometry:
          - '{{ "boundingBoxValues": [ {{ "name": "area", "bbox": {geometry#to_bounds} }} ] }}'
          - '$.extraInformation.footprint'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
        id: $.productInfo.product
      storeDownloadUrl: True
    SEASONAL_ORIGINAL_PL:
      productType: EO:ECMWF:DAT:SEASONAL_ORIGINAL_PRESSURE_LEVELS
      variable:
        - geopotential
        - temperature
      pressure_level:
        - "10"
        - "30"
        - "50"
        - "100"
        - "200"
        - "300"
        - "400"
        - "500"
        - "700"
        - "850"
        - "925"
        - "1000"
      leadtime_hour:
        - "12"
        - "24"
        - "36"
        - "48"
        - "60"
        - "72"
        - "84"
        - "96"
        - "108"
        - "120"
        - "132"
        - "144"
        - "156"
        - "168"
        - "180"
        - "192"
      originating_centre: ecmwf
      system: "51"
      format: grib
      metadata_mapping:
        variable:
          - '{{ "multiStringSelectValues": [ {{"name": "variable", "value": {variable} }} ] }}'
          - $.null
        pressure_level:
          - '{{ "multiStringSelectValues": [ {{"name": "pressure_level", "value": {pressure_level} }} ] }}'
          - $.null
        leadtime_hour:
          - '{{ "multiStringSelectValues": [ {{"name": "leadtime_hour", "value": {leadtime_hour} }} ] }}'
          - $.null
        originating_centre:
          - '{{"stringChoiceValues": [ {{"name": "originating_centre", "value": "{originating_centre}" }} ] }}'
          - $.null
        system:
          - '{{"stringChoiceValues": [ {{"name": "system", "value": "{system}" }} ] }}'
          - $.null
        format:
          - '{{"stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}'
          - $.null
        startTimeFromAscendingNode:
          - |
            {{ "multiStringSelectValues": [
              {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }},
              {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }},
              {{ "name": "day", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] }}
            ] }}
          - $.productInfo.productStartDate
        completionTimeFromAscendingNode: $.productInfo.productEndDate
        geometry:
          - '{{ "boundingBoxValues": [ {{ "name": "area", "bbox": {geometry#to_bounds} }} ] }}'
          - '$.extraInformation.footprint'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
        id: $.productInfo.product
      storeDownloadUrl: True
    SEASONAL_MONTHLY_PL:
      productType: EO:ECMWF:DAT:SEASONAL_MONTHLY_PRESSURE_LEVELS
      variable:
        - geopotential
        - temperature
      providerProductType:
        - ensemble_mean
      leadtime_month:
        - "1"
      pressure_level:
        - "10"
        - "30"
        - "50"
        - "100"
        - "200"
        - "300"
        - "400"
        - "500"
        - "700"
        - "850"
        - "925"
        - "1000"
      originating_centre: ecmwf
      system: "51"
      format: grib
      metadata_mapping:
        variable:
          - '{{ "multiStringSelectValues": [ {{"name": "variable", "value": {variable} }} ] }}'
          - $.null
        providerProductType:
          - '{{ "multiStringSelectValues": [ {{"name": "product_type", "value": {providerProductType} }} ] }}'
          - $.null
        leadtime_month:
          - '{{ "multiStringSelectValues": [ {{"name": "leadtime_month", "value": {leadtime_month} }} ] }}'
          - $.null
        pressure_level:
          - '{{ "multiStringSelectValues": [ {{"name": "pressure_level", "value": {pressure_level} }} ] }}'
          - $.null
        originating_centre:
          - '{{"stringChoiceValues": [ {{"name": "originating_centre", "value": "{originating_centre}" }} ] }}'
          - $.null
        system:
          - '{{"stringChoiceValues": [ {{"name": "system", "value": "{system}" }} ] }}'
          - $.null
        format:
          - '{{"stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}'
          - $.null
        startTimeFromAscendingNode:
          - |
            {{ "multiStringSelectValues": [
              {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }},
              {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }}
            ] }}
          - $.productInfo.productStartDate
        completionTimeFromAscendingNode: $.productInfo.productEndDate
        geometry:
          - '{{ "boundingBoxValues": [ {{ "name": "area", "bbox": {geometry#to_bounds} }} ] }}'
          - '$.extraInformation.footprint'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
        id: $.productInfo.product
      storeDownloadUrl: True
    SEASONAL_MONTHLY_SL:
      productType: EO:ECMWF:DAT:SEASONAL_MONTHLY_SINGLE_LEVELS
      variable:
        - 10m_u_component_of_wind
        - 10m_wind_gust_since_previous_post_processing
        - 10m_v_component_of_wind
      providerProductType:
        - ensemble_mean
      leadtime_month:
        - "1"
      originating_centre: ecmwf
      system: "51"
      format: grib
      metadata_mapping:
        variable:
          - '{{ "multiStringSelectValues": [ {{"name": "variable", "value": {variable} }} ] }}'
          - $.null
        providerProductType:
          - '{{ "multiStringSelectValues": [ {{"name": "product_type", "value": {providerProductType} }} ] }}'
          - $.null
        leadtime_month:
          - '{{ "multiStringSelectValues": [ {{"name": "leadtime_month", "value": {leadtime_month} }} ] }}'
          - $.null
        originating_centre:
          - '{{"stringChoiceValues": [ {{"name": "originating_centre", "value": "{originating_centre}" }} ] }}'
          - $.null
        system:
          - '{{"stringChoiceValues": [ {{"name": "system", "value": "{system}" }} ] }}'
          - $.null
        format:
          - '{{"stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}'
          - $.null
        startTimeFromAscendingNode:
          - |
            {{ "multiStringSelectValues": [
              {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }},
              {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }}
            ] }}
          - $.productInfo.productStartDate
        completionTimeFromAscendingNode: $.productInfo.productEndDate
        geometry:
          - '{{ "boundingBoxValues": [ {{ "name": "area", "bbox": {geometry#to_bounds} }} ] }}'
          - '$.extraInformation.footprint'
        defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
        id: $.productInfo.product
      storeDownloadUrl: True
    SIS_HYDRO_MET_PROJ:
      productType: EO:ECMWF:DAT:SIS_HYDROLOGY_METEOROLOGY_DERIVED_PROJECTIONS
      period:
        - "1974"
      ensemble_member:
        - r12i1p1
      experiment:
        - historical
      time_aggregation:
        - daily
      variable:
        - 2m_air_temperature
      providerProductType: essential_climate_variables
      processing_type: bias_corrected
      variable_type: absolute_values
      horizontal_resolution: 5_km
      rcm: cclm4_8_17
      gcm: ec_earth
      format: zip
      metadata_mapping:
        period:
          - '{{ "multiStringSelectValues": [ {{"name": "period", "value": {period} }} ] }}'
          - $.null
        ensemble_member:
          - '{{"multiStringSelectValues": [ {{"name": "ensemble_member", "value": {ensemble_member} }} ] }}'
          - $.null
        experiment:
          - '{{"multiStringSelectValues": [ {{"name": "experiment", "value": {experiment} }} ] }}'
          - $.null
        time_aggregation:
          - '{{ "multiStringSelectValues": [ {{"name": "time_aggregation", "value": {time_aggregation} }} ] }}'
          - $.null
        variable:
          - '{{ "multiStringSelectValues": [ {{"name": "variable", "value": {variable} }} ] }}'
          - $.null
        providerProductType:
          - '{{"stringChoiceValues": [ {{"name": "product_type", "value": "{providerProductType}" }} ] }}'
          - $.null
        processing_type:
          - '{{"stringChoiceValues": [ {{"name": "processing_type", "value": "{processing_type}" }} ] }}'
          - $.null
        variable_type:
          - '{{"stringChoiceValues": [ {{"name": "variable_type", "value": "{variable_type}" }} ] }}'
          - $.null
        horizontal_resolution:
          - '{{"stringChoiceValues": [ {{"name": "horizontal_resolution", "value": "{horizontal_resolution}" }} ] }}'
          - $.null
        rcm:
          - '{{"stringChoiceValues": [ {{"name": "rcm", "value": "{rcm}" }} ] }}'
          - $.null
        gcm:
          - '{{"stringChoiceValues": [ {{"name": "gcm", "value": "{gcm}" }} ] }}'
          - $.null
        format:
          - '{{"stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}'
          - $.null
        startTimeFromAscendingNode: $.productInfo.productStartDate
        completionTimeFromAscendingNode: $.productInfo.productEndDate
        geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))'
        id: $.productInfo.product
      storeDownloadUrl: True

  download: !plugin
    type: HTTPDownload
    base_uri: https://wekeo-broker.prod.wekeo2.eu/databroker
    flatten_top_dirs: true
    auth_error_code: 401
    order_enabled: true
    order_method: 'POST'
    order_on_response:
      metadata_mapping:
        order_id: '$.orderId'
        orderStatusLink: 'https://wekeo-broker.prod.wekeo2.eu/databroker/dataorder/status/{order_id}'
        downloadLink: 'https://wekeo-broker.prod.wekeo2.eu/databroker/dataorder/download/{order_id}'
    order_status_method: 'GET'
    order_status_success:
      status: completed
      message: "Done!"

---
!provider
  name: creodias_s3
  priority: 0
  description: CloudFerro DIAS data through S3 protocol
  roles:
    - host
  url: https://creodias.eu/
  search: !plugin
    type: CreodiasS3Search
    api_endpoint: 'http://datahub.creodias.eu/resto/api/collections/{collection}/search.json'
    s3_endpoint: 'https://eodata.cloudferro.com'
    need_auth: true
    timeout: 60
    pagination:
      next_page_url_tpl: '{url}?{search}&maxRecords={items_per_page}&page={page}&exactCount=1'
      total_items_nb_key_path: '$.properties.totalResults'
      max_items_per_page: 1_000
    discover_metadata:
      auto_discovery: true
      metadata_pattern: '^(?!collection)[a-zA-Z0-9]+$'
      search_param: '{metadata}={{{metadata}}}'
      metadata_path: '$.properties.*'
    discover_product_types:
      fetch_url: https://finder.creodias.eu/attributes.json
      result_type: json
      results_entry: 'collections[?billing=="free"]'
      generic_product_type_id: '$.id'
      generic_product_type_parsable_properties:
        collection: '$.id'
      generic_product_type_parsable_metadata:
        abstract: '$.description'
        instrument: '{$.summaries.instruments#csv_list}'
        platform: '{$.summaries.constellation#csv_list}'
        platformSerialIdentifier: '{$.summaries.platform#csv_list}'
        processingLevel: '$.summaries."processing:level"'
        keywords: '{$.keywords#csv_list}'
        license: '$.license'
        title: '$.title'
        missionStartDate: '$.extent.temporal.interval[0][0]'
    metadata_mapping:
      uid: '$.id'
      productType:
        - productType
        - '$.properties.productType'
      platform: '$.properties.collection'
      platformSerialIdentifier:
        - platform
        - '$.properties.platform'
      instrument:
        - instrument
        - '$.properties.instrument'
      processingLevel:
        - processingLevel
        - '$.properties.processingLevel'
      # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4)
      title: '{$.properties.title#remove_extension}'
      topicCategory: '$.properties.topicCategory'
      keyword: '$.properties.keywords'
      abstract: '$.properties.description'
      resolution:
        - 'resolution'
        - '$.properties.resolution'
      organisationName:
        - 'organisationName'
        - '$.properties.organisationName'
      publicationDate: '$.properties.published'
      accessConstraint: '$.properties.license'

      # OpenSearch Parameters for Product Search (Table 5)
      parentIdentifier:
        - 'parentIdentifier'
        - '$.properties.parentIdentifier'
      acquisitionType: '$.properties.acquisitionType'
      orbitNumber:
        - 'orbitNumber'
        - '$.properties.orbitNumber'
      orbitDirection:
        - 'orbitDirection'
        - '$.properties.orbitDirection'
      swathIdentifier:
        - 'swath'
        - '$.properties.swath'
      cloudCover:
        - 'cloudCover=[0,{cloudCover}]'
        - '$.properties.cloudCover'
      snowCover:
        - 'snowCover=[0,{snowCover}]'
        - '$.properties.snowCover'
      productVersion: '$.properties.version'
      productQualityStatus: '$.properties.onlineQualityCheck'
      processorName: '$.properties.processingName'
      processingCenter: '$.properties.processingCenter'
      creationDate: '$.properties.dhusIngestDate'
      modificationDate: '$.properties.updated'
      sensorMode:
        - 'sensorMode'
        - '$.properties.sensorMode'
      # OpenSearch Parameters for Acquistion Parameters Search (Table 6)
      startTimeFromAscendingNode:
        - startDate
        - '$.properties.startDate'
      completionTimeFromAscendingNode:
        - completionDate
        - '$.properties.completionDate'
      polarizationMode:
        - 'polarisation'
        - '$.properties.polarisation'

      # Custom parameters (not defined in the base document referenced above)
      id:
        - 'productIdentifier=%{id#remove_extension}%'
        - '{$.properties.title#remove_extension}'
      tileIdentifier:
        - tileId
        - '$.null'
      # The geographic extent of the product
      geometry:
        - 'geometry={geometry#to_rounded_wkt}'
        # - '$.geometry'
        - '($.geometry.`str()`.`sub(/^\\[\\]$/, POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90)))`)|($.geometry[*])'
      # The url of the quicklook
      quicklook: '$.properties.thumbnail'
      # The url to download the product "as is" (literal or as a template to be completed either after the search result
      # is obtained from the provider or during the eodag download phase)
      downloadLink: 'https://zipper.creodias.eu/download/{uid}'
      # storageStatus must be one of ONLINE, STAGING, OFFLINE
      storageStatus: '$.properties.status'

      # Additional metadata provided by the providers but that don't appear in the reference spec
      thumbnail: '$.properties.thumbnail'
  download: !plugin
    type: CreodiasS3Download
    flatten_top_dirs: True
    base_uri: 'https://eodata.cloudferro.com'
    s3_bucket: 'eodata'
  auth: !plugin
    type: AwsAuth
    auth_error_code: 403
  products:
    # S1
    S1_SAR_RAW:
      productType: RAW
      collection: Sentinel1
      metadata_mapping:
        cloudCover: '$.null'
    S1_SAR_GRD:
      productType: GRD
      collection: Sentinel1
      metadata_mapping:
        cloudCover: '$.null'
    S1_SAR_SLC:
      productType: SLC
      collection: Sentinel1
      metadata_mapping:
        cloudCover: '$.null'
    S1_SAR_OCN:
      productType: OCN
      collection: Sentinel1
      metadata_mapping:
        cloudCover: '$.null'
    # S2
    S2_MSI_L1C:
      collection: SENTINEL-2
      productType: S2MSI1C
      prefixes_delimiter: ".jp2"
    S2_MSI_L2A:
      collection: SENTINEL-2
      productType: S2MSI2A
    # S3 SRAL
    S3_SRA:
      productType: SRA
      collection: Sentinel3
      metadata_mapping:
        cloudCover: '$.null'
    S3_SRA_A:
      productType: SRA_A
      collection: Sentinel3
      metadata_mapping:
        cloudCover: '$.null'
    S3_SRA_BS:
      productType: SRA_BS
      collection: Sentinel3
      metadata_mapping:
        cloudCover: '$.null'
    S3_LAN:
      productType: LAN
      collection: Sentinel3
      metadata_mapping:
        cloudCover: '$.null'
    S3_WAT:
      productType: WAT
      collection: Sentinel3
      metadata_mapping:
        cloudCover: '$.null'
    # S3 OLCI
    S3_EFR:
      productType: EFR
      collection: Sentinel3
    S3_ERR:
      productType: ERR
      collection: Sentinel3
    S3_OLCI_L2LRR:
      productType: LRR
      collection: Sentinel3
    S3_OLCI_L2LFR:
      productType: LFR
      collection: Sentinel3
    S3_OLCI_L2WRR:
      productType: WRR
      collection: Sentinel3
    S3_OLCI_L2WFR:
      productType: WFR
      collection: Sentinel3
    # S3 SLSTR
    S3_SLSTR_L1RBT:
      productType: RBT
      collection: Sentinel3
    S3_SLSTR_L2LST:
      productType: LST
      collection: Sentinel3
    S3_SLSTR_L2WST:
      productType: WST
      collection: Sentinel3
    S3_SLSTR_L2AOD:
      productType: AOD___
      collection: Sentinel3
    S3_SLSTR_L2FRP:
      productType: FRP___
      collection: Sentinel3
    # S3 SY
    S3_SY_AOD:
      productType: SY_2_AOD___
      collection: Sentinel3
    S3_SY_SYN:
      productType: SY_2_SYN___
      collection: Sentinel3
    S3_SY_V10:
      productType: SY_2_V10___
      collection: Sentinel3
    S3_SY_VG1:
      productType: SY_2_VG1___
      collection: Sentinel3
    S3_SY_VGP:
      productType: SY_2_VGP___
      collection: Sentinel3
    # S5P L1
    S5P_L1B_IR_SIR:
      productType: L1B_IR_SIR
      collection: Sentinel5P
    S5P_L1B_IR_UVN:
      productType: L1B_IR_UVN
      collection: Sentinel5P
    S5P_L1B_RA_BD1:
      productType: L1B_RA_BD1
      collection: Sentinel5P
    S5P_L1B_RA_BD2:
      productType: L1B_RA_BD2
      collection: Sentinel5P
    S5P_L1B_RA_BD3:
      productType: L1B_RA_BD3
      collection: Sentinel5P
    S5P_L1B_RA_BD4:
      productType: L1B_RA_BD4
      collection: Sentinel5P
    S5P_L1B_RA_BD5:
      productType: L1B_RA_BD5
      collection: Sentinel5P
    S5P_L1B_RA_BD6:
      productType: L1B_RA_BD6
      collection: Sentinel5P
    S5P_L1B_RA_BD7:
      productType: L1B_RA_BD7
      collection: Sentinel5P
    S5P_L1B_RA_BD8:
      productType: L1B_RA_BD8
      collection: Sentinel5P
    # S5P L2
    S5P_L2_NO2:
      productType: L2__NO2___
      collection: Sentinel5P
    S5P_L2_CLOUD:
      productType: L2__CLOUD_
      collection: Sentinel5P
    S5P_L2_O3:
      productType: L2__O3____
      collection: Sentinel5P
    S5P_L2_CO:
      productType: L2__CO____
      collection: Sentinel5P
    S5P_L2_AER_AI:
      productType: L2__AER_AI
      collection: Sentinel5P
    S5P_L2_O3_PR:
      productType: L2__O3__PR
      collection: Sentinel5P
    S5P_L2_O3_TCL:
      productType: L2__O3_TCL
      collection: Sentinel5P
    S5P_L2_AER_LH:
      productType: L2__AER_LH
      collection: Sentinel5P
    S5P_L2_HCHO:
      productType: L2__HCHO__
      collection: Sentinel5P
    S5P_L2_CH4:
      productType: L2__CH4___
      collection: Sentinel5P
    S5P_L2_NP_BD3:
      productType: L2__NP_BD3
      collection: Sentinel5P
    S5P_L2_NP_BD6:
      productType: L2__NP_BD6
      collection: Sentinel5P
    S5P_L2_NP_BD7:
      productType: L2__NP_BD7
      collection: Sentinel5P
    S5P_L2_SO2:
      productType: L2__SO2___
      collection: Sentinel5P
    # COP DEM
    COP_DEM_GLO30_DGED:
      productType: DGE_30
      collection: CopDem
      metadata_mapping:
        cloudCover: '$.null'
    COP_DEM_GLO30_DTED:
      productType: DTE_30
      collection: CopDem
      metadata_mapping:
        cloudCover: '$.null'
    COP_DEM_GLO90_DGED:
      productType: DGE_90
      collection: CopDem
      metadata_mapping:
        cloudCover: '$.null'
    COP_DEM_GLO90_DTED:
      productType: DTE_90
      collection: CopDem
      metadata_mapping:
        cloudCover: '$.null'
    GENERIC_PRODUCT_TYPE:
      productType: '{productType}'
      collection: '{collection}'

Parameters mapping#

EODAG maps each provider’s specific metadata parameters to a common model using OGC OpenSearch Extension for Earth Observation. Extra parameters having no equivalent in this model are mapped as is.

Depending on the provider, some parameters are queryable or not. This is configured in providers.yml:

  • If a parameter metadata-mapping is a list, the first element will help constructing the query (using format()), and the 2nd will help extracting its values from the query result (using jsonpath)

  • If a parameter metadata-mapping is a string, it will not be queryable and this string will help extracting its values from the query result (using jsonpath).

some_provider:
   search:
      metadata_mapping:
         queryableParameter:
            - 'this_is_query_string={queryableParameter}'
            - '$.jsonpath.in.result.to.parameter'
         nonQueryableParameter: '$.jsonpath.in.result.to.another_parameter'

The following tables list the parameters supported by providers, and if they are queryable or not.

OpenSearch parameters (CSV)#

parameter

astraea_eod

cop_ads

cop_cds

cop_dataspace

creodias

earth_search

earth_search_cog

earth_search_gcs

ecmwf

onda

peps

planetary_computer

sara

theia

usgs_satapi_aws

abstract

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

accessConstraint

metadata only

metadata only

metadata only

metadata only

acquisitionStation

metadata only

queryable metadata

queryable metadata

queryable metadata

queryable metadata

metadata only

queryable metadata

acquisitionSubType

metadata only

queryable metadata

queryable metadata

queryable metadata

queryable metadata

metadata only

queryable metadata

acquisitionType

metadata only

metadata only

metadata only

antennaLookDirection

metadata only

archivingCenter

metadata only

availabilityTime

metadata only

queryable metadata

queryable metadata

queryable metadata

queryable metadata

metadata only

queryable metadata

cloudCover

metadata only

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

completionTimeFromAscendingNode

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

creationDate

metadata only

metadata only

queryable metadata

queryable metadata

queryable metadata

metadata only

metadata only

queryable metadata

metadata only

metadata only

queryable metadata

doi

metadata only

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

dopplerFrequency

metadata only

queryable metadata

queryable metadata

queryable metadata

queryable metadata

metadata only

queryable metadata

illuminationAzimuthAngle

metadata only

queryable metadata

queryable metadata

queryable metadata

queryable metadata

metadata only

queryable metadata

illuminationElevationAngle

metadata only

queryable metadata

queryable metadata

queryable metadata

queryable metadata

metadata only

queryable metadata

illuminationZenithAngle

metadata only

incidenceAngleVariation

metadata only

instrument

metadata only

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

keyword

metadata only

metadata only

metadata only

metadata only

lineage

queryable metadata

maximumIncidenceAngle

metadata only

minimumIncidenceAngle

metadata only

modificationDate

metadata only

metadata only

metadata only

queryable metadata

queryable metadata

queryable metadata

metadata only

queryable metadata

metadata only

metadata only

queryable metadata

orbitDirection

metadata only

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

orbitNumber

metadata only

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

metadata only

queryable metadata

organisationName

queryable metadata

queryable metadata

queryable metadata

queryable metadata

metadata only

parentIdentifier

queryable metadata

queryable metadata

queryable metadata

metadata only

platform

metadata only

metadata only

metadata only

queryable metadata

queryable metadata

queryable metadata

queryable metadata

metadata only

queryable metadata

metadata only

queryable metadata

queryable metadata

platformSerialIdentifier

metadata only

queryable metadata

queryable metadata

queryable metadata

metadata only

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

processingCenter

metadata only

metadata only

metadata only

processingDate

metadata only

metadata only

processingLevel

metadata only

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

processingMode

metadata only

processorName

metadata only

metadata only

metadata only

productQualityStatus

metadata only

queryable metadata

metadata only

metadata only

productType

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

productVersion

metadata only

metadata only

queryable metadata

queryable metadata

queryable metadata

queryable metadata

metadata only

queryable metadata

metadata only

metadata only

queryable metadata

publicationDate

metadata only

metadata only

metadata only

queryable metadata

queryable metadata

queryable metadata

metadata only

queryable metadata

metadata only

metadata only

queryable metadata

resolution

metadata only

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

metadata only

queryable metadata

sensorMode

metadata only

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

metadata only

queryable metadata

sensorType

queryable metadata

snowCover

queryable metadata

queryable metadata

queryable metadata

metadata only

startTimeFromAscendingNode

metadata only

queryable metadata

queryable metadata

metadata only

metadata only

metadata only

queryable metadata

queryable metadata

metadata only

queryable metadata

queryable metadata

metadata only

swathIdentifier

queryable metadata

queryable metadata

queryable metadata

title

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

topicCategory

metadata only

queryable metadata

metadata only

metadata only

Provider/eodag specific parameters (CSV)#

parameter

astraea_eod

cop_ads

cop_cds

cop_dataspace

creodias

earth_search

earth_search_cog

earth_search_gcs

ecmwf

onda

peps

planetary_computer

sara

theia

usgs_satapi_aws

assets

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

awsProductId

metadata only

downloadLink

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

geometry

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

gridSquare

queryable metadata

id

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

metadata only

queryable metadata

latitudeBand

queryable metadata

orderLink

metadata only

polarizationChannels

metadata only

queryable metadata

queryable metadata

queryable metadata

queryable metadata

metadata only

queryable metadata

metadata only

queryable metadata

polarizationMode

queryable metadata

metadata only

queryable metadata

queryable metadata

metadata only

quicklook

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

storageStatus

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

thumbnail

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

tileIdentifier

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

queryable metadata

uid

metadata only

metadata only

metadata only

metadata only

metadata only

metadata only

utmZone

queryable metadata