JSON Schema generation¶
A simple usage of the library that, given generates a JSON Schema for inputs and outputs.
In [1]:
Copied!
pip install cwl_loader jsonschema
pip install cwl_loader jsonschema
Requirement already satisfied: cwl_loader in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (0.6.0) Requirement already satisfied: jsonschema in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (4.25.1) Requirement already satisfied: cwl-utils>=0.39 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from cwl_loader) (0.40) Requirement already satisfied: cwltool>=3.1.20250110105449 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from cwl_loader) (3.1.20250715140722) Requirement already satisfied: loguru in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from cwl_loader) (0.7.3) Requirement already satisfied: ruamel-yaml>=0.18.15 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from cwl_loader) (0.18.15) Requirement already satisfied: attrs>=22.2.0 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from jsonschema) (25.3.0) Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from jsonschema) (2025.9.1) Requirement already satisfied: referencing>=0.28.4 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from jsonschema) (0.36.2) Requirement already satisfied: rpds-py>=0.7.1 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from jsonschema) (0.27.1) Requirement already satisfied: cwl-upgrader>=1.2.3 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from cwl-utils>=0.39->cwl_loader) (1.2.12) Requirement already satisfied: packaging in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from cwl-utils>=0.39->cwl_loader) (25.0) Requirement already satisfied: rdflib in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from cwl-utils>=0.39->cwl_loader) (7.1.4) Requirement already satisfied: requests in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from cwl-utils>=0.39->cwl_loader) (2.32.5) Requirement already satisfied: schema-salad<9,>=8.8.20250205075315 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from cwl-utils>=0.39->cwl_loader) (8.9.20250723145140) Requirement already satisfied: ruamel.yaml.clib>=0.2.7 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from ruamel-yaml>=0.18.15->cwl_loader) (0.2.12) Requirement already satisfied: mistune<3.1,>=3 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from schema-salad<9,>=8.8.20250205075315->cwl-utils>=0.39->cwl_loader) (3.0.2) Requirement already satisfied: CacheControl<0.15,>=0.13.1 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from CacheControl[filecache]<0.15,>=0.13.1->schema-salad<9,>=8.8.20250205075315->cwl-utils>=0.39->cwl_loader) (0.14.3) Requirement already satisfied: mypy_extensions in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from schema-salad<9,>=8.8.20250205075315->cwl-utils>=0.39->cwl_loader) (1.1.0)
Requirement already satisfied: msgpack<2.0.0,>=0.5.2 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from CacheControl<0.15,>=0.13.1->CacheControl[filecache]<0.15,>=0.13.1->schema-salad<9,>=8.8.20250205075315->cwl-utils>=0.39->cwl_loader) (1.1.1) Requirement already satisfied: filelock>=3.8.0 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from CacheControl[filecache]<0.15,>=0.13.1->schema-salad<9,>=8.8.20250205075315->cwl-utils>=0.39->cwl_loader) (3.19.1) Requirement already satisfied: pyparsing<4,>=2.1.0 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from rdflib->cwl-utils>=0.39->cwl_loader) (3.2.4) Requirement already satisfied: setuptools in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from cwl-upgrader>=1.2.3->cwl-utils>=0.39->cwl_loader) (80.9.0) Requirement already satisfied: prov==1.5.1 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from cwltool>=3.1.20250110105449->cwl_loader) (1.5.1) Requirement already satisfied: psutil>=5.6.6 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from cwltool>=3.1.20250110105449->cwl_loader) (7.1.0) Requirement already satisfied: coloredlogs in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from cwltool>=3.1.20250110105449->cwl_loader) (15.0.1) Requirement already satisfied: pydot>=1.4.1 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from cwltool>=3.1.20250110105449->cwl_loader) (4.0.1) Requirement already satisfied: argcomplete>=1.12.0 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from cwltool>=3.1.20250110105449->cwl_loader) (3.6.2) Requirement already satisfied: spython>=0.3.0 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from cwltool>=3.1.20250110105449->cwl_loader) (0.3.14) Requirement already satisfied: rich-argparse in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from cwltool>=3.1.20250110105449->cwl_loader) (1.7.1) Requirement already satisfied: lxml in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from prov==1.5.1->cwltool>=3.1.20250110105449->cwl_loader) (6.0.1) Requirement already satisfied: networkx in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from prov==1.5.1->cwltool>=3.1.20250110105449->cwl_loader) (3.5) Requirement already satisfied: python-dateutil in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from prov==1.5.1->cwltool>=3.1.20250110105449->cwl_loader) (2.9.0.post0) Requirement already satisfied: six>=1.9.0 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from prov==1.5.1->cwltool>=3.1.20250110105449->cwl_loader) (1.17.0) Requirement already satisfied: charset_normalizer<4,>=2 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from requests->cwl-utils>=0.39->cwl_loader) (3.4.3) Requirement already satisfied: idna<4,>=2.5 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from requests->cwl-utils>=0.39->cwl_loader) (3.10) Requirement already satisfied: urllib3<3,>=1.21.1 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from requests->cwl-utils>=0.39->cwl_loader) (2.5.0) Requirement already satisfied: certifi>=2017.4.17 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from requests->cwl-utils>=0.39->cwl_loader) (2025.8.3) Requirement already satisfied: humanfriendly>=9.1 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from coloredlogs->cwltool>=3.1.20250110105449->cwl_loader) (10.0)
Requirement already satisfied: rich>=11.0.0 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from rich-argparse->cwltool>=3.1.20250110105449->cwl_loader) (14.1.0) Requirement already satisfied: markdown-it-py>=2.2.0 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from rich>=11.0.0->rich-argparse->cwltool>=3.1.20250110105449->cwl_loader) (4.0.0) Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from rich>=11.0.0->rich-argparse->cwltool>=3.1.20250110105449->cwl_loader) (2.19.2) Requirement already satisfied: mdurl~=0.1 in /opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages (from markdown-it-py>=2.2.0->rich>=11.0.0->rich-argparse->cwltool>=3.1.20250110105449->cwl_loader) (0.1.2)
Note: you may need to restart the kernel to use updated packages.
1. Parsing¶
In this sample we'll show the access from a remote public URL.
In [2]:
Copied!
from cwl_loader import load_cwl_from_location
from cwl2ogc import BaseCWLtypes2OGCConverter
workflow_id = 'pattern-12'
cwl_document = load_cwl_from_location('https://raw.githubusercontent.com/eoap/application-package-patterns/refs/heads/main/cwl-workflow/pattern-12.cwl')
workflow = None
for wf in cwl_document:
if workflow_id == wf.id.split('#')[-1]:
workflow = wf
break
if workflow is not None:
cwl_converter = BaseCWLtypes2OGCConverter(workflow)
else:
raise ValueError(f"'#{workflow_id}' not found in input $graph")
from cwl_loader import load_cwl_from_location
from cwl2ogc import BaseCWLtypes2OGCConverter
workflow_id = 'pattern-12'
cwl_document = load_cwl_from_location('https://raw.githubusercontent.com/eoap/application-package-patterns/refs/heads/main/cwl-workflow/pattern-12.cwl')
workflow = None
for wf in cwl_document:
if workflow_id == wf.id.split('#')[-1]:
workflow = wf
break
if workflow is not None:
cwl_converter = BaseCWLtypes2OGCConverter(workflow)
else:
raise ValueError(f"'#{workflow_id}' not found in input $graph")
2025-09-17 21:15:43.527 | DEBUG | cwl_loader:load_cwl_from_location:220 - Loading CWL document from https://raw.githubusercontent.com/eoap/application-package-patterns/refs/heads/main/cwl-workflow/pattern-12.cwl...
2025-09-17 21:15:43.577 | DEBUG | cwl_loader:_load_cwl_from_stream:223 - Reading stream from https://raw.githubusercontent.com/eoap/application-package-patterns/refs/heads/main/cwl-workflow/pattern-12.cwl...
2025-09-17 21:15:43.612 | DEBUG | cwl_loader:load_cwl_from_stream:197 - CWL data of type <class 'ruamel.yaml.comments.CommentedMap'> successfully loaded from stream
2025-09-17 21:15:43.613 | DEBUG | cwl_loader:load_cwl_from_yaml:141 - Updating the model of type 'CommentedMap' to version 'v1.2'...
2025-09-17 21:15:43.617 | DEBUG | cwl_loader:load_cwl_from_yaml:152 - Raw CWL document successfully updated to v1.2! Now converting to the CWL model...
2025-09-17 21:15:44.355 | DEBUG | cwl_loader:load_cwl_from_yaml:160 - Raw CWL document successfully updated to v1.2! Now dereferencing the steps[].run...
2025-09-17 21:15:44.356 | DEBUG | cwl_loader:load_cwl_from_yaml:170 - steps[].run successfully dereferenced! Now dereferencing the FQNs...
2025-09-17 21:15:44.356 | DEBUG | cwl_loader:_clean_process:90 - Cleaning Workflow pattern-12...
2025-09-17 21:15:44.357 | DEBUG | cwl_loader:_clean_process:90 - Cleaning CommandLineTool crop...
2025-09-17 21:15:44.357 | DEBUG | cwl_loader:_clean_process:90 - Cleaning CommandLineTool norm_diff...
2025-09-17 21:15:44.358 | DEBUG | cwl_loader:_clean_process:90 - Cleaning CommandLineTool otsu...
2025-09-17 21:15:44.358 | DEBUG | cwl_loader:load_cwl_from_yaml:175 - CWL document successfully dereferenced!
2025-09-17 21:15:44.359 | DEBUG | cwl_loader:_load_cwl_from_stream:231 - Stream from https://raw.githubusercontent.com/eoap/application-package-patterns/refs/heads/main/cwl-workflow/pattern-12.cwl successfully load!
2. Inputs JSON Schema generation¶
Once the document is parsed, invoke the cwl2ogc
APIs to convert the CWL inputs to the JSON schema:
In [3]:
Copied!
import sys
cwl_converter.dump_inputs_json_schema(stream=sys.stdout, pretty_print=True)
import sys
cwl_converter.dump_inputs_json_schema(stream=sys.stdout, pretty_print=True)
{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://eoap.github.io/cwl2ogc/pattern-12/inputs.yaml", "description": "The schema to represent a pattern-12 inputs definition", "type": "object", "required": [ "aoi", "bands", "item", "cropped-collection", "ndwi-collection", "water-bodies-collection" ], "properties": { "aoi": { "$ref": "#/$defs/aoi" }, "bands": { "$ref": "#/$defs/bands" }, "item": { "$ref": "#/$defs/item" }, "cropped-collection": { "$ref": "#/$defs/cropped-collection" }, "ndwi-collection": { "$ref": "#/$defs/ndwi-collection" }, "water-bodies-collection": { "$ref": "#/$defs/water-bodies-collection" } }, "additionalProperties": false, "$defs": { "aoi": { "type": "object", "properties": { "bbox": { "type": "array", "items": { "type": "number", "format": "double" } }, "crs": { "type": "string", "enum": [ "CRS84", "CRS84h" ] } }, "required": [ "bbox", "crs" ] }, "bands": { "type": "array", "items": { "type": "string" }, "default": [ "green", "nir" ] }, "item": { "oneOf": [ { "type": "string", "format": "uri" }, { "title": "STAC Item", "description": "This object represents the metadata for an item in a SpatioTemporal Asset Catalog.", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/item.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": [ "assets", "geometry", "id", "links", "properties", "stac_version", "type" ], "properties": { "type": { "type": "string", "enum": [ "Feature" ] }, "properties": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "title": { "title": "Item Title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Item Description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "anyOf": [ { "required": [ "datetime" ], "properties": { "datetime": { "not": { "anyOf": [ { "type": "null" } ] } } } }, { "required": [ "datetime", "start_datetime", "end_datetime" ] } ], "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } }, "oneOf": [ { "type": "null" }, { "type": "object" } ] }, "assets": { "title": "Asset links", "description": "Links to assets", "type": "object", "additionalProperties": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": [ "href" ], "properties": { "title": { "title": "Asset title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Asset description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "type": { "title": "Asset type", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "href": { "title": "Asset reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "roles": { "title": "Asset roles", "type": "array", "items": { "type": "string" } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } } } }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "geometry": { "oneOf": [ { "type": "null" }, { "title": "GeoJSON Point", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Point" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } }, { "title": "GeoJSON LineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "LineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } }, { "title": "GeoJSON Polygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Polygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } }, { "title": "GeoJSON MultiPoint", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPoint" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } } }, { "title": "GeoJSON MultiLineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiLineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } } }, { "title": "GeoJSON MultiPolygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPolygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } } }, { "title": "GeoJSON GeometryCollection", "type": "object", "required": [ "type", "geometries" ], "properties": { "type": { "type": "string", "enum": [ "GeometryCollection" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "geometries": { "type": "array", "items": { "oneOf": [ { "title": "GeoJSON Point", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Point" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } }, { "title": "GeoJSON LineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "LineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } }, { "title": "GeoJSON Polygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Polygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } }, { "title": "GeoJSON MultiPoint", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPoint" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } } }, { "title": "GeoJSON MultiLineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiLineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } } }, { "title": "GeoJSON MultiPolygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPolygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } } } ] } } } } ] }, "id": { "title": "Provider ID", "description": "Provider item ID", "type": "string", "minLength": 1, "oneOf": [ { "type": "number" }, { "type": "string" } ] }, "links": { "title": "Item links", "description": "Links to item relations", "type": "array", "items": { "type": "object", "required": [ "rel", "href" ], "properties": { "title": { "title": "Link title", "type": "string" }, "type": { "title": "Link type", "type": "string" }, "href": { "title": "Link reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "rel": { "title": "Link relation type", "type": "string", "minLength": 1 } } } }, "stac_extensions": { "title": "STAC extensions", "type": "array", "items": { "title": "Reference to a JSON Schema", "type": "string", "format": "iri" }, "uniqueItems": true }, "stac_version": { "title": "STAC version", "type": "string", "const": "1.0.0" } }, "definitions": { "asset": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": [ "href" ], "properties": { "title": { "title": "Asset title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Asset description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "type": { "title": "Asset type", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "href": { "title": "Asset reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "roles": { "title": "Asset roles", "type": "array", "items": { "type": "string" } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } } }, "assets": { "title": "Asset links", "description": "Links to assets", "type": "object", "additionalProperties": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": [ "href" ], "properties": { "title": { "title": "Asset title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Asset description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "type": { "title": "Asset type", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "href": { "title": "Asset reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "roles": { "title": "Asset roles", "type": "array", "items": { "type": "string" } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } } } }, "common_metadata": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "title": { "title": "Item Title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Item Description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } } }, "core": { "title": "GeoJSON Feature", "$id": "https://geojson.org/schema/Feature.json", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": [ "assets", "geometry", "id", "links", "properties", "stac_version", "type" ], "properties": { "type": { "type": "string", "enum": [ "Feature" ] }, "properties": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "title": { "title": "Item Title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Item Description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "anyOf": [ { "required": [ "datetime" ], "properties": { "datetime": { "not": { "anyOf": [ { "type": "null" } ] } } } }, { "required": [ "datetime", "start_datetime", "end_datetime" ] } ], "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } }, "oneOf": [ { "type": "null" }, { "type": "object" } ] }, "assets": { "title": "Asset links", "description": "Links to assets", "type": "object", "additionalProperties": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": [ "href" ], "properties": { "title": { "title": "Asset title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Asset description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "type": { "title": "Asset type", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "href": { "title": "Asset reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "roles": { "title": "Asset roles", "type": "array", "items": { "type": "string" } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } } } }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "geometry": { "oneOf": [ { "type": "null" }, { "title": "GeoJSON Point", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Point" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } }, { "title": "GeoJSON LineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "LineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } }, { "title": "GeoJSON Polygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Polygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } }, { "title": "GeoJSON MultiPoint", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPoint" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } } }, { "title": "GeoJSON MultiLineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiLineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } } }, { "title": "GeoJSON MultiPolygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPolygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } } }, { "title": "GeoJSON GeometryCollection", "type": "object", "required": [ "type", "geometries" ], "properties": { "type": { "type": "string", "enum": [ "GeometryCollection" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "geometries": { "type": "array", "items": { "oneOf": [ { "title": "GeoJSON Point", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Point" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } }, { "title": "GeoJSON LineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "LineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } }, { "title": "GeoJSON Polygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Polygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } }, { "title": "GeoJSON MultiPoint", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPoint" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } } }, { "title": "GeoJSON MultiLineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiLineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } } }, { "title": "GeoJSON MultiPolygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPolygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } } } ] } } } } ] }, "id": { "title": "Provider ID", "description": "Provider item ID", "type": "string", "minLength": 1, "oneOf": [ { "type": "number" }, { "type": "string" } ] }, "links": { "title": "Item links", "description": "Links to item relations", "type": "array", "items": { "type": "object", "required": [ "rel", "href" ], "properties": { "title": { "title": "Link title", "type": "string" }, "type": { "title": "Link type", "type": "string" }, "href": { "title": "Link reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "rel": { "title": "Link relation type", "type": "string", "minLength": 1 } } } }, "stac_extensions": { "title": "STAC extensions", "type": "array", "items": { "title": "Reference to a JSON Schema", "type": "string", "format": "iri" }, "uniqueItems": true }, "stac_version": { "title": "STAC version", "type": "string", "const": "1.0.0" } }, "else": { "properties": { "collection": { "not": {} } } }, "if": { "properties": { "links": { "contains": { "required": [ "rel" ], "properties": { "rel": { "const": "collection" } } } } } }, "oneOf": [ { "type": "object", "required": [ "geometry", "bbox" ], "properties": { "bbox": { "type": "array", "items": { "type": "number" }, "oneOf": [ { "maxItems": 4, "minItems": 4 }, { "maxItems": 6, "minItems": 6 } ] }, "geometry": { "title": "GeoJSON Geometry", "$id": "https://geojson.org/schema/Geometry.json", "$schema": "http://json-schema.org/draft-07/schema#", "oneOf": [ { "title": "GeoJSON Point", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Point" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } }, { "title": "GeoJSON LineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "LineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } }, { "title": "GeoJSON Polygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Polygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } }, { "title": "GeoJSON MultiPoint", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPoint" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } } }, { "title": "GeoJSON MultiLineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiLineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } } }, { "title": "GeoJSON MultiPolygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPolygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } } } ] } } }, { "type": "object", "required": [ "geometry" ], "properties": { "bbox": { "not": { "anyOf": [ {} ] } }, "geometry": { "type": "null" } } } ], "then": { "required": [ "collection" ], "properties": { "collection": { "title": "Collection ID", "description": "The ID of the STAC Collection this Item references to.", "type": "string", "minLength": 1 } } } }, "link": { "type": "object", "required": [ "rel", "href" ], "properties": { "title": { "title": "Link title", "type": "string" }, "type": { "title": "Link type", "type": "string" }, "href": { "title": "Link reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "rel": { "title": "Link relation type", "type": "string", "minLength": 1 } } } }, "else": { "properties": { "collection": { "not": {} } } }, "if": { "properties": { "links": { "contains": { "required": [ "rel" ], "properties": { "rel": { "const": "collection" } } } } } }, "oneOf": [ { "type": "object", "required": [ "geometry", "bbox" ], "properties": { "bbox": { "type": "array", "items": { "type": "number" }, "oneOf": [ { "maxItems": 4, "minItems": 4 }, { "maxItems": 6, "minItems": 6 } ] }, "geometry": { "title": "GeoJSON Geometry", "$id": "https://geojson.org/schema/Geometry.json", "$schema": "http://json-schema.org/draft-07/schema#", "oneOf": [ { "title": "GeoJSON Point", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Point" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } }, { "title": "GeoJSON LineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "LineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } }, { "title": "GeoJSON Polygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Polygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } }, { "title": "GeoJSON MultiPoint", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPoint" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } } }, { "title": "GeoJSON MultiLineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiLineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } } }, { "title": "GeoJSON MultiPolygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPolygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } } } ] } } }, { "type": "object", "required": [ "geometry" ], "properties": { "bbox": { "not": { "anyOf": [ {} ] } }, "geometry": { "type": "null" } } } ], "then": { "required": [ "collection" ], "properties": { "collection": { "title": "Collection ID", "description": "The ID of the STAC Collection this Item references to.", "type": "string", "minLength": 1 } } } } ] }, "cropped-collection": { "type": "string", "format": "uri" }, "ndwi-collection": { "type": "string", "format": "uri" }, "water-bodies-collection": { "type": "string", "format": "uri" } } }
2.1 Inputs validation¶
Schema can be used to fully validate an inputs dictionary (expecting JSON Schema validation errors in the example below):
In [4]:
Copied!
from jsonschema import Draft202012Validator
from jsonschema.exceptions import SchemaError
def validate(schema: dict, data: dict):
try:
validator = Draft202012Validator(schema)
errors = validator.iter_errors(data) if validator is not None else []
if errors:
for error in errors:
print(f"[{'.'.join(error.schema_path)}] - #/{'/'.join(error.path)}: {error.message}")
else:
print('No JSON Schema violations detected!')
except SchemaError as schema_error:
print(f"An error occurred while instantiating {Draft202012Validator.__class__.__name__}: {schema_error.message}")
from jsonschema import Draft202012Validator
from jsonschema.exceptions import SchemaError
def validate(schema: dict, data: dict):
try:
validator = Draft202012Validator(schema)
errors = validator.iter_errors(data) if validator is not None else []
if errors:
for error in errors:
print(f"[{'.'.join(error.schema_path)}] - #/{'/'.join(error.path)}: {error.message}")
else:
print('No JSON Schema violations detected!')
except SchemaError as schema_error:
print(f"An error occurred while instantiating {Draft202012Validator.__class__.__name__}: {schema_error.message}")
Define the inputs to be validate
In [5]:
Copied!
inputs = {
"aoi": "-118.985,38.432,-118.183,38.938",
"filesB": "EPSG:4326",
"bands": [ "green", "nir08" ],
"item": "https://planetarycomputer.microsoft.com/api/stac/v1/collections/landsat-c2-l2/items/LC08_L2SP_042033_20231007_02_T1"
}
validate(cwl_converter.get_inputs_json_schema(), inputs)
inputs = {
"aoi": "-118.985,38.432,-118.183,38.938",
"filesB": "EPSG:4326",
"bands": [ "green", "nir08" ],
"item": "https://planetarycomputer.microsoft.com/api/stac/v1/collections/landsat-c2-l2/items/LC08_L2SP_042033_20231007_02_T1"
}
validate(cwl_converter.get_inputs_json_schema(), inputs)
[required] - #/: 'cropped-collection' is a required property [required] - #/: 'ndwi-collection' is a required property [required] - #/: 'water-bodies-collection' is a required property [properties.aoi.type] - #/aoi: '-118.985,38.432,-118.183,38.938' is not of type 'object' [additionalProperties] - #/: Additional properties are not allowed ('filesB' was unexpected)
3. Outputs JSON Schema generation¶
Users can reuse the BaseCWLtypes2OGCConverter
instance to convert the CWL outputs to the JSON Schema:
In [6]:
Copied!
cwl_converter.dump_outputs_json_schema(stream=sys.stdout, pretty_print=True)
cwl_converter.dump_outputs_json_schema(stream=sys.stdout, pretty_print=True)
{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://eoap.github.io/cwl2ogc/pattern-12/outputs.yaml", "description": "The schema to represent a pattern-12 outputs definition", "type": "object", "required": [ "cropped", "ndwi", "water_bodies" ], "properties": { "cropped": { "$ref": "#/$defs/cropped" }, "ndwi": { "$ref": "#/$defs/ndwi" }, "water_bodies": { "$ref": "#/$defs/water_bodies" } }, "additionalProperties": false, "$defs": { "cropped": { "type": "array", "items": { "oneOf": [ { "type": "string", "format": "uri" }, { "title": "STAC Item", "description": "This object represents the metadata for an item in a SpatioTemporal Asset Catalog.", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/item.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": [ "assets", "geometry", "id", "links", "properties", "stac_version", "type" ], "properties": { "type": { "type": "string", "enum": [ "Feature" ] }, "properties": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "title": { "title": "Item Title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Item Description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "anyOf": [ { "required": [ "datetime" ], "properties": { "datetime": { "not": { "anyOf": [ { "type": "null" } ] } } } }, { "required": [ "datetime", "start_datetime", "end_datetime" ] } ], "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } }, "oneOf": [ { "type": "null" }, { "type": "object" } ] }, "assets": { "title": "Asset links", "description": "Links to assets", "type": "object", "additionalProperties": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": [ "href" ], "properties": { "title": { "title": "Asset title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Asset description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "type": { "title": "Asset type", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "href": { "title": "Asset reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "roles": { "title": "Asset roles", "type": "array", "items": { "type": "string" } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } } } }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "geometry": { "oneOf": [ { "type": "null" }, { "title": "GeoJSON Point", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Point" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } }, { "title": "GeoJSON LineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "LineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } }, { "title": "GeoJSON Polygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Polygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } }, { "title": "GeoJSON MultiPoint", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPoint" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } } }, { "title": "GeoJSON MultiLineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiLineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } } }, { "title": "GeoJSON MultiPolygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPolygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } } }, { "title": "GeoJSON GeometryCollection", "type": "object", "required": [ "type", "geometries" ], "properties": { "type": { "type": "string", "enum": [ "GeometryCollection" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "geometries": { "type": "array", "items": { "oneOf": [ { "title": "GeoJSON Point", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Point" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } }, { "title": "GeoJSON LineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "LineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } }, { "title": "GeoJSON Polygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Polygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } }, { "title": "GeoJSON MultiPoint", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPoint" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } } }, { "title": "GeoJSON MultiLineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiLineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } } }, { "title": "GeoJSON MultiPolygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPolygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } } } ] } } } } ] }, "id": { "title": "Provider ID", "description": "Provider item ID", "type": "string", "minLength": 1, "oneOf": [ { "type": "number" }, { "type": "string" } ] }, "links": { "title": "Item links", "description": "Links to item relations", "type": "array", "items": { "type": "object", "required": [ "rel", "href" ], "properties": { "title": { "title": "Link title", "type": "string" }, "type": { "title": "Link type", "type": "string" }, "href": { "title": "Link reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "rel": { "title": "Link relation type", "type": "string", "minLength": 1 } } } }, "stac_extensions": { "title": "STAC extensions", "type": "array", "items": { "title": "Reference to a JSON Schema", "type": "string", "format": "iri" }, "uniqueItems": true }, "stac_version": { "title": "STAC version", "type": "string", "const": "1.0.0" } }, "definitions": { "asset": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": [ "href" ], "properties": { "title": { "title": "Asset title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Asset description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "type": { "title": "Asset type", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "href": { "title": "Asset reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "roles": { "title": "Asset roles", "type": "array", "items": { "type": "string" } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } } }, "assets": { "title": "Asset links", "description": "Links to assets", "type": "object", "additionalProperties": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": [ "href" ], "properties": { "title": { "title": "Asset title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Asset description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "type": { "title": "Asset type", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "href": { "title": "Asset reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "roles": { "title": "Asset roles", "type": "array", "items": { "type": "string" } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } } } }, "common_metadata": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "title": { "title": "Item Title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Item Description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } } }, "core": { "title": "GeoJSON Feature", "$id": "https://geojson.org/schema/Feature.json", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": [ "assets", "geometry", "id", "links", "properties", "stac_version", "type" ], "properties": { "type": { "type": "string", "enum": [ "Feature" ] }, "properties": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "title": { "title": "Item Title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Item Description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "anyOf": [ { "required": [ "datetime" ], "properties": { "datetime": { "not": { "anyOf": [ { "type": "null" } ] } } } }, { "required": [ "datetime", "start_datetime", "end_datetime" ] } ], "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } }, "oneOf": [ { "type": "null" }, { "type": "object" } ] }, "assets": { "title": "Asset links", "description": "Links to assets", "type": "object", "additionalProperties": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": [ "href" ], "properties": { "title": { "title": "Asset title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Asset description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "type": { "title": "Asset type", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "href": { "title": "Asset reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "roles": { "title": "Asset roles", "type": "array", "items": { "type": "string" } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } } } }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "geometry": { "oneOf": [ { "type": "null" }, { "title": "GeoJSON Point", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Point" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } }, { "title": "GeoJSON LineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "LineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } }, { "title": "GeoJSON Polygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Polygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } }, { "title": "GeoJSON MultiPoint", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPoint" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } } }, { "title": "GeoJSON MultiLineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiLineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } } }, { "title": "GeoJSON MultiPolygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPolygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } } }, { "title": "GeoJSON GeometryCollection", "type": "object", "required": [ "type", "geometries" ], "properties": { "type": { "type": "string", "enum": [ "GeometryCollection" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "geometries": { "type": "array", "items": { "oneOf": [ { "title": "GeoJSON Point", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Point" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } }, { "title": "GeoJSON LineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "LineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } }, { "title": "GeoJSON Polygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Polygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } }, { "title": "GeoJSON MultiPoint", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPoint" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } } }, { "title": "GeoJSON MultiLineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiLineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } } }, { "title": "GeoJSON MultiPolygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPolygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } } } ] } } } } ] }, "id": { "title": "Provider ID", "description": "Provider item ID", "type": "string", "minLength": 1, "oneOf": [ { "type": "number" }, { "type": "string" } ] }, "links": { "title": "Item links", "description": "Links to item relations", "type": "array", "items": { "type": "object", "required": [ "rel", "href" ], "properties": { "title": { "title": "Link title", "type": "string" }, "type": { "title": "Link type", "type": "string" }, "href": { "title": "Link reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "rel": { "title": "Link relation type", "type": "string", "minLength": 1 } } } }, "stac_extensions": { "title": "STAC extensions", "type": "array", "items": { "title": "Reference to a JSON Schema", "type": "string", "format": "iri" }, "uniqueItems": true }, "stac_version": { "title": "STAC version", "type": "string", "const": "1.0.0" } }, "else": { "properties": { "collection": { "not": {} } } }, "if": { "properties": { "links": { "contains": { "required": [ "rel" ], "properties": { "rel": { "const": "collection" } } } } } }, "oneOf": [ { "type": "object", "required": [ "geometry", "bbox" ], "properties": { "bbox": { "type": "array", "items": { "type": "number" }, "oneOf": [ { "maxItems": 4, "minItems": 4 }, { "maxItems": 6, "minItems": 6 } ] }, "geometry": { "title": "GeoJSON Geometry", "$id": "https://geojson.org/schema/Geometry.json", "$schema": "http://json-schema.org/draft-07/schema#", "oneOf": [ { "title": "GeoJSON Point", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Point" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } }, { "title": "GeoJSON LineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "LineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } }, { "title": "GeoJSON Polygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Polygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } }, { "title": "GeoJSON MultiPoint", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPoint" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } } }, { "title": "GeoJSON MultiLineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiLineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } } }, { "title": "GeoJSON MultiPolygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPolygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } } } ] } } }, { "type": "object", "required": [ "geometry" ], "properties": { "bbox": { "not": { "anyOf": [ {} ] } }, "geometry": { "type": "null" } } } ], "then": { "required": [ "collection" ], "properties": { "collection": { "title": "Collection ID", "description": "The ID of the STAC Collection this Item references to.", "type": "string", "minLength": 1 } } } }, "link": { "type": "object", "required": [ "rel", "href" ], "properties": { "title": { "title": "Link title", "type": "string" }, "type": { "title": "Link type", "type": "string" }, "href": { "title": "Link reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "rel": { "title": "Link relation type", "type": "string", "minLength": 1 } } } }, "else": { "properties": { "collection": { "not": {} } } }, "if": { "properties": { "links": { "contains": { "required": [ "rel" ], "properties": { "rel": { "const": "collection" } } } } } }, "oneOf": [ { "type": "object", "required": [ "geometry", "bbox" ], "properties": { "bbox": { "type": "array", "items": { "type": "number" }, "oneOf": [ { "maxItems": 4, "minItems": 4 }, { "maxItems": 6, "minItems": 6 } ] }, "geometry": { "title": "GeoJSON Geometry", "$id": "https://geojson.org/schema/Geometry.json", "$schema": "http://json-schema.org/draft-07/schema#", "oneOf": [ { "title": "GeoJSON Point", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Point" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } }, { "title": "GeoJSON LineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "LineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } }, { "title": "GeoJSON Polygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Polygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } }, { "title": "GeoJSON MultiPoint", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPoint" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } } }, { "title": "GeoJSON MultiLineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiLineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } } }, { "title": "GeoJSON MultiPolygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPolygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } } } ] } } }, { "type": "object", "required": [ "geometry" ], "properties": { "bbox": { "not": { "anyOf": [ {} ] } }, "geometry": { "type": "null" } } } ], "then": { "required": [ "collection" ], "properties": { "collection": { "title": "Collection ID", "description": "The ID of the STAC Collection this Item references to.", "type": "string", "minLength": 1 } } } } ] } }, "ndwi": { "oneOf": [ { "type": "string", "format": "uri" }, { "title": "STAC Item", "description": "This object represents the metadata for an item in a SpatioTemporal Asset Catalog.", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/item.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": [ "assets", "geometry", "id", "links", "properties", "stac_version", "type" ], "properties": { "type": { "type": "string", "enum": [ "Feature" ] }, "properties": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "title": { "title": "Item Title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Item Description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "anyOf": [ { "required": [ "datetime" ], "properties": { "datetime": { "not": { "anyOf": [ { "type": "null" } ] } } } }, { "required": [ "datetime", "start_datetime", "end_datetime" ] } ], "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } }, "oneOf": [ { "type": "null" }, { "type": "object" } ] }, "assets": { "title": "Asset links", "description": "Links to assets", "type": "object", "additionalProperties": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": [ "href" ], "properties": { "title": { "title": "Asset title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Asset description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "type": { "title": "Asset type", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "href": { "title": "Asset reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "roles": { "title": "Asset roles", "type": "array", "items": { "type": "string" } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } } } }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "geometry": { "oneOf": [ { "type": "null" }, { "title": "GeoJSON Point", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Point" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } }, { "title": "GeoJSON LineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "LineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } }, { "title": "GeoJSON Polygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Polygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } }, { "title": "GeoJSON MultiPoint", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPoint" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } } }, { "title": "GeoJSON MultiLineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiLineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } } }, { "title": "GeoJSON MultiPolygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPolygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } } }, { "title": "GeoJSON GeometryCollection", "type": "object", "required": [ "type", "geometries" ], "properties": { "type": { "type": "string", "enum": [ "GeometryCollection" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "geometries": { "type": "array", "items": { "oneOf": [ { "title": "GeoJSON Point", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Point" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } }, { "title": "GeoJSON LineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "LineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } }, { "title": "GeoJSON Polygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Polygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } }, { "title": "GeoJSON MultiPoint", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPoint" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } } }, { "title": "GeoJSON MultiLineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiLineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } } }, { "title": "GeoJSON MultiPolygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPolygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } } } ] } } } } ] }, "id": { "title": "Provider ID", "description": "Provider item ID", "type": "string", "minLength": 1, "oneOf": [ { "type": "number" }, { "type": "string" } ] }, "links": { "title": "Item links", "description": "Links to item relations", "type": "array", "items": { "type": "object", "required": [ "rel", "href" ], "properties": { "title": { "title": "Link title", "type": "string" }, "type": { "title": "Link type", "type": "string" }, "href": { "title": "Link reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "rel": { "title": "Link relation type", "type": "string", "minLength": 1 } } } }, "stac_extensions": { "title": "STAC extensions", "type": "array", "items": { "title": "Reference to a JSON Schema", "type": "string", "format": "iri" }, "uniqueItems": true }, "stac_version": { "title": "STAC version", "type": "string", "const": "1.0.0" } }, "definitions": { "asset": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": [ "href" ], "properties": { "title": { "title": "Asset title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Asset description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "type": { "title": "Asset type", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "href": { "title": "Asset reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "roles": { "title": "Asset roles", "type": "array", "items": { "type": "string" } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } } }, "assets": { "title": "Asset links", "description": "Links to assets", "type": "object", "additionalProperties": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": [ "href" ], "properties": { "title": { "title": "Asset title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Asset description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "type": { "title": "Asset type", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "href": { "title": "Asset reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "roles": { "title": "Asset roles", "type": "array", "items": { "type": "string" } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } } } }, "common_metadata": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "title": { "title": "Item Title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Item Description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } } }, "core": { "title": "GeoJSON Feature", "$id": "https://geojson.org/schema/Feature.json", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": [ "assets", "geometry", "id", "links", "properties", "stac_version", "type" ], "properties": { "type": { "type": "string", "enum": [ "Feature" ] }, "properties": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "title": { "title": "Item Title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Item Description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "anyOf": [ { "required": [ "datetime" ], "properties": { "datetime": { "not": { "anyOf": [ { "type": "null" } ] } } } }, { "required": [ "datetime", "start_datetime", "end_datetime" ] } ], "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } }, "oneOf": [ { "type": "null" }, { "type": "object" } ] }, "assets": { "title": "Asset links", "description": "Links to assets", "type": "object", "additionalProperties": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": [ "href" ], "properties": { "title": { "title": "Asset title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Asset description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "type": { "title": "Asset type", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "href": { "title": "Asset reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "roles": { "title": "Asset roles", "type": "array", "items": { "type": "string" } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } } } }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "geometry": { "oneOf": [ { "type": "null" }, { "title": "GeoJSON Point", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Point" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } }, { "title": "GeoJSON LineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "LineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } }, { "title": "GeoJSON Polygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Polygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } }, { "title": "GeoJSON MultiPoint", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPoint" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } } }, { "title": "GeoJSON MultiLineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiLineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } } }, { "title": "GeoJSON MultiPolygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPolygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } } }, { "title": "GeoJSON GeometryCollection", "type": "object", "required": [ "type", "geometries" ], "properties": { "type": { "type": "string", "enum": [ "GeometryCollection" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "geometries": { "type": "array", "items": { "oneOf": [ { "title": "GeoJSON Point", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Point" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } }, { "title": "GeoJSON LineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "LineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } }, { "title": "GeoJSON Polygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Polygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } }, { "title": "GeoJSON MultiPoint", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPoint" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } } }, { "title": "GeoJSON MultiLineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiLineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } } }, { "title": "GeoJSON MultiPolygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPolygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } } } ] } } } } ] }, "id": { "title": "Provider ID", "description": "Provider item ID", "type": "string", "minLength": 1, "oneOf": [ { "type": "number" }, { "type": "string" } ] }, "links": { "title": "Item links", "description": "Links to item relations", "type": "array", "items": { "type": "object", "required": [ "rel", "href" ], "properties": { "title": { "title": "Link title", "type": "string" }, "type": { "title": "Link type", "type": "string" }, "href": { "title": "Link reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "rel": { "title": "Link relation type", "type": "string", "minLength": 1 } } } }, "stac_extensions": { "title": "STAC extensions", "type": "array", "items": { "title": "Reference to a JSON Schema", "type": "string", "format": "iri" }, "uniqueItems": true }, "stac_version": { "title": "STAC version", "type": "string", "const": "1.0.0" } }, "else": { "properties": { "collection": { "not": {} } } }, "if": { "properties": { "links": { "contains": { "required": [ "rel" ], "properties": { "rel": { "const": "collection" } } } } } }, "oneOf": [ { "type": "object", "required": [ "geometry", "bbox" ], "properties": { "bbox": { "type": "array", "items": { "type": "number" }, "oneOf": [ { "maxItems": 4, "minItems": 4 }, { "maxItems": 6, "minItems": 6 } ] }, "geometry": { "title": "GeoJSON Geometry", "$id": "https://geojson.org/schema/Geometry.json", "$schema": "http://json-schema.org/draft-07/schema#", "oneOf": [ { "title": "GeoJSON Point", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Point" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } }, { "title": "GeoJSON LineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "LineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } }, { "title": "GeoJSON Polygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Polygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } }, { "title": "GeoJSON MultiPoint", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPoint" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } } }, { "title": "GeoJSON MultiLineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiLineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } } }, { "title": "GeoJSON MultiPolygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPolygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } } } ] } } }, { "type": "object", "required": [ "geometry" ], "properties": { "bbox": { "not": { "anyOf": [ {} ] } }, "geometry": { "type": "null" } } } ], "then": { "required": [ "collection" ], "properties": { "collection": { "title": "Collection ID", "description": "The ID of the STAC Collection this Item references to.", "type": "string", "minLength": 1 } } } }, "link": { "type": "object", "required": [ "rel", "href" ], "properties": { "title": { "title": "Link title", "type": "string" }, "type": { "title": "Link type", "type": "string" }, "href": { "title": "Link reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "rel": { "title": "Link relation type", "type": "string", "minLength": 1 } } } }, "else": { "properties": { "collection": { "not": {} } } }, "if": { "properties": { "links": { "contains": { "required": [ "rel" ], "properties": { "rel": { "const": "collection" } } } } } }, "oneOf": [ { "type": "object", "required": [ "geometry", "bbox" ], "properties": { "bbox": { "type": "array", "items": { "type": "number" }, "oneOf": [ { "maxItems": 4, "minItems": 4 }, { "maxItems": 6, "minItems": 6 } ] }, "geometry": { "title": "GeoJSON Geometry", "$id": "https://geojson.org/schema/Geometry.json", "$schema": "http://json-schema.org/draft-07/schema#", "oneOf": [ { "title": "GeoJSON Point", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Point" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } }, { "title": "GeoJSON LineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "LineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } }, { "title": "GeoJSON Polygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Polygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } }, { "title": "GeoJSON MultiPoint", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPoint" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } } }, { "title": "GeoJSON MultiLineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiLineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } } }, { "title": "GeoJSON MultiPolygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPolygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } } } ] } } }, { "type": "object", "required": [ "geometry" ], "properties": { "bbox": { "not": { "anyOf": [ {} ] } }, "geometry": { "type": "null" } } } ], "then": { "required": [ "collection" ], "properties": { "collection": { "title": "Collection ID", "description": "The ID of the STAC Collection this Item references to.", "type": "string", "minLength": 1 } } } } ] }, "water_bodies": { "oneOf": [ { "type": "string", "format": "uri" }, { "title": "STAC Item", "description": "This object represents the metadata for an item in a SpatioTemporal Asset Catalog.", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/item.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": [ "assets", "geometry", "id", "links", "properties", "stac_version", "type" ], "properties": { "type": { "type": "string", "enum": [ "Feature" ] }, "properties": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "title": { "title": "Item Title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Item Description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "anyOf": [ { "required": [ "datetime" ], "properties": { "datetime": { "not": { "anyOf": [ { "type": "null" } ] } } } }, { "required": [ "datetime", "start_datetime", "end_datetime" ] } ], "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } }, "oneOf": [ { "type": "null" }, { "type": "object" } ] }, "assets": { "title": "Asset links", "description": "Links to assets", "type": "object", "additionalProperties": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": [ "href" ], "properties": { "title": { "title": "Asset title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Asset description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "type": { "title": "Asset type", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "href": { "title": "Asset reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "roles": { "title": "Asset roles", "type": "array", "items": { "type": "string" } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } } } }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "geometry": { "oneOf": [ { "type": "null" }, { "title": "GeoJSON Point", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Point" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } }, { "title": "GeoJSON LineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "LineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } }, { "title": "GeoJSON Polygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Polygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } }, { "title": "GeoJSON MultiPoint", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPoint" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } } }, { "title": "GeoJSON MultiLineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiLineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } } }, { "title": "GeoJSON MultiPolygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPolygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } } }, { "title": "GeoJSON GeometryCollection", "type": "object", "required": [ "type", "geometries" ], "properties": { "type": { "type": "string", "enum": [ "GeometryCollection" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "geometries": { "type": "array", "items": { "oneOf": [ { "title": "GeoJSON Point", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Point" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } }, { "title": "GeoJSON LineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "LineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } }, { "title": "GeoJSON Polygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Polygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } }, { "title": "GeoJSON MultiPoint", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPoint" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } } }, { "title": "GeoJSON MultiLineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiLineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } } }, { "title": "GeoJSON MultiPolygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPolygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } } } ] } } } } ] }, "id": { "title": "Provider ID", "description": "Provider item ID", "type": "string", "minLength": 1, "oneOf": [ { "type": "number" }, { "type": "string" } ] }, "links": { "title": "Item links", "description": "Links to item relations", "type": "array", "items": { "type": "object", "required": [ "rel", "href" ], "properties": { "title": { "title": "Link title", "type": "string" }, "type": { "title": "Link type", "type": "string" }, "href": { "title": "Link reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "rel": { "title": "Link relation type", "type": "string", "minLength": 1 } } } }, "stac_extensions": { "title": "STAC extensions", "type": "array", "items": { "title": "Reference to a JSON Schema", "type": "string", "format": "iri" }, "uniqueItems": true }, "stac_version": { "title": "STAC version", "type": "string", "const": "1.0.0" } }, "definitions": { "asset": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": [ "href" ], "properties": { "title": { "title": "Asset title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Asset description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "type": { "title": "Asset type", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "href": { "title": "Asset reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "roles": { "title": "Asset roles", "type": "array", "items": { "type": "string" } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } } }, "assets": { "title": "Asset links", "description": "Links to assets", "type": "object", "additionalProperties": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": [ "href" ], "properties": { "title": { "title": "Asset title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Asset description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "type": { "title": "Asset type", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "href": { "title": "Asset reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "roles": { "title": "Asset roles", "type": "array", "items": { "type": "string" } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } } } }, "common_metadata": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "title": { "title": "Item Title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Item Description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } } }, "core": { "title": "GeoJSON Feature", "$id": "https://geojson.org/schema/Feature.json", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": [ "assets", "geometry", "id", "links", "properties", "stac_version", "type" ], "properties": { "type": { "type": "string", "enum": [ "Feature" ] }, "properties": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "title": { "title": "Item Title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Item Description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "anyOf": [ { "required": [ "datetime" ], "properties": { "datetime": { "not": { "anyOf": [ { "type": "null" } ] } } } }, { "required": [ "datetime", "start_datetime", "end_datetime" ] } ], "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } }, "oneOf": [ { "type": "null" }, { "type": "object" } ] }, "assets": { "title": "Asset links", "description": "Links to assets", "type": "object", "additionalProperties": { "title": "Basic Descriptive Fields", "$id": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/basics.json#", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": [ "href" ], "properties": { "title": { "title": "Asset title", "description": "A human-readable title describing the Item.", "type": "string" }, "description": { "title": "Asset description", "description": "Detailed multi-line description to fully explain the Item.", "type": "string" }, "type": { "title": "Asset type", "type": "string" }, "constellation": { "title": "Constellation", "type": "string" }, "created": { "title": "Creation Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "datetime": { "title": "Date and Time", "description": "The searchable date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": [ "string", "null" ], "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "end_datetime": { "title": "End Date and Time", "description": "The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "gsd": { "title": "Ground Sample Distance", "type": "number", "exclusiveMinimum": 0 }, "href": { "title": "Asset reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "instruments": { "title": "Instruments", "type": "array", "items": { "type": "string" } }, "license": { "type": "string", "pattern": "^[\\w\\-\\.\\+]+$" }, "mission": { "title": "Mission", "type": "string" }, "platform": { "title": "Platform", "type": "string" }, "providers": { "title": "Providers", "type": "array", "items": { "type": "object", "required": [ "name" ], "properties": { "description": { "title": "Organization description", "type": "string" }, "name": { "title": "Organization name", "type": "string", "minLength": 1 }, "roles": { "title": "Organization roles", "type": "array", "items": { "type": "string", "enum": [ "producer", "licensor", "processor", "host" ] } }, "url": { "title": "Organization homepage", "type": "string", "format": "iri" } } } }, "roles": { "title": "Asset roles", "type": "array", "items": { "type": "string" } }, "start_datetime": { "title": "Start Date and Time", "description": "The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) ", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" }, "updated": { "title": "Last Update Time", "type": "string", "format": "date-time", "pattern": "(\\+00:00|Z)$" } }, "dependencies": { "end_datetime": { "required": [ "start_datetime" ] }, "start_datetime": { "required": [ "end_datetime" ] } } } }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "geometry": { "oneOf": [ { "type": "null" }, { "title": "GeoJSON Point", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Point" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } }, { "title": "GeoJSON LineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "LineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } }, { "title": "GeoJSON Polygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Polygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } }, { "title": "GeoJSON MultiPoint", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPoint" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } } }, { "title": "GeoJSON MultiLineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiLineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } } }, { "title": "GeoJSON MultiPolygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPolygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } } }, { "title": "GeoJSON GeometryCollection", "type": "object", "required": [ "type", "geometries" ], "properties": { "type": { "type": "string", "enum": [ "GeometryCollection" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "geometries": { "type": "array", "items": { "oneOf": [ { "title": "GeoJSON Point", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Point" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } }, { "title": "GeoJSON LineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "LineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } }, { "title": "GeoJSON Polygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Polygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } }, { "title": "GeoJSON MultiPoint", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPoint" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } } }, { "title": "GeoJSON MultiLineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiLineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } } }, { "title": "GeoJSON MultiPolygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPolygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } } } ] } } } } ] }, "id": { "title": "Provider ID", "description": "Provider item ID", "type": "string", "minLength": 1, "oneOf": [ { "type": "number" }, { "type": "string" } ] }, "links": { "title": "Item links", "description": "Links to item relations", "type": "array", "items": { "type": "object", "required": [ "rel", "href" ], "properties": { "title": { "title": "Link title", "type": "string" }, "type": { "title": "Link type", "type": "string" }, "href": { "title": "Link reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "rel": { "title": "Link relation type", "type": "string", "minLength": 1 } } } }, "stac_extensions": { "title": "STAC extensions", "type": "array", "items": { "title": "Reference to a JSON Schema", "type": "string", "format": "iri" }, "uniqueItems": true }, "stac_version": { "title": "STAC version", "type": "string", "const": "1.0.0" } }, "else": { "properties": { "collection": { "not": {} } } }, "if": { "properties": { "links": { "contains": { "required": [ "rel" ], "properties": { "rel": { "const": "collection" } } } } } }, "oneOf": [ { "type": "object", "required": [ "geometry", "bbox" ], "properties": { "bbox": { "type": "array", "items": { "type": "number" }, "oneOf": [ { "maxItems": 4, "minItems": 4 }, { "maxItems": 6, "minItems": 6 } ] }, "geometry": { "title": "GeoJSON Geometry", "$id": "https://geojson.org/schema/Geometry.json", "$schema": "http://json-schema.org/draft-07/schema#", "oneOf": [ { "title": "GeoJSON Point", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Point" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } }, { "title": "GeoJSON LineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "LineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } }, { "title": "GeoJSON Polygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Polygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } }, { "title": "GeoJSON MultiPoint", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPoint" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } } }, { "title": "GeoJSON MultiLineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiLineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } } }, { "title": "GeoJSON MultiPolygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPolygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } } } ] } } }, { "type": "object", "required": [ "geometry" ], "properties": { "bbox": { "not": { "anyOf": [ {} ] } }, "geometry": { "type": "null" } } } ], "then": { "required": [ "collection" ], "properties": { "collection": { "title": "Collection ID", "description": "The ID of the STAC Collection this Item references to.", "type": "string", "minLength": 1 } } } }, "link": { "type": "object", "required": [ "rel", "href" ], "properties": { "title": { "title": "Link title", "type": "string" }, "type": { "title": "Link type", "type": "string" }, "href": { "title": "Link reference", "type": "string", "format": "iri-reference", "minLength": 1 }, "rel": { "title": "Link relation type", "type": "string", "minLength": 1 } } } }, "else": { "properties": { "collection": { "not": {} } } }, "if": { "properties": { "links": { "contains": { "required": [ "rel" ], "properties": { "rel": { "const": "collection" } } } } } }, "oneOf": [ { "type": "object", "required": [ "geometry", "bbox" ], "properties": { "bbox": { "type": "array", "items": { "type": "number" }, "oneOf": [ { "maxItems": 4, "minItems": 4 }, { "maxItems": 6, "minItems": 6 } ] }, "geometry": { "title": "GeoJSON Geometry", "$id": "https://geojson.org/schema/Geometry.json", "$schema": "http://json-schema.org/draft-07/schema#", "oneOf": [ { "title": "GeoJSON Point", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Point" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } }, { "title": "GeoJSON LineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "LineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } }, { "title": "GeoJSON Polygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "Polygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } }, { "title": "GeoJSON MultiPoint", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPoint" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 } } } }, { "title": "GeoJSON MultiLineString", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiLineString" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 2 } } } }, { "title": "GeoJSON MultiPolygon", "type": "object", "required": [ "type", "coordinates" ], "properties": { "type": { "type": "string", "enum": [ "MultiPolygon" ] }, "bbox": { "type": "array", "items": { "type": "number" }, "minItems": 4 }, "coordinates": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 2 }, "minItems": 4 } } } } } ] } } }, { "type": "object", "required": [ "geometry" ], "properties": { "bbox": { "not": { "anyOf": [ {} ] } }, "geometry": { "type": "null" } } } ], "then": { "required": [ "collection" ], "properties": { "collection": { "title": "Collection ID", "description": "The ID of the STAC Collection this Item references to.", "type": "string", "minLength": 1 } } } } ] } } }
2.1 Outputs validation¶
Schema can be used to fully validate an outputs dictionary (JSON Schema validation expected to pass):
In [7]:
Copied!
outputs = {
"example_out": "In girum imus nocte et consumimur igni"
}
validate(cwl_converter.get_outputs_json_schema(), outputs)
outputs = {
"example_out": "In girum imus nocte et consumimur igni"
}
validate(cwl_converter.get_outputs_json_schema(), outputs)
[required] - #/: 'cropped' is a required property [required] - #/: 'ndwi' is a required property [required] - #/: 'water_bodies' is a required property [additionalProperties] - #/: Additional properties are not allowed ('example_out' was unexpected)