Collections API
The Collections system provides mechanisms for maintaining a discrete collection of imagery datasets, making them consistently indexed and queryable.
Our implementation mirrors the SpatioTemporal Asset Catalog (STAC) standards collections schema and API layout in order to provide support and interoperability for existing tools that utilise this standard.
This can be used to create time series collections of imagery over a single target or site, or to help in discovering what imagery has been previously collected by members of your team, among many other unique applications.
The Collections API consists of 12 endpoints:
- List Collections, which will list all collections on your account
- Collection Details, which will provide the details of an individual collection
- List Collection Items, which will list items (orders and scenes) within the collection
- Collection Item Details, which will provide details of an individual item within the collection
- Search Collection, which provides query and search functionality to find items within a collection
- Create Collections, for creating new data collections
- Add Collection item, to add orders to a collection
- Remove Collection Item, to remove them from the dataset
- Update Collection, to update labelling and descriptive details of the collection
- Delete Collection, to delete a collection
- Request Item Access, to request access to an order in a collection
- Collection Conformance, to view STAC standards compliance of the collection system
Collections List
List all STAC collections the requesting API has access to.
GET: /api/collections?page=1&size=10
Query Parameters
name | data type | purpose |
---|---|---|
page | number | The page (starting from 0, defaults to 0 if not specified) of data to display, where each page is “size” items in length |
size | number | The number of results per page. The default is 100 |
Response Details
The response object details the list of results, in addition to the query context of the size of the page and number of results returned. Links to related results and the next/previous page may be provided in the attached links.
The full details of the Collection and Link objects are described in the reference section below
Collection Details
Returns the details of the individual STAC collection with the corresponding ID.
GET: /api/collections/{collection-id}
Path Parameters
name | purpose |
---|---|
collection-id | The ID of the collection to be retrieved |
Response Details
The endpoint returns a full collection object, the full reference for this objects structure is detailed in the reference section below.
Collection List Items
Paginate STAC Items within the collection.
GET: /api/collections/{collection-id}/items?page=0&limit=20&bbox=22,12,23,13&datetime=2022-05-02T12:00:00Z/
Path Parameters
name | purpose |
---|---|
collection-id | The ID of the collection to be retrieved |
Query Parameters
name | data type | purpose |
---|---|---|
page | number | The page (starting from 0, defaults to 0 if not specified) of data to display, where each page is “limit” items in length |
limit | number | The number of results per page. The default is 100 |
bbox | string | A bounding box to only return results within. Should be 4 numbers separated by commas (,) The elements define the south, west, north and east longitude and latitude boundaries, in that order. |
datetime | string | An OAF datetime parameter. This allows for either a single RFC 3339 datetime or an open or closed interval that also uses RFC 3339 datetimes. |
Response Details
The response object details the list of items, in addition to the details about total matching items and the number returned. Links to related results and the next/previous page may be provided in the attached links.
The full details of the Item and Link objects are described in the reference section below.
Collection Get Item
Retrieve an individual item from a collection
GET: /api/collections/{collection-id}/items/{item-id}
Path Parameters
name | purpose |
---|---|
collection-id | The ID of the collection to be retrieved |
item-id | The ID of the item in the collection to be retrieved |
Response Details
This endpoint returns a collection item object, the full reference for this objects structure is detailed in the reference section below.
Collection Search Items
Perform a detailed search of items within a collection
GET|POST: /api/collections/{collection-id}/search
Path Parameters
name | purpose |
---|---|
collection-id | The ID of the collection to be retrieved |
This endpoint can be queried both as a GET and a POST request.
A GET request will read the below query parameters for a simple search, whereas a POST request will read the request’s body for the JSON request defined below.
Query Parameters
name | data type | purpose |
---|---|---|
ids | string | A JSON formatted list of Item ids you wish to retrieve |
bbox | string | A bounding box to only return results within. Should be 4 numbers separated by commas (,) The elements define the south, west, north and east longitude and latitude boundaries, in that order. |
intersects | string | A JSON formatted GeoJSON geometry object, consisting of the geometry type (point, polygon, etc) and coordinates. |
datetime | string | An OAF datetime parameter. This allows for either a single RFC 3339 datetime or an open or closed interval that also uses RFC 3339 datetimes. |
query | string | A JSON formatted set of query conditions, see the POST body documentation below for details. |
limit | number | The number of results per page. The default is 100 |
page | number | The page (starting from 0) of data to display, where each page is “limit” items in length (if not specified, the default is 0) |
Request Body
name | data type | purpose |
---|---|---|
ids | string[] | A list of Item ids to be returned |
bbox | number[4] | A bounding box to only return results within. Should be 4 numbers separated by commas (,) The elements define the south, west, north and east longitude and latitude boundaries, in that order. |
intersects | GeoJSON geometry object | A JSON formatted GeoJSON geometry object, consisting of the geometry type (point, polygon, etc) and coordinates. |
datetime | string | An OAF datetime parameter. This allows for either a single RFC 3339 datetime or an open or closed interval that also uses RFC 3339 datetimes. |
query | object | A list of field queries to restrict results to matching the provided conditions (see below). |
limit | number | The number of results per page. The default is 100 |
page | number | The page (starting from 0) of data to display, where each page is “limit” items in length (if not specified, the default is 0) |
Query options
The query component allows filtering results to those that meet the conditions specified.
Conditions take a structure such as
Where this example would only allow results with a cloud cover less than 40%.
Each query is made up of the field name of the condition, and contains a set of operations and conditions.
Query conditions are only allowed on certain fields, and this list of which these conditions can be applied to are:
string
The list of entities that provided this item
name | data type | purpose |
---|---|---|
providers.key | ||
supplier | string | A shorthand alias for the above |
platform | string | The identifier for the platform that captured this item |
instruments | string | The list of instruments used to capture this item |
gsd | number | The ground sample distance of this item (smallest distance is multiple, i.e. from a multi-spectral sensor) |
eo:bands.common_name | string | The list of spectral band common names that are available in this item |
band | string | A shorthand alias for the above |
eo:cloud_cover | number | The percentage cloud cover of this item |
eo:snow_cover | number | The percentage snow cover of this item (if provided) |
arl:types | string | The imagery types this item contains (i.e. visual, optical, SAR, etc) |
The operations that can be performed to constrain results are dictated by the fields data types
For string values like supplier or platform, equality (“eq”) and simple fuzzy match (“like”) are the two operations available, the value for both operator keys should be a string that the item property must equal or pattern match.
For numeric values a broader range of operations are available, such as:
- Equality (“eq”)
- Less than (“lt”)
- Less than or equal to (“lte”)
- Greater than (“gt”)
- Greater than or equal to (“gte”), or
- Within a range “range”
The operator value for each of these should be a number that will be compared against, with the exception of range, which should be an array of two numbers, defining the lower and upper limits of the range.
Response Details
The response object details the list of items, in addition to the details about total matching items and the number returned. Links to related results and the next/previous page may be provided in the attached links.
The full details of the Item and Link objects are described in the reference section below.
Collection Import Order
Import an order into a collection
POST: /api/collections/{collection-id}/items
Path Parameters
name | purpose |
---|---|
collection-id | The ID of the collection to be retrieved |
Request Body
name | data type | purpose |
---|---|---|
order | string | The UUID of an order the API has access to, which should be imported into the collection |
Response Details
This endpoint provides no response if successful.
The process of importing an order to a collection is asynchronous, and may take several seconds after this request has returned to become available.
Collection Remove Item
Remove an item from a collection
DELETE: /api/collections/{collection-id}/items/{item-id}
Path Parameters
name | purpose |
---|---|
collection-id | The ID of the collection to be retrieved |
item-id | The ID of the item in the collection to be retrieved |
Response Details
This endpoint requires no additional parameters, and returns no value if the request is successfully submitted.
This endpoint is asynchronous, and may take a few seconds for the item to be removed from the collection after responding.
Collection Create
Create a new collection to add imagery to
POST: /api/collections
Request Body
name | data type | purpose |
---|---|---|
title | string | A title/name for the collection to identify it |
description | string | A description of the collection, such as its purpose, or the location of interest. |
keywords | string[] | A list of keywords that describe the collections content for organisational purposes |
team | string | The team that will be the owner of the collection (defaults to the requesting API directly) |
Response Details
This endpoint will respond with the newly created collection object, see the structure reference below for full details.
Collection Update
Update the details of a collection
POST: /api/collections/{collection-id}
Path Parameters
name | purpose |
---|---|
collection-id | The ID of the collection to be retrieved |
Request Body
name | data type | purpose |
---|---|---|
title | string | A title/name for the collection to identify it |
description | string | A description of the collection, such as its purpose, or the location of interest. |
keywords | string[] | A list of keywords that describe the collections content for organisational purposes |
Response Details
This endpoint will respond with the updated collection object, see the structure reference below for full details.
Collection Delete
Delete an imagery collection
DELETE: /api/collections/{collection-id}
Path Parameters
name | purpose |
---|---|
collection-id | The ID of the collection to be retrieved |
This endpoint requires no additional parameters and will not return anything unless an error is encountered removing the collection.
Request Item Access
Request access to an item in the collection that the caller does not have resource access permission to.
POST: /api/collections/{collection-id}/{item-id}/access-request
Path Parameters
name | purpose |
---|---|
collection-id | The ID of the collection to be retrieved |
item-id | The ID of the item in the collection to request access to |
Request Body
name | data type | purpose |
---|---|---|
team | string | (optional) the UUID of the team to grant access to, rather than the requestor (must be a member of the team) |
message | string | A message to present to the item owner, stating the reason for requesting access. Only alphanumeric, spaces and basic symbols (: _ \ – , . / ‘ # $ % ^ & *) are permitted. |
Response Details
This endpoint provides no response if successful in sending the access request.
Collection Conformance
The conformance endpoint is a required component of the STAC standard, and lists the set of JSON Schema documents that the API and its output data is in conformance with. These schemas often indicate support for some extension upon the base STAC specification.
GET: /api/collections/conformance
Response details
The response to this endpoint is an envelope object, and a list of URI pointing to JSON Schema documents
Collection Object
Many of the collections endpoints return the top level collection object.
It’s structure looks like the following:
Fields
name | data type | purpose |
---|---|---|
id | string | The unique identifier for this collection |
type | string | Part of the STAC standard to conform with GeoJSON, will always be “Collection” |
stac_version | string | The version of the STAC standard being adhered to |
stac_extensions | string[] | A list of STAC extension schemas this collection complies with |
title | string | A descriptive title of the collection |
description | string | A more detailed description of the collection and its contents |
keywords | string[] | Identifying keywords for the collection |
license | string | SPDX License identifier, various if multiple licenses apply or proprietary for all other cases |
providers | Provider[] | A list of providers that are the source of or that manage data in this collection |
extent | Extent | The spatial and temporal extents of items in this collection |
assets | Asset Map | A list of any assets related to this collection but not to any specific items within it |
summaries | Summary Map | Summaries of the range or values of common properties of items in this collection |
links | Link[] | Links to resources and media associated with this collection |
Collection Provider Object
The provider object provides details about the source and management of data items and collections as a whole
It’s structure looks like the following:
Fields
name | data type | purpose |
---|---|---|
name | string | The name of the provider |
description | string | A description of the provider and their data |
roles | string[] | A list of providing roles they fulfil (i.e. licensor, producer, processor or host) |
url | string | Link to the providers homepage |
Collection Extent Object
The extent provides information about the distribution of data in a collection both spatially and temporally.
It provides lists of extents, with the first being the total extent of the collection as a whole, and optionally additional ranges within that, if the data is distributed in independent clusters of space or time.
It’s structure looks like the following:
Fields
name | data type | purpose |
---|---|---|
spatial | object | wraps the spatial extents of the collection |
spatial.bbox | number[4][] | a list of bounding boxes representing spatial data extents within the collection (with the first being total extent of all data) |
temporal | object | wraps the temporal extents of the collection |
temporal.interval | string[][] | a list of time intervals with a start and end date (or null for an open interval) where the first entry will be the total temporal extent of all data in the collection |
Collection Asset Object
Assets represent a discrete file resource associated with a Collection or Item, and provides the details for its retrieval.
It’s structure looks like the following:
Fields
name | data type | purpose |
---|---|---|
href | string | Url of the asset |
title | string | Title or name of the asset |
description | string | Optional description of the asset |
type | string | IANA media type (MIME type) of the asset |
roles | string[] | List of semantic roles this asset satisfies (see resource reference for more details) |
Collection Link Object
Collections, Items and various endpoints return Link objects, which provide links to related media and content of the response, or object, and where it can be retrieved.
It’s structure looks like the following:
Fields
name | data type | purpose |
---|---|---|
href | string | The URL of the linked media |
rel | string | The type of relationship the media has to the current document. (i.e. parent, next result, the associated licence. etc) |
type | string | The IANA Media Type (MIME) of the linked media |
title | string | An optional title to describe the linked media |
Collection Summary Object
The Collection summary provides information on the range of values found for a given field within the collection.
Each key in the summary object matches a field found in Item properties, and provides a summary for the different values that can be found within the collection.
There are three main forms a summary entry may take:
- a range from a minimum to a maximum,
- a list of values found, or
- a JSON schema document (this is not used by default, unless you have custom processing to facilitate it)
It’s structure looks like the following:
Where platform is summarised as a list of valid values, and gsd as a numeric range.
Collection Item
Many of the collections endpoints return collection Items representing a capture event
It’s structure looks like the following:
Fields
name | data type | purpose |
---|---|---|
type | string | Part of the STAC standard to conform with GeoJSON, will always be “Feature” |
stac_verions | string | The version of the STAC standard being adhered to |
stac_extension | string | A list of STAC extension schemas this item complies with |
id | string | ID of the order the item corresponds to |
crs | string | The Coordinate Reference System for all geometry of this item (unless otherwise specified). Represented either as a EPSG code, or GDAL Well Known Text if no EPSG code is identified. |
geometry | GeoJSON Geometry | The polygon defining coverage of this item in the given CRS. |
bbox | number[] | The total bounding box of the item |
properties | Properties Object | The list of properties of this item (see above) |
links | Link[] | Links to resources and media associated with this collection |
assets | Asset Map | A list of any assets related to this item, including all resources from the source order |
collection | string | The ID of the collection this item is from |