diff --git a/README.md b/README.md index 9b5a640a..4a81cf14 100644 --- a/README.md +++ b/README.md @@ -196,7 +196,7 @@ compliance when available. In the case of OGC API Features follow these steps: - Start a new test session in the TEAM Engine against http://localhost:8080 (or http://host.docker.internal:8080). - More details in the [features conformance test suite](https://opengeospatial.github.io/ets-ogcapi-features10/). - Publish test results HTML report in [docs](./docs/ogc-features-test-report) and list below. - - Test results on [27-09-2023](https://htmlpreview.github.io/?https://github.com/PDOK/gokoala/blob/features/docs/ogc-features-test-report/20230927.html) + - Test results on [27-09-2023](https://htmlpreview.github.io/?https://github.com/PDOK/gokoala/blob/master/docs/ogc-features-test-report/20230927.html) ## Misc diff --git a/engine/templates/openapi/README.md b/engine/templates/openapi/README.md index 6f5bdff6..5b6f44fd 100644 --- a/engine/templates/openapi/README.md +++ b/engine/templates/openapi/README.md @@ -45,8 +45,9 @@ that are implemented and remove the references to the rest."_ source: OGC API Ti - Changes: - Removal of OGC Common endpoints (landing page, api, conformance), already covered by `common.json` - - Removal of OGC Collection endpoints (we don't support these for Tiles at the - moment) + - Removal of generic OGC Collection types, already covered in `commons-collections.json` + - Also removal of OGC Collection endpoints (we don't support these for Tiles at the + moment), this may change in the future. - Removal of OGC Style endpoint (/styles), already - and better - covered by `styles.json` - Removal of GeoJSON as tiles format, only MapBox Vector Tiles are supported. - Removal of optional parameters for `/tiles` endpoint like datetime (temporal data) diff --git a/engine/templates/openapi/tiles.go.json b/engine/templates/openapi/tiles.go.json index 46a76b95..005ec8d7 100644 --- a/engine/templates/openapi/tiles.go.json +++ b/engine/templates/openapi/tiles.go.json @@ -299,163 +299,6 @@ } } }, - "collections": { - "type": "object", - "required": [ - "links", - "collections" - ], - "properties": { - "links": { - "type": "array", - "items": { - "$ref": "#/components/schemas/link" - } - }, - "timeStamp": { - "type": "string", - "format": "date-time" - }, - "numberMatched": { - "type": "integer", - "minimum": 0, - "example": 1 - }, - "numberReturned": { - "type": "integer", - "minimum": 0, - "example": 1 - }, - "collections": { - "type": "array", - "items": { - "$ref": "#/components/schemas/collectionInfo" - } - } - } - }, - "collectionInfo": { - "type": "object", - "required": [ - "id", - "links" - ], - "properties": { - "id": { - "type": "string", - "description": "identifier of the collection used, for example, in URIs", - "example": "dem" - }, - "title": { - "type": "string", - "description": "human readable title of the collection", - "example": "Digital Elevation Model" - }, - "description": { - "type": "string", - "description": "a description of the data in the collection", - "example": "A Digital Elevation Model." - }, - "links": { - "type": "array", - "example": [ - { - "href": "http://data.example.org/collections/dem?f=json", - "rel": "self", - "type": "application/json", - "title": "Digital Elevation Model" - }, - { - "href": "http://data.example.org/collections/dem?f=html", - "rel": "alternate", - "type": "application/json", - "title": "Digital Elevation Model" - }, - { - "href": "http://data.example.org/collections/dem/coverage", - "rel": "coverage", - "type": "image/tiff; application=geotiff", - "title": "Digital Elevation Model" - }, - { - "href": "http://data.example.org/collections/dem/coverage/domainset", - "rel": "domainset", - "type": "application/json", - "title": "Digital Elevation Model" - }, - { - "href": "http://data.example.org/collections/dem/coverage/rangetype", - "rel": "rangetype", - "type": "application/json", - "title": "Digital Elevation Model" - }, - { - "href": "http://data.example.org/collections/dem/coverage/metadata", - "rel": "metadata", - "type": "application/json", - "title": "Digital Elevation Model" - } - ], - "items": { - "$ref": "#/components/schemas/link" - } - }, - "extent": { - "$ref": "#/components/schemas/extent-uad" - }, - "itemType": { - "description": "indicator about the type of the items in the collection if the collection has an accessible /collections/{collectionId}/items endpoint", - "type": "string", - "default": "unknown" - }, - "crs": { - "description": "the list of coordinate reference systems supported by the API; the first item is the default coordinate reference system", - "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" - ] - }, - "dataType": { - "allOf": [ - { - "description": "Type of data represented in the collection" - }, - { - "$ref": "#/components/schemas/dataType" - } - ] - }, - "geometryDimension": { - "description": "The geometry dimension of the features shown in this layer (0: points, 1: curves, 2: surfaces, 3: solids), unspecified: mixed or unknown", - "type": "integer", - "minimum": 0, - "maximum": 3 - }, - "minScaleDenominator": { - "description": "Minimum scale denominator for usage of the collection", - "type": "number" - }, - "maxScaleDenominator": { - "description": "Maximum scale denominator for usage of the collection", - "type": "number" - }, - "minCellSize": { - "description": "Minimum cell size for usage of the collection", - "type": "number" - }, - "maxCellSize": { - "description": "Maximum cell size for usage of the collection", - "type": "number" - } - } - }, "extent": { "description": "The extent of the data in the collection. In the Core only spatial and temporal\nextents are specified. Extensions may add additional members to represent other\nextents, for example, thermal or pressure ranges.\n\nThe first item in the array describes the overall extent of\nthe data. All subsequent items describe more precise extents,\ne.g., to identify clusters of data.\nClients only interested in the overall extent will only need to\naccess the first item in each array.", "type": "object", @@ -831,18 +674,6 @@ "format": "date-time", "example": "2017-08-17T08:05:32Z" }, - "numberReturned": { - "description": "The number of features in the feature collection.\nA server may omit this information in a response, if the information\nabout the number of features is not known or difficult to compute.\nIf the value is provided, the value shall be identical to the number\nof items in the \"features\" array.", - "type": "integer", - "minimum": 0, - "example": 10 - }, - "numberMatched": { - "description": "The number of features of the feature type that match the selection\nparameters like `bbox`.", - "type": "integer", - "minimum": 0, - "example": 127 - }, "tileJSON": { "type": "object", "required": ["tilejson", "tiles"], @@ -1826,286 +1657,6 @@ } } }, - "FeatureCollection": { - "title": "GeoJSON FeatureCollection", - "type": "object", - "required": [ - "type", - "features" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "FeatureCollection" - ] - }, - "features": { - "type": "array", - "items": { - "title": "GeoJSON Feature", - "type": "object", - "required": [ - "type", - "properties", - "geometry" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feature" - ] - }, - "id": { - "oneOf": [ - { - "type": "number" - }, - { - "type": "string" - } - ] - }, - "properties": { - "type": "object", - "nullable": true - }, - "geometry": { - "oneOf": [ - { - "title": "GeoJSON Point", - "type": "object", - "nullable": true, - "required": [ - "type", - "coordinates" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Point" - ] - }, - "coordinates": { - "type": "array", - "minItems": 2, - "items": { - "type": "number" - } - }, - "bbox": { - "type": "array", - "minItems": 4, - "items": { - "type": "number" - } - } - } - }, - { - "title": "GeoJSON LineString", - "type": "object", - "required": [ - "type", - "coordinates" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "LineString" - ] - }, - "coordinates": { - "type": "array", - "minItems": 2, - "items": { - "type": "array", - "minItems": 2, - "items": { - "type": "number" - } - } - }, - "bbox": { - "type": "array", - "minItems": 4, - "items": { - "type": "number" - } - } - } - }, - { - "title": "GeoJSON Polygon", - "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" - } - } - } - }, - "bbox": { - "type": "array", - "minItems": 4, - "items": { - "type": "number" - } - } - } - }, - { - "title": "GeoJSON MultiPoint", - "type": "object", - "required": [ - "type", - "coordinates" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MultiPoint" - ] - }, - "coordinates": { - "type": "array", - "items": { - "type": "array", - "minItems": 2, - "items": { - "type": "number" - } - } - }, - "bbox": { - "type": "array", - "minItems": 4, - "items": { - "type": "number" - } - } - } - }, - { - "title": "GeoJSON MultiLineString", - "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" - } - } - } - }, - "bbox": { - "type": "array", - "minItems": 4, - "items": { - "type": "number" - } - } - } - }, - { - "title": "GeoJSON MultiPolygon", - "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" - } - } - } - } - }, - "bbox": { - "type": "array", - "minItems": 4, - "items": { - "type": "number" - } - } - } - } - ] - }, - "bbox": { - "type": "array", - "minItems": 4, - "items": { - "type": "number" - } - } - } - } - }, - "bbox": { - "type": "array", - "minItems": 4, - "items": { - "type": "number" - } - } - } - }, "enumeration": { "type": "object", "required": [ @@ -2494,92 +2045,6 @@ } } }, - "LandingPage": { - "description": "The landing page provides links to the API definition (link relation `service-desc`, in this case path `/api`),\nto the Conformance declaration (path `/conformance`, link relation `conformance`), and to the Collections of geospatial data (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 Tiles 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 service" - }, - { - "href": "http://data.example.org/collections", - "rel": "data", - "type": "application/json", - "title": "Information about the collections" - } - ] - } - }, - "text/html": { - "schema": { - "type": "string" - } - } - } - }, - "Conformance": { - "description": "The URIs of all conformance classes supported by the server", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/confClasses" - } - ], - "example": { - "conformsTo": [ - "http://www.opengis.net/spec/ogcapi-common-1/1.0/conf/core", - "http://www.opengis.net/spec/ogcapi-common-1/1.0/conf/json", - "http://www.opengis.net/spec/ogcapi-common-1/1.0/conf/html", - "http://www.opengis.net/spec/ogcapi-common-1/1.0/conf/oas30", - "http://www.opengis.net/spec/ogcapi-common-2/1.0/conf/collections", - "http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/core", - "http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/tileset", - "http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/tilesets-list", - "http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/geodata-tilesets", - "http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/dataset-tilesets", - "http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/geodata-selection", - "http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/jpeg", - "http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/png", - "http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/mvt", - "http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/geojson", - "http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/tiff", - "http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/netcdf" - ] - } - } - } - } - }, "API": { "description": "The OpenAPI definition of the API.", "content": { @@ -2610,169 +2075,6 @@ } } }, - "CollectionsList": { - "description": "The collections of (mostly geospatial) data available from this API. The dataset contains one or more collections. This resource provides information about and access to the collections. The response contains the list of collections. Each collection is accessible via one or more OGC API set of specifications, for which a link to relevant accessible resources, e.g. /collections/{collectionId}/(items, coverage, map, tiles...) is provided, with the corresponding relation type, as well as key information about the collection. This information includes:\n* a local identifier for the collection that is unique for the dataset;\n* a list of coordinate reference systems (CRS) in which data 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);\n* an optional title and description for the collection;\n* 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;\n* for collections accessible via the Features or Records API, 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 a particular collection of (mostly geospatial) data available from this API. The collection is accessible via one or more OGC API set of specifications, for which a link to relevant accessible resources, e.g. /collections/{collectionId}/(items, coverage, map, tiles...) is contained in the response, with the corresponding relation type, as well as key information about the collection. This information includes:\n* a local identifier for the collection that is unique for the dataset;\n* a list of coordinate reference systems (CRS) in which data 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);\n* an optional title and description for the collection;\n* 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;\n* for collections accessible via the Features or Records API, 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/collectionInfo" - }, - "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" - } - } - } - }, "TileSetsList": { "description": "List of available tilesets.", "content": {