Repository: CS-SI/eodag
Pull request #1171 (2024-05-29 08:38:41)

fix: correct external stac collection id reference
### Description
This PR implements a quick fix for the PR #1008.
When looking for the external stac collection, the legacy `_id` was prioritized over the `ID` which is used when aliasing is used of a given collection.


github-actions[bot]: ## Test Results
    4 files  ±0      4 suites  ±0   5m 26s :stopwatch: +2s
  539 tests ±0    536 :white_check_mark: ±0   3 :zzz: ±0  0 :x: ±0 
2 156 runs  ±0  2 058 :white_check_mark: ±0  98 :zzz: ±0  0 :x: ±0 

Results for commit ebdcd74d. ± Comparison against base commit 06c4678d.

[test-results]:data:application/gzip;base64,H4sIAIvqVmYC/03MSQ7DIAyF4atErLsgBpzQy1RMkVAzVAyrqncvpAnN8v8svzeZ/OwiuXf81pGYfWphc1DJb2tJBlignFI9CibPesRszE74p6d/1Z8Gk/JzAdrAhbCFQ0Je6yb0Ao86N4GKsdFvUza4bO59nTTbsvhUgjhtjR24HTmCQycUcC0nlD04BZRxtOOgeqvJ5ws/9j18CAEAAA==


Patch:
diff --git a/eodag/plugins/search/creodias_s3.py b/eodag/plugins/search/creodias_s3.py
index e38ae49e..74b66f09 100644
--- a/eodag/plugins/search/creodias_s3.py
+++ b/eodag/plugins/search/creodias_s3.py
@@ -26,7 +26,7 @@ from botocore.exceptions import BotoCoreError
 from eodag.api.product import AssetsDict, EOProduct  # type: ignore
 from eodag.config import PluginConfig
 from eodag.plugins.authentication.aws_auth import AwsAuth
-from eodag.plugins.search.qssearch import QueryStringSearch
+from eodag.plugins.search.qssearch import ODataV4Search
 from eodag.utils import guess_file_type
 from eodag.utils.exceptions import AuthenticationError, MisconfiguredError, RequestError
 
@@ -110,7 +110,7 @@ def _update_assets(product: EOProduct, config: PluginConfig, auth: AwsAuth):
             raise RequestError(f"assets for product {prefix} could not be found") from e
 
 
-class CreodiasS3Search(QueryStringSearch):
+class CreodiasS3Search(ODataV4Search):
     """
     Search on creodias and adapt results to s3
     """
diff --git a/eodag/resources/providers.yml b/eodag/resources/providers.yml
index 92ee1a5a..e3b26194 100644
--- a/eodag/resources/providers.yml
+++ b/eodag/resources/providers.yml
@@ -884,125 +884,153 @@
     - host
   url: https://creodias.eu/
   search: !plugin
-    type: QueryStringSearch
-    api_endpoint: 'http://datahub.creodias.eu/resto/api/collections/{collection}/search.json'
+    type: ODataV4Search
+    api_endpoint: 'https://datahub.creodias.eu/odata/v1/Products'
     need_auth: false
-    timeout: 60
+    timeout: 120
     ssl_verify: true
+    dont_quote:
+      - '['
+      - ']'
+      - '$'
+      - '='
+      - '&'
+      - ':'
     pagination:
-      next_page_url_tpl: '{url}?{search}&maxRecords={items_per_page}&page={page}&exactCount=1'
-      total_items_nb_key_path: '$.properties.totalResults'
+      next_page_url_tpl: '{url}?{search}&$top={items_per_page}&$skip={skip}&$expand=Attributes&$expand=Assets&$count=True'
+      total_items_nb_key_path: '$."@odata.count"'
       max_items_per_page: 1_000
     sort:
       sort_by_default:
         - !!python/tuple [startTimeFromAscendingNode, ASC]
-      sort_by_tpl: '&sortParam={sort_param}&sortOrder={sort_order}'
+      sort_by_tpl: '&$orderby={sort_param} {sort_order}'
       sort_param_mapping:
-        startTimeFromAscendingNode: startDate
-        completionTimeFromAscendingNode: completionDate
-        publicationDate: published
+        startTimeFromAscendingNode: ContentDate/Start
+        completionTimeFromAscendingNode: ContentDate/End
+        publicationDate: PublicationDate
+        modificationDate: ModificationDate
       sort_order_mapping:
         ascending: asc
         descending: desc
       max_sort_params: 1
+    results_entry: 'value'
+    free_text_search_operations:
+      $filter:
+        union: ' or '
+        wrapper: '{}'
+        operations:
+          and:
+            - "Collection/Name eq '{collection}'"
+            - "OData.CSC.Intersects(area=geography'{geometry#to_ewkt}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'productType' and att/OData.CSC.StringAttribute/Value eq '{productType}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'platformShortName' and att/OData.CSC.StringAttribute/Value eq '{platform}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'platformSerialIdentifier' and att/OData.CSC.StringAttribute/Value eq '{platformSerialIdentifier}')"
+            - "Attributes/OData.CSC.IntegerAttribute/any(att:att/Name eq 'spatialResolution' and att/OData.CSC.StringAttribute/Value eq '{resolution}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'authority' and att/OData.CSC.StringAttribute/Value eq '{organisationName}')"
+            - "Attributes/OData.CSC.IntegerAttribute/any(att:att/Name eq 'orbitNumber' and att/OData.CSC.StringAttribute/Value eq '{orbitNumber}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'orbitDirection' and att/OData.CSC.StringAttribute/Value eq '{orbitDirection}')"
+            - "Attributes/OData.CSC.DoubleAttribute/any(att:att/Name eq 'cloudCover' and att/OData.CSC.DoubleAttribute/Value le {cloudCover})"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'operationalMode' and att/OData.CSC.StringAttribute/Value eq '{sensorMode}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'polarisationChannels' and att/OData.CSC.StringAttribute/Value eq '{polarizationChannels}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'tileId' and att/OData.CSC.StringAttribute/Value eq '{tileIdentifier}')"
+            - 'ContentDate/Start gt {startTimeFromAscendingNode#to_iso_utc_datetime}'
+            - 'ContentDate/End lt {completionTimeFromAscendingNode#to_iso_utc_datetime}'
+            - contains(Name,'{id}')
     discover_metadata:
       auto_discovery: true
       metadata_pattern: '^(?!collection)[a-zA-Z0-9]+$'
-      search_param: '{metadata}={{{metadata}}}'
-      metadata_path: '$.properties.*'
+      search_param:
+        free_text_search_operations:
+          $filter:
+            operations:
+              and:
+                -  "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq '{metadata}' and att/OData.CSC.StringAttribute/Value eq '{{{metadata}}}')"
+      metadata_path: '$.Attributes.*'
     discover_product_types:
       fetch_url: null
+    per_product_metadata_query: false
+    metadata_pre_mapping:
+      metadata_path: '$.Attributes'
+      metadata_path_id: 'Name'
+      metadata_path_value: 'Value'
     metadata_mapping:
-      uid: '$.id'
+      # 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.$filter.operations.and` entries are then used instead.
+      uid: '$.Id'
+      # OpenSearch Parameters for Collection Search (Table 3)
       productType:
-        - productType
-        - '$.properties.productType'
-      platform: '$.properties.collection'
+        - null
+        - '$.Attributes.productType'
+      platform:
+        - null
+        - '$.Attributes.platformShortName'
       platformSerialIdentifier:
-        - platform
-        - '$.properties.platform'
+        - null
+        - '$.Attributes.platformSerialIdentifier'
       instrument:
-        - instrument
-        - '$.properties.instrument'
+        - null
+        - '$.Attributes.instrumentShortName'
       processingLevel:
-        - processingLevel
-        - '$.properties.processingLevel'
+        - null
+        - '$.Attributes.processingLevel'
       # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4)
-      title: '{$.properties.title#remove_extension}'
-      topicCategory: '$.properties.topicCategory'
-      keyword: '$.properties.keywords'
-      abstract: '$.properties.description'
+      title: '$.Name'
       resolution:
-        - 'resolution'
-        - '$.properties.resolution'
+        - null
+        - '$.Attributes.spatialResolution'
       organisationName:
-        - 'organisationName'
-        - '$.properties.organisationName'
-      publicationDate: '$.properties.published'
-      accessConstraint: '$.properties.license'
-
+        - null
+        - '$.Attributes.authority'
+      publicationDate: '$.PublicationDate'
       # OpenSearch Parameters for Product Search (Table 5)
-      parentIdentifier:
-        - 'parentIdentifier'
-        - '$.properties.parentIdentifier'
-      acquisitionType: '$.properties.acquisitionType'
       orbitNumber:
-        - 'orbitNumber'
-        - '$.properties.orbitNumber'
+        - null
+        - '$.Attributes.orbitNumber'
       orbitDirection:
-        - 'orbitDirection'
-        - '$.properties.orbitDirection'
-      swathIdentifier:
-        - 'swath'
-        - '$.properties.swath'
+        - null
+        - '$.Attributes.orbitDirection'
       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'
+        - null
+        - '$.Attributes.cloudCover'
+      modificationDate: '$.ModificationDate'
       sensorMode:
-        - 'sensorMode'
-        - '$.properties.sensorMode'
+        - null
+        - '$.Attributes.operationalMode'
       # OpenSearch Parameters for Acquistion Parameters Search (Table 6)
       startTimeFromAscendingNode:
-        - startDate
-        - '$.properties.startDate'
+        - null
+        - '$.ContentDate.Start'
       completionTimeFromAscendingNode:
-        - completionDate
-        - '$.properties.completionDate'
-      polarizationMode:
-        - 'polarisation'
-        - '$.properties.polarisation'
-
+        - null
+        - '$.ContentDate.End'
+      polarizationChannels:
+        - null
+        - '$.Attributes.polarisationChannels'
       # Custom parameters (not defined in the base document referenced above)
       id:
-        - 'productIdentifier=%{id#remove_extension}%'
-        - '{$.properties.title#remove_extension}'
+        - null
+        - '{$.Name#remove_extension}'
       tileIdentifier:
-        - tileId
-        - '$.null'
+        - null
+        - '$.Attributes.tileId'
       # 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'
+        - null
+        - '{$.Footprint.`sub(/.*(SRID=[0-9]+;[A-Z0-9 \(\),.-]+).*/, \\1)`#from_ewkt}'
       # 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'
-
+      downloadLink: 'https://zipper.creodias.eu/odata/v1/Products({uid})/$value'
+      # storageStatus: must be one of ONLINE, STAGING, OFFLINE
+      storageStatus: '{$.Online#get_group_name((?P<ONLINE>True)|(?P<OFFLINE>False))}'
+      collection:
+        - null
+        - $.null
+      quicklook: '$.Assets[?(@.Type="QUICKLOOK")].DownloadLink'
+      thumbnail: '$.Assets[?(@.Type="QUICKLOOK")].DownloadLink'
       # Additional metadata provided by the providers but that don't appear in the reference spec
-      thumbnail: '$.properties.thumbnail'
+      productIdentifier: '$.S3Path'
   download: !plugin
     type: HTTPDownload
     base_uri: 'https://zipper.creodias.eu/download/'
@@ -1024,22 +1052,22 @@
       # S1
     S1_SAR_RAW:
       productType: RAW
-      collection: Sentinel1
+      collection: SENTINEL-1
       metadata_mapping:
         cloudCover: '$.null'
     S1_SAR_GRD:
       productType: GRD
-      collection: Sentinel1
+      collection: SENTINEL-1
       metadata_mapping:
         cloudCover: '$.null'
     S1_SAR_SLC:
       productType: SLC
-      collection: Sentinel1
+      collection: SENTINEL-1
       metadata_mapping:
         cloudCover: '$.null'
     S1_SAR_OCN:
       productType: OCN
-      collection: Sentinel1
+      collection: SENTINEL-1
       metadata_mapping:
         cloudCover: '$.null'
     # S2
@@ -1051,174 +1079,174 @@
       productType: S2MSI2A
     # S3 SRAL
     S3_SRA:
-      productType: SRA
-      collection: Sentinel3
+      productType: SR_1_SRA___
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     S3_SRA_A:
-      productType: SRA_A
-      collection: Sentinel3
+      productType: SR_1_SRA_A_
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     S3_SRA_BS:
-      productType: SRA_BS
-      collection: Sentinel3
+      productType: SR_1_SRA_BS
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     S3_LAN:
-      productType: LAN
-      collection: Sentinel3
+      productType: SR_2_LAN___
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     S3_WAT:
-      productType: WAT
-      collection: Sentinel3
+      productType: SR_2_WAT___
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     # S3 OLCI
     S3_EFR:
-      productType: EFR
-      collection: Sentinel3
+      productType: OL_1_EFR___
+      collection: SENTINEL-3
     S3_ERR:
-      productType: ERR
-      collection: Sentinel3
+      productType: OL_1_ERR___
+      collection: SENTINEL-3
     S3_OLCI_L2LRR:
-      productType: LRR
-      collection: Sentinel3
+      productType: OL_2_LRR___
+      collection: SENTINEL-3
     S3_OLCI_L2LFR:
-      productType: LFR
-      collection: Sentinel3
+      productType: OL_2_LFR___
+      collection: SENTINEL-3
     S3_OLCI_L2WRR:
-      productType: WRR
-      collection: Sentinel3
+      productType: OL_2_WRR___
+      collection: SENTINEL-3
     S3_OLCI_L2WFR:
-      productType: WFR
-      collection: Sentinel3
+      productType: OL_2_WFR___
+      collection: SENTINEL-3
     # S3 SLSTR
     S3_SLSTR_L1RBT:
-      productType: RBT
-      collection: Sentinel3
+      productType: SL_1_RBT___
+      collection: SENTINEL-3
     S3_SLSTR_L2LST:
-      productType: LST
-      collection: Sentinel3
+      productType: SL_2_LST___
+      collection: SENTINEL-3
     S3_SLSTR_L2WST:
-      productType: WST
-      collection: Sentinel3
+      productType: SL_2_WST___
+      collection: SENTINEL-3
     S3_SLSTR_L2AOD:
-      productType: AOD___
-      collection: Sentinel3
+      productType: SL_2_AOD___
+      collection: SENTINEL-3
     S3_SLSTR_L2FRP:
-      productType: FRP___
-      collection: Sentinel3
+      productType: SL_2_FRP___
+      collection: SENTINEL-3
     # S3 SY
     S3_SY_AOD:
       productType: SY_2_AOD___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SY_SYN:
       productType: SY_2_SYN___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SY_V10:
       productType: SY_2_V10___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SY_VG1:
       productType: SY_2_VG1___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SY_VGP:
       productType: SY_2_VGP___
-      collection: Sentinel3
+      collection: SENTINEL-3
     # S5P L1
     S5P_L1B_IR_SIR:
       productType: L1B_IR_SIR
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_IR_UVN:
       productType: L1B_IR_UVN
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD1:
       productType: L1B_RA_BD1
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD2:
       productType: L1B_RA_BD2
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD3:
       productType: L1B_RA_BD3
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD4:
       productType: L1B_RA_BD4
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD5:
       productType: L1B_RA_BD5
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD6:
       productType: L1B_RA_BD6
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD7:
       productType: L1B_RA_BD7
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD8:
       productType: L1B_RA_BD8
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     # S5P L2
     S5P_L2_NO2:
       productType: L2__NO2___
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_CLOUD:
       productType: L2__CLOUD_
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_O3:
       productType: L2__O3____
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_CO:
       productType: L2__CO____
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_AER_AI:
       productType: L2__AER_AI
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_O3_PR:
       productType: L2__O3__PR
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_O3_TCL:
       productType: L2__O3_TCL
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_AER_LH:
       productType: L2__AER_LH
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_HCHO:
       productType: L2__HCHO__
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_CH4:
       productType: L2__CH4___
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_NP_BD3:
       productType: L2__NP_BD3
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_NP_BD6:
       productType: L2__NP_BD6
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_NP_BD7:
       productType: L2__NP_BD7
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_SO2:
       productType: L2__SO2___
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     # COP DEM
     COP_DEM_GLO30_DGED:
       productType: DGE_30
-      collection: CopDem
+      collection: COP-DEM
       metadata_mapping:
         cloudCover: '$.null'
     COP_DEM_GLO30_DTED:
       productType: DTE_30
-      collection: CopDem
+      collection: COP-DEM
       metadata_mapping:
         cloudCover: '$.null'
     COP_DEM_GLO90_DGED:
       productType: DGE_90
-      collection: CopDem
+      collection: COP-DEM
       metadata_mapping:
         cloudCover: '$.null'
     COP_DEM_GLO90_DTED:
       productType: DTE_90
-      collection: CopDem
+      collection: COP-DEM
       metadata_mapping:
         cloudCover: '$.null'
     GENERIC_PRODUCT_TYPE:
@@ -3803,104 +3831,151 @@
     - host
   url: https://dataspace.copernicus.eu/
   search: !plugin
-    type: QueryStringSearch
-    api_endpoint: 'http://catalogue.dataspace.copernicus.eu/resto/api/collections/{collection}/search.json'
+    type: ODataV4Search
+    api_endpoint: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Products'
     need_auth: false
-    timeout: 60
+    timeout: 120
     ssl_verify: true
+    dont_quote:
+      - '['
+      - ']'
+      - '$'
+      - '='
+      - '&'
+      - ':'
     pagination:
-      next_page_url_tpl: '{url}?{search}&maxRecords={items_per_page}&page={page}&exactCount=1'
-      total_items_nb_key_path: '$.properties.totalResults'
+      next_page_url_tpl: '{url}?{search}&$top={items_per_page}&$skip={skip}&$expand=Attributes&$expand=Assets&$count=True'
+      total_items_nb_key_path: '$."@odata.count"'
       max_items_per_page: 1_000
     sort:
       sort_by_default:
         - !!python/tuple [startTimeFromAscendingNode, ASC]
-      sort_by_tpl: '&sortParam={sort_param}&sortOrder={sort_order}'
+      sort_by_tpl: '&$orderby={sort_param} {sort_order}'
       sort_param_mapping:
-        startTimeFromAscendingNode: startDate
-        completionTimeFromAscendingNode: completionDate
-        publicationDate: published
-        modificationDate: updated
+        startTimeFromAscendingNode: ContentDate/Start
+        completionTimeFromAscendingNode: ContentDate/End
+        publicationDate: PublicationDate
+        modificationDate: ModificationDate
       sort_order_mapping:
         ascending: asc
         descending: desc
       max_sort_params: 1
+    results_entry: 'value'
+    free_text_search_operations:
+      $filter:
+        union: ' or '
+        wrapper: '{}'
+        operations:
+          and:
+            - "Collection/Name eq '{collection}'"
+            - "OData.CSC.Intersects(area=geography'{geometry#to_ewkt}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'productType' and att/OData.CSC.StringAttribute/Value eq '{productType}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'platformShortName' and att/OData.CSC.StringAttribute/Value eq '{platform}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'platformSerialIdentifier' and att/OData.CSC.StringAttribute/Value eq '{platformSerialIdentifier}')"
+            - "Attributes/OData.CSC.IntegerAttribute/any(att:att/Name eq 'spatialResolution' and att/OData.CSC.StringAttribute/Value eq '{resolution}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'authority' and att/OData.CSC.StringAttribute/Value eq '{organisationName}')"
+            - "Attributes/OData.CSC.IntegerAttribute/any(att:att/Name eq 'orbitNumber' and att/OData.CSC.StringAttribute/Value eq '{orbitNumber}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'orbitDirection' and att/OData.CSC.StringAttribute/Value eq '{orbitDirection}')"
+            - "Attributes/OData.CSC.DoubleAttribute/any(att:att/Name eq 'cloudCover' and att/OData.CSC.DoubleAttribute/Value le {cloudCover})"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'operationalMode' and att/OData.CSC.StringAttribute/Value eq '{sensorMode}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'polarisationChannels' and att/OData.CSC.StringAttribute/Value eq '{polarizationChannels}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'tileId' and att/OData.CSC.StringAttribute/Value eq '{tileIdentifier}')"
+            - 'ContentDate/Start gt {startTimeFromAscendingNode#to_iso_utc_datetime}'
+            - 'ContentDate/End lt {completionTimeFromAscendingNode#to_iso_utc_datetime}'
+            - contains(Name,'{id}')
     discover_metadata:
       auto_discovery: true
       metadata_pattern: '^(?!collection)[a-zA-Z0-9]+$'
-      search_param: '{metadata}={{{metadata}}}'
-      metadata_path: '$.properties.*'
+      search_param:
+        free_text_search_operations:
+          $filter:
+            operations:
+              and:
+                -  "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq '{metadata}' and att/OData.CSC.StringAttribute/Value eq '{{{metadata}}}')"
+      metadata_path: '$.Attributes.*'
+    per_product_metadata_query: false
+    metadata_pre_mapping:
+      metadata_path: '$.Attributes'
+      metadata_path_id: 'Name'
+      metadata_path_value: 'Value'
     metadata_mapping:
       # Opensearch resource identifier within the search engine context (in our case
       # within the context of the data provider)
-      uid: '$.id'
+      # Queryable parameters are set with null as 1st configuration list value to mark them as queryable,
+      #   but `free_text_search_operations.$filter.operations.and` entries are then used instead.
+      uid: '$.Id'
       # OpenSearch Parameters for Collection Search (Table 3)
       productType:
-        - productType
-        - '$.properties.productType'
-      platform: '$.properties.collection'
+        - null
+        - '$.Attributes.productType'
+      platform:
+        - null
+        - '$.Attributes.platformShortName'
       platformSerialIdentifier:
-        - platform
-        - '$.properties.platform'
+        - null
+        - '$.Attributes.platformSerialIdentifier'
       instrument:
-        - instrument
-        - '$.properties.instrument'
+        - null
+        - '$.Attributes.instrumentShortName'
       processingLevel:
-        - processingLevel
-        - '$.properties.processingLevel'
+        - null
+        - '$.Attributes.processingLevel'
       # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4)
-      title: '{$.properties.title#remove_extension}'
+      title: '$.Name'
       resolution:
-        - 'resolution'
-        - '$.properties.resolution'
+        - null
+        - '$.Attributes.spatialResolution'
       organisationName:
-        - 'organisationName'
-        - '$.properties.organisationName'
-      publicationDate: '$.properties.published'
+        - null
+        - '$.Attributes.authority'
+      publicationDate: '$.PublicationDate'
       # OpenSearch Parameters for Product Search (Table 5)
       orbitNumber:
-        - 'orbitNumber'
-        - '$.properties.orbitNumber'
+        - null
+        - '$.Attributes.orbitNumber'
       orbitDirection:
-        - 'orbitDirection'
-        - '$.properties.orbitDirection'
+        - null
+        - '$.Attributes.orbitDirection'
       cloudCover:
-        - 'cloudCover=[0,{cloudCover}]'
-        - '$.properties.cloudCover'
-      modificationDate: '$.properties.updated'
+        - null
+        - '$.Attributes.cloudCover'
+      modificationDate: '$.ModificationDate'
       sensorMode:
-        - 'sensorMode'
-        - '$.properties.sensorMode'
+        - null
+        - '$.Attributes.operationalMode'
       # OpenSearch Parameters for Acquistion Parameters Search (Table 6)
       startTimeFromAscendingNode:
-        - startDate
-        - '$.properties.startDate'
+        - null
+        - '$.ContentDate.Start'
       completionTimeFromAscendingNode:
-        - completionDate
-        - '$.properties.completionDate'
+        - null
+        - '$.ContentDate.End'
       polarizationChannels:
-        - 'polarisation'
-        - '$.properties.polarisation'
+        - null
+        - '$.Attributes.polarisationChannels'
       # Custom parameters (not defined in the base document referenced above)
       id:
-        - 'productIdentifier={id#remove_extension}'
-        - '{$.properties.title#remove_extension}'
+        - null
+        - '{$.Name#remove_extension}'
       tileIdentifier:
-        - tileId
-        - '$.null'
+        - null
+        - '$.Attributes.tileId'
       # 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'
+        - null
+        - '{$.Footprint.`sub(/.*(SRID=[0-9]+;[A-Z0-9 \(\),.-]+).*/, \\1)`#from_ewkt}'
       # 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'
+      storageStatus: '{$.Online#get_group_name((?P<ONLINE>True)|(?P<OFFLINE>False))}'
+      collection:
+        - null
+        - $.null
+      quicklook: '$.Assets[?(@.Type="QUICKLOOK")].DownloadLink'
+      thumbnail: '$.Assets[?(@.Type="QUICKLOOK")].DownloadLink'
       # Additional metadata provided by the providers but that don't appear in the reference spec
-      thumbnail: '$.properties.thumbnail'
+      productIdentifier: '$.S3Path'
   download: !plugin
     type: HTTPDownload
     base_uri: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Products'
@@ -3921,183 +3996,183 @@
   products:
     # S2
     S2_MSI_L1C:
-      collection: Sentinel2
+      collection: SENTINEL-2
       productType: S2MSI1C
     S2_MSI_L2A:
-      collection: Sentinel2
+      collection: SENTINEL-2
       productType: S2MSI2A
     # S1
     S1_SAR_RAW:
       productType: RAW
-      collection: Sentinel1
+      collection: SENTINEL-1
       metadata_mapping:
         cloudCover: '$.null'
     S1_SAR_GRD:
       productType: GRD
-      collection: Sentinel1
+      collection: SENTINEL-1
       metadata_mapping:
         cloudCover: '$.null'
     S1_SAR_SLC:
       productType: SLC
-      collection: Sentinel1
+      collection: SENTINEL-1
       metadata_mapping:
         cloudCover: '$.null'
     S1_SAR_OCN:
       productType: OCN
-      collection: Sentinel1
+      collection: SENTINEL-1
       metadata_mapping:
         cloudCover: '$.null'
     # S3 SRAL
     S3_SRA:
       productType: SR_1_SRA___
-      collection: Sentinel3
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     S3_SRA_A:
       productType: SR_1_SRA_A_
-      collection: Sentinel3
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     S3_SRA_BS:
       productType: SR_1_SRA_BS
-      collection: Sentinel3
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     S3_LAN:
       productType: SR_2_LAN___
-      collection: Sentinel3
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     S3_WAT:
       productType: SR_2_WAT___
-      collection: Sentinel3
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     # S3 OLCI
     S3_EFR:
       productType: OL_1_EFR___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_ERR:
       productType: OL_1_ERR___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_OLCI_L2LRR:
       productType: OL_2_LRR___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_OLCI_L2LFR:
       productType: OL_2_LFR___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_OLCI_L2WRR:
       productType: OL_2_WRR___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_OLCI_L2WFR:
       productType: OL_2_WFR___
-      collection: Sentinel3
+      collection: SENTINEL-3
     # S3 SLSTR
     S3_SLSTR_L1RBT:
       productType: SL_1_RBT___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SLSTR_L2LST:
       productType: SL_2_LST___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SLSTR_L2WST:
       productType: SL_2_WST___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SLSTR_L2AOD:
       productType: SL_2_AOD___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SLSTR_L2FRP:
       productType: SL_2_FRP___
-      collection: Sentinel3
+      collection: SENTINEL-3
     # S3 SY
     S3_SY_AOD:
       productType: SY_2_AOD___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SY_SYN:
       productType: SY_2_SYN___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SY_V10:
       productType: SY_2_V10___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SY_VG1:
       productType: SY_2_VG1___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SY_VGP:
       productType: SY_2_VGP___
-      collection: Sentinel3
+      collection: SENTINEL-3
     # S5P L1
     S5P_L1B_IR_SIR:
       productType: L1B_IR_SIR
-      collection: Sentinel5P
+      collection: Sentinel-5P
     S5P_L1B_IR_UVN:
       productType: L1B_IR_UVN
-      collection: Sentinel5P
+      collection: Sentinel-5P
     S5P_L1B_RA_BD1:
       productType: L1B_RA_BD1
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD2:
       productType: L1B_RA_BD2
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD3:
       productType: L1B_RA_BD3
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD4:
       productType: L1B_RA_BD4
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD5:
       productType: L1B_RA_BD5
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD6:
       productType: L1B_RA_BD6
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD7:
       productType: L1B_RA_BD7
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD8:
       productType: L1B_RA_BD8
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     # S5P L2
     S5P_L2_NO2:
       productType: L2__NO2___
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_CLOUD:
       productType: L2__CLOUD_
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_O3:
       productType: L2__O3____
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_CO:
       productType: L2__CO____
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_AER_AI:
       productType: L2__AER_AI
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_O3_PR:
       productType: L2__O3__PR
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_O3_TCL:
       productType: L2__O3_TCL
-      collection: Sentinel5P
+      collection: Sentinel-5P
     S5P_L2_AER_LH:
       productType: L2__AER_LH
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_HCHO:
       productType: L2__HCHO__
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_CH4:
       productType: L2__CH4___
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_NP_BD3:
       productType: L2__NP_BD3
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_NP_BD6:
       productType: L2__NP_BD6
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_NP_BD7:
       productType: L2__NP_BD7
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_SO2:
       productType: L2__SO2___
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     GENERIC_PRODUCT_TYPE:
       productType: '{productType}'
       collection: '{collection}'
@@ -5992,125 +6067,153 @@
   url: https://creodias.eu/
   search: !plugin
     type: CreodiasS3Search
-    api_endpoint: 'http://datahub.creodias.eu/resto/api/collections/{collection}/search.json'
+    api_endpoint: 'https://datahub.creodias.eu/odata/v1/Products'
     s3_endpoint: 'https://eodata.cloudferro.com'
     need_auth: true
-    timeout: 60
+    timeout: 120
     ssl_verify: true
+    dont_quote:
+      - '['
+      - ']'
+      - '$'
+      - '='
+      - '&'
+      - ':'
     pagination:
-      next_page_url_tpl: '{url}?{search}&maxRecords={items_per_page}&page={page}&exactCount=1'
-      total_items_nb_key_path: '$.properties.totalResults'
+      next_page_url_tpl: '{url}?{search}&$top={items_per_page}&$skip={skip}&$expand=Attributes&$expand=Assets&$count=True'
+      total_items_nb_key_path: '$."@odata.count"'
       max_items_per_page: 1_000
     sort:
       sort_by_default:
         - !!python/tuple [startTimeFromAscendingNode, ASC]
-      sort_by_tpl: '&sortParam={sort_param}&sortOrder={sort_order}'
+      sort_by_tpl: '&$orderby={sort_param} {sort_order}'
       sort_param_mapping:
-        startTimeFromAscendingNode: startDate
-        completionTimeFromAscendingNode: completionDate
-        publicationDate: published
+        startTimeFromAscendingNode: ContentDate/Start
+        completionTimeFromAscendingNode: ContentDate/End
+        publicationDate: PublicationDate
+        modificationDate: ModificationDate
       sort_order_mapping:
         ascending: asc
         descending: desc
       max_sort_params: 1
+    results_entry: 'value'
+    free_text_search_operations:
+      $filter:
+        union: ' or '
+        wrapper: '{}'
+        operations:
+          and:
+            - "Collection/Name eq '{collection}'"
+            - "OData.CSC.Intersects(area=geography'{geometry#to_ewkt}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'productType' and att/OData.CSC.StringAttribute/Value eq '{productType}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'platformShortName' and att/OData.CSC.StringAttribute/Value eq '{platform}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'platformSerialIdentifier' and att/OData.CSC.StringAttribute/Value eq '{platformSerialIdentifier}')"
+            - "Attributes/OData.CSC.IntegerAttribute/any(att:att/Name eq 'spatialResolution' and att/OData.CSC.StringAttribute/Value eq '{resolution}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'authority' and att/OData.CSC.StringAttribute/Value eq '{organisationName}')"
+            - "Attributes/OData.CSC.IntegerAttribute/any(att:att/Name eq 'orbitNumber' and att/OData.CSC.StringAttribute/Value eq '{orbitNumber}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'orbitDirection' and att/OData.CSC.StringAttribute/Value eq '{orbitDirection}')"
+            - "Attributes/OData.CSC.DoubleAttribute/any(att:att/Name eq 'cloudCover' and att/OData.CSC.DoubleAttribute/Value le {cloudCover})"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'operationalMode' and att/OData.CSC.StringAttribute/Value eq '{sensorMode}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'polarisationChannels' and att/OData.CSC.StringAttribute/Value eq '{polarizationChannels}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'tileId' and att/OData.CSC.StringAttribute/Value eq '{tileIdentifier}')"
+            - 'ContentDate/Start gt {startTimeFromAscendingNode#to_iso_utc_datetime}'
+            - 'ContentDate/End lt {completionTimeFromAscendingNode#to_iso_utc_datetime}'
+            - contains(Name,'{id}')
     discover_metadata:
       auto_discovery: true
       metadata_pattern: '^(?!collection)[a-zA-Z0-9]+$'
-      search_param: '{metadata}={{{metadata}}}'
-      metadata_path: '$.properties.*'
+      search_param:
+        free_text_search_operations:
+          $filter:
+            operations:
+              and:
+                -  "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq '{metadata}' and att/OData.CSC.StringAttribute/Value eq '{{{metadata}}}')"
+      metadata_path: '$.Attributes.*'
     discover_product_types:
       fetch_url: null
+    per_product_metadata_query: false
+    metadata_pre_mapping:
+      metadata_path: '$.Attributes'
+      metadata_path_id: 'Name'
+      metadata_path_value: 'Value'
     metadata_mapping:
-      uid: '$.id'
+      # 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.$filter.operations.and` entries are then used instead.
+      uid: '$.Id'
+      # OpenSearch Parameters for Collection Search (Table 3)
       productType:
-        - productType
-        - '$.properties.productType'
-      platform: '$.properties.collection'
+        - null
+        - '$.Attributes.productType'
+      platform:
+        - null
+        - '$.Attributes.platformShortName'
       platformSerialIdentifier:
-        - platform
-        - '$.properties.platform'
+        - null
+        - '$.Attributes.platformSerialIdentifier'
       instrument:
-        - instrument
-        - '$.properties.instrument'
+        - null
+        - '$.Attributes.instrumentShortName'
       processingLevel:
-        - processingLevel
-        - '$.properties.processingLevel'
+        - null
+        - '$.Attributes.processingLevel'
       # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4)
-      title: '{$.properties.title#remove_extension}'
-      topicCategory: '$.properties.topicCategory'
-      keyword: '$.properties.keywords'
-      abstract: '$.properties.description'
+      title: '$.Name'
       resolution:
-        - 'resolution'
-        - '$.properties.resolution'
+        - null
+        - '$.Attributes.spatialResolution'
       organisationName:
-        - 'organisationName'
-        - '$.properties.organisationName'
-      publicationDate: '$.properties.published'
-      accessConstraint: '$.properties.license'
-
+        - null
+        - '$.Attributes.authority'
+      publicationDate: '$.PublicationDate'
       # OpenSearch Parameters for Product Search (Table 5)
-      parentIdentifier:
-        - 'parentIdentifier'
-        - '$.properties.parentIdentifier'
-      acquisitionType: '$.properties.acquisitionType'
       orbitNumber:
-        - 'orbitNumber'
-        - '$.properties.orbitNumber'
+        - null
+        - '$.Attributes.orbitNumber'
       orbitDirection:
-        - 'orbitDirection'
-        - '$.properties.orbitDirection'
-      swathIdentifier:
-        - 'swath'
-        - '$.properties.swath'
+        - null
+        - '$.Attributes.orbitDirection'
       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'
+        - null
+        - '$.Attributes.cloudCover'
+      modificationDate: '$.ModificationDate'
       sensorMode:
-        - 'sensorMode'
-        - '$.properties.sensorMode'
+        - null
+        - '$.Attributes.operationalMode'
       # OpenSearch Parameters for Acquistion Parameters Search (Table 6)
       startTimeFromAscendingNode:
-        - startDate
-        - '$.properties.startDate'
+        - null
+        - '$.ContentDate.Start'
       completionTimeFromAscendingNode:
-        - completionDate
-        - '$.properties.completionDate'
-      polarizationMode:
-        - 'polarisation'
-        - '$.properties.polarisation'
-
+        - null
+        - '$.ContentDate.End'
+      polarizationChannels:
+        - null
+        - '$.Attributes.polarisationChannels'
       # Custom parameters (not defined in the base document referenced above)
       id:
-        - 'productIdentifier=%{id#remove_extension}%'
-        - '{$.properties.title#remove_extension}'
+        - null
+        - '{$.Name#remove_extension}'
       tileIdentifier:
-        - tileId
-        - '$.null'
+        - null
+        - '$.Attributes.tileId'
       # 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'
+        - null
+        - '{$.Footprint.`sub(/.*(SRID=[0-9]+;[A-Z0-9 \(\),.-]+).*/, \\1)`#from_ewkt}'
       # 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'
+      downloadLink: 'https://zipper.creodias.eu/odata/v1/Products({uid})/$value'
+      # storageStatus: must be one of ONLINE, STAGING, OFFLINE
+      storageStatus: '{$.Online#get_group_name((?P<ONLINE>True)|(?P<OFFLINE>False))}'
+      collection:
+        - null
+        - $.null
+      quicklook: '$.Assets[?(@.Type="QUICKLOOK")].DownloadLink'
+      thumbnail: '$.Assets[?(@.Type="QUICKLOOK")].DownloadLink'
+        # Additional metadata provided by the providers but that don't appear in the reference spec
+      productIdentifier: '$.S3Path'
   download: !plugin
     type: CreodiasS3Download
     flatten_top_dirs: True
@@ -6122,205 +6225,204 @@
     auth_error_code: 403
     ssl_verify: true
   products:
-    # S1
+      # S1
     S1_SAR_RAW:
       productType: RAW
-      collection: Sentinel1
+      collection: SENTINEL-1
       metadata_mapping:
         cloudCover: '$.null'
     S1_SAR_GRD:
       productType: GRD
-      collection: Sentinel1
+      collection: SENTINEL-1
       metadata_mapping:
         cloudCover: '$.null'
     S1_SAR_SLC:
       productType: SLC
-      collection: Sentinel1
+      collection: SENTINEL-1
       metadata_mapping:
         cloudCover: '$.null'
     S1_SAR_OCN:
       productType: OCN
-      collection: Sentinel1
+      collection: SENTINEL-1
       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
+      productType: SR_1_SRA___
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     S3_SRA_A:
-      productType: SRA_A
-      collection: Sentinel3
+      productType: SR_1_SRA_A_
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     S3_SRA_BS:
-      productType: SRA_BS
-      collection: Sentinel3
+      productType: SR_1_SRA_BS
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     S3_LAN:
-      productType: LAN
-      collection: Sentinel3
+      productType: SR_2_LAN___
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     S3_WAT:
-      productType: WAT
-      collection: Sentinel3
+      productType: SR_2_WAT___
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     # S3 OLCI
     S3_EFR:
-      productType: EFR
-      collection: Sentinel3
+      productType: OL_1_EFR___
+      collection: SENTINEL-3
     S3_ERR:
-      productType: ERR
-      collection: Sentinel3
+      productType: OL_1_ERR___
+      collection: SENTINEL-3
     S3_OLCI_L2LRR:
-      productType: LRR
-      collection: Sentinel3
+      productType: OL_2_LRR___
+      collection: SENTINEL-3
     S3_OLCI_L2LFR:
-      productType: LFR
-      collection: Sentinel3
+      productType: OL_2_LFR___
+      collection: SENTINEL-3
     S3_OLCI_L2WRR:
-      productType: WRR
-      collection: Sentinel3
+      productType: OL_2_WRR___
+      collection: SENTINEL-3
     S3_OLCI_L2WFR:
-      productType: WFR
-      collection: Sentinel3
+      productType: OL_2_WFR___
+      collection: SENTINEL-3
     # S3 SLSTR
     S3_SLSTR_L1RBT:
-      productType: RBT
-      collection: Sentinel3
+      productType: SL_1_RBT___
+      collection: SENTINEL-3
     S3_SLSTR_L2LST:
-      productType: LST
-      collection: Sentinel3
+      productType: SL_2_LST___
+      collection: SENTINEL-3
     S3_SLSTR_L2WST:
-      productType: WST
-      collection: Sentinel3
+      productType: SL_2_WST___
+      collection: SENTINEL-3
     S3_SLSTR_L2AOD:
-      productType: AOD___
-      collection: Sentinel3
+      productType: SL_2_AOD___
+      collection: SENTINEL-3
     S3_SLSTR_L2FRP:
-      productType: FRP___
-      collection: Sentinel3
+      productType: SL_2_FRP___
+      collection: SENTINEL-3
     # S3 SY
     S3_SY_AOD:
       productType: SY_2_AOD___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SY_SYN:
       productType: SY_2_SYN___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SY_V10:
       productType: SY_2_V10___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SY_VG1:
       productType: SY_2_VG1___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SY_VGP:
       productType: SY_2_VGP___
-      collection: Sentinel3
+      collection: SENTINEL-3
     # S5P L1
     S5P_L1B_IR_SIR:
       productType: L1B_IR_SIR
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_IR_UVN:
       productType: L1B_IR_UVN
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD1:
       productType: L1B_RA_BD1
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD2:
       productType: L1B_RA_BD2
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD3:
       productType: L1B_RA_BD3
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD4:
       productType: L1B_RA_BD4
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD5:
       productType: L1B_RA_BD5
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD6:
       productType: L1B_RA_BD6
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD7:
       productType: L1B_RA_BD7
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD8:
       productType: L1B_RA_BD8
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     # S5P L2
     S5P_L2_NO2:
       productType: L2__NO2___
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_CLOUD:
       productType: L2__CLOUD_
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_O3:
       productType: L2__O3____
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_CO:
       productType: L2__CO____
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_AER_AI:
       productType: L2__AER_AI
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_O3_PR:
       productType: L2__O3__PR
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_O3_TCL:
       productType: L2__O3_TCL
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_AER_LH:
       productType: L2__AER_LH
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_HCHO:
       productType: L2__HCHO__
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_CH4:
       productType: L2__CH4___
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_NP_BD3:
       productType: L2__NP_BD3
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_NP_BD6:
       productType: L2__NP_BD6
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_NP_BD7:
       productType: L2__NP_BD7
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_SO2:
       productType: L2__SO2___
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     # COP DEM
     COP_DEM_GLO30_DGED:
       productType: DGE_30
-      collection: CopDem
+      collection: COP-DEM
       metadata_mapping:
         cloudCover: '$.null'
     COP_DEM_GLO30_DTED:
       productType: DTE_30
-      collection: CopDem
+      collection: COP-DEM
       metadata_mapping:
         cloudCover: '$.null'
     COP_DEM_GLO90_DGED:
       productType: DGE_90
-      collection: CopDem
+      collection: COP-DEM
       metadata_mapping:
         cloudCover: '$.null'
     COP_DEM_GLO90_DTED:
       productType: DTE_90
-      collection: CopDem
+      collection: COP-DEM
       metadata_mapping:
         cloudCover: '$.null'
     GENERIC_PRODUCT_TYPE:
diff --git a/eodag/rest/stac.py b/eodag/rest/stac.py
index a1e514f6..b754f75e 100644
--- a/eodag/rest/stac.py
+++ b/eodag/rest/stac.py
@@ -739,8 +739,8 @@ class StacCollection(StacCommon):
                 },
             )
             # override EODAG's collection with the external collection
-            product_type_id = product_type.get("_id", None) or product_type["ID"]
-            ext_stac_collection = self.ext_stac_collections.get(product_type_id, {})
+            ext_stac_collection = self.ext_stac_collections.get(product_type["ID"], {})
+
             # merge "keywords" list
             merged_keywords = product_type_collection.get("keywords", [])
             if "keywords" in ext_stac_collection:
@@ -751,6 +751,7 @@ class StacCollection(StacCommon):
             product_type_collection.update(ext_stac_collection)
             if merged_keywords:
                 product_type_collection["keywords"] = merged_keywords
+
             # parse f-strings
             format_args = deepcopy(self.stac_config)
             format_args["collection"] = {


Test patch:
diff --git a/tests/integration/test_core_search.py b/tests/integration/test_core_search.py
index b83efb16..8d8e97a1 100644
--- a/tests/integration/test_core_search.py
+++ b/tests/integration/test_core_search.py
@@ -236,7 +236,14 @@ class TestCoreSearch(unittest.TestCase):
         available_providers = self.dag.available_providers(product_type)
         self.assertListEqual(
             available_providers,
-            ["peps", "cop_dataspace", "creodias", "onda", "sara", "wekeo"],
+            [
+                "peps",
+                "cop_dataspace",
+                "creodias",
+                "onda",
+                "sara",
+                "wekeo",
+            ],
         )
 
         products, count = self.dag.search(productType="S1_SAR_SLC")
@@ -264,7 +271,14 @@ class TestCoreSearch(unittest.TestCase):
         available_providers = self.dag.available_providers(product_type)
         self.assertListEqual(
             available_providers,
-            ["peps", "cop_dataspace", "creodias", "onda", "sara", "wekeo"],
+            [
+                "peps",
+                "cop_dataspace",
+                "creodias",
+                "onda",
+                "sara",
+                "wekeo",
+            ],
         )
 
         self.assertRaises(
@@ -291,7 +305,14 @@ class TestCoreSearch(unittest.TestCase):
         available_providers = self.dag.available_providers(product_type)
         self.assertListEqual(
             available_providers,
-            ["peps", "cop_dataspace", "creodias", "onda", "sara", "wekeo"],
+            [
+                "peps",
+                "cop_dataspace",
+                "creodias",
+                "onda",
+                "sara",
+                "wekeo",
+            ],
         )
 
         # peps comes 1st by priority
@@ -324,6 +345,8 @@ class TestCoreSearch(unittest.TestCase):
     @mock.patch(
         "eodag.plugins.search.qssearch.requests.Request",
         autospec=True,
+        # fail on creodias, then succeeds on onda (count and search)
+        side_effect=[RequestException, mock.DEFAULT, mock.DEFAULT],
     )
     @mock.patch(
         "eodag.plugins.search.qssearch.requests.get",
@@ -338,7 +361,14 @@ class TestCoreSearch(unittest.TestCase):
         available_providers = self.dag.available_providers(product_type)
         self.assertListEqual(
             available_providers,
-            ["peps", "cop_dataspace", "creodias", "onda", "sara", "wekeo"],
+            [
+                "peps",
+                "cop_dataspace",
+                "creodias",
+                "onda",
+                "sara",
+                "wekeo",
+            ],
         )
 
         # onda comes 3rd by priority
@@ -373,7 +403,14 @@ class TestCoreSearch(unittest.TestCase):
         available_providers = self.dag.available_providers(product_type)
         self.assertListEqual(
             available_providers,
-            ["peps", "cop_dataspace", "creodias", "onda", "sara", "wekeo"],
+            [
+                "peps",
+                "cop_dataspace",
+                "creodias",
+                "onda",
+                "sara",
+                "wekeo",
+            ],
         )
 
         mock_query.side_effect = [
@@ -400,7 +437,14 @@ class TestCoreSearch(unittest.TestCase):
         available_providers = self.dag.available_providers(product_type)
         self.assertListEqual(
             available_providers,
-            ["peps", "cop_dataspace", "creodias", "onda", "sara", "wekeo"],
+            [
+                "peps",
+                "cop_dataspace",
+                "creodias",
+                "onda",
+                "sara",
+                "wekeo",
+            ],
         )
 
         mock_query.return_value = ([], 0)
diff --git a/tests/resources/eodag_search_result_creodias.json b/tests/resources/eodag_search_result_creodias.json
new file mode 100644
index 00000000..751cc1e3
--- /dev/null
+++ b/tests/resources/eodag_search_result_creodias.json
@@ -0,0 +1,1 @@
+{"@odata.context":"$metadata#Products(Attributes())","@odata.count":3123749,"value":[{"@odata.mediaContentType":"application/octet-stream","Id":"78d5c597-78e9-56e8-b4ea-3c2aa92a5d4e","Name":"S1A_IW_GRDH_1SSV_20141004T005844_20141004T005913_002673_002FAB_4FCD.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:00:24.811Z","PublicationDate":"2017-12-16T09:13:28.955Z","ModificationDate":"2017-12-16T09:13:28.955Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T005844_20141004T005913_002673_002FAB_4FCD.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T00:58:44.620Z","End":"2014-10-04T00:59:13.611Z"},"Footprint":"geography'SRID=4326;POLYGON ((-105.359001 28.981216, -102.76075 29.394079, -102.414383 27.64957, -104.969788 27.233603, -105.359001 28.981216))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-105.359001,28.981216],[-102.76075,29.394079],[-102.414383,27.64957],[-104.969788,27.233603],[-105.359001,28.981216]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"28.981216,-105.359001 29.394079,-102.760750 27.649570,-102.414383 27.233603,-104.969788 28.981216,-105.359001","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":1,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T00:59:13.611Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T00:58:44.620Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"7996915b-3dc9-5197-bf4b-ffc69ce5120e","Name":"S1A_IW_GRDH_1SSV_20141004T005913_20141004T005938_002673_002FAB_1265.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:02:11.335Z","PublicationDate":"2017-12-16T09:12:12.382Z","ModificationDate":"2017-12-16T09:12:12.382Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T005913_20141004T005938_002673_002FAB_1265.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T00:59:13.612Z","End":"2014-10-04T00:59:38.611Z"},"Footprint":"geography'SRID=4326;POLYGON ((-105.693146 30.488607, -103.054344 30.898907, -102.760162 29.39426, -105.359024 28.981306, -105.693146 30.488607))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-105.693146,30.488607],[-103.054344,30.898907],[-102.760162,29.39426],[-105.359024,28.981306],[-105.693146,30.488607]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"30.488607,-105.693146 30.898907,-103.054344 29.394260,-102.760162 28.981306,-105.359024 30.488607,-105.693146","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":2,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T00:59:38.611Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T00:59:13.612Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"9e18d2e7-1900-5840-9254-637720f5f719","Name":"S1A_IW_GRDH_1SSV_20141004T005938_20141004T010003_002673_002FAB_53D4.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:04:48.218Z","PublicationDate":"2017-12-16T09:10:55.010Z","ModificationDate":"2017-12-16T09:10:55.010Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T005938_20141004T010003_002673_002FAB_53D4.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T00:59:38.612Z","End":"2014-10-04T01:00:03.610Z"},"Footprint":"geography'SRID=4326;POLYGON ((-106.031609 31.995399, -103.34903 32.403305, -103.053642 30.899101, -105.693169 30.488699, -106.031609 31.995399))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-106.031609,31.995399],[-103.34903,32.403305],[-103.053642,30.899101],[-105.693169,30.488699],[-106.031609,31.995399]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"31.995399,-106.031609 32.403305,-103.349030 30.899101,-103.053642 30.488699,-105.693169 31.995399,-106.031609","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":3,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T01:00:03.610Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T00:59:38.612Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"b714cbfd-c3c2-556d-84ff-f050a37763f5","Name":"S1A_IW_GRDH_1SSV_20141004T010003_20141004T010028_002673_002FAB_817D.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:07:06.188Z","PublicationDate":"2017-12-16T09:09:07.670Z","ModificationDate":"2017-12-16T09:09:07.670Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T010003_20141004T010028_002673_002FAB_817D.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T01:00:03.612Z","End":"2014-10-04T01:00:28.610Z"},"Footprint":"geography'SRID=4326;POLYGON ((-106.37149 33.502102, -103.641792 33.907703, -103.348213 32.403515, -106.031624 31.995491, -106.37149 33.502102))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-106.37149,33.502102],[-103.641792,33.907703],[-103.348213,32.403515],[-106.031624,31.995491],[-106.37149,33.502102]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"33.502102,-106.371490 33.907703,-103.641792 32.403515,-103.348213 31.995491,-106.031624 33.502102,-106.371490","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":4,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T01:00:28.610Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T01:00:03.612Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"bd905c2f-65db-53f4-9f31-1e5d335ca06e","Name":"S1A_IW_GRDH_1SSV_20141004T010028_20141004T010053_002673_002FAB_57F0.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:09:20.179Z","PublicationDate":"2017-12-16T09:08:27.892Z","ModificationDate":"2017-12-16T09:08:27.892Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T010028_20141004T010053_002673_002FAB_57F0.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T01:00:28.612Z","End":"2014-10-04T01:00:53.610Z"},"Footprint":"geography'SRID=4326;POLYGON ((-106.719139 35.00774, -103.938728 35.411278, -103.640846 33.907925, -106.371513 33.50219, -106.719139 35.00774))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-106.719139,35.00774],[-103.938728,35.411278],[-103.640846,33.907925],[-106.371513,33.50219],[-106.719139,35.00774]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"35.007740,-106.719139 35.411278,-103.938728 33.907925,-103.640846 33.502190,-106.371513 35.007740,-106.719139","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":5,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T01:00:53.610Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T01:00:28.612Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"dfbd23e6-5ec6-5fac-a5a6-8bd317b41fe0","Name":"S1A_IW_GRDH_1SSV_20141004T010053_20141004T010118_002673_002FAB_D5C1.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:10:29.566Z","PublicationDate":"2017-12-16T09:09:37.775Z","ModificationDate":"2017-12-16T09:09:37.775Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T010053_20141004T010118_002673_002FAB_D5C1.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T01:00:53.611Z","End":"2014-10-04T01:01:18.610Z"},"Footprint":"geography'SRID=4326;POLYGON ((-107.067474 36.513474, -104.2332 36.914917, -103.938416 35.411404, -106.719154 35.007824, -107.067474 36.513474))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-107.067474,36.513474],[-104.2332,36.914917],[-103.938416,35.411404],[-106.719154,35.007824],[-107.067474,36.513474]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"36.513474,-107.067474 36.914917,-104.233200 35.411404,-103.938416 35.007824,-106.719154 36.513474,-107.067474","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":6,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T01:01:18.610Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T01:00:53.611Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"bb271992-775f-5ab1-af87-70fd3455c6dc","Name":"S1A_IW_GRDH_1SSV_20141004T010118_20141004T010143_002673_002FAB_D1B9.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:12:41.209Z","PublicationDate":"2017-12-16T09:09:38.775Z","ModificationDate":"2017-12-16T09:09:38.775Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T010118_20141004T010143_002673_002FAB_D1B9.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T01:01:18.611Z","End":"2014-10-04T01:01:43.611Z"},"Footprint":"geography'SRID=4326;POLYGON ((-107.421638 38.018654, -104.529083 38.418228, -104.232224 36.915138, -107.067497 36.513565, -107.421638 38.018654))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-107.421638,38.018654],[-104.529083,38.418228],[-104.232224,36.915138],[-107.067497,36.513565],[-107.421638,38.018654]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"38.018654,-107.421638 38.418228,-104.529083 36.915138,-104.232224 36.513565,-107.067497 38.018654,-107.421638","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":7,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T01:01:43.611Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T01:01:18.611Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"3a0980b9-9cd9-5c29-a1d1-05d4ead978f1","Name":"S1A_IW_GRDH_1SSV_20141004T010143_20141004T010208_002673_002FAB_E37A.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:15:33.928Z","PublicationDate":"2017-12-16T09:08:26.571Z","ModificationDate":"2017-12-16T09:08:26.571Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T010143_20141004T010208_002673_002FAB_E37A.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T01:01:43.612Z","End":"2014-10-04T01:02:08.611Z"},"Footprint":"geography'SRID=4326;POLYGON ((-107.806076 39.519547, -104.849121 39.918293, -104.527985 38.418457, -107.421669 38.018745, -107.806076 39.519547))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-107.806076,39.519547],[-104.849121,39.918293],[-104.527985,38.418457],[-107.421669,38.018745],[-107.806076,39.519547]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"39.519547,-107.806076 39.918293,-104.849121 38.418457,-104.527985 38.018745,-107.421669 39.519547,-107.806076","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":8,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T01:02:08.611Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T01:01:43.612Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"dd1f5c25-da5b-542f-9235-57dffecd3db8","Name":"S1A_IW_GRDH_1SSV_20141004T010208_20141004T010233_002673_002FAB_58A8.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:17:38.789Z","PublicationDate":"2017-12-16T09:06:21.362Z","ModificationDate":"2017-12-16T09:06:21.362Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T010208_20141004T010233_002673_002FAB_58A8.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T01:02:08.612Z","End":"2014-10-04T01:02:33.610Z"},"Footprint":"geography'SRID=4326;POLYGON ((-108.193359 41.020485, -105.16925 41.418285, -104.847984 39.918522, -107.806091 39.519638, -108.193359 41.020485))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-108.193359,41.020485],[-105.16925,41.418285],[-104.847984,39.918522],[-107.806091,39.519638],[-108.193359,41.020485]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"41.020485,-108.193359 41.418285,-105.169250 39.918522,-104.847984 39.519638,-107.806091 41.020485,-108.193359","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":9,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T01:02:33.610Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T01:02:08.612Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"ff3330d7-98f0-57e0-887a-89a5e9077a2a","Name":"S1A_IW_GRDH_1SSV_20141004T010233_20141004T010258_002673_002FAB_19F2.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:19:28.019Z","PublicationDate":"2017-12-16T09:05:41.123Z","ModificationDate":"2017-12-16T09:05:41.123Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T010233_20141004T010258_002673_002FAB_19F2.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T01:02:33.612Z","End":"2014-10-04T01:02:58.610Z"},"Footprint":"geography'SRID=4326;POLYGON ((-108.589508 42.520641, -105.493301 42.917763, -105.168915 41.418404, -108.193382 41.020561, -108.589508 42.520641))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-108.589508,42.520641],[-105.493301,42.917763],[-105.168915,41.418404],[-108.193382,41.020561],[-108.589508,42.520641]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"42.520641,-108.589508 42.917763,-105.493301 41.418404,-105.168915 41.020561,-108.193382 42.520641,-108.589508","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":10,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T01:02:58.610Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T01:02:33.612Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]}],"@odata.nextLink":"https://datahub.creodias.eu/odata/v1/Products?%24filter=Collection%2FName+eq+%27SENTINEL-1%27+and+Attributes%2FOData.CSC.StringAttribute%2Fany%28att%3Aatt%2FName+eq+%27productType%27+and+att%2FOData.CSC.StringAttribute%2FValue+eq+%27GRD%27%29&%24orderby=ContentDate%2FStart+asc&%24top=10&%24skip=10&%24expand=Attributes&%24count=True"}
diff --git a/tests/units/test_core.py b/tests/units/test_core.py
index 4a87cd94..416e91de 100644
--- a/tests/units/test_core.py
+++ b/tests/units/test_core.py
@@ -1406,38 +1406,53 @@ class TestCore(TestCoreBase):
         self.maxDiff = None
         expected_result = {
             "peps": None,
-            "usgs": None,
+            "astraea_eod": {
+                "sortables": ["id", "startTimeFromAscendingNode", "creationDate"],
+                "max_sort_params": None,
+            },
+            "aws_eos": None,
+            "cop_ads": None,
+            "cop_cds": None,
+            "cop_dataspace": {
+                "sortables": [
+                    "startTimeFromAscendingNode",
+                    "completionTimeFromAscendingNode",
+                    "publicationDate",
+                    "modificationDate",
+                ],
+                "max_sort_params": 1,
+            },
             "creodias": {
                 "sortables": [
                     "startTimeFromAscendingNode",
                     "completionTimeFromAscendingNode",
                     "publicationDate",
+                    "modificationDate",
                 ],
                 "max_sort_params": 1,
             },
-            "aws_eos": None,
-            "theia": None,
-            "onda": {
-                "sortables": ["startTimeFromAscendingNode", "uid", "storageStatus"],
+            "creodias_s3": {
+                "sortables": [
+                    "startTimeFromAscendingNode",
+                    "completionTimeFromAscendingNode",
+                    "publicationDate",
+                    "modificationDate",
+                ],
                 "max_sort_params": 1,
             },
-            "astraea_eod": {
-                "sortables": ["id", "startTimeFromAscendingNode", "creationDate"],
+            "dedl": {
                 "max_sort_params": None,
-            },
-            "usgs_satapi_aws": {
                 "sortables": [
                     "id",
                     "startTimeFromAscendingNode",
                     "creationDate",
                     "modificationDate",
                     "platformSerialIdentifier",
-                    "illuminationElevationAngle",
-                    "illuminationAzimuthAngle",
+                    "resolution",
                     "cloudCover",
                 ],
-                "max_sort_params": None,
             },
+            "dedt_lumi": None,
             "earth_search": {
                 "sortables": [
                     "id",
@@ -1450,25 +1465,25 @@ class TestCore(TestCoreBase):
                 ],
                 "max_sort_params": None,
             },
-            "earth_search_cog": {
+            "earth_search_gcs": {
                 "sortables": [
                     "id",
                     "startTimeFromAscendingNode",
                     "creationDate",
                     "modificationDate",
-                    "platform",
                     "platformSerialIdentifier",
                     "resolution",
                     "cloudCover",
                 ],
                 "max_sort_params": None,
             },
-            "earth_search_gcs": {
+            "earth_search_cog": {
                 "sortables": [
                     "id",
                     "startTimeFromAscendingNode",
                     "creationDate",
                     "modificationDate",
+                    "platform",
                     "platformSerialIdentifier",
                     "resolution",
                     "cloudCover",
@@ -1476,25 +1491,26 @@ class TestCore(TestCoreBase):
                 "max_sort_params": None,
             },
             "ecmwf": None,
-            "cop_ads": None,
-            "cop_cds": None,
-            "dedt_lumi": None,
-            "sara": {
+            "eumetsat_ds": {
                 "sortables": [
                     "startTimeFromAscendingNode",
-                    "completionTimeFromAscendingNode",
-                    "sensorMode",
+                    "publicationDate",
                 ],
                 "max_sort_params": 1,
             },
-            "meteoblue": None,
-            "cop_dataspace": {
+            "hydroweb_next": {
                 "sortables": [
+                    "id",
                     "startTimeFromAscendingNode",
                     "completionTimeFromAscendingNode",
-                    "publicationDate",
-                    "modificationDate",
+                    "productVersion",
+                    "processingLevel",
                 ],
+                "max_sort_params": None,
+            },
+            "meteoblue": None,
+            "onda": {
+                "sortables": ["startTimeFromAscendingNode", "uid", "storageStatus"],
                 "max_sort_params": 1,
             },
             "planetary_computer": {
@@ -1505,45 +1521,31 @@ class TestCore(TestCoreBase):
                 ],
                 "max_sort_params": None,
             },
-            "hydroweb_next": {
+            "sara": {
                 "sortables": [
-                    "id",
                     "startTimeFromAscendingNode",
                     "completionTimeFromAscendingNode",
-                    "productVersion",
-                    "processingLevel",
+                    "sensorMode",
                 ],
-                "max_sort_params": None,
+                "max_sort_params": 1,
             },
-            "dedl": {
-                "max_sort_params": None,
+            "theia": None,
+            "usgs": None,
+            "usgs_satapi_aws": {
                 "sortables": [
                     "id",
                     "startTimeFromAscendingNode",
                     "creationDate",
                     "modificationDate",
                     "platformSerialIdentifier",
-                    "resolution",
+                    "illuminationElevationAngle",
+                    "illuminationAzimuthAngle",
                     "cloudCover",
                 ],
+                "max_sort_params": None,
             },
             "wekeo": None,
             "wekeo_cmems": None,
-            "creodias_s3": {
-                "sortables": [
-                    "startTimeFromAscendingNode",
-                    "completionTimeFromAscendingNode",
-                    "publicationDate",
-                ],
-                "max_sort_params": 1,
-            },
-            "eumetsat_ds": {
-                "sortables": [
-                    "startTimeFromAscendingNode",
-                    "publicationDate",
-                ],
-                "max_sort_params": 1,
-            },
         }
         sortables = self.dag.available_sortables()
         self.assertDictEqual(sortables, expected_result)
diff --git a/tests/units/test_search_plugins.py b/tests/units/test_search_plugins.py
index b4be2a8b..dfb8a2ad 100644
--- a/tests/units/test_search_plugins.py
+++ b/tests/units/test_search_plugins.py
@@ -1817,7 +1817,9 @@ class TestSearchPluginCreodiasS3Search(BaseSearchPluginTest):
         super(TestSearchPluginCreodiasS3Search, self).setUp()
         self.provider = "creodias_s3"
 
-    @mock.patch("eodag.plugins.search.qssearch.requests.get", autospec=True)
+    @mock.patch(
+        "eodag.plugins.search.qssearch.QueryStringSearch._request", autospec=True
+    )
     def test_plugins_search_creodias_s3_links(self, mock_request):
         # s3 links should be added to products with register_downloader
         search_plugin = self.get_search_plugin("S1_SAR_GRD", self.provider)
@@ -1829,7 +1831,7 @@ class TestSearchPluginCreodiasS3Search(BaseSearchPluginTest):
         with open(s3_response_file) as f:
             list_objects_response = json.load(f)
         creodias_search_result_file = (
-            Path(TEST_RESOURCES_PATH) / "eodag_search_result_creodias.geojson"
+            Path(TEST_RESOURCES_PATH) / "eodag_search_result_creodias.json"
         )
         with open(creodias_search_result_file) as f:
             creodias_search_result = json.load(f)
@@ -1862,7 +1864,9 @@ class TestSearchPluginCreodiasS3Search(BaseSearchPluginTest):
         for asset in assets.values():
             self.assertIn("s3://eodata/Sentinel-1/SAR/GRD/2014/10/10", asset["href"])
 
-    @mock.patch("eodag.plugins.search.qssearch.requests.get", autospec=True)
+    @mock.patch(
+        "eodag.plugins.search.qssearch.QueryStringSearch._request", autospec=True
+    )
     def test_plugins_search_creodias_s3_client_error(self, mock_request):
         # request error should be raised when there is an error when fetching data from the s3
         search_plugin = self.get_search_plugin("S1_SAR_GRD", self.provider)
@@ -1870,7 +1874,7 @@ class TestSearchPluginCreodiasS3Search(BaseSearchPluginTest):
         stubber = Stubber(client)
 
         creodias_search_result_file = (
-            Path(TEST_RESOURCES_PATH) / "eodag_search_result_creodias.geojson"
+            Path(TEST_RESOURCES_PATH) / "eodag_search_result_creodias.json"
         )
         with open(creodias_search_result_file) as f:
             creodias_search_result = json.load(f)