From 1449c950abc343c5da066e93ba2b936277b6ce45 Mon Sep 17 00:00:00 2001 From: Phil Varner Date: Mon, 27 Apr 2020 10:18:39 -0400 Subject: [PATCH 01/11] cleanup Context Extension text --- STAC-extensions.yaml | 11 ++-- extensions/context/README.md | 12 ++--- extensions/context/context.fragment.yaml | 11 ++-- extensions/context/examples/example.json | 56 +++++++++++++++++-- extensions/context/json-schema/schema.json | 10 ++-- package-lock.json | 63 +++++++--------------- 6 files changed, 92 insertions(+), 71 deletions(-) diff --git a/STAC-extensions.yaml b/STAC-extensions.yaml index 4cbda15b..7414098d 100644 --- a/STAC-extensions.yaml +++ b/STAC-extensions.yaml @@ -1644,9 +1644,12 @@ components: context: type: object required: - - next - returned properties: + returned: + type: integer + minimum: 0 + example: 1 limit: type: integer nullable: true @@ -1655,11 +1658,7 @@ components: matched: type: integer minimum: 0 - example: 1 - returned: - type: integer - minimum: 0 - example: 1 + example: 314159 item: description: >- A GeoJSON Feature augmented with foreign members that contain values diff --git a/extensions/context/README.md b/extensions/context/README.md index 83394f2e..df0c831a 100644 --- a/extensions/context/README.md +++ b/extensions/context/README.md @@ -18,11 +18,11 @@ search, for example, from calling the `/search` API endpoint. | Element | Type | Description | | ------------ | --------------- | ------------------------------------------------------------ | -| returned | integer | **REQUIRED** The count of results returned by this response. equal to the cardinality of features array | -| limit | integer \| null | The maximum number of results to which the result was limited | -| matched | integer | The count of total number of results that match for this query, possibly estimated, particularly in the context of NoSQL data stores | +| returned | integer | **REQUIRED** The count of results returned by this response. Equal to the cardinality of features array. | +| limit | integer \| null | The maximum number of results to which the result was limited. | +| matched | integer | The count of total number of results that match for this query, possibly estimated, particularly in the context of NoSQL data stores. | - The default sort of query results should be stable, but may not be depending on the data store's sorting performance. It is recommended that the [Sort API Extension](../sort/README.md) be implemented in conjunction with this extension and that fields conducive to stable sorting have sorting enabled over them. +The default sort of query results should be stable, but may not be, depending on the data store's sorting semantics. It is recommended that the [Sort API Extension](../sort/README.md) be implemented in conjunction with this extension and that fields conducive to stable sorting have sorting enabled over them. **limit** - The maximum number of results requested explicitly, the default limit used by the service implementation if no parameter was provided, or the maximum limit used by the service implementation if the limit parameter was larger. `null` if no limit was placed on the query that retrieved these results, which should be a rare case in practice. @@ -33,9 +33,9 @@ search, for example, from calling the `/search` API endpoint. "type": "FeatureCollection", "features": [ ], "context": { + "returned": 9, "limit": 10, - "matched": 1092873, - "returned": 9 + "matched": 1092873 } } ``` diff --git a/extensions/context/context.fragment.yaml b/extensions/context/context.fragment.yaml index ce611b16..dde12c64 100644 --- a/extensions/context/context.fragment.yaml +++ b/extensions/context/context.fragment.yaml @@ -6,9 +6,12 @@ components: 'context': type: object required: - - next - returned properties: + returned: + type: integer + minimum: 0 + example: 1 limit: type: integer nullable: true @@ -17,8 +20,4 @@ components: matched: type: integer minimum: 0 - example: 1 - returned: - type: integer - minimum: 0 - example: 1 \ No newline at end of file + example: 314159 diff --git a/extensions/context/examples/example.json b/extensions/context/examples/example.json index a10eb175..ed9bf21d 100644 --- a/extensions/context/examples/example.json +++ b/extensions/context/examples/example.json @@ -1,9 +1,55 @@ { "type": "FeatureCollection", - "features": [ ], "context": { - "limit": 10, - "matched": 1092873, - "returned": 9 - } + "returned": 1, + "limit": 1, + "matched": 1092873 + }, + "features": [ + { + "stac_version": "0.9.0", + "stac_extensions": [], + "type": "Feature", + "id": "CS3-20160503_132131_05", + "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.288048600, + 37.562818007 + ], + [ + -122.308150179, + 37.488035566 + ] + ] + ] + }, + "properties": { + "datetime": "2016-05-03T13:22:30.040Z" + }, + "collection": "CS3", + "links": [ ], + "assets": { } + } + ] } \ No newline at end of file diff --git a/extensions/context/json-schema/schema.json b/extensions/context/json-schema/schema.json index 5913270f..f92061c1 100644 --- a/extensions/context/json-schema/schema.json +++ b/extensions/context/json-schema/schema.json @@ -3,7 +3,7 @@ "$id": "schema.json#", "title": "Context Extension", "type": "object", - "description": "STAC search metadata", + "description": "STAC context metadata", "allOf": [ { "$ref": "#/definitions/context" @@ -22,6 +22,10 @@ "returned" ], "properties": { + "returned": { + "type": "integer", + "minimum": 0 + }, "limit": { "type": ["integer", "null"], "minimum": 0 @@ -29,10 +33,6 @@ "matched": { "type": "integer", "minimum": 0 - }, - "returned": { - "type": "integer", - "minimum": 0 } } } diff --git a/package-lock.json b/package-lock.json index 2d3b3949..c046f751 100644 --- a/package-lock.json +++ b/package-lock.json @@ -798,14 +798,15 @@ "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" }, "handlebars": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", - "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==", + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", + "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", "requires": { + "minimist": "^1.2.5", "neo-async": "^2.6.0", - "optimist": "^0.6.1", "source-map": "^0.6.1", - "uglify-js": "^3.1.4" + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" } }, "has-flag": { @@ -1111,23 +1112,16 @@ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - } + "minimist": "^1.2.5" } }, "mobx": { @@ -1354,22 +1348,6 @@ "json-pointer": "^0.6.0" } }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" - } - } - }, "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", @@ -2045,13 +2023,12 @@ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" }, "uglify-js": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.2.tgz", - "integrity": "sha512-uhRwZcANNWVLrxLfNFEdltoPNhECUR3lc+UdJoG9CBpMcSnKyWA94tc3eAujB1GcMY5Uwq8ZMp4qWpxWYDQmaA==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.9.1.tgz", + "integrity": "sha512-JUPoL1jHsc9fOjVFHdQIhqEEJsQvfKDjlubcCilu8U26uZ73qOg8VsN8O1jbuei44ZPlwL7kmbAdM4tzaUvqnA==", "optional": true, "requires": { - "commander": "~2.20.3", - "source-map": "~0.6.1" + "commander": "~2.20.3" } }, "url": { @@ -2114,9 +2091,9 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" }, "wrap-ansi": { "version": "2.1.0", From 9547a81a407a99f1eb3dd11ce2b32a6d4268a393 Mon Sep 17 00:00:00 2001 From: Phil Varner Date: Mon, 18 May 2020 09:54:08 -0400 Subject: [PATCH 02/11] add changelog --- CHANGELOG.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..79bae579 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,21 @@ +# Changelog +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). + +For changes in 0.9.0 and prior, see the [STAC Spec Changelog](https://github.com/radiantearth/stac-spec/CHANGELOG.md). + +## [Unreleased] + +### Removed + +### Added + +### Changed +- Context Extension OpenAPI spec was updated to remove the no longer used `next` attribute + +### Fixed + + + From 07a9fe75a229d183ef83e4782c89eaa9389684f7 Mon Sep 17 00:00:00 2001 From: Phil Varner Date: Mon, 18 May 2020 09:58:43 -0400 Subject: [PATCH 03/11] fix misspelling of spearator --- api-spec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api-spec.md b/api-spec.md index 2e26eb41..ec645d80 100644 --- a/api-spec.md +++ b/api-spec.md @@ -126,7 +126,7 @@ string values and JSON entity attributes should use JSON Arrays. | collectionId | string | OAFeat | **Path-only** Single Collection ID to include in the search for items. Only Items in one of the provided Collection will be searched | | limit | integer | OAFeat, STAC | The maximum number of results to return (page size). Defaults to 10 | | bbox | [number] | OAFeat, STAC | Requested bounding box. Represented using either 2D or 3D geometries. The length of the array must be 2*n where n is the number of dimensions. The array contains all axes of the southwesterly most extent followed by all axes of the northeasterly most extent specified in Longitude/Latitude or Longitude/Latitude/Elevation based on [WGS 84](http://www.opengis.net/def/crs/OGC/1.3/CRS84). When using 3D geometries, the elevation of the southwesterly most extent is the minimum elevation in meters and the elevation of the northeasterly most extent is the maximum. | -| datetime | string | OAFeat, STAC | Single date+time, or a range ('/' seperator), formatted to [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6). Use double dots `..` for open date ranges. | +| datetime | string | OAFeat, STAC | Single date+time, or a range ('/' separator), formatted to [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6). Use double dots `..` for open date ranges. | | intersects | GeoJSON Geometry | STAC | Searches items by performing intersection between their geometry and provided GeoJSON geometry. All GeoJSON geometry types must be supported. | | ids | [string] | STAC | Array of Item ids to return. All other filter parameters that further restrict the number of search results (except `next` and `limit`) are ignored | | collections | [string] | STAC | Array of Collection IDs to include in the search for items. Only Items in one of the provided Collections will be searched | From 7fce4798ffa6d66533148d6195ecc7ae54b4ca3b Mon Sep 17 00:00:00 2001 From: Phil Varner Date: Mon, 14 Sep 2020 12:34:02 -0400 Subject: [PATCH 04/11] specify type of search Link, wordsmith other API text --- api-spec.md | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/api-spec.md b/api-spec.md index ec645d80..90926cbd 100644 --- a/api-spec.md +++ b/api-spec.md @@ -92,10 +92,10 @@ The `/collections/{collection_id}/items` endpoint accepts parameters for filteri Items in the collection should match all filters to be returned when querying. This implies a logical AND operation. If an OR operation is needed, it should be specified through an extension filter. -## STAC Endpoints +## STAC API Endpoints -STAC provides some additional endpoints for the root Catalog itself, as well as the capability to search the Catalog. -Note that a STAC API does not need to implement OAFeat, in which case it would only support the endpoints given below. +STAC API provides additional attributes for the root Catalog endpoint and defines an endpoint to search the Catalog. +Note that a STAC API does not need to implement OAFeat, in which case it would support only the endpoints below. See the [OpenAPI specification document](openapi/STAC.yaml). | Endpoint | Returns | Description | @@ -105,15 +105,22 @@ See the [OpenAPI specification document](openapi/STAC.yaml). provided search predicates, probably containing search metadata from the `search` extension | The `/` endpoint should function as a complete `Catalog` representation of all the data contained in the API and linked -to in some way from root through `Collections` and `Items`. +to in some way from root to `Collections` and `Items` through `children` and `child` Links. The `/search` endpoint is similar to the `/collections/{collectionId}/items` endpoint in OGC API - Features in that it accepts parameters for filtering, however it performs the filtering across all collections. The parameters accepted are the same as the Filter Parameters above, however the *[extensions](extensions/README.md)* also provide advanced querying parameters. -If the `/search` endpoint is implemented, it is **required** to add a link with the `rel` type set to `search` to the -`links` array in `/` that refers to the search endpoint in the `href` property. +It is **required** to add to the root endpoint (`/`) object a Link in the `links` array with the `rel` type set to `search` that refers to the search endpoint in the `href` property, with a `type` of `application/geo+json`. This Link should look like: +``` +{ + "href": "https://example.com/search", + "rel": "search", + "title": "Search", + "type": "application/geo+json" +} +``` ## Filter Parameters and Fields From 724ef728e53800c696c373e648c7a35b8ea715e1 Mon Sep 17 00:00:00 2001 From: Phil Varner Date: Mon, 14 Sep 2020 12:56:25 -0400 Subject: [PATCH 05/11] CHANGELOG entry for link type application/geo+json --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 79bae579..191ee549 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ For changes in 0.9.0 and prior, see the [STAC Spec Changelog](https://github.com ### Changed - Context Extension OpenAPI spec was updated to remove the no longer used `next` attribute +- Added root endpoint Link `search` must have `type` of `application/geo+json` ### Fixed From f378451c2f9b2a171be2548704c3d287a983ccf6 Mon Sep 17 00:00:00 2001 From: Phil Varner Date: Tue, 15 Sep 2020 09:44:38 -0400 Subject: [PATCH 06/11] change wording about root links --- api-spec.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/api-spec.md b/api-spec.md index 90926cbd..e97c0d16 100644 --- a/api-spec.md +++ b/api-spec.md @@ -104,12 +104,11 @@ See the [OpenAPI specification document](openapi/STAC.yaml). | /search | [ItemCollection](../item-spec/itemcollection-spec.md) | Retrieves a group of Items matching the provided search predicates, probably containing search metadata from the `search` extension | -The `/` endpoint should function as a complete `Catalog` representation of all the data contained in the API and linked -to in some way from root to `Collections` and `Items` through `children` and `child` Links. +The root endpoint (`/`) should function as a complete `Catalog` representation of all the data contained in the API. All `Collections` and `Items` should be linked to from the root through a `data` Link (returning all `Collections`), one or more `child` Links each referencing a single `Collection`, and a `search` Link referencing the `/search` endpoint. -The `/search` endpoint is similar to the `/collections/{collectionId}/items` endpoint in OGC API - Features in that it -accepts parameters for filtering, however it performs the filtering across all collections. The parameters accepted are -the same as the Filter Parameters above, however the *[extensions](extensions/README.md)* also provide advanced querying +The `/search` endpoint is similar to the `/collections/{collectionId}/items` endpoint in OAFeat in that it +accepts parameters for filtering; however, it performs the filtering across all collections. The parameters accepted are +the same as the Filter Parameters above; however, the *[extensions](extensions/README.md)* also provide advanced querying parameters. It is **required** to add to the root endpoint (`/`) object a Link in the `links` array with the `rel` type set to `search` that refers to the search endpoint in the `href` property, with a `type` of `application/geo+json`. This Link should look like: From cce64f0dca4d97754d9d1d19cca8c025029b237a Mon Sep 17 00:00:00 2001 From: Phil Varner Date: Tue, 15 Sep 2020 10:50:00 -0400 Subject: [PATCH 07/11] clarify language around /search being required --- api-spec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api-spec.md b/api-spec.md index e97c0d16..e3f27931 100644 --- a/api-spec.md +++ b/api-spec.md @@ -111,7 +111,7 @@ accepts parameters for filtering; however, it performs the filtering across all the same as the Filter Parameters above; however, the *[extensions](extensions/README.md)* also provide advanced querying parameters. -It is **required** to add to the root endpoint (`/`) object a Link in the `links` array with the `rel` type set to `search` that refers to the search endpoint in the `href` property, with a `type` of `application/geo+json`. This Link should look like: +If the `/search` endpoint is implemented, it is recommended to add a Link to the root endpoint (`/`) with the `rel` type set to `search` that refers to the search endpoint in the `href` property, with a `type` of `application/geo+json`. This Link should look like: ``` { "href": "https://example.com/search", From 9a65fda68c8f88d851ab64bae7ae44d1f05bd5cd Mon Sep 17 00:00:00 2001 From: Phil Varner Date: Wed, 16 Sep 2020 10:57:54 -0400 Subject: [PATCH 08/11] clarify root endpoint links --- api-spec.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/api-spec.md b/api-spec.md index e3f27931..1b249b72 100644 --- a/api-spec.md +++ b/api-spec.md @@ -104,14 +104,19 @@ See the [OpenAPI specification document](openapi/STAC.yaml). | /search | [ItemCollection](../item-spec/itemcollection-spec.md) | Retrieves a group of Items matching the provided search predicates, probably containing search metadata from the `search` extension | -The root endpoint (`/`) should function as a complete `Catalog` representation of all the data contained in the API. All `Collections` and `Items` should be linked to from the root through a `data` Link (returning all `Collections`), one or more `child` Links each referencing a single `Collection`, and a `search` Link referencing the `/search` endpoint. +The root endpoint (`/`) is most useful when it presents a complete `Catalog` representation of all the data contained in the API, such that all `Collections` and `Items` can be navigated to by transitively traversing links from this root. This spec does not require any API endpoints from OAFeat or STAC API to be implemented, so these links may not exist if the endpoint has not been implemented. + +Links with these `rel` attributes should exist in the root endpoint if the reference API endpoint is implemented: +* `data` with href to the OAFeat `/collections` endpoint +* `child` (one or more) with href to a single `Collection` at the OAFeat `/collections/{collectionId}` endpoint +* `search` with href to the `/search` endpoint (**required** if search endpoint is implemented) The `/search` endpoint is similar to the `/collections/{collectionId}/items` endpoint in OAFeat in that it accepts parameters for filtering; however, it performs the filtering across all collections. The parameters accepted are the same as the Filter Parameters above; however, the *[extensions](extensions/README.md)* also provide advanced querying parameters. -If the `/search` endpoint is implemented, it is recommended to add a Link to the root endpoint (`/`) with the `rel` type set to `search` that refers to the search endpoint in the `href` property, with a `type` of `application/geo+json`. This Link should look like: +If the `/search` endpoint is implemented, it is **required** to add a Link to the root endpoint (`/`) with the `rel` type set to `search` that refers to the search endpoint in the `href` property, with a `type` of `application/geo+json`. This Link should look like: ``` { "href": "https://example.com/search", From 4695defc16a2d1f66024467f641df00a25077e1a Mon Sep 17 00:00:00 2001 From: Phil Varner Date: Wed, 23 Sep 2020 12:36:23 -0400 Subject: [PATCH 09/11] update API spec description of /collections result type to match OAFeat --- api-spec.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/api-spec.md b/api-spec.md index 1b249b72..a4e47e1f 100644 --- a/api-spec.md +++ b/api-spec.md @@ -83,11 +83,13 @@ The core OGC API - Features endpoints are shown below, with details provided in | ------------ | ------------- | ----------- | | / | JSON | Landing page, links to API capabilities | | /conformance | JSON | Info about standards to which the API conforms | -| /collections | [Collection] | List of Collections contained in the catalog | +| /collections | JSON | List of Collections contained in the catalog | | /collections/{collectionId} | Collection | Returns single Collection JSON | | /collections/{collectionId}/items | ItemCollection | GeoJSON FeatureCollection-conformant entity of Items in collection | | /collections/{collectionId}/items/{featureId} | Item | Returns single Item (GeoJSON Feature) | +The `/collections` endpoint returns an object with a field `collections` that is an array of Collection objects. + The `/collections/{collection_id}/items` endpoint accepts parameters for filtering the results (also called filters). Items in the collection should match all filters to be returned when querying. This implies a logical AND operation. If an OR operation is needed, it should be specified through an extension filter. From 46d6f7fbcc4ba910dde1edd5eece44e3ea28544a Mon Sep 17 00:00:00 2001 From: Phil Varner Date: Wed, 23 Sep 2020 12:41:58 -0400 Subject: [PATCH 10/11] update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 191ee549..930a7591 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ For changes in 0.9.0 and prior, see the [STAC Spec Changelog](https://github.com ### Changed - Context Extension OpenAPI spec was updated to remove the no longer used `next` attribute - Added root endpoint Link `search` must have `type` of `application/geo+json` +- Corrected the description of endpoint `/collections` to say it returns an object per OAFeat, instead of an array of Collection ### Fixed From 80357764941f9e85863f724cc70a5965e943b8cf Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Mon, 5 Oct 2020 17:19:21 +0200 Subject: [PATCH 11/11] Fix build --- api-spec.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/api-spec.md b/api-spec.md index c6d36bff..7163a484 100644 --- a/api-spec.md +++ b/api-spec.md @@ -90,7 +90,6 @@ The core OGC API - Features endpoints are shown below, with details provided in | `/collections/{collectionId}/items` | ItemCollection | GeoJSON FeatureCollection-conformant entity of Items in collection | | `/collections/{collectionId}/items/{featureId}` | Item | Returns single Item (GeoJSON Feature) | - The `/collections` endpoint returns an object with a field `collections` that is an array of Collection objects. The `/collections/{collection_id}/items` endpoint accepts parameters for filtering the results (also called filters). @@ -111,17 +110,19 @@ See the [OpenAPI specification document](openapi/STAC.yaml). The root endpoint (`/`) is most useful when it presents a complete `Catalog` representation of all the data contained in the API, such that all `Collections` and `Items` can be navigated to by transitively traversing links from this root. This spec does not require any API endpoints from OAFeat or STAC API to be implemented, so these links may not exist if the endpoint has not been implemented. Links with these `rel` attributes should exist in the root endpoint if the reference API endpoint is implemented: -* `data` with href to the OAFeat `/collections` endpoint -* `child` (one or more) with href to a single `Collection` at the OAFeat `/collections/{collectionId}` endpoint -* `search` with href to the `/search` endpoint (**required** if search endpoint is implemented) +- `data` with href to the OAFeat `/collections` endpoint +- `child` (one or more) with href to a single `Collection` at the OAFeat `/collections/{collectionId}` endpoint +- `search` with href to the `/search` endpoint (**required** if search endpoint is implemented) The `/search` endpoint is similar to the `/collections/{collectionId}/items` endpoint in OAFeat in that it accepts parameters for filtering; however, it performs the filtering across all collections. The parameters accepted are the same as the Filter Parameters above; however, the *[extensions](extensions/README.md)* also provide advanced querying parameters. -If the `/search` endpoint is implemented, it is **required** to add a Link to the root endpoint (`/`) with the `rel` type set to `search` that refers to the search endpoint in the `href` property, with a `type` of `application/geo+json`. This Link should look like: -``` +If the `/search` endpoint is implemented, it is **required** to add a Link to the root endpoint (`/`) with the `rel` type set to `search +that refers to the search endpoint in the `href` property, with a `type` of `application/geo+json`. +This Link should look like: +```json { "href": "https://example.com/search", "rel": "search", @@ -224,7 +225,7 @@ The following fields have been added to the `link` object specification for the | method | string | The HTTP method of the request, usually `GET` or `POST`. Defaults to `GET` | | headers | object | A dictionary of header values that should be included in the next request | | body | object | A JSON object containing fields/values that should be included in the body of the next request | -| merge | boolean | If `true`, the headers/body fields in the `next` link should be merged into the original request and be sent combined in the next request. Defaults to `false` | +| merge | boolean | If `true`, the headers/body fields in the `next` link should be merged into the original request and be sent combined in the next request. Defaults to `false` | The implementor has the freedom to decide exactly how to apply these extended fields for their particular pagination mechanism. The same freedom that exists for GET requests, where the actual URL parameter used to defined the next page