eodag 2.12.0__py3-none-any.whl → 3.0.0__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 -8
- eodag/api/core.py +654 -538
- eodag/api/product/__init__.py +12 -2
- eodag/api/product/_assets.py +59 -16
- eodag/api/product/_product.py +100 -93
- eodag/api/product/drivers/__init__.py +7 -2
- eodag/api/product/drivers/base.py +0 -3
- eodag/api/product/metadata_mapping.py +192 -96
- eodag/api/search_result.py +69 -10
- eodag/cli.py +55 -25
- eodag/config.py +391 -116
- eodag/plugins/apis/base.py +11 -165
- eodag/plugins/apis/ecmwf.py +36 -25
- eodag/plugins/apis/usgs.py +80 -35
- eodag/plugins/authentication/aws_auth.py +13 -4
- eodag/plugins/authentication/base.py +10 -1
- eodag/plugins/authentication/generic.py +2 -2
- eodag/plugins/authentication/header.py +31 -6
- eodag/plugins/authentication/keycloak.py +17 -84
- eodag/plugins/authentication/oauth.py +3 -3
- eodag/plugins/authentication/openid_connect.py +268 -49
- eodag/plugins/authentication/qsauth.py +4 -1
- eodag/plugins/authentication/sas_auth.py +9 -2
- eodag/plugins/authentication/token.py +98 -47
- eodag/plugins/authentication/token_exchange.py +122 -0
- eodag/plugins/crunch/base.py +3 -1
- eodag/plugins/crunch/filter_date.py +3 -9
- eodag/plugins/crunch/filter_latest_intersect.py +0 -3
- eodag/plugins/crunch/filter_latest_tpl_name.py +1 -4
- eodag/plugins/crunch/filter_overlap.py +4 -8
- eodag/plugins/crunch/filter_property.py +5 -11
- eodag/plugins/download/aws.py +149 -185
- eodag/plugins/download/base.py +88 -97
- eodag/plugins/download/creodias_s3.py +1 -1
- eodag/plugins/download/http.py +638 -310
- eodag/plugins/download/s3rest.py +47 -45
- eodag/plugins/manager.py +228 -88
- eodag/plugins/search/__init__.py +36 -0
- eodag/plugins/search/base.py +239 -30
- eodag/plugins/search/build_search_result.py +382 -37
- eodag/plugins/search/cop_marine.py +441 -0
- eodag/plugins/search/creodias_s3.py +25 -20
- eodag/plugins/search/csw.py +5 -7
- eodag/plugins/search/data_request_search.py +61 -30
- eodag/plugins/search/qssearch.py +713 -255
- eodag/plugins/search/static_stac_search.py +106 -40
- eodag/resources/ext_product_types.json +1 -1
- eodag/resources/product_types.yml +1921 -34
- eodag/resources/providers.yml +4091 -3655
- eodag/resources/stac.yml +50 -216
- eodag/resources/stac_api.yml +71 -25
- eodag/resources/stac_provider.yml +5 -0
- eodag/resources/user_conf_template.yml +89 -32
- eodag/rest/__init__.py +6 -0
- eodag/rest/cache.py +70 -0
- eodag/rest/config.py +68 -0
- eodag/rest/constants.py +26 -0
- eodag/rest/core.py +735 -0
- eodag/rest/errors.py +178 -0
- eodag/rest/server.py +264 -431
- eodag/rest/stac.py +442 -836
- eodag/rest/types/collections_search.py +44 -0
- eodag/rest/types/eodag_search.py +238 -47
- eodag/rest/types/queryables.py +164 -0
- eodag/rest/types/stac_search.py +273 -0
- eodag/rest/utils/__init__.py +216 -0
- eodag/rest/utils/cql_evaluate.py +119 -0
- eodag/rest/utils/rfc3339.py +64 -0
- eodag/types/__init__.py +106 -10
- eodag/types/bbox.py +15 -14
- eodag/types/download_args.py +40 -0
- eodag/types/search_args.py +57 -7
- eodag/types/whoosh.py +79 -0
- eodag/utils/__init__.py +110 -91
- eodag/utils/constraints.py +37 -45
- eodag/utils/exceptions.py +39 -22
- eodag/utils/import_system.py +0 -4
- eodag/utils/logging.py +37 -80
- eodag/utils/notebook.py +4 -4
- eodag/utils/repr.py +113 -0
- eodag/utils/requests.py +128 -0
- eodag/utils/rest.py +100 -0
- eodag/utils/stac_reader.py +93 -21
- {eodag-2.12.0.dist-info → eodag-3.0.0.dist-info}/METADATA +88 -53
- eodag-3.0.0.dist-info/RECORD +109 -0
- {eodag-2.12.0.dist-info → eodag-3.0.0.dist-info}/WHEEL +1 -1
- {eodag-2.12.0.dist-info → eodag-3.0.0.dist-info}/entry_points.txt +7 -5
- eodag/plugins/apis/cds.py +0 -540
- eodag/rest/types/stac_queryables.py +0 -134
- eodag/rest/utils.py +0 -1133
- eodag-2.12.0.dist-info/RECORD +0 -94
- {eodag-2.12.0.dist-info → eodag-3.0.0.dist-info}/LICENSE +0 -0
- {eodag-2.12.0.dist-info → eodag-3.0.0.dist-info}/top_level.txt +0 -0
eodag/resources/stac.yml
CHANGED
|
@@ -17,63 +17,88 @@
|
|
|
17
17
|
# limitations under the License.
|
|
18
18
|
|
|
19
19
|
stac_version: 1.0.0
|
|
20
|
-
stac_api_version: 1.0.0
|
|
20
|
+
stac_api_version: 1.0.0
|
|
21
21
|
|
|
22
22
|
# Capabilities ----------------------------------------------------------------
|
|
23
23
|
|
|
24
24
|
# https://stacspec.org/STAC-api.html#operation/getLandingPage
|
|
25
25
|
landing_page:
|
|
26
|
-
title: "EODAG"
|
|
27
26
|
type: "Catalog"
|
|
28
|
-
description: "STAC API provided by EODAG"
|
|
29
27
|
links:
|
|
30
28
|
- rel: self
|
|
31
29
|
type: "application/json"
|
|
32
30
|
href: "{catalog[root]}/"
|
|
33
31
|
- rel: service-desc
|
|
34
32
|
type: "application/vnd.oai.openapi+json;version=3.0"
|
|
33
|
+
title: "OpenAPI service description"
|
|
35
34
|
href: "{catalog[root]}/api"
|
|
36
35
|
- rel: service-doc
|
|
37
36
|
type: "text/html"
|
|
37
|
+
title: "OpenAPI service documentation"
|
|
38
38
|
href: "{catalog[root]}/api.html"
|
|
39
39
|
- rel: conformance
|
|
40
40
|
type: "application/json"
|
|
41
|
+
title: "STAC/WFS3 conformance classes implemented by this server"
|
|
41
42
|
href: "{catalog[root]}/conformance"
|
|
42
43
|
- rel: data
|
|
43
44
|
type: "application/json"
|
|
44
45
|
href: "{catalog[root]}/collections"
|
|
45
46
|
- rel: search
|
|
47
|
+
type: "application/geo+json"
|
|
48
|
+
title: "STAC search"
|
|
46
49
|
href: "{catalog[root]}/search"
|
|
47
50
|
method: GET
|
|
51
|
+
- rel: search
|
|
52
|
+
type: "application/geo+json"
|
|
53
|
+
title: "STAC search"
|
|
54
|
+
href: "{catalog[root]}/search"
|
|
55
|
+
method: POST
|
|
48
56
|
stac_version: "{stac_version}"
|
|
49
|
-
id: eodag-stac-api
|
|
50
57
|
conformsTo: "{conformance[conformsTo]}"
|
|
51
58
|
|
|
52
59
|
# required by OGC API - Features
|
|
53
60
|
# http://docs.opengeospatial.org/is/17-069r3/17-069r3.html#_declaration_of_conformance_classes
|
|
54
61
|
conformance:
|
|
55
62
|
conformsTo:
|
|
56
|
-
- https://api.stacspec.org/v1.0.0
|
|
57
|
-
- https://api.stacspec.org/v1.0.0
|
|
58
|
-
- https://api.stacspec.org/v1.0.0
|
|
59
|
-
- https://api.stacspec.org/v1.0.0-
|
|
63
|
+
- https://api.stacspec.org/v1.0.0/core
|
|
64
|
+
- https://api.stacspec.org/v1.0.0/item-search
|
|
65
|
+
- https://api.stacspec.org/v1.0.0/item-search#query
|
|
66
|
+
- https://api.stacspec.org/v1.0.0/item-search#filter
|
|
67
|
+
- https://api.stacspec.org/v1.0.0/item-search#sort
|
|
68
|
+
- https://api.stacspec.org/v1.0.0/ogcapi-features
|
|
69
|
+
- https://api.stacspec.org/v1.0.0/ogcapi-features#query
|
|
70
|
+
- https://api.stacspec.org/v1.0.0/ogcapi-features#sort
|
|
71
|
+
- https://api.stacspec.org/v1.0.0/collections
|
|
72
|
+
- https://api.stacspec.org/v1.0.0/collection-search
|
|
73
|
+
- https://api.stacspec.org/v1.0.0/collection-search#free-text
|
|
74
|
+
- https://api.stacspec.org/v1.0.0/collection-search#advanced-free-text
|
|
75
|
+
- http://www.opengis.net/spec/ogcapi-common-2/1.0/conf/simple-query
|
|
60
76
|
- http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/core
|
|
61
77
|
- http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/oas30
|
|
62
78
|
- http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/geojson
|
|
79
|
+
- http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/filter
|
|
80
|
+
- http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/features-filter
|
|
81
|
+
- http://www.opengis.net/spec/cql2/1.0/conf/cql2-text
|
|
82
|
+
- http://www.opengis.net/spec/cql2/1.0/conf/cql2-json
|
|
83
|
+
- http://www.opengis.net/spec/cql2/1.0/conf/basic-cql2
|
|
84
|
+
- http://www.opengis.net/spec/cql2/1.0/conf/basic-spatial-operators
|
|
85
|
+
- http://www.opengis.net/spec/cql2/1.0/conf/temporal-operators
|
|
86
|
+
- http://www.opengis.net/spec/cql2/1.0/conf/advanced-comparison-operators
|
|
63
87
|
|
|
64
88
|
# https://stacspec.org/STAC-api.html#operation/getCollections
|
|
65
89
|
collections:
|
|
90
|
+
collections:
|
|
91
|
+
- "{collection}"
|
|
66
92
|
links:
|
|
67
|
-
- rel: self
|
|
68
|
-
title: collections
|
|
69
|
-
href: "{collections[url]}"
|
|
70
93
|
- rel: root
|
|
94
|
+
type: "application/json"
|
|
71
95
|
href: "{collections[root]}/"
|
|
72
96
|
- rel: parent
|
|
97
|
+
type: "application/json"
|
|
73
98
|
href: "{collections[root]}/"
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
99
|
+
- rel: self
|
|
100
|
+
type: "application/json"
|
|
101
|
+
href: "{collections[url]}"
|
|
77
102
|
|
|
78
103
|
# https://stacspec.org/STAC-api.html#operation/describeCollection
|
|
79
104
|
collection:
|
|
@@ -101,7 +126,6 @@ collection:
|
|
|
101
126
|
interval:
|
|
102
127
|
- - '$.product_type.missionStartDate'
|
|
103
128
|
- '$.product_type.missionEndDate'
|
|
104
|
-
properties:
|
|
105
129
|
crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84
|
|
106
130
|
stac_version: "{stac_version}"
|
|
107
131
|
keywords:
|
|
@@ -119,15 +143,8 @@ collection:
|
|
|
119
143
|
- '$.product_type.platformSerialIdentifier'
|
|
120
144
|
intruments:
|
|
121
145
|
- '$.product_type.instrument'
|
|
122
|
-
processing:level:
|
|
123
|
-
|
|
124
|
-
provider:
|
|
125
|
-
name: '$.provider.name'
|
|
126
|
-
description: '$.provider.description'
|
|
127
|
-
# one or more of "producer" "licensor" "processor" "host"
|
|
128
|
-
roles: '$.provider.roles'
|
|
129
|
-
url: '$.provider.url'
|
|
130
|
-
priority: '$.provider.priority'
|
|
146
|
+
processing:level:
|
|
147
|
+
- '$.product_type.processingLevel'
|
|
131
148
|
|
|
132
149
|
# Data ------------------------------------------------------------------------
|
|
133
150
|
|
|
@@ -147,26 +164,18 @@ items:
|
|
|
147
164
|
- rel: parent
|
|
148
165
|
title: "{catalog[id]}"
|
|
149
166
|
href: "{catalog[url]}"
|
|
150
|
-
# implement next/prev page links
|
|
151
|
-
# https://github.com/radiantearth/stac-spec/blob/master/api-spec/api-spec.md#paging-extension
|
|
152
|
-
- rel: next
|
|
153
|
-
href: '$.search_results.next'
|
|
154
|
-
title: Next page
|
|
155
|
-
type: application/geo+json
|
|
156
|
-
method: '$.search_results.method'
|
|
157
|
-
body: '$.search_results.body'
|
|
158
167
|
# time and date when the response was generated
|
|
159
|
-
timeStamp: '$.
|
|
168
|
+
timeStamp: '$.timeStamp'
|
|
160
169
|
# count request result
|
|
161
|
-
numberMatched: '$.
|
|
170
|
+
numberMatched: '$.numberMatched'
|
|
162
171
|
# len(features)
|
|
163
|
-
numberReturned: '$.
|
|
172
|
+
numberReturned: '$.numberReturned'
|
|
164
173
|
|
|
165
174
|
# https://stacspec.org/STAC-api.html#operation/getFeature
|
|
166
175
|
item:
|
|
167
176
|
stac_version: "{stac_version}"
|
|
168
177
|
stac_extensions:
|
|
169
|
-
id: '$.product.properties.
|
|
178
|
+
id: '$.product.properties.id'
|
|
170
179
|
bbox:
|
|
171
180
|
- '{item[geometry].bounds[0]}'
|
|
172
181
|
- '{item[geometry].bounds[1]}'
|
|
@@ -204,6 +213,7 @@ item:
|
|
|
204
213
|
version: '$.product.properties.productVersion'
|
|
205
214
|
view:sun_elevation: '$.product.properties.illuminationElevationAngle'
|
|
206
215
|
view:sun_azimuth: '$.product.properties.illuminationAzimuthAngle'
|
|
216
|
+
order:status: '{$.product.properties.storageStatus#get_group_name((?P<succeeded>ONLINE)|(?P<shipping>STAGING)|(?P<orderable>OFFLINE))}'
|
|
207
217
|
links:
|
|
208
218
|
- rel: self
|
|
209
219
|
title: "{item[id]}"
|
|
@@ -216,20 +226,7 @@ item:
|
|
|
216
226
|
- rel: collection
|
|
217
227
|
title: "{item[collection]}"
|
|
218
228
|
href: "{catalog[url]}"
|
|
219
|
-
|
|
220
|
-
downloadLink:
|
|
221
|
-
title: 'Download link'
|
|
222
|
-
href: "{catalog[url]}/items/{item[id]}/download"
|
|
223
|
-
# https://github.com/radiantearth/stac-spec/blob/master/item-spec/item-spec.md#media-types
|
|
224
|
-
type: 'application/zip'
|
|
225
|
-
_dc_qs: '$.product.properties._dc_qs'
|
|
226
|
-
thumbnail:
|
|
227
|
-
title: 'Thumbnail'
|
|
228
|
-
href: '$.product.properties.quicklook'
|
|
229
|
-
type: 'image/jpeg'
|
|
230
|
-
role: thumbnail
|
|
231
|
-
# https://github.com/radiantearth/stac-spec/blob/master/item-spec/item-spec.md#media-types
|
|
232
|
-
origin_assets: '$.product.assets'
|
|
229
|
+
|
|
233
230
|
# product properties not needed in items
|
|
234
231
|
metadata_ignore:
|
|
235
232
|
- title
|
|
@@ -242,16 +239,18 @@ metadata_ignore:
|
|
|
242
239
|
# extensions mapping {prefix: schema_url,}
|
|
243
240
|
stac_extensions:
|
|
244
241
|
eo: 'https://stac-extensions.github.io/eo/v1.0.0/schema.json'
|
|
242
|
+
order: 'https://stac-extensions.github.io/order/v1.1.0/schema.json'
|
|
245
243
|
published: 'https://stac-extensions.github.io/timestamps/v1.0.0/schema.json'
|
|
246
244
|
processing: 'https://stac-extensions.github.io/processing/v1.0.0/schema.json'
|
|
247
245
|
sar: 'https://stac-extensions.github.io/sar/v1.0.0/schema.json'
|
|
248
246
|
sat: 'https://stac-extensions.github.io/sat/v1.0.0/schema.json'
|
|
247
|
+
storage: 'https://stac-extensions.github.io/storage/v1.0.0/schema.json'
|
|
249
248
|
sci: 'https://stac-extensions.github.io/scientific/v1.0.0/schema.json'
|
|
250
249
|
version: 'https://stac-extensions.github.io/version/v1.0.0/schema.json'
|
|
251
250
|
view: 'https://stac-extensions.github.io/view/v1.0.0/schema.json'
|
|
252
251
|
oseo: "{catalog[root]}/extensions/oseo/json-schema/schema.json"
|
|
253
252
|
|
|
254
|
-
#
|
|
253
|
+
# Catalog --------------------------------------------------------------------
|
|
255
254
|
|
|
256
255
|
catalog:
|
|
257
256
|
parent_key: root
|
|
@@ -268,171 +267,6 @@ catalog:
|
|
|
268
267
|
stac_version: "{stac_version}"
|
|
269
268
|
stac_extensions: "{catalog[stac_extensions]}"
|
|
270
269
|
|
|
271
|
-
|
|
272
|
-
# nested catalogs for filtering
|
|
273
|
-
catalogs:
|
|
274
|
-
|
|
275
|
-
product_types_list:
|
|
276
|
-
parent_key: root
|
|
277
|
-
child_key: product_type
|
|
278
|
-
model:
|
|
279
|
-
id: "product_types"
|
|
280
|
-
description: Available product types
|
|
281
|
-
|
|
282
|
-
product_type:
|
|
283
|
-
parent_key: product_types_list
|
|
284
|
-
model:
|
|
285
|
-
id: "{collection[id]}"
|
|
286
|
-
title: "{collection[title]}"
|
|
287
|
-
description: "{collection[description]}"
|
|
288
|
-
extent:
|
|
289
|
-
spatial:
|
|
290
|
-
bbox:
|
|
291
|
-
- - "{collection[extent][spatial][bbox][0][0]}"
|
|
292
|
-
- "{collection[extent][spatial][bbox][0][1]}"
|
|
293
|
-
- "{collection[extent][spatial][bbox][0][2]}"
|
|
294
|
-
- "{collection[extent][spatial][bbox][0][3]}"
|
|
295
|
-
temporal:
|
|
296
|
-
interval:
|
|
297
|
-
- - "{collection[extent][temporal][interval][0][0]}"
|
|
298
|
-
- "{collection[extent][temporal][interval][0][1]}"
|
|
299
|
-
crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84
|
|
300
|
-
keywords:
|
|
301
|
-
- "{collection[keywords][0]}"
|
|
302
|
-
- "{collection[keywords][1]}"
|
|
303
|
-
- "{collection[keywords][2]}"
|
|
304
|
-
- "{collection[keywords][3]}"
|
|
305
|
-
- "{collection[keywords][4]}"
|
|
306
|
-
license: "{collection[license]}"
|
|
307
|
-
properties: "{collection[properties]}"
|
|
308
|
-
providers: "{collection[providers]}"
|
|
309
|
-
summaries: "{collection[summaries]}"
|
|
310
|
-
|
|
311
|
-
years_list:
|
|
312
|
-
child_key: year
|
|
313
|
-
model:
|
|
314
|
-
id: year
|
|
315
|
-
title: "{parent_catalog[title]} / year"
|
|
316
|
-
description: "{parent_catalog[description]}\n\n- Filter by year"
|
|
317
|
-
|
|
318
|
-
year:
|
|
319
|
-
parent_key: years_list
|
|
320
|
-
model:
|
|
321
|
-
id: "{date[year]}"
|
|
322
|
-
title: "{catalog[title]}: {date[year]}"
|
|
323
|
-
description: "{catalog[description]}: {date[year]};"
|
|
324
|
-
extent:
|
|
325
|
-
spatial:
|
|
326
|
-
bbox:
|
|
327
|
-
- - "{catalog[extent][spatial][bbox][0][0]}"
|
|
328
|
-
- "{catalog[extent][spatial][bbox][0][1]}"
|
|
329
|
-
- "{catalog[extent][spatial][bbox][0][2]}"
|
|
330
|
-
- "{catalog[extent][spatial][bbox][0][3]}"
|
|
331
|
-
temporal:
|
|
332
|
-
interval:
|
|
333
|
-
- - "{date[min]}"
|
|
334
|
-
- "{date[max]}"
|
|
335
|
-
|
|
336
|
-
months_list:
|
|
337
|
-
child_key: month
|
|
338
|
-
parent_key: year
|
|
339
|
-
model:
|
|
340
|
-
id: month
|
|
341
|
-
title: "{parent_catalog[title]} / month"
|
|
342
|
-
description: "{parent_catalog[description]}\n\n- Filter by month"
|
|
343
|
-
|
|
344
|
-
month:
|
|
345
|
-
parent_key: months_list
|
|
346
|
-
model:
|
|
347
|
-
id: "{date[month]}"
|
|
348
|
-
title: "{catalog[title]}: {date[month]}"
|
|
349
|
-
description: "{catalog[description]}: {date[month]};"
|
|
350
|
-
extent:
|
|
351
|
-
spatial:
|
|
352
|
-
bbox:
|
|
353
|
-
- - "{catalog[extent][spatial][bbox][0][0]}"
|
|
354
|
-
- "{catalog[extent][spatial][bbox][0][1]}"
|
|
355
|
-
- "{catalog[extent][spatial][bbox][0][2]}"
|
|
356
|
-
- "{catalog[extent][spatial][bbox][0][3]}"
|
|
357
|
-
temporal:
|
|
358
|
-
interval:
|
|
359
|
-
- - "{date[min]}"
|
|
360
|
-
- "{date[max]}"
|
|
361
|
-
|
|
362
|
-
days_list:
|
|
363
|
-
child_key: day
|
|
364
|
-
parent_key: month
|
|
365
|
-
model:
|
|
366
|
-
id: day
|
|
367
|
-
title: "{parent_catalog[title]} / day"
|
|
368
|
-
description: "{parent_catalog[description]}\n\n- Filter by day"
|
|
369
|
-
|
|
370
|
-
day:
|
|
371
|
-
parent_key: days_list
|
|
372
|
-
model:
|
|
373
|
-
id: "{date[day]}"
|
|
374
|
-
title: "{catalog[title]}: {date[day]}"
|
|
375
|
-
description: "{catalog[description]}: {date[day]};"
|
|
376
|
-
extent:
|
|
377
|
-
spatial:
|
|
378
|
-
bbox:
|
|
379
|
-
- - "{catalog[extent][spatial][bbox][0][0]}"
|
|
380
|
-
- "{catalog[extent][spatial][bbox][0][1]}"
|
|
381
|
-
- "{catalog[extent][spatial][bbox][0][2]}"
|
|
382
|
-
- "{catalog[extent][spatial][bbox][0][3]}"
|
|
383
|
-
temporal:
|
|
384
|
-
interval:
|
|
385
|
-
- - "{date[min]}"
|
|
386
|
-
- "{date[max]}"
|
|
387
|
-
|
|
388
|
-
cloud_covers_list:
|
|
389
|
-
child_key: cloud_cover
|
|
390
|
-
model:
|
|
391
|
-
id: cloud_cover
|
|
392
|
-
title: "{parent_catalog[title]} / Max cloud cover"
|
|
393
|
-
description: "{parent_catalog[description]}\n\n- Filter by maximum cloud cover %"
|
|
394
|
-
|
|
395
|
-
cloud_cover:
|
|
396
|
-
parent_key: cloud_covers_list
|
|
397
|
-
model:
|
|
398
|
-
id: "{cloud_cover}"
|
|
399
|
-
title: "{catalog[title]}: {cloud_cover}%"
|
|
400
|
-
description: "{catalog[description]}: {cloud_cover}%;"
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
locations_catalogs:
|
|
404
|
-
|
|
405
|
-
locations_list:
|
|
406
|
-
catalog_type: location_list
|
|
407
|
-
child_key: "$.shp_location.name"
|
|
408
|
-
path: "$.shp_location.path"
|
|
409
|
-
attr: "$.shp_location.attr"
|
|
410
|
-
parent_key: "$.shp_location.parent.name"
|
|
411
|
-
parent:
|
|
412
|
-
key: "$.shp_location.parent.name"
|
|
413
|
-
attr: "$.shp_location.parent.attr"
|
|
414
|
-
model:
|
|
415
|
-
id: "$.shp_location.name"
|
|
416
|
-
self_title: "$.shp_location.name"
|
|
417
|
-
title: "{parent_catalog[title]} / {catalog[self_title]}"
|
|
418
|
-
description: "{parent_catalog[description]}\n\n- Filter by {catalog[self_title]}"
|
|
419
|
-
|
|
420
|
-
location:
|
|
421
|
-
catalog_type: location
|
|
422
|
-
parent_key: "{locations_list}"
|
|
423
|
-
model:
|
|
424
|
-
id: "{feature[id]}"
|
|
425
|
-
title: "{catalog[title]}: {feature[id]}"
|
|
426
|
-
description: "{catalog[description]}: {feature[id]};"
|
|
427
|
-
extent:
|
|
428
|
-
spatial:
|
|
429
|
-
bbox: '{feature[geometry]#to_bounds_lists}'
|
|
430
|
-
temporal:
|
|
431
|
-
interval:
|
|
432
|
-
- - "{catalog[extent][temporal][interval][0][0]}"
|
|
433
|
-
- "{catalog[extent][temporal][interval][0][1]}"
|
|
434
|
-
|
|
435
|
-
|
|
436
270
|
# Extensions ------------------------------------------------------------------
|
|
437
271
|
extensions:
|
|
438
272
|
oseo:
|
eodag/resources/stac_api.yml
CHANGED
|
@@ -107,6 +107,7 @@ paths:
|
|
|
107
107
|
description: |-
|
|
108
108
|
Fetch features in the given catalog provided with `catalogPath`.
|
|
109
109
|
parameters:
|
|
110
|
+
- $ref: '#/components/parameters/provider'
|
|
110
111
|
- $ref: '#/components/parameters/catalogPath'
|
|
111
112
|
- $ref: '#/components/parameters/bbox'
|
|
112
113
|
- $ref: '#/components/parameters/datetime'
|
|
@@ -130,6 +131,7 @@ paths:
|
|
|
130
131
|
Fetch the feature with id `featureId` in the given catalog provided
|
|
131
132
|
with `cataloPath`.
|
|
132
133
|
parameters:
|
|
134
|
+
- $ref: '#/components/parameters/provider'
|
|
133
135
|
- $ref: '#/components/parameters/catalogPath'
|
|
134
136
|
- $ref: '#/components/parameters/featureId'
|
|
135
137
|
responses:
|
|
@@ -148,6 +150,7 @@ paths:
|
|
|
148
150
|
Download the feature with id `featureId` in the given catalog provided
|
|
149
151
|
with `catalogPath`.
|
|
150
152
|
parameters:
|
|
153
|
+
- $ref: '#/components/parameters/provider'
|
|
151
154
|
- $ref: '#/components/parameters/catalogPath'
|
|
152
155
|
- $ref: '#/components/parameters/featureId'
|
|
153
156
|
responses:
|
|
@@ -169,9 +172,14 @@ paths:
|
|
|
169
172
|
summary: The feature collections in the dataset.
|
|
170
173
|
description: A body of Feature Collections that belong or are used together with additional links. Request may not return the full set of metadata per Feature Collection.
|
|
171
174
|
operationId: getCollections
|
|
175
|
+
parameters:
|
|
176
|
+
- $ref: '#/components/parameters/provider'
|
|
177
|
+
- $ref: '#/components/parameters/q'
|
|
172
178
|
responses:
|
|
173
179
|
'200':
|
|
174
180
|
$ref: '#/components/responses/Collections'
|
|
181
|
+
'202':
|
|
182
|
+
$ref: '#/components/responses/Accepted'
|
|
175
183
|
'500':
|
|
176
184
|
$ref: '#/components/responses/ServerError'
|
|
177
185
|
/collections/{collectionId}:
|
|
@@ -225,6 +233,7 @@ paths:
|
|
|
225
233
|
tags:
|
|
226
234
|
- Data
|
|
227
235
|
parameters:
|
|
236
|
+
- $ref: '#/components/parameters/provider'
|
|
228
237
|
- $ref: '#/components/parameters/collectionId'
|
|
229
238
|
- $ref: '#/components/parameters/bbox'
|
|
230
239
|
- $ref: '#/components/parameters/datetime'
|
|
@@ -254,6 +263,7 @@ paths:
|
|
|
254
263
|
tags:
|
|
255
264
|
- Data
|
|
256
265
|
parameters:
|
|
266
|
+
- $ref: '#/components/parameters/provider'
|
|
257
267
|
- $ref: '#/components/parameters/collectionId'
|
|
258
268
|
- $ref: '#/components/parameters/featureId'
|
|
259
269
|
summary: fetch a single feature
|
|
@@ -275,6 +285,7 @@ paths:
|
|
|
275
285
|
tags:
|
|
276
286
|
- Data
|
|
277
287
|
parameters:
|
|
288
|
+
- $ref: '#/components/parameters/provider'
|
|
278
289
|
- $ref: '#/components/parameters/collectionId'
|
|
279
290
|
- $ref: '#/components/parameters/featureId'
|
|
280
291
|
summary: download a single feature assets archive
|
|
@@ -300,24 +311,19 @@ paths:
|
|
|
300
311
|
description: |-
|
|
301
312
|
Retrieve Items matching filters. Intended as a shorthand API for simple
|
|
302
313
|
queries.
|
|
303
|
-
|
|
304
|
-
This method is optional, but you MUST implement `POST /search` if you
|
|
305
|
-
want to implement this method.
|
|
306
|
-
|
|
307
|
-
If this endpoint is implemented on a server, it is required to add a
|
|
308
|
-
link referring to this endpoint with `rel` set to `search` to the
|
|
309
|
-
`links` array in `GET /`. As `GET` is the default method, the `method`
|
|
310
|
-
may not be set explicitly in the link.
|
|
311
314
|
operationId: getSearchSTAC
|
|
312
315
|
tags:
|
|
313
316
|
- STAC
|
|
314
317
|
parameters:
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
318
|
+
- $ref: '#/components/parameters/bbox'
|
|
319
|
+
- $ref: '#/components/parameters/datetime'
|
|
320
|
+
- $ref: '#/components/parameters/limit'
|
|
321
|
+
- $ref: '#/components/parameters/intersects'
|
|
322
|
+
- $ref: '#/components/parameters/ids'
|
|
323
|
+
- $ref: '#/components/parameters/collectionsArray'
|
|
324
|
+
- $ref: '#/components/parameters/provider'
|
|
325
|
+
- $ref: '#/components/parameters/filter'
|
|
326
|
+
- $ref: '#/components/parameters/sortby'
|
|
321
327
|
responses:
|
|
322
328
|
'200':
|
|
323
329
|
description: A feature collection.
|
|
@@ -342,22 +348,22 @@ paths:
|
|
|
342
348
|
description: |-
|
|
343
349
|
Retrieve items matching filters. Intended as the standard, full-featured
|
|
344
350
|
query API.
|
|
345
|
-
|
|
346
|
-
This method is mandatory to implement if `GET /search` is implemented.
|
|
347
|
-
If this endpoint is implemented on a server, it is required to add a
|
|
348
|
-
link referring to this endpoint with `rel` set to `search` and `method`
|
|
349
|
-
set to `POST` to the `links` array in `GET /`.
|
|
350
351
|
tags:
|
|
351
352
|
- STAC
|
|
352
353
|
operationId: postSearchSTAC
|
|
353
354
|
requestBody:
|
|
354
355
|
description: |
|
|
355
|
-
The `POST /search` JSON body specification is detailed in the
|
|
356
|
+
The `POST /search` JSON body specification is detailed in the
|
|
357
|
+
[STAC specification](https://api.stacspec.org/v1.0.0/item-search/).
|
|
358
|
+
Both [Query](https://github.com/stac-api-extensions/query) and
|
|
359
|
+
[Filter](https://github.com/stac-api-extensions/filter) extensions are supported.
|
|
356
360
|
required: true
|
|
357
361
|
content:
|
|
358
362
|
application/json:
|
|
359
363
|
schema:
|
|
360
|
-
|
|
364
|
+
allOf:
|
|
365
|
+
- $ref: '#/components/schemas/searchBody'
|
|
366
|
+
- $ref: 'https://api.stacspec.org/v1.0.0-beta.3/item-search/openapi.yaml#/components/schemas/components-schemas-searchBody'
|
|
361
367
|
responses:
|
|
362
368
|
'200':
|
|
363
369
|
description: A feature collection.
|
|
@@ -621,6 +627,30 @@ components:
|
|
|
621
627
|
required: false
|
|
622
628
|
schema:
|
|
623
629
|
type: string
|
|
630
|
+
filter:
|
|
631
|
+
name: filter
|
|
632
|
+
x-stac-api-fragment: filter
|
|
633
|
+
in: query
|
|
634
|
+
description: |-
|
|
635
|
+
A CQL filter expression for filtering items.
|
|
636
|
+
required: false
|
|
637
|
+
schema:
|
|
638
|
+
oneOf:
|
|
639
|
+
- $ref: 'https://api.stacspec.org/v1.0.0-beta.3/item-search/openapi.yaml#/components/schemas/booleanValueExpression'
|
|
640
|
+
- $ref: '#/components/schemas/filter-cql-text'
|
|
641
|
+
sortby:
|
|
642
|
+
name: sortby
|
|
643
|
+
x-stac-api-fragment: sort
|
|
644
|
+
in: query
|
|
645
|
+
description: |-
|
|
646
|
+
An array of property names, prefixed by either "+" for ascending or
|
|
647
|
+
"-" for descending. If no prefix is provided, "+" is assumed.
|
|
648
|
+
required: false
|
|
649
|
+
schema:
|
|
650
|
+
type: string
|
|
651
|
+
example: '+start_datetime'
|
|
652
|
+
style: form
|
|
653
|
+
explode: false
|
|
624
654
|
schemas:
|
|
625
655
|
queryProp:
|
|
626
656
|
description: Apply query operations to a specific property
|
|
@@ -1125,6 +1155,10 @@ components:
|
|
|
1125
1155
|
type: array
|
|
1126
1156
|
items:
|
|
1127
1157
|
$ref: '#/components/schemas/link'
|
|
1158
|
+
filter-cql-text:
|
|
1159
|
+
description: |
|
|
1160
|
+
A CQL filter expression in the 'cql-text' encoding.
|
|
1161
|
+
type: string
|
|
1128
1162
|
geometryGeoJSON:
|
|
1129
1163
|
oneOf:
|
|
1130
1164
|
- $ref: '#/components/schemas/pointGeoJSON'
|
|
@@ -1454,6 +1488,7 @@ components:
|
|
|
1454
1488
|
description: The search criteria
|
|
1455
1489
|
type: object
|
|
1456
1490
|
allOf:
|
|
1491
|
+
- $ref: '#/components/schemas/providerFilter'
|
|
1457
1492
|
- $ref: '#/components/schemas/collectionsFilter'
|
|
1458
1493
|
- $ref: '#/components/schemas/bboxFilter'
|
|
1459
1494
|
- $ref: '#/components/schemas/datetimeFilter'
|
|
@@ -1470,10 +1505,12 @@ components:
|
|
|
1470
1505
|
- 34
|
|
1471
1506
|
collections:
|
|
1472
1507
|
- S2_MSI_L1C
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1508
|
+
query:
|
|
1509
|
+
platform:
|
|
1510
|
+
eq: S2A
|
|
1511
|
+
eo:cloud_cover:
|
|
1512
|
+
lte: 80
|
|
1513
|
+
provider: peps
|
|
1477
1514
|
limit: 10
|
|
1478
1515
|
limit:
|
|
1479
1516
|
type: integer
|
|
@@ -1578,6 +1615,9 @@ components:
|
|
|
1578
1615
|
properties:
|
|
1579
1616
|
collections:
|
|
1580
1617
|
$ref: '#/components/schemas/collectionsArray'
|
|
1618
|
+
providerFilter:
|
|
1619
|
+
type: string
|
|
1620
|
+
description: Only interrogate the specifiec provider
|
|
1581
1621
|
queryFilter:
|
|
1582
1622
|
description: An object representing a query filter.
|
|
1583
1623
|
type: object
|
|
@@ -1876,6 +1916,12 @@ components:
|
|
|
1876
1916
|
text/html:
|
|
1877
1917
|
schema:
|
|
1878
1918
|
type: string
|
|
1919
|
+
Accepted:
|
|
1920
|
+
description: The request has been accepted, but the data is not yet ready. Please wait a few minutes before trying again.
|
|
1921
|
+
content:
|
|
1922
|
+
application/json:
|
|
1923
|
+
schema:
|
|
1924
|
+
$ref: '#/components/schemas/exception'
|
|
1879
1925
|
Collections:
|
|
1880
1926
|
description: >-
|
|
1881
1927
|
The feature collections shared by this API.
|
|
@@ -24,6 +24,11 @@ search:
|
|
|
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
|
+
sort:
|
|
28
|
+
sort_by_tpl: '{{"sortby": [ {{"field": "{sort_param}", "direction": "{sort_order}" }} ] }}'
|
|
29
|
+
sort_order_mapping:
|
|
30
|
+
ascending: asc
|
|
31
|
+
descending: desc
|
|
27
32
|
discover_metadata:
|
|
28
33
|
auto_discovery: true
|
|
29
34
|
metadata_pattern: '^[a-zA-Z0-9_:-]+$'
|