SBG Systems - Qinertia Cloud REST API (1.0 - BETA)

Download OpenAPI specification:Download

Introduction

Qinertia Cloud API is a professional and highly accurate GNSS/INS post processing solution.

Qinertia is able to post-process RAW GNSS data to deliver centimeter-level positions. Several GNSS post processing modes are available such as single base station, Virtual Base Stations (VBS) and world wide Precise Point Positioning (PPP).

Qinertia is also capable of post processing IMU data to produce highly accurate and reliable position, velocity and attitude data even in harsh GNSS conditions. The solution is able to process SBG Systems INS as well as any GNSS receiver or third party IMU.

Qinertia Cloud API is an ideal solution to create complex but automated post processing workflows such as Lidar point cloud generation, photogrammetry geo-tagging and large survey jobs.

API Description

Qinertia Cloud API is accessed using a simple REST API and standard Qinertia CLI JSON processing files.

To use Qinertia Cloud API, you need a MySBG account, be an organization administrator with available processing credits.

The REST API is used to:

  • create/view/delete projects
  • get Amazon S3 links to upload data
  • list/start/cancel/monitor processing
  • monitor processing progress using webhooks
  • download generated exports/reports from S3

To ease integration with other services, most endpoints offer an optional metadata dictionary to store user defined data.

HTTP methods

This API implements standard REST API HTTP methods as detailed below:

  • The GET method is used to retrieve a representation of a resource. If successful, GET returns a representation in JSON and an HTTP response code of 200 (OK). In an error case, it most often returns a 404 (NOT FOUND) or 400 (BAD REQUEST). The GET method never modify any resource or state on the server.
  • The POST method is used to create a new resource and/or to execute actions. On successful update or action, a HTTP status code 200 (OK) is returned with a JSON body detailing the operation status. In case of error the corresponding HTTP status code is returned such as 400 (Bad Request).
  • The PATCH method is used to update an existing resource. On successful update or action, a HTTP status code 200 (OK) is returned with a JSON body detailing the operation status. In case of error the corresponding HTTP status code is returned such as 400 (Bad Request).
  • The DEL method is used to delete an existing resource.

HTTP status codes

This API uses standard HTTP status codes to report either a success or a failure. A success is only reported by the status code 200 and the response body always contains the requested resource or the result of an action using JSON.

All other status codes are used to report an error and the response body always contains a JSON detailing the error.

The table below list all HTTP response status codes used by the API.

Status Code Description
200 OK Indicates that request has succeeded.
400 Bad Request The request could not be understood by the server due to incorrect syntax.
401 Unauthorized The request requires user authentication information.
403 Forbidden The client does not have access rights to the content. Unlike 401, the client’s identity is known to the server.
404 Not Found The server can not find the requested resource.
409 Conflict Unable to comply due to a conflict with the current state of the target resource.
422 Unprocessable Entity The client has provided invalid input parameters.
500 Internal Server Error The server encountered an unexpected condition which prevented it from fulfilling the request.

200 (OK)

It indicates that the REST API successfully carried out whatever action the client requested.

The 200 response includes always a response body. The information returned with the response is dependent on the method used in the request, for example:

  • GET an entity corresponding to the requested resource is sent in the response;
  • POST/PATCH/DEL an entity describing or containing the result of the action;

400 (Bad Request)

400 is the generic client-side error status, used when no other 4xx error code is appropriate. Errors can be like malformed request syntax, invalid request message format, or deceptive request routing etc.

The client SHOULD NOT repeat the request without modifications.

401 (Unauthorized)

A 401 error response indicates that the client tried to operate on a protected resource without providing the proper authorization. The Authorization header is missing, doesn't start with "Bearer ", the access token is invalid or expired. More details will be provided to you in the response.

The client MAY repeat the request with a suitable authorization token in the HTTP header.

403 (Forbidden)

A 403 error response indicates that the client’s request is formed correctly, but the REST API refuses to honor it, i.e., the user does not have the necessary permissions for the resource. A 403 response is not a case of an invalid access token; that would be 401 (“Unauthorized”).

Authentication will not help, and the request SHOULD NOT be repeated. Unlike a 401 Unauthorized response, authenticating will make no difference.

404 (Not Found)

The 404 error status code indicates that the REST API can’t map the client’s URI to a resource but may be available in the future. Subsequent requests by the client are permissible.

No indication is given of whether the condition is temporary or permanent. This status code is commonly used when the server does not wish to reveal exactly why the request has been refused, or when no other response is applicable.

409 (Conflict)

A 409 status code indicates that the request is in conflict with the current state of the target resource. However, the user might be able to resolve the conflict and resubmmit the request.

This status code is returned when the requested resource is not in the expected state, or the result of processing the request would create a conflict within the resource.

Example: A user would like to start a processing on a project that already has an ongoing processing.

422 (Unprocessable Entity)

The 422 response status code indicates that the server understands the content type of the request entity, and the syntax of the request entity is correct, but it was unable to process the contained instructions. It's probably due to invalid input parameters such as in invalid enum value.

The client SHOULD NOT repeat the request without modifications.

500 (Internal Server Error)

500 is the generic REST API error response. Most web frameworks automatically respond with this response status code whenever they execute some request handler code that raises an exception.

A 500 error is never the client’s fault, and therefore, it is reasonable for the client to retry the same request that triggered this response and hope to get a different response.

The API response is the generic error message, given when an unexpected condition was encountered and no more specific message is suitable.

Getting started guide

This API has been designed to be as easy to use as possible and a dedicated GitHub repository contains code samples.

You should also read the online Qinertia Documentation and other SBG Systems Support Center resources.

Please also visit MySBG to create/manage your account and monitor/buy online prepaid credits.

Authentication

AuthToken

To consume Qinertia Cloud public API, you need to create an API key on My SBG.

Requests must be made using a temporary access token. Which is generated after after completing an API key OpenID authentication.

All authentication details and a curl request will be provided to you after creating an API key or regenerating its secret.

Projects

The projects endpoints are used to create and manage processing projects.

You can create a new processing project, update, delete or even archive it.
At any time, you can list your organization's projects and get a specific project information.

Once a project is created, you can request Amazon S3 URLs to upload (POST) data to process (GNSS, IMU, etc) and resources (Export profiles, Report templates, etc).

Finally, when a project has been successfully processed, you can request the list of files that have been generated to download them.

List projects

List all Qinertia Cloud API projects for a specific organization.

Authorizations:
AuthToken (qinertia-cloud:user)
path Parameters
organizationId
required
string <uuid>
Example: 6720f040-7dbc-40c4-be32-1bead64e5515

Organziation ID

Responses

Request samples

# URL request example using curl tool
# with all mandatory and optional path parameters

curl --location --request GET 'https://qinertia-api.sbg-systems.com/api/v1/organizations/40bfe492-5a81-4050-9086-d8880080ecc1/projects'

Response samples

Content type
application/json
[
]

Create project

Create a new empty Qinertia Cloud API project in an organization.

Authorizations:
AuthToken (qinertia-cloud:user)
path Parameters
organizationId
required
string <uuid>
Example: 6720f040-7dbc-40c4-be32-1bead64e5515

Organziation ID

Request Body schema: application/json

This body is used to create a project.

region
required
string (projectRegion)
Enum: "eu-west-3" "us-west-1" "ap-northeast-1" "ap-southeast-2"

Region where your processing files are stored.

Array of objects (metadataList)

List of metadata.

Responses

Request samples

Content type
application/json
{
}

Response samples

Content type
application/json
{
}

Get project info

Returns information for a project as well as status/progress for the latest processing.
SBG Systems recommends using webhooks to monitor processing status/progress.

Authorizations:
AuthToken (qinertia-cloud:user)
path Parameters
projectId
required
string <uuid>
Example: ab21c597-1f44-4e27-82cb-790c7df005c2

Project ID

Responses

Request samples

# URL request example using curl tool
# with all mandatory and optional path parameters

curl --location --request GET 'https://qinertia-api.sbg-systems.com/api/v1/projects/7830e885-f602-4d5b-8f80-a7a9bf2aa0b1'

Response samples

Content type
application/json
{
}

Update project

Update an existing project information and more specifically the user metadata.

Authorizations:
AuthToken (qinertia-cloud:user)
path Parameters
projectId
required
string <uuid>
Example: ab21c597-1f44-4e27-82cb-790c7df005c2

Project ID

Request Body schema: application/json

This optional body is used to update a project

Array of objects (metadataList)

List of metadata.

Responses

Request samples

Content type
application/json
{
}

Response samples

Content type
application/json
{
}

Delete project

Delete an existing project with all associated data and processings.
This operation is immediate and can't be cancelled.

Authorizations:
AuthToken (qinertia-cloud:user)
path Parameters
projectId
required
string <uuid>
Example: ab21c597-1f44-4e27-82cb-790c7df005c2

Project ID

Responses

Request samples

# URL request example using curl tool
# with all mandatory and optional path parameters

curl --location --request DELETE 'https://qinertia-api.sbg-systems.com/api/v1/organizations/7830e885-f602-4d5b-8f80-a7a9bf2aa0b1/projects'

Response samples

Content type
application/json
{
}

Upload input data

Get Amazon S3 URLs to upload the input files to process, using an HTTP POST request.

Input files are, for example, RAW GNSS observations, INS sbgECom binary logs, IMU, odometer data, etc

The response body fields should contain a param named key that should look like:

  qinertia-cloud/ab21c597-1f44-4e27-82cb-790c7df005c2/input/${filename}

You need to replace ${filename} using the relative path of your file.
Please find below examples to upload three different files:

  qinertia-cloud/ab21c597-1f44-4e27-82cb-790c7df005c2/input/my-file.txt
  qinertia-cloud/ab21c597-1f44-4e27-82cb-790c7df005c2/input/base/sbgs167o.20d
  qinertia-cloud/ab21c597-1f44-4e27-82cb-790c7df005c2/input/rover/Navsight-Auto-Demo.json

You don't need to manage the folders/sub-folders, they will be created automatically.

To upload a file, do a HTTP POST request to url with fields as form-data followed by the file content.
You can upload as many files as you want by repeating this operation.

Please read the dedicated Amazon S3 section for more info.

Authorizations:
AuthToken (qinertia-cloud:user)
path Parameters
projectId
required
string <uuid>
Example: ab21c597-1f44-4e27-82cb-790c7df005c2

Project ID

Responses

Request samples

# URL request example using curl tool
# with all mandatory and optional path parameters

curl --location --request GET 'https://qinertia-api.sbg-systems.com/api/v1/projects/7830e885-f602-4d5b-8f80-a7a9bf2aa0b1/input'

Response samples

Content type
application/json
{
}

Upload resources data

Get Amazon S3 URLs to upload Qinertia resources files to use with an HTTP POST request.

Resources files are, for example, custom Qinertia export profiles or report templates. They are created with the Qinertia Desktop application and are referenced from the JSON processing file.

The response body fields should contain a param named key that should look like:

  qinertia-cloud/2e6aaedf-7832-4b3f-9bb9-b5bada068427/input/${filename}

You need to replace ${filename} using the relative path of your file.
Please find below examples to upload a custom export profile and report template:

  qinertia-cloud/2e6aaedf-7832-4b3f-9bb9-b5bada068427/resources/photogrammetry.ppprof
  qinertia-cloud/2e6aaedf-7832-4b3f-9bb9-b5bada068427/resources/My Custom PDF.ppreport

You don't need to manage the folders/sub-folders, they will be created automatically.

To upload a file, do a HTTP POST request to url with fields as form-data followed by the file content.
You can upload as many files as you want by repeating this operation.

Please read the dedicated Amazon S3 section for more info.

Authorizations:
AuthToken (qinertia-cloud:user)
path Parameters
projectId
required
string <uuid>
Example: ab21c597-1f44-4e27-82cb-790c7df005c2

Project ID

Responses

Request samples

# URL request example using curl tool
# with all mandatory and optional path parameters

curl --location --request GET 'https://qinertia-api.sbg-systems.com/api/v1/projects/7830e885-f602-4d5b-8f80-a7a9bf2aa0b1/resources'

Response samples

Content type
application/json
{
}

Download output data

Issue this request to get, for each file generated by Qinertia Cloud API, an URL to download it.
This endpoints returns both the processing logs as well as the exported data, generated reports and so on.

Authorizations:
AuthToken (qinertia-cloud:user)
path Parameters
projectId
required
string <uuid>
Example: ab21c597-1f44-4e27-82cb-790c7df005c2

Project ID

Responses

Request samples

# URL request example using curl tool
# with all mandatory and optional path parameters

curl --location --request GET 'https://qinertia-api.sbg-systems.com/api/v1/projects/7830e885-f602-4d5b-8f80-a7a9bf2aa0b1/output'

Archive project

Archive a project so it will not be deleted automatically after 30 days.
Only the latest processing results are kept and input data are deleted.

Authorizations:
AuthToken (qinertia-cloud:user)
path Parameters
projectId
required
string <uuid>
Example: ab21c597-1f44-4e27-82cb-790c7df005c2

Project ID

Responses

Request samples

# URL request example using curl tool
# with all mandatory and optional path parameters

curl --location --request POST 'https://qinertia-api.sbg-systems.com/api/v1/projects/7830e885-f602-4d5b-8f80-a7a9bf2aa0b1/archive'

Response samples

Content type
application/json
{
}

Processings

These endpoints are used to manage processing jobs on a project.

Qinertia Cloud API lets you process several times the same project if needed.
It can be helpful if you would like to change some processing settings without re-uploading the dataset.

Once you have created a project, you should start a processing and provide the JSON processing settings file. At any time, you can check a processing status/progress and easily list any error that may have occurred.

However, SBG Systems recommends using webhooks to monitor processing progress/status rather than continuously polling the processing information.

List processings

This endpoint lists all the processings that have either succeeded or failed for a project.
If a processing is currently being executed, it will also be listed.

Authorizations:
AuthToken (qinertia-cloud:user)
path Parameters
projectId
required
string <uuid>
Example: ab21c597-1f44-4e27-82cb-790c7df005c2

Project ID

Responses

Request samples

# URL request example using curl tool
# with all mandatory and optional path parameters

curl --location --request GET 'https://qinertia-api.sbg-systems.com/api/v1/projects/7830e885-f602-4d5b-8f80-a7a9bf2aa0b1/processings'

Response samples

Content type
application/json
[
]

Start processing

Start a new processing for a project by providing the processing JSON settings.

Before you issue this request, make sure you have uploaded successfully input and, optionally, resources data.

The processingJson field is a full Qinertia processing JSON content. It defines input data, processing options, export jobs, etc.

Please read the dedicated Qinertia documentation and check the Qinertia Cloud API GitHub for code and project samples.

Authorizations:
AuthToken (qinertia-cloud:user)
path Parameters
projectId
required
string <uuid>
Example: ab21c597-1f44-4e27-82cb-790c7df005c2

Project ID

Request Body schema: application/json

This body is used to create and start a processing.

processingJson
required
object

Processing json. More info

Array of objects (metadataList)

List of metadata.

Responses

Request samples

Content type
application/json
{
}

Response samples

Content type
application/json
{
}

Get processing info

Returns detailed information, status and progress for a processing job.

If you would like to check progress on a processing job, please use webhooks rather than polling this endpoint.

Authorizations:
AuthToken (qinertia-cloud:user)
path Parameters
processingId
required
string <uuid>
Example: 813d9d26-811a-40d4-a4e0-c52b7cd338ff

Processing ID

Responses

Request samples

# URL request example using curl tool
# with all mandatory and optional path parameters

curl --location --request GET 'https://qinertia-api.sbg-systems.com/api/v1/processings/2ba2c7fb-2441-4344-9243-5661c95c4ab6'

Response samples

Content type
application/json
{
}

Cancel processing

Cancel a processing job that is either pending or being processed.

Authorizations:
AuthToken (qinertia-cloud:user)
path Parameters
processingId
required
string <uuid>
Example: 813d9d26-811a-40d4-a4e0-c52b7cd338ff

Processing ID

Responses

Request samples

# URL request example using curl tool
# with all mandatory and optional path parameters

curl --location --request DELETE 'https://qinertia-api.sbg-systems.com/api/v1/processings/2ba2c7fb-2441-4344-9243-5661c95c4ab6'

Response samples

Content type
application/json
{
}

Get processing errors

Get a detailed list of errors and warnings that have occurred on a processing job.

Authorizations:
AuthToken (qinertia-cloud:user)
path Parameters
processingId
required
string <uuid>
Example: 813d9d26-811a-40d4-a4e0-c52b7cd338ff

Processing ID

Responses

Request samples

# URL request example using curl tool
# with all mandatory and optional path parameters

curl --location --request GET 'https://qinertia-api.sbg-systems.com/api/v1/processings/2ba2c7fb-2441-4344-9243-5661c95c4ab6/errors'

Response samples

Content type
application/json
[
]

Webhooks

Register webhooks to be notified when a processing status or progress is updated.

Qinertia Cloud API relies on webhooks to easily notify another service when a processing status changes.
A webhook is simply an external URL that is called by SBG Systems cloud services to notify an event.

For example, you can register a webhook to issue a POST request on your service when a processing is completed.

Notifications Service

The webhook API is provided by a dedicated SBG Systems notification service and not directly by Qinertia Cloud API service. The webhook endpoints should be issued on https://notification-api.sbg-systems.com/api/v1 domain.

Webhooks API is not on the same subdomain as Qinertia Cloud API.

Webhooks scope

Webhooks are registered for an organization. If you have several ongoing processings, the webhook will be triggered for each processing status/progress updated.
You should check the received payload to identify which processing/project has issued the event.

Webhooks are registered for an organization and not for a project or processing.

HTTP endpoint (url)

Before you can install a webhook, you should create, on your service, a dedicated endpoint (URL) that accepts POST requests.

  1. Identify the events you want to monitor
  2. Create an endpoint on your server, it must accept POST requests
  3. Make sure it is accessible from the outside
  4. Create the webhook endpoint

Your endpoint must respond a 2XX status code within 5 seconds to be considered valid. You should respond before executing business logic to avoid a webhook timeout and retry.

Retry policy

If your endpoint was unavailable (connection timeout, invalid status code...) when the webhook was sent, it will be resent later.

The notification service will try, up to 10 times, to resend the missed event with an exponential backoff. These 10 attempts will take place over approximately 3 days. After that, the endpoint will be considered as defective and will be automatically disabled.

You can fetch the missed webhooks using this endpoint.

Secure webhooks (optional):

You can secure webhook calls and make sure the POST request has been issued by SBG Systems service.

In the webhook's HTTP request you will find 2 headers:

  • Sbg-Timestamp
  • Sbg-Signature

The timestamp is when the webhook has been sent. Make sure it is not too old and consistent with your server time.

The signature is generated using the Hash-based message authentication code (HMAC) protocol. You should compute a HMAC hash and compare it to the Sbg-Signature one to confirm POST request authenticity.

The HMAC is computed using the POST request timestamp and raw content body: HMAC(Sbg-Timestamp + "." + body)
The HMAC secret has been generated during the webhook endpoint creation and a sha256 algorithm is used.

Please find below a JavaScript code snippet to implement the HMAC computation:

  const signature = crypto
    .createHmac('sha256', secret)
    .update(timestamp + '.' + rawBody, 'utf8')
    .digest('hex')

List webhook endpoints

List all webhook endpoints that have been registered for an organization.

Authorizations:
AuthToken (notification:user)
path Parameters
organizationId
required
string <uuid>
Example: 6720f040-7dbc-40c4-be32-1bead64e5515

Organziation ID

Responses

Request samples

# URL request example using curl tool
# with all mandatory and optional path parameters

curl --location --request GET 'https://notification-api.sbg-systems.com/api/v1/organizations/40bfe492-5a81-4050-9086-d8880080ecc1/webhook-endpoints'

Response samples

Content type
application/json
[
]

Create a webhook endpoint

Create and register a new webhook endpoint for an organization.

Authorizations:
AuthToken (notification:user)
path Parameters
organizationId
required
string <uuid>
Example: 6720f040-7dbc-40c4-be32-1bead64e5515

Organziation ID

Request Body schema: application/json

This body is used to create a webhook endpoint.

url
required
string <url>

The url on which the webhook will be sent.

enabledEventTypes
required
Array of strings (eventType)

List of event types you wish to listen.

Array of objects (metadataList)

List of metadata.

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
[
]

Update webhook endpoint

Update an existing webhook endpoint.

Authorizations:
AuthToken (notification:user)
path Parameters
webhookEndpointId
required
string <uuid>
Example: 882e8ef9-ab6b-4904-a860-78837baf838a

Webhook endpoint ID

Request Body schema: application/json

This body is used to update the webhook endpoint.

url
string <url>

The url on which the webhook will be sent.

enabledEventTypes
Array of strings (eventType)

List of event types you wish to listen.

Array of objects (metadataList)

List of metadata.

enabled
boolean

If disabled, no webhook will be sent to it.

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
[
]

Delete a webhook endpoint

Immediately delete a webhook endpoint. This operation can't be cancelled.

Authorizations:
AuthToken (notification:user)
path Parameters
webhookEndpointId
required
string <uuid>
Example: 882e8ef9-ab6b-4904-a860-78837baf838a

Webhook endpoint ID

Responses

Request samples

# URL request example using curl tool
# with all mandatory and optional path parameters

curl --location --request DELETE 'https://notification-api.sbg-systems.com/api/v1/webhook-endpoints/33d5bd02-43b6-4281-9c98-1bf9c2f8a431'

Response samples

Content type
application/json
{
}

List missed webhook events

List, for an organization, all missed webhook events.

If the target URL (user service) doesn't respond with a 2xx HTTP code to a webhook event, the notification service will retry up to 10 times. Following these 10 retry, a missed webhook event is logged.

Authorizations:
AuthToken (notification:user)
path Parameters
webhookEndpointId
required
string <uuid>
Example: 882e8ef9-ab6b-4904-a860-78837baf838a

Webhook endpoint ID

Responses

Request samples

# URL request example using curl tool
# with all mandatory and optional path parameters

curl --location --request GET 'https://notification-api.sbg-systems.com/api/v1/webhook-endpoints/33d5bd02-43b6-4281-9c98-1bf9c2f8a431/missed-webhooks?page=0&perPage=100'

Response samples

Content type
application/json
[
]

Amazon S3

Qinertia Cloud API uses Amazon S3 services to store input and output data.

The user should upload the data to Amazon S3 before starting a processing job. The processing results and log files will also be stored on Amazon S3.

Uploading files is done in two steps:

  • request URLs from Qinertia Cloud API to POST file content to
  • then POST content to Amazon S3 with these URLs

Downloading results and logs is straightforward:

  • request Qinertia Cloud API an array of all generated files
  • download each file using the returned URLs

Upload file to S3

To upload your file, do a HTTP request on AWS REST API. Generate the data to send using this endpoint. The endpoint url is here: response.body.url, the request data is here: response.body.fields

Request Body schema: multipart/form-data

Upload file to AWS S3. Generate the data to send using the response of this endpoint

key
required
string

Key of the file you are uploading. It must not end with ${filename}, you should have replaced it with your relative file path more info for input files more info for resouces files

file
required
string <binary>

MUST BE THE LAST ATTRIBUTE

property name*
string

Every attribute of this endpoint for input files or this endpoint for resources files "response.fields"

Responses

Request samples

# URL request example using curl tool
# with all mandatory and optional path parameters

curl --request POST 'https://s3.eu-west-3.amazonaws.com/qinertia-cloud-eu-west-3-prod' \
	--form 'bucket="qinertia-cloud-eu-west-3-prod"' \
	--form 'X-Amz-Algorithm="AWS4-HMAC-SHA256"' \
	--form 'X-Amz-Credential="AKIA4BWA67SAQ4XXITET/20210713/eu-west-3/s3/aws4_request"' \
	--form 'X-Amz-Date="20210713T092559Z"' \
	--form 'key="qinertia-cloud/7830e885-f602-4d5b-8f80-a7a9bf2aa0b1/input/base/sbgs167o.20d"' \
	--form 'Policy="eyJleHBpcmF0aW9uIjoiMjAyMi0wNy0wOFQxNToxODo1OFoiLCJjb25kaXRpb25zIjpbeyJidWNrZXQiOiJxaW5lcnRpYS1jbG91ZC1ldS13ZXN0LTMtcHJlcHJvZCJ9LHsiWC1BbXotQWxnb3JpdGhtIjoiQVdTNC1ITUFDLVNIQTI1NiJ9LHsiWC1BbXotQ3JlZGVudGlhbCI6IkFTSUE0QldBNjdTQTdOMlpRQU9CLzIwMjIwNzA4L2V1LXdlc3QtMy9zMy9hd3M0X3JlcXVlc3QifSx7IlgtQW16LURhdGUiOiIyMDIyMDcwOFQxNDE4NThaIn0seyJYLUFtei1TZWN1cml0eS1Ub2tlbiI6IklRb0piM0pwWjJsdVgyVmpFTUgvLy8vLy8vLy8vd0VhQ1dWMUxYZGxjM1F0TXlKSE1FVUNJUUNiTW5aZHpadllMWjdQWHp3SDJpTVp5K3ZySHM2bitpaGRoZFBjSnQ3N2tRSWdQcjZsZC8zMGR3QUdKbTZ3ZFdaUk03ejR3bjR6Umt4c3E1c0d5V1llZjhjcWxnUUk2di8vLy8vLy8vLy9BUkFDR2d3NE1qZ3lOVGsyTXpBeU1Ea2lERm9QVy90U0lpbUZPd3VyMXlycUEyeGVhQXkyRDRWa3A5d2FhQVVpNDFPVmdvclBwNlc5RTlpNFAxVFlWNnhoMk5ZbVBIUjBlSklwT2RURWxzT3BpVTlBSUpYYUNES3VCYUphRmlyOVZ3TGd5MEx0NWFNanByYVp0eG9TYllpZ0ViYVRScEZmRjhnL2dnVjZaZ3BZb0FNcjJEUzJsK015ai96QlB0bFFpOGRyWW5iUExYNHFsb3NWSTJraW9NWU5aM29vbmczYklzWmdQTnVuM3VwZ1lSRWppZkd5SEl0Vm5qVUZOa0xMOGFFcmxza0d0QWMybERwa3RXbEw1dVVXWkE4U0YvZ0t0S3pGeFVJd3crZno5YTkwTml6TUh0Vk5MQmVYS2xreTVmQ0tNNTR3ODkzWEE2Tll3aUswdnNjVmxjcjBJeFlBMGdOT2krMHpNYTVvY2d2bW9sWnhHNy9IYW9OL0IzMTY1eW9acHY0MFZQeFhsUGtnbWtGWm1BcTR2OFNtUHRIN3BXNGsrWkVUVEE0ZEFSTFEvdjFmSmxSSmc0UzRLTVpOQktJeFdzK2RqbmplcXVHZmkvcGUzMnM5YnhEa2E4ZkdIN2xnRVBVb0JUa0NsVlc0SHk3VU9UV2luZUZWd0RZdmUraXBTYy9adGQzR1lBZW9Mbnh3QzBPajJVbmNXU241WXpBRVJlZVRmeDdYeGkrNVpUTWhSVmFyYlRnZFV2SzhsZEozNXhMZTBmdmp0bEI1ZzI2MlMzTHVnclVOYWphNWhJWXgvMEJUWUpYL3ZwNlZOOHZwYTRYK1FOWlBCZjdEd2dwZCtxZU1taFlCMzBRVUxEL1hKeUx6ZWo0eVZmSXlXOEJZSnoxR0tSQ1ZhdkdRbnlvM3M5SW9jbTB3czllZmxnWTZwUUh5d2daMzgrVlZpcVh6b25zdVpmNk8zZlNVNEhySUhMUy9UWVFRZldoMVU1Yy9YS0JBQk1QaTVBV3dHa3R1VXU2bFBadmtpN3VCeEV6cnZtMUUxS3NQdTh5VmVTZ2dva25ZQ0FaQkpaVXNJMnZ6Uk5lYWovTVVBUmpJQVUrZnBMUWE5S1pia3g0SklyM2MzbnJqZDFJWkVGVjR4KzIzSWVKT2dsWkNzY1pWdmRVTFdDU2ZNaWowcnFXQ1N5UG0rQ3M1QUNwOS9IRUlWRXFYQnAwU0pEQ0laVFY0aW0wPSJ9LFsic3RhcnRzLXdpdGgiLCIka2V5IiwicWluZXJ0aWEtY2xvdWQvZGJhZjY0ZTUtNGFiZS00N2Q3LTg4ZWUtMDRmMGE4YWJmNDliL2lucHV0LyJdXX0="' \
	--form 'X-Amz-Signature="db6acb2119fb79d7ef0ca618cf35a724bcb5d20f0dd46b65de5de64fb5dc4602"' \
	--form 'file=@"/C:/Users/YourUser/Desktop/input/base/sbgs167o.20d"'

Response samples

Content type
application/json
{
}