The SpatioTemporal Asset Catalog (STAC) specification aims to standardize the way geospatial assets are exposed online and queried. A 'spatiotemporal asset' is any file that represents information about the earth captured in a certain space and time. The core STAC specification lives at gitub.com/radiantearth/stac-spec.
A STAC API is the dynamic version of a SpatioTemporal Asset Catalog. It returns a STAC Catalog,
Collection, Item,
or a STAC API ItemCollection, depending on the endpoint.
Catalog and Collection objects are JSON, while Item and ItemCollection objects are GeoJSON-compliant entities with foreign members.
Typically, a Feature is used when returning a single Item object, and FeatureCollection when multiple Item objects (rather than a
JSON array of Item entities).
The API can be implemented in compliance with the OGC API - Features standard (we'll use OAFeat for shorthand). In this case STAC API can be thought of as a specialized Features API to search STAC catalogs, where the features returned are STAC Item objects, that have common properties, links to their assets and geometries that represent the footprints of the geospatial assets.
The specification for STAC API is provided as files that follow the OpenAPI 3.0 specification, rendered online into HTML at https://api.stacspec.org/v1.0.0-beta.2, in addition to human-readable documentation.
This specification has evolved over the past couple years, and is used in production in a variety of deployments. It is currently in a 'beta' state, with no major changes anticipated. For 1.0-beta we remain fully aligned with OGC API - Features Version 1.0, and we are working to stay aligned as the additional OGC API components mature. This may result in minor changes as things evolve. The STAC API specification follows Semantic Versioning, so once 1.0.0 is reached any breaking change will require the spec to go to 2.0.0.
For any questions feel free to jump on our gitter channel or email our google group. The majority of communication about the evolution of the specification takes place in the issue tracker and in pull requests.
The Overview document describes all the various parts of the STAC API and how they fit together.
STAC API - Core Specification: The core folder describes the core STAC API specification that enables browsing catalogs and retrieving the API capabilities. This includes the OpenAPI schemas for STAC Item, Catalog and Collection objects.
STAC API - Item Search Specification:
The item-search folder contains the Item Search specification, which enables
cross-collection search of STAC Item objects at a search
endpoint, as well as a number of extensions.
STAC API - Features:
The ogcapi-features folder describes how a STAC API can fully implement OGC API -
Features to expose individual items
endpoints for search of
each STAC collection. It also includes extensions that can be used to further enhance OAFeat.
Extensions: The extensions document describes how STAC incubates new functionality, and it links to the existing extensions that can be added to enrich the functionality of a STAC API. Each has an OpenAPI yaml, but some of the yaml documents live as fragments in the fragments/ folder.
Fragments: The fragments/ folder contains re-usable building blocks to be used in a STAC API, including common OpenAPI schemas and parameters for behavior like sorting and filtering. Most all of them are compatible with OGC API - Features, and the plan is to fully align the relevant functionality and have it be useful for all OAFeat implementations. OpenAPI YAML documents are provided for each extension with additional documentation and examples provided in a README.
STAC Specification: This repository includes a 'sub-module', which
is a copy of the STAC specification tagged at the latest stable version.
Sub-modules aren't checked out by default, so to get the directory populated
either use git submodule update --init --recursive
if you've already cloned it,
or clone from the start with git clone --recursive [email protected]:radiantearth/stac-api-spec.git
.
Implementation Recommendations: Recommendations for implementing a STAC API may be found here. These are mostly concerns that apply to an entire API implementation and are not part of the specification itself.
Anyone building software that catalogs imagery or other geospatial assets is welcome to collaborate. Beforehand, please review our guidelines for contributions and development process.