From aab47ea149568a6d29a6040d07df807095f4f50b Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Tue, 9 Oct 2018 15:18:00 +0200 Subject: [PATCH 1/7] Updated the catalog definition --- api-spec/STAC-query.yaml | 100 +++++++--------------- api-spec/STAC-standalone.yaml | 100 +++++++--------------- api-spec/WFS3core+STAC.yaml | 100 +++++++--------------- api-spec/definitions/STAC-standalone.yaml | 100 +++++++--------------- 4 files changed, 128 insertions(+), 272 deletions(-) diff --git a/api-spec/STAC-query.yaml b/api-spec/STAC-query.yaml index fedb7998e..9c38125b6 100644 --- a/api-spec/STAC-query.yaml +++ b/api-spec/STAC-query.yaml @@ -239,16 +239,6 @@ components: type: string description: type: string - link: - type: object - required: - - href - properties: - href: - type: string - rel: - type: string - example: prev searchBody: description: The search criteria type: object @@ -351,55 +341,26 @@ components: catalogDefinition: type: object required: - - name + - stac_version + - id - description - links additionalProperties: true properties: - name: + stac_version: type: string - example: NAIP - description: + example: 0.6.0 + id: type: string - example: Catalog of NAIP Imagery - license: + example: naip + title: type: string - example: PDDL-1.0 - links: - type: array - items: - type: object - additionalProperties: true - properties: - rel: - type: string - example: child - href: - type: string - contact: - type: object - properties: - name: - type: string - email: - type: string - phone: - type: string - url: - type: string - formats: - type: array - items: - type: string - keywords: - type: array - items: - type: string - homepage: + example: NAIP Imagery + description: type: string - provider: - type: object - additionalProperties: true + example: Catalog of NAIP Imagery. + links: + $ref: '#/components/schemas/links' itemCollection: type: object required: @@ -442,17 +403,7 @@ components: properties: $ref: '#/components/schemas/itemProperties' links: - type: object - additionalProperties: - type: object - required: - - href - - rel - properties: - href: - type: string - rel: - type: string + $ref: '#/components/schemas/links' assets: type: object additionalProperties: @@ -511,14 +462,27 @@ components: properties: datetime: $ref: '#/components/schemas/time' - provider: - type: string - description: Information about the provider - license: - type: string - description: Data license name based on SPDX License List additionalProperties: type: object + links: + type: array + items: + type: object + required: + - href + - rel + additionalProperties: true + properties: + href: + type: string + format: url + example: 'http://www.geoserver.example/stac/naip/child/catalog.json' + rel: + type: string + example: child + type: + type: string + example: application/json itemCollectionLinks: type: object properties: diff --git a/api-spec/STAC-standalone.yaml b/api-spec/STAC-standalone.yaml index 8058a5819..b5ef87134 100644 --- a/api-spec/STAC-standalone.yaml +++ b/api-spec/STAC-standalone.yaml @@ -211,16 +211,6 @@ components: type: string description: type: string - link: - type: object - required: - - href - properties: - href: - type: string - rel: - type: string - example: prev searchBody: description: The search criteria type: object @@ -320,55 +310,26 @@ components: catalogDefinition: type: object required: - - name + - stac_version + - id - description - links additionalProperties: true properties: - name: + stac_version: type: string - example: NAIP - description: + example: 0.6.0 + id: type: string - example: Catalog of NAIP Imagery - license: + example: naip + title: type: string - example: PDDL-1.0 - links: - type: array - items: - type: object - additionalProperties: true - properties: - rel: - type: string - example: child - href: - type: string - contact: - type: object - properties: - name: - type: string - email: - type: string - phone: - type: string - url: - type: string - formats: - type: array - items: - type: string - keywords: - type: array - items: - type: string - homepage: + example: NAIP Imagery + description: type: string - provider: - type: object - additionalProperties: true + example: Catalog of NAIP Imagery. + links: + $ref: '#/components/schemas/links' itemCollection: type: object required: @@ -411,17 +372,7 @@ components: properties: $ref: '#/components/schemas/itemProperties' links: - type: object - additionalProperties: - type: object - required: - - href - - rel - properties: - href: - type: string - rel: - type: string + $ref: '#/components/schemas/links' assets: type: object additionalProperties: @@ -480,14 +431,27 @@ components: properties: datetime: $ref: '#/components/schemas/time' - provider: - type: string - description: Information about the provider - license: - type: string - description: Data license name based on SPDX License List additionalProperties: type: object + links: + type: array + items: + type: object + required: + - href + - rel + additionalProperties: true + properties: + href: + type: string + format: url + example: 'http://www.geoserver.example/stac/naip/child/catalog.json' + rel: + type: string + example: child + type: + type: string + example: application/json itemCollectionLinks: type: object properties: diff --git a/api-spec/WFS3core+STAC.yaml b/api-spec/WFS3core+STAC.yaml index d475adbee..105a66b30 100644 --- a/api-spec/WFS3core+STAC.yaml +++ b/api-spec/WFS3core+STAC.yaml @@ -370,16 +370,6 @@ components: type: string description: type: string - link: - type: object - required: - - href - properties: - href: - type: string - rel: - type: string - example: prev searchBody: description: The search criteria type: object @@ -479,55 +469,26 @@ components: catalogDefinition: type: object required: - - name + - stac_version + - id - description - links additionalProperties: true properties: - name: + stac_version: type: string - example: NAIP - description: + example: 0.6.0 + id: type: string - example: Catalog of NAIP Imagery - license: + example: naip + title: type: string - example: PDDL-1.0 - links: - type: array - items: - type: object - additionalProperties: true - properties: - rel: - type: string - example: child - href: - type: string - contact: - type: object - properties: - name: - type: string - email: - type: string - phone: - type: string - url: - type: string - formats: - type: array - items: - type: string - keywords: - type: array - items: - type: string - homepage: + example: NAIP Imagery + description: type: string - provider: - type: object - additionalProperties: true + example: Catalog of NAIP Imagery. + links: + $ref: '#/components/schemas/links' itemCollection: type: object required: @@ -570,17 +531,7 @@ components: properties: $ref: '#/components/schemas/itemProperties' links: - type: object - additionalProperties: - type: object - required: - - href - - rel - properties: - href: - type: string - rel: - type: string + $ref: '#/components/schemas/links' assets: type: object additionalProperties: @@ -639,14 +590,27 @@ components: properties: datetime: $ref: '#/components/schemas/time' - provider: - type: string - description: Information about the provider - license: - type: string - description: Data license name based on SPDX License List additionalProperties: type: object + links: + type: array + items: + type: object + required: + - href + - rel + additionalProperties: true + properties: + href: + type: string + format: url + example: 'http://www.geoserver.example/stac/naip/child/catalog.json' + rel: + type: string + example: child + type: + type: string + example: application/json itemCollectionLinks: type: object properties: diff --git a/api-spec/definitions/STAC-standalone.yaml b/api-spec/definitions/STAC-standalone.yaml index 9e9e4c982..8f4a18df5 100644 --- a/api-spec/definitions/STAC-standalone.yaml +++ b/api-spec/definitions/STAC-standalone.yaml @@ -212,16 +212,6 @@ components: type: string description: type: string - link: - type: object - required: - - href - properties: - href: - type: string - rel: - type: string - example: prev searchBody: description: The search criteria type: object @@ -321,55 +311,26 @@ components: catalogDefinition: type: object required: - - name + - stac_version + - id - description - links additionalProperties: true properties: - name: + stac_version: type: string - example: NAIP - description: + example: 0.6.0 + id: type: string - example: Catalog of NAIP Imagery - license: + example: naip + title: type: string - example: PDDL-1.0 - links: - type: array - items: - type: object - additionalProperties: true - properties: - rel: - type: string - example: child - href: - type: string - contact: - type: object - properties: - name: - type: string - email: - type: string - phone: - type: string - url: - type: string - formats: - type: array - items: - type: string - keywords: - type: array - items: - type: string - homepage: + example: NAIP Imagery + description: type: string - provider: - type: object - additionalProperties: true + example: Catalog of NAIP Imagery. + links: + $ref: '#/components/schemas/links' itemCollection: type: object required: @@ -412,17 +373,7 @@ components: properties: $ref: '#/components/schemas/itemProperties' links: - type: object - additionalProperties: - type: object - required: - - href - - rel - properties: - href: - type: string - rel: - type: string + $ref: '#/components/schemas/links' assets: type: object additionalProperties: @@ -481,14 +432,27 @@ components: properties: datetime: $ref: '#/components/schemas/time' - provider: - type: string - description: Information about the provider - license: - type: string - description: Data license name based on SPDX License List additionalProperties: type: object + links: + type: array + items: + type: object + required: + - href + - rel + additionalProperties: true + properties: + href: + type: string + format: url + example: http://www.geoserver.example/stac/naip/child/catalog.json + rel: + type: string + example: child + type: + type: string + example: application/json itemCollectionLinks: type: object properties: From d4010262d180b8ea5aca806bcd53a227ae3e5b7d Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Tue, 9 Oct 2018 15:45:00 +0200 Subject: [PATCH 2/7] Added collection/dataset fields to WFS3 API --- api-spec/STAC-query.yaml | 40 +++++---- api-spec/STAC-standalone.yaml | 40 +++++---- api-spec/WFS3core+STAC.yaml | 90 +++++++++++++++---- .../STAC-collections.fragment.yaml | 56 ++++++++++++ api-spec/definitions/STAC-standalone.yaml | 40 +++++---- api-spec/definitions/WFS3core+STAC.yaml | 2 +- 6 files changed, 191 insertions(+), 77 deletions(-) create mode 100644 api-spec/definitions/STAC-collections.fragment.yaml diff --git a/api-spec/STAC-query.yaml b/api-spec/STAC-query.yaml index 9c38125b6..2ff2563fa 100644 --- a/api-spec/STAC-query.yaml +++ b/api-spec/STAC-query.yaml @@ -239,6 +239,27 @@ components: type: string description: type: string + links: + type: array + items: + $ref: '#/components/schemas/link' + link: + type: object + required: + - href + - rel + additionalProperties: true + properties: + href: + type: string + format: url + example: 'http://www.geoserver.example/stac/naip/child/catalog.json' + rel: + type: string + example: child + type: + type: string + example: application/json searchBody: description: The search criteria type: object @@ -464,25 +485,6 @@ components: $ref: '#/components/schemas/time' additionalProperties: type: object - links: - type: array - items: - type: object - required: - - href - - rel - additionalProperties: true - properties: - href: - type: string - format: url - example: 'http://www.geoserver.example/stac/naip/child/catalog.json' - rel: - type: string - example: child - type: - type: string - example: application/json itemCollectionLinks: type: object properties: diff --git a/api-spec/STAC-standalone.yaml b/api-spec/STAC-standalone.yaml index b5ef87134..370ed62bd 100644 --- a/api-spec/STAC-standalone.yaml +++ b/api-spec/STAC-standalone.yaml @@ -211,6 +211,27 @@ components: type: string description: type: string + links: + type: array + items: + $ref: '#/components/schemas/link' + link: + type: object + required: + - href + - rel + additionalProperties: true + properties: + href: + type: string + format: url + example: 'http://www.geoserver.example/stac/naip/child/catalog.json' + rel: + type: string + example: child + type: + type: string + example: application/json searchBody: description: The search criteria type: object @@ -433,25 +454,6 @@ components: $ref: '#/components/schemas/time' additionalProperties: type: object - links: - type: array - items: - type: object - required: - - href - - rel - additionalProperties: true - properties: - href: - type: string - format: url - example: 'http://www.geoserver.example/stac/naip/child/catalog.json' - rel: - type: string - example: child - type: - type: string - example: application/json itemCollectionLinks: type: object properties: diff --git a/api-spec/WFS3core+STAC.yaml b/api-spec/WFS3core+STAC.yaml index 105a66b30..21488d17e 100644 --- a/api-spec/WFS3core+STAC.yaml +++ b/api-spec/WFS3core+STAC.yaml @@ -370,6 +370,27 @@ components: type: string description: type: string + links: + type: array + items: + $ref: '#/components/schemas/link' + link: + type: object + required: + - href + - rel + additionalProperties: true + properties: + href: + type: string + format: url + example: 'http://www.geoserver.example/stac/naip/child/catalog.json' + rel: + type: string + example: child + type: + type: string + example: application/json searchBody: description: The search criteria type: object @@ -592,25 +613,6 @@ components: $ref: '#/components/schemas/time' additionalProperties: type: object - links: - type: array - items: - type: object - required: - - href - - rel - additionalProperties: true - properties: - href: - type: string - format: url - example: 'http://www.geoserver.example/stac/naip/child/catalog.json' - rel: - type: string - example: child - type: - type: string - example: application/json itemCollectionLinks: type: object properties: @@ -694,6 +696,11 @@ components: required: - name - links + - stac_version + - id + - description + - license + - extent properties: name: description: 'identifier of the collection used, for example, in URIs' @@ -735,6 +742,51 @@ components: type: string default: - 'http://www.opengis.net/def/crs/OGC/1.3/CRS84' + stac_version: + type: string + example: 0.6.0 + id: + description: 'identifier of the collection used, for example, in URIs' + type: string + example: buildings + keywords: + title: Keywords + type: array + items: + type: string + example: + - buildings + - properties + - constructions + version: + title: Dataset Version + type: string + example: 1 + license: + title: Dataset License Name + type: string + example: Apache-2.0 + provider: + type: array + items: + properties: + name: + title: Organization name + type: string + example: Big Building Corp + type: + title: Organization type + type: string + enum: + - producer + - processor + - host + example: producer + url: + title: Organization homepage + type: string + format: url + example: 'http://www.big-building.com' extent: type: object properties: diff --git a/api-spec/definitions/STAC-collections.fragment.yaml b/api-spec/definitions/STAC-collections.fragment.yaml new file mode 100644 index 000000000..e10c98173 --- /dev/null +++ b/api-spec/definitions/STAC-collections.fragment.yaml @@ -0,0 +1,56 @@ +components: + schemas: + collectionInfo: + type: object + required: + - stac_version + - id + - description + - license + - extent + properties: + stac_version: + type: string + example: 0.6.0 + id: + description: 'identifier of the collection used, for example, in URIs' + type: string + example: buildings + keywords: + title: Keywords + type: array + items: + type: string + example: + - buildings + - properties + - constructions + version: + title: Dataset Version + type: string + example: 1 + license: + title: Dataset License Name + type: string + example: Apache-2.0 + provider: + type: array + items: + properties: + name: + title: Organization name + type: string + example: Big Building Corp + type: + title: Organization type + type: string + enum: + - producer + - processor + - host + example: producer + url: + title: Organization homepage + type: string + format: url + example: http://www.big-building.com \ No newline at end of file diff --git a/api-spec/definitions/STAC-standalone.yaml b/api-spec/definitions/STAC-standalone.yaml index 8f4a18df5..7bca57520 100644 --- a/api-spec/definitions/STAC-standalone.yaml +++ b/api-spec/definitions/STAC-standalone.yaml @@ -212,6 +212,27 @@ components: type: string description: type: string + links: + type: array + items: + $ref: '#/components/schemas/link' + link: + type: object + required: + - href + - rel + additionalProperties: true + properties: + href: + type: string + format: url + example: http://www.geoserver.example/stac/naip/child/catalog.json + rel: + type: string + example: child + type: + type: string + example: application/json searchBody: description: The search criteria type: object @@ -434,25 +455,6 @@ components: $ref: '#/components/schemas/time' additionalProperties: type: object - links: - type: array - items: - type: object - required: - - href - - rel - additionalProperties: true - properties: - href: - type: string - format: url - example: http://www.geoserver.example/stac/naip/child/catalog.json - rel: - type: string - example: child - type: - type: string - example: application/json itemCollectionLinks: type: object properties: diff --git a/api-spec/definitions/WFS3core+STAC.yaml b/api-spec/definitions/WFS3core+STAC.yaml index b3ffa526b..fb657b8af 100644 --- a/api-spec/definitions/WFS3core+STAC.yaml +++ b/api-spec/definitions/WFS3core+STAC.yaml @@ -1 +1 @@ -!!files_merge_append ["definitions/STAC-standalone.yaml", "definitions/WFS3core.fragment.yaml"] \ No newline at end of file +!!files_merge_append ["definitions/STAC-standalone.yaml", "definitions/WFS3core.fragment.yaml", "definitions/STAC-collections.fragment.yaml"] \ No newline at end of file From 154490e3ed3e39de327933b58be1219ab68a4175 Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Tue, 9 Oct 2018 16:00:30 +0200 Subject: [PATCH 3/7] Changed asset name to title and minor alignments with item spec. --- api-spec/STAC-query.yaml | 21 ++++++++++------ api-spec/STAC-standalone.yaml | 21 ++++++++++------ api-spec/WFS3core+STAC.yaml | 21 ++++++++++------ api-spec/definitions/STAC-standalone.yaml | 30 ++++++++++++----------- 4 files changed, 55 insertions(+), 38 deletions(-) diff --git a/api-spec/STAC-query.yaml b/api-spec/STAC-query.yaml index 2ff2563fa..e1f2baa34 100644 --- a/api-spec/STAC-query.yaml +++ b/api-spec/STAC-query.yaml @@ -404,6 +404,7 @@ components: - id - type - geometry + - bbox - links - properties - assets @@ -411,7 +412,7 @@ components: id: type: string example: path/to/example.tif - description: 'unique ID, potentially link to file' + description: 'Provider identifier, a unique ID, potentially a link to a file.' bbox: $ref: '#/components/schemas/bbox' geometry: @@ -434,8 +435,14 @@ components: properties: href: type: string - name: + format: url + description: Link to the asset object + title: type: string + description: Displayed title + type: + type: string + description: Media type of the asset example: type: Feature id: CS3-20160503_132130_04 @@ -459,22 +466,20 @@ components: - 37.488035566 properties: datetime: '2016-05-03T13:21:30.040Z' - provider: 'http://www.cool-sat.com' - license: CC-BY-4.0 links: - self: - rel: self + - rel: self href: >- http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04.json assets: analytic: - name: 4-Band Analytic + title: 4-Band Analytic href: >- http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/analytic.tif thumbnail: - name: thumbnail + title: Thumbnail href: >- http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/thumb.png + type: image/png itemProperties: type: object required: diff --git a/api-spec/STAC-standalone.yaml b/api-spec/STAC-standalone.yaml index 370ed62bd..0cfbf23bc 100644 --- a/api-spec/STAC-standalone.yaml +++ b/api-spec/STAC-standalone.yaml @@ -373,6 +373,7 @@ components: - id - type - geometry + - bbox - links - properties - assets @@ -380,7 +381,7 @@ components: id: type: string example: path/to/example.tif - description: 'unique ID, potentially link to file' + description: 'Provider identifier, a unique ID, potentially a link to a file.' bbox: $ref: '#/components/schemas/bbox' geometry: @@ -403,8 +404,14 @@ components: properties: href: type: string - name: + format: url + description: Link to the asset object + title: type: string + description: Displayed title + type: + type: string + description: Media type of the asset example: type: Feature id: CS3-20160503_132130_04 @@ -428,22 +435,20 @@ components: - 37.488035566 properties: datetime: '2016-05-03T13:21:30.040Z' - provider: 'http://www.cool-sat.com' - license: CC-BY-4.0 links: - self: - rel: self + - rel: self href: >- http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04.json assets: analytic: - name: 4-Band Analytic + title: 4-Band Analytic href: >- http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/analytic.tif thumbnail: - name: thumbnail + title: Thumbnail href: >- http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/thumb.png + type: image/png itemProperties: type: object required: diff --git a/api-spec/WFS3core+STAC.yaml b/api-spec/WFS3core+STAC.yaml index 21488d17e..9e38983a3 100644 --- a/api-spec/WFS3core+STAC.yaml +++ b/api-spec/WFS3core+STAC.yaml @@ -532,6 +532,7 @@ components: - id - type - geometry + - bbox - links - properties - assets @@ -539,7 +540,7 @@ components: id: type: string example: path/to/example.tif - description: 'unique ID, potentially link to file' + description: 'Provider identifier, a unique ID, potentially a link to a file.' bbox: $ref: '#/components/schemas/bbox' geometry: @@ -562,8 +563,14 @@ components: properties: href: type: string - name: + format: url + description: Link to the asset object + title: + type: string + description: Displayed title + type: type: string + description: Media type of the asset example: type: Feature id: CS3-20160503_132130_04 @@ -587,22 +594,20 @@ components: - 37.488035566 properties: datetime: '2016-05-03T13:21:30.040Z' - provider: 'http://www.cool-sat.com' - license: CC-BY-4.0 links: - self: - rel: self + - rel: self href: >- http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04.json assets: analytic: - name: 4-Band Analytic + title: 4-Band Analytic href: >- http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/analytic.tif thumbnail: - name: thumbnail + title: Thumbnail href: >- http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/thumb.png + type: image/png itemProperties: type: object required: diff --git a/api-spec/definitions/STAC-standalone.yaml b/api-spec/definitions/STAC-standalone.yaml index 7bca57520..615cef247 100644 --- a/api-spec/definitions/STAC-standalone.yaml +++ b/api-spec/definitions/STAC-standalone.yaml @@ -374,6 +374,7 @@ components: - id - type - geometry + - bbox - links - properties - assets @@ -381,7 +382,7 @@ components: id: type: string example: path/to/example.tif - description: 'unique ID, potentially link to file' + description: Provider identifier, a unique ID, potentially a link to a file. bbox: $ref: '#/components/schemas/bbox' geometry: @@ -404,8 +405,14 @@ components: properties: href: type: string - name: + format: url + description: Link to the asset object + title: type: string + description: Displayed title + type: + type: string + description: Media type of the asset example: type: Feature id: CS3-20160503_132130_04 @@ -429,22 +436,17 @@ components: - 37.488035566 properties: datetime: '2016-05-03T13:21:30.040Z' - provider: 'http://www.cool-sat.com' - license: CC-BY-4.0 links: - self: - rel: self - href: >- - http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04.json + - rel: self + href: http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04.json assets: analytic: - name: 4-Band Analytic - href: >- - http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/analytic.tif + title: 4-Band Analytic + href: http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/analytic.tif thumbnail: - name: thumbnail - href: >- - http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/thumb.png + title: Thumbnail + href: http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/thumb.png + type: image/png itemProperties: type: object required: From 8ac31b6ab6a2ccdc7512e657b63db38fd2669249 Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Tue, 9 Oct 2018 17:12:36 +0200 Subject: [PATCH 4/7] Added title to links and other minor updates. --- api-spec/STAC-query.yaml | 62 ++++++++++++++--------- api-spec/STAC-standalone.yaml | 62 ++++++++++++++--------- api-spec/WFS3core+STAC.yaml | 62 ++++++++++++++--------- api-spec/definitions/STAC-standalone.yaml | 60 +++++++++++++--------- api-spec/package.json | 4 +- catalog-spec/catalog-spec.md | 3 +- catalog-spec/json-schema/catalog.json | 11 +++- dataset-spec/dataset-spec.md | 3 +- dataset-spec/examples/sentinel2.json | 3 +- dataset-spec/json-schema/dataset.json | 10 ++-- item-spec/item-spec.md | 2 +- item-spec/json-schema/stac-item.json | 14 +++-- 12 files changed, 183 insertions(+), 113 deletions(-) diff --git a/api-spec/STAC-query.yaml b/api-spec/STAC-query.yaml index e1f2baa34..afb1b692b 100644 --- a/api-spec/STAC-query.yaml +++ b/api-spec/STAC-query.yaml @@ -260,6 +260,9 @@ components: type: type: string example: application/json + title: + type: string + example: NAIP Child Catalog searchBody: description: The search criteria type: object @@ -410,39 +413,19 @@ components: - assets properties: id: - type: string - example: path/to/example.tif - description: 'Provider identifier, a unique ID, potentially a link to a file.' + $ref: '#/components/schemas/itemId' bbox: $ref: '#/components/schemas/bbox' geometry: $ref: 'http://geojson.org/schema/Geometry.json' type: - type: string - description: The GeoJSON type - enum: - - Feature + $ref: '#/components/schemas/itemType' properties: $ref: '#/components/schemas/itemProperties' links: $ref: '#/components/schemas/links' assets: - type: object - additionalProperties: - type: object - required: - - href - properties: - href: - type: string - format: url - description: Link to the asset object - title: - type: string - description: Displayed title - type: - type: string - description: Media type of the asset + $ref: '#/components/schemas/itemAssets' example: type: Feature id: CS3-20160503_132130_04 @@ -480,6 +463,36 @@ components: href: >- http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/thumb.png type: image/png + itemId: + type: string + example: path/to/example.tif + description: 'Provider identifier, a unique ID, potentially a link to a file.' + itemType: + type: string + description: The GeoJSON type + enum: + - Feature + itemAssets: + type: object + additionalProperties: + type: object + required: + - href + properties: + href: + type: string + format: url + description: Link to the asset object + example: >- + http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/thumb.png + title: + type: string + description: Displayed title + example: Thumbnail + type: + type: string + description: Media type of the asset + example: image/png itemProperties: type: object required: @@ -488,8 +501,7 @@ components: properties: datetime: $ref: '#/components/schemas/time' - additionalProperties: - type: object + additionalProperties: true itemCollectionLinks: type: object properties: diff --git a/api-spec/STAC-standalone.yaml b/api-spec/STAC-standalone.yaml index 0cfbf23bc..4b585f9d2 100644 --- a/api-spec/STAC-standalone.yaml +++ b/api-spec/STAC-standalone.yaml @@ -232,6 +232,9 @@ components: type: type: string example: application/json + title: + type: string + example: NAIP Child Catalog searchBody: description: The search criteria type: object @@ -379,39 +382,19 @@ components: - assets properties: id: - type: string - example: path/to/example.tif - description: 'Provider identifier, a unique ID, potentially a link to a file.' + $ref: '#/components/schemas/itemId' bbox: $ref: '#/components/schemas/bbox' geometry: $ref: 'http://geojson.org/schema/Geometry.json' type: - type: string - description: The GeoJSON type - enum: - - Feature + $ref: '#/components/schemas/itemType' properties: $ref: '#/components/schemas/itemProperties' links: $ref: '#/components/schemas/links' assets: - type: object - additionalProperties: - type: object - required: - - href - properties: - href: - type: string - format: url - description: Link to the asset object - title: - type: string - description: Displayed title - type: - type: string - description: Media type of the asset + $ref: '#/components/schemas/itemAssets' example: type: Feature id: CS3-20160503_132130_04 @@ -449,6 +432,36 @@ components: href: >- http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/thumb.png type: image/png + itemId: + type: string + example: path/to/example.tif + description: 'Provider identifier, a unique ID, potentially a link to a file.' + itemType: + type: string + description: The GeoJSON type + enum: + - Feature + itemAssets: + type: object + additionalProperties: + type: object + required: + - href + properties: + href: + type: string + format: url + description: Link to the asset object + example: >- + http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/thumb.png + title: + type: string + description: Displayed title + example: Thumbnail + type: + type: string + description: Media type of the asset + example: image/png itemProperties: type: object required: @@ -457,8 +470,7 @@ components: properties: datetime: $ref: '#/components/schemas/time' - additionalProperties: - type: object + additionalProperties: true itemCollectionLinks: type: object properties: diff --git a/api-spec/WFS3core+STAC.yaml b/api-spec/WFS3core+STAC.yaml index 9e38983a3..5ebcf371e 100644 --- a/api-spec/WFS3core+STAC.yaml +++ b/api-spec/WFS3core+STAC.yaml @@ -391,6 +391,9 @@ components: type: type: string example: application/json + title: + type: string + example: NAIP Child Catalog searchBody: description: The search criteria type: object @@ -538,39 +541,19 @@ components: - assets properties: id: - type: string - example: path/to/example.tif - description: 'Provider identifier, a unique ID, potentially a link to a file.' + $ref: '#/components/schemas/itemId' bbox: $ref: '#/components/schemas/bbox' geometry: $ref: 'http://geojson.org/schema/Geometry.json' type: - type: string - description: The GeoJSON type - enum: - - Feature + $ref: '#/components/schemas/itemType' properties: $ref: '#/components/schemas/itemProperties' links: $ref: '#/components/schemas/links' assets: - type: object - additionalProperties: - type: object - required: - - href - properties: - href: - type: string - format: url - description: Link to the asset object - title: - type: string - description: Displayed title - type: - type: string - description: Media type of the asset + $ref: '#/components/schemas/itemAssets' example: type: Feature id: CS3-20160503_132130_04 @@ -608,6 +591,36 @@ components: href: >- http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/thumb.png type: image/png + itemId: + type: string + example: path/to/example.tif + description: 'Provider identifier, a unique ID, potentially a link to a file.' + itemType: + type: string + description: The GeoJSON type + enum: + - Feature + itemAssets: + type: object + additionalProperties: + type: object + required: + - href + properties: + href: + type: string + format: url + description: Link to the asset object + example: >- + http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/thumb.png + title: + type: string + description: Displayed title + example: Thumbnail + type: + type: string + description: Media type of the asset + example: image/png itemProperties: type: object required: @@ -616,8 +629,7 @@ components: properties: datetime: $ref: '#/components/schemas/time' - additionalProperties: - type: object + additionalProperties: true itemCollectionLinks: type: object properties: diff --git a/api-spec/definitions/STAC-standalone.yaml b/api-spec/definitions/STAC-standalone.yaml index 615cef247..410da14c5 100644 --- a/api-spec/definitions/STAC-standalone.yaml +++ b/api-spec/definitions/STAC-standalone.yaml @@ -233,6 +233,9 @@ components: type: type: string example: application/json + title: + type: string + example: "NAIP Child Catalog" searchBody: description: The search criteria type: object @@ -380,39 +383,19 @@ components: - assets properties: id: - type: string - example: path/to/example.tif - description: Provider identifier, a unique ID, potentially a link to a file. + $ref: '#/components/schemas/itemId' bbox: $ref: '#/components/schemas/bbox' geometry: $ref: 'http://geojson.org/schema/Geometry.json' type: - type: string - description: The GeoJSON type - enum: - - Feature + $ref: '#/components/schemas/itemType' properties: $ref: '#/components/schemas/itemProperties' links: $ref: '#/components/schemas/links' assets: - type: object - additionalProperties: - type: object - required: - - href - properties: - href: - type: string - format: url - description: Link to the asset object - title: - type: string - description: Displayed title - type: - type: string - description: Media type of the asset + $ref: '#/components/schemas/itemAssets' example: type: Feature id: CS3-20160503_132130_04 @@ -447,6 +430,35 @@ components: title: Thumbnail href: http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/thumb.png type: image/png + itemId: + type: string + example: path/to/example.tif + description: Provider identifier, a unique ID, potentially a link to a file. + itemType: + type: string + description: The GeoJSON type + enum: + - Feature + itemAssets: + type: object + additionalProperties: + type: object + required: + - href + properties: + href: + type: string + format: url + description: Link to the asset object + example: http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/thumb.png + title: + type: string + description: Displayed title + example: Thumbnail + type: + type: string + description: Media type of the asset + example: image/png itemProperties: type: object required: @@ -456,7 +468,7 @@ components: datetime: $ref: '#/components/schemas/time' additionalProperties: - type: object + description: Any additional properties added in via extensions. itemCollectionLinks: type: object properties: diff --git a/api-spec/package.json b/api-spec/package.json index 10fc75692..bf1151297 100644 --- a/api-spec/package.json +++ b/api-spec/package.json @@ -2,14 +2,14 @@ "name": "api-spec", "version": "1.0.0", "description": "Generate STAC openapi defintions from fragments.", - "main": "index.js", + "repository": "https://github.com/radiantearth/stac-spec", + "license": "Apache-2.0", "scripts": { "generate-standalone": "yaml-files definitions/STAC-standalone.yaml STAC-standalone.yaml", "generate-query-ext": "yaml-files definitions/STAC-query.yaml STAC-query.yaml", "generate-wfs": "yaml-files definitions/WFS3core+STAC.yaml WFS3core+STAC.yaml", "generate-all": "npm run generate-standalone && npm run generate-wfs && npm run generate-query-ext" }, - "author": "", "dependencies": { "yaml-files": "^1.1.0" } diff --git a/catalog-spec/catalog-spec.md b/catalog-spec/catalog-spec.md index 3f8df3a9a..3e1b956e8 100644 --- a/catalog-spec/catalog-spec.md +++ b/catalog-spec/catalog-spec.md @@ -200,7 +200,8 @@ with links. | ---------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------- | | href | string | **REQUIRED.** The actual link in the format of an URL. Relative and absolute links are both allowed. | | rel | string | **REQUIRED.** Relationship between the current document and the linked document. See chapter "Relation types" for more information. | -| type | string | Media type of the referenced entity. | +| type | string | Media type of the referenced entity. | +| title | string | A human readable title to be used in rendered displays of the link. | #### Relation types diff --git a/catalog-spec/json-schema/catalog.json b/catalog-spec/json-schema/catalog.json index 2a5b2db0d..755e0417a 100644 --- a/catalog-spec/json-schema/catalog.json +++ b/catalog-spec/json-schema/catalog.json @@ -9,13 +9,20 @@ "href" ], "properties": { - "rel": { + "href": { + "title": "Link reference", "type": "string" }, - "href": { + "rel": { + "title": "Link relation type", "type": "string" }, "type": { + "title": "Link type", + "type": "string" + }, + "title": { + "title": "Link title", "type": "string" } } diff --git a/dataset-spec/dataset-spec.md b/dataset-spec/dataset-spec.md index 64f1a0c63..3e4f29521 100644 --- a/dataset-spec/dataset-spec.md +++ b/dataset-spec/dataset-spec.md @@ -78,7 +78,8 @@ This object describes a relationship with another entity. Data providers are adv | ---------- | ------ | ------------------------------------------------------------ | | href | string | **REQUIRED.** The actual link in the format of an URL. Relative and absolute links are both allowed. | | rel | string | **REQUIRED.** Relationship between the current document and the linked document. See chapter "Relation types" for more information. | -| type | string | Media type of the referenced entity. | +| type | string | Media type of the referenced entity. | +| title | string | A human readable title to be used in rendered displays of the link. | #### Relation types diff --git a/dataset-spec/examples/sentinel2.json b/dataset-spec/examples/sentinel2.json index 78a21f3d3..5b694dc4b 100644 --- a/dataset-spec/examples/sentinel2.json +++ b/dataset-spec/examples/sentinel2.json @@ -46,7 +46,8 @@ }, { "rel": "license", - "href": "https://scihub.copernicus.eu/twiki/pub/SciHubWebPortal/TermsConditions/Sentinel_Data_Terms_and_Conditions.pdf" + "href": "https://scihub.copernicus.eu/twiki/pub/SciHubWebPortal/TermsConditions/Sentinel_Data_Terms_and_Conditions.pdf", + "title": "Legal notice on the use of Copernicus Sentinel Data and Service Information" } ] } \ No newline at end of file diff --git a/dataset-spec/json-schema/dataset.json b/dataset-spec/json-schema/dataset.json index d2161be93..e065cf85c 100644 --- a/dataset-spec/json-schema/dataset.json +++ b/dataset-spec/json-schema/dataset.json @@ -113,15 +113,19 @@ ], "properties": { "href": { - "title": "Link", + "title": "Link reference", "type": "string" }, "rel": { - "title": "Relation", + "title": "Link relation type", "type": "string" }, "type": { - "title": "type", + "title": "Link type", + "type": "string" + }, + "title": { + "title": "Link title", "type": "string" } }, diff --git a/item-spec/item-spec.md b/item-spec/item-spec.md index 3385fb5c7..0d536b71e 100644 --- a/item-spec/item-spec.md +++ b/item-spec/item-spec.md @@ -85,7 +85,7 @@ allowed to add additional fields such as a `title` and `type`. | href | string | **REQUIRED.** The actual link in the format of an URL. Relative and absolute links are both allowed. | | rel | string | **REQUIRED.** Relationship between the current document and the linked document. See chapter "Relation types" for more information. | | type | string | Media type of the referenced entity. | -| title | string | A human readable title to be used in rendered displays of the link | +| title | string | A human readable title to be used in rendered displays of the link. | #### Relation types diff --git a/item-spec/json-schema/stac-item.json b/item-spec/json-schema/stac-item.json index 879e1aa2f..f6a558bf3 100644 --- a/item-spec/json-schema/stac-item.json +++ b/item-spec/json-schema/stac-item.json @@ -78,12 +78,20 @@ "href" ], "properties": { + "href": { + "title": "Link reference", + "type": "string" + }, "rel": { - "title": "Link Relation type", + "title": "Link relation type", "type": "string" }, - "href": { - "title": "Link reference", + "type": { + "title": "Link type", + "type": "string" + }, + "title": { + "title": "Link title", "type": "string" } } From 312eec9591a77b5e41937b9cc95985c19226c0f7 Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Tue, 9 Oct 2018 17:31:15 +0200 Subject: [PATCH 5/7] Tried to update the transaction extension. --- .../transaction/WFS3core+STAC+extensions.yaml | 2082 ++++++++--------- .../WFS3core+STAC+transaction-merge.yaml | 1 + extensions/transaction/package-lock.json | 73 + extensions/transaction/package.json | 13 + .../transaction/transaction-fragment.yaml | 53 +- 5 files changed, 1122 insertions(+), 1100 deletions(-) create mode 100644 extensions/transaction/WFS3core+STAC+transaction-merge.yaml create mode 100644 extensions/transaction/package-lock.json create mode 100644 extensions/transaction/package.json diff --git a/extensions/transaction/WFS3core+STAC+extensions.yaml b/extensions/transaction/WFS3core+STAC+extensions.yaml index a18f0cfad..4cbc5d09f 100644 --- a/extensions/transaction/WFS3core+STAC+extensions.yaml +++ b/extensions/transaction/WFS3core+STAC+extensions.yaml @@ -1,1055 +1,1027 @@ -openapi: 3.0.1 -info: - title: STAC API integrated with OGC Web Feature Service standard - version: 0.4.5 - description: >- - This is an example OpenAPI specification of a SpatioTemporal Asset Catalog - API that also implements the OGC Web Feature Service 3.0 specification - (conformance classes: "STAC", "Core", "GeoJSON", "HTML", "OpenAPI 3.0"). - contact: - name: Cool Sat Corp - email: info@cool-sat.com - url: 'http://cool-sat.com/contact/' - license: - name: Apache License 2.0 - url: 'http://www.apache.org/licenses/LICENSE-2.0' -servers: - - url: 'http://dev.cool-sat.com/' - description: Development server - - url: 'http://www.cool-sat.com' - description: Production server -paths: - /: - get: - summary: landing page of this API - description: >- - The landing page provides links to the API definition, the Conformance - statements and the metadata about the feature data in this dataset. - operationId: getLandingPage - tags: - - Capabilities - responses: - '200': - description: links to the API capabilities - content: - application/json: - schema: - $ref: '#/components/schemas/root' - text/html: - schema: - type: string - /api: - get: - summary: API definition - description: >- - The API definition is a formal OpenAPI3 compliant document in JSON form, - describing the complete API implemented here. - operationId: getAPI - tags: - - Capabilities - responses: - '200': - description: OpenAPI3 definition of this API - content: - application/json: - schema: - type: string - /conformance: - get: - summary: information about standards that this API conforms to - description: >- - list all requirements classes specified in a standard (e.g., WFS 3.0 - Part 1: Core) that the server conforms to - operationId: getRequirementsClasses - tags: - - Capabilities - responses: - '200': - description: the URIs of all requirements classes supported by the server - content: - application/json: - schema: - $ref: '#/components/schemas/req-classes' - default: - description: An error occured. - content: - application/json: - schema: - $ref: '#/components/schemas/exception' - /collections: - get: - summary: describe the feature collections in the dataset - operationId: describeCollections - tags: - - Capabilities - responses: - '200': - description: Metdata about the feature collections shared by this API. - content: - application/json: - schema: - $ref: '#/components/schemas/content' - text/html: - schema: - type: string - default: - description: An error occured. - content: - application/json: - schema: - $ref: '#/components/schemas/exception' - text/html: - schema: - type: string - '/collections/{collectionId}': - get: - summary: 'describe the {collectionId} feature collection' - operationId: describeCollection - tags: - - Capabilities - parameters: - - $ref: '#/components/parameters/collectionId' - responses: - '200': - description: 'Metadata about the {collectionId} collection shared by this API.' - content: - application/json: - schema: - $ref: '#/components/schemas/collectionInfo' - text/html: - schema: - type: string - default: - description: An error occured. - content: - application/json: - schema: - $ref: '#/components/schemas/exception' - text/html: - schema: - type: string - '/collections/{collectionId}/items': - get: - summary: 'retrieve features of feature collection {collectionId}' - description: >- - Every feature in a dataset belongs to a collection. A dataset may - consist of multiple feature collections. A feature collection is often a - collection of features of a similar type, based on a common schema.\ - - Use content negotiation to request HTML or GeoJSON. - operationId: getFeatures - tags: - - Features - parameters: - - $ref: '#/components/parameters/collectionId' - - $ref: '#/components/parameters/limit' - - $ref: '#/components/parameters/bbox' - - $ref: '#/components/parameters/time' - responses: - '200': - description: >- - Information about the feature collection plus the first features - matching the selection parameters. - content: - application/geo+json: - schema: - $ref: '#/components/schemas/featureCollectionGeoJSON' - text/html: - schema: - type: string - default: - description: An error occured. - content: - application/json: - schema: - $ref: '#/components/schemas/exception' - text/html: - schema: - type: string - post: - summary: add a new feature to a collection - description: create a new feature in a specific collection - operationId: postFeature - tags: - - Extensions - parameters: - - $ref: '#/components/parameters/collectionId' - requestBody: - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/item' - - $ref: '#/components/schemas/itemCollection' - responses: - '200': - description: Status of the create request. - content: - application/geo+json: - schema: - type: string - text/html: - schema: - type: string - default: - description: An error occured. - content: - application/json: - schema: - $ref: '#/components/schemas/exception' - text/html: - schema: - type: string - '/collections/{collectionId}/items/{featureId}': - get: - summary: retrieve a feature; use content negotiation to request HTML or GeoJSON - operationId: getFeature - tags: - - Features - parameters: - - $ref: '#/components/parameters/collectionId' - - $ref: '#/components/parameters/featureId' - responses: - '200': - description: A feature. - content: - application/geo+json: - schema: - $ref: '#/components/schemas/featureGeoJSON' - text/html: - schema: - type: string - default: - description: An error occured. - content: - application/json: - schema: - $ref: '#/components/schemas/exception' - text/html: - schema: - type: string - put: - summary: update an existing feature by Id with a complete item definition - description: >- - Use this method to update an existing feature. Requires the entire - GeoJSON description be submitted. - operationId: putFeature - tags: - - Extensions - parameters: - - $ref: '#/components/parameters/collectionId' - - $ref: '#/components/parameters/featureId' - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/item' - responses: - '200': - description: Status of the update request. - content: - text/html: - schema: - type: string - application/json: - schema: - type: string - default: - description: An error occured. - content: - application/json: - schema: - $ref: '#/components/schemas/exception' - text/html: - schema: - type: string - patch: - summary: update an existing feature by Id with a partial item definition - description: >- - Use this method to update an existing feature. Requires a GeoJSON - fragement (containing the fields to be updated) be submitted. - operationId: patchFeature - tags: - - Extensions - parameters: - - $ref: '#/components/parameters/collectionId' - - $ref: '#/components/parameters/featureId' - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/partialItem' - responses: - '200': - description: Status of the update request. - content: - text/html: - schema: - type: string - application/json: - schema: - type: string - default: - description: An error occured. - content: - application/json: - schema: - $ref: '#/components/schemas/exception' - text/html: - schema: - type: string - delete: - summary: delete an existing feature by Id - description: Use this method to delete an existing feature. - operationId: deleteFeature - tags: - - Extensions - parameters: - - $ref: '#/components/parameters/collectionId' - - $ref: '#/components/parameters/featureId' - responses: - '200': - description: Status of the update request. - content: - text/html: - schema: - type: string - application/json: - schema: - type: string - default: - description: An error occured. - content: - application/json: - schema: - $ref: '#/components/schemas/exception' - text/html: - schema: - type: string - /search/stac: - get: - summary: >- - retrieve items matching filters. Intended as a shorthand API for simple - queries. This method is optional. - operationId: getSearchSTAC - tags: - - STAC - parameters: - - $ref: '#/components/parameters/bbox' - - $ref: '#/components/parameters/time' - - $ref: '#/components/parameters/limit' - responses: - '200': - description: A feature collection. - content: - application/geo+json: - schema: - $ref: '#/components/schemas/itemCollection' - text/html: - schema: - type: string - default: - description: An error occured. - content: - application/json: - schema: - $ref: '#/components/schemas/exception' - text/html: - schema: - type: string - post: - summary: >- - retrieve items matching filters. Intended as the standard, full-featured - query API. This method is mandatory. - operationId: postSearchSTAC - tags: - - STAC - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/searchBody' - responses: - '200': - description: A feature collection. - content: - application/geo+json: - schema: - $ref: '#/components/schemas/itemCollection' - text/html: - schema: - type: string - default: - description: An error occured. - content: - application/json: - schema: - $ref: '#/components/schemas/exception' - text/html: - schema: - type: string -components: - parameters: - limit: - name: limit - in: query - description: | - The optional limit parameter limits the number of items that are - presented in the response document. - - Only items are counted that are on the first level of the collection in - the response document. Nested objects contained within the explicitly - requested items shall not be counted. - - * Minimum = 1 - * Maximum = 10000 - * Default = 10 - required: false - schema: - type: integer - minimum: 1 - maximum: 10000 - default: 10 - style: form - explode: false - bbox: - name: bbox - in: query - description: | - Only features that have a geometry that intersects the bounding box are - selected. The bounding box is provided as four or six numbers, - depending on whether the coordinate reference system includes a - vertical axis (elevation or depth): - - * Lower left corner, coordinate axis 1 - * Lower left corner, coordinate axis 2 - * Lower left corner, coordinate axis 3 (optional) - * Upper right corner, coordinate axis 1 - * Upper right corner, coordinate axis 2 - * Upper right corner, coordinate axis 3 (optional) - - The coordinate reference system of the values is WGS84 - longitude/latitude (http://www.opengis.net/def/crs/OGC/1.3/CRS84) unless - a different coordinate reference system is specified in the parameter - `bbox-crs`. - - For WGS84 longitude/latitude the values are in most cases the sequence - of minimum longitude, minimum latitude, maximum longitude and maximum - latitude. However, in cases where the box spans the antimeridian the - first value (west-most box edge) is larger than the third value - (east-most box edge). - - - If a feature has multiple spatial geometry properties, it is the - decision of the server whether only a single spatial geometry property - is used to determine the extent or all relevant geometries. - required: false - schema: - type: array - minItems: 4 - maxItems: 6 - items: - type: number - style: form - explode: false - time: - name: time - in: query - description: > - Either a date-time or a period string that adheres to RFC3339. Examples: - - * A date-time: "2018-02-12T23:20:50Z" - - * A period: "2018-02-12T00:00:00Z/2018-03-18T12:31:12Z" or - - "2018-02-12T00:00:00Z/P1M6DT12H31M12S" - - - Only features that have a temporal property that intersects the value - of - - `time` are selected. If a feature has multiple temporal properties, it - is - - the decision of the server whether only a single temporal property is - used to - - determine the extent or all relevant temporal properties. - required: false - schema: - type: string - style: form - explode: false - collectionId: - name: collectionId - in: path - required: true - description: Identifier (name) of a specific collection - schema: - type: string - featureId: - name: featureId - in: path - description: Local identifier of a specific feature - required: true - schema: - type: string - schemas: - exception: - type: object - required: - - code - properties: - code: - type: string - description: - type: string - root: - type: object - required: - - links - properties: - links: - type: array - items: - $ref: '#/components/schemas/link' - example: - - href: 'http://data.example.org/' - rel: self - type: application/json - title: this document - - href: 'http://data.example.org/api' - rel: service - type: application/openapi+json;version=3.0 - title: the API definition - - href: 'http://data.example.org/conformance' - rel: conformance - type: application/json - title: WFS 3.0 conformance classes implemented by this server - - href: 'http://data.example.org/collections' - rel: data - type: application/json - title: Metadata about the feature collections - req-classes: - type: object - required: - - conformsTo - properties: - conformsTo: - type: array - items: - type: string - example: - - 'http://www.opengis.net/spec/wfs-1/3.0/req/core' - - 'http://www.opengis.net/spec/wfs-1/3.0/req/oas30' - - 'http://www.opengis.net/spec/wfs-1/3.0/req/html' - - 'http://www.opengis.net/spec/wfs-1/3.0/req/geojson' - link: - type: object - required: - - href - properties: - href: - type: string - rel: - type: string - example: prev - type: - type: string - example: application/geo+json - hreflang: - type: string - example: en - content: - type: object - required: - - links - - collections - properties: - links: - type: array - items: - $ref: '#/components/schemas/link' - example: - - href: 'http://data.example.org/collections.json' - rel: self - type: application/json - title: this document - - href: 'http://data.example.org/collections.html' - rel: alternate - type: text/html - title: this document as HTML - - href: 'http://schemas.example.org/1.0/foobar.xsd' - rel: describedBy - type: application/xml - title: XML schema for Acme Corporation data - collections: - type: array - items: - $ref: '#/components/schemas/collectionInfo' - collectionInfo: - type: object - required: - - name - - links - properties: - name: - description: 'identifier of the collection used, for example, in URIs' - type: string - example: buildings - title: - description: human readable title of the collection - type: string - example: Buildings - description: - description: a description of the features in the collection - type: string - example: Buildings in the city of Bonn. - links: - type: array - items: - $ref: '#/components/schemas/link' - example: - - href: 'http://data.example.org/collections/buildings/items' - rel: item - type: application/geo+json - title: Buildings - - href: 'http://example.org/concepts/building.html' - rel: describedBy - type: text/html - title: Feature catalogue for buildings - extent: - $ref: '#/components/schemas/extent' - crs: - description: >- - The coordinate reference systems in which geometries may be - retrieved. Coordinate reference systems are identified by a URI. The - first coordinate reference system is the coordinate reference system - that is used by default. This is always - "http://www.opengis.net/def/crs/OGC/1.3/CRS84", i.e. WGS84 - longitude/latitude. - type: array - items: - type: string - default: - - 'http://www.opengis.net/def/crs/OGC/1.3/CRS84' - extent: - type: object - properties: - crs: - description: >- - Coordinate reference system of the coordinates in the spatial extent - (property `spatial`). In the Core, only WGS84 longitude/latitude is - supported. Extensions may support additional coordinate reference - systems. - type: string - enum: - - 'http://www.opengis.net/def/crs/OGC/1.3/CRS84' - default: 'http://www.opengis.net/def/crs/OGC/1.3/CRS84' - spatial: - description: >- - West, north, east, south edges of the spatial extent. The minimum - and maximum values apply to the coordinate reference system WGS84 - longitude/latitude that is supported in the Core. If, for example, a - projected coordinate reference system is used, the minimum and - maximum values need to be adjusted. - type: array - minItems: 4 - maxItems: 6 - items: - type: number - example: - - -180 - - -90 - - 180 - - 90 - trs: - description: >- - Temporal reference system of the coordinates in the temporal extent - (property `temporal`). In the Core, only the Gregorian calendar is - supported. Extensions may support additional temporal reference - systems. - type: string - enum: - - 'http://www.opengis.net/def/uom/ISO-8601/0/Gregorian' - default: 'http://www.opengis.net/def/uom/ISO-8601/0/Gregorian' - temporal: - description: Begin and end times of the temporal extent. - type: array - minItems: 2 - maxItems: 2 - items: - type: string - format: dateTime - example: - - '2011-11-11T12:22:11Z' - - '2012-11-24T12:32:43Z' - featureCollectionGeoJSON: - type: object - required: - - features - properties: - features: - type: array - items: - $ref: '#/components/schemas/featureGeoJSON' - featureGeoJSON: - type: object - required: - - type - - geometry - - properties - properties: - type: - type: string - enum: - - Feature - geometry: - $ref: '#/components/schemas/geometryGeoJSON' - properties: - type: object - nullable: true - id: - oneOf: - - type: string - - type: integer - geometryGeoJSON: - type: object - required: - - type - properties: - type: - type: string - enum: - - Point - - MultiPoint - - LineString - - MultiLineString - - Polygon - - MultiPolygon - - GeometryCollection - searchBody: - description: The search criteria - type: object - allOf: - - $ref: '#/components/schemas/bboxFilter' - - $ref: '#/components/schemas/timeFilter' - - $ref: '#/components/schemas/intersectsFilter' - - type: object - properties: - limit: - type: number - example: 5 - bbox: - description: | - Only features that have a geometry that intersects the bounding box are - selected. The bounding box is provided as four or six numbers, - depending on whether the coordinate reference system includes a - vertical axis (elevation or depth): - - * Lower left corner, coordinate axis 1 - * Lower left corner, coordinate axis 2 - * Lower left corner, coordinate axis 3 (optional) - * Upper right corner, coordinate axis 1 - * Upper right corner, coordinate axis 2 - * Upper right corner, coordinate axis 3 (optional) - - The coordinate reference system of the values is WGS84 - longitude/latitude (http://www.opengis.net/def/crs/OGC/1.3/CRS84) unless - a different coordinate reference system is specified in the parameter - `bbox-crs`. - - For WGS84 longitude/latitude the values are in most cases the sequence - of minimum longitude, minimum latitude, maximum longitude and maximum - latitude. However, in cases where the box spans the antimeridian the - first value (west-most box edge) is larger than the third value - (east-most box edge). - - - If a feature has multiple spatial geometry properties, it is the - decision of the server whether only a single spatial geometry property - is used to determine the extent or all relevant geometries. - type: array - minItems: 4 - maxItems: 6 - items: - type: number - example: - - -110 - - 39.5 - - -105 - - 40.5 - bboxFilter: - type: object - description: Only return items that intersect the provided bounding box. - properties: - bbox: - $ref: '#/components/schemas/bbox' - timeFilter: - description: An object representing a time based filter. - type: object - properties: - time: - $ref: '#/components/schemas/time' - intersectsFilter: - type: object - description: Only returns items that intersect with the provided polygon. - properties: - intersects: - $ref: '#/components/schemas/polygon' - polygon: - type: object - properties: - type: - type: string - enum: - - polygon - coordinates: - $ref: '#/components/schemas/polygon2D' - required: - - type - - coordinates - polygon2D: - type: array - minItems: 1 - items: - $ref: '#/components/schemas/linearRing2D' - linearRing2D: - type: array - minItems: 4 - items: - $ref: '#/components/schemas/point2D' - example: - - - -104 - - 35 - - - -103 - - 35 - - - -103 - - 34 - - - -104 - - 34 - - - -104 - - 35 - point2D: - description: A 2d geojson point - type: array - minimum: 2 - maximum: 2 - items: - type: number - format: double - example: - - -104 - - 35 - time: - type: string - description: > - Either a date-time or a period string that adheres to RFC 3339. - Examples: - - - * A date-time: "2018-02-12T23:20:50Z" - - * A period: - - "2018-02-12T00:00:00Z/2018-03-18T12:31:12Z" or - - "2018-02-12T00:00:00Z/P1M6DT12H31M12S" - - - Only features that have a temporal property that intersects the value of - - `time` are selected. - - - If a feature has multiple temporal properties, it is the decision of the - - server whether only a single temporal property is used to determine the - - extent or all relevant temporal properties. - example: '2018-02-12T00:00:00Z/2018-03-18T12:31:12Z' - itemCollection: - type: object - required: - - features - - type - properties: - type: - type: string - enum: - - FeatureCollection - features: - type: array - items: - $ref: '#/components/schemas/item' - links: - $ref: '#/components/schemas/itemCollectionLinks' - item: - type: object - required: - - id - - type - - geometry - - links - - properties - - assets - properties: - id: - type: string - example: path/to/example.tif - description: 'unique ID, potentially link to file' - bbox: - $ref: '#/components/schemas/bbox' - geometry: - type: object - description: footprint of the item - type: - type: string - description: The GeoJSON type - enum: - - Feature - properties: - $ref: '#/components/schemas/itemProperties' - links: - type: array - items: - $ref: '#/components/schemas/link' - assets: - type: object - additionalProperties: - type: object - required: - - href - properties: - href: - type: string - title: - type: string - example: - type: Feature - id: CS3-20160503_132130_04 - bbox: - - -122.59750209 - - 37.48803556 - - -122.2880486 - - 37.613537207 - geometry: - type: Polygon - coordinates: - - - - -122.308150179 - - 37.488035566 - - - -122.597502109 - - 37.538869539 - - - -122.576687533 - - 37.613537207 - - - -122.2880486 - - 37.562818007 - - - -122.308150179 - - 37.488035566 - properties: - datetime: '2016-05-03T13:21:30.040Z' - provider: 'http://www.cool-sat.com' - license: CC-BY-4.0 - links: - - rel: self - href: >- - http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04.json - assets: - analytic: - title: 4-Band Analytic - href: >- - http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/analytic.tif - thumbnail: - title: Thumbnail - href: >- - http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/thumb.png - partialItem: - type: object - properties: - id: - type: string - example: path/to/example.tif - description: 'unique ID, potentially link to file' - bbox: - $ref: '#/components/schemas/bbox' - geometry: - type: object - description: footprint of the item - type: - type: string - description: The GeoJSON type - enum: - - Feature - properties: - $ref: '#/components/schemas/partialItemProperties' - links: - type: array - items: - $ref: '#/components/schemas/link' - assets: - type: object - additionalProperties: - type: object - required: - - href - properties: - href: - type: string - title: - type: string - example: - assets: - analytic: - title: 1-Band Analytic - href: >- - http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/analytic-1.tif - itemProperties: - type: object - required: - - datetime - description: provides the core metatdata fields plus extensions - properties: - datetime: - $ref: '#/components/schemas/time' - provider: - type: string - description: Information about the provider - license: - type: string - description: Data license name based on SPDX License List - partialItemProperties: - type: object - description: allows for partial collections of metadata fields - properties: - datetime: - $ref: '#/components/schemas/time' - provider: - type: string - description: Information about the provider - license: - type: string - description: Data license name based on SPDX License List - itemCollectionLinks: - type: object - properties: - next: - type: string - format: url - description: >- - A URL to obtain the next paginated data set. If not present, the - client should utilize the `nextPageToken`. - example: >- - http://api.cool-sat.com/query/gasd312fsaeg/ANsXtp9mrqN0yrKWhf-y2PUpHRLQb1GT-mtxNcXou8TwkXhi1Jbk -tags: - - name: Capabilities - description: >- - Essential characteristics of this API including information about the - data. - - name: Features - description: Access to data (features). - - name: STAC - description: Extension to WFS3 Core to support STAC metadata model and search API - - name: Extensions - description: >- - STAC-specific operations to add, remove, and edit items within WFS3 - collections. \ No newline at end of file +openapi: 3.0.1 +info: + title: The SpatioTemporal Asset Catalog API (standalone) + version: 0.6.0 + description: >- + This is an OpenAPI definition of the core SpatioTemporal Asset Catalog API + specification. Any service that implements this endpoint to allow search of + spatiotemporal assets can be considered a STAC API. The endpoint is also + available as an OpenAPI fragment that can be integrated with other OpenAPI + definitions, and is designed to slot seamless into a WFS 3 API definition. + contact: + name: Cool Sat Corp + email: info@cool-sat.com + url: 'http://cool-sat.com/contact/' + license: + name: Apache License 2.0 + url: 'http://www.apache.org/licenses/LICENSE-2.0' +servers: + - url: 'http://dev.cool-sat.com/' + description: Development server + - url: 'http://www.cool-sat.com' + description: Production server +paths: + /stac: + get: + summary: Return a catalog definition json + tags: + - STAC + responses: + '200': + description: A catalog json definition. Used as an entry point for a crawler. + content: + application/json: + schema: + $ref: '#/components/schemas/catalogDefinition' + /stac/search: + get: + summary: >- + retrieve items matching filters. Intended as a shorthand API for simple + queries. This method is optional. + operationId: getSearchSTAC + tags: + - STAC + parameters: + - $ref: '#/components/parameters/bbox' + - $ref: '#/components/parameters/time' + - $ref: '#/components/parameters/limit' + responses: + '200': + description: A feature collection. + content: + application/geo+json: + schema: + $ref: '#/components/schemas/itemCollection' + text/html: + schema: + type: string + default: + description: An error occured. + content: + application/json: + schema: + $ref: '#/components/schemas/exception' + text/html: + schema: + type: string + post: + summary: >- + retrieve items matching filters. Intended as the standard, full-featured + query API. This method is mandatory. + operationId: postSearchSTAC + tags: + - STAC + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/searchBody' + responses: + '200': + description: A feature collection. + content: + application/geo+json: + schema: + $ref: '#/components/schemas/itemCollection' + text/html: + schema: + type: string + default: + description: An error occured. + content: + application/json: + schema: + $ref: '#/components/schemas/exception' + text/html: + schema: + type: string + /: + get: + summary: landing page of this API + description: >- + The landing page provides links to the API definition, the Conformance + statements and the metadata about the feature data in this dataset. + operationId: getLandingPage + tags: + - Capabilities + responses: + '200': + description: links to the API capabilities + content: + application/json: + schema: + $ref: '#/components/schemas/root' + text/html: + schema: + type: string + /conformance: + get: + summary: information about standards that this API conforms to + description: >- + list all requirements classes specified in a standard (e.g., WFS 3.0 + Part 1: Core) that the server conforms to + operationId: getRequirementsClasses + tags: + - Capabilities + responses: + '200': + description: the URIs of all requirements classes supported by the server + content: + application/json: + schema: + $ref: '#/components/schemas/req-classes' + default: + description: An error occured. + content: + application/json: + schema: + $ref: '#/components/schemas/exception' + /collections: + get: + summary: describe the feature collections in the dataset + operationId: describeCollections + tags: + - Capabilities + responses: + '200': + description: Metdata about the feature collections shared by this API. + content: + application/json: + schema: + $ref: '#/components/schemas/content' + text/html: + schema: + type: string + default: + description: An error occured. + content: + application/json: + schema: + $ref: '#/components/schemas/exception' + text/html: + schema: + type: string + '/collections/{collectionId}': + get: + summary: 'describe the {collectionId} feature collection' + operationId: describeCollection + tags: + - Capabilities + parameters: + - $ref: '#/components/parameters/collectionId' + responses: + '200': + description: 'Metadata about the {collectionId} collection shared by this API.' + content: + application/json: + schema: + $ref: '#/components/schemas/collectionInfo' + text/html: + schema: + type: string + default: + description: An error occured. + content: + application/json: + schema: + $ref: '#/components/schemas/exception' + text/html: + schema: + type: string + '/collections/{collectionId}/items': + get: + summary: 'retrieve features of feature collection {collectionId}' + description: >- + Every feature in a dataset belongs to a collection. A dataset may + consist of multiple feature collections. A feature collection is often a + collection of features of a similar type, based on a common schema.\ + + Use content negotiation to request HTML or GeoJSON. + operationId: getFeatures + tags: + - Features + parameters: + - $ref: '#/components/parameters/collectionId' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/bbox' + - $ref: '#/components/parameters/time' + responses: + '200': + description: >- + Information about the feature collection plus the first features + matching the selection parameters. + content: + application/geo+json: + schema: + $ref: 'http://geojson.org/schema/FeatureCollection.json' + text/html: + schema: + type: string + default: + description: An error occured. + content: + application/json: + schema: + $ref: '#/components/schemas/exception' + text/html: + schema: + type: string + post: + summary: add a new feature to a collection + description: create a new feature in a specific collection + operationId: postFeature + tags: + - Extensions + parameters: + - $ref: '#/components/parameters/collectionId' + requestBody: + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/item' + - $ref: '#/components/schemas/itemCollection' + responses: + '200': + description: Status of the create request. + content: + application/geo+json: + schema: + type: string + text/html: + schema: + type: string + default: + description: An error occured. + content: + application/json: + schema: + $ref: '#/components/schemas/exception' + text/html: + schema: + type: string + '/collections/{collectionId}/items/{featureId}': + get: + summary: retrieve a feature; use content negotiation to request HTML or GeoJSON + operationId: getFeature + tags: + - Features + parameters: + - $ref: '#/components/parameters/collectionId' + - $ref: '#/components/parameters/featureId' + responses: + '200': + description: A feature. + content: + application/geo+json: + schema: + $ref: 'http://geojson.org/schema/Feature.json' + text/html: + schema: + type: string + default: + description: An error occured. + content: + application/json: + schema: + $ref: '#/components/schemas/exception' + text/html: + schema: + type: string + put: + summary: update an existing feature by Id with a complete item definition + description: >- + Use this method to update an existing feature. Requires the entire + GeoJSON description be submitted. + operationId: putFeature + tags: + - Extensions + parameters: + - $ref: '#/components/parameters/collectionId' + - $ref: '#/components/parameters/featureId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/item' + responses: + '200': + description: Status of the update request. + content: + text/html: + schema: + type: string + application/json: + schema: + type: string + default: + description: An error occured. + content: + application/json: + schema: + $ref: '#/components/schemas/exception' + text/html: + schema: + type: string + patch: + summary: update an existing feature by Id with a partial item definition + description: >- + Use this method to update an existing feature. Requires a GeoJSON + fragement (containing the fields to be updated) be submitted. + operationId: patchFeature + tags: + - Extensions + parameters: + - $ref: '#/components/parameters/collectionId' + - $ref: '#/components/parameters/featureId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/partialItem' + responses: + '200': + description: Status of the update request. + content: + text/html: + schema: + type: string + application/json: + schema: + type: string + default: + description: An error occured. + content: + application/json: + schema: + $ref: '#/components/schemas/exception' + text/html: + schema: + type: string + delete: + summary: delete an existing feature by Id + description: Use this method to delete an existing feature. + operationId: deleteFeature + tags: + - Extensions + parameters: + - $ref: '#/components/parameters/collectionId' + - $ref: '#/components/parameters/featureId' + responses: + '200': + description: Status of the update request. + content: + text/html: + schema: + type: string + application/json: + schema: + type: string + default: + description: An error occured. + content: + application/json: + schema: + $ref: '#/components/schemas/exception' + text/html: + schema: + type: string +components: + parameters: + limit: + name: limit + in: query + description: | + The optional limit parameter limits the number of items that are + presented in the response document. + + Only items are counted that are on the first level of the collection in + the response document. Nested objects contained within the explicitly + requested items shall not be counted. + + * Minimum = 1 + * Maximum = 10000 + * Default = 10 + required: false + schema: + type: integer + minimum: 1 + maximum: 10000 + default: 10 + style: form + explode: false + bbox: + name: bbox + in: query + description: | + Only features that have a geometry that intersects the bounding box are + selected. The bounding box is provided as four or six numbers, + depending on whether the coordinate reference system includes a + vertical axis (elevation or depth): + + * Lower left corner, coordinate axis 1 + * Lower left corner, coordinate axis 2 + * Lower left corner, coordinate axis 3 (optional) + * Upper right corner, coordinate axis 1 + * Upper right corner, coordinate axis 2 + * Upper right corner, coordinate axis 3 (optional) + + The coordinate reference system of the values is WGS84 + longitude/latitude (http://www.opengis.net/def/crs/OGC/1.3/CRS84) unless + a different coordinate reference system is specified in the parameter + `bbox-crs`. + + For WGS84 longitude/latitude the values are in most cases the sequence + of minimum longitude, minimum latitude, maximum longitude and maximum + latitude. However, in cases where the box spans the antimeridian the + first value (west-most box edge) is larger than the third value + (east-most box edge). + + + If a feature has multiple spatial geometry properties, it is the + decision of the server whether only a single spatial geometry property + is used to determine the extent or all relevant geometries. + required: false + schema: + type: array + minItems: 4 + maxItems: 6 + items: + type: number + style: form + explode: false + time: + name: time + in: query + description: > + Either a date-time or a period string that adheres to RFC3339. Examples: + + * A date-time: "2018-02-12T23:20:50Z" + + * A period: "2018-02-12T00:00:00Z/2018-03-18T12:31:12Z" or + + "2018-02-12T00:00:00Z/P1M6DT12H31M12S" + + + Only features that have a temporal property that intersects the value + of + + `time` are selected. If a feature has multiple temporal properties, it + is + + the decision of the server whether only a single temporal property is + used to + + determine the extent or all relevant temporal properties. + required: false + schema: + type: string + style: form + explode: false + collectionId: + name: collectionId + in: path + required: true + description: Identifier (name) of a specific collection + schema: + type: string + featureId: + name: featureId + in: path + description: Local identifier of a specific feature + required: true + schema: + type: string + schemas: + exception: + type: object + required: + - code + properties: + code: + type: string + description: + type: string + links: + type: array + items: + $ref: '#/components/schemas/link' + link: + type: object + required: + - href + - rel + additionalProperties: true + properties: + href: + type: string + format: url + example: 'http://www.geoserver.example/stac/naip/child/catalog.json' + rel: + type: string + example: child + type: + type: string + example: application/json + title: + type: string + example: NAIP Child Catalog + searchBody: + description: The search criteria + type: object + allOf: + - $ref: '#/components/schemas/bboxFilter' + - $ref: '#/components/schemas/timeFilter' + - $ref: '#/components/schemas/intersectsFilter' + - type: object + properties: + limit: + type: number + example: 10 + bbox: + description: | + Only features that have a geometry that intersects the bounding box are + selected. The bounding box is provided as four or six numbers, + depending on whether the coordinate reference system includes a + vertical axis (elevation or depth): + + * Lower left corner, coordinate axis 1 + * Lower left corner, coordinate axis 2 + * Lower left corner, coordinate axis 3 (optional) + * Upper right corner, coordinate axis 1 + * Upper right corner, coordinate axis 2 + * Upper right corner, coordinate axis 3 (optional) + + The coordinate reference system of the values is WGS84 + longitude/latitude (http://www.opengis.net/def/crs/OGC/1.3/CRS84) unless + a different coordinate reference system is specified in the parameter + `bbox-crs`. + + For WGS84 longitude/latitude the values are in most cases the sequence + of minimum longitude, minimum latitude, maximum longitude and maximum + latitude. However, in cases where the box spans the antimeridian the + first value (west-most box edge) is larger than the third value + (east-most box edge). + + + If a feature has multiple spatial geometry properties, it is the + decision of the server whether only a single spatial geometry property + is used to determine the extent or all relevant geometries. + type: array + minItems: 4 + maxItems: 6 + items: + type: number + example: + - -110 + - 39.5 + - -105 + - 40.5 + bboxFilter: + type: object + description: Only return items that intersect the provided bounding box. + properties: + bbox: + $ref: '#/components/schemas/bbox' + timeFilter: + description: An object representing a time based filter. + type: object + properties: + time: + $ref: '#/components/schemas/time' + intersectsFilter: + type: object + description: Only returns items that intersect with the provided polygon. + properties: + intersects: + $ref: 'http://geojson.org/schema/Geometry.json' + time: + type: string + description: > + Either a date-time or a period string that adheres to RFC 3339. + Examples: + + + * A date-time: "2018-02-12T23:20:50Z" + + * A period: + + "2018-02-12T00:00:00Z/2018-03-18T12:31:12Z" or + + "2018-02-12T00:00:00Z/P1M6DT12H31M12S" + + + Only features that have a temporal property that intersects the value of + + `time` are selected. + + + If a feature has multiple temporal properties, it is the decision of the + + server whether only a single temporal property is used to determine the + + extent or all relevant temporal properties. + example: '2018-02-12T00:00:00Z/2018-03-18T12:31:12Z' + catalogDefinition: + type: object + required: + - stac_version + - id + - description + - links + additionalProperties: true + properties: + stac_version: + type: string + example: 0.6.0 + id: + type: string + example: naip + title: + type: string + example: NAIP Imagery + description: + type: string + example: Catalog of NAIP Imagery. + links: + $ref: '#/components/schemas/links' + itemCollection: + type: object + required: + - features + - type + properties: + type: + type: string + enum: + - FeatureCollection + features: + type: array + items: + $ref: '#/components/schemas/item' + links: + $ref: '#/components/schemas/itemCollectionLinks' + item: + type: object + required: + - id + - type + - geometry + - bbox + - links + - properties + - assets + properties: + id: + $ref: '#/components/schemas/itemId' + bbox: + $ref: '#/components/schemas/bbox' + geometry: + $ref: 'http://geojson.org/schema/Geometry.json' + type: + $ref: '#/components/schemas/itemType' + properties: + $ref: '#/components/schemas/itemProperties' + links: + $ref: '#/components/schemas/links' + assets: + $ref: '#/components/schemas/itemAssets' + example: + type: Feature + id: CS3-20160503_132130_04 + bbox: + - -122.59750209 + - 37.48803556 + - -122.2880486 + - 37.613537207 + geometry: + type: Polygon + coordinates: + - - - -122.308150179 + - 37.488035566 + - - -122.597502109 + - 37.538869539 + - - -122.576687533 + - 37.613537207 + - - -122.2880486 + - 37.562818007 + - - -122.308150179 + - 37.488035566 + properties: + datetime: '2016-05-03T13:21:30.040Z' + links: + - rel: self + href: >- + http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04.json + assets: + analytic: + title: 4-Band Analytic + href: >- + http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/analytic.tif + thumbnail: + title: Thumbnail + href: >- + http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/thumb.png + type: image/png + itemId: + type: string + example: path/to/example.tif + description: 'Provider identifier, a unique ID, potentially a link to a file.' + itemType: + type: string + description: The GeoJSON type + enum: + - Feature + itemAssets: + type: object + additionalProperties: + type: object + required: + - href + properties: + href: + type: string + format: url + description: Link to the asset object + example: >- + http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/thumb.png + title: + type: string + description: Displayed title + example: Thumbnail + type: + type: string + description: Media type of the asset + example: image/png + itemProperties: + type: object + required: + - datetime + description: provides the core metatdata fields plus extensions + properties: + datetime: + $ref: '#/components/schemas/time' + additionalProperties: + description: Any additional properties added in via extensions. + itemCollectionLinks: + type: object + properties: + next: + type: string + format: url + description: >- + A URL to obtain the next paginated data set. If not present, the + client should utilize the `nextPageToken`. + example: >- + http://api.cool-sat.com/query/gasd312fsaeg/ANsXtp9mrqN0yrKWhf-y2PUpHRLQb1GT-mtxNcXou8TwkXhi1Jbk + root: + type: object + required: + - links + properties: + links: + type: array + items: + $ref: '#/components/schemas/link' + example: + - href: 'http://data.example.org/' + rel: self + type: application/json + title: this document + - href: 'http://data.example.org/api' + rel: service + type: application/openapi+json;version=3.0 + title: the API definition + - href: 'http://data.example.org/conformance' + rel: conformance + type: application/json + title: WFS 3.0 conformance classes implemented by this server + - href: 'http://data.example.org/collections' + rel: data + type: application/json + title: Metadata about the feature collections + req-classes: + type: object + required: + - conformsTo + properties: + conformsTo: + type: array + items: + type: string + example: + - 'http://www.opengis.net/spec/wfs-1/3.0/req/core' + - 'http://www.opengis.net/spec/wfs-1/3.0/req/oas30' + - 'http://www.opengis.net/spec/wfs-1/3.0/req/html' + - 'http://www.opengis.net/spec/wfs-1/3.0/req/geojson' + content: + type: object + required: + - links + - collections + properties: + links: + type: array + items: + $ref: '#/components/schemas/link' + example: + - href: 'http://data.example.org/collections.json' + rel: self + type: application/json + title: this document + - href: 'http://data.example.org/collections.html' + rel: alternate + type: text/html + title: this document as HTML + - href: 'http://schemas.example.org/1.0/foobar.xsd' + rel: describedBy + type: application/xml + title: XML schema for Acme Corporation data + collections: + type: array + items: + $ref: '#/components/schemas/collectionInfo' + collectionInfo: + type: object + required: + - name + - links + - stac_version + - id + - description + - license + - extent + properties: + name: + description: 'identifier of the collection used, for example, in URIs' + type: string + example: buildings + title: + description: human readable title of the collection + type: string + example: Buildings + description: + description: a description of the features in the collection + type: string + example: Buildings in the city of Bonn. + links: + type: array + items: + $ref: '#/components/schemas/link' + example: + - href: 'http://data.example.org/collections/buildings/items' + rel: item + type: application/geo+json + title: Buildings + - href: 'http://example.org/concepts/building.html' + rel: describedBy + type: text/html + title: Feature catalogue for buildings + extent: + $ref: '#/components/schemas/extent' + crs: + description: >- + The coordinate reference systems in which geometries may be + retrieved. Coordinate reference systems are identified by a URI. The + first coordinate reference system is the coordinate reference system + that is used by default. This is always + "http://www.opengis.net/def/crs/OGC/1.3/CRS84", i.e. WGS84 + longitude/latitude. + type: array + items: + type: string + default: + - 'http://www.opengis.net/def/crs/OGC/1.3/CRS84' + stac_version: + type: string + example: 0.6.0 + id: + description: 'identifier of the collection used, for example, in URIs' + type: string + example: buildings + keywords: + title: Keywords + type: array + items: + type: string + example: + - buildings + - properties + - constructions + version: + title: Dataset Version + type: string + example: 1 + license: + title: Dataset License Name + type: string + example: Apache-2.0 + provider: + type: array + items: + properties: + name: + title: Organization name + type: string + example: Big Building Corp + type: + title: Organization type + type: string + enum: + - producer + - processor + - host + example: producer + url: + title: Organization homepage + type: string + format: url + example: 'http://www.big-building.com' + extent: + type: object + properties: + crs: + description: >- + Coordinate reference system of the coordinates in the spatial extent + (property `spatial`). In the Core, only WGS84 longitude/latitude is + supported. Extensions may support additional coordinate reference + systems. + type: string + enum: + - 'http://www.opengis.net/def/crs/OGC/1.3/CRS84' + default: 'http://www.opengis.net/def/crs/OGC/1.3/CRS84' + spatial: + description: >- + West, north, east, south edges of the spatial extent. The minimum + and maximum values apply to the coordinate reference system WGS84 + longitude/latitude that is supported in the Core. If, for example, a + projected coordinate reference system is used, the minimum and + maximum values need to be adjusted. + type: array + minItems: 4 + maxItems: 6 + items: + type: number + example: + - -180 + - -90 + - 180 + - 90 + trs: + description: >- + Temporal reference system of the coordinates in the temporal extent + (property `temporal`). In the Core, only the Gregorian calendar is + supported. Extensions may support additional temporal reference + systems. + type: string + enum: + - 'http://www.opengis.net/def/uom/ISO-8601/0/Gregorian' + default: 'http://www.opengis.net/def/uom/ISO-8601/0/Gregorian' + temporal: + description: Begin and end times of the temporal extent. + type: array + minItems: 2 + maxItems: 2 + items: + type: string + format: dateTime + example: + - '2011-11-11T12:22:11Z' + - '2012-11-24T12:32:43Z' + partialItem: + type: object + properties: + id: + $ref: '#/components/schemas/itemId' + bbox: + $ref: '#/components/schemas/bbox' + geometry: + $ref: 'http://geojson.org/schema/Geometry.json' + type: + $ref: '#/components/schemas/itemType' + properties: + $ref: '#/components/schemas/partialItemProperties' + links: + $ref: '#/components/schemas/links' + assets: + $ref: '#/components/schemas/itemAssets' + example: + assets: + analytic: + title: 1-Band Analytic + href: >- + http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/analytic-1.tif + partialItemProperties: + type: object + description: allows for partial collections of metadata fields + additionalProperties: true + properties: + datetime: + $ref: '#/components/schemas/time' +tags: + - name: STAC + description: Extension to WFS3 Core to support STAC metadata model and search API + - name: Extensions + description: >- + STAC-specific operations to add, remove, and edit items within WFS3 + collections. diff --git a/extensions/transaction/WFS3core+STAC+transaction-merge.yaml b/extensions/transaction/WFS3core+STAC+transaction-merge.yaml new file mode 100644 index 000000000..2045b48e4 --- /dev/null +++ b/extensions/transaction/WFS3core+STAC+transaction-merge.yaml @@ -0,0 +1 @@ +!!files_merge_append ["../../api-spec/definitions/STAC-standalone.yaml", "../../api-spec/definitions/WFS3core.fragment.yaml", "../../api-spec/definitions/STAC-collections.fragment.yaml", "transaction-fragment.yaml"] \ No newline at end of file diff --git a/extensions/transaction/package-lock.json b/extensions/transaction/package-lock.json new file mode 100644 index 000000000..d8fe5473b --- /dev/null +++ b/extensions/transaction/package-lock.json @@ -0,0 +1,73 @@ +{ + "name": "transaction-extension", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "cliclopts": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cliclopts/-/cliclopts-1.1.1.tgz", + "integrity": "sha1-aUMcfLWvcjd0sNORG0w3USQxkQ8=" + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "js-yaml": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "lodash.isarray": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-4.0.0.tgz", + "integrity": "sha1-KspJayjEym1yZxUxNZDALm6jRAM=" + }, + "lodash.merge": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" + }, + "lodash.mergewith": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", + "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==" + }, + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "yaml-files": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/yaml-files/-/yaml-files-1.1.0.tgz", + "integrity": "sha512-xH7LB14u8QWt7pfc3C+OTH3vI8YdcwdD+RZ6BiO5X9BqsAOsY8Q5KhPun7q9SkEBbMLZW5ET7sHvhE4oj5gleA==", + "requires": { + "cliclopts": "^1.1.1", + "js-yaml": "^3.6.1", + "lodash.isarray": "^4.0.0", + "lodash.merge": "^4.6.0", + "lodash.mergewith": "^4.6.1", + "minimist": "^1.2.0" + } + } + } +} diff --git a/extensions/transaction/package.json b/extensions/transaction/package.json new file mode 100644 index 000000000..056def92e --- /dev/null +++ b/extensions/transaction/package.json @@ -0,0 +1,13 @@ +{ + "name": "transaction-extension", + "version": "1.0.0", + "description": "Generate STAC openapi defintions from fragments.", + "repository": "https://github.com/radiantearth/stac-spec", + "license": "Apache-2.0", + "scripts": { + "generate": "yaml-files WFS3core+STAC+transaction-merge.yaml WFS3core+STAC+extensions.yaml" + }, + "dependencies": { + "yaml-files": "^1.1.0" + } +} \ No newline at end of file diff --git a/extensions/transaction/transaction-fragment.yaml b/extensions/transaction/transaction-fragment.yaml index 73f11226e..1c30721a0 100644 --- a/extensions/transaction/transaction-fragment.yaml +++ b/extensions/transaction/transaction-fragment.yaml @@ -139,68 +139,31 @@ components: type: object properties: id: - type: string - example: path/to/example.tif - description: 'unique ID, potentially link to file' + $ref: '#/components/schemas/itemId' bbox: $ref: '#/components/schemas/bbox' geometry: - type: object - description: footprint of the item + $ref: 'http://geojson.org/schema/Geometry.json' type: - type: string - description: The GeoJSON type - enum: - - Feature + $ref: '#/components/schemas/itemType' properties: $ref: '#/components/schemas/partialItemProperties' links: - type: array - items: - $ref: '#/components/schemas/link' + $ref: '#/components/schemas/links' assets: - type: object - additionalProperties: - type: object - required: - - href - properties: - href: - type: string - name: - type: string + $ref: '#/components/schemas/itemAssets' example: assets: analytic: - name: 1-Band Analytic - href: >- - http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/analytic-1.tif - itemProperties: - type: object - required: - - datetime - description: provides the core metatdata fields plus extensions - properties: - datetime: - $ref: '#/components/schemas/time' - provider: - type: string - description: Information about the provider - license: - type: string - description: Data license name based on SPDX License List + title: 1-Band Analytic + href: http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/analytic-1.tif partialItemProperties: type: object description: allows for partial collections of metadata fields + additionalProperties: true properties: datetime: $ref: '#/components/schemas/time' - provider: - type: string - description: Information about the provider - license: - type: string - description: Data license name based on SPDX License List tags: - name: Extensions description: >- From a3fe021b111428531f1be812b686cc14aa68da33 Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Wed, 10 Oct 2018 11:49:35 +0200 Subject: [PATCH 6/7] Fixed titles of the API docs and type fix for properties. --- api-spec/STAC-query.yaml | 3 ++- api-spec/STAC-standalone.yaml | 3 ++- api-spec/WFS3core+STAC.yaml | 5 +++-- api-spec/definitions/WFS3core.fragment.yaml | 3 +++ extensions/transaction/WFS3core+STAC+extensions.yaml | 2 +- extensions/transaction/transaction-fragment.yaml | 3 +++ 6 files changed, 14 insertions(+), 5 deletions(-) diff --git a/api-spec/STAC-query.yaml b/api-spec/STAC-query.yaml index afb1b692b..d73c8db9e 100644 --- a/api-spec/STAC-query.yaml +++ b/api-spec/STAC-query.yaml @@ -501,7 +501,8 @@ components: properties: datetime: $ref: '#/components/schemas/time' - additionalProperties: true + additionalProperties: + description: Any additional properties added in via extensions. itemCollectionLinks: type: object properties: diff --git a/api-spec/STAC-standalone.yaml b/api-spec/STAC-standalone.yaml index 4b585f9d2..ec819da1d 100644 --- a/api-spec/STAC-standalone.yaml +++ b/api-spec/STAC-standalone.yaml @@ -470,7 +470,8 @@ components: properties: datetime: $ref: '#/components/schemas/time' - additionalProperties: true + additionalProperties: + description: Any additional properties added in via extensions. itemCollectionLinks: type: object properties: diff --git a/api-spec/WFS3core+STAC.yaml b/api-spec/WFS3core+STAC.yaml index 5ebcf371e..38960764e 100644 --- a/api-spec/WFS3core+STAC.yaml +++ b/api-spec/WFS3core+STAC.yaml @@ -1,6 +1,6 @@ openapi: 3.0.1 info: - title: The SpatioTemporal Asset Catalog API (standalone) + title: The SpatioTemporal Asset Catalog API + WFS3 version: 0.6.0 description: >- This is an OpenAPI definition of the core SpatioTemporal Asset Catalog API @@ -629,7 +629,8 @@ components: properties: datetime: $ref: '#/components/schemas/time' - additionalProperties: true + additionalProperties: + description: Any additional properties added in via extensions. itemCollectionLinks: type: object properties: diff --git a/api-spec/definitions/WFS3core.fragment.yaml b/api-spec/definitions/WFS3core.fragment.yaml index 70fc4f9cb..7a97791a5 100644 --- a/api-spec/definitions/WFS3core.fragment.yaml +++ b/api-spec/definitions/WFS3core.fragment.yaml @@ -1,3 +1,6 @@ +openapi: 3.0.1 +info: + title: The SpatioTemporal Asset Catalog API + WFS3 paths: /: get: diff --git a/extensions/transaction/WFS3core+STAC+extensions.yaml b/extensions/transaction/WFS3core+STAC+extensions.yaml index 4cbc5d09f..71df7aec5 100644 --- a/extensions/transaction/WFS3core+STAC+extensions.yaml +++ b/extensions/transaction/WFS3core+STAC+extensions.yaml @@ -1,6 +1,6 @@ openapi: 3.0.1 info: - title: The SpatioTemporal Asset Catalog API (standalone) + title: The SpatioTemporal Asset Catalog API + WFS3 + Transaction extension version: 0.6.0 description: >- This is an OpenAPI definition of the core SpatioTemporal Asset Catalog API diff --git a/extensions/transaction/transaction-fragment.yaml b/extensions/transaction/transaction-fragment.yaml index 1c30721a0..3c2af7a8f 100644 --- a/extensions/transaction/transaction-fragment.yaml +++ b/extensions/transaction/transaction-fragment.yaml @@ -1,3 +1,6 @@ +openapi: 3.0.1 +info: + title: The SpatioTemporal Asset Catalog API + WFS3 + Transaction extension paths: '/collections/{collectionId}/items': post: From f2d261ae53d15e37cdf71442aaa15833846bcbd2 Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Wed, 10 Oct 2018 12:00:19 +0200 Subject: [PATCH 7/7] Added some more explanations for the STAC endpoints. --- api-spec/STAC-query.yaml | 16 +++++++++++---- api-spec/STAC-standalone.yaml | 16 +++++++++++---- api-spec/WFS3core+STAC.yaml | 16 +++++++++++---- api-spec/definitions/STAC-standalone.yaml | 20 +++++++++++-------- .../transaction/WFS3core+STAC+extensions.yaml | 16 +++++++++++---- 5 files changed, 60 insertions(+), 24 deletions(-) diff --git a/api-spec/STAC-query.yaml b/api-spec/STAC-query.yaml index d73c8db9e..8098c5c01 100644 --- a/api-spec/STAC-query.yaml +++ b/api-spec/STAC-query.yaml @@ -23,7 +23,13 @@ servers: paths: /stac: get: - summary: Return a catalog definition json + summary: Return the root catalog or collection. + description: >- + Returns the root STAC Catalog or STAC Collection that is the entry point + for users to browse with STAC Browser or for search engines to crawl. + This can either return a single STAC Collection or more commonly a STAC + catalog that usually lists sub-catalogs of STAC Collections, i.e. a + simple catalog that lists all collections available through the API. tags: - STAC responses: @@ -35,8 +41,9 @@ paths: $ref: '#/components/schemas/catalogDefinition' /stac/search: get: - summary: >- - retrieve items matching filters. Intended as a shorthand API for simple + summary: Search STAC items by simple filtering. + description: >- + Retrieve Items matching filters. Intended as a shorthand API for simple queries. This method is optional. operationId: getSearchSTAC tags: @@ -68,7 +75,8 @@ paths: schema: type: string post: - summary: >- + summary: Search STAC items by full-featured filtering. + description: >- retrieve items matching filters. Intended as the standard, full-featured query API. This method is mandatory. operationId: postSearchSTAC diff --git a/api-spec/STAC-standalone.yaml b/api-spec/STAC-standalone.yaml index ec819da1d..f849bf05d 100644 --- a/api-spec/STAC-standalone.yaml +++ b/api-spec/STAC-standalone.yaml @@ -23,7 +23,13 @@ servers: paths: /stac: get: - summary: Return a catalog definition json + summary: Return the root catalog or collection. + description: >- + Returns the root STAC Catalog or STAC Collection that is the entry point + for users to browse with STAC Browser or for search engines to crawl. + This can either return a single STAC Collection or more commonly a STAC + catalog that usually lists sub-catalogs of STAC Collections, i.e. a + simple catalog that lists all collections available through the API. tags: - STAC responses: @@ -35,8 +41,9 @@ paths: $ref: '#/components/schemas/catalogDefinition' /stac/search: get: - summary: >- - retrieve items matching filters. Intended as a shorthand API for simple + summary: Search STAC items by simple filtering. + description: >- + Retrieve Items matching filters. Intended as a shorthand API for simple queries. This method is optional. operationId: getSearchSTAC tags: @@ -65,7 +72,8 @@ paths: schema: type: string post: - summary: >- + summary: Search STAC items by full-featured filtering. + description: >- retrieve items matching filters. Intended as the standard, full-featured query API. This method is mandatory. operationId: postSearchSTAC diff --git a/api-spec/WFS3core+STAC.yaml b/api-spec/WFS3core+STAC.yaml index 38960764e..10ca57f63 100644 --- a/api-spec/WFS3core+STAC.yaml +++ b/api-spec/WFS3core+STAC.yaml @@ -23,7 +23,13 @@ servers: paths: /stac: get: - summary: Return a catalog definition json + summary: Return the root catalog or collection. + description: >- + Returns the root STAC Catalog or STAC Collection that is the entry point + for users to browse with STAC Browser or for search engines to crawl. + This can either return a single STAC Collection or more commonly a STAC + catalog that usually lists sub-catalogs of STAC Collections, i.e. a + simple catalog that lists all collections available through the API. tags: - STAC responses: @@ -35,8 +41,9 @@ paths: $ref: '#/components/schemas/catalogDefinition' /stac/search: get: - summary: >- - retrieve items matching filters. Intended as a shorthand API for simple + summary: Search STAC items by simple filtering. + description: >- + Retrieve Items matching filters. Intended as a shorthand API for simple queries. This method is optional. operationId: getSearchSTAC tags: @@ -65,7 +72,8 @@ paths: schema: type: string post: - summary: >- + summary: Search STAC items by full-featured filtering. + description: >- retrieve items matching filters. Intended as the standard, full-featured query API. This method is mandatory. operationId: postSearchSTAC diff --git a/api-spec/definitions/STAC-standalone.yaml b/api-spec/definitions/STAC-standalone.yaml index 410da14c5..7c61558a0 100644 --- a/api-spec/definitions/STAC-standalone.yaml +++ b/api-spec/definitions/STAC-standalone.yaml @@ -23,8 +23,10 @@ servers: paths: /stac: get: - summary: >- - Return a catalog definition json + summary: Return the root catalog or collection. + description: >- + Returns the root STAC Catalog or STAC Collection that is the entry point for users to browse with STAC Browser or for search engines to crawl. + This can either return a single STAC Collection or more commonly a STAC catalog that usually lists sub-catalogs of STAC Collections, i.e. a simple catalog that lists all collections available through the API. tags: - STAC responses: @@ -36,9 +38,10 @@ paths: $ref: '#/components/schemas/catalogDefinition' /stac/search: get: - summary: >- - retrieve items matching filters. Intended as a shorthand API for simple - queries. This method is optional. + summary: Search STAC items by simple filtering. + description: >- + Retrieve Items matching filters. + Intended as a shorthand API for simple queries. This method is optional. operationId: getSearchSTAC tags: - STAC @@ -66,9 +69,10 @@ paths: schema: type: string post: - summary: >- - retrieve items matching filters. Intended as the standard, full-featured - query API. This method is mandatory. + summary: Search STAC items by full-featured filtering. + description: >- + retrieve items matching filters. + Intended as the standard, full-featured query API. This method is mandatory. operationId: postSearchSTAC tags: - STAC diff --git a/extensions/transaction/WFS3core+STAC+extensions.yaml b/extensions/transaction/WFS3core+STAC+extensions.yaml index 71df7aec5..90d73bc12 100644 --- a/extensions/transaction/WFS3core+STAC+extensions.yaml +++ b/extensions/transaction/WFS3core+STAC+extensions.yaml @@ -23,7 +23,13 @@ servers: paths: /stac: get: - summary: Return a catalog definition json + summary: Return the root catalog or collection. + description: >- + Returns the root STAC Catalog or STAC Collection that is the entry point + for users to browse with STAC Browser or for search engines to crawl. + This can either return a single STAC Collection or more commonly a STAC + catalog that usually lists sub-catalogs of STAC Collections, i.e. a + simple catalog that lists all collections available through the API. tags: - STAC responses: @@ -35,8 +41,9 @@ paths: $ref: '#/components/schemas/catalogDefinition' /stac/search: get: - summary: >- - retrieve items matching filters. Intended as a shorthand API for simple + summary: Search STAC items by simple filtering. + description: >- + Retrieve Items matching filters. Intended as a shorthand API for simple queries. This method is optional. operationId: getSearchSTAC tags: @@ -65,7 +72,8 @@ paths: schema: type: string post: - summary: >- + summary: Search STAC items by full-featured filtering. + description: >- retrieve items matching filters. Intended as the standard, full-featured query API. This method is mandatory. operationId: postSearchSTAC