{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://processes.openeo.org/2.0.0-rc.1/meta/subtype-schemas.json", "title": "Subtype Schemas", "description": "This file defines the schemas for subtypes we define for openEO processes.", "definitions": { "band-name": { "type": "string", "subtype": "band-name", "title": "Band Name", "description": "Either a unique band name (metadata field `name`) or a [common band name](https://github.com/radiantearth/stac-spec/tree/v0.9.0/extensions/eo#common-band-names) (metadata field `common_name`) available in the data cube. If the unique band name and the common name conflict, the unique band name has a higher priority." }, "bounding-box": { "type": "object", "subtype": "bounding-box", "title": "Bounding Box", "description": "A bounding box with the required fields `west`, `south`, `east`, `north` and optionally `base`, `height`, `crs`. The `crs` is a EPSG code or a WKT2:2018 string.", "required": [ "west", "south", "east", "north" ], "properties": { "west": { "description": "West (lower left corner, coordinate axis 1).", "type": "number" }, "south": { "description": "South (lower left corner, coordinate axis 2).", "type": "number" }, "east": { "description": "East (upper right corner, coordinate axis 1).", "type": "number" }, "north": { "description": "North (upper right corner, coordinate axis 2).", "type": "number" }, "base": { "description": "Base (optional, lower left corner, coordinate axis 3).", "type": [ "number", "null" ], "default": null }, "height": { "description": "Height (optional, upper right corner, coordinate axis 3).", "type": [ "number", "null" ], "default": null }, "crs": { "description": "Coordinate reference system of the extent, specified as as [EPSG code](http://www.epsg-registry.org/) or [WKT2 CRS string](http://docs.opengeospatial.org/is/18-010r7/18-010r7.html). Defaults to `4326` (EPSG code 4326) unless the client explicitly requests a different coordinate reference system.", "anyOf": [ { "$ref": "#/definitions/epsg-code" }, { "$ref": "#/definitions/wkt2-definition" } ], "default": 4326 } } }, "chunk-size": { "type": "object", "subtype": "chunk-size", "title": "Chunk Size", "description": "The chunk size per dimension given. This object maps the dimension names given as key to chunks given as either a physical measure or pixels. If not given or `null`, no chunking is applied.", "required": [ "dimension", "value" ], "properties": { "dimension": { "type": "string" }, "value": { "default": null, "anyOf": [ { "type": "null" }, { "type": "number", "minimum": 0 }, { "$ref": "#/definitions/duration" } ] }, "unit": { "type": "string", "description": "The unit the values are given in. If no unit is given, uses the unit specified for the dimension or otherwise the default unit of the reference system." } } }, "collection-id": { "type": "string", "subtype": "collection-id", "title": "Collection ID", "description": "A collection identifier from the list of supported collections.", "pattern": "^[\\w\\-\\.~/]+$" }, "datacube": { "type": "object", "subtype": "datacube", "title": "Data Cube", "description": "A data cube that consists of an arbitrary number of dimensions and doesn't require any dimension type specifically." }, "date": { "type": "string", "subtype": "date", "format": "date", "title": "Date only", "description": "Date only representation, as defined for `full-date` by [RFC 3339 in section 5.6](https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6). The time zone is UTC. Missing time components are all 0." }, "date-time": { "type": "string", "subtype": "date-time", "format": "date-time", "title": "Date with Time", "description": "Date and time representation, as defined for `date-time` by [RFC 3339 in section 5.6](https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6)." }, "duration": { "type": "string", "subtype": "duration", "title": "Duration", "description": "[ISO 8601 duration](https://en.wikipedia.org/wiki/ISO_8601#Durations), e.g. `P1D` for one day.", "pattern": "^(-?)P(?=\\d|T\\d)(?:(\\d+)Y)?(?:(\\d+)M)?(?:(\\d+)([DW]))?(?:T(?:(\\d+)H)?(?:(\\d+)M)?(?:(\\d+(?:\\.\\d+)?)S)?)?$" }, "epsg-code": { "type": "integer", "subtype": "epsg-code", "title": "EPSG Code", "description": "Specifies details about cartographic projections as [EPSG](http://www.epsg.org) code.", "minimum": 1000, "examples": [ 3857 ] }, "file-path": { "type": "string", "subtype": "file-path", "pattern": "^[^\r\n\\:'\"]+$", "title": "Single File path", "description": "A relative path to a user-uploaded file. Folders can't be specified." }, "file-paths": { "type": "array", "subtype": "file-paths", "title": "Multiple File paths", "description": "An array with relative paths to user-uploaded files. Clients should assist to generate a list of files for folders.", "items": { "$ref": "#/definitions/file-path" } }, "geojson": { "type": "object", "subtype": "geojson", "title": "GeoJSON", "description": "GeoJSON as defined by [RFC 7946](https://www.rfc-editor.org/rfc/rfc7946.html). The GeoJSON type `GeometryCollection` is not supported.", "deprecated": true, "allOf": [ { "$ref": "https://geojson.org/schema/GeoJSON.json" } ] }, "input-format": { "type": "string", "subtype": "input-format", "title": "Input File Format", "description": "A file format that the back-end supports to import data from." }, "input-format-options": { "type": "object", "subtype": "input-format-options", "title": "Options for Input File Formats", "description": "Key-value-pairs with arguments for the input format options supported by the back-end." }, "kernel": { "type": "array", "subtype": "kernel", "title": "Image Kernel", "description": "A two-dimensional array of numbers to be used as kernel for the image operation.", "items": { "type": "array", "items": { "type": "number" } } }, "labeled-array": { "type": "array", "subtype": "labeled-array", "title": "Array with labels", "description": "An associative, ordered list of key-value pairs. Basically an array, which additionally has labels for each value. Labels can be numbers or (temporal) strings.\n\n**Important:** Due to the lack of such a data type in JSON, the schema for the items is not formally specified yet and a placeholder.", "items": { "description": "Any data type." } }, "metadata-filter": { "type": "object", "subtype": "metadata-filter", "title": "Filters", "description": "A list of filters to check against. Specify key-value-pairs with the key being the name of the metadata property name and the value being a user-defined process evaluated against the metadata values.", "additionalProperties": { "type": "object", "subtype": "process-graph", "parameters": [ { "name": "value", "description": "The property value to be checked against.", "schema": { "description": "Any data type." } } ], "returns": { "description": "`true` if the data should be used, otherwise `false`.", "schema": { "type": "boolean" } } } }, "output-format": { "type": "string", "subtype": "output-format", "title": "Output File Format", "description": "A file format that the back-end supports to save and export data to." }, "output-format-options": { "type": "object", "subtype": "output-format-options", "title": "Options for Output File Formats", "description": "Key-value-pairs with arguments for the output format options supported by the back-end." }, "process-graph": { "type": "object", "subtype": "process-graph", "title": "User-defined process", "description": "An process graph that is passed as an argument and is expected to be executed by the process. Parameters passed to the process graph are specified in the `parameters` property of the corresponding schema.", "required": [ "process_graph" ], "properties": { "process_graph": { "type": "object", "additionalProperties": { "type": "object", "required": [ "process_id", "arguments" ], "properties": { "process_id": { "type": "string" }, "arguments": {} } } } } }, "raster-cube": { "type": "object", "subtype": "raster-cube", "title": "Raster data cube", "description": "A raster data cube, which is a data cube with two dimension of type spatial (x and y). This has been deprecated in favour of `datacube`.", "deprecated": true }, "temporal-interval": { "type": "array", "subtype": "temporal-interval", "title": "Single temporal interval", "description": "Left-closed temporal interval, represented as two-element array with the following elements:\n\n1. The first element is the start of the temporal interval. The specified time instant is **included** in the interval.\n2. The second element is the end of the temporal interval. The specified time instant is **excluded** from the interval.\n\nThe second element must always be greater/later than the first element. Otherwise, an exception is thrown.\n\nThe specified temporal strings follow [RFC 3339](https://www.rfc-editor.org/rfc/rfc3339.html). Also supports unbounded intervals by setting one of the boundaries to `null`, but never both.", "uniqueItems": true, "minItems": 2, "maxItems": 2, "items": { "description": "Processes and implementations may choose to only implement a subset of the subtypes specified here. Clients must check what back-ends / processes actually support.", "anyOf": [ { "$ref": "#/definitions/date-time" }, { "$ref": "#/definitions/date" }, { "$ref": "#/definitions/time" }, { "$ref": "#/definitions/year" }, { "type": "null" } ] }, "examples": [ [ "2015-01-01T00:00:00Z", "2016-01-01T00:00:00Z" ], [ "2015-01-01", "2016-01-01" ], [ "00:00:00", "12:00:00" ], [ "2015-01-01", null ] ] }, "temporal-intervals": { "type": "array", "subtype": "temporal-intervals", "title": "Multiple temporal intervals", "description": "Left-closed temporal intervals, which are allowed to overlap. Formatted as an array of two-element arrays, each being an array with subtype `temporal-interval`.", "items": { "$ref": "#/definitions/temporal-interval" }, "minItems": 1, "examples": [ [ [ "2015-01-01", "2016-01-01" ], [ "2016-01-01", "2017-01-01" ], [ "2017-01-01", "2018-01-01" ] ], [ [ "00:00:00", "12:00:00" ], [ "12:00:00", null ] ], [ [ "2020-01-01T00:00:00Z", null ] ] ] }, "time": { "type": "string", "subtype": "time", "pattern": "^\\d{2}:\\d{2}:\\d{2}$", "title": "Time only", "description": "Time only representation, as defined for `partial-time` by [RFC 3339 in section 5.6](https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6). The time zone is UTC." }, "udf-code": { "type": "string", "subtype": "udf-code", "title": "UDF source code", "description": "The multi-line source code of a user-defined function (UDF), must contain a newline/line-break.", "pattern": "(\r\n|\r|\n)" }, "udf-runtime": { "type": "string", "subtype": "udf-runtime", "title": "UDF runtime", "description": "The identifier of a UDF runtime you want to run the given UDF source code with." }, "udf-runtime-version": { "type": "string", "subtype": "udf-runtime-version", "title": "UDF Runtime version", "description": "The version of the UDF runtime you want to run the given UDF source code with." }, "uri": { "type": "string", "subtype": "uri", "format": "uri", "title": "URI", "description": "A valid URI according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986.html). Can be restricted using a regular expression, e.g. to (dis)allow certain protocols." }, "vector-cube": { "type": "object", "subtype": "vector-cube", "title": "Vector data cube", "description": "A vector data cube, which is a data cube with a dimension of type vector. This has been deprecated in favour of `datacube`.", "deprecated": true }, "wkt2-definition": { "type": "string", "subtype": "wkt2-definition", "title": "WKT2 definition", "description": "Specifies details about cartographic projections as WKT2 string. Refers to the latest WKT2 version (currently [WKT2:2018](http://docs.opengeospatial.org/is/18-010r7/18-010r7.html) / ISO 19162:2018) unless otherwise stated by the process." }, "year": { "type": "integer", "subtype": "year", "title": "Year only", "description": "Year as integer, can be any number of digits and can be negative." } } }