Queue

Implements an asynchronous request queue.

Queue Status Life Cycle

Status Code Description

StatusCodeDescription

PENDING

0

Request has been received in the upload queue but not yet sent to satellite.

SENT

1

Request has been sent to satellite and is pending execution. These requests can no longer be deleted.

READY

2

Response has been downloaded from the satellite, passed a health check and is ready to be read by the user.

DELETED

5

The request has been deleted.

ARCHIVED

6

When a request has been deleted after it has been sent.

LOST

8

The request was uploaded but it did not return in the next window.

ERROR

9

There was an error with the request.

Requests can be deleted to allow for some housekeeping.

Protocol

The API is non-blocking but asynchronous. The endpoints that request work to be performed on a satellite are delayed. Therefore, it is necessary to establish a protocol that structures the artifacts relevant to query the status of each request. Further, as there are non-controllable factors that can affect response time, it is only an estimate.

Request Response

When a request is performed, information about the status of the request is appended. This can then be used to query the /queue endpoints.

request_uuid

A unique request identifier that can be used for querying its status

request_name

The name of the request endpoint i.e. PRIVATE_KEY

request_verb

The HTTP verb used: POST, GET, DELETE

request_status

The status code and the name of the status.

created_at

The timestamp of when the request was created.

response_eta*

The timestamp of when a response is expected.

satellite_id*

The servicing satellite name identifier.

Populated once the request status changes to SENT.

{
  “request”: {
    “request_uuid”: “<request_uuid>”,
    “request_name”: “<endpoint_name>”,
    “request_verb”: “<endpoint_verb>”,
    “request_status”: {
      “status_code”: <status_code_int>,
      “status_name”: “<status_name_string>”
    },
    “created_at” : “<ts_with_tz>”
    “response_eta”: “<ts_with_tz>”,
    “satellite_id”: “<sat_id_string>”,
  }
} 

Once the request changes status to READY, we can see that the response object will be populated in the request queue.

payload_size

Size of the payload in KiB

received_at

Timestamp of the received request

payload

The requested payload

signature

The signature for verification

is_verified

Boolean: indicates whether the response signature has been verified successfully

{
  “request”: { … }, 
  “response”: {
    “payload_size”: “<kib_int>”,
    “received_at”: “<ts_with_tz>”,
    “payload”: {},
    “signature”: “<signature_string>”,
    “is_verified”: <is_verified_boolean>”
  }
} 

The responses can be veriefed against the corresponding satellite public signing key found here.

See the queue requests documentation here.

Last updated