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.
Files changed (93) hide show
  1. eodag/__init__.py +6 -8
  2. eodag/api/core.py +654 -538
  3. eodag/api/product/__init__.py +12 -2
  4. eodag/api/product/_assets.py +59 -16
  5. eodag/api/product/_product.py +100 -93
  6. eodag/api/product/drivers/__init__.py +7 -2
  7. eodag/api/product/drivers/base.py +0 -3
  8. eodag/api/product/metadata_mapping.py +192 -96
  9. eodag/api/search_result.py +69 -10
  10. eodag/cli.py +55 -25
  11. eodag/config.py +391 -116
  12. eodag/plugins/apis/base.py +11 -165
  13. eodag/plugins/apis/ecmwf.py +36 -25
  14. eodag/plugins/apis/usgs.py +80 -35
  15. eodag/plugins/authentication/aws_auth.py +13 -4
  16. eodag/plugins/authentication/base.py +10 -1
  17. eodag/plugins/authentication/generic.py +2 -2
  18. eodag/plugins/authentication/header.py +31 -6
  19. eodag/plugins/authentication/keycloak.py +17 -84
  20. eodag/plugins/authentication/oauth.py +3 -3
  21. eodag/plugins/authentication/openid_connect.py +268 -49
  22. eodag/plugins/authentication/qsauth.py +4 -1
  23. eodag/plugins/authentication/sas_auth.py +9 -2
  24. eodag/plugins/authentication/token.py +98 -47
  25. eodag/plugins/authentication/token_exchange.py +122 -0
  26. eodag/plugins/crunch/base.py +3 -1
  27. eodag/plugins/crunch/filter_date.py +3 -9
  28. eodag/plugins/crunch/filter_latest_intersect.py +0 -3
  29. eodag/plugins/crunch/filter_latest_tpl_name.py +1 -4
  30. eodag/plugins/crunch/filter_overlap.py +4 -8
  31. eodag/plugins/crunch/filter_property.py +5 -11
  32. eodag/plugins/download/aws.py +149 -185
  33. eodag/plugins/download/base.py +88 -97
  34. eodag/plugins/download/creodias_s3.py +1 -1
  35. eodag/plugins/download/http.py +638 -310
  36. eodag/plugins/download/s3rest.py +47 -45
  37. eodag/plugins/manager.py +228 -88
  38. eodag/plugins/search/__init__.py +36 -0
  39. eodag/plugins/search/base.py +239 -30
  40. eodag/plugins/search/build_search_result.py +382 -37
  41. eodag/plugins/search/cop_marine.py +441 -0
  42. eodag/plugins/search/creodias_s3.py +25 -20
  43. eodag/plugins/search/csw.py +5 -7
  44. eodag/plugins/search/data_request_search.py +61 -30
  45. eodag/plugins/search/qssearch.py +713 -255
  46. eodag/plugins/search/static_stac_search.py +106 -40
  47. eodag/resources/ext_product_types.json +1 -1
  48. eodag/resources/product_types.yml +1921 -34
  49. eodag/resources/providers.yml +4091 -3655
  50. eodag/resources/stac.yml +50 -216
  51. eodag/resources/stac_api.yml +71 -25
  52. eodag/resources/stac_provider.yml +5 -0
  53. eodag/resources/user_conf_template.yml +89 -32
  54. eodag/rest/__init__.py +6 -0
  55. eodag/rest/cache.py +70 -0
  56. eodag/rest/config.py +68 -0
  57. eodag/rest/constants.py +26 -0
  58. eodag/rest/core.py +735 -0
  59. eodag/rest/errors.py +178 -0
  60. eodag/rest/server.py +264 -431
  61. eodag/rest/stac.py +442 -836
  62. eodag/rest/types/collections_search.py +44 -0
  63. eodag/rest/types/eodag_search.py +238 -47
  64. eodag/rest/types/queryables.py +164 -0
  65. eodag/rest/types/stac_search.py +273 -0
  66. eodag/rest/utils/__init__.py +216 -0
  67. eodag/rest/utils/cql_evaluate.py +119 -0
  68. eodag/rest/utils/rfc3339.py +64 -0
  69. eodag/types/__init__.py +106 -10
  70. eodag/types/bbox.py +15 -14
  71. eodag/types/download_args.py +40 -0
  72. eodag/types/search_args.py +57 -7
  73. eodag/types/whoosh.py +79 -0
  74. eodag/utils/__init__.py +110 -91
  75. eodag/utils/constraints.py +37 -45
  76. eodag/utils/exceptions.py +39 -22
  77. eodag/utils/import_system.py +0 -4
  78. eodag/utils/logging.py +37 -80
  79. eodag/utils/notebook.py +4 -4
  80. eodag/utils/repr.py +113 -0
  81. eodag/utils/requests.py +128 -0
  82. eodag/utils/rest.py +100 -0
  83. eodag/utils/stac_reader.py +93 -21
  84. {eodag-2.12.0.dist-info → eodag-3.0.0.dist-info}/METADATA +88 -53
  85. eodag-3.0.0.dist-info/RECORD +109 -0
  86. {eodag-2.12.0.dist-info → eodag-3.0.0.dist-info}/WHEEL +1 -1
  87. {eodag-2.12.0.dist-info → eodag-3.0.0.dist-info}/entry_points.txt +7 -5
  88. eodag/plugins/apis/cds.py +0 -540
  89. eodag/rest/types/stac_queryables.py +0 -134
  90. eodag/rest/utils.py +0 -1133
  91. eodag-2.12.0.dist-info/RECORD +0 -94
  92. {eodag-2.12.0.dist-info → eodag-3.0.0.dist-info}/LICENSE +0 -0
  93. {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-rc.3
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-rc.3/core
57
- - https://api.stacspec.org/v1.0.0-rc.3/item-search
58
- - https://api.stacspec.org/v1.0.0-rc.3/ogcapi-features
59
- - https://api.stacspec.org/v1.0.0-rc.3/collections
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
- collections:
75
- - "{collection}"
76
- stac_version: "{stac_version}"
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: '$.product_type.processingLevel'
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: '$.search_results.timeStamp'
168
+ timeStamp: '$.timeStamp'
160
169
  # count request result
161
- numberMatched: '$.search_results.numberMatched'
170
+ numberMatched: '$.numberMatched'
162
171
  # len(features)
163
- numberReturned: '$.search_results.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.title'
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
- assets:
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
- # Catalogs --------------------------------------------------------------------
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:
@@ -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
- - $ref: '#/components/parameters/bbox'
316
- - $ref: '#/components/parameters/datetime'
317
- - $ref: '#/components/parameters/limit'
318
- - $ref: '#/components/parameters/intersects'
319
- - $ref: '#/components/parameters/ids'
320
- - $ref: '#/components/parameters/collectionsArray'
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 [STAC specification](https://api.stacspec.org/v1.0.0/item-search/)
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
- $ref: '#/components/schemas/searchBody'
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
- platform:
1474
- eq: S2A
1475
- eo:cloud_cover:
1476
- lte: 80
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_:-]+$'