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)