AxelGlobe Tasking API (2.1.0)

Download OpenAPI specification:Download

AxelGlobe Tasking API

The AxelGlobe Tasking API allows for automation of our satellite tasking process. You can request a specific area of interest be captured at a specific date and time.

Status

Beta

Terms

List of terms used in the API

Term Meaning
AOI Area of Interest. Some geographic area (Polygon) representing the area that is interested in being captures by a satellite.
Capture A single image taken by a satellite
Task Candidate Information about a possible future capture. Will have a specific area (footprint) and capture time.
Task Plan A combination of an AOI and TOI used to plan possible satellite captures. Task plans are just information for planning and do not automatically schedule captures.
Task Request A request to schedule a capture. This will consume a Task Credit and we will make a best effort to schedule a satellite to take a capture matching the requested Candidate.
TOI Time of Interest. Some time range that a Task Plan is valid for. Note this can not be created too far in the future.

API Overview

The structure of the AxelGlobe Tasking API follows the OGC API "Features" standard. Each collection of features are represented as GeoJSON.

The typical tasking workflow has the following steps:

  1. Authenticate
  2. Create a Task Plan
  3. Review list of Task Candidates
  4. Request Task be scheduled
  5. Check Task status and download data

Step 1: Authenticate

Before connecting to the API you must generate a Token with credentials from our platform. Please contact us for more information about API access.

Use the Create an authorization Token request to generate a token. Securely store this token locally for up to 24 hours. Use this token for all subsequent requests in a session. After the token expires you can request a new one.

Step 1: Create a Task Plan

To get started tasking you have to plan a capture. This will allow our system to generate capture candidates that have been calculated and validated so they can be scheduled.

To create a Task Plan make a POST request to the Create Task Plan endpoint.

Note the validation rules for a Task Plan in the request body schema below.

Step 3: Review list of Task Candidates

Once the Task Plan is created our system will take up to 20 minutes to generate validated Task Candidates.

After waiting 20 minutes then list all the candidates using the List Candidates endpoint. This endpoint is paginated, and a the full list can be fetched by following the links with of type rel=next.

Note: if the list of candidates is empty after 20 or more minutes then we are not able to capture the planned AOI or TOI.

At this point any of the Candidates are able to be tasked. Review the list and decide on the optimal Task Candidate that fits your needs.

Step 4: Request Task be scheduled

To schedule a Task Candidate create a Task Request using the Create Task request endpoint.

Provide the ID of the Candidate and the priority of the Task.

Note: this must be done within the lifetime of a Candidate (within approximately 24 hours after the candidate was created). If the Candidate is expired then fetch the list Candidate again to get fresh ones.

Step 5: Check Task status and download data

After the Task Request is accepted you can check the status of the Request. Use the Task Request Details endpoint to check the status of the Request.

We recommend polling the API approximately once per hour to check for status updates. Once the status becomes DATA_AVAILABLE there will be a link to our STAC API with all the data from the capture. Generally data will be available 24-48 hours after the capture.

Authentication

To use the API you need to create a Token with our authentication server.

This token should be reused between requests until it expires.

Create an authorization Token

how to get token

Authorizations:
None
Request Body schema: application/json
required

Authorize Token

grant_type
required
string
Value: "client_credentials"
audience
required
string
Value: "https://api.axelglobe.com"
client_id
required
string

Client ID provided by the AxelGlobe platform. Do not share this information with anyone.

client_secret
required
string

Client Secret provided by the AxelGlobe platform. Do not share this information with anyone.

Responses

Request samples

Content type
application/json
{
  • "grant_type": "client_credentials",
  • "client_id": "ABCDEF00000000000",
  • "client_secret": "SECRET_VALUE"
}

Response samples

Content type
application/json
{
  • "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.iUCROHt6JHANdtzT6aOuUgOqVFRalOW20SbzRsn5SkI",
  • "expires_in": 86400,
  • "token_type": "Bearer"
}

Capabilities

OGC Spatial Data on the Web Best Practices

Landing Page

Follows OGC API - Features (WFS 3) Part-1 Core: 7.2.

Authorizations:
oauth_token

Responses

Request samples

curl https://sandbox-api.axelglobe.com/wfs/tasking/v2/ \
-H "Authorization: Bearer {{oauth_token}}""

Response samples

Content type
application/json
{
  • "title": "The AxelGlobe Tasking API",
  • "description": "Access to the tasking capabilities on the AxelGlobe via a REST API",
  • "links": [
    ]
}

Conformance information

Follows OGC API - Features (WFS 3) Part-1 Core: 7.2.

Authorizations:
oauth_token

Responses

Collections information

Follows OGC API - Features (WFS 3) Part-1 Core: 7.2.

Authorizations:
oauth_token

Responses

Response samples

Content type
application/json
{}

Satellites

Satellites Metadata

Authorizations:
oauth_token

Responses

Response samples

Content type
application/json
{}

Satellite Ground Tracks

Satellite Ground Tracks API metadata

Authorizations:
oauth_token

Responses

Response samples

Content type
application/json
{}

Describe Tasks Plans

Task Plans Metadata

Authorizations:
oauth_token

Responses

Response samples

Content type
application/json
{}

Describe Candidates

candidates Metadata

Authorizations:
oauth_token

Responses

Response samples

Content type
application/json
{}

Describe Task Requests

Task Request Metadata

Authorizations:
oauth_token

Responses

Response samples

Content type
application/json
{}

Satellites

Information about our AxelGlobe GRUS satellite constellation. Basic information and future orbit data is provided as reference data to better understand how you can Task our satellites.

List Satellites

List AxelGlobe Satellites

Authorizations:
oauth_token
query Parameters
limit
number <integer> [ 1 .. 20 ]
Default: 10

Result pagination limit

offset
number <integer> >= 0

Result pagination offset

Responses

Response samples

Content type
application/geo+json
{}

Satellite Details

Satellite Information

Authorizations:
oauth_token
path Parameters
satelliteId
required
string
Example: grus-1b

unique identifier for a Satellite

Responses

Response samples

Content type
application/geo+json
{
  • "type": "Feature",
  • "geometry": {
    },
  • "id": "GRUS-1B",
  • "properties": {
    }
}

List Satellite Ground Tracks

List AxelGlobe Satellites Ground Tracks. Check future orbits of the AxelGlobe GRUS satellite constellation. Ground tracks can be used to estimate possible Task coverage. However many factors are involved when requesting Tasks. Orbit data is for reference only.

Authorizations:
oauth_token
query Parameters
limit
number <integer> [ 1 .. 20 ]
Default: 10

Result pagination limit

offset
number <integer> >= 0

Result pagination offset

filter
string <string>
Examples:
  • filter=satellite_id = 'GRUS-1A' - Filter for specific satellite
  • filter=satellite_id <> 'GRUS-1A' - Exclude specific satellite
  • filter=satellite_id IN ('GRUS-1A', 'GRUS-1B') - Filter for multiple satellites
  • filter=satellite_id = 'GRUS-1A' OR satellite_id = 'GRUS-1C' - Complex logical filter

CQL2 filter for filtering by 'satellite_id'

Responses

Response samples

Content type
application/geo+json
{}

Satellite Ground Track

Satellite Ground Track. A single orbit of a satellite in the AxelGlobe GRUS satellite constellation.

Authorizations:
oauth_token
path Parameters
trackId
required
string
Example: UmV2b2x1dGlvbjoxMDYzNTA3Mw==

unique identifier for a Satellite Ground Track

Responses

Response samples

Content type
application/geo+json
{
  • "type": "Feature",
  • "geometry": {
    },
  • "id": "UmV2b2x1dGlvbjoxMDYzNTA3Mw==",
  • "properties": {
    }
}

Task Plans

Register an AOI to plan a capture

Create a Task Plan to get information about potential captures.

Task Plan Status

After creating a Plan it can take 10 ~ 20 minutes for candidates to be generated.

When a Plan has status ACTIVE then you can check for possible candidates using the rel=candidates link in the Plan response.

List Task Plans

List your task plans

Authorizations:
oauth_token
query Parameters
limit
number <integer> [ 1 .. 20 ]
Default: 10

Result pagination limit

offset
number <integer> >= 0

Result pagination offset

bbox
Array of numbers <double> = 4 items [ items <double > ]
Example: bbox=-82.4986738,39.5018036,-82.3153139,39.6200576

Filters out tasking plans that do not intersect the bbox

datetime
string <date-time>
Examples:
  • datetime=2018-03-18T12:31:12Z/2018-03-22T12:31:12Z - 2018-03-18... is the start, 2018-03-22... is the end
  • datetime=/2018-03-18T12:31:12Z - the leading slash makes this single datetime become the end of the date range
  • datetime=2019-03-18T12:31:12Z/ - the trailing slash makes the single datetime become the beginning of the date range

Filters out tasking plans whose TOI does not intersect with the specified date range. If datetime is specified, then at least one side (start or end) of the date range must exist.

filter
string <string>
Example: filter=s_intersects(geometry, POLYGON ((-79.685265 -7.13192, -79.685265 -7.55499, -79.275122 -7.55499, -79.275122 -7.13192, -79.685265 -7.13192))) AND status='ACTIVE'

a CQL2 filter that may include clauses like s_intersects(geometry, <some geometry literal>) or status='ACTIVE', joined by an AND clause

Responses

Response samples

Content type
application/geo+json
{}

Create Task Plan

Create a new Task Plan Provide a Name, AOI and TOI. After 20 mins the system will generate Candidates for the Task Plan.

Authorizations:
oauth_token
Request Body schema: application/geo+json
required

Create a new Task Plan

type
required
string
Value: "Feature"
required
object

For the minimum bounding box for the supplied geometry,

  • Its height must be less than or equal to 500 km.
  • Its width must be less than or equal to 500 km.
  • Its area must be more than or equal to 100 sqkm.
required
object

Responses

Request samples

Content type
application/geo+json
{
  • "type": "Feature",
  • "geometry": {
    },
  • "properties": {
    }
}

Response samples

Content type
application/geo+json
{
  • "type": "Feature",
  • "geometry": {
    },
  • "id": "VGFza1BsYW46MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAw",
  • "properties": {
    },
  • "links": []
}

Task Plan Details

Data about a Task plan

Authorizations:
oauth_token
path Parameters
taskPlanId
required
string

unique identifier for a Task Plan

Responses

Response samples

Content type
application/geo+json
{
  • "type": "Feature",
  • "geometry": {
    },
  • "id": "VGFza1BsYW46MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAw",
  • "properties": {
    },
  • "links": []
}

Invalidate Task Plan

Cancel a Task Plan

Authorizations:
oauth_token
path Parameters
taskPlanId
required
string

unique identifier for a Task Plan

Responses

Response samples

Content type
application/json
""

Task Candidates

A Task Candidate is one calculated potential scene related to a Task Plan

List Candidates

List candidates for a Task Plan. This must be filtered to a Task Plan ID using the CQL2 Filter syntax.

Task Candidates have a similar structure to STAC Items. Review the scene footprints and properties to decide the optimal capture for your use case.

Example:

  • GET /wfs/tasking/v2/collections/candidates/items?filter=task_plan_id+=+'VGFza1BsYW46MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAw'
Authorizations:
oauth_token
query Parameters
filter
required
string
Example: filter=task_plan_id = 'VGFza1BsYW46MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAw'

CQL2 Syntax filter. Must include a filter to a Task Plan by ID.

limit
number <integer> [ 1 .. 100 ]
Default: 10

Result pagination limit

offset
number <integer> >= 0

Result pagination offset

datetime
string <date-time>
Examples:
  • datetime=2018-03-18T12:31:12Z/2018-03-22T12:31:12Z - 2018-03-18... is the start, 2018-03-22... is the end
  • datetime=/2018-03-18T12:31:12Z - the leading slash makes this single datetime become the end of the date range
  • datetime=2019-03-18T12:31:12Z/ - the trailing slash makes the single datetime become the beginning of the date range

Filters out tasking candidates whose capture period does not intersect with the specified date range. If datetime is specified, then at least one side (start or end) of the date range must exist.

bbox
Array of numbers <double> = 4 items [ items <double > ]
Example: bbox=-82.4986738,39.5018036,-82.3153139,39.6200576

Filters out tasking candidates that do not intersect the bbox

Responses

Response samples

Content type
application/geo+json
{}

Task Candidate Details

Data about a Candidate

Authorizations:
oauth_token
path Parameters
candidateId
required
string

unique identifier for a Task Candidate

Responses

Response samples

Content type
application/geo+json
{}

Task Requests

Request a capture be scheduled. A Task Request has information about the scheduled capture and processed data. Task Requests are limited and your account may be charged.

Task Request Status:

After Tasks reach 'DATA_AVAILABLE' status assets can be fetched from the STAC API.

List Task Requests

List your Tasks

Authorizations:
oauth_token
query Parameters
limit
number <integer> [ 1 .. 20 ]
Default: 10

Result pagination limit

offset
number <integer> >= 0

Result pagination offset

filter
string <string>
Example: filter=priority='EMERGENCY' AND task_plan_id='<taskplan id>'

a CQL2 filter that may be used to filter requests by their priority or task plan id

Responses

Response samples

Content type
application/geo+json
{}

Create Task request

Create a new Task. To conform to API standards this request is GeoJSON, however when proving a Candidate ID the Polygon geometry should be left empty.

Authorizations:
oauth_token
Request Body schema: application/json
required

Create a new Task

type
required
string
Value: "Feature"
required
object
required
object

Responses

Request samples

Content type
application/json
{
  • "type": "Feature",
  • "geometry": {
    },
  • "properties": {
    }
}

Response samples

Content type
application/geo+json
{}

Task Request Details

Information about a Request.

Authorizations:
oauth_token
path Parameters
taskRequestId
required
string

unique identifier for a Task Request

Responses

Response samples

Content type
application/geo+json
{}

Cancel a Task Request

Cancel a Request

Authorizations:
oauth_token
path Parameters
taskRequestId
required
string

unique identifier for a Task Request

Responses

Response samples

Content type
application/json
""