eodag 4.0.0a1__py3-none-any.whl → 4.0.0a3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- eodag/__init__.py +6 -1
- eodag/api/collection.py +354 -0
- eodag/api/core.py +324 -303
- eodag/api/product/_product.py +15 -29
- eodag/api/product/drivers/__init__.py +2 -42
- eodag/api/product/drivers/base.py +0 -11
- eodag/api/product/metadata_mapping.py +34 -5
- eodag/api/search_result.py +144 -9
- eodag/cli.py +18 -15
- eodag/config.py +37 -3
- eodag/plugins/apis/ecmwf.py +16 -4
- eodag/plugins/apis/usgs.py +18 -7
- eodag/plugins/crunch/filter_latest_intersect.py +1 -0
- eodag/plugins/crunch/filter_overlap.py +3 -7
- eodag/plugins/search/__init__.py +3 -0
- eodag/plugins/search/base.py +6 -6
- eodag/plugins/search/build_search_result.py +157 -56
- eodag/plugins/search/cop_marine.py +48 -8
- eodag/plugins/search/csw.py +18 -8
- eodag/plugins/search/qssearch.py +331 -88
- eodag/plugins/search/static_stac_search.py +11 -12
- eodag/resources/collections.yml +610 -348
- eodag/resources/ext_collections.json +1 -1
- eodag/resources/ext_product_types.json +1 -1
- eodag/resources/providers.yml +334 -62
- eodag/resources/stac_provider.yml +4 -2
- eodag/resources/user_conf_template.yml +9 -0
- eodag/types/__init__.py +2 -0
- eodag/types/queryables.py +16 -0
- eodag/utils/__init__.py +47 -2
- eodag/utils/repr.py +2 -0
- {eodag-4.0.0a1.dist-info → eodag-4.0.0a3.dist-info}/METADATA +4 -2
- {eodag-4.0.0a1.dist-info → eodag-4.0.0a3.dist-info}/RECORD +37 -36
- {eodag-4.0.0a1.dist-info → eodag-4.0.0a3.dist-info}/WHEEL +0 -0
- {eodag-4.0.0a1.dist-info → eodag-4.0.0a3.dist-info}/entry_points.txt +0 -0
- {eodag-4.0.0a1.dist-info → eodag-4.0.0a3.dist-info}/licenses/LICENSE +0 -0
- {eodag-4.0.0a1.dist-info → eodag-4.0.0a3.dist-info}/top_level.txt +0 -0
eodag/resources/providers.yml
CHANGED
|
@@ -91,7 +91,7 @@
|
|
|
91
91
|
results_entry: 'results'
|
|
92
92
|
ssl_verify: true
|
|
93
93
|
pagination:
|
|
94
|
-
next_page_query_obj: '{{"limit":{items_per_page},"page":{
|
|
94
|
+
next_page_query_obj: '{{"limit":{items_per_page},"page":{next_page_token}}}'
|
|
95
95
|
total_items_nb_key_path: '$.meta.found'
|
|
96
96
|
# 2021/04/28: aws_eos doesn't specify a limit in its docs. It says that the default
|
|
97
97
|
# value is 500 (https://doc.eos.com/search.api/#single-dataset-search).
|
|
@@ -521,8 +521,10 @@
|
|
|
521
521
|
need_auth: false
|
|
522
522
|
ssl_verify: true
|
|
523
523
|
pagination:
|
|
524
|
-
next_page_url_tpl: '{url}?{search}&maxRecords={items_per_page}&page={page}'
|
|
525
524
|
total_items_nb_key_path: '$.properties.totalResults'
|
|
525
|
+
next_page_url_tpl: '{url}?{search}&maxRecords={items_per_page}&page={next_page_token}'
|
|
526
|
+
next_page_token_key: page
|
|
527
|
+
|
|
526
528
|
# 2021/03/19: 500 is the max, no error if greater
|
|
527
529
|
max_items_per_page: 500
|
|
528
530
|
discover_metadata:
|
|
@@ -682,6 +684,9 @@
|
|
|
682
684
|
- '%'
|
|
683
685
|
pagination:
|
|
684
686
|
next_page_url_tpl: '{url}?{search}&$top={items_per_page}&$skip={skip}&$expand=Attributes&$expand=Assets'
|
|
687
|
+
next_page_url_key_path: '$.["@odata.nextLink"]'
|
|
688
|
+
next_page_token_key: skip
|
|
689
|
+
parse_url_key: $skip
|
|
685
690
|
count_tpl: '&$count=True'
|
|
686
691
|
total_items_nb_key_path: '$."@odata.count"'
|
|
687
692
|
max_items_per_page: 1_000
|
|
@@ -1330,18 +1335,8 @@
|
|
|
1330
1335
|
# but in practive if an Internal Server Error is returned for more than
|
|
1331
1336
|
# about 500 products.
|
|
1332
1337
|
max_items_per_page: 500
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
- !!python/tuple [start_datetime, ASC]
|
|
1336
|
-
sort_param_mapping:
|
|
1337
|
-
id: id
|
|
1338
|
-
start_datetime: properties.datetime
|
|
1339
|
-
created: properties.created
|
|
1340
|
-
updated: properties.updated
|
|
1341
|
-
platform: properties.platform
|
|
1342
|
-
view:sun_elevation: properties.view:sun_elevation
|
|
1343
|
-
view:sun_azimuth: properties.view:sun_azimuth
|
|
1344
|
-
eo:cloud_cover: properties.eo:cloud_cover
|
|
1338
|
+
next_page_token_key: next
|
|
1339
|
+
# Note: Sorting is intentionally disabled for this provider, as enabling it causes pagination to malfunction.
|
|
1345
1340
|
metadata_mapping:
|
|
1346
1341
|
assets: '{$.assets#from_alternate(s3)}'
|
|
1347
1342
|
products:
|
|
@@ -1406,6 +1401,8 @@
|
|
|
1406
1401
|
# next page retrieval mechanism, `next_page_url_tpl` will be used instead (inherited from StacSearch)
|
|
1407
1402
|
# Remove that entry if Earth Search updates that and returns a valid link.
|
|
1408
1403
|
next_page_url_key_path: null
|
|
1404
|
+
next_page_query_obj_key_path: null
|
|
1405
|
+
next_page_token_key: page
|
|
1409
1406
|
# 2021/04/28: Earth-Search relies on Sat-API whose docs (http://sat-utils.github.io/sat-api/#search-stac-items-by-simple-filtering-)
|
|
1410
1407
|
# say the max is 10_000. In practice a too high number (e.g. 5_000) returns a 502 error ({"message": "Internal server error"}).
|
|
1411
1408
|
# Let's set it to a more robust number: 500
|
|
@@ -1471,7 +1468,6 @@
|
|
|
1471
1468
|
type: AwsAuth
|
|
1472
1469
|
matching_url: s3://
|
|
1473
1470
|
requester_pays: True
|
|
1474
|
-
|
|
1475
1471
|
---
|
|
1476
1472
|
!provider # MARK: earth_search_gcs
|
|
1477
1473
|
name: earth_search_gcs
|
|
@@ -1496,6 +1492,8 @@
|
|
|
1496
1492
|
# next page retrieval mechanism, `next_page_url_tpl` will be used instead (inherited from StacSearch)
|
|
1497
1493
|
# Remove that entry if Earth Search updates that and returns a valid link.
|
|
1498
1494
|
next_page_url_key_path: null
|
|
1495
|
+
next_page_query_obj_key_path: null
|
|
1496
|
+
next_page_token_key: page
|
|
1499
1497
|
# 2021/04/28: Earth-Search relies on Sat-API whose docs (http://sat-utils.github.io/sat-api/#search-stac-items-by-simple-filtering-)
|
|
1500
1498
|
# say the max is 10_000. In practice a too high number (e.g. 5_000) returns a 502 error ({"message": "Internal server error"}).
|
|
1501
1499
|
# Let's set it to a more robust number: 500
|
|
@@ -1635,7 +1633,6 @@
|
|
|
1635
1633
|
ssl_verify: true
|
|
1636
1634
|
timeout: 30
|
|
1637
1635
|
end_date_excluded: false
|
|
1638
|
-
dates_required: true
|
|
1639
1636
|
remove_from_query:
|
|
1640
1637
|
- dataset
|
|
1641
1638
|
discover_queryables:
|
|
@@ -1807,7 +1804,6 @@
|
|
|
1807
1804
|
ssl_verify: true
|
|
1808
1805
|
timeout: 30
|
|
1809
1806
|
end_date_excluded: false
|
|
1810
|
-
dates_required: true
|
|
1811
1807
|
remove_from_query:
|
|
1812
1808
|
- dataset
|
|
1813
1809
|
- date
|
|
@@ -1861,7 +1857,7 @@
|
|
|
1861
1857
|
UERRA_EUROPE_SL:
|
|
1862
1858
|
dataset: reanalysis-uerra-europe-single-levels
|
|
1863
1859
|
metadata_mapping:
|
|
1864
|
-
<<: *
|
|
1860
|
+
<<: *time_day_month_year
|
|
1865
1861
|
GLACIERS_DIST_RANDOLPH:
|
|
1866
1862
|
dataset: insitu-glaciers-extent
|
|
1867
1863
|
GRIDDED_GLACIERS_MASS_CHANGE:
|
|
@@ -1950,8 +1946,9 @@
|
|
|
1950
1946
|
need_auth: false
|
|
1951
1947
|
ssl_verify: true
|
|
1952
1948
|
pagination:
|
|
1953
|
-
next_page_url_tpl: '{url}?{search}&maxRecords={items_per_page}&page={
|
|
1949
|
+
next_page_url_tpl: '{url}?{search}&maxRecords={items_per_page}&page={next_page_token}'
|
|
1954
1950
|
total_items_nb_key_path: '$.properties.totalResults'
|
|
1951
|
+
next_page_token_key: page
|
|
1955
1952
|
# 2021/03/19: 500 is the max, no error if greater
|
|
1956
1953
|
max_items_per_page: 500
|
|
1957
1954
|
sort:
|
|
@@ -2333,6 +2330,9 @@
|
|
|
2333
2330
|
- '%'
|
|
2334
2331
|
pagination:
|
|
2335
2332
|
next_page_url_tpl: '{url}?{search}&$top={items_per_page}&$skip={skip}&$expand=Attributes&$expand=Assets'
|
|
2333
|
+
next_page_url_key_path: '$.["@odata.nextLink"]'
|
|
2334
|
+
next_page_token_key: skip
|
|
2335
|
+
parse_url_key: $skip
|
|
2336
2336
|
count_tpl: '&$count=True'
|
|
2337
2337
|
total_items_nb_key_path: '$."@odata.count"'
|
|
2338
2338
|
max_items_per_page: 1_000
|
|
@@ -2962,6 +2962,7 @@
|
|
|
2962
2962
|
ssl_verify: true
|
|
2963
2963
|
pagination:
|
|
2964
2964
|
max_items_per_page: 1000
|
|
2965
|
+
next_page_token_key: token
|
|
2965
2966
|
sort:
|
|
2966
2967
|
sort_param_mapping:
|
|
2967
2968
|
id: id
|
|
@@ -3022,6 +3023,9 @@
|
|
|
3022
3023
|
collection_fetch_url: null
|
|
3023
3024
|
pagination:
|
|
3024
3025
|
max_items_per_page: 10_000
|
|
3026
|
+
next_page_url_key_path: null
|
|
3027
|
+
next_page_query_obj_key_path: null
|
|
3028
|
+
next_page_token_key: page
|
|
3025
3029
|
sort:
|
|
3026
3030
|
sort_by_default:
|
|
3027
3031
|
- !!python/tuple [start_datetime, ASC]
|
|
@@ -3107,8 +3111,9 @@
|
|
|
3107
3111
|
results_entry: 'features'
|
|
3108
3112
|
pagination:
|
|
3109
3113
|
total_items_nb_key_path: '$.properties.totalResults'
|
|
3110
|
-
next_page_query_obj: '{{"itemsPerPage":{items_per_page},"startIndex":{
|
|
3114
|
+
next_page_query_obj: '{{"itemsPerPage":{items_per_page},"startIndex":{next_page_token}}}'
|
|
3111
3115
|
max_items_per_page: 200
|
|
3116
|
+
next_page_token_key: skip
|
|
3112
3117
|
discover_collections:
|
|
3113
3118
|
fetch_url: null
|
|
3114
3119
|
discover_queryables:
|
|
@@ -3327,25 +3332,6 @@
|
|
|
3327
3332
|
_collection: EO:ESA:DAT:SENTINEL-5P
|
|
3328
3333
|
processing:level: L2
|
|
3329
3334
|
metadata_mapping_from_product: S5P_L1B_IR_ALL
|
|
3330
|
-
EEA_DAILY_VI:
|
|
3331
|
-
_collection: EO:EEA:DAT:CLMS_HRVPP_VI
|
|
3332
|
-
metadata_mapping:
|
|
3333
|
-
id:
|
|
3334
|
-
- '{{"uid": "{id}"}}'
|
|
3335
|
-
- '$.id'
|
|
3336
|
-
sat:relative_orbit:
|
|
3337
|
-
- '{{"relativeOrbitNumber": "{sat:relative_orbit}"}}'
|
|
3338
|
-
- '$.null'
|
|
3339
|
-
version:
|
|
3340
|
-
- '{{"productVersion": "{version}"}}'
|
|
3341
|
-
- '$.null'
|
|
3342
|
-
platform:
|
|
3343
|
-
- '{{"platformSerialIdentifier": "{platform}"}}'
|
|
3344
|
-
- '$.id.`sub(/^[^_]+_[^_]+_([^_]+)_.*/, \\1)`'
|
|
3345
|
-
grid:code:
|
|
3346
|
-
- '{{"tileId": "{grid:code}"}}'
|
|
3347
|
-
- '$.null'
|
|
3348
|
-
eodag:order_link: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{eodag:download_link}","product_id":"{id}", "dataset_id": "EO:EEA:DAT:CLMS_HRVPP_VI"}}'
|
|
3349
3335
|
EEA_HRL_TCF:
|
|
3350
3336
|
product:type: EO:EEA:DAT:HRL:TCF
|
|
3351
3337
|
metadata_mapping:
|
|
@@ -3435,6 +3421,34 @@
|
|
|
3435
3421
|
metadata_mapping_from_product: CLMS_GLO_FCOVER_333M
|
|
3436
3422
|
metadata_mapping:
|
|
3437
3423
|
eodag:order_link: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{eodag:download_link}","product_id":"{id}", "dataset_id": "EO:CLMS:DAT:CLMS_GLOBAL_LAI_300M_V1_10DAILY_NETCDF"}}'
|
|
3424
|
+
CLMS_HRVPP_ST:
|
|
3425
|
+
_collection: EO:EEA:DAT:CLMS_HRVPP_ST
|
|
3426
|
+
metadata_mapping:
|
|
3427
|
+
id:
|
|
3428
|
+
- '{{"uid": "{id}"}}'
|
|
3429
|
+
- '$.id'
|
|
3430
|
+
eodag:order_link: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{eodag:download_link}","product_id":"{id}", "dataset_id": "EO:EEA:DAT:CLMS_HRVPP_ST"}}'
|
|
3431
|
+
CLMS_HRVPP_ST_LAEA:
|
|
3432
|
+
_collection: EO:EEA:DAT:CLMS_HRVPP_ST-LAEA
|
|
3433
|
+
metadata_mapping:
|
|
3434
|
+
id:
|
|
3435
|
+
- '{{"uid": "{id}"}}'
|
|
3436
|
+
- '$.id'
|
|
3437
|
+
eodag:order_link: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{eodag:download_link}","product_id":"{id}", "dataset_id": "EO:EEA:DAT:CLMS_HRVPP_ST-LAEA"}}'
|
|
3438
|
+
CLMS_HRVPP_VPP:
|
|
3439
|
+
_collection: EO:EEA:DAT:CLMS_HRVPP_VPP
|
|
3440
|
+
metadata_mapping:
|
|
3441
|
+
id:
|
|
3442
|
+
- '{{"uid": "{id}"}}'
|
|
3443
|
+
- '$.id'
|
|
3444
|
+
eodag:order_link: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{eodag:download_link}","product_id":"{id}", "dataset_id": "EO:EEA:DAT:CLMS_HRVPP_VPP"}}'
|
|
3445
|
+
CLMS_HRVPP_VPP_LAEA:
|
|
3446
|
+
_collection: EO:EEA:DAT:CLMS_HRVPP_VPP-LAEA
|
|
3447
|
+
metadata_mapping:
|
|
3448
|
+
id:
|
|
3449
|
+
- '{{"uid": "{id}"}}'
|
|
3450
|
+
- '$.id'
|
|
3451
|
+
eodag:order_link: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{eodag:download_link}","product_id":"{id}", "dataset_id": "EO:EEA:DAT:CLMS_HRVPP_VPP-LAEA"}}'
|
|
3438
3452
|
auth: !plugin
|
|
3439
3453
|
type: TokenAuth
|
|
3440
3454
|
matching_url: https://[-\w\.]+.wekeo2.eu
|
|
@@ -3520,15 +3534,49 @@
|
|
|
3520
3534
|
timeout: 60
|
|
3521
3535
|
need_auth: true
|
|
3522
3536
|
auth_error_code: 401
|
|
3523
|
-
dates_required: true
|
|
3524
3537
|
results_entry: 'features'
|
|
3525
3538
|
pagination:
|
|
3526
3539
|
total_items_nb_key_path: '$.properties.totalResults'
|
|
3527
|
-
next_page_query_obj: '{{"itemsPerPage":{items_per_page},"startIndex":{
|
|
3540
|
+
next_page_query_obj: '{{"itemsPerPage":{items_per_page},"startIndex":{next_page_token}}}'
|
|
3541
|
+
next_page_token_key: skip
|
|
3528
3542
|
max_items_per_page: 200
|
|
3529
3543
|
discover_collections:
|
|
3530
3544
|
fetch_url: null
|
|
3531
|
-
|
|
3545
|
+
dynamic_discover_queryables:
|
|
3546
|
+
- collection_selector: # cop_ads
|
|
3547
|
+
- field: dataset
|
|
3548
|
+
prefix: EO:ECMWF:DAT:CAMS
|
|
3549
|
+
discover_queryables:
|
|
3550
|
+
fetch_url: null
|
|
3551
|
+
product_type_fetch_url: null
|
|
3552
|
+
constraints_url: https://ads.atmosphere.copernicus.eu/api/catalogue/v1/collections/{dataset#wekeo_to_cop_collection(EO:ECMWF:DAT:)}/constraints.json
|
|
3553
|
+
form_url: https://ads.atmosphere.copernicus.eu/api/catalogue/v1/collections/{dataset#wekeo_to_cop_collection(EO:ECMWF:DAT:)}/form.json
|
|
3554
|
+
- collection_selector: # cop_cds
|
|
3555
|
+
- field: dataset
|
|
3556
|
+
prefix: EO:ECMWF:DAT:SATELLITE
|
|
3557
|
+
- field: dataset
|
|
3558
|
+
prefix: EO:ECMWF:DAT:SEASONAL
|
|
3559
|
+
- field: dataset
|
|
3560
|
+
prefix: EO:ECMWF:DAT:INSITU
|
|
3561
|
+
- field: dataset
|
|
3562
|
+
prefix: EO:ECMWF:DAT:DERIVED
|
|
3563
|
+
- field: dataset
|
|
3564
|
+
prefix: EO:ECMWF:DAT:REANALYSIS
|
|
3565
|
+
- field: dataset
|
|
3566
|
+
prefix: EO:ECMWF:DAT:SIS
|
|
3567
|
+
discover_queryables:
|
|
3568
|
+
fetch_url: null
|
|
3569
|
+
collection_fetch_url: null
|
|
3570
|
+
constraints_url: https://cds.climate.copernicus.eu/api/catalogue/v1/collections/{dataset#wekeo_to_cop_collection(EO:ECMWF:DAT:)}/constraints.json
|
|
3571
|
+
form_url: https://cds.climate.copernicus.eu/api/catalogue/v1/collections/{dataset#wekeo_to_cop_collection(EO:ECMWF:DAT:)}/form.json
|
|
3572
|
+
- collection_selector: # cop_ewds
|
|
3573
|
+
- field: dataset
|
|
3574
|
+
prefix: EO:ECMWF:DAT:CEMS
|
|
3575
|
+
discover_queryables:
|
|
3576
|
+
fetch_url: null
|
|
3577
|
+
product_type_fetch_url: null
|
|
3578
|
+
constraints_url: https://ewds.climate.copernicus.eu/api/catalogue/v1/collections/{dataset#wekeo_to_cop_collection(EO:ECMWF:DAT:)}/constraints.json
|
|
3579
|
+
form_url: https://ewds.climate.copernicus.eu/api/catalogue/v1/collections/{dataset#wekeo_to_cop_collection(EO:ECMWF:DAT:)}/form.json
|
|
3532
3580
|
metadata_mapping:
|
|
3533
3581
|
geometry:
|
|
3534
3582
|
- '{{"bbox": {geometry#to_bounds}}}'
|
|
@@ -3773,7 +3821,8 @@
|
|
|
3773
3821
|
results_entry: 'features'
|
|
3774
3822
|
pagination:
|
|
3775
3823
|
total_items_nb_key_path: '$.properties.totalResults'
|
|
3776
|
-
next_page_query_obj: '{{"itemsPerPage":{items_per_page},"startIndex":{
|
|
3824
|
+
next_page_query_obj: '{{"itemsPerPage":{items_per_page},"startIndex":{next_page_token}}}'
|
|
3825
|
+
next_page_token_key: skip
|
|
3777
3826
|
discover_collections:
|
|
3778
3827
|
fetch_url: https://gateway.prod.wekeo2.eu/hda-broker/api/v1/datasets?itemsPerPage=1400&q=EO:MO
|
|
3779
3828
|
single_collection_fetch_qs: q={_collection}
|
|
@@ -3793,7 +3842,7 @@
|
|
|
3793
3842
|
title: '$.metadata._source.datasetTitle'
|
|
3794
3843
|
_mission_start_date: '$.metadata._source.tempextent_begin'
|
|
3795
3844
|
_mission_end_date: '$.metadata._source.tempextent_end'
|
|
3796
|
-
extent: '{{"temporal": {{"interval": [[{_mission_start_date}, {_mission_end_date}]]}}}}'
|
|
3845
|
+
extent: '{{"spatial": {{"bbox": [[[[-180.0, -90.0, 180.0, 90.0]]]]}}, "temporal": {{"interval": [[{_mission_start_date}, {_mission_end_date}]]}}}}'
|
|
3797
3846
|
processing:level: '$.null'
|
|
3798
3847
|
keywords: '$.metadata._source.keywords'
|
|
3799
3848
|
discover_queryables:
|
|
@@ -3888,6 +3937,9 @@
|
|
|
3888
3937
|
next_page_url_tpl: '{url}?{search}&$top={items_per_page}&$skip={skip}&$expand=Attributes&$expand=Assets'
|
|
3889
3938
|
count_tpl: '&$count=True'
|
|
3890
3939
|
total_items_nb_key_path: '$."@odata.count"'
|
|
3940
|
+
next_page_url_key_path: '$.["@odata.nextLink"]'
|
|
3941
|
+
next_page_token_key: skip
|
|
3942
|
+
parse_url_key: $skip
|
|
3891
3943
|
max_items_per_page: 1_000
|
|
3892
3944
|
sort:
|
|
3893
3945
|
sort_by_default:
|
|
@@ -4521,7 +4573,7 @@
|
|
|
4521
4573
|
discover_queryables:
|
|
4522
4574
|
fetch_url: null
|
|
4523
4575
|
collection_fetch_url: null
|
|
4524
|
-
constraints_url: "https://s3.central.data.destination-earth.eu/swift/v1/
|
|
4576
|
+
constraints_url: "https://s3.central.data.destination-earth.eu/swift/v1/constraints/dedt_lumi/{dataset}_{activity}_{experiment}_{model}.json"
|
|
4525
4577
|
metadata_mapping:
|
|
4526
4578
|
geometry:
|
|
4527
4579
|
- '{{"feature": {geometry#to_geojson_polytope}}}'
|
|
@@ -4536,10 +4588,131 @@
|
|
|
4536
4588
|
qs: $.qs
|
|
4537
4589
|
eodag:order_link: 'https://polytope.lumi.apps.dte.destination-earth.eu/api/v1/requests/destination-earth?{{"verb": "retrieve", "request": {qs#to_geojson} }}'
|
|
4538
4590
|
products:
|
|
4591
|
+
DT_CLIMATE_ADAPTATION:
|
|
4592
|
+
discover_queryables:
|
|
4593
|
+
constraints_url: "https://s3.central.data.destination-earth.eu/swift/v1/dedt-lumi-constraints/{dataset}.json"
|
|
4594
|
+
dataset: climate-dt
|
|
4539
4595
|
DT_EXTREMES:
|
|
4596
|
+
discover_queryables:
|
|
4597
|
+
constraints_url: "https://s3.central.data.destination-earth.eu/swift/v1/dedt-lumi-constraints/{dataset}.json"
|
|
4540
4598
|
dataset: extremes-dt
|
|
4541
|
-
|
|
4599
|
+
class: d1
|
|
4600
|
+
expver: "0001"
|
|
4601
|
+
type: fc
|
|
4602
|
+
time: "0000"
|
|
4603
|
+
DT_CLIMATE_G1_CMIP6_HIST_ICON_R1:
|
|
4604
|
+
dataset: climate-dt
|
|
4605
|
+
class: d1
|
|
4606
|
+
generation: "1"
|
|
4607
|
+
expver: "0001"
|
|
4608
|
+
stream: clte
|
|
4609
|
+
type: fc
|
|
4610
|
+
activity: CMIP6
|
|
4611
|
+
realization: "1"
|
|
4612
|
+
model: ICON
|
|
4613
|
+
resolution: high
|
|
4614
|
+
experiment: hist
|
|
4615
|
+
DT_CLIMATE_G1_CMIP6_HIST_IFS_NEMO_R1:
|
|
4616
|
+
dataset: climate-dt
|
|
4617
|
+
class: d1
|
|
4618
|
+
generation: "1"
|
|
4619
|
+
expver: "0001"
|
|
4620
|
+
stream: clte
|
|
4621
|
+
type: fc
|
|
4622
|
+
activity: CMIP6
|
|
4623
|
+
experiment: hist
|
|
4624
|
+
realization: "1"
|
|
4625
|
+
model: IFS-NEMO
|
|
4626
|
+
DT_CLIMATE_G1_HIGHRESMIP_CONT_IFS_NEMO_R1:
|
|
4627
|
+
dataset: climate-dt
|
|
4628
|
+
class: d1
|
|
4629
|
+
generation: "1"
|
|
4630
|
+
expver: "0001"
|
|
4631
|
+
stream: clte
|
|
4632
|
+
type: fc
|
|
4633
|
+
activity: HighResMIP
|
|
4634
|
+
experiment: cont
|
|
4635
|
+
realization: "1"
|
|
4636
|
+
model: IFS-NEMO
|
|
4637
|
+
resolution: high
|
|
4638
|
+
DT_CLIMATE_G1_SCENARIOMIP_SSP3_7_0_ICON_R1:
|
|
4639
|
+
dataset: climate-dt
|
|
4640
|
+
class: d1
|
|
4641
|
+
generation: "1"
|
|
4642
|
+
expver: "0001"
|
|
4643
|
+
stream: clte
|
|
4644
|
+
type: fc
|
|
4645
|
+
activity: ScenarioMIP
|
|
4646
|
+
experiment: SSP3-7.0
|
|
4647
|
+
realization: "1"
|
|
4648
|
+
model: ICON
|
|
4649
|
+
resolution: high
|
|
4650
|
+
DT_CLIMATE_G1_SCENARIOMIP_SSP3_7_0_IFS_NEMO_R1:
|
|
4651
|
+
dataset: climate-dt
|
|
4652
|
+
class: d1
|
|
4653
|
+
generation: "1"
|
|
4654
|
+
expver: "0001"
|
|
4655
|
+
stream: clte
|
|
4656
|
+
type: fc
|
|
4657
|
+
activity: ScenarioMIP
|
|
4658
|
+
experiment: SSP3-7.0
|
|
4659
|
+
realization: "1"
|
|
4660
|
+
model: IFS-NEMO
|
|
4661
|
+
DT_CLIMATE_G1_STORY_NUDGING_CONT_IFS_FESOM_R1:
|
|
4662
|
+
dataset: climate-dt
|
|
4663
|
+
class: d1
|
|
4664
|
+
generation: "1"
|
|
4665
|
+
expver: "0001"
|
|
4666
|
+
stream: clte
|
|
4667
|
+
type: fc
|
|
4668
|
+
activity: story-nudging
|
|
4669
|
+
experiment: cont
|
|
4670
|
+
realization: "1"
|
|
4671
|
+
model: IFS-FESOM
|
|
4672
|
+
DT_CLIMATE_G1_STORY_NUDGING_HIST_IFS_FESOM_R1:
|
|
4542
4673
|
dataset: climate-dt
|
|
4674
|
+
class: d1
|
|
4675
|
+
generation: "1"
|
|
4676
|
+
expver: "0001"
|
|
4677
|
+
stream: clte
|
|
4678
|
+
type: fc
|
|
4679
|
+
activity: story-nudging
|
|
4680
|
+
experiment: hist
|
|
4681
|
+
realization: "1"
|
|
4682
|
+
model: IFS-FESOM
|
|
4683
|
+
DT_CLIMATE_G1_STORY_NUDGING_TPLUS2_0K_IFS_FESOM_R1:
|
|
4684
|
+
dataset: climate-dt
|
|
4685
|
+
class: d1
|
|
4686
|
+
generation: "1"
|
|
4687
|
+
expver: "0001"
|
|
4688
|
+
stream: clte
|
|
4689
|
+
type: fc
|
|
4690
|
+
activity: story-nudging
|
|
4691
|
+
experiment: Tplus2.0K
|
|
4692
|
+
realization: "1"
|
|
4693
|
+
model: IFS-FESOM
|
|
4694
|
+
DT_CLIMATE_G1_CMIP6_HIST_IFS_FESOM_R1:
|
|
4695
|
+
dataset: climate-dt
|
|
4696
|
+
class: ng
|
|
4697
|
+
generation: "1"
|
|
4698
|
+
expver: "0001"
|
|
4699
|
+
stream: clte
|
|
4700
|
+
type: fc
|
|
4701
|
+
activity: CMIP6
|
|
4702
|
+
experiment: hist
|
|
4703
|
+
realization: "1"
|
|
4704
|
+
model: IFS-FESOM
|
|
4705
|
+
DT_CLIMATE_G1_SCENARIOMIP_SSP3_7_0_IFS_FESOM_R2:
|
|
4706
|
+
dataset: climate-dt
|
|
4707
|
+
class: d1
|
|
4708
|
+
generation: "1"
|
|
4709
|
+
expver: "0001"
|
|
4710
|
+
stream: clte
|
|
4711
|
+
type: fc
|
|
4712
|
+
activity: ScenarioMIP
|
|
4713
|
+
experiment: SSP3-7.0
|
|
4714
|
+
realization: "2"
|
|
4715
|
+
model: IFS-FESOM
|
|
4543
4716
|
download: !plugin
|
|
4544
4717
|
type: HTTPDownload
|
|
4545
4718
|
ssl_verify: true
|
|
@@ -4569,9 +4742,6 @@
|
|
|
4569
4742
|
metadata_mapping:
|
|
4570
4743
|
eodag:download_link: $.headers.Location
|
|
4571
4744
|
no_auth_download: True
|
|
4572
|
-
products:
|
|
4573
|
-
DT_EXTREMES:
|
|
4574
|
-
DT_CLIMATE_ADAPTATION:
|
|
4575
4745
|
auth: !plugin
|
|
4576
4746
|
type: OIDCAuthorizationCodeFlowAuth
|
|
4577
4747
|
oidc_config_url: https://auth.destine.eu/realms/desp/.well-known/openid-configuration
|
|
@@ -4583,7 +4753,98 @@
|
|
|
4583
4753
|
login_form_xpath: //form[@id='kc-form-login']
|
|
4584
4754
|
authentication_uri_source: login-form
|
|
4585
4755
|
---
|
|
4586
|
-
|
|
4756
|
+
!provider # MARK: dedt_mn5
|
|
4757
|
+
name: dedt_mn5
|
|
4758
|
+
priority: 0
|
|
4759
|
+
roles:
|
|
4760
|
+
- host
|
|
4761
|
+
description: Destination Earth Digital Twin Outputs from marenostrum through Polytope API
|
|
4762
|
+
url: https://polytope.mn5.apps.dte.destination-earth.eu/openapi
|
|
4763
|
+
search: !plugin
|
|
4764
|
+
type: ECMWFSearch
|
|
4765
|
+
need_auth: true
|
|
4766
|
+
ssl_verify: true
|
|
4767
|
+
dates_required: True
|
|
4768
|
+
discover_queryables:
|
|
4769
|
+
fetch_url: null
|
|
4770
|
+
collection_fetch_url: null
|
|
4771
|
+
constraints_url: "https://s3.central.data.destination-earth.eu/swift/v1/constraints/dedt_mn5/{dataset}_{activity}_{experiment}_{model}.json"
|
|
4772
|
+
metadata_mapping:
|
|
4773
|
+
geometry:
|
|
4774
|
+
- '{{"feature": {geometry#to_geojson_polytope}}}'
|
|
4775
|
+
- "$.geometry"
|
|
4776
|
+
start_datetime: '{$.start_datetime#to_iso_utc_datetime}'
|
|
4777
|
+
end_datetime:
|
|
4778
|
+
- '{{"date": "{start_datetime#to_non_separated_date}/to/{end_datetime#to_non_separated_date}"}}'
|
|
4779
|
+
- '{$.end_datetime#to_iso_utc_datetime}'
|
|
4780
|
+
product:type:
|
|
4781
|
+
- dataset
|
|
4782
|
+
- $.dataset
|
|
4783
|
+
qs: $.qs
|
|
4784
|
+
eodag:order_link: 'https://polytope.mn5.apps.dte.destination-earth.eu/api/v1/requests/destination-earth?{{"verb": "retrieve", "request": {qs#to_geojson} }}'
|
|
4785
|
+
products:
|
|
4786
|
+
DT_CLIMATE_G1_HIGHRESMIP_CONT_IFS_FESOM_R1:
|
|
4787
|
+
dataset: climate-dt
|
|
4788
|
+
class: d1
|
|
4789
|
+
generation: "1"
|
|
4790
|
+
expver: "0001"
|
|
4791
|
+
stream: clte
|
|
4792
|
+
type: fc
|
|
4793
|
+
activity: HighResMIP
|
|
4794
|
+
experiment: cont
|
|
4795
|
+
realization: "1"
|
|
4796
|
+
model: IFS-FESOM
|
|
4797
|
+
DT_CLIMATE_G1_SCENARIOMIP_SSP3_7_0_IFS_FESOM_R1:
|
|
4798
|
+
class: d1
|
|
4799
|
+
dataset: climate-dt
|
|
4800
|
+
generation: "1"
|
|
4801
|
+
expver: "0001"
|
|
4802
|
+
stream: clte
|
|
4803
|
+
type: fc
|
|
4804
|
+
activity: ScenarioMIP
|
|
4805
|
+
experiment: SSP3-7.0
|
|
4806
|
+
realization: "1"
|
|
4807
|
+
model: IFS-FESOM
|
|
4808
|
+
download: !plugin
|
|
4809
|
+
type: HTTPDownload
|
|
4810
|
+
ssl_verify: true
|
|
4811
|
+
auth_error_code: 401
|
|
4812
|
+
order_enabled: True
|
|
4813
|
+
order_method: POST
|
|
4814
|
+
order_on_response:
|
|
4815
|
+
metadata_mapping:
|
|
4816
|
+
eodag:order_id: '{$.headers.Location#slice_str(-36,,1)}'
|
|
4817
|
+
_previous_order_id: '{$.json.eodag:order_id#replace_str("Not Available","")}'
|
|
4818
|
+
eodag:combined_order_id: '{eodag:order_id#replace_str("Not Available","")}{_previous_order_id}'
|
|
4819
|
+
eodag:status_link: "https://polytope.mn5.apps.dte.destination-earth.eu/api/v1/requests/{eodag:combined_order_id#replace_str(r'^$','Not Available')}"
|
|
4820
|
+
order_status:
|
|
4821
|
+
request:
|
|
4822
|
+
method: GET
|
|
4823
|
+
headers:
|
|
4824
|
+
metadata_mapping:
|
|
4825
|
+
eodag:order_status: $.json.status
|
|
4826
|
+
eodag:order_message: $.json.message
|
|
4827
|
+
error_message: $.null
|
|
4828
|
+
success:
|
|
4829
|
+
http_code: 303
|
|
4830
|
+
error:
|
|
4831
|
+
eodag:order_status: failed
|
|
4832
|
+
on_success:
|
|
4833
|
+
result_type: json
|
|
4834
|
+
metadata_mapping:
|
|
4835
|
+
eodag:download_link: $.headers.Location
|
|
4836
|
+
no_auth_download: True
|
|
4837
|
+
auth: !plugin
|
|
4838
|
+
type: OIDCAuthorizationCodeFlowAuth
|
|
4839
|
+
oidc_config_url: https://auth.destine.eu/realms/desp/.well-known/openid-configuration
|
|
4840
|
+
redirect_uri: https://polytope.lumi.apps.dte.destination-earth.eu/
|
|
4841
|
+
client_id: polytope-api-public
|
|
4842
|
+
user_consent_needed: false
|
|
4843
|
+
token_exchange_post_data_method: data
|
|
4844
|
+
token_provision: header
|
|
4845
|
+
login_form_xpath: //form[@id='kc-form-login']
|
|
4846
|
+
authentication_uri_source: login-form
|
|
4847
|
+
---
|
|
4587
4848
|
!provider # MARK: dedl
|
|
4588
4849
|
name: dedl
|
|
4589
4850
|
priority: 0
|
|
@@ -4622,8 +4883,8 @@
|
|
|
4622
4883
|
title: '$.title'
|
|
4623
4884
|
extent: '$.extent'
|
|
4624
4885
|
pagination:
|
|
4625
|
-
next_page_url_key_path: null
|
|
4626
4886
|
max_items_per_page: 100
|
|
4887
|
+
next_page_token_key: page
|
|
4627
4888
|
sort:
|
|
4628
4889
|
sort_param_mapping:
|
|
4629
4890
|
id: id
|
|
@@ -4999,8 +5260,6 @@
|
|
|
4999
5260
|
_collection: EO.CLMS.DAT.GLO.NDVI_1KM_V2
|
|
5000
5261
|
CLMS_GLO_NDVI_333M:
|
|
5001
5262
|
_collection: EO.CLMS.DAT.GLO.NDVI300_V1
|
|
5002
|
-
EEA_DAILY_VI:
|
|
5003
|
-
_collection: EO.CLMS.DAT.SENTINEL-2.HRVPP.VI
|
|
5004
5263
|
# Landsat data
|
|
5005
5264
|
LANDSAT_C2L1:
|
|
5006
5265
|
_collection: EO.NASA.DAT.LANDSAT.C2_L1
|
|
@@ -5158,7 +5417,7 @@
|
|
|
5158
5417
|
- '&'
|
|
5159
5418
|
asset_key_from_href: false
|
|
5160
5419
|
pagination:
|
|
5161
|
-
next_page_url_tpl: '{url}?{search}&c={items_per_page}&pw={
|
|
5420
|
+
next_page_url_tpl: '{url}?{search}&c={items_per_page}&pw={next_page_token}'
|
|
5162
5421
|
start_page: 0
|
|
5163
5422
|
total_items_nb_key_path: '$.totalResults'
|
|
5164
5423
|
# 2024/02/01: 500 is the max, no error if greater
|
|
@@ -5536,7 +5795,7 @@
|
|
|
5536
5795
|
MSG_CTH_IODC:
|
|
5537
5796
|
_collection: EO:EUM:DAT:MSG:CTH-IODC
|
|
5538
5797
|
HIRS_FDR_1_MULTI:
|
|
5539
|
-
_collection: EO:EUM:DAT:
|
|
5798
|
+
_collection: EO:EUM:DAT:0961
|
|
5540
5799
|
MSG_OCA_CDR:
|
|
5541
5800
|
_collection: EO:EUM:DAT:0617
|
|
5542
5801
|
S6_RADIO_OCCULTATION:
|
|
@@ -5784,8 +6043,11 @@
|
|
|
5784
6043
|
limit: 10000
|
|
5785
6044
|
pagination:
|
|
5786
6045
|
total_items_nb_key_path: '$.context.matched'
|
|
5787
|
-
|
|
5788
|
-
|
|
6046
|
+
next_page_url_key_path: null
|
|
6047
|
+
next_page_query_obj_key_path: null
|
|
6048
|
+
next_page_token_key: page
|
|
6049
|
+
# As of 2025/11/21 the geodes API documentation (https://geodes.cnes.fr/support/api/) states that pagination must be limited to 80.
|
|
6050
|
+
max_items_per_page: 80
|
|
5789
6051
|
sort:
|
|
5790
6052
|
sort_by_tpl: '{{"sortBy": [ {{"field": "{sort_param}", "direction": "{sort_order}" }} ] }}'
|
|
5791
6053
|
sort_by_default:
|
|
@@ -5911,8 +6173,11 @@
|
|
|
5911
6173
|
limit: 10000
|
|
5912
6174
|
pagination:
|
|
5913
6175
|
total_items_nb_key_path: '$.context.matched'
|
|
5914
|
-
|
|
5915
|
-
|
|
6176
|
+
next_page_url_key_path: null
|
|
6177
|
+
next_page_query_obj_key_path: null
|
|
6178
|
+
next_page_token_key: page
|
|
6179
|
+
# As of 2025/11/21 the geodes API documentation (https://geodes.cnes.fr/support/api/) states that pagination must be limited to 80.
|
|
6180
|
+
max_items_per_page: 80
|
|
5916
6181
|
sort:
|
|
5917
6182
|
sort_by_tpl: '{{"sortBy": [ {{"field": "{sort_param}", "direction": "{sort_order}" }} ] }}'
|
|
5918
6183
|
sort_by_default:
|
|
@@ -6116,7 +6381,6 @@
|
|
|
6116
6381
|
need_auth: true
|
|
6117
6382
|
ssl_verify: true
|
|
6118
6383
|
end_date_excluded: false
|
|
6119
|
-
dates_required: True
|
|
6120
6384
|
remove_from_query:
|
|
6121
6385
|
- dataset
|
|
6122
6386
|
- date
|
|
@@ -6201,6 +6465,14 @@
|
|
|
6201
6465
|
api_endpoint: 'https://fedeo.ceos.org/search'
|
|
6202
6466
|
ssl_verify: true
|
|
6203
6467
|
timeout: 60
|
|
6468
|
+
pagination:
|
|
6469
|
+
next_page_url_tpl: '{url}?startRecord={next_page_token}'
|
|
6470
|
+
next_page_query_obj: '{{"limit":{items_per_page}}}'
|
|
6471
|
+
next_page_token_key: skip
|
|
6472
|
+
# startRecord is equivalent to skip + 1, so make skip start at page 2
|
|
6473
|
+
start_page: 2
|
|
6474
|
+
next_page_query_obj_key_path: null
|
|
6475
|
+
next_page_url_key_path: null
|
|
6204
6476
|
discover_queryables:
|
|
6205
6477
|
fetch_url: null
|
|
6206
6478
|
collection_fetch_url: null
|
|
@@ -6214,8 +6486,8 @@
|
|
|
6214
6486
|
title: '$.title'
|
|
6215
6487
|
single_collection_fetch_url: 'https://fedeo.ceos.org/series/eo:organisationName/CEDA/{_collection}'
|
|
6216
6488
|
single_collection_parsable_metadata:
|
|
6217
|
-
|
|
6218
|
-
description: '$.description'
|
|
6489
|
+
id: '{$.assets.enclosure.href#ceda_collection_name}'
|
|
6490
|
+
description: '{$.description#literalize_unicode}'
|
|
6219
6491
|
instruments: '$.summaries.instruments'
|
|
6220
6492
|
keywords: '$.keywords'
|
|
6221
6493
|
license: '$.license'
|
|
@@ -19,11 +19,13 @@ search:
|
|
|
19
19
|
type: StacSearch
|
|
20
20
|
results_entry: features
|
|
21
21
|
pagination:
|
|
22
|
-
next_page_query_obj: '{{"limit":{items_per_page},"
|
|
22
|
+
next_page_query_obj: '{{"limit":{items_per_page},"{next_page_token_key}":"{next_page_token}"}}'
|
|
23
23
|
total_items_nb_key_path: '$.numberMatched'
|
|
24
24
|
next_page_url_key_path: '$.links[?(@.rel="next")].href'
|
|
25
25
|
next_page_query_obj_key_path: '$.links[?(@.rel="next")].body'
|
|
26
26
|
next_page_merge_key_path: '$.links[?(@.rel="next")].merge'
|
|
27
|
+
# do not use 'page' as default key, guess from provider response
|
|
28
|
+
next_page_token_key: null
|
|
27
29
|
sort:
|
|
28
30
|
sort_by_tpl: '{{"sortby": [ {{"field": "{sort_param}", "direction": "{sort_order}" }} ] }}'
|
|
29
31
|
sort_order_mapping:
|
|
@@ -50,7 +52,7 @@ search:
|
|
|
50
52
|
constellation: '{$.summaries.constellation#csv_list}'
|
|
51
53
|
platform: '{$.summaries.platform#csv_list}'
|
|
52
54
|
processing:level: '{$.summaries."processing:level"#csv_list}'
|
|
53
|
-
keywords: '
|
|
55
|
+
keywords: '$.keywords'
|
|
54
56
|
license: '$.license'
|
|
55
57
|
title: '$.title'
|
|
56
58
|
extent: '$.extent'
|
|
@@ -107,6 +107,15 @@ dedt_lumi:
|
|
|
107
107
|
credentials:
|
|
108
108
|
username:
|
|
109
109
|
password:
|
|
110
|
+
dedt_mn5:
|
|
111
|
+
priority: # Lower value means lower priority (Default: 0)
|
|
112
|
+
search:
|
|
113
|
+
download:
|
|
114
|
+
output_dir:
|
|
115
|
+
auth:
|
|
116
|
+
credentials:
|
|
117
|
+
username:
|
|
118
|
+
password:
|
|
110
119
|
earth_search:
|
|
111
120
|
priority: # Lower value means lower priority (Default: 0)
|
|
112
121
|
search: # Search parameters configuration
|
eodag/types/__init__.py
CHANGED
|
@@ -153,6 +153,7 @@ def json_field_definition_to_python(
|
|
|
153
153
|
json_field_definition: dict[str, Any],
|
|
154
154
|
default_value: Optional[Any] = None,
|
|
155
155
|
required: Optional[bool] = False,
|
|
156
|
+
alias: Optional[str] = None,
|
|
156
157
|
) -> Annotated[Any, FieldInfo]:
|
|
157
158
|
"""Get python field definition from json object
|
|
158
159
|
|
|
@@ -180,6 +181,7 @@ def json_field_definition_to_python(
|
|
|
180
181
|
pattern=json_field_definition.get("pattern", PydanticUndefined),
|
|
181
182
|
le=json_field_definition.get("maximum", PydanticUndefined),
|
|
182
183
|
ge=json_field_definition.get("minimum", PydanticUndefined),
|
|
184
|
+
alias=alias or PydanticUndefined,
|
|
183
185
|
)
|
|
184
186
|
|
|
185
187
|
enum = json_field_definition.get("enum")
|