Download OpenAPI specification:Download
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.
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:
To ease integration with other services, most endpoints offer an optional metadata dictionary to store user defined data.
The Qinertia Cloud API is structured around three primary components: Containers, Container Files, and Processings. These components define a consistent and automated workflow for managing high-precision GNSS/INS post-processing jobs in the cloud.
Containers are temporary resources used to store, group, and organize the files you want to process via the GNSS/INS cloud service.
Key characteristics:
Once a container is created, you can add, update and delete files within it.
Container files are the user-provided data that will be processed. There are two types of files:
input
: RAW GNSS observations, INS sbgECom binary logs, IMU data, odometer velocity, etcresources
: Export profiles, report templates, geodesy resources, etcUploading a file is a two-step process:
Once a container is created and the necessary files are uploaded, you can start a processing by submitting a JSON processing settings file.
At any time, you can check the status and progress of a processing and retrieve any errors that may have occurred. Please prefer using webhooks instead of polling processings to monitor progress and status.
After a processing completes successfully, you can request and download the list of generated output files.
This API implements standard REST API HTTP methods as detailed below:
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 lists 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. |
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:
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.
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.
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.
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 resubmit 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 an organization that already has an ongoing processing.
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 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.
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.
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 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.
Security Scheme Type | OpenID Connect |
---|---|
Connect URL | https://account.sbg-systems.com/realms/sbg/.well-known/openid-configuration |
SBG Systems strives to minimize breaking changes that could disrupt existing integrations. However, as the Qinertia Cloud API evolves with new features and improvements, versioning is essential to ensure a stable and predictable developer experience.
Thanks to its RESTful and JSON-based design, the API is naturally resilient to change. When properly integrated, most changes can be introduced without breaking compatibility.
The Qinertia Cloud API implementation follows SBG Systems' standard Major.Minor.Build-Qualifier
versioning scheme:
Each release updates the version number accordingly and includes a detailed changelog.
In addition to the implementation version, the REST API itself uses endpoint-level versioning via the URL path (e.g., /api/v1/...
, /api/v2/...
).
This versioning scheme is independent of the Major.Minor.Build
version and is used to manage breaking changes to the API's structure or behavior.
Like any RESTful interface, changes fall into two categories:
When a breaking change is introduced, a new version of the endpoint is created (e.g., /api/v2/...
),
while the previous version remains available to ensure compatibility with existing integrations.
Example:
If the schema for /api/v1/info
changes significantly, the updated version should be made available at:
/api/v2/info
The original /api/v1/info
will continue to return the legacy schema, allowing clients to migrate at their own pace.
We are releasing version 2 (v2) of the system, which introduces major changes in how input files are handled, how processing jobs are started, and how metadata is managed.
These modifications are part of a broader effort to improve flexibility, performance, and maintainability across the platform.
Because these changes represent a breaking shift from v1 to v2:
All users must carefully read the updated documentation and adapt their code accordingly.
Using v1 code or logic in v2 without adjustments may result in failures or incorrect behavior.
Container endpoints allow you to create and manage containers.
Containers are temporary resources used to store, group, and organize the files you want to process via the GNSS/INS cloud service.
You can perform the following operations:
This endpoint returns a list of all existing containers created under an organization, including metadata such as container ID, creation date, current status, and expiration time.
qinertia-cloud:api-key
) organizationId required | string <uuid> Example: 6720f040-7dbc-40c4-be32-1bead64e5515 Organization ID |
page required | integer >= 0 Example: page=0 Pagination page |
perPage required | integer [ 1 .. 100 ] Example: perPage=100 Pagination page size |
# URL request example using curl tool # with all mandatory and optional path parameters curl --location --request GET 'https://qinertia-api.sbg-systems.com/api/v2/organizations/40bfe492-5a81-4050-9086-d8880080ecc1/containers?page=0&perPage=100'
{- "numItems": 1,
- "containers": [
- {
- "id": "27db37f5-5b5d-4beb-bf69-89748c4de264",
- "status": "empty",
- "region": "eu-west-3",
- "expirationDate": "2022-02-09T00:00:00.000Z",
- "createdAt": "2021-02-09T00:00:00.000Z",
- "updatedAt": "2022-02-09T00:00:00.000Z",
- "creatorId": "f98360da-87e7-4233-bed6-02997575d2f1",
- "organizationId": "51ec62be-8db9-4288-aac8-aa362fefa706",
- "metadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}, - "files": [
- {
- "id": "d29f1b92-3d75-45a5-9c91-0e47a1e0e0f5",
- "type": "input",
- "status": "pending",
- "size": 1048576,
- "path": "rover/rawSteam.bin",
- "createdAt": "2023-05-12T14:30:00.000Z",
- "updatedAt": "2024-01-15T10:45:00.000Z",
- "creatorId": "f98360da-87e7-4233-bed6-02997575d2f1",
- "metadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}, - "uploadInfo": {
- "fields": {
- "bucket": "qinertia-cloud-eu-west-3-prod",
- "X-Amz-Algorithm": "AWS4-HMAC-SHA256",
- "X-Amz-Credential": "AKIA4BWA67SAQ4XXITET/20210713/eu-west-3/s3/aws4_request",
- "X-Amz-Date": "20210713T092559Z",
- "key": "tmp/39ae5d26-3ab0-42e5-b6bc-5dfb2b62d2bc",
- "Policy": "eyJleHBpcmF0aW9uIjoiMjAyMS0wNy0xM1QwOTozNTo1OVoiLCJjb25kaXRpb25zIjpbWyJjb250ZW50LWxlbmd0aC1yYW5nZSIsMCw1MzY4NzA5MTIwXSxbInN0YXJ0cy13aXRoIiwiJENvbnRlbnQtVHlwZSIsIiJdLHsidGFnZ2luZyI6IjxUYWdnaW5nPlxuXHQ8VGFnU2V0PlxuXHQ8VGFnPlxuXHQgIDxLZXk+dXNlcjwvS2V5PlxuXHQgIDxWYWx1ZT40MmQyMzVhYy0wMWQ2LTRmY2YtOTc4Mi1kYjEwM2VmZTRmMTg8L1ZhbHVlPlxuXHQ8L1RhZz5cblx0PFRhZz5cblx0ICA8S2V5PnJlYXNvbjwvS2V5PlxuXHQgIDxWYWx1ZT5DcmVhdGUgcHJvZHVjdCBhdHRhY2htZW50PC9WYWx1ZT5cblx0PC9UYWc+XG5cdDwvVGFnU2V0PlxuICA8L1RhZ2dpbmc+In0seyJidWNrZXQiOiJteXNiZy10ZXN0In0seyJYLUFtei1BbGdvcml0aG0iOiJBV1M0LUhNQUMtU0hBMjU2In0seyJYLUFtei1DcmVkZW50aWFsIjoiQUtJQTRCV0E2N1NBUTRYWElURVQvMjAyMTA3MTMvZXUtd2VzdC0zL3MzL2F3czRfcmVxdWVzdCJ9LHsiWC1BbXotRGF0ZSI6IjIwMjEwNzEzVDA5MjU1OVoifSx7ImtleSI6InRtcC8zOWFlNWQyNi0zYWIwLTQyZTUtYjZiYy01ZGZiMmI2MmQyYmMifV19",
- "X-Amz-Signature": "db6acb2119fb79d7ef0ca618cf35a724bcb5d20f0dd46b65de5de64fb5dc3240"
}
}
}
]
}
]
}
Creates a new empty container for an organization and optionally, register the files to be uploaded during the same request.
qinertia-cloud:api-key
) organizationId required | string <uuid> Example: 6720f040-7dbc-40c4-be32-1bead64e5515 Organization ID |
This body is used to create a container.
region required | string (containerRegion) Enum: "eu-west-3" "us-west-1" "ap-northeast-1" "ap-southeast-2" Specifies the region where input and output files will be stored, and where processing will be executed. |
object (metadata) An optional free entity that you can use to store useful information for debugging, tracking events, etc. This object allows you to store data in key-value pairs. You can define up to 50 keys, with each key name having a maximum length of 40 characters and each value limited to 500 characters. The object will be returned each time you retrieve the entity it is attached to, as well as in the webhook payload. This entity cannot be partially updated. Any update will fully override it. | |
Array of objects (createContainerFile) An optional list of container files to create as part of the request. This field provides a shortcut to avoid making a separate call to the Add files in container endpoint when you already have all the necessary information about the files you intend to upload. |
{- "region": "eu-west-3",
- "metadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}, - "files": [
- {
- "path": "rover/rawSteam.bin",
- "type": "input",
- "size": 1048576,
- "metadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}
}
]
}
{- "id": "27db37f5-5b5d-4beb-bf69-89748c4de264",
- "status": "empty",
- "region": "eu-west-3",
- "expirationDate": "2022-02-09T00:00:00.000Z",
- "createdAt": "2021-02-09T00:00:00.000Z",
- "updatedAt": "2022-02-09T00:00:00.000Z",
- "creatorId": "f98360da-87e7-4233-bed6-02997575d2f1",
- "organizationId": "51ec62be-8db9-4288-aac8-aa362fefa706",
- "metadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}, - "files": [
- {
- "id": "d29f1b92-3d75-45a5-9c91-0e47a1e0e0f5",
- "type": "input",
- "status": "pending",
- "size": 1048576,
- "path": "rover/rawSteam.bin",
- "createdAt": "2023-05-12T14:30:00.000Z",
- "updatedAt": "2024-01-15T10:45:00.000Z",
- "creatorId": "f98360da-87e7-4233-bed6-02997575d2f1",
- "metadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}, - "uploadInfo": {
- "fields": {
- "bucket": "qinertia-cloud-eu-west-3-prod",
- "X-Amz-Algorithm": "AWS4-HMAC-SHA256",
- "X-Amz-Credential": "AKIA4BWA67SAQ4XXITET/20210713/eu-west-3/s3/aws4_request",
- "X-Amz-Date": "20210713T092559Z",
- "key": "tmp/39ae5d26-3ab0-42e5-b6bc-5dfb2b62d2bc",
- "Policy": "eyJleHBpcmF0aW9uIjoiMjAyMS0wNy0xM1QwOTozNTo1OVoiLCJjb25kaXRpb25zIjpbWyJjb250ZW50LWxlbmd0aC1yYW5nZSIsMCw1MzY4NzA5MTIwXSxbInN0YXJ0cy13aXRoIiwiJENvbnRlbnQtVHlwZSIsIiJdLHsidGFnZ2luZyI6IjxUYWdnaW5nPlxuXHQ8VGFnU2V0PlxuXHQ8VGFnPlxuXHQgIDxLZXk+dXNlcjwvS2V5PlxuXHQgIDxWYWx1ZT40MmQyMzVhYy0wMWQ2LTRmY2YtOTc4Mi1kYjEwM2VmZTRmMTg8L1ZhbHVlPlxuXHQ8L1RhZz5cblx0PFRhZz5cblx0ICA8S2V5PnJlYXNvbjwvS2V5PlxuXHQgIDxWYWx1ZT5DcmVhdGUgcHJvZHVjdCBhdHRhY2htZW50PC9WYWx1ZT5cblx0PC9UYWc+XG5cdDwvVGFnU2V0PlxuICA8L1RhZ2dpbmc+In0seyJidWNrZXQiOiJteXNiZy10ZXN0In0seyJYLUFtei1BbGdvcml0aG0iOiJBV1M0LUhNQUMtU0hBMjU2In0seyJYLUFtei1DcmVkZW50aWFsIjoiQUtJQTRCV0E2N1NBUTRYWElURVQvMjAyMTA3MTMvZXUtd2VzdC0zL3MzL2F3czRfcmVxdWVzdCJ9LHsiWC1BbXotRGF0ZSI6IjIwMjEwNzEzVDA5MjU1OVoifSx7ImtleSI6InRtcC8zOWFlNWQyNi0zYWIwLTQyZTUtYjZiYy01ZGZiMmI2MmQyYmMifV19",
- "X-Amz-Signature": "db6acb2119fb79d7ef0ca618cf35a724bcb5d20f0dd46b65de5de64fb5dc3240"
}
}
}
]
}
Returns information for a container.
qinertia-cloud:api-key
) containerId required | string <uuid> Example: 27db37f5-5b5d-4beb-bf69-89748c4de264 Container ID |
# URL request example using curl tool # with all mandatory and optional path parameters curl --location --request GET 'https://qinertia-api.sbg-systems.com/api/v2/containers/27db37f5-5b5d-4beb-bf69-89748c4de264'
{- "id": "27db37f5-5b5d-4beb-bf69-89748c4de264",
- "status": "empty",
- "region": "eu-west-3",
- "expirationDate": "2022-02-09T00:00:00.000Z",
- "createdAt": "2021-02-09T00:00:00.000Z",
- "updatedAt": "2022-02-09T00:00:00.000Z",
- "creatorId": "f98360da-87e7-4233-bed6-02997575d2f1",
- "organizationId": "51ec62be-8db9-4288-aac8-aa362fefa706",
- "metadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}, - "files": [
- {
- "id": "d29f1b92-3d75-45a5-9c91-0e47a1e0e0f5",
- "type": "input",
- "status": "pending",
- "size": 1048576,
- "path": "rover/rawSteam.bin",
- "createdAt": "2023-05-12T14:30:00.000Z",
- "updatedAt": "2024-01-15T10:45:00.000Z",
- "creatorId": "f98360da-87e7-4233-bed6-02997575d2f1",
- "metadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}, - "uploadInfo": {
- "fields": {
- "bucket": "qinertia-cloud-eu-west-3-prod",
- "X-Amz-Algorithm": "AWS4-HMAC-SHA256",
- "X-Amz-Credential": "AKIA4BWA67SAQ4XXITET/20210713/eu-west-3/s3/aws4_request",
- "X-Amz-Date": "20210713T092559Z",
- "key": "tmp/39ae5d26-3ab0-42e5-b6bc-5dfb2b62d2bc",
- "Policy": "eyJleHBpcmF0aW9uIjoiMjAyMS0wNy0xM1QwOTozNTo1OVoiLCJjb25kaXRpb25zIjpbWyJjb250ZW50LWxlbmd0aC1yYW5nZSIsMCw1MzY4NzA5MTIwXSxbInN0YXJ0cy13aXRoIiwiJENvbnRlbnQtVHlwZSIsIiJdLHsidGFnZ2luZyI6IjxUYWdnaW5nPlxuXHQ8VGFnU2V0PlxuXHQ8VGFnPlxuXHQgIDxLZXk+dXNlcjwvS2V5PlxuXHQgIDxWYWx1ZT40MmQyMzVhYy0wMWQ2LTRmY2YtOTc4Mi1kYjEwM2VmZTRmMTg8L1ZhbHVlPlxuXHQ8L1RhZz5cblx0PFRhZz5cblx0ICA8S2V5PnJlYXNvbjwvS2V5PlxuXHQgIDxWYWx1ZT5DcmVhdGUgcHJvZHVjdCBhdHRhY2htZW50PC9WYWx1ZT5cblx0PC9UYWc+XG5cdDwvVGFnU2V0PlxuICA8L1RhZ2dpbmc+In0seyJidWNrZXQiOiJteXNiZy10ZXN0In0seyJYLUFtei1BbGdvcml0aG0iOiJBV1M0LUhNQUMtU0hBMjU2In0seyJYLUFtei1DcmVkZW50aWFsIjoiQUtJQTRCV0E2N1NBUTRYWElURVQvMjAyMTA3MTMvZXUtd2VzdC0zL3MzL2F3czRfcmVxdWVzdCJ9LHsiWC1BbXotRGF0ZSI6IjIwMjEwNzEzVDA5MjU1OVoifSx7ImtleSI6InRtcC8zOWFlNWQyNi0zYWIwLTQyZTUtYjZiYy01ZGZiMmI2MmQyYmMifV19",
- "X-Amz-Signature": "db6acb2119fb79d7ef0ca618cf35a724bcb5d20f0dd46b65de5de64fb5dc3240"
}
}
}
]
}
Update an existing container information and more specifically the user metadata.
qinertia-cloud:api-key
) containerId required | string <uuid> Example: 27db37f5-5b5d-4beb-bf69-89748c4de264 Container ID |
This optional body is used to update a container
object (metadata) An optional free entity that you can use to store useful information for debugging, tracking events, etc. This object allows you to store data in key-value pairs. You can define up to 50 keys, with each key name having a maximum length of 40 characters and each value limited to 500 characters. The object will be returned each time you retrieve the entity it is attached to, as well as in the webhook payload. This entity cannot be partially updated. Any update will fully override it. |
{- "metadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}
}
{- "id": "27db37f5-5b5d-4beb-bf69-89748c4de264",
- "status": "empty",
- "region": "eu-west-3",
- "expirationDate": "2022-02-09T00:00:00.000Z",
- "createdAt": "2021-02-09T00:00:00.000Z",
- "updatedAt": "2022-02-09T00:00:00.000Z",
- "creatorId": "f98360da-87e7-4233-bed6-02997575d2f1",
- "organizationId": "51ec62be-8db9-4288-aac8-aa362fefa706",
- "metadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}, - "files": [
- {
- "id": "d29f1b92-3d75-45a5-9c91-0e47a1e0e0f5",
- "type": "input",
- "status": "pending",
- "size": 1048576,
- "path": "rover/rawSteam.bin",
- "createdAt": "2023-05-12T14:30:00.000Z",
- "updatedAt": "2024-01-15T10:45:00.000Z",
- "creatorId": "f98360da-87e7-4233-bed6-02997575d2f1",
- "metadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}, - "uploadInfo": {
- "fields": {
- "bucket": "qinertia-cloud-eu-west-3-prod",
- "X-Amz-Algorithm": "AWS4-HMAC-SHA256",
- "X-Amz-Credential": "AKIA4BWA67SAQ4XXITET/20210713/eu-west-3/s3/aws4_request",
- "X-Amz-Date": "20210713T092559Z",
- "key": "tmp/39ae5d26-3ab0-42e5-b6bc-5dfb2b62d2bc",
- "Policy": "eyJleHBpcmF0aW9uIjoiMjAyMS0wNy0xM1QwOTozNTo1OVoiLCJjb25kaXRpb25zIjpbWyJjb250ZW50LWxlbmd0aC1yYW5nZSIsMCw1MzY4NzA5MTIwXSxbInN0YXJ0cy13aXRoIiwiJENvbnRlbnQtVHlwZSIsIiJdLHsidGFnZ2luZyI6IjxUYWdnaW5nPlxuXHQ8VGFnU2V0PlxuXHQ8VGFnPlxuXHQgIDxLZXk+dXNlcjwvS2V5PlxuXHQgIDxWYWx1ZT40MmQyMzVhYy0wMWQ2LTRmY2YtOTc4Mi1kYjEwM2VmZTRmMTg8L1ZhbHVlPlxuXHQ8L1RhZz5cblx0PFRhZz5cblx0ICA8S2V5PnJlYXNvbjwvS2V5PlxuXHQgIDxWYWx1ZT5DcmVhdGUgcHJvZHVjdCBhdHRhY2htZW50PC9WYWx1ZT5cblx0PC9UYWc+XG5cdDwvVGFnU2V0PlxuICA8L1RhZ2dpbmc+In0seyJidWNrZXQiOiJteXNiZy10ZXN0In0seyJYLUFtei1BbGdvcml0aG0iOiJBV1M0LUhNQUMtU0hBMjU2In0seyJYLUFtei1DcmVkZW50aWFsIjoiQUtJQTRCV0E2N1NBUTRYWElURVQvMjAyMTA3MTMvZXUtd2VzdC0zL3MzL2F3czRfcmVxdWVzdCJ9LHsiWC1BbXotRGF0ZSI6IjIwMjEwNzEzVDA5MjU1OVoifSx7ImtleSI6InRtcC8zOWFlNWQyNi0zYWIwLTQyZTUtYjZiYy01ZGZiMmI2MmQyYmMifV19",
- "X-Amz-Signature": "db6acb2119fb79d7ef0ca618cf35a724bcb5d20f0dd46b65de5de64fb5dc3240"
}
}
}
]
}
Delete the container and every file you have uploaded on it.
The processings associated with the container remains, but the containerId
is set to null
. Result files are not affected.
This operation is immediate and can't be cancelled.
You cannot delete a container if an associated processing is currently running.
qinertia-cloud:api-key
) containerId required | string <uuid> Example: 27db37f5-5b5d-4beb-bf69-89748c4de264 Container ID |
# URL request example using curl tool # with all mandatory and optional path parameters curl --location --request DELETE 'https://qinertia-api.sbg-systems.com/api/v2/containers/27db37f5-5b5d-4beb-bf69-89748c4de264'
{- "title": "You are not authenticated",
- "details": "Bearer token not found in authorization header"
}
Container files endpoints allow you to create and manage files within a container.
You can perform the following operations:
Uploading a file is a two-step process that relies on Amazon S3:
Registers a list of files to be uploaded into a container. Each file is initially marked with a pending
status until it has been successfully uploaded.
For every registered file, an uploadInfo
object is returned containing the necessary details to upload the file to Amazon S3.
Note: A processing job can only be started once all registered files have been successfully uploaded.
qinertia-cloud:api-key
) containerId required | string <uuid> Example: 27db37f5-5b5d-4beb-bf69-89748c4de264 Container ID |
This body is used to add files to a container.
required | Array of objects (createContainerFile) List of files to be added to the container. |
{- "files": [
- {
- "path": "rover/rawSteam.bin",
- "type": "input",
- "size": 1048576,
- "metadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}
}
]
}
[- {
- "id": "d29f1b92-3d75-45a5-9c91-0e47a1e0e0f5",
- "type": "input",
- "status": "pending",
- "size": 1048576,
- "path": "rover/rawSteam.bin",
- "createdAt": "2023-05-12T14:30:00.000Z",
- "updatedAt": "2024-01-15T10:45:00.000Z",
- "creatorId": "f98360da-87e7-4233-bed6-02997575d2f1",
- "metadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}, - "uploadInfo": {
- "fields": {
- "bucket": "qinertia-cloud-eu-west-3-prod",
- "X-Amz-Algorithm": "AWS4-HMAC-SHA256",
- "X-Amz-Credential": "AKIA4BWA67SAQ4XXITET/20210713/eu-west-3/s3/aws4_request",
- "X-Amz-Date": "20210713T092559Z",
- "key": "tmp/39ae5d26-3ab0-42e5-b6bc-5dfb2b62d2bc",
- "Policy": "eyJleHBpcmF0aW9uIjoiMjAyMS0wNy0xM1QwOTozNTo1OVoiLCJjb25kaXRpb25zIjpbWyJjb250ZW50LWxlbmd0aC1yYW5nZSIsMCw1MzY4NzA5MTIwXSxbInN0YXJ0cy13aXRoIiwiJENvbnRlbnQtVHlwZSIsIiJdLHsidGFnZ2luZyI6IjxUYWdnaW5nPlxuXHQ8VGFnU2V0PlxuXHQ8VGFnPlxuXHQgIDxLZXk+dXNlcjwvS2V5PlxuXHQgIDxWYWx1ZT40MmQyMzVhYy0wMWQ2LTRmY2YtOTc4Mi1kYjEwM2VmZTRmMTg8L1ZhbHVlPlxuXHQ8L1RhZz5cblx0PFRhZz5cblx0ICA8S2V5PnJlYXNvbjwvS2V5PlxuXHQgIDxWYWx1ZT5DcmVhdGUgcHJvZHVjdCBhdHRhY2htZW50PC9WYWx1ZT5cblx0PC9UYWc+XG5cdDwvVGFnU2V0PlxuICA8L1RhZ2dpbmc+In0seyJidWNrZXQiOiJteXNiZy10ZXN0In0seyJYLUFtei1BbGdvcml0aG0iOiJBV1M0LUhNQUMtU0hBMjU2In0seyJYLUFtei1DcmVkZW50aWFsIjoiQUtJQTRCV0E2N1NBUTRYWElURVQvMjAyMTA3MTMvZXUtd2VzdC0zL3MzL2F3czRfcmVxdWVzdCJ9LHsiWC1BbXotRGF0ZSI6IjIwMjEwNzEzVDA5MjU1OVoifSx7ImtleSI6InRtcC8zOWFlNWQyNi0zYWIwLTQyZTUtYjZiYy01ZGZiMmI2MmQyYmMifV19",
- "X-Amz-Signature": "db6acb2119fb79d7ef0ca618cf35a724bcb5d20f0dd46b65de5de64fb5dc3240"
}
}
}
]
After registering files in a container, each file must be uploaded individually using an HTTP POST
request.
The uploadInfo
object provides the necessary information for uploading the file to Amazon S3:
uploadInfo.url
: the pre-signed Amazon S3 URL to post the file touploadInfo.fields
: the form fields required by Amazon S3 to authorize the uploadUse a multipart/form-data
POST request that includes all fields from uploadInfo.fields
, followed by the file content.
⚠️ Do not modify any field in
uploadInfo.fields
, as doing so will result in a403 Forbidden
error.
Upload a file directly to Amazon S3 using a multipart/form-data POST request.
The form fields and target URL must be obtained from the uploadInfo
object returned by the Add files in container or List container files endpoint.
All fields from uploadInfo.fields
must be included exactly as provided, or the request will fail with a 403 Forbidden
error.
⚠️ The
file
field containing the actual binary data must be the LAST FIELD in the form.
fields required | string Additional form fields provided in |
file required | string <binary> The binary content of the file to upload. |
# 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"'
{- "title": "You are not authenticated",
- "details": "Bearer token not found in authorization header"
}
Updates the file path, type or metadata of an existing file previously registered in the container.
qinertia-cloud:api-key
) containerFileId required | string <uuid> Example: f6a71755-1ed7-45e0-91ab-b7121995d0bb Container file ID |
This optional body is used to update a container file
type | string (containerFileType) Enum: "input" "resources" Type of the container file.
|
path | string Path of the file in the container. Must be a valid POSIX path.
If the path collides against another file within the container, the request will fail with a |
object (metadata) An optional free entity that you can use to store useful information for debugging, tracking events, etc. This object allows you to store data in key-value pairs. You can define up to 50 keys, with each key name having a maximum length of 40 characters and each value limited to 500 characters. The object will be returned each time you retrieve the entity it is attached to, as well as in the webhook payload. This entity cannot be partially updated. Any update will fully override it. |
{- "type": "input",
- "path": "rover/rawSteam.bin",
- "metadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}
}
{- "id": "d29f1b92-3d75-45a5-9c91-0e47a1e0e0f5",
- "type": "input",
- "status": "pending",
- "size": 1048576,
- "path": "rover/rawSteam.bin",
- "createdAt": "2023-05-12T14:30:00.000Z",
- "updatedAt": "2024-01-15T10:45:00.000Z",
- "creatorId": "f98360da-87e7-4233-bed6-02997575d2f1",
- "metadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}, - "uploadInfo": {
- "fields": {
- "bucket": "qinertia-cloud-eu-west-3-prod",
- "X-Amz-Algorithm": "AWS4-HMAC-SHA256",
- "X-Amz-Credential": "AKIA4BWA67SAQ4XXITET/20210713/eu-west-3/s3/aws4_request",
- "X-Amz-Date": "20210713T092559Z",
- "key": "tmp/39ae5d26-3ab0-42e5-b6bc-5dfb2b62d2bc",
- "Policy": "eyJleHBpcmF0aW9uIjoiMjAyMS0wNy0xM1QwOTozNTo1OVoiLCJjb25kaXRpb25zIjpbWyJjb250ZW50LWxlbmd0aC1yYW5nZSIsMCw1MzY4NzA5MTIwXSxbInN0YXJ0cy13aXRoIiwiJENvbnRlbnQtVHlwZSIsIiJdLHsidGFnZ2luZyI6IjxUYWdnaW5nPlxuXHQ8VGFnU2V0PlxuXHQ8VGFnPlxuXHQgIDxLZXk+dXNlcjwvS2V5PlxuXHQgIDxWYWx1ZT40MmQyMzVhYy0wMWQ2LTRmY2YtOTc4Mi1kYjEwM2VmZTRmMTg8L1ZhbHVlPlxuXHQ8L1RhZz5cblx0PFRhZz5cblx0ICA8S2V5PnJlYXNvbjwvS2V5PlxuXHQgIDxWYWx1ZT5DcmVhdGUgcHJvZHVjdCBhdHRhY2htZW50PC9WYWx1ZT5cblx0PC9UYWc+XG5cdDwvVGFnU2V0PlxuICA8L1RhZ2dpbmc+In0seyJidWNrZXQiOiJteXNiZy10ZXN0In0seyJYLUFtei1BbGdvcml0aG0iOiJBV1M0LUhNQUMtU0hBMjU2In0seyJYLUFtei1DcmVkZW50aWFsIjoiQUtJQTRCV0E2N1NBUTRYWElURVQvMjAyMTA3MTMvZXUtd2VzdC0zL3MzL2F3czRfcmVxdWVzdCJ9LHsiWC1BbXotRGF0ZSI6IjIwMjEwNzEzVDA5MjU1OVoifSx7ImtleSI6InRtcC8zOWFlNWQyNi0zYWIwLTQyZTUtYjZiYy01ZGZiMmI2MmQyYmMifV19",
- "X-Amz-Signature": "db6acb2119fb79d7ef0ca618cf35a724bcb5d20f0dd46b65de5de64fb5dc3240"
}
}
}
Permanently deletes a file that was previously registered in a container. This operation is immediate and cannot be undone.
qinertia-cloud:api-key
) containerFileId required | string <uuid> Example: f6a71755-1ed7-45e0-91ab-b7121995d0bb Container file ID |
# URL request example using curl tool # with all mandatory and optional path parameters curl --location --request DELETE 'https://qinertia-api.sbg-systems.com/api/v2/container-files/f6a71755-1ed7-45e0-91ab-b7121995d0bb'
{- "title": "You are not authenticated",
- "details": "Bearer token not found in authorization header"
}
These endpoints are used to manage GNSS/INS processing jobs for your organization.
You can perform the following operations:
Retrieves all processing jobs associated with an organization, including:
Use this endpoint to monitor the processing history and current activity for your organization.
qinertia-cloud:api-key
) organizationId required | string <uuid> Example: 6720f040-7dbc-40c4-be32-1bead64e5515 Organization ID |
page required | integer >= 0 Example: page=0 Pagination page |
perPage required | integer [ 1 .. 100 ] Example: perPage=100 Pagination page size |
# URL request example using curl tool # with all mandatory and optional path parameters curl --location --request GET 'https://qinertia-api.sbg-systems.com/api/v2/organizations/6720f040-7dbc-40c4-be32-1bead64e5515/processings?page=0&perPage=100'
{- "numItems": 1,
- "processings": [
- {
- "id": "813d9d26-811a-40d4-a4e0-c52b7cd338ff",
- "name": "Processing XYZ",
- "type": "gnssAuto",
- "status": "processing",
- "region": "eu-west-3",
- "processingResult": "succeeded",
- "processingDuration": 120,
- "processingStep": "processing",
- "processingProgress": 0.5,
- "archiveScheduledAt": "2023-05-01T12:00:00.000Z",
- "createdAt": "2021-02-09T00:00:00.000Z",
- "updatedAt": "2022-02-09T00:00:00.000Z",
- "creatorId": "f98360da-87e7-4233-bed6-02997575d2f1",
- "organizationId": "6720f040-7dbc-40c4-be32-1bead64e5515",
- "containerId": "27db37f5-5b5d-4beb-bf69-89748c4de264",
- "errorCount": {
- "errors": 0,
- "warnings": 1
}, - "missionLength": 1124,
- "missionLocationCountry": "France",
- "missionLocationRegion": "Yvelines",
- "missionLocationPlace": "Carrières-sur-Seine",
- "metadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}, - "processingJson": { }
}
]
}
Initiates a new processing job using the files registered in a container, based on the provided JSON configuration.
Before starting a processing, ensure that all input files have been successfully uploaded. Resource files are optional but must also be uploaded if referenced in the configuration.
The processingJson
field must contain a complete Qinertia processing configuration, which defines:
📘 For more details on how to structure this JSON, refer to the official Qinertia documentation and the Qinertia Cloud API GitHub for sample code and project templates.
qinertia-cloud:api-key
) organizationId required | string <uuid> Example: 6720f040-7dbc-40c4-be32-1bead64e5515 Organization ID |
This body is used to create and start a processing.
containerId required | string <uuid> ID of the associated container. |
processingJson required | object Processing json. More info |
name | string Nullable Name of the processing. |
object (metadata) An optional free entity that you can use to store useful information for debugging, tracking events, etc. This object allows you to store data in key-value pairs. You can define up to 50 keys, with each key name having a maximum length of 40 characters and each value limited to 500 characters. The object will be returned each time you retrieve the entity it is attached to, as well as in the webhook payload. This entity cannot be partially updated. Any update will fully override it. |
{- "containerId": "27db37f5-5b5d-4beb-bf69-89748c4de264",
- "name": "Processing XYZ",
- "processingJson": { },
- "metadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}
}
{- "id": "813d9d26-811a-40d4-a4e0-c52b7cd338ff",
- "name": "Processing XYZ",
- "type": "gnssAuto",
- "status": "processing",
- "region": "eu-west-3",
- "processingResult": "succeeded",
- "processingDuration": 120,
- "processingStep": "processing",
- "processingProgress": 0.5,
- "archiveScheduledAt": "2023-05-01T12:00:00.000Z",
- "createdAt": "2021-02-09T00:00:00.000Z",
- "updatedAt": "2022-02-09T00:00:00.000Z",
- "creatorId": "f98360da-87e7-4233-bed6-02997575d2f1",
- "organizationId": "6720f040-7dbc-40c4-be32-1bead64e5515",
- "containerId": "27db37f5-5b5d-4beb-bf69-89748c4de264",
- "errorCount": {
- "errors": 0,
- "warnings": 1
}, - "missionLength": 1124,
- "missionLocationCountry": "France",
- "missionLocationRegion": "Yvelines",
- "missionLocationPlace": "Carrières-sur-Seine",
- "metadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}, - "processingJson": { }
}
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.
qinertia-cloud:api-key
) processingId required | string <uuid> Example: 813d9d26-811a-40d4-a4e0-c52b7cd338ff Processing ID. |
# URL request example using curl tool # with all mandatory and optional path parameters curl --location --request GET 'https://qinertia-api.sbg-systems.com/api/v2/processings/2ba2c7fb-2441-4344-9243-5661c95c4ab6'
{- "id": "813d9d26-811a-40d4-a4e0-c52b7cd338ff",
- "name": "Processing XYZ",
- "type": "gnssAuto",
- "status": "processing",
- "region": "eu-west-3",
- "processingResult": "succeeded",
- "processingDuration": 120,
- "processingStep": "processing",
- "processingProgress": 0.5,
- "archiveScheduledAt": "2023-05-01T12:00:00.000Z",
- "createdAt": "2021-02-09T00:00:00.000Z",
- "updatedAt": "2022-02-09T00:00:00.000Z",
- "creatorId": "f98360da-87e7-4233-bed6-02997575d2f1",
- "organizationId": "6720f040-7dbc-40c4-be32-1bead64e5515",
- "containerId": "27db37f5-5b5d-4beb-bf69-89748c4de264",
- "errorCount": {
- "errors": 0,
- "warnings": 1
}, - "missionLength": 1124,
- "missionLocationCountry": "France",
- "missionLocationRegion": "Yvelines",
- "missionLocationPlace": "Carrières-sur-Seine",
- "metadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}, - "processingJson": { }
}
Cancel a processing job that is either pending or being processed.
qinertia-cloud:api-key
) processingId required | string <uuid> Example: 813d9d26-811a-40d4-a4e0-c52b7cd338ff Processing ID. |
# URL request example using curl tool # with all mandatory and optional path parameters curl --location --request POST 'https://qinertia-api.sbg-systems.com/api/v2/processings/2ba2c7fb-2441-4344-9243-5661c95c4ab6'
{- "title": "You are not authenticated",
- "details": "Bearer token not found in authorization header"
}
Archiving the processing will delete all associated result files.
qinertia-cloud:api-key
) processingId required | string <uuid> Example: 813d9d26-811a-40d4-a4e0-c52b7cd338ff Processing ID. |
# URL request example using curl tool # with all mandatory and optional path parameters curl --location --request POST 'https://qinertia-api.sbg-systems.com/api/v2/processings/813d9d26-811a-40d4-a4e0-c52b7cd338ff/archive'
{- "id": "813d9d26-811a-40d4-a4e0-c52b7cd338ff",
- "name": "Processing XYZ",
- "type": "gnssAuto",
- "status": "processing",
- "region": "eu-west-3",
- "processingResult": "succeeded",
- "processingDuration": 120,
- "processingStep": "processing",
- "processingProgress": 0.5,
- "archiveScheduledAt": "2023-05-01T12:00:00.000Z",
- "createdAt": "2021-02-09T00:00:00.000Z",
- "updatedAt": "2022-02-09T00:00:00.000Z",
- "creatorId": "f98360da-87e7-4233-bed6-02997575d2f1",
- "organizationId": "6720f040-7dbc-40c4-be32-1bead64e5515",
- "containerId": "27db37f5-5b5d-4beb-bf69-89748c4de264",
- "errorCount": {
- "errors": 0,
- "warnings": 1
}, - "missionLength": 1124,
- "missionLocationCountry": "France",
- "missionLocationRegion": "Yvelines",
- "missionLocationPlace": "Carrières-sur-Seine",
- "metadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}, - "processingJson": { }
}
Use this endpoint to retrieve download URLs for all files generated by the Qinertia Cloud API after processing.
This includes:
Note: Only processings with a status of
processed
will have downloadable output files.
qinertia-cloud:api-key
) processingId required | string <uuid> Example: 813d9d26-811a-40d4-a4e0-c52b7cd338ff Processing ID. |
# URL request example using curl tool # with all mandatory and optional path parameters curl --location --request GET 'https://qinertia-api.sbg-systems.com/api/v2/processings/813d9d26-811a-40d4-a4e0-c52b7cd338ff/output'
Get a detailed list of errors and warnings that have occurred on a processing job.
qinertia-cloud:api-key
) processingId required | string <uuid> Example: 813d9d26-811a-40d4-a4e0-c52b7cd338ff Processing ID. |
# URL request example using curl tool # with all mandatory and optional path parameters curl --location --request GET 'https://qinertia-api.sbg-systems.com/api/v2/processings/2ba2c7fb-2441-4344-9243-5661c95c4ab6/errors'
[- {
- "id": "e4d22857-6b5b-4947-9571-3fd3b1e5cb86",
- "level": "error",
- "message": "Base SBGS - Position frame is unknown. Fallback on WGS84.",
- "date": "2021-02-09T00:00:00.000Z"
}
]
Register webhooks to be notified whenever a processing job's status or progress is updated.
The Qinertia Cloud API uses webhooks to notify external services when a processing status changes.
A webhook is simply a URL exposed by your service that is called by SBG Systems’ cloud infrastructure when specific events occur.
For example, you can register a webhook that will trigger a POST
request to your service when a processing completes.
Webhooks are managed by a dedicated notification service provided by SBG Systems — not directly by the Qinertia Cloud API.
All webhook-related API requests must be sent to: https://notification-api.sbg-systems.com/api/v2
Webhooks are registered at the organization level. If your organization has multiple ongoing processings, the webhook will be triggered for each status or progress update.
You should check the received payload to identify which processing has issued the event.
Before registering a webhook, you must set up an HTTP endpoint on your service that accepts POST
requests.
POST
requests).If your endpoint is unavailable (due to a timeout, error, or non-2XX status), the webhook will be retried automatically.
Retry logic:
You can check missed webhooks events using this endpoint.
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
: The time the webhook was sent.Sbg-Signature
: A cryptographic signature using HMAC (Hash-based Message Authentication Code).To verify the webhook:
Sbg-Signature
header.The HMAC is computed as:
HMAC(Sbg-Timestamp + "." + rawBody)
Using:
Example (Node.js):
const signature = crypto
.createHmac('sha256', secret)
.update(timestamp + '.' + rawBody, 'utf8')
.digest('hex')
List all webhook endpoints that have been registered for an organization.
notification:user
) organizationId required | string <uuid> Example: 6720f040-7dbc-40c4-be32-1bead64e5515 Organization ID |
page required | integer >= 0 Example: page=0 Pagination page |
perPage required | integer [ 1 .. 100 ] Example: perPage=100 Pagination page size |
# URL request example using curl tool # with all mandatory and optional path parameters curl --location --request GET 'https://notification-api.sbg-systems.com/api/v2/organizations/40bfe492-5a81-4050-9086-d8880080ecc1/webhook-endpoints'
[- {
- "id": "882e8ef9-ab6b-4904-a860-78837baf838a",
- "enabledEventTypes": [
- "qinertia-cloud:processing-ended"
], - "secret": "qv30v6VCLuvEfRnzxx0d5I7gpFibL2Batdq7GYjRFypQcHONfVuOtuamZns7FiVe",
- "enabled": true,
- "metadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}
}
]
Create and register a new webhook endpoint for an organization.
notification:user
) organizationId required | string <uuid> Example: 6720f040-7dbc-40c4-be32-1bead64e5515 Organization ID |
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) Items Enum: "qinertia-cloud:processing-ended" "qinertia-cloud:processing-progress" "qinertia-cloud:processing-error" List of event types you wish to listen. |
object (metadata) An optional free entity that you can use to store useful information for debugging, tracking events, etc. This object allows you to store data in key-value pairs. You can define up to 50 keys, with each key name having a maximum length of 40 characters and each value limited to 500 characters. The object will be returned each time you retrieve the entity it is attached to, as well as in the webhook payload. This entity cannot be partially updated. Any update will fully override it. |
{- "enabledEventTypes": [
- "qinertia-cloud:processing-ended"
], - "metadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}
}
[- {
- "id": "882e8ef9-ab6b-4904-a860-78837baf838a",
- "enabledEventTypes": [
- "qinertia-cloud:processing-ended"
], - "secret": "qv30v6VCLuvEfRnzxx0d5I7gpFibL2Batdq7GYjRFypQcHONfVuOtuamZns7FiVe",
- "enabled": true,
- "metadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}
}
]
Update an existing webhook endpoint.
notification:user
) webhookEndpointId required | string <uuid> Example: 882e8ef9-ab6b-4904-a860-78837baf838a Webhook endpoint ID |
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) Items Enum: "qinertia-cloud:processing-ended" "qinertia-cloud:processing-progress" "qinertia-cloud:processing-error" List of event types you wish to listen. |
object (metadata) An optional free entity that you can use to store useful information for debugging, tracking events, etc. This object allows you to store data in key-value pairs. You can define up to 50 keys, with each key name having a maximum length of 40 characters and each value limited to 500 characters. The object will be returned each time you retrieve the entity it is attached to, as well as in the webhook payload. This entity cannot be partially updated. Any update will fully override it. | |
enabled | boolean If disabled, no webhook will be sent to it. |
{- "enabledEventTypes": [
- "qinertia-cloud:processing-ended"
], - "metadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}, - "enabled": true
}
[- {
- "id": "882e8ef9-ab6b-4904-a860-78837baf838a",
- "enabledEventTypes": [
- "qinertia-cloud:processing-ended"
], - "secret": "qv30v6VCLuvEfRnzxx0d5I7gpFibL2Batdq7GYjRFypQcHONfVuOtuamZns7FiVe",
- "enabled": true,
- "metadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}
}
]
Immediately delete a webhook endpoint. This operation can't be cancelled.
notification:user
) webhookEndpointId required | string <uuid> Example: 882e8ef9-ab6b-4904-a860-78837baf838a Webhook endpoint ID |
# URL request example using curl tool # with all mandatory and optional path parameters curl --location --request DELETE 'https://notification-api.sbg-systems.com/api/v2/webhook-endpoints/33d5bd02-43b6-4281-9c98-1bf9c2f8a431'
{- "title": "You are not authenticated",
- "details": "Bearer token not found in authorization header"
}
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.
notification:user
) webhookEndpointId required | string <uuid> Example: 882e8ef9-ab6b-4904-a860-78837baf838a Webhook endpoint ID |
# URL request example using curl tool # with all mandatory and optional path parameters curl --location --request GET 'https://notification-api.sbg-systems.com/api/v2/webhook-endpoints/33d5bd02-43b6-4281-9c98-1bf9c2f8a431/missed-webhooks?page=0&perPage=100'
[- {
- "id": "882e8ef9-ab6b-4904-a860-78837baf838a",
- "eventType": "qinertia-cloud:processing-ended",
- "payload": { },
- "createdAt": "2021-02-09T00:00:00.000Z",
- "endpointMetadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}
}
]
This is the HTTP request that we will send to your server when there are updates on your Qinertia Cloud API processings.
In order for us to send webhooks, you need to create a webhook endpoint.
The body of the request that our servers will send to your endpoint once the webhook is active.
The details of the processing can be found its payload field.
id | string <uuid> Webhook ID. |
eventType | string (eventType) Enum: "qinertia-cloud:processing-ended" "qinertia-cloud:processing-progress" "qinertia-cloud:processing-error" Event type |
createdAt | string <date-time> Creation date (ISO 8601 date). |
object (metadata) An optional free entity that you can use to store useful information for debugging, tracking events, etc. This object allows you to store data in key-value pairs. You can define up to 50 keys, with each key name having a maximum length of 40 characters and each value limited to 500 characters. The object will be returned each time you retrieve the entity it is attached to, as well as in the webhook payload. This entity cannot be partially updated. Any update will fully override it. | |
object (processing) |
{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "eventType": "qinertia-cloud:processing-ended",
- "createdAt": "2021-02-09T00:00:00.000Z",
- "endpointMetadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}, - "payload": {
- "id": "813d9d26-811a-40d4-a4e0-c52b7cd338ff",
- "name": "Processing XYZ",
- "type": "gnssAuto",
- "status": "processing",
- "region": "eu-west-3",
- "processingResult": "succeeded",
- "processingDuration": 120,
- "processingStep": "processing",
- "processingProgress": 0.5,
- "archiveScheduledAt": "2023-05-01T12:00:00.000Z",
- "createdAt": "2021-02-09T00:00:00.000Z",
- "updatedAt": "2022-02-09T00:00:00.000Z",
- "creatorId": "f98360da-87e7-4233-bed6-02997575d2f1",
- "organizationId": "6720f040-7dbc-40c4-be32-1bead64e5515",
- "containerId": "27db37f5-5b5d-4beb-bf69-89748c4de264",
- "errorCount": {
- "errors": 0,
- "warnings": 1
}, - "missionLength": 1124,
- "missionLocationCountry": "France",
- "missionLocationRegion": "Yvelines",
- "missionLocationPlace": "Carrières-sur-Seine",
- "metadata": {
- "customerId": 424242,
- "internalId": "0c93cf19-c9e6-493d-aabf-fc37da21178d"
}, - "processingJson": { }
}
}
Endpoints providing general information such as API version, engine version, and available regions.
Get server info like server version, engine versions, available regions...
# 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/info'
{- "version": "string",
- "engineVersions": [
- "4.2.14552-stable"
], - "apiVersion": "string",
- "regionsStatus": {
- "eu-west-3": "online",
- "us-west-1": "online",
- "ap-northeast-1": "online",
- "ap-southeast-2": "online"
}
}