Skip to content

Latest commit

 

History

History
87 lines (62 loc) · 6.32 KB

README.md

File metadata and controls

87 lines (62 loc) · 6.32 KB

STAPI Product Spec

This document explains the structure of a STAPI Product.

STAPI Product objects are represented in JSON format and are very flexible. Any JSON object that contains all the required fields is a valid STAPI Product. A Product object contains a minimal set of required properties to be valid and can be extended through the use of constraints and parameters.

Product Collection Spec

Element Type Description
products [Product Object] REQUIRED List of Product offered in the application.
links [Link Object] REQUIRED Links for e.g. pagination.

Product Object

Element Type Description
type string REQUIRED. Must be set to Product to be a valid Product.
id string REQUIRED. Identifier for the Product that is unique across the provider.
conformsTo [string] Conformance classes that apply to the product specifically.
title string A short descriptive one-line title for the Product.
description string REQUIRED. Detailed multi-line description to fully explain the Collection. CommonMark 0.29 syntax MAY be used for rich text representation.
keywords [string] List of keywords describing the Product.
license string REQUIRED. Collection's license(s), either a SPDX License identifier, various if multiple licenses apply or proprietary for all other cases.
providers [Provider Object] A list of providers, which may include all organizations capturing or processing the data or the hosting provider. Providers should be listed in chronological order with the most recent provider being the last element of the list.
links [Link Object] REQUIRED. A list of references to other documents.

Additional properties are allowed to be placed in the top-level object, comparable to how STAC Collections work. STAC Collection fields can be reused, including fields defined in STAC Collection extensions.

Provider Object

The object provides information about a provider. A provider is any of the organizations that captures or processes the content of the Collection and therefore influences the data offered by this Collection. May also include information about the final storage provider hosting the data.

Field Name Type Description
name string REQUIRED. The name of the organization or the individual.
description string Multi-line description to add further provider information such as processing details for processors and producers, hosting details for hosts or basic contact information. CommonMark 0.29 syntax MAY be used for rich text representation.
roles [string] Role of the provider. Set to producer or reseller
url string Homepage on which the provider describes the dataset and publishes contact information.

roles: The provider's role(s) can be one or more of the following elements:

  • licensor: The organization that is licensing the dataset under the license specified in the Collection's license field.
  • producer: The producer of the data is the provider that initially captured and processed the source data, e.g. ESA for Sentinel-2 data.
  • processor: A processor is any provider who processed data to a derived product.
  • host: The host is the actual provider offering the data on their storage. There should be no more than one host, specified as last element of the list.

Link Object

This object describes a relationship with another entity. Data providers are advised to be liberal with links.

Field Name Type Description
href string REQUIRED. The actual link in the format of an URL. Relative and absolute links are both allowed.
rel string REQUIRED. Relationship between the current document and the linked document.
type string Media Type of the referenced entity.
title string A human readable title to be used in rendered displays of the link.

The relation type product-parameters is to be used to link to the GET /products/{productId}/parameters endpoint.

Parameters

Parameters define the Opportunity and Order properties that can be used in CQL2 JSON filter statements to reduce the results set. For example, a parameter might be eo:cloud_cover which allows users to filter Opportunities to only results with eo:cloud_cover within a certain range.

The parameters must be exposed as a separate endpoint that is provided at GET /products/{productId}/parameters.

A The response body for parameters is a JSON Schema definition. Empty schemas are not allowed. It is recommended to use JSON Schema draft-07. For an introduction to JSON Schema, see Learn JSON Schema.

Parameters Best Practices

There are many Tasking parameters that cannot be represented by JSON Schema. For these parameters, strongly consider documenting the constraint in the "description" property of the relevant constraint or use the "links" attribute to link the user out to documentation that describes additional parameters.

TODO: Example TODO: Documented link type for client libraries to be able to find and surface to users