NAV Navigation
Shell HTTP JavaScript Node.JS Ruby Python Java Go

Radiant MLHub API v1.0.0

Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

This is an OpenAPI definition of the core SpatioTemporal Asset Catalog API specification. Any service that implements this endpoint to allow search of spatiotemporal assets can be considered a STAC API. The endpoint is also available as an OpenAPI fragment that can be integrated with other OpenAPI definitions, and is designed to slot seamlessly into a OGC API - Features definition.

Base URLs:

Web: Radiant Earth Foundation License: Apache License 2.0

Authentication

An access token can be acquired by registering on the MLHub Dashboard

All API requests must be made with the Authorization header present following the format of Authorization: Bearer {ACCESS_TOKEN} where {ACCESS_TOKEN} is your access token on the MLHub Dashboard

Capabilities

essential characteristics of this API

getLandingPage

Code samples

# You can also use wget
curl -X GET https://api.radiant.earth/mlhub/v1/ \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://api.radiant.earth/mlhub/v1/ HTTP/1.1
Host: api.radiant.earth
Accept: application/json

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: 'https://api.radiant.earth/mlhub/v1/',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://api.radiant.earth/mlhub/v1/',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://api.radiant.earth/mlhub/v1/',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api.radiant.earth/mlhub/v1/', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://api.radiant.earth/mlhub/v1/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.radiant.earth/mlhub/v1/", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /

Landing Page

The landing page provides links to the API definition, the conformance statements and to the feature collections in this dataset.

Example responses

200 Response

{
  "title": "Buildings in Bonn",
  "description": "Access to data about buildings in the city of Bonn via a Web API that conforms to the OGC API Features specification.",
  "links": [
    {
      "href": "http://data.example.org/",
      "rel": "self",
      "type": "application/json",
      "title": "this document"
    },
    {
      "href": "http://data.example.org/api",
      "rel": "service-desc",
      "type": "application/vnd.oai.openapi+json;version=3.0",
      "title": "the API definition"
    },
    {
      "href": "http://data.example.org/api.html",
      "rel": "service-doc",
      "type": "text/html",
      "title": "the API documentation"
    },
    {
      "href": "http://data.example.org/conformance",
      "rel": "conformance",
      "type": "application/json",
      "title": "OGC API conformance classes implemented by this server"
    },
    {
      "href": "http://data.example.org/collections",
      "rel": "data",
      "type": "application/json",
      "title": "Information about the feature collections"
    }
  ]
}

401 Response

{
  "code": 401,
  "message": "Auth token invalid"
}

Responses

Status Meaning Description Schema
200 OK The landing page provides links to the API definition (link relations service-desc and service-doc), the Conformance declaration (path /conformance, link relation conformance), and the Feature Collections (path /collections, link relation data). string
401 Unauthorized Access token is missing or invalid string
500 Internal Server Error A server error occurred. string

getConformanceDeclaration

Code samples

# You can also use wget
curl -X GET https://api.radiant.earth/mlhub/v1/conformance \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://api.radiant.earth/mlhub/v1/conformance HTTP/1.1
Host: api.radiant.earth
Accept: application/json

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: 'https://api.radiant.earth/mlhub/v1/conformance',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://api.radiant.earth/mlhub/v1/conformance',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://api.radiant.earth/mlhub/v1/conformance',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api.radiant.earth/mlhub/v1/conformance', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://api.radiant.earth/mlhub/v1/conformance");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.radiant.earth/mlhub/v1/conformance", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /conformance

API Specification Conformance

A list of all conformance classes specified in a standard that the server conforms to.

Example responses

200 Response

{
  "conformsTo": [
    "http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/core",
    "http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/oas30",
    "http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/html",
    "http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/geojson"
  ]
}

401 Response

{
  "code": 401,
  "message": "Auth token invalid"
}

Responses

Status Meaning Description Schema
200 OK The URIs of all conformance classes supported by the server. To support "generic" clients that want to access multiple OGC API Features implementations - and not "just" a specific API / server, the server declares the conformance classes it implements and conforms to. string
401 Unauthorized Access token is missing or invalid string
500 Internal Server Error A server error occurred. string

getCollections

Code samples

# You can also use wget
curl -X GET https://api.radiant.earth/mlhub/v1/collections \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://api.radiant.earth/mlhub/v1/collections HTTP/1.1
Host: api.radiant.earth
Accept: application/json

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: 'https://api.radiant.earth/mlhub/v1/collections',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://api.radiant.earth/mlhub/v1/collections',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://api.radiant.earth/mlhub/v1/collections',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api.radiant.earth/mlhub/v1/collections', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://api.radiant.earth/mlhub/v1/collections");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.radiant.earth/mlhub/v1/collections", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /collections

List Collections in the Dataset

Example responses

200 Response

{
  "links": [
    {
      "href": "http://www.geoserver.example/stac/naip/child/catalog.json",
      "rel": "child",
      "type": "application/geo+json",
      "hreflang": "en",
      "title": "NAIP Child Catalog",
      "length": 0
    }
  ],
  "collections": [
    {
      "stac_version": "0.8.1",
      "stac_extensions": [],
      "id": "Sentinel-2",
      "title": "Sentinel-2 MSI: MultiSpectral Instrument, Level-1C",
      "description": "Sentinel-2 is a wide-swath, high-resolution, multi-spectral\nimaging mission...\n",
      "license": "proprietary",
      "keywords": [
        "copernicus",
        "esa",
        "eu",
        "msi",
        "radiance",
        "sentinel"
      ],
      "providers": [
        {
          "name": "ESA",
          "roles": [
            "producer",
            "licensor"
          ],
          "url": "https://sentinel.esa.int/web/sentinel/user-guides/sentinel-2-msi"
        }
      ],
      "extent": {
        "spatial": {
          "bbox": [
            [
              -180,
              -56,
              180,
              83
            ]
          ]
        },
        "temporal": {
          "interval": [
            [
              "2015-06-23T00:00:00Z",
              "2019-07-10T13:44:56Z"
            ]
          ]
        }
      },
      "summaries": {
        "datetime": {
          "min": "2015-06-23T00:00:00Z",
          "max": "2019-07-10T13:44:56Z"
        },
        "sci:citation": [
          "Copernicus Sentinel data [Year]"
        ],
        "eo:gsd": [
          10,
          30,
          60
        ],
        "eo:platform": [
          "sentinel-2a",
          "sentinel-2b"
        ],
        "eo:constellation": [
          "sentinel-2"
        ],
        "eo:instrument": [
          "msi"
        ],
        "eo:off_nadir": {
          "min": 0,
          "max": 100
        },
        "eo:sun_elevation": {
          "min": 6.78,
          "max": 89.9
        },
        "eo:bands": [
          [
            {
              "name": "B1",
              "common_name": "coastal",
              "center_wavelength": 4.439,
              "gsd": 60
            },
            {
              "name": "B2",
              "common_name": "blue",
              "center_wavelength": 4.966,
              "gsd": 10
            },
            {
              "name": "B3",
              "common_name": "green",
              "center_wavelength": 5.6,
              "gsd": 10
            },
            {
              "name": "B4",
              "common_name": "red",
              "center_wavelength": 6.645,
              "gsd": 10
            },
            {
              "name": "B5",
              "center_wavelength": 7.039,
              "gsd": 20
            },
            {
              "name": "B6",
              "center_wavelength": 7.402,
              "gsd": 20
            },
            {
              "name": "B7",
              "center_wavelength": 7.825,
              "gsd": 20
            },
            {
              "name": "B8",
              "common_name": "nir",
              "center_wavelength": 8.351,
              "gsd": 10
            },
            {
              "name": "B8A",
              "center_wavelength": 8.648,
              "gsd": 20
            },
            {
              "name": "B9",
              "center_wavelength": 9.45,
              "gsd": 60
            },
            {
              "name": "B10",
              "center_wavelength": 1.3735,
              "gsd": 60
            },
            {
              "name": "B11",
              "common_name": "swir16",
              "center_wavelength": 1.6137,
              "gsd": 20
            },
            {
              "name": "B12",
              "common_name": "swir22",
              "center_wavelength": 2.2024,
              "gsd": 20
            }
          ]
        ]
      },
      "links": [
        {
          "rel": "self",
          "href": "http://cool-sat.com/collections/Sentinel-2"
        },
        {
          "rel": "root",
          "href": "http://cool-sat.com/collections"
        },
        {
          "rel": "license",
          "href": "https://scihub.copernicus.eu/twiki/pub/SciHubWebPortal/TermsConditions/Sentinel_Data_Terms_and_Conditions.pdf",
          "title": "Legal notice on the use of Copernicus Sentinel Data and Service Information"
        }
      ]
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK The dataset is organized as one or more feature collections. This resource provides information about and access to the collections. string
401 Unauthorized Access token is missing or invalid string
500 Internal Server Error A server error occurred. string

describeCollection

Code samples

# You can also use wget
curl -X GET https://api.radiant.earth/mlhub/v1/collections/{collectionId} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://api.radiant.earth/mlhub/v1/collections/{collectionId} HTTP/1.1
Host: api.radiant.earth
Accept: application/json

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: 'https://api.radiant.earth/mlhub/v1/collections/{collectionId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://api.radiant.earth/mlhub/v1/collections/{collectionId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://api.radiant.earth/mlhub/v1/collections/{collectionId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api.radiant.earth/mlhub/v1/collections/{collectionId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://api.radiant.earth/mlhub/v1/collections/{collectionId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.radiant.earth/mlhub/v1/collections/{collectionId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /collections/{collectionId}

Get Collection with ID collectionId

Parameters

Name In Type Required Description
collectionId path string true local identifier of a collection

Example responses

200 Response

{
  "stac_version": "0.8.1",
  "stac_extensions": [],
  "id": "Sentinel-2",
  "title": "Sentinel-2 MSI: MultiSpectral Instrument, Level-1C",
  "description": "Sentinel-2 is a wide-swath, high-resolution, multi-spectral\nimaging mission...\n",
  "license": "proprietary",
  "keywords": [
    "copernicus",
    "esa",
    "eu",
    "msi",
    "radiance",
    "sentinel"
  ],
  "providers": [
    {
      "name": "ESA",
      "roles": [
        "producer",
        "licensor"
      ],
      "url": "https://sentinel.esa.int/web/sentinel/user-guides/sentinel-2-msi"
    }
  ],
  "extent": {
    "spatial": {
      "bbox": [
        [
          -180,
          -56,
          180,
          83
        ]
      ]
    },
    "temporal": {
      "interval": [
        [
          "2015-06-23T00:00:00Z",
          "2019-07-10T13:44:56Z"
        ]
      ]
    }
  },
  "summaries": {
    "datetime": {
      "min": "2015-06-23T00:00:00Z",
      "max": "2019-07-10T13:44:56Z"
    },
    "sci:citation": [
      "Copernicus Sentinel data [Year]"
    ],
    "eo:gsd": [
      10,
      30,
      60
    ],
    "eo:platform": [
      "sentinel-2a",
      "sentinel-2b"
    ],
    "eo:constellation": [
      "sentinel-2"
    ],
    "eo:instrument": [
      "msi"
    ],
    "eo:off_nadir": {
      "min": 0,
      "max": 100
    },
    "eo:sun_elevation": {
      "min": 6.78,
      "max": 89.9
    },
    "eo:bands": [
      [
        {
          "name": "B1",
          "common_name": "coastal",
          "center_wavelength": 4.439,
          "gsd": 60
        },
        {
          "name": "B2",
          "common_name": "blue",
          "center_wavelength": 4.966,
          "gsd": 10
        },
        {
          "name": "B3",
          "common_name": "green",
          "center_wavelength": 5.6,
          "gsd": 10
        },
        {
          "name": "B4",
          "common_name": "red",
          "center_wavelength": 6.645,
          "gsd": 10
        },
        {
          "name": "B5",
          "center_wavelength": 7.039,
          "gsd": 20
        },
        {
          "name": "B6",
          "center_wavelength": 7.402,
          "gsd": 20
        },
        {
          "name": "B7",
          "center_wavelength": 7.825,
          "gsd": 20
        },
        {
          "name": "B8",
          "common_name": "nir",
          "center_wavelength": 8.351,
          "gsd": 10
        },
        {
          "name": "B8A",
          "center_wavelength": 8.648,
          "gsd": 20
        },
        {
          "name": "B9",
          "center_wavelength": 9.45,
          "gsd": 60
        },
        {
          "name": "B10",
          "center_wavelength": 1.3735,
          "gsd": 60
        },
        {
          "name": "B11",
          "common_name": "swir16",
          "center_wavelength": 1.6137,
          "gsd": 20
        },
        {
          "name": "B12",
          "common_name": "swir22",
          "center_wavelength": 2.2024,
          "gsd": 20
        }
      ]
    ]
  },
  "links": [
    {
      "rel": "self",
      "href": "http://cool-sat.com/collections/Sentinel-2"
    },
    {
      "rel": "root",
      "href": "http://cool-sat.com/collections"
    },
    {
      "rel": "license",
      "href": "https://scihub.copernicus.eu/twiki/pub/SciHubWebPortal/TermsConditions/Sentinel_Data_Terms_and_Conditions.pdf",
      "title": "Legal notice on the use of Copernicus Sentinel Data and Service Information"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Information about the feature collection with id collectionId. string
401 Unauthorized Access token is missing or invalid string
404 Not Found The requested URI was not found. None
500 Internal Server Error A server error occurred. string

Data

access to data (features)

getFeatures

Code samples

# You can also use wget
curl -X GET https://api.radiant.earth/mlhub/v1/collections/{collectionId}/items \
  -H 'Accept: application/geo+json' \
  -H 'Authorization: Bearer {access-token}'

GET https://api.radiant.earth/mlhub/v1/collections/{collectionId}/items HTTP/1.1
Host: api.radiant.earth
Accept: application/geo+json

var headers = {
  'Accept':'application/geo+json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: 'https://api.radiant.earth/mlhub/v1/collections/{collectionId}/items',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/geo+json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://api.radiant.earth/mlhub/v1/collections/{collectionId}/items',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/geo+json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://api.radiant.earth/mlhub/v1/collections/{collectionId}/items',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/geo+json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api.radiant.earth/mlhub/v1/collections/{collectionId}/items', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://api.radiant.earth/mlhub/v1/collections/{collectionId}/items");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/geo+json"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.radiant.earth/mlhub/v1/collections/{collectionId}/items", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /collections/{collectionId}/items

List Items in a Feature

Fetch features of the feature collection with id collectionId.

Every feature in a dataset belongs to a collection. A dataset may consist of multiple feature collections. A feature collection is often a collection of features of a similar type, based on a common schema.

Use content negotiation to request HTML or GeoJSON.

Parameters

Name In Type Required Description
collectionId path string true local identifier of a collection
limit query integer false The optional limit parameter limits the number of items that are presented in the response document.
bbox query array[number] false Only features that have a geometry that intersects the bounding box are selected.
datetime query string false Either a date-time or an interval, open or closed. Date and time expressions

Detailed descriptions

limit: The optional limit parameter limits the number of items that are presented in the response document.

Only items are counted that are on the first level of the collection in the response document. Nested objects contained within the explicitly requested items shall not be counted.

Minimum = 1. Maximum = 10000. Default = 10.

bbox: Only features that have a geometry that intersects the bounding box are selected. The bounding box is provided as four or six numbers, depending on whether the coordinate reference system includes a vertical axis (height or depth):

The coordinate reference system of the values is WGS 84 longitude/latitude (http://www.opengis.net/def/crs/OGC/1.3/CRS84) unless a different coordinate reference system is specified in the parameter bbox-crs.

For WGS 84 longitude/latitude the values are in most cases the sequence of minimum longitude, minimum latitude, maximum longitude and maximum latitude. However, in cases where the box spans the antimeridian the first value (west-most box edge) is larger than the third value (east-most box edge).

If the vertical axis is included, the third and the sixth number are the bottom and the top of the 3-dimensional bounding box.

If a feature has multiple spatial geometry properties, it is the decision of the server whether only a single spatial geometry property is used to determine the extent or all relevant geometries.

datetime: Either a date-time or an interval, open or closed. Date and time expressions adhere to RFC 3339. Open intervals are expressed using double-dots.

Examples:

Only features that have a temporal property that intersects the value of datetime are selected.

If a feature has multiple temporal properties, it is the decision of the server whether only a single temporal property is used to determine the extent or all relevant temporal properties.

Example responses

200 Response

{
  "type": "FeatureCollection",
  "features": [
    {
      "stac_version": "0.8.1",
      "stac_extensions": [
        "eo",
        "https://example.com/cs-extension/1.0/schema.json"
      ],
      "type": "Feature",
      "id": "CS3-20160503_132131_05",
      "bbox": [
        -122.59750209,
        37.48803556,
        -122.2880486,
        37.613537207
      ],
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [
              -122.308150179,
              37.488035566
            ],
            [
              -122.597502109,
              37.538869539
            ],
            [
              -122.576687533,
              37.613537207
            ],
            [
              -122.2880486,
              37.562818007
            ],
            [
              -122.308150179,
              37.488035566
            ]
          ]
        ]
      },
      "properties": {
        "datetime": "2016-05-03T13:22:30.040Z",
        "title": "A CS3 item",
        "license": "PDDL-1.0",
        "providers": [
          {
            "name": "CoolSat",
            "roles": [
              "producer",
              "licensor"
            ],
            "url": "https://cool-sat.com/"
          }
        ],
        "eo:sun_azimuth": 168.7,
        "eo:cloud_cover": 0.12,
        "eo:off_nadir": 1.4,
        "eo:platform": "coolsat2",
        "eo:instrument": "cool_sensor_v1",
        "eo:bands": [],
        "eo:sun_elevation": 33.4,
        "eo:gsd": 0.512
      },
      "collection": "CS3",
      "links": [
        {
          "rel": "self",
          "href": "http://cool-sat.com/collections/CS3/items/20160503_132130_04"
        },
        {
          "rel": "root",
          "href": "http://cool-sat.com/collections"
        },
        {
          "rel": "parent",
          "href": "http://cool-sat.com/collections/CS3"
        },
        {
          "rel": "collection",
          "href": "http://cool-sat.com/collections/CS3"
        }
      ],
      "assets": {
        "analytic": {
          "href": "http://cool-sat.com/static-catalog/CS3/20160503_132130_04/analytic.tif",
          "title": "4-Band Analytic"
        },
        "thumbnail": {
          "href": "http://cool-sat.com/static-catalog/CS3/20160503_132130_04/thumbnail.png",
          "title": "Thumbnail"
        }
      }
    }
  ],
  "links": [
    {
      "href": "http://www.geoserver.example/stac/naip/child/catalog.json",
      "rel": "child",
      "type": "application/geo+json",
      "hreflang": "en",
      "title": "NAIP Child Catalog",
      "length": 0
    }
  ],
  "timeStamp": "2017-08-17T08:05:32Z",
  "numberMatched": 127,
  "numberReturned": 10
}

Responses

Status Meaning Description Schema
200 OK The response is a document consisting of features in the collection. string
400 Bad Request A query parameter has an invalid value. string
401 Unauthorized Access token is missing or invalid string
404 Not Found The requested URI was not found. None
500 Internal Server Error A server error occurred. string

getFeature

Code samples

# You can also use wget
curl -X GET https://api.radiant.earth/mlhub/v1/collections/{collectionId}/items/{featureId} \
  -H 'Accept: application/geo+json' \
  -H 'Authorization: Bearer {access-token}'

GET https://api.radiant.earth/mlhub/v1/collections/{collectionId}/items/{featureId} HTTP/1.1
Host: api.radiant.earth
Accept: application/geo+json

var headers = {
  'Accept':'application/geo+json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: 'https://api.radiant.earth/mlhub/v1/collections/{collectionId}/items/{featureId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/geo+json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://api.radiant.earth/mlhub/v1/collections/{collectionId}/items/{featureId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/geo+json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://api.radiant.earth/mlhub/v1/collections/{collectionId}/items/{featureId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/geo+json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api.radiant.earth/mlhub/v1/collections/{collectionId}/items/{featureId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://api.radiant.earth/mlhub/v1/collections/{collectionId}/items/{featureId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/geo+json"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.radiant.earth/mlhub/v1/collections/{collectionId}/items/{featureId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /collections/{collectionId}/items/{featureId}

Fetch a Single Feature

Fetch the feature with id featureId in the feature collection with id collectionId.

Use content negotiation to request HTML or GeoJSON.

Parameters

Name In Type Required Description
collectionId path string true local identifier of a collection
featureId path string true local identifier of a feature

Example responses

200 Response

{
  "stac_version": "0.8.1",
  "stac_extensions": [
    "eo",
    "https://example.com/cs-extension/1.0/schema.json"
  ],
  "type": "Feature",
  "id": "CS3-20160503_132131_05",
  "bbox": [
    -122.59750209,
    37.48803556,
    -122.2880486,
    37.613537207
  ],
  "geometry": {
    "type": "Polygon",
    "coordinates": [
      [
        [
          -122.308150179,
          37.488035566
        ],
        [
          -122.597502109,
          37.538869539
        ],
        [
          -122.576687533,
          37.613537207
        ],
        [
          -122.2880486,
          37.562818007
        ],
        [
          -122.308150179,
          37.488035566
        ]
      ]
    ]
  },
  "properties": {
    "datetime": "2016-05-03T13:22:30.040Z",
    "title": "A CS3 item",
    "license": "PDDL-1.0",
    "providers": [
      {
        "name": "CoolSat",
        "roles": [
          "producer",
          "licensor"
        ],
        "url": "https://cool-sat.com/"
      }
    ],
    "eo:sun_azimuth": 168.7,
    "eo:cloud_cover": 0.12,
    "eo:off_nadir": 1.4,
    "eo:platform": "coolsat2",
    "eo:instrument": "cool_sensor_v1",
    "eo:bands": [],
    "eo:sun_elevation": 33.4,
    "eo:gsd": 0.512
  },
  "collection": "CS3",
  "links": [
    {
      "rel": "self",
      "href": "http://cool-sat.com/collections/CS3/items/20160503_132130_04"
    },
    {
      "rel": "root",
      "href": "http://cool-sat.com/collections"
    },
    {
      "rel": "parent",
      "href": "http://cool-sat.com/collections/CS3"
    },
    {
      "rel": "collection",
      "href": "http://cool-sat.com/collections/CS3"
    }
  ],
  "assets": {
    "analytic": {
      "href": "http://cool-sat.com/static-catalog/CS3/20160503_132130_04/analytic.tif",
      "title": "4-Band Analytic"
    },
    "thumbnail": {
      "href": "http://cool-sat.com/static-catalog/CS3/20160503_132130_04/thumbnail.png",
      "title": "Thumbnail"
    }
  }
}

Responses

Status Meaning Description Schema
200 OK Fetch the feature with id featureId in the feature collection with id collectionId string
401 Unauthorized Access token is missing or invalid string
404 Not Found The requested URI was not found. None
500 Internal Server Error A server error occurred. string

STAC

Extension to OGC API - Features to support STAC metadata model and search API

get__stac

Code samples

# You can also use wget
curl -X GET https://api.radiant.earth/mlhub/v1/stac \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

GET https://api.radiant.earth/mlhub/v1/stac HTTP/1.1
Host: api.radiant.earth
Accept: application/json

var headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: 'https://api.radiant.earth/mlhub/v1/stac',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://api.radiant.earth/mlhub/v1/stac',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://api.radiant.earth/mlhub/v1/stac',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api.radiant.earth/mlhub/v1/stac', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://api.radiant.earth/mlhub/v1/stac");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.radiant.earth/mlhub/v1/stac", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /stac

STAC Root

Returns the root STAC Catalog or STAC Collection that is the entry point for users to browse with STAC Browser or for search engines to crawl. This can either return a single STAC Collection or more commonly a STAC catalog that usually lists sub-catalogs of STAC Collections, i.e. a simple catalog that lists all collections available through the API.

Example responses

200 Response

{
  "stac_version": "0.8.1",
  "stac_extensions": [
    "http://example.com"
  ],
  "id": "naip",
  "title": "NAIP Imagery",
  "description": "Catalog of NAIP Imagery.",
  "summaries": {
    "property1": [
      null
    ],
    "property2": [
      null
    ]
  },
  "links": [
    {
      "href": "http://www.geoserver.example/stac/naip/child/catalog.json",
      "rel": "child",
      "type": "application/geo+json",
      "hreflang": "en",
      "title": "NAIP Child Catalog",
      "length": 0
    }
  ]
}

401 Response

Responses

Status Meaning Description Schema
200 OK A catalog JSON definition. Used as an entry point for a crawler. catalogDefinition
401 Unauthorized Access token is missing or invalid string

getSearchSTAC

Code samples

# You can also use wget
curl -X GET https://api.radiant.earth/mlhub/v1/stac/search \
  -H 'Accept: application/geo+json' \
  -H 'Authorization: Bearer {access-token}'

GET https://api.radiant.earth/mlhub/v1/stac/search HTTP/1.1
Host: api.radiant.earth
Accept: application/geo+json

var headers = {
  'Accept':'application/geo+json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: 'https://api.radiant.earth/mlhub/v1/stac/search',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/geo+json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://api.radiant.earth/mlhub/v1/stac/search',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/geo+json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get 'https://api.radiant.earth/mlhub/v1/stac/search',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/geo+json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api.radiant.earth/mlhub/v1/stac/search', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://api.radiant.earth/mlhub/v1/stac/search");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/geo+json"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.radiant.earth/mlhub/v1/stac/search", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /stac/search

Search STAC Items with Simple Filtering

Retrieve Items matching filters. Intended as a shorthand API for simple queries.

This method is optional, but you MUST implement POST /stac/search if you want to implement this method.

Parameters

Name In Type Required Description
bbox query array[number] false Only features that have a geometry that intersects the bounding box are selected.
datetime query string false Either a date-time or an interval, open or closed. Date and time expressions
limit query integer false The optional limit parameter limits the number of items that are presented in the response document.
next query next false The token to retrieve the next set of results, e.g., offset, page, continuation token
ids query ids false Array of Item ids to return. All other filter parameters that further restrict the number of
collections query collectionsArray false Array of Collection IDs to include in the search for items.

Detailed descriptions

bbox: Only features that have a geometry that intersects the bounding box are selected. The bounding box is provided as four or six numbers, depending on whether the coordinate reference system includes a vertical axis (height or depth):

The coordinate reference system of the values is WGS 84 longitude/latitude (http://www.opengis.net/def/crs/OGC/1.3/CRS84) unless a different coordinate reference system is specified in the parameter bbox-crs.

For WGS 84 longitude/latitude the values are in most cases the sequence of minimum longitude, minimum latitude, maximum longitude and maximum latitude. However, in cases where the box spans the antimeridian the first value (west-most box edge) is larger than the third value (east-most box edge).

If the vertical axis is included, the third and the sixth number are the bottom and the top of the 3-dimensional bounding box.

If a feature has multiple spatial geometry properties, it is the decision of the server whether only a single spatial geometry property is used to determine the extent or all relevant geometries.

datetime: Either a date-time or an interval, open or closed. Date and time expressions adhere to RFC 3339. Open intervals are expressed using double-dots.

Examples:

Only features that have a temporal property that intersects the value of datetime are selected.

If a feature has multiple temporal properties, it is the decision of the server whether only a single temporal property is used to determine the extent or all relevant temporal properties.

limit: The optional limit parameter limits the number of items that are presented in the response document.

Only items are counted that are on the first level of the collection in the response document. Nested objects contained within the explicitly requested items shall not be counted.

Minimum = 1. Maximum = 10000. Default = 10.

ids: Array of Item ids to return. All other filter parameters that further restrict the number of search results (except next and limit) are ignored

collections: Array of Collection IDs to include in the search for items. Only Items in one of the provided Collections will be searched

Example responses

200 Response

{
  "type": "FeatureCollection",
  "features": [
    {
      "stac_version": "0.8.1",
      "stac_extensions": [
        "eo",
        "https://example.com/cs-extension/1.0/schema.json"
      ],
      "type": "Feature",
      "id": "CS3-20160503_132131_05",
      "bbox": [
        -122.59750209,
        37.48803556,
        -122.2880486,
        37.613537207
      ],
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [
              -122.308150179,
              37.488035566
            ],
            [
              -122.597502109,
              37.538869539
            ],
            [
              -122.576687533,
              37.613537207
            ],
            [
              -122.2880486,
              37.562818007
            ],
            [
              -122.308150179,
              37.488035566
            ]
          ]
        ]
      },
      "properties": {
        "datetime": "2016-05-03T13:22:30.040Z",
        "title": "A CS3 item",
        "license": "PDDL-1.0",
        "providers": [
          {
            "name": "CoolSat",
            "roles": [
              "producer",
              "licensor"
            ],
            "url": "https://cool-sat.com/"
          }
        ],
        "eo:sun_azimuth": 168.7,
        "eo:cloud_cover": 0.12,
        "eo:off_nadir": 1.4,
        "eo:platform": "coolsat2",
        "eo:instrument": "cool_sensor_v1",
        "eo:bands": [],
        "eo:sun_elevation": 33.4,
        "eo:gsd": 0.512
      },
      "collection": "CS3",
      "links": [
        {
          "rel": "self",
          "href": "http://cool-sat.com/collections/CS3/items/20160503_132130_04"
        },
        {
          "rel": "root",
          "href": "http://cool-sat.com/collections"
        },
        {
          "rel": "parent",
          "href": "http://cool-sat.com/collections/CS3"
        },
        {
          "rel": "collection",
          "href": "http://cool-sat.com/collections/CS3"
        }
      ],
      "assets": {
        "analytic": {
          "href": "http://cool-sat.com/static-catalog/CS3/20160503_132130_04/analytic.tif",
          "title": "4-Band Analytic"
        },
        "thumbnail": {
          "href": "http://cool-sat.com/static-catalog/CS3/20160503_132130_04/thumbnail.png",
          "title": "Thumbnail"
        }
      }
    }
  ],
  "links": [
    {
      "rel": "next",
      "href": "http://api.cool-sat.com/stac/search?next=ANsXtp9mrqN0yrKWhf-y2PUpHRLQb1GT-mtxNcXou8TwkXhi1Jbk"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK A feature collection. string
401 Unauthorized Access token is missing or invalid string
default Default An error occurred. string

postSearchSTAC

Code samples

# You can also use wget
curl -X POST https://api.radiant.earth/mlhub/v1/stac/search \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/geo+json' \
  -H 'Authorization: Bearer {access-token}'

POST https://api.radiant.earth/mlhub/v1/stac/search HTTP/1.1
Host: api.radiant.earth
Content-Type: application/json
Accept: application/geo+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/geo+json',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: 'https://api.radiant.earth/mlhub/v1/stac/search',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "bbox": [
    -110,
    39.5,
    -105,
    40.5
  ],
  "datetime": "2018-02-12T00:00:00Z/2018-03-18T12:31:12Z",
  "intersects": null,
  "next": null,
  "collections": [
    "string"
  ],
  "ids": [
    "string"
  ],
  "limit": 10
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/geo+json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://api.radiant.earth/mlhub/v1/stac/search',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/geo+json',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post 'https://api.radiant.earth/mlhub/v1/stac/search',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/geo+json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('https://api.radiant.earth/mlhub/v1/stac/search', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://api.radiant.earth/mlhub/v1/stac/search");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/geo+json"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://api.radiant.earth/mlhub/v1/stac/search", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /stac/search

Search STAC Items with Full-Featured Filtering

retrieve items matching filters. Intended as the standard, full-featured query API.

This method is mandatory to implement if GET /stac/search is implemented. If this endpoint is implemented on a server, it is required to add a link with rel set to search to the links array in GET /stac that refers to this endpoint.

Body parameter

{
  "bbox": [
    -110,
    39.5,
    -105,
    40.5
  ],
  "datetime": "2018-02-12T00:00:00Z/2018-03-18T12:31:12Z",
  "intersects": null,
  "next": null,
  "collections": [
    "string"
  ],
  "ids": [
    "string"
  ],
  "limit": 10
}

Parameters

Name In Type Required Description
body body searchBody false none

Example responses

200 Response

{
  "type": "FeatureCollection",
  "features": [
    {
      "stac_version": "0.8.1",
      "stac_extensions": [
        "eo",
        "https://example.com/cs-extension/1.0/schema.json"
      ],
      "type": "Feature",
      "id": "CS3-20160503_132131_05",
      "bbox": [
        -122.59750209,
        37.48803556,
        -122.2880486,
        37.613537207
      ],
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [
              -122.308150179,
              37.488035566
            ],
            [
              -122.597502109,
              37.538869539
            ],
            [
              -122.576687533,
              37.613537207
            ],
            [
              -122.2880486,
              37.562818007
            ],
            [
              -122.308150179,
              37.488035566
            ]
          ]
        ]
      },
      "properties": {
        "datetime": "2016-05-03T13:22:30.040Z",
        "title": "A CS3 item",
        "license": "PDDL-1.0",
        "providers": [
          {
            "name": "CoolSat",
            "roles": [
              "producer",
              "licensor"
            ],
            "url": "https://cool-sat.com/"
          }
        ],
        "eo:sun_azimuth": 168.7,
        "eo:cloud_cover": 0.12,
        "eo:off_nadir": 1.4,
        "eo:platform": "coolsat2",
        "eo:instrument": "cool_sensor_v1",
        "eo:bands": [],
        "eo:sun_elevation": 33.4,
        "eo:gsd": 0.512
      },
      "collection": "CS3",
      "links": [
        {
          "rel": "self",
          "href": "http://cool-sat.com/collections/CS3/items/20160503_132130_04"
        },
        {
          "rel": "root",
          "href": "http://cool-sat.com/collections"
        },
        {
          "rel": "parent",
          "href": "http://cool-sat.com/collections/CS3"
        },
        {
          "rel": "collection",
          "href": "http://cool-sat.com/collections/CS3"
        }
      ],
      "assets": {
        "analytic": {
          "href": "http://cool-sat.com/static-catalog/CS3/20160503_132130_04/analytic.tif",
          "title": "4-Band Analytic"
        },
        "thumbnail": {
          "href": "http://cool-sat.com/static-catalog/CS3/20160503_132130_04/thumbnail.png",
          "title": "Thumbnail"
        }
      }
    }
  ],
  "links": [
    {
      "rel": "next",
      "href": "http://api.cool-sat.com/stac/search?next=ANsXtp9mrqN0yrKWhf-y2PUpHRLQb1GT-mtxNcXou8TwkXhi1Jbk"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK A feature collection. string
401 Unauthorized Access token is missing or invalid string
default Default An error occurred. string

Schemas

collection

{
  "stac_version": "0.8.1",
  "stac_extensions": [],
  "id": "Sentinel-2",
  "title": "Sentinel-2 MSI: MultiSpectral Instrument, Level-1C",
  "description": "Sentinel-2 is a wide-swath, high-resolution, multi-spectral\nimaging mission...\n",
  "license": "proprietary",
  "keywords": [
    "copernicus",
    "esa",
    "eu",
    "msi",
    "radiance",
    "sentinel"
  ],
  "providers": [
    {
      "name": "ESA",
      "roles": [
        "producer",
        "licensor"
      ],
      "url": "https://sentinel.esa.int/web/sentinel/user-guides/sentinel-2-msi"
    }
  ],
  "extent": {
    "spatial": {
      "bbox": [
        [
          -180,
          -56,
          180,
          83
        ]
      ]
    },
    "temporal": {
      "interval": [
        [
          "2015-06-23T00:00:00Z",
          "2019-07-10T13:44:56Z"
        ]
      ]
    }
  },
  "summaries": {
    "datetime": {
      "min": "2015-06-23T00:00:00Z",
      "max": "2019-07-10T13:44:56Z"
    },
    "sci:citation": [
      "Copernicus Sentinel data [Year]"
    ],
    "eo:gsd": [
      10,
      30,
      60
    ],
    "eo:platform": [
      "sentinel-2a",
      "sentinel-2b"
    ],
    "eo:constellation": [
      "sentinel-2"
    ],
    "eo:instrument": [
      "msi"
    ],
    "eo:off_nadir": {
      "min": 0,
      "max": 100
    },
    "eo:sun_elevation": {
      "min": 6.78,
      "max": 89.9
    },
    "eo:bands": [
      [
        {
          "name": "B1",
          "common_name": "coastal",
          "center_wavelength": 4.439,
          "gsd": 60
        },
        {
          "name": "B2",
          "common_name": "blue",
          "center_wavelength": 4.966,
          "gsd": 10
        },
        {
          "name": "B3",
          "common_name": "green",
          "center_wavelength": 5.6,
          "gsd": 10
        },
        {
          "name": "B4",
          "common_name": "red",
          "center_wavelength": 6.645,
          "gsd": 10
        },
        {
          "name": "B5",
          "center_wavelength": 7.039,
          "gsd": 20
        },
        {
          "name": "B6",
          "center_wavelength": 7.402,
          "gsd": 20
        },
        {
          "name": "B7",
          "center_wavelength": 7.825,
          "gsd": 20
        },
        {
          "name": "B8",
          "common_name": "nir",
          "center_wavelength": 8.351,
          "gsd": 10
        },
        {
          "name": "B8A",
          "center_wavelength": 8.648,
          "gsd": 20
        },
        {
          "name": "B9",
          "center_wavelength": 9.45,
          "gsd": 60
        },
        {
          "name": "B10",
          "center_wavelength": 1.3735,
          "gsd": 60
        },
        {
          "name": "B11",
          "common_name": "swir16",
          "center_wavelength": 1.6137,
          "gsd": 20
        },
        {
          "name": "B12",
          "common_name": "swir22",
          "center_wavelength": 2.2024,
          "gsd": 20
        }
      ]
    ]
  },
  "links": [
    {
      "rel": "self",
      "href": "http://cool-sat.com/collections/Sentinel-2"
    },
    {
      "rel": "root",
      "href": "http://cool-sat.com/collections"
    },
    {
      "rel": "license",
      "href": "https://scihub.copernicus.eu/twiki/pub/SciHubWebPortal/TermsConditions/Sentinel_Data_Terms_and_Conditions.pdf",
      "title": "Legal notice on the use of Copernicus Sentinel Data and Service Information"
    }
  ]
}

Properties

Name Type Required Restrictions Description
id string true none identifier of the collection used, for example, in URIs
title string false none human readable title of the collection
description string true none Detailed multi-line description to fully explain the collection. CommonMark 0.29 syntax MAY be used for rich text representation.
links [link] true none none
extent extent true none The extent of the features in the collection. In the Core only spatial and temporal extents are specified. Extensions may add additional members to represent other extents, for example, thermal or pressure ranges.
itemType string false none indicator about the type of the items in the collection (the default value is 'feature').
crs [string] false none the list of coordinate reference systems supported by the service
stac_version stac_version true none none
stac_extensions stac_extensions false none none
keywords [string] false none List of keywords describing the collection.
version string false none Version of the collection.
license license true none License(s) of the data as a SPDX License identifier or expression. Alternatively, use proprietary if the license is not on the SPDX license list or various if multiple licenses apply. In these two cases links to the license texts SHOULD be added, see the license link relation type. Non-SPDX licenses SHOULD add a link to the license text with the license relation in the links section. The license text MUST NOT be provided as a value of this field. If there is no public license URL available, it is RECOMMENDED to host the license text and link to it.
providers providers false none 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.
summaries summaries false none Summaries are either a unique set of all available values or statistics. Statistics by default only specify the range (minimum and maximum values), but can optionally be accompanied by additional statistical values. The range can specify the potential range of values, but it is recommended to be as precise as possible. The set of values must contain at least one element and it is strongly recommended to list all values. It is recommended to list as many properties as reasonable so that consumers get a full overview of the Collection. Properties that are covered by the Collection specification (e.g. providers and license) may not be repeated in the summaries.

collections

{
  "links": [
    {
      "href": "http://www.geoserver.example/stac/naip/child/catalog.json",
      "rel": "child",
      "type": "application/geo+json",
      "hreflang": "en",
      "title": "NAIP Child Catalog",
      "length": 0
    }
  ],
  "collections": [
    {
      "stac_version": "0.8.1",
      "stac_extensions": [],
      "id": "Sentinel-2",
      "title": "Sentinel-2 MSI: MultiSpectral Instrument, Level-1C",
      "description": "Sentinel-2 is a wide-swath, high-resolution, multi-spectral\nimaging mission...\n",
      "license": "proprietary",
      "keywords": [
        "copernicus",
        "esa",
        "eu",
        "msi",
        "radiance",
        "sentinel"
      ],
      "providers": [
        {
          "name": "ESA",
          "roles": [
            "producer",
            "licensor"
          ],
          "url": "https://sentinel.esa.int/web/sentinel/user-guides/sentinel-2-msi"
        }
      ],
      "extent": {
        "spatial": {
          "bbox": [
            [
              -180,
              -56,
              180,
              83
            ]
          ]
        },
        "temporal": {
          "interval": [
            [
              "2015-06-23T00:00:00Z",
              "2019-07-10T13:44:56Z"
            ]
          ]
        }
      },
      "summaries": {
        "datetime": {
          "min": "2015-06-23T00:00:00Z",
          "max": "2019-07-10T13:44:56Z"
        },
        "sci:citation": [
          "Copernicus Sentinel data [Year]"
        ],
        "eo:gsd": [
          10,
          30,
          60
        ],
        "eo:platform": [
          "sentinel-2a",
          "sentinel-2b"
        ],
        "eo:constellation": [
          "sentinel-2"
        ],
        "eo:instrument": [
          "msi"
        ],
        "eo:off_nadir": {
          "min": 0,
          "max": 100
        },
        "eo:sun_elevation": {
          "min": 6.78,
          "max": 89.9
        },
        "eo:bands": [
          [
            {
              "name": "B1",
              "common_name": "coastal",
              "center_wavelength": 4.439,
              "gsd": 60
            },
            {
              "name": "B2",
              "common_name": "blue",
              "center_wavelength": 4.966,
              "gsd": 10
            },
            {
              "name": "B3",
              "common_name": "green",
              "center_wavelength": 5.6,
              "gsd": 10
            },
            {
              "name": "B4",
              "common_name": "red",
              "center_wavelength": 6.645,
              "gsd": 10
            },
            {
              "name": "B5",
              "center_wavelength": 7.039,
              "gsd": 20
            },
            {
              "name": "B6",
              "center_wavelength": 7.402,
              "gsd": 20
            },
            {
              "name": "B7",
              "center_wavelength": 7.825,
              "gsd": 20
            },
            {
              "name": "B8",
              "common_name": "nir",
              "center_wavelength": 8.351,
              "gsd": 10
            },
            {
              "name": "B8A",
              "center_wavelength": 8.648,
              "gsd": 20
            },
            {
              "name": "B9",
              "center_wavelength": 9.45,
              "gsd": 60
            },
            {
              "name": "B10",
              "center_wavelength": 1.3735,
              "gsd": 60
            },
            {
              "name": "B11",
              "common_name": "swir16",
              "center_wavelength": 1.6137,
              "gsd": 20
            },
            {
              "name": "B12",
              "common_name": "swir22",
              "center_wavelength": 2.2024,
              "gsd": 20
            }
          ]
        ]
      },
      "links": [
        {
          "rel": "self",
          "href": "http://cool-sat.com/collections/Sentinel-2"
        },
        {
          "rel": "root",
          "href": "http://cool-sat.com/collections"
        },
        {
          "rel": "license",
          "href": "https://scihub.copernicus.eu/twiki/pub/SciHubWebPortal/TermsConditions/Sentinel_Data_Terms_and_Conditions.pdf",
          "title": "Legal notice on the use of Copernicus Sentinel Data and Service Information"
        }
      ]
    }
  ]
}

Properties

Name Type Required Restrictions Description
links [link] true none none
collections [collection] true none none

confClasses

{
  "conformsTo": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
conformsTo [string] true none none

exception

{
  "code": 500,
  "message": "An error occured"
}

Information about the exception: an error code plus an optional description.

Properties

Name Type Required Restrictions Description
code integer false none none
message string false none none

extent

{
  "spatial": {
    "bbox": [
      [
        -180,
        -90,
        180,
        90
      ]
    ],
    "crs": "http://www.opengis.net/def/crs/OGC/1.3/CRS84"
  },
  "temporal": {
    "interval": [
      [
        "2011-11-11T12:22:11Z",
        null
      ]
    ],
    "trs": "http://www.opengis.net/def/uom/ISO-8601/0/Gregorian"
  }
}

The extent of the features in the collection. In the Core only spatial and temporal extents are specified. Extensions may add additional members to represent other extents, for example, thermal or pressure ranges.

Properties

Name Type Required Restrictions Description
spatial object true none The spatial extent of the features in the collection.
» bbox [array] true none One or more bounding boxes that describe the spatial extent of the dataset. In the Core only a single bounding box is supported. Extensions may support additional areas. If multiple areas are provided, the union of the bounding boxes describes the spatial extent.
» crs string false none Coordinate reference system of the coordinates in the spatial extent (property bbox). The default reference system is WGS 84 longitude/latitude. In the Core this is the only supported coordinate reference system. Extensions may support additional coordinate reference systems and add additional enum values.
temporal object true none The temporal extent of the features in the collection.
» interval [array] true none One or more time intervals that describe the temporal extent of the dataset. The value null is supported and indicates an open time intervall. In the Core only a single time interval is supported. Extensions may support multiple intervals. If multiple intervals are provided, the union of the intervals describes the temporal extent.
» trs string false none Coordinate reference system of the coordinates in the temporal extent (property interval). The default reference system is the Gregorian calendar. In the Core this is the only supported temporal reference system. Extensions may support additional temporal reference systems and add additional enum values.

Enumerated Values

Property Value
crs http://www.opengis.net/def/crs/OGC/1.3/CRS84
trs http://www.opengis.net/def/uom/ISO-8601/0/Gregorian

featureCollectionGeoJSON

{
  "type": "FeatureCollection",
  "features": [
    {
      "stac_version": "0.8.1",
      "stac_extensions": [
        "eo",
        "https://example.com/cs-extension/1.0/schema.json"
      ],
      "type": "Feature",
      "id": "CS3-20160503_132131_05",
      "bbox": [
        -122.59750209,
        37.48803556,
        -122.2880486,
        37.613537207
      ],
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [
              -122.308150179,
              37.488035566
            ],
            [
              -122.597502109,
              37.538869539
            ],
            [
              -122.576687533,
              37.613537207
            ],
            [
              -122.2880486,
              37.562818007
            ],
            [
              -122.308150179,
              37.488035566
            ]
          ]
        ]
      },
      "properties": {
        "datetime": "2016-05-03T13:22:30.040Z",
        "title": "A CS3 item",
        "license": "PDDL-1.0",
        "providers": [
          {
            "name": "CoolSat",
            "roles": [
              "producer",
              "licensor"
            ],
            "url": "https://cool-sat.com/"
          }
        ],
        "eo:sun_azimuth": 168.7,
        "eo:cloud_cover": 0.12,
        "eo:off_nadir": 1.4,
        "eo:platform": "coolsat2",
        "eo:instrument": "cool_sensor_v1",
        "eo:bands": [],
        "eo:sun_elevation": 33.4,
        "eo:gsd": 0.512
      },
      "collection": "CS3",
      "links": [
        {
          "rel": "self",
          "href": "http://cool-sat.com/collections/CS3/items/20160503_132130_04"
        },
        {
          "rel": "root",
          "href": "http://cool-sat.com/collections"
        },
        {
          "rel": "parent",
          "href": "http://cool-sat.com/collections/CS3"
        },
        {
          "rel": "collection",
          "href": "http://cool-sat.com/collections/CS3"
        }
      ],
      "assets": {
        "analytic": {
          "href": "http://cool-sat.com/static-catalog/CS3/20160503_132130_04/analytic.tif",
          "title": "4-Band Analytic"
        },
        "thumbnail": {
          "href": "http://cool-sat.com/static-catalog/CS3/20160503_132130_04/thumbnail.png",
          "title": "Thumbnail"
        }
      }
    }
  ],
  "links": [
    {
      "href": "http://www.geoserver.example/stac/naip/child/catalog.json",
      "rel": "child",
      "type": "application/geo+json",
      "hreflang": "en",
      "title": "NAIP Child Catalog",
      "length": 0
    }
  ],
  "timeStamp": "2017-08-17T08:05:32Z",
  "numberMatched": 127,
  "numberReturned": 10
}

Properties

Name Type Required Restrictions Description
type string true none none
features [item] true none [A GeoJSON Feature augmented with foreign members that contain values relevant to a STAC entity]
links [link] false none none
timeStamp timeStamp false none This property indicates the time and date when the response was generated.
numberMatched numberMatched false none The number of features of the feature type that match the selection parameters like bbox.
numberReturned numberReturned false none The number of features in the feature collection. A server may omit this information in a response, if the information about the number of features is not known or difficult to compute. If the value is provided, the value shall be identical to the number of items in the "features" array.

Enumerated Values

Property Value
type FeatureCollection

featureGeoJSON

{
  "type": "Feature",
  "geometry": {
    "type": "Point",
    "coordinates": [
      0,
      0
    ]
  },
  "properties": {},
  "id": "string",
  "links": [
    {
      "href": "http://www.geoserver.example/stac/naip/child/catalog.json",
      "rel": "child",
      "type": "application/geo+json",
      "hreflang": "en",
      "title": "NAIP Child Catalog",
      "length": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
type string true none none
geometry geometryGeoJSON true none none
properties object|null true none none
id any false none none

oneOf

Name Type Required Restrictions Description
» anonymous string false none none

xor

Name Type Required Restrictions Description
» anonymous integer false none none

continued

Name Type Required Restrictions Description
links [link] false none none

Enumerated Values

Property Value
type Feature

geometryGeoJSON

{
  "type": "Point",
  "coordinates": [
    0,
    0
  ]
}

Properties

oneOf

Name Type Required Restrictions Description
anonymous pointGeoJSON false none none

xor

Name Type Required Restrictions Description
anonymous multipointGeoJSON false none none

xor

Name Type Required Restrictions Description
anonymous linestringGeoJSON false none none

xor

Name Type Required Restrictions Description
anonymous multilinestringGeoJSON false none none

xor

Name Type Required Restrictions Description
anonymous polygonGeoJSON false none none

xor

Name Type Required Restrictions Description
anonymous multipolygonGeoJSON false none none

xor

Name Type Required Restrictions Description
anonymous geometrycollectionGeoJSON false none none

geometrycollectionGeoJSON

{
  "type": "GeometryCollection",
  "geometries": [
    {
      "type": "Point",
      "coordinates": [
        0,
        0
      ]
    }
  ]
}

Properties

Name Type Required Restrictions Description
type string true none none
geometries [geometryGeoJSON] true none none

Enumerated Values

Property Value
type GeometryCollection

landingPage

{
  "title": "Buildings in Bonn",
  "description": "Access to data about buildings in the city of Bonn via a Web API that conforms to the OGC API Features specification.",
  "links": [
    {
      "href": "http://www.geoserver.example/stac/naip/child/catalog.json",
      "rel": "child",
      "type": "application/geo+json",
      "hreflang": "en",
      "title": "NAIP Child Catalog",
      "length": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
title string false none none
description string false none none
links [link] true none none

linestringGeoJSON

{
  "type": "LineString",
  "coordinates": [
    [
      0,
      0
    ],
    [
      0,
      0
    ]
  ]
}

Properties

Name Type Required Restrictions Description
type string true none none
coordinates [array] true none none

Enumerated Values

Property Value
type LineString

{
  "href": "http://www.geoserver.example/stac/naip/child/catalog.json",
  "rel": "child",
  "type": "application/geo+json",
  "hreflang": "en",
  "title": "NAIP Child Catalog",
  "length": 0
}

Link

Properties

Name Type Required Restrictions Description
href string(url) true none none
rel string true none none
type string false none none
hreflang string false none none
title string false none none
length integer false none none

multilinestringGeoJSON

{
  "type": "MultiLineString",
  "coordinates": [
    [
      [
        0,
        0
      ],
      [
        0,
        0
      ]
    ]
  ]
}

Properties

Name Type Required Restrictions Description
type string true none none
coordinates [array] true none none

Enumerated Values

Property Value
type MultiLineString

multipointGeoJSON

{
  "type": "MultiPoint",
  "coordinates": [
    [
      0,
      0
    ]
  ]
}

Properties

Name Type Required Restrictions Description
type string true none none
coordinates [array] true none none

Enumerated Values

Property Value
type MultiPoint

multipolygonGeoJSON

{
  "type": "MultiPolygon",
  "coordinates": [
    [
      [
        [
          0,
          0
        ],
        [
          0,
          0
        ],
        [
          0,
          0
        ],
        [
          0,
          0
        ]
      ]
    ]
  ]
}

Properties

Name Type Required Restrictions Description
type string true none none
coordinates [array] true none none

Enumerated Values

Property Value
type MultiPolygon

numberMatched

127

The number of features of the feature type that match the selection parameters like bbox.

Properties

Name Type Required Restrictions Description
anonymous integer false none The number of features of the feature type that match the selection parameters like bbox.

numberReturned

10

*The number of features in the feature collection.

A server may omit this information in a response, if the information about the number of features is not known or difficult to compute.

If the value is provided, the value shall be identical to the number of items in the "features" array.*

Properties

Name Type Required Restrictions Description
anonymous integer false none The number of features in the feature collection. A server may omit this information in a response, if the information about the number of features is not known or difficult to compute. If the value is provided, the value shall be identical to the number of items in the "features" array.

pointGeoJSON

{
  "type": "Point",
  "coordinates": [
    0,
    0
  ]
}

Properties

Name Type Required Restrictions Description
type string true none none
coordinates [number] true none none

Enumerated Values

Property Value
type Point

polygonGeoJSON

{
  "type": "Polygon",
  "coordinates": [
    [
      [
        0,
        0
      ],
      [
        0,
        0
      ],
      [
        0,
        0
      ],
      [
        0,
        0
      ]
    ]
  ]
}

Properties

Name Type Required Restrictions Description
type string true none none
coordinates [array] true none none

Enumerated Values

Property Value
type Polygon

timeStamp

"2017-08-17T08:05:32Z"

This property indicates the time and date when the response was generated.

Properties

Name Type Required Restrictions Description
anonymous string(date-time) false none This property indicates the time and date when the response was generated.

license

"Apache-2.0"

*License(s) of the data as a SPDX License identifier or expression. Alternatively, use proprietary if the license is not on the SPDX license list or various if multiple licenses apply. In these two cases links to the license texts SHOULD be added, see the license link relation type.

Non-SPDX licenses SHOULD add a link to the license text with the license relation in the links section. The license text MUST NOT be provided as a value of this field. If there is no public license URL available, it is RECOMMENDED to host the license text and link to it.*

Properties

Name Type Required Restrictions Description
anonymous string false none License(s) of the data as a SPDX License identifier or expression. Alternatively, use proprietary if the license is not on the SPDX license list or various if multiple licenses apply. In these two cases links to the license texts SHOULD be added, see the license link relation type. Non-SPDX licenses SHOULD add a link to the license text with the license relation in the links section. The license text MUST NOT be provided as a value of this field. If there is no public license URL available, it is RECOMMENDED to host the license text and link to it.

providers

[
  {
    "name": "string",
    "description": "string",
    "roles": [
      "producer"
    ],
    "url": "string"
  }
]

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.

Properties

Name Type Required Restrictions Description
Provider object false none none
» name string true none The name of the organization or the individual.
» description string false none 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] false none Roles of the provider. 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.
» url string(url) false none Homepage on which the provider describes the dataset and publishes contact information.

searchBody

{
  "bbox": [
    -110,
    39.5,
    -105,
    40.5
  ],
  "datetime": "2018-02-12T00:00:00Z/2018-03-18T12:31:12Z",
  "intersects": null,
  "next": null,
  "collections": [
    "string"
  ],
  "ids": [
    "string"
  ],
  "limit": 10
}

The search criteria

Properties

allOf

Name Type Required Restrictions Description
anonymous bboxFilter false none Only return items that intersect the provided bounding box.

and

Name Type Required Restrictions Description
anonymous datetimeFilter false none An object representing a date+time based filter.

and

Name Type Required Restrictions Description
anonymous intersectsFilter false none Only returns items that intersect with the provided polygon.

and

Name Type Required Restrictions Description
anonymous nextFilter false none Only returns the next set of results

and

Name Type Required Restrictions Description
anonymous collectionsFilter false none Only returns the collections specified

and

Name Type Required Restrictions Description
anonymous idsFilter false none Only returns items that match the array of given ids

and

Name Type Required Restrictions Description
anonymous limitFilter false none Only returns maximum number of results (page size)

next

null

The token to retrieve the next set of results, e.g., offset, page, continuation token

Properties

Name Type Required Restrictions Description
anonymous string false none The token to retrieve the next set of results, e.g., offset, page, continuation token

limit

10

The maximum number of results to return (page size). Defaults to 10

Properties

Name Type Required Restrictions Description
anonymous integer false none The maximum number of results to return (page size). Defaults to 10

bbox

[
  -110,
  39.5,
  -105,
  40.5
]

*Only features that have a geometry that intersects the bounding box are selected. The bounding box is provided as four or six numbers, depending on whether the coordinate reference system includes a vertical axis (elevation or depth):

The coordinate reference system of the values is WGS84 longitude/latitude (http://www.opengis.net/def/crs/OGC/1.3/CRS84) unless a different coordinate reference system is specified in the parameter bbox-crs.

For WGS84 longitude/latitude the values are in most cases the sequence of minimum longitude, minimum latitude, maximum longitude and maximum latitude. However, in cases where the box spans the antimeridian the first value (west-most box edge) is larger than the third value (east-most box edge).

If a feature has multiple spatial geometry properties, it is the decision of the server whether only a single spatial geometry property is used to determine the extent or all relevant geometries. *

Properties

None

bboxFilter

{
  "bbox": [
    -110,
    39.5,
    -105,
    40.5
  ]
}

Only return items that intersect the provided bounding box.

Properties

Name Type Required Restrictions Description
bbox bbox false none Only features that have a geometry that intersects the bounding box are selected. The bounding box is provided as four or six numbers, depending on whether the coordinate reference system includes a vertical axis (elevation or depth): * Lower left corner, coordinate axis 1 * Lower left corner, coordinate axis 2 * Lower left corner, coordinate axis 3 (optional) * Upper right corner, coordinate axis 1 * Upper right corner, coordinate axis 2 * Upper right corner, coordinate axis 3 (optional) The coordinate reference system of the values is WGS84 longitude/latitude (http://www.opengis.net/def/crs/OGC/1.3/CRS84) unless a different coordinate reference system is specified in the parameter bbox-crs. For WGS84 longitude/latitude the values are in most cases the sequence of minimum longitude, minimum latitude, maximum longitude and maximum latitude. However, in cases where the box spans the antimeridian the first value (west-most box edge) is larger than the third value (east-most box edge). If a feature has multiple spatial geometry properties, it is the decision of the server whether only a single spatial geometry property is used to determine the extent or all relevant geometries.

collectionsArray

[
  "string"
]

*Array of Collection IDs to include in the search for items. Only Items in one of the provided Collections will be searched *

Properties

None

ids

[
  "string"
]

*Array of Item ids to return. All other filter parameters that further restrict the number of search results (except next and limit) are ignored *

Properties

None

datetimeFilter

{
  "datetime": "2018-02-12T00:00:00Z/2018-03-18T12:31:12Z"
}

An object representing a date+time based filter.

Properties

Name Type Required Restrictions Description
datetime datetime false none Either a date-time or an interval, open or closed. Date and time expressions adhere to RFC 3339. Open intervals are expressed using double-dots. Examples: * A date-time: "2018-02-12T23:20:50Z" * A closed interval: "2018-02-12T00:00:00Z/2018-03-18T12:31:12Z" * Open intervals: "2018-02-12T00:00:00Z/.." or "../2018-03-18T12:31:12Z" Only features that have a temporal property that intersects the value of datetime are selected. If a feature has multiple temporal properties, it is the decision of the server whether only a single temporal property is used to determine the extent or all relevant temporal properties.

intersectsFilter

{
  "intersects": null
}

Only returns items that intersect with the provided polygon.

Properties

Name Type Required Restrictions Description
intersects https://geojson.org/schema/Geometry.json false none none

limitFilter

{
  "limit": 10
}

Only returns maximum number of results (page size)

Properties

Name Type Required Restrictions Description
limit limit false none The maximum number of results to return (page size). Defaults to 10

nextFilter

{
  "next": null
}

Only returns the next set of results

Properties

Name Type Required Restrictions Description
next next false none The token to retrieve the next set of results, e.g., offset, page, continuation token

idsFilter

{
  "ids": [
    "string"
  ]
}

Only returns items that match the array of given ids

Properties

Name Type Required Restrictions Description
ids ids false none Array of Item ids to return. All other filter parameters that further restrict the number of search results (except next and limit) are ignored

collectionsFilter

{
  "collections": [
    "string"
  ]
}

Only returns the collections specified

Properties

Name Type Required Restrictions Description
collections collectionsArray false none Array of Collection IDs to include in the search for items. Only Items in one of the provided Collections will be searched

error

{
  "code": 401,
  "message": "Auth token invalid"
}

Error Response

Properties

Name Type Required Restrictions Description
code integer false none none
message string false none none

datetime

"2018-02-12T00:00:00Z/2018-03-18T12:31:12Z"

*Either a date-time or an interval, open or closed. Date and time expressions adhere to RFC 3339. Open intervals are expressed using double-dots.

Examples:

Only features that have a temporal property that intersects the value of datetime are selected.

If a feature has multiple temporal properties, it is the decision of the server whether only a single temporal property is used to determine the extent or all relevant temporal properties.*

Properties

Name Type Required Restrictions Description
anonymous string false none Either a date-time or an interval, open or closed. Date and time expressions adhere to RFC 3339. Open intervals are expressed using double-dots. Examples: * A date-time: "2018-02-12T23:20:50Z" * A closed interval: "2018-02-12T00:00:00Z/2018-03-18T12:31:12Z" * Open intervals: "2018-02-12T00:00:00Z/.." or "../2018-03-18T12:31:12Z" Only features that have a temporal property that intersects the value of datetime are selected. If a feature has multiple temporal properties, it is the decision of the server whether only a single temporal property is used to determine the extent or all relevant temporal properties.

stac_version

"0.8.1"

STAC version

Properties

Name Type Required Restrictions Description
STAC version string false none none

stac_extensions

[
  "http://example.com"
]

STAC extensions

Properties

Name Type Required Restrictions Description
STAC extensions [anyOf] false none none

anyOf

Name Type Required Restrictions Description
anonymous string(uri) false none none

or

Name Type Required Restrictions Description
anonymous string false none none

summaries

{
  "property1": [
    null
  ],
  "property2": [
    null
  ]
}

Summaries are either a unique set of all available values or statistics. Statistics by default only specify the range (minimum and maximum values), but can optionally be accompanied by additional statistical values. The range can specify the potential range of values, but it is recommended to be as precise as possible. The set of values must contain at least one element and it is strongly recommended to list all values. It is recommended to list as many properties as reasonable so that consumers get a full overview of the Collection. Properties that are covered by the Collection specification (e.g. providers and license) may not be repeated in the summaries.

Properties

Name Type Required Restrictions Description
additionalProperties any false none none

oneOf

Name Type Required Restrictions Description
» anonymous [any] false none none

xor

Name Type Required Restrictions Description
» anonymous object false none By default, only ranges with a minimum and a maximum value can be specified. Ranges can be specified for ordinal values only, which means they need to have a rank order. Therefore, ranges can only be specified for numbers and some special types of strings. Examples: grades (A to F), dates or times. Implementors are free to add other derived statistical values to the object, for example mean or stddev.
»» min any true none none

anyOf

Name Type Required Restrictions Description
»»» anonymous string false none none

or

Name Type Required Restrictions Description
»»» anonymous number false none none

continued

Name Type Required Restrictions Description
»» max any true none none

anyOf

Name Type Required Restrictions Description
»»» anonymous string false none none

or

Name Type Required Restrictions Description
»»» anonymous number false none none

catalogDefinition

{
  "stac_version": "0.8.1",
  "stac_extensions": [
    "http://example.com"
  ],
  "id": "naip",
  "title": "NAIP Imagery",
  "description": "Catalog of NAIP Imagery.",
  "summaries": {
    "property1": [
      null
    ],
    "property2": [
      null
    ]
  },
  "links": [
    {
      "href": "http://www.geoserver.example/stac/naip/child/catalog.json",
      "rel": "child",
      "type": "application/geo+json",
      "hreflang": "en",
      "title": "NAIP Child Catalog",
      "length": 0
    }
  ]
}

Properties

Name Type Required Restrictions Description
stac_version stac_version true none none
stac_extensions stac_extensions false none none
id string true none none
title string false none none
description string true none none
summaries summaries false none Summaries are either a unique set of all available values or statistics. Statistics by default only specify the range (minimum and maximum values), but can optionally be accompanied by additional statistical values. The range can specify the potential range of values, but it is recommended to be as precise as possible. The set of values must contain at least one element and it is strongly recommended to list all values. It is recommended to list as many properties as reasonable so that consumers get a full overview of the Collection. Properties that are covered by the Collection specification (e.g. providers and license) may not be repeated in the summaries.
links [anyOf] true none none

anyOf

Name Type Required Restrictions Description
» anonymous link false none none

or

Name Type Required Restrictions Description
» anonymous object false none Link the search endpoint, which is required to be specified if the API implements /stac/search.
»» href string(url) true none none
»» rel string true none none
»» type string false none none
»» title string false none none

Enumerated Values

Property Value
rel search

itemCollection

{
  "type": "FeatureCollection",
  "features": [
    {
      "stac_version": "0.8.1",
      "stac_extensions": [
        "eo",
        "https://example.com/cs-extension/1.0/schema.json"
      ],
      "type": "Feature",
      "id": "CS3-20160503_132131_05",
      "bbox": [
        -122.59750209,
        37.48803556,
        -122.2880486,
        37.613537207
      ],
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [
              -122.308150179,
              37.488035566
            ],
            [
              -122.597502109,
              37.538869539
            ],
            [
              -122.576687533,
              37.613537207
            ],
            [
              -122.2880486,
              37.562818007
            ],
            [
              -122.308150179,
              37.488035566
            ]
          ]
        ]
      },
      "properties": {
        "datetime": "2016-05-03T13:22:30.040Z",
        "title": "A CS3 item",
        "license": "PDDL-1.0",
        "providers": [
          {
            "name": "CoolSat",
            "roles": [
              "producer",
              "licensor"
            ],
            "url": "https://cool-sat.com/"
          }
        ],
        "eo:sun_azimuth": 168.7,
        "eo:cloud_cover": 0.12,
        "eo:off_nadir": 1.4,
        "eo:platform": "coolsat2",
        "eo:instrument": "cool_sensor_v1",
        "eo:bands": [],
        "eo:sun_elevation": 33.4,
        "eo:gsd": 0.512
      },
      "collection": "CS3",
      "links": [
        {
          "rel": "self",
          "href": "http://cool-sat.com/collections/CS3/items/20160503_132130_04"
        },
        {
          "rel": "root",
          "href": "http://cool-sat.com/collections"
        },
        {
          "rel": "parent",
          "href": "http://cool-sat.com/collections/CS3"
        },
        {
          "rel": "collection",
          "href": "http://cool-sat.com/collections/CS3"
        }
      ],
      "assets": {
        "analytic": {
          "href": "http://cool-sat.com/static-catalog/CS3/20160503_132130_04/analytic.tif",
          "title": "4-Band Analytic"
        },
        "thumbnail": {
          "href": "http://cool-sat.com/static-catalog/CS3/20160503_132130_04/thumbnail.png",
          "title": "Thumbnail"
        }
      }
    }
  ],
  "links": [
    {
      "rel": "next",
      "href": "http://api.cool-sat.com/stac/search?next=ANsXtp9mrqN0yrKWhf-y2PUpHRLQb1GT-mtxNcXou8TwkXhi1Jbk"
    }
  ]
}

A GeoJSON FeatureCollection augmented with foreign members that contain values relevant to a STAC entity

Properties

Name Type Required Restrictions Description
type string true none none
features [item] true none [A GeoJSON Feature augmented with foreign members that contain values relevant to a STAC entity]
links itemCollectionLinks false none An array of links. Can be used for pagination, e.g. by providing a link with the next relation type.

Enumerated Values

Property Value
type FeatureCollection

item

{
  "stac_version": "0.8.1",
  "stac_extensions": [
    "eo",
    "https://example.com/cs-extension/1.0/schema.json"
  ],
  "type": "Feature",
  "id": "CS3-20160503_132131_05",
  "bbox": [
    -122.59750209,
    37.48803556,
    -122.2880486,
    37.613537207
  ],
  "geometry": {
    "type": "Polygon",
    "coordinates": [
      [
        [
          -122.308150179,
          37.488035566
        ],
        [
          -122.597502109,
          37.538869539
        ],
        [
          -122.576687533,
          37.613537207
        ],
        [
          -122.2880486,
          37.562818007
        ],
        [
          -122.308150179,
          37.488035566
        ]
      ]
    ]
  },
  "properties": {
    "datetime": "2016-05-03T13:22:30.040Z",
    "title": "A CS3 item",
    "license": "PDDL-1.0",
    "providers": [
      {
        "name": "CoolSat",
        "roles": [
          "producer",
          "licensor"
        ],
        "url": "https://cool-sat.com/"
      }
    ],
    "eo:sun_azimuth": 168.7,
    "eo:cloud_cover": 0.12,
    "eo:off_nadir": 1.4,
    "eo:platform": "coolsat2",
    "eo:instrument": "cool_sensor_v1",
    "eo:bands": [],
    "eo:sun_elevation": 33.4,
    "eo:gsd": 0.512
  },
  "collection": "CS3",
  "links": [
    {
      "rel": "self",
      "href": "http://cool-sat.com/collections/CS3/items/20160503_132130_04"
    },
    {
      "rel": "root",
      "href": "http://cool-sat.com/collections"
    },
    {
      "rel": "parent",
      "href": "http://cool-sat.com/collections/CS3"
    },
    {
      "rel": "collection",
      "href": "http://cool-sat.com/collections/CS3"
    }
  ],
  "assets": {
    "analytic": {
      "href": "http://cool-sat.com/static-catalog/CS3/20160503_132130_04/analytic.tif",
      "title": "4-Band Analytic"
    },
    "thumbnail": {
      "href": "http://cool-sat.com/static-catalog/CS3/20160503_132130_04/thumbnail.png",
      "title": "Thumbnail"
    }
  }
}

A GeoJSON Feature augmented with foreign members that contain values relevant to a STAC entity

Properties

Name Type Required Restrictions Description
stac_version stac_version true none none
stac_extensions stac_extensions false none none
id itemId true none Provider identifier, a unique ID, potentially a link to a file.
bbox bbox true none Only features that have a geometry that intersects the bounding box are selected. The bounding box is provided as four or six numbers, depending on whether the coordinate reference system includes a vertical axis (elevation or depth): * Lower left corner, coordinate axis 1 * Lower left corner, coordinate axis 2 * Lower left corner, coordinate axis 3 (optional) * Upper right corner, coordinate axis 1 * Upper right corner, coordinate axis 2 * Upper right corner, coordinate axis 3 (optional) The coordinate reference system of the values is WGS84 longitude/latitude (http://www.opengis.net/def/crs/OGC/1.3/CRS84) unless a different coordinate reference system is specified in the parameter bbox-crs. For WGS84 longitude/latitude the values are in most cases the sequence of minimum longitude, minimum latitude, maximum longitude and maximum latitude. However, in cases where the box spans the antimeridian the first value (west-most box edge) is larger than the third value (east-most box edge). If a feature has multiple spatial geometry properties, it is the decision of the server whether only a single spatial geometry property is used to determine the extent or all relevant geometries.
geometry https://geojson.org/schema/Geometry.json true none none
type itemType true none The GeoJSON type
properties itemProperties true none provides the core metatdata fields plus extensions
links [link] true none none
assets itemAssets true none none

itemId

"path/to/example.tif"

Provider identifier, a unique ID, potentially a link to a file.

Properties

Name Type Required Restrictions Description
anonymous string false none Provider identifier, a unique ID, potentially a link to a file.

itemType

"Feature"

The GeoJSON type

Properties

Name Type Required Restrictions Description
anonymous string false none The GeoJSON type

Enumerated Values

Property Value
anonymous Feature

itemAssets

{
  "property1": {
    "href": "http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/thumb.png",
    "title": "Thumbnail",
    "type": "image/png"
  },
  "property2": {
    "href": "http://cool-sat.com/catalog/collections/cs/items/CS3-20160503_132130_04/thumb.png",
    "title": "Thumbnail",
    "type": "image/png"
  }
}

Properties

Name Type Required Restrictions Description
additionalProperties object false none none
» href string(url) true none Link to the asset object
» title string false none Displayed title
» type string false none Media type of the asset

itemProperties

{
  "datetime": "2018-02-12T00:00:00Z/2018-03-18T12:31:12Z",
  "property1": null,
  "property2": null
}

provides the core metatdata fields plus extensions

Properties

Name Type Required Restrictions Description
additionalProperties any false none Any additional properties added in via Item specification or extensions.
datetime datetime true none Either a date-time or an interval, open or closed. Date and time expressions adhere to RFC 3339. Open intervals are expressed using double-dots. Examples: * A date-time: "2018-02-12T23:20:50Z" * A closed interval: "2018-02-12T00:00:00Z/2018-03-18T12:31:12Z" * Open intervals: "2018-02-12T00:00:00Z/.." or "../2018-03-18T12:31:12Z" Only features that have a temporal property that intersects the value of datetime are selected. If a feature has multiple temporal properties, it is the decision of the server whether only a single temporal property is used to determine the extent or all relevant temporal properties.

[
  {
    "rel": "next",
    "href": "http://api.cool-sat.com/stac/search?next=ANsXtp9mrqN0yrKWhf-y2PUpHRLQb1GT-mtxNcXou8TwkXhi1Jbk"
  }
]

An array of links. Can be used for pagination, e.g. by providing a link with the next relation type.

Properties

Name Type Required Restrictions Description
anonymous [link] false none An array of links. Can be used for pagination, e.g. by providing a link with the next relation type.