openapi: 3.0.1 info: title: The SpatioTemporal Asset Catalog API version: 0.8.0 license: name: Apache License 2.0 url: 'http://www.apache.org/licenses/LICENSE-2.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 seamlessly into a OGC API - Features definition. contact: name: STAC Specification url: 'http://stacspec.org' tags: - name: Capabilities description: essential characteristics of this API - name: Data description: access to data (features) - name: STAC description: >- Extension to OGC API - Features to support STAC metadata model and search API paths: /: get: tags: - Capabilities summary: landing page description: |- The landing page provides links to the API definition, the conformance statements and to the feature collections in this dataset. operationId: getLandingPage responses: '200': $ref: '#/components/responses/LandingPage' '500': $ref: '#/components/responses/ServerError' /conformance: get: tags: - Capabilities summary: information about specifications that this API conforms to description: |- A list of all conformance classes specified in a standard that the server conforms to. operationId: getConformanceDeclaration responses: '200': $ref: '#/components/responses/ConformanceDeclaration' '500': $ref: '#/components/responses/ServerError' /collections: get: tags: - Capabilities summary: the feature collections in the dataset operationId: getCollections responses: '200': $ref: '#/components/responses/Collections' '500': $ref: '#/components/responses/ServerError' /items: get: tags: - Data summary: fetch features description: Fetch features. operationId: getFeatures parameters: - $ref: '#/components/parameters/bbox' - $ref: '#/components/parameters/datetime' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/next' - $ref: '#/components/parameters/ids' - $ref: '#/components/parameters/collectionsArray' responses: '200': $ref: '#/components/responses/Features' '400': $ref: '#/components/responses/InvalidParameter' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/ServerError' post: summary: add a new feature description: create a new feature operationId: postFeature tags: - Insert Extension security: - BearerAuth: - application parameters: - in: header name: Authorization schema: type: string required: true description: Use Bearer yourJWTtokenwithapplicationrole - in: header name: Prefer schema: type: string required: true description: Use return=minimal requestBody: content: application/json: schema: oneOf: - $ref: '#/components/schemas/item' - $ref: '#/components/schemas/itemCollection' responses: '201': description: Status of the create request. '400': $ref: '#/components/responses/BadRequest' '409': $ref: '#/components/responses/ConflictRequest' 5XX: $ref: '#/components/responses/InternalServerError' default: description: An error occurred. content: application/json: schema: $ref: '#/components/schemas/exception' text/html: schema: type: string '/collections/{collectionId}': get: tags: - Capabilities summary: describe the feature collection with id `collectionId` operationId: describeCollection parameters: - $ref: '#/components/parameters/collectionId' responses: '200': $ref: '#/components/responses/Collection' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/ServerError' '/collections/{collectionId}/items': get: tags: - Data summary: fetch features description: |- Fetch features of the feature collection with id `collectionId`. 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 parameters: - $ref: '#/components/parameters/collectionId' - $ref: '#/components/parameters/bbox' - $ref: '#/components/parameters/datetime' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/next' - $ref: '#/components/parameters/ids' responses: '200': $ref: '#/components/responses/Features' '400': $ref: '#/components/responses/InvalidParameter' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/ServerError' '/collections/{collectionId}/items/{featureId}': get: tags: - Data summary: fetch a single feature description: |- Fetch the feature with id `featureId` in the feature collection with id `collectionId`. Use content negotiation to request HTML or GeoJSON. operationId: getFeature parameters: - $ref: '#/components/parameters/collectionId' - $ref: '#/components/parameters/featureId' responses: '200': $ref: '#/components/responses/Feature' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/ServerError' /stac/search: post: summary: Search STAC items with full-featured filtering. description: >- retrieve items matching filters. Intended as the standard, full-featured query API. This method is mandatory to implement if `GET /stac/search` is implemented. If this endpoint is implemented on a server, it is required to add a link with `rel` set to `search` to the `links` array in `GET /stac` that refers to this endpoint. 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 occurred. content: application/json: schema: $ref: '#/components/schemas/exception' text/html: schema: type: string components: parameters: 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 $ref: '#/components/schemas/bbox' style: form explode: false collectionId: name: collectionId in: path description: local identifier of a collection required: true schema: type: string example: landsat-8-l1 datetime: name: datetime in: query description: >- Either a date-time or an interval, open or closed. Date and time expressions adhere to RFC 3339 Examples: * A date-time: "2019-04-12T23:20:50Z" * A closed interval: "2019-04-12T00:00:00Z/2019-08-18T22:31:12Z" Only features that have a temporal property that intersects the value of `datetime` 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 $ref: '#/components/schemas/datetime' style: form explode: false featureId: name: featureId in: path description: local identifier of a feature required: true schema: type: string example: LC80370382019170 limit: name: limit in: query description: The maximum number of results to return (page size). Defaults to 10 required: false schema: type: integer minimum: 1 maximum: 10000 default: 10 $ref: '#/components/schemas/limit' style: form explode: false next: name: next in: query description: >- The token to retrieve the next set of results, e.g., offset, page, continuation token required: false schema: $ref: '#/components/schemas/next' style: form ids: name: ids in: query description: > Array of Item ids to return. All other filter parameters that further restrict the number of search results (except `next` and `limit`) are ignored required: false schema: $ref: '#/components/schemas/ids' explode: false collectionsArray: name: collections in: query description: | Array of Collection IDs to include in the search for items. Only Items in one of the provided Collections will be searched required: false schema: $ref: '#/components/schemas/collectionsArray' explode: false query: name: query in: query description: >- query for properties in items. Use the JSON form of the queryFilter used in POST. required: false schema: type: string fields: name: fields in: query description: Determines the shape of the features in the response required: false schema: $ref: '#/components/schemas/fields' style: form explode: false sort: name: sort in: query description: Allows sorting results by the specified properties required: false schema: $ref: '#/components/schemas/sort' schemas: collection: type: object required: - id - links properties: id: description: 'identifier of the collection used, for example, in URIs' type: string example: address title: description: human readable title of the collection type: string example: address description: description: a description of the features in the collection type: string example: An address. links: type: array items: $ref: '#/components/schemas/link' example: - href: 'http://data.example.com/buildings' rel: item - href: 'http://example.com/concepts/buildings.html' rel: describedBy type: text/html extent: $ref: '#/components/schemas/extent' itemType: description: >- indicator about the type of the items in the collection (the default value is 'feature'). type: string default: feature crs: description: the list of coordinate reference systems supported by the service type: array items: type: string default: - 'http://www.opengis.net/def/crs/OGC/1.3/CRS84' example: - 'http://www.opengis.net/def/crs/OGC/1.3/CRS84' - 'http://www.opengis.net/def/crs/EPSG/0/4326' collections: type: object required: - links - collections properties: links: type: array items: $ref: '#/components/schemas/link' collections: type: array items: $ref: '#/components/schemas/collection' confClasses: type: object required: - conformsTo properties: conformsTo: type: array items: type: string exception: type: object description: >- Information about the exception: an error code plus an optional description. properties: code: type: string description: type: string required: - code extent: type: object description: >- The extent of the features in the collection. In the Core only spatial and temporal extents are specified. Extensions may add additional members to represent other extents, for example, thermal or pressure ranges. properties: spatial: description: The spatial extent of the features in the collection. type: object properties: bbox: description: >- One or more bounding boxes that describe the spatial extent of the dataset. In the Core only a single bounding box is supported. Extensions may support additional areas. If multiple areas are provided, the union of the bounding boxes describes the spatial extent. type: array minItems: 1 items: description: >- Each bounding box is provided as four or six numbers, depending on whether the coordinate reference system includes a vertical axis (height or depth): * Lower left corner, coordinate axis 1 * Lower left corner, coordinate axis 2 * Minimum value, coordinate axis 3 (optional) * Upper right corner, coordinate axis 1 * Upper right corner, coordinate axis 2 * Maximum value, coordinate axis 3 (optional) The coordinate reference system of the values is WGS 84 longitude/latitude (http://www.opengis.net/def/crs/OGC/1.3/CRS84) unless a different coordinate reference system is specified in `crs`. For WGS 84 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 the vertical axis is included, the third and the sixth number are the bottom and the top of the 3-dimensional bounding box. 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: - -180 - -90 - 180 - 90 crs: description: >- Coordinate reference system of the coordinates in the spatial extent (property `bbox`). The default reference system is WGS 84 longitude/latitude. In the Core this is the only supported coordinate reference system. Extensions may support additional coordinate reference systems and add additional enum values. type: string enum: - 'http://www.opengis.net/def/crs/OGC/1.3/CRS84' default: 'http://www.opengis.net/def/crs/OGC/1.3/CRS84' temporal: description: The temporal extent of the features in the collection. type: object properties: interval: description: >- One or more time intervals that describe the temporal extent of the dataset. The value `null` is supported and indicates an open time intervall. In the Core only a single time interval is supported. Extensions may support multiple intervals. If multiple intervals are provided, the union of the intervals describes the temporal extent. type: array minItems: 1 items: description: >- Begin and end times of the time interval. The timestamps are in the coordinate reference system specified in `trs`. By default this is the Gregorian calendar. type: array minItems: 2 maxItems: 2 items: type: string format: date-time nullable: true example: - '2011-11-11T12:22:11Z' - null trs: description: >- Coordinate reference system of the coordinates in the temporal extent (property `interval`). The default reference system is the Gregorian calendar. In the Core this is the only supported temporal reference system. Extensions may support additional temporal reference systems and add additional enum values. type: string enum: - 'http://www.opengis.net/def/uom/ISO-8601/0/Gregorian' default: 'http://www.opengis.net/def/uom/ISO-8601/0/Gregorian' featureCollectionGeoJSON: type: object required: - type - features properties: type: type: string enum: - FeatureCollection features: type: array items: $ref: '#/components/schemas/featureGeoJSON' links: type: array items: $ref: '#/components/schemas/link' timeStamp: $ref: '#/components/schemas/timeStamp' numberMatched: $ref: '#/components/schemas/numberMatched' numberReturned: $ref: '#/components/schemas/numberReturned' 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 links: type: array items: $ref: '#/components/schemas/link' geometryGeoJSON: oneOf: - $ref: '#/components/schemas/pointGeoJSON' - $ref: '#/components/schemas/multipointGeoJSON' - $ref: '#/components/schemas/linestringGeoJSON' - $ref: '#/components/schemas/multilinestringGeoJSON' - $ref: '#/components/schemas/polygonGeoJSON' - $ref: '#/components/schemas/multipolygonGeoJSON' - $ref: '#/components/schemas/geometrycollectionGeoJSON' geometrycollectionGeoJSON: type: object required: - type - geometries properties: type: type: string enum: - GeometryCollection geometries: type: array items: $ref: '#/components/schemas/geometryGeoJSON' landingPage: type: object required: - links properties: title: type: string example: Buildings in Bonn description: type: string example: >- Access to data about buildings in the city of Bonn via a Web API that conforms to the OGC API Features specification. links: type: array items: $ref: '#/components/schemas/link' linestringGeoJSON: type: object required: - type - coordinates properties: type: type: string enum: - LineString coordinates: type: array minItems: 2 items: type: array minItems: 2 items: type: number link: type: object properties: href: type: string example: 'http://www.geoserver.example/stac/naip/child/catalog.json' format: url rel: type: string example: child type: type: string example: application/json hreflang: type: string example: en title: type: string example: NAIP Child Catalog length: type: integer title: Link description: A generic link. required: - href - rel multilinestringGeoJSON: type: object required: - type - coordinates properties: type: type: string enum: - MultiLineString coordinates: type: array items: type: array minItems: 2 items: type: array minItems: 2 items: type: number multipointGeoJSON: type: object required: - type - coordinates properties: type: type: string enum: - MultiPoint coordinates: type: array items: type: array minItems: 2 items: type: number multipolygonGeoJSON: type: object required: - type - coordinates properties: type: type: string enum: - MultiPolygon coordinates: type: array items: type: array items: type: array minItems: 4 items: type: array minItems: 2 items: type: number numberMatched: description: |- The number of features of the feature type that match the selection parameters like `bbox`. type: integer minimum: 0 example: 127 numberReturned: description: |- The number of features in the feature collection. A server may omit this information in a response, if the information about the number of features is not known or difficult to compute. If the value is provided, the value shall be identical to the number of items in the "features" array. type: integer minimum: 0 example: 10 pointGeoJSON: type: object required: - type - coordinates properties: type: type: string enum: - Point coordinates: type: array minItems: 2 items: type: number polygonGeoJSON: type: object required: - type - coordinates properties: type: type: string enum: - Polygon coordinates: type: array items: type: array minItems: 4 items: type: array minItems: 2 items: type: number timeStamp: description: >- This property indicates the time and date when the response was generated. type: string format: date-time example: '2017-08-17T08:05:32Z' searchBody: description: The search criteria type: object allOf: - $ref: '#/components/schemas/bboxFilter' - $ref: '#/components/schemas/datetimeFilter' - $ref: '#/components/schemas/intersectsFilter' - $ref: '#/components/schemas/nextFilter' - $ref: '#/components/schemas/limitFilter' - $ref: '#/components/schemas/queryFilter' - $ref: '#/components/schemas/fieldsFilter' - $ref: '#/components/schemas/sortFilter' next: type: string example: '0' description: >- The token to retrieve the next set of results, e.g., offset, page, continuation token. Defaults to 0 default: '0' limit: type: integer example: 50 description: The maximum number of results to return (page size). Defaults to 50 default: 50 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: - -179 - -89 - 179 - 89 bboxFilter: type: object description: Only return items that intersect the provided bounding box. properties: bbox: $ref: '#/components/schemas/bbox' collectionsArray: type: array description: | Array of Collection IDs to include in the search for items. Only Items in one of the provided Collections will be searched items: type: string ids: type: array description: > Array of Item ids to return. All other filter parameters that further restrict the number of search results (except `next` and `limit`) are ignored items: type: string datetimeFilter: description: An object representing a date+time based filter. type: object properties: datetime: $ref: '#/components/schemas/datetime' intersectsFilter: type: object description: Only returns items that intersect with the provided polygon. properties: intersects: $ref: 'https://geojson.org/schema/Geometry.json' limitFilter: type: object description: Only returns maximum number of results (page size) properties: limit: $ref: '#/components/schemas/limit' nextFilter: type: object description: Only returns the next set of results properties: next: $ref: '#/components/schemas/next' idsFilter: type: object description: Only returns items that match the array of given ids properties: ids: $ref: '#/components/schemas/ids' collectionsFilter: type: object description: Only returns the collections specified properties: collections: $ref: '#/components/schemas/collectionsArray' datetime: type: string description: >- Either a date-time or an interval, open or closed. Date and time expressions adhere to RFC 3339. Open intervals are expressed using double-dots. Examples: * A date-time: "2019-04-12T23:20:50Z" * A closed interval: "2019-04-12T00:00:00Z/2019-08-18T21:31:12Z" Only features that have a temporal property that intersects the value of `datetime` 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: '2019-04-12T00:00:00Z/2019-08-18T21:31:12Z' stac_version: title: STAC version type: string example: 0.8.0 stac_extensions: title: STAC extensions type: array uniqueItems: true items: anyOf: - title: Reference to a JSON Schema type: string format: uri - title: Reference to a core extension type: string catalogDefinition: type: object required: - stac_version - id - description - links properties: stac_version: $ref: '#/components/schemas/stac_version' stac_extensions: $ref: '#/components/schemas/stac_extensions' id: type: string example: naip title: type: string example: NAIP Imagery description: type: string example: Catalog of NAIP Imagery. links: type: array items: anyOf: - $ref: '#/components/schemas/link' - title: Link to search endpoint description: >- Link the search endpoint, which is **required** to be specified if the API implements `/stac/search`. type: object required: - href - rel properties: href: type: string format: url example: 'http://www.cool-sat.com/stac/search' rel: type: string enum: - search type: type: string title: type: string itemCollection: description: >- A GeoJSON FeatureCollection augmented with foreign members that contain values relevant to a STAC entity 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: description: >- A GeoJSON Feature augmented with foreign members that contain values relevant to a STAC entity type: object required: - stac_version - id - type - geometry - bbox - links - properties - assets properties: stac_version: $ref: '#/components/schemas/stac_version' stac_extensions: $ref: '#/components/schemas/stac_extensions' id: $ref: '#/components/schemas/itemId' bbox: $ref: '#/components/schemas/bbox' geometry: $ref: 'https://geojson.org/schema/Geometry.json' type: $ref: '#/components/schemas/itemType' properties: $ref: '#/components/schemas/itemProperties' links: type: array items: $ref: '#/components/schemas/link' assets: $ref: '#/components/schemas/itemAssets' example: stac_version: 0.8.0 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/datetime' additionalProperties: description: >- Any additional properties added in via Item specification or extensions. itemCollectionLinks: type: array description: >- An array of links. Can be used for pagination, e.g. by providing a link with the `next` relation type. items: $ref: '#/components/schemas/link' example: - rel: next href: >- http://api.cool-sat.com/stac/search?next=ANsXtp9mrqN0yrKWhf-y2PUpHRLQb1GT-mtxNcXou8TwkXhi1Jbk queryFilter: type: object description: Allows users to query properties for specific values properties: query: $ref: '#/components/schemas/query' query: type: object description: Define which properties to query and the operatations to apply additionalProperties: $ref: '#/components/schemas/queryProp' example: 'eo:cloud_cover': lt: 50 queryProp: description: Apply query operations to a specific property anyOf: - description: >- if the object doesn't contain any of the operators, it is equivalent to using the equals operator - type: object description: Match using an operator properties: eq: description: >- Find items with a property that is equal to the specified value. For strings, a case-insensitive comparison must be performed. gt: type: number description: >- Find items with a property value greater than the specified value. lt: type: number description: Find items with a property value less than the specified value. gte: type: number description: >- Find items with a property value greater than or equal the specified value. lte: type: number description: >- Find items with a property value greater than or equal the specified value. in: type: array items: type: string description: >- Find items with a property that matches one of the specified strings. A case-insensitive comparison must be performed. fieldsFilter: type: object description: Determines the shape of the features in the response properties: fields: $ref: '#/components/schemas/fields' fields: description: | The include and exclude members specify an array of property names that are either included or excluded from the result, respectively. If both include and exclude are specified, include takes precedence. Values should include the full JSON path of the property. type: object properties: include: type: array items: type: string exclude: type: array items: type: string example: include: - id - 'properties.eo:cloud_cover' exclude: - geometry - properties.datetime sortFilter: type: object description: Sort the results properties: sort: $ref: '#/components/schemas/sort' sort: type: array description: | An array of objects containing a property name and sort direction. minItems: 1 items: type: object required: - field properties: field: type: string direction: type: string default: asc enum: - asc - desc example: - field: 'eo:cloud_cover' direction: desc responses: LandingPage: description: |- The landing page provides links to the API definition (link relations `service-desc` and `service-doc`), the Conformance declaration (path `/conformance`, link relation `conformance`), and the Feature Collections (path `/collections`, link relation `data`). content: application/json: schema: $ref: '#/components/schemas/landingPage' example: title: Buildings in Bonn description: >- Access to data about buildings in the city of Bonn via a Web API that conforms to the OGC API Features specification. links: - href: 'http://data.example.org/' rel: self type: application/json title: this document - href: 'http://data.example.org/api' rel: service-desc type: application/vnd.oai.openapi+json;version=3.0 title: the API definition - href: 'http://data.example.org/api.html' rel: service-doc type: text/html title: the API documentation - href: 'http://data.example.org/conformance' rel: conformance type: application/json title: OGC API conformance classes implemented by this server - href: 'http://data.example.org/collections' rel: data type: application/json title: Information about the feature collections text/html: schema: type: string ConformanceDeclaration: description: |- The URIs of all conformance classes supported by the server. To support "generic" clients that want to access multiple OGC API Features implementations - and not "just" a specific API / server, the server declares the conformance classes it implements and conforms to. content: application/json: schema: $ref: '#/components/schemas/confClasses' example: conformsTo: - 'http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/core' - 'http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/oas30' - 'http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/html' - 'http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/geojson' text/html: schema: type: string Collections: description: >- The feature collections shared by this API. The dataset is organized as one or more feature collections. This resource provides information about and access to the collections. The response contains the list of collections. For each collection, a link to the items in the collection (path `/collections/{collectionId}/items`, link relation `items`) as well as key information about the collection. This information includes: * A local identifier for the collection that is unique for the dataset; * A list of coordinate reference systems (CRS) in which geometries may be returned by the server. The first CRS is the default coordinate reference system (the default is always WGS 84 with axis order longitude/latitude); * An optional title and description for the collection; * An optional extent that can be used to provide an indication of the spatial and temporal extent of the collection - typically derived from the data; * An optional indicator about the type of the items in the collection (the default value, if the indicator is not provided, is 'feature'). content: application/json: schema: $ref: '#/components/schemas/collections' example: links: - 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/buildings.xsd' rel: describedBy type: application/xml title: GML application schema for Acme Corporation building data - href: 'http://download.example.org/buildings.gpkg' rel: enclosure type: application/geopackage+sqlite3 title: Bulk download (GeoPackage) length: 472546 collections: - id: buildings title: Buildings description: Buildings in the city of Bonn. extent: spatial: bbox: - - 7.01 - 50.63 - 7.22 - 50.78 temporal: interval: - - '2010-02-15T12:34:56Z' - null links: - href: 'http://data.example.org/collections/buildings/items' rel: items type: application/geo+json title: Buildings - href: 'http://data.example.org/collections/buildings/items.html' rel: items type: text/html title: Buildings - href: 'https://creativecommons.org/publicdomain/zero/1.0/' rel: license type: text/html title: CC0-1.0 - href: 'https://creativecommons.org/publicdomain/zero/1.0/rdf' rel: license type: application/rdf+xml title: CC0-1.0 text/html: schema: type: string Collection: description: >- Information about the feature collection with id `collectionId`. The response contains a linkto the items in the collection (path `/collections/{collectionId}/items`,link relation `items`) as well as key information about the collection. This information includes: * A local identifier for the collection that is unique for the dataset; * A list of coordinate reference systems (CRS) in which geometries may be returned by the server. The first CRS is the default coordinate reference system (the default is always WGS 84 with axis order longitude/latitude); * An optional title and description for the collection; * An optional extent that can be used to provide an indication of the spatial and temporal extent of the collection - typically derived from the data; * An optional indicator about the type of the items in the collection (the default value, if the indicator is not provided, is 'feature'). content: application/json: schema: $ref: '#/components/schemas/collection' example: id: buildings title: Buildings description: Buildings in the city of Bonn. extent: spatial: bbox: - - 7.01 - 50.63 - 7.22 - 50.78 temporal: interval: - - '2010-02-15T12:34:56Z' - null links: - href: 'http://data.example.org/collections/buildings/items' rel: items type: application/geo+json title: Buildings - href: 'http://data.example.org/collections/buildings/items.html' rel: items type: text/html title: Buildings - href: 'https://creativecommons.org/publicdomain/zero/1.0/' rel: license type: text/html title: CC0-1.0 - href: 'https://creativecommons.org/publicdomain/zero/1.0/rdf' rel: license type: application/rdf+xml title: CC0-1.0 text/html: schema: type: string Features: description: >- The response is a document consisting of features in the collection. The features included in the response are determined by the server based on the query parameters of the request. To support access to larger collections without overloading the client, the API supports paged access with links to the next page, if more features are selected that the page size. The `bbox` and `datetime` parameter can be used to select only a subset of the features in the collection (the features that are in the bounding box or time interval). The `bbox` parameter matches all features in the collection that are not associated with a location, too. The `datetime` parameter matches all features in the collection that are not associated with a time stamp or interval, too. The `limit` parameter may be used to control the subset of the selected features that should be returned in the response, the page size. Each page may include information about the number of selected and returned features (`numberMatched` and `numberReturned`) as well as links to support paging (link relation `next`). content: application/geo+json: schema: $ref: '#/components/schemas/featureCollectionGeoJSON' example: type: FeatureCollection links: - href: 'http://data.example.com/collections/buildings/items.json' rel: self type: application/geo+json title: this document - href: 'http://data.example.com/collections/buildings/items.html' rel: alternate type: text/html title: this document as HTML - href: >- http://data.example.com/collections/buildings/items.json&offset=10&limit=2 rel: next type: application/geo+json title: next page timeStamp: '2018-04-03T14:52:23Z' numberMatched: 123 numberReturned: 2 features: - type: Feature id: '123' geometry: type: Polygon coordinates: - ... properties: function: residential floors: '2' lastUpdate: '2015-08-01T12:34:56Z' - type: Feature id: '132' geometry: type: Polygon coordinates: - ... properties: function: public use floors: '10' lastUpdate: '2013-12-03T10:15:37Z' text/html: schema: type: string Feature: description: |- fetch the feature with id `featureId` in the feature collection with id `collectionId` content: application/geo+json: schema: $ref: '#/components/schemas/featureGeoJSON' example: type: Feature links: - href: 'http://data.example.com/id/building/123' rel: canonical title: canonical URI of the building - href: 'http://data.example.com/collections/buildings/items/123.json' rel: self type: application/geo+json title: this document - href: 'http://data.example.com/collections/buildings/items/123.html' rel: alternate type: text/html title: this document as HTML - href: 'http://data.example.com/collections/buildings' rel: collection type: application/geo+json title: the collection document id: '123' geometry: type: Polygon coordinates: - ... properties: function: residential floors: '2' lastUpdate: '2015-08-01T12:34:56Z' text/html: schema: type: string InvalidParameter: description: A query parameter has an invalid value. content: application/json: schema: $ref: '#/components/schemas/exception' text/html: schema: type: string NotFound: description: The specified resource was not found content: application/json: schema: $ref: '#/components/schemas/exception' ServerError: description: A server error occurred. content: application/json: schema: $ref: '#/components/schemas/exception' text/html: schema: type: string BadRequest: description: The request was malformed or semantically invalid content: application/json: schema: $ref: '#/components/schemas/exception' ConflictRequest: description: The request has a conflict content: application/json: schema: $ref: '#/components/schemas/exception' InternalServerError: description: >- The request was syntactically and semantically valid, but an error occurred while trying to act upon it content: application/json: schema: $ref: '#/components/schemas/exception' securitySchemes: BearerAuth: type: http scheme: bearer bearerFormat: JWT servers: - url: 'http://localhost:8080' description: Development server