Every API method accepts _request_timeout in seconds: a positive float for
the urllib3 total timeout, or a pair of positive floats (connect, read).
This controls HTTP transport waiting, not how long the server operation may run.
It is not a wall-clock deadline for the operation or for all retries combined.
Transport timeouts raise urllib3.exceptions.TimeoutError subclasses such as
ReadTimeoutError and ConnectTimeoutError. When retries are exhausted, urllib3
can instead raise urllib3.exceptions.MaxRetryError; inspect its reason to
distinguish a timeout from other connection failures. Retry behavior depends on
the HTTP method and Configuration.retries. These are client-side exceptions,
not HTTP response statuses or SDK ApiException responses.
A timeout does not guarantee cancellation or rollback of an operation accepted by the server. For example, after a start request times out, the instance may still be starting or may already be running; the timeout alone does not establish its state or mean it was stopped or destroyed. The request might not have reached the server at all, leaving the instance off. Treat the outcome as unknown and fetch the instance's current state before deciding whether to retry. If it has since been destroyed, that lookup may return not found; the timeout itself does not prove destruction. Do not blindly repeat a state-changing request.
Catch urllib3.exceptions.TimeoutError and urllib3.exceptions.MaxRetryError
separately from the SDK ApiException. MaxRetryError is not a subclass of
TimeoutError. With
_with_http_info the same rules apply. With _without_preload_content, a read
timeout may also occur later when reading the returned response body.
All URIs are relative to https://app.corellium.com/api
| Method | HTTP request | Description |
|---|---|---|
| v3_create_project | POST /v3/projects | Create a project |
| v3_create_project_key | POST /v3/projects/{projectId}/keys | Add a project key |
| v3_delete_project | DELETE /v3/projects/{projectId} | Delete a project |
| v3_delete_project_key | DELETE /v3/projects/{projectId}/keys/{keyId} | Delete a project key |
| v3_fetch_project_firmware_assets | POST /v3/projects/{projectId}/firmware-assets | Fetch firmware assets for a project |
| v3_get_project | GET /v3/projects/{projectId} | Get a project |
| v3_get_project_image_upload | GET /v3/projects/{projectId}/image-upload/{type}/{imageId}/{name} | Get image upload status |
| v3_get_project_network_log | GET /v3/projects/{projectId}/network/log | Get project network log |
| v3_get_project_network_status | GET /v3/projects/{projectId}/network/status | Get project network status |
| v3_get_project_vpn_config | GET /v3/projects/{projectId}/vpnconfig/{format} | Get project VPN configuration |
| v3_list_project_instances | GET /v3/projects/{projectId}/instances | List project instances |
| v3_list_project_keys | GET /v3/projects/{projectId}/keys | List project keys |
| v3_list_projects | GET /v3/projects | List projects |
| v3_patch_project | PATCH /v3/projects/{projectId} | Update a project |
| v3_preauth_vpn_config | POST /v3/projects/{projectId}/preauth-vpn-config/{filename} | Pre-authorize a VPN configuration download |
| v3_put_project_image_upload | PUT /v3/projects/{projectId}/image-upload/{type}/{imageId}/{name} | Upload image chunk |
Project v3_create_project(create_project_body)
Create a project
Required role: Domain administrator.
Creates a new project in your domain. Requires a domain administrator.
Give it quota, or it cannot run devices. A new project created without quotas has zero quota. Quota is reserved out of your domain's total allowance, so if the whole allowance is already reserved by other projects, lower one of them with v3PatchProject first.
When you set quotas, cores is required. instances is derived from cores if you leave it out, and memory is always calculated from cores (6144 MiB per core); any ram you send is ignored.
Returns 201 with the new project, including its id.
- Bearer (JWT) Authentication (BearerAuth):
import corellium
from corellium.models.create_project_body import CreateProjectBody
from corellium.models.project import Project
from corellium.rest import ApiException
from pprint import pprint
# Defining the host is optional and defaults to https://app.corellium.com/api
# See configuration.py for a list of all supported configuration parameters.
configuration = corellium.Configuration(
host = "https://app.corellium.com/api"
)
# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.
# Configure Bearer authorization (JWT): BearerAuth
configuration = corellium.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with corellium.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = corellium.ProjectsApi(api_client)
create_project_body = corellium.CreateProjectBody() # CreateProjectBody | Project to create.
try:
# Create a project
api_response = api_instance.v3_create_project(create_project_body)
print("The response of ProjectsApi->v3_create_project:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling ProjectsApi->v3_create_project: %s\n" % e)| Name | Type | Description | Notes |
|---|---|---|---|
| create_project_body | CreateProjectBody | Project to create. |
- Content-Type: application/json
- Accept: application/json
| Status code | Description | Response headers |
|---|---|---|
| 201 | The created project. | - |
| 400 | The project payload is invalid. | - |
| 401 | Not signed in: the `Authorization: Bearer <token>` header is missing, or the token is invalid or expired. Get a new token and retry. | - |
| 403 | Domain administrator permissions required. Signed in, but not allowed to do this: you lack the required role, have no access to the project, or your license does not include the feature. | - |
[Back to top] [Back to API list] [Back to Model list] [Back to README]
ProjectKey v3_create_project_key(project_id, create_project_key_body)
Add a project key
Required role: Domain administrator or project administrator.
Authorizes a public key on the project, so its holder can connect to the project's devices. Requires a domain or project administrator.
Set kind to ssh for SSH access or adb for Android Debug Bridge access, and put the public key (never the private key) in key, in the same one-line format as an OpenSSH authorized_keys entry. label is an optional note to help you recognise the key later. Returns 400 if the key cannot be parsed.
- Bearer (JWT) Authentication (BearerAuth):
import corellium
from corellium.models.create_project_key_body import CreateProjectKeyBody
from corellium.models.project_key import ProjectKey
from corellium.rest import ApiException
from pprint import pprint
# Defining the host is optional and defaults to https://app.corellium.com/api
# See configuration.py for a list of all supported configuration parameters.
configuration = corellium.Configuration(
host = "https://app.corellium.com/api"
)
# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.
# Configure Bearer authorization (JWT): BearerAuth
configuration = corellium.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with corellium.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = corellium.ProjectsApi(api_client)
project_id = '1c41b1bc-4f53-48a8-b690-ad30611e1960' # str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created.
create_project_key_body = corellium.CreateProjectKeyBody() # CreateProjectKeyBody | Key to add.
try:
# Add a project key
api_response = api_instance.v3_create_project_key(project_id, create_project_key_body)
print("The response of ProjectsApi->v3_create_project_key:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling ProjectsApi->v3_create_project_key: %s\n" % e)| Name | Type | Description | Notes |
|---|---|---|---|
| project_id | str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created. | |
| create_project_key_body | CreateProjectKeyBody | Key to add. |
- Content-Type: application/json
- Accept: application/json
| Status code | Description | Response headers |
|---|---|---|
| 201 | The added authorized key. | - |
| 400 | The supplied public key is invalid. | - |
| 401 | Not signed in: the `Authorization: Bearer <token>` header is missing, or the token is invalid or expired. Get a new token and retry. | - |
| 403 | Domain administrator or project administrator permissions required. This deployment is not licensed for SSH key pairing. | - |
| 404 | No project with the given identifier. | - |
[Back to top] [Back to API list] [Back to Model list] [Back to README]
v3_delete_project(project_id)
Delete a project
Required role: Domain administrator.
Deletes a project together with every file (image) uploaded to it. Requires a domain administrator.
The project must not contain any devices: if it does, the request fails with 409 and nothing is deleted. Delete the devices first with DELETE /v3/instances/{instanceId} and wait until they are gone.
Deletes are idempotent: an unknown projectId, or a project that was already deleted, is a successful no-op that still returns 204, and
repeated calls return 204 as well. A 404 means the request path did not match a delete route, not
that the target was missing.
- Bearer (JWT) Authentication (BearerAuth):
import corellium
from corellium.rest import ApiException
from pprint import pprint
# Defining the host is optional and defaults to https://app.corellium.com/api
# See configuration.py for a list of all supported configuration parameters.
configuration = corellium.Configuration(
host = "https://app.corellium.com/api"
)
# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.
# Configure Bearer authorization (JWT): BearerAuth
configuration = corellium.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with corellium.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = corellium.ProjectsApi(api_client)
project_id = '1c41b1bc-4f53-48a8-b690-ad30611e1960' # str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created.
try:
# Delete a project
api_instance.v3_delete_project(project_id)
except Exception as e:
print("Exception when calling ProjectsApi->v3_delete_project: %s\n" % e)| Name | Type | Description | Notes |
|---|---|---|---|
| project_id | str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created. |
void (empty response body)
- Content-Type: Not defined
- Accept: application/json
| Status code | Description | Response headers |
|---|---|---|
| 204 | The project was deleted. | - |
| 401 | Not signed in: the `Authorization: Bearer <token>` header is missing, or the token is invalid or expired. Get a new token and retry. | - |
| 403 | Domain administrator permissions required. Signed in, but not allowed to do this: you lack the required role, have no access to the project, or your license does not include the feature. | - |
| 409 | The project still contains devices and cannot be deleted. | - |
[Back to top] [Back to API list] [Back to Model list] [Back to README]
v3_delete_project_key(project_id, key_id)
Delete a project key
Required role: Domain administrator or project administrator.
Removes an authorized key from the project, so it can no longer be used to connect to the project's devices. Requires a domain or project administrator.
Deletes are idempotent: a keyId that is not present on the project, or an unknown projectId, is a successful no-op that still returns 204, and
repeated calls return 204 as well. A 404 means the request path did not match a delete route, not
that the target was missing.
- Bearer (JWT) Authentication (BearerAuth):
import corellium
from corellium.rest import ApiException
from pprint import pprint
# Defining the host is optional and defaults to https://app.corellium.com/api
# See configuration.py for a list of all supported configuration parameters.
configuration = corellium.Configuration(
host = "https://app.corellium.com/api"
)
# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.
# Configure Bearer authorization (JWT): BearerAuth
configuration = corellium.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with corellium.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = corellium.ProjectsApi(api_client)
project_id = '1c41b1bc-4f53-48a8-b690-ad30611e1960' # str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created.
key_id = '9c1098dc-e881-41fb-b3af-e2d5ddd55d86' # str | Project key identifier.
try:
# Delete a project key
api_instance.v3_delete_project_key(project_id, key_id)
except Exception as e:
print("Exception when calling ProjectsApi->v3_delete_project_key: %s\n" % e)| Name | Type | Description | Notes |
|---|---|---|---|
| project_id | str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created. | |
| key_id | str | Project key identifier. |
void (empty response body)
- Content-Type: Not defined
- Accept: application/json
| Status code | Description | Response headers |
|---|---|---|
| 204 | The authorized key was removed. | - |
| 401 | Not signed in: the `Authorization: Bearer <token>` header is missing, or the token is invalid or expired. Get a new token and retry. | - |
| 403 | Domain administrator or project administrator permissions required. Signed in, but not allowed to do this: you lack the required role, have no access to the project, or your license does not include the feature. | - |
[Back to top] [Back to API list] [Back to Model list] [Back to README]
FetchFirmwareAssetsResponse v3_fetch_project_firmware_assets(project_id, fetch_firmware_assets_body)
Fetch firmware assets for a project
Asks the platform to download firmware assets (for example the decryption keys some iOS versions need to boot) from the given URLs and store them for your domain. Use it when device creation reports that assets are missing: the missing asset URLs appear in that error and in each firmware entry. The response lists which URLs were newly stored, which were already present, and which failed and why. Returns 409 if downloading assets is turned off on this deployment (for example an air-gapped one); there, upload the assets as a file and install them with POST /v3/images/install-firmware-assets instead.
- Bearer (JWT) Authentication (BearerAuth):
import corellium
from corellium.models.fetch_firmware_assets_body import FetchFirmwareAssetsBody
from corellium.models.fetch_firmware_assets_response import FetchFirmwareAssetsResponse
from corellium.rest import ApiException
from pprint import pprint
# Defining the host is optional and defaults to https://app.corellium.com/api
# See configuration.py for a list of all supported configuration parameters.
configuration = corellium.Configuration(
host = "https://app.corellium.com/api"
)
# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.
# Configure Bearer authorization (JWT): BearerAuth
configuration = corellium.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with corellium.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = corellium.ProjectsApi(api_client)
project_id = '1c41b1bc-4f53-48a8-b690-ad30611e1960' # str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created.
fetch_firmware_assets_body = corellium.FetchFirmwareAssetsBody() # FetchFirmwareAssetsBody | Firmware asset URLs to fetch.
try:
# Fetch firmware assets for a project
api_response = api_instance.v3_fetch_project_firmware_assets(project_id, fetch_firmware_assets_body)
print("The response of ProjectsApi->v3_fetch_project_firmware_assets:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling ProjectsApi->v3_fetch_project_firmware_assets: %s\n" % e)| Name | Type | Description | Notes |
|---|---|---|---|
| project_id | str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created. | |
| fetch_firmware_assets_body | FetchFirmwareAssetsBody | Firmware asset URLs to fetch. |
- Content-Type: application/json
- Accept: application/json
| Status code | Description | Response headers |
|---|---|---|
| 200 | The fetch result reported by the firmware service. | - |
| 400 | The asset URL payload is invalid. | - |
| 401 | Not signed in: the `Authorization: Bearer <token>` header is missing, or the token is invalid or expired. Get a new token and retry. | - |
| 403 | Signed in, but not allowed to do this: you lack the required role, have no access to the project, or your license does not include the feature. | - |
| 404 | No project with the given identifier. | - |
| 409 | Fetching firmware assets is disabled on this cluster. | - |
| 503 | The firmware service is currently unavailable. | - |
[Back to top] [Back to API list] [Back to Model list] [Back to README]
Project v3_get_project(project_id)
Get a project
Returns one project with its settings, quotas, and current resource usage (quotasUsed). Compare quotas with quotasUsed to see whether there is room for another device before creating one. Returns 404 if the project does not exist and 403 if you cannot access it.
- Bearer (JWT) Authentication (BearerAuth):
import corellium
from corellium.models.project import Project
from corellium.rest import ApiException
from pprint import pprint
# Defining the host is optional and defaults to https://app.corellium.com/api
# See configuration.py for a list of all supported configuration parameters.
configuration = corellium.Configuration(
host = "https://app.corellium.com/api"
)
# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.
# Configure Bearer authorization (JWT): BearerAuth
configuration = corellium.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with corellium.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = corellium.ProjectsApi(api_client)
project_id = '1c41b1bc-4f53-48a8-b690-ad30611e1960' # str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created.
try:
# Get a project
api_response = api_instance.v3_get_project(project_id)
print("The response of ProjectsApi->v3_get_project:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling ProjectsApi->v3_get_project: %s\n" % e)| Name | Type | Description | Notes |
|---|---|---|---|
| project_id | str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created. |
- Content-Type: Not defined
- Accept: application/json
| Status code | Description | Response headers |
|---|---|---|
| 200 | The requested project. | - |
| 401 | Not signed in: the `Authorization: Bearer <token>` header is missing, or the token is invalid or expired. Get a new token and retry. | - |
| 403 | Signed in, but not allowed to do this: you lack the required role, have no access to the project, or your license does not include the feature. | - |
| 404 | No project with the given identifier. | - |
[Back to top] [Back to API list] [Back to Model list] [Back to README]
bytearray v3_get_project_image_upload(project_id, type, image_id, name, resumable_chunk_number=resumable_chunk_number)
Get image upload status
Checks the progress of a chunked upload made with v3PutProjectImageUpload, or downloads the finished file.
- With chunk parameters (
resumableChunkNumberand friends): returns 200 if that chunk is already stored, or 204 if it still needs to be sent. Use this to resume an interrupted upload without re-sending data. - Without them: downloads the image file.
- Bearer (JWT) Authentication (BearerAuth):
import corellium
from corellium.rest import ApiException
from pprint import pprint
# Defining the host is optional and defaults to https://app.corellium.com/api
# See configuration.py for a list of all supported configuration parameters.
configuration = corellium.Configuration(
host = "https://app.corellium.com/api"
)
# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.
# Configure Bearer authorization (JWT): BearerAuth
configuration = corellium.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with corellium.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = corellium.ProjectsApi(api_client)
project_id = '1c41b1bc-4f53-48a8-b690-ad30611e1960' # str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created.
type = 'type_example' # str | What kind of file this is, for example `fw` for firmware or `kernel`. Uses the same values as `type` on `POST /v3/images`; see `ImageType` for what each means. Types that need a license feature your license lacks are rejected with 403.
image_id = 'image_id_example' # str | An ID you choose for the new image: generate a random UUID once per file and use the same value for every chunk of that file. The image record is created with this ID when the first chunk arrives. Use a new UUID for each new upload.
name = 'name_example' # str | The file name to store, URL-encoded (for example `my%20firmware.ipsw`). Becomes the image `name`.
resumable_chunk_number = 3.4 # float | Chunk number. When present the response reports whether that chunk was already stored (200) or still needs to be uploaded (204) instead of returning the image file. (optional)
try:
# Get image upload status
api_response = api_instance.v3_get_project_image_upload(project_id, type, image_id, name, resumable_chunk_number=resumable_chunk_number)
print("The response of ProjectsApi->v3_get_project_image_upload:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling ProjectsApi->v3_get_project_image_upload: %s\n" % e)| Name | Type | Description | Notes |
|---|---|---|---|
| project_id | str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created. | |
| type | str | What kind of file this is, for example `fw` for firmware or `kernel`. Uses the same values as `type` on `POST /v3/images`; see `ImageType` for what each means. Types that need a license feature your license lacks are rejected with 403. | |
| image_id | str | An ID you choose for the new image: generate a random UUID once per file and use the same value for every chunk of that file. The image record is created with this ID when the first chunk arrives. Use a new UUID for each new upload. | |
| name | str | The file name to store, URL-encoded (for example `my%20firmware.ipsw`). Becomes the image `name`. | |
| resumable_chunk_number | float | Chunk number. When present the response reports whether that chunk was already stored (200) or still needs to be uploaded (204) instead of returning the image file. | [optional] |
bytearray
- Content-Type: Not defined
- Accept: application/octet-stream, application/json
| Status code | Description | Response headers |
|---|---|---|
| 200 | An empty JSON object when a probed chunk is already stored, the image bytes when the file is stored locally, or the image metadata when no file has been stored yet. | - |
| 204 | The probed chunk is not stored yet and still needs to be uploaded. | - |
| 302 | The image is stored in S3; follow the Location header to download it. | * Location - URL the client is redirected to. |
| 400 | The image identifier is invalid or the image record is missing. | - |
| 401 | Not signed in: the `Authorization: Bearer <token>` header is missing, or the token is invalid or expired. Get a new token and retry. | - |
| 403 | Signed in, but not allowed to do this: you lack the required role, have no access to the project, or your license does not include the feature. | - |
| 404 | No image with the given identifier. | - |
[Back to top] [Back to API list] [Back to Model list] [Back to README]
str v3_get_project_network_log(project_id)
Get project network log
Returns the log of the project's outbound VPN connection as plain text. Use it to diagnose a connection that will not come up.
- Bearer (JWT) Authentication (BearerAuth):
import corellium
from corellium.rest import ApiException
from pprint import pprint
# Defining the host is optional and defaults to https://app.corellium.com/api
# See configuration.py for a list of all supported configuration parameters.
configuration = corellium.Configuration(
host = "https://app.corellium.com/api"
)
# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.
# Configure Bearer authorization (JWT): BearerAuth
configuration = corellium.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with corellium.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = corellium.ProjectsApi(api_client)
project_id = '1c41b1bc-4f53-48a8-b690-ad30611e1960' # str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created.
try:
# Get project network log
api_response = api_instance.v3_get_project_network_log(project_id)
print("The response of ProjectsApi->v3_get_project_network_log:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling ProjectsApi->v3_get_project_network_log: %s\n" % e)| Name | Type | Description | Notes |
|---|---|---|---|
| project_id | str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created. |
str
- Content-Type: Not defined
- Accept: text/plain, application/json
| Status code | Description | Response headers |
|---|---|---|
| 200 | The project network connection log. | - |
| 401 | Not signed in: the `Authorization: Bearer <token>` header is missing, or the token is invalid or expired. Get a new token and retry. | - |
| 403 | Signed in, but not allowed to do this: you lack the required role, have no access to the project, or your license does not include the feature. | - |
| 404 | No project with the given identifier. | - |
[Back to top] [Back to API list] [Back to Model list] [Back to README]
NetworkStatus v3_get_project_network_status(project_id)
Get project network status
Returns the state of the project's outbound VPN connection (the connection set in settings.connection), such as whether it is connected, and error details if it is not. Use it to check that device traffic is flowing through your VPN.
- Bearer (JWT) Authentication (BearerAuth):
import corellium
from corellium.models.network_status import NetworkStatus
from corellium.rest import ApiException
from pprint import pprint
# Defining the host is optional and defaults to https://app.corellium.com/api
# See configuration.py for a list of all supported configuration parameters.
configuration = corellium.Configuration(
host = "https://app.corellium.com/api"
)
# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.
# Configure Bearer authorization (JWT): BearerAuth
configuration = corellium.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with corellium.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = corellium.ProjectsApi(api_client)
project_id = '1c41b1bc-4f53-48a8-b690-ad30611e1960' # str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created.
try:
# Get project network status
api_response = api_instance.v3_get_project_network_status(project_id)
print("The response of ProjectsApi->v3_get_project_network_status:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling ProjectsApi->v3_get_project_network_status: %s\n" % e)| Name | Type | Description | Notes |
|---|---|---|---|
| project_id | str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created. |
- Content-Type: Not defined
- Accept: application/json
| Status code | Description | Response headers |
|---|---|---|
| 200 | The project network connection status. | - |
| 401 | Not signed in: the `Authorization: Bearer <token>` header is missing, or the token is invalid or expired. Get a new token and retry. | - |
| 403 | Signed in, but not allowed to do this: you lack the required role, have no access to the project, or your license does not include the feature. | - |
| 404 | No project with the given identifier. | - |
[Back to top] [Back to API list] [Back to Model list] [Back to README]
str v3_get_project_vpn_config(project_id, format)
Get project VPN configuration
Downloads a VPN configuration that lets your computer join the project's device network, so you can reach the devices directly (for example by SSH or a local debugger). Set format to 'ovpn' to get an OpenVPN profile to import into any OpenVPN client. Any other value returns a zip for the Tunnelblick client on macOS. Returns 400 if the project does not have a VPN endpoint yet.
- Bearer (JWT) Authentication (BearerAuth):
import corellium
from corellium.rest import ApiException
from pprint import pprint
# Defining the host is optional and defaults to https://app.corellium.com/api
# See configuration.py for a list of all supported configuration parameters.
configuration = corellium.Configuration(
host = "https://app.corellium.com/api"
)
# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.
# Configure Bearer authorization (JWT): BearerAuth
configuration = corellium.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with corellium.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = corellium.ProjectsApi(api_client)
project_id = '1c41b1bc-4f53-48a8-b690-ad30611e1960' # str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created.
format = 'ovpn' # str | VPN configuration format: 'ovpn' for an OpenVPN profile; any other value returns a Tunnelblick zip.
try:
# Get project VPN configuration
api_response = api_instance.v3_get_project_vpn_config(project_id, format)
print("The response of ProjectsApi->v3_get_project_vpn_config:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling ProjectsApi->v3_get_project_vpn_config: %s\n" % e)| Name | Type | Description | Notes |
|---|---|---|---|
| project_id | str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created. | |
| format | str | VPN configuration format: 'ovpn' for an OpenVPN profile; any other value returns a Tunnelblick zip. |
str
- Content-Type: Not defined
- Accept: application/x-openvpn-profile, application/zip, application/json
| Status code | Description | Response headers |
|---|---|---|
| 200 | The VPN configuration, as a text OpenVPN profile or a binary Tunnelblick zip. | - |
| 400 | The project does not have an active VPN IP or port. | - |
| 401 | Not signed in: the `Authorization: Bearer <token>` header is missing, or the token is invalid or expired. Get a new token and retry. | - |
| 403 | Signed in, but not allowed to do this: you lack the required role, have no access to the project, or your license does not include the feature. | - |
| 404 | No project with the given identifier. | - |
[Back to top] [Back to API list] [Back to Model list] [Back to README]
ProjectInstanceList v3_list_project_instances(project_id, limit=limit, offset=offset, name=name)
List project instances
Lists the devices (instances) in a project, with their ID, name and current state. Results are paginated with limit and offset; use name to find a device by its exact name. For full device details, call GET /v3/instances/{instanceId}.
- Bearer (JWT) Authentication (BearerAuth):
import corellium
from corellium.models.project_instance_list import ProjectInstanceList
from corellium.rest import ApiException
from pprint import pprint
# Defining the host is optional and defaults to https://app.corellium.com/api
# See configuration.py for a list of all supported configuration parameters.
configuration = corellium.Configuration(
host = "https://app.corellium.com/api"
)
# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.
# Configure Bearer authorization (JWT): BearerAuth
configuration = corellium.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with corellium.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = corellium.ProjectsApi(api_client)
project_id = '1c41b1bc-4f53-48a8-b690-ad30611e1960' # str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created.
limit = 100 # float | Most results to return in one page. Whole number from 1 to 1000; defaults to 100. A value outside that range is rejected with 400. (optional) (default to 100)
offset = 0 # float | How many results to skip before this page starts; defaults to 0. To get the next page, add `limit` to the previous `offset`. (optional) (default to 0)
name = 'My Device' # str | Filter by exact instance name. (optional)
try:
# List project instances
api_response = api_instance.v3_list_project_instances(project_id, limit=limit, offset=offset, name=name)
print("The response of ProjectsApi->v3_list_project_instances:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling ProjectsApi->v3_list_project_instances: %s\n" % e)| Name | Type | Description | Notes |
|---|---|---|---|
| project_id | str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created. | |
| limit | float | Most results to return in one page. Whole number from 1 to 1000; defaults to 100. A value outside that range is rejected with 400. | [optional] [default to 100] |
| offset | float | How many results to skip before this page starts; defaults to 0. To get the next page, add `limit` to the previous `offset`. | [optional] [default to 0] |
| name | str | Filter by exact instance name. | [optional] |
- Content-Type: Not defined
- Accept: application/json
| Status code | Description | Response headers |
|---|---|---|
| 200 | Paginated list of instances in the project. | - |
| 401 | Not signed in: the `Authorization: Bearer <token>` header is missing, or the token is invalid or expired. Get a new token and retry. | - |
| 403 | Signed in, but not allowed to do this: you lack the required role, have no access to the project, or your license does not include the feature. | - |
| 404 | No project with the given identifier. | - |
[Back to top] [Back to API list] [Back to Model list] [Back to README]
ProjectKeyList v3_list_project_keys(project_id, limit=limit, offset=offset)
List project keys
Lists the public keys authorized on this project. Keys let you connect to the project's devices over SSH, or to Android devices over ADB, without a password. Returns 403 if your deployment is not licensed for key pairing.
- Bearer (JWT) Authentication (BearerAuth):
import corellium
from corellium.models.project_key_list import ProjectKeyList
from corellium.rest import ApiException
from pprint import pprint
# Defining the host is optional and defaults to https://app.corellium.com/api
# See configuration.py for a list of all supported configuration parameters.
configuration = corellium.Configuration(
host = "https://app.corellium.com/api"
)
# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.
# Configure Bearer authorization (JWT): BearerAuth
configuration = corellium.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with corellium.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = corellium.ProjectsApi(api_client)
project_id = '1c41b1bc-4f53-48a8-b690-ad30611e1960' # str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created.
limit = 100 # float | Most results to return in one page. Whole number from 1 to 1000; defaults to 100. A value outside that range is rejected with 400. (optional) (default to 100)
offset = 0 # float | How many results to skip before this page starts; defaults to 0. To get the next page, add `limit` to the previous `offset`. (optional) (default to 0)
try:
# List project keys
api_response = api_instance.v3_list_project_keys(project_id, limit=limit, offset=offset)
print("The response of ProjectsApi->v3_list_project_keys:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling ProjectsApi->v3_list_project_keys: %s\n" % e)| Name | Type | Description | Notes |
|---|---|---|---|
| project_id | str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created. | |
| limit | float | Most results to return in one page. Whole number from 1 to 1000; defaults to 100. A value outside that range is rejected with 400. | [optional] [default to 100] |
| offset | float | How many results to skip before this page starts; defaults to 0. To get the next page, add `limit` to the previous `offset`. | [optional] [default to 0] |
- Content-Type: Not defined
- Accept: application/json
| Status code | Description | Response headers |
|---|---|---|
| 200 | Paginated list of authorized keys. | - |
| 401 | Not signed in: the `Authorization: Bearer <token>` header is missing, or the token is invalid or expired. Get a new token and retry. | - |
| 403 | This deployment is not licensed for SSH key pairing. | - |
| 404 | No project with the given identifier. | - |
[Back to top] [Back to API list] [Back to Model list] [Back to README]
ProjectList v3_list_projects(limit=limit, offset=offset, name=name)
List projects
Lists the projects you can access. A project is a workspace that holds devices (instances), the files uploaded for them, and a share of your domain's resources (CPU cores, memory and device count). Almost every other call needs a project ID, so this is usually the first call after you sign in.
Results are paginated with limit and offset. Use name to find one project by its exact name (not case-sensitive). Each entry includes its quotas, current usage, and the number of authorized keys.
- Bearer (JWT) Authentication (BearerAuth):
import corellium
from corellium.models.project_list import ProjectList
from corellium.rest import ApiException
from pprint import pprint
# Defining the host is optional and defaults to https://app.corellium.com/api
# See configuration.py for a list of all supported configuration parameters.
configuration = corellium.Configuration(
host = "https://app.corellium.com/api"
)
# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.
# Configure Bearer authorization (JWT): BearerAuth
configuration = corellium.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with corellium.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = corellium.ProjectsApi(api_client)
limit = 100 # float | Most results to return in one page. Whole number from 1 to 1000; defaults to 100. A value outside that range is rejected with 400. (optional) (default to 100)
offset = 0 # float | How many results to skip before this page starts; defaults to 0. To get the next page, add `limit` to the previous `offset`. (optional) (default to 0)
name = 'Default Project' # str | Filter by exact project name (case-insensitive). (optional)
try:
# List projects
api_response = api_instance.v3_list_projects(limit=limit, offset=offset, name=name)
print("The response of ProjectsApi->v3_list_projects:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling ProjectsApi->v3_list_projects: %s\n" % e)| Name | Type | Description | Notes |
|---|---|---|---|
| limit | float | Most results to return in one page. Whole number from 1 to 1000; defaults to 100. A value outside that range is rejected with 400. | [optional] [default to 100] |
| offset | float | How many results to skip before this page starts; defaults to 0. To get the next page, add `limit` to the previous `offset`. | [optional] [default to 0] |
| name | str | Filter by exact project name (case-insensitive). | [optional] |
- Content-Type: Not defined
- Accept: application/json
| Status code | Description | Response headers |
|---|---|---|
| 200 | Paginated list of projects. | - |
| 401 | Not signed in: the `Authorization: Bearer <token>` header is missing, or the token is invalid or expired. Get a new token and retry. | - |
| 403 | Signed in, but not allowed to do this: you lack the required role, have no access to the project, or your license does not include the feature. | - |
[Back to top] [Back to API list] [Back to Model list] [Back to README]
Project v3_patch_project(project_id, patch_project_body)
Update a project
Changes a project's name, settings or quotas. Send only the fields you want to change.
settingsis merged into the existing settings: fields you leave out keep their current values.quotasfollows the same rules as on create:coresis required,instancesis derived when omitted, and memory is always calculated from cores.- Changing the network connection (
settings.connection) is refused with 400 while any device in the project is running. Stop the devices first.
Returns the updated project.
- Bearer (JWT) Authentication (BearerAuth):
import corellium
from corellium.models.patch_project_body import PatchProjectBody
from corellium.models.project import Project
from corellium.rest import ApiException
from pprint import pprint
# Defining the host is optional and defaults to https://app.corellium.com/api
# See configuration.py for a list of all supported configuration parameters.
configuration = corellium.Configuration(
host = "https://app.corellium.com/api"
)
# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.
# Configure Bearer authorization (JWT): BearerAuth
configuration = corellium.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with corellium.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = corellium.ProjectsApi(api_client)
project_id = '1c41b1bc-4f53-48a8-b690-ad30611e1960' # str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created.
patch_project_body = corellium.PatchProjectBody() # PatchProjectBody | Fields to update.
try:
# Update a project
api_response = api_instance.v3_patch_project(project_id, patch_project_body)
print("The response of ProjectsApi->v3_patch_project:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling ProjectsApi->v3_patch_project: %s\n" % e)| Name | Type | Description | Notes |
|---|---|---|---|
| project_id | str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created. | |
| patch_project_body | PatchProjectBody | Fields to update. |
- Content-Type: application/json
- Accept: application/json
| Status code | Description | Response headers |
|---|---|---|
| 200 | The updated project. | - |
| 400 | The update payload is invalid, or the network connection cannot be changed while instances are active. | - |
| 401 | Not signed in: the `Authorization: Bearer <token>` header is missing, or the token is invalid or expired. Get a new token and retry. | - |
| 403 | Signed in, but not allowed to do this: you lack the required role, have no access to the project, or your license does not include the feature. | - |
| 404 | No project with the given identifier. | - |
[Back to top] [Back to API list] [Back to Model list] [Back to README]
VpnConfigPreauthorization v3_preauth_vpn_config(project_id, filename)
Pre-authorize a VPN configuration download
Pre-authorize a VPN configuration download. Returns a short-lived signed token that authorizes the download without an Authorization header, so it can be embedded in a plain download URL: GET /v1/preauthed-vpn-configs/{token}/{filename}. The token carries the client identifier and the format, and expires with the calling session token.
- Bearer (JWT) Authentication (BearerAuth):
import corellium
from corellium.models.vpn_config_preauthorization import VpnConfigPreauthorization
from corellium.rest import ApiException
from pprint import pprint
# Defining the host is optional and defaults to https://app.corellium.com/api
# See configuration.py for a list of all supported configuration parameters.
configuration = corellium.Configuration(
host = "https://app.corellium.com/api"
)
# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.
# Configure Bearer authorization (JWT): BearerAuth
configuration = corellium.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with corellium.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = corellium.ProjectsApi(api_client)
project_id = '1c41b1bc-4f53-48a8-b690-ad30611e1960' # str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created.
filename = 'researcher-laptop.ovpn' # str | VPN configuration filename, as '<clientId>.<format>'. The client identifier becomes the common name of the issued client certificate; a format of 'ovpn' yields an OpenVPN profile and any other value yields a Tunnelblick zip.
try:
# Pre-authorize a VPN configuration download
api_response = api_instance.v3_preauth_vpn_config(project_id, filename)
print("The response of ProjectsApi->v3_preauth_vpn_config:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling ProjectsApi->v3_preauth_vpn_config: %s\n" % e)| Name | Type | Description | Notes |
|---|---|---|---|
| project_id | str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created. | |
| filename | str | VPN configuration filename, as '<clientId>.<format>'. The client identifier becomes the common name of the issued client certificate; a format of 'ovpn' yields an OpenVPN profile and any other value yields a Tunnelblick zip. |
- Content-Type: Not defined
- Accept: application/json
| Status code | Description | Response headers |
|---|---|---|
| 200 | A short-lived signed token. | - |
| 400 | The project does not have an active VPN IP or port. | - |
| 401 | Not signed in: the `Authorization: Bearer <token>` header is missing, or the token is invalid or expired. Get a new token and retry. | - |
| 403 | Signed in, but not allowed to do this: you lack the required role, have no access to the project, or your license does not include the feature. | - |
| 404 | No project with the given identifier. | - |
[Back to top] [Back to API list] [Back to Model list] [Back to README]
Dict[str, Optional[object]] v3_put_project_image_upload(project_id, type, image_id, name, body, resumable_chunk_number=resumable_chunk_number, resumable_chunk_size=resumable_chunk_size, resumable_current_chunk_size=resumable_current_chunk_size, resumable_total_size=resumable_total_size, resumable_total_chunks=resumable_total_chunks, corellium_checksum=corellium_checksum, flavor=flavor, x_corellium_image_encoding=x_corellium_image_encoding, x_corellium_image_encapsulated=x_corellium_image_encapsulated, x_corellium_total_file_size=x_corellium_total_file_size, x_corellium_image_password=x_corellium_image_password)
Upload image chunk
Uploads one chunk of a file into this project, using the same resumable protocol as PUT /v3/images/{imageId}/file. The difference is that you choose the image ID yourself (a new random UUID) and the image record is created automatically when the first chunk arrives, so no POST /v3/images call is needed. The type and name in the path set the image type and name. The image belongs to the project and is deleted with it. The web interface uses this route when uploading firmware while creating a device. For your own code, POST /v3/images followed by PUT /v3/images/{imageId}/file is easier to follow. Returns 200 with an empty object for each stored chunk. If an upload fails for a reason other than a network error, the partial image is deleted.
- Bearer (JWT) Authentication (BearerAuth):
import corellium
from corellium.rest import ApiException
from pprint import pprint
# Defining the host is optional and defaults to https://app.corellium.com/api
# See configuration.py for a list of all supported configuration parameters.
configuration = corellium.Configuration(
host = "https://app.corellium.com/api"
)
# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.
# Configure Bearer authorization (JWT): BearerAuth
configuration = corellium.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with corellium.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = corellium.ProjectsApi(api_client)
project_id = '1c41b1bc-4f53-48a8-b690-ad30611e1960' # str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created.
type = 'type_example' # str | What kind of file this is, for example `fw` for firmware or `kernel`. Uses the same values as `type` on `POST /v3/images`; see `ImageType` for what each means. Types that need a license feature your license lacks are rejected with 403.
image_id = 'image_id_example' # str | An ID you choose for the new image: generate a random UUID once per file and use the same value for every chunk of that file. The image record is created with this ID when the first chunk arrives. Use a new UUID for each new upload.
name = 'name_example' # str | The file name to store, URL-encoded (for example `my%20firmware.ipsw`). Becomes the image `name`.
body = None # bytearray |
resumable_chunk_number = 3.4 # float | Which chunk this is, counting from 1. (optional)
resumable_chunk_size = 3.4 # float | The size, in bytes, you split the file into. Use the same value for every chunk; only the last chunk may be smaller. If you send `corelliumChecksum`, this must equal the block size inside it. (optional)
resumable_current_chunk_size = 3.4 # float | Actual size in bytes of this chunk's body. (optional)
resumable_total_size = 3.4 # float | Size of the whole file in bytes. (optional)
resumable_total_chunks = 3.4 # float | How many chunks the whole file is split into. The upload completes when the last one arrives. (optional)
corellium_checksum = 'corellium_checksum_example' # str | Optional expected checksum of the whole file, formatted `algorithm$blockSize$hash`. When given, the finished upload is checked and rejected (and the image removed) if it does not match. Required for firmware (`fw`) uploads on air-gapped deployments. (optional)
flavor = 'flavor_example' # str | Device model (`flavor` from `GET /v3/models`) the image is for. Needed for `partition` uploads when the image is not attached to a device, so the partition name can be checked against that model. (optional)
x_corellium_image_encoding = 'x_corellium_image_encoding_example' # str | How the file is stored: `plain` (normal) or `encrypted`. Only read on the first chunk, when the image record is created; later chunks cannot change it. (optional)
x_corellium_image_encapsulated = True # bool | Whether the uploaded file is a ZIP wrapper the platform should unpack. Send false to store the file exactly as uploaded. Only read on the first chunk, when the image record is created. (optional)
x_corellium_total_file_size = 3.4 # float | Size of the whole file in bytes. Send it on every chunk: the platform uses it to check up front that there is room for the entire file, and answers 507 if there is not, before storing any data. (optional)
x_corellium_image_password = 'x_corellium_image_password_example' # str | Password of a password-protected file (for example encrypted firmware), used to check the file after upload. Leave out for normal files. (optional)
try:
# Upload image chunk
api_response = api_instance.v3_put_project_image_upload(project_id, type, image_id, name, body, resumable_chunk_number=resumable_chunk_number, resumable_chunk_size=resumable_chunk_size, resumable_current_chunk_size=resumable_current_chunk_size, resumable_total_size=resumable_total_size, resumable_total_chunks=resumable_total_chunks, corellium_checksum=corellium_checksum, flavor=flavor, x_corellium_image_encoding=x_corellium_image_encoding, x_corellium_image_encapsulated=x_corellium_image_encapsulated, x_corellium_total_file_size=x_corellium_total_file_size, x_corellium_image_password=x_corellium_image_password)
print("The response of ProjectsApi->v3_put_project_image_upload:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling ProjectsApi->v3_put_project_image_upload: %s\n" % e)| Name | Type | Description | Notes |
|---|---|---|---|
| project_id | str | ID of the project. Get it from `v3ListProjects`, or from the `id` returned when the project was created. | |
| type | str | What kind of file this is, for example `fw` for firmware or `kernel`. Uses the same values as `type` on `POST /v3/images`; see `ImageType` for what each means. Types that need a license feature your license lacks are rejected with 403. | |
| image_id | str | An ID you choose for the new image: generate a random UUID once per file and use the same value for every chunk of that file. The image record is created with this ID when the first chunk arrives. Use a new UUID for each new upload. | |
| name | str | The file name to store, URL-encoded (for example `my%20firmware.ipsw`). Becomes the image `name`. | |
| body | bytearray | ||
| resumable_chunk_number | float | Which chunk this is, counting from 1. | [optional] |
| resumable_chunk_size | float | The size, in bytes, you split the file into. Use the same value for every chunk; only the last chunk may be smaller. If you send `corelliumChecksum`, this must equal the block size inside it. | [optional] |
| resumable_current_chunk_size | float | Actual size in bytes of this chunk's body. | [optional] |
| resumable_total_size | float | Size of the whole file in bytes. | [optional] |
| resumable_total_chunks | float | How many chunks the whole file is split into. The upload completes when the last one arrives. | [optional] |
| corellium_checksum | str | Optional expected checksum of the whole file, formatted `algorithm$blockSize$hash`. When given, the finished upload is checked and rejected (and the image removed) if it does not match. Required for firmware (`fw`) uploads on air-gapped deployments. | [optional] |
| flavor | str | Device model (`flavor` from `GET /v3/models`) the image is for. Needed for `partition` uploads when the image is not attached to a device, so the partition name can be checked against that model. | [optional] |
| x_corellium_image_encoding | str | How the file is stored: `plain` (normal) or `encrypted`. Only read on the first chunk, when the image record is created; later chunks cannot change it. | [optional] |
| x_corellium_image_encapsulated | bool | Whether the uploaded file is a ZIP wrapper the platform should unpack. Send false to store the file exactly as uploaded. Only read on the first chunk, when the image record is created. | [optional] |
| x_corellium_total_file_size | float | Size of the whole file in bytes. Send it on every chunk: the platform uses it to check up front that there is room for the entire file, and answers 507 if there is not, before storing any data. | [optional] |
| x_corellium_image_password | str | Password of a password-protected file (for example encrypted firmware), used to check the file after upload. Leave out for normal files. | [optional] |
Dict[str, Optional[object]]
- Content-Type: application/octet-stream
- Accept: application/json
| Status code | Description | Response headers |
|---|---|---|
| 200 | Chunk stored. The body is an empty JSON object. Send the next chunk; the image is finished when the last chunk arrives. | - |
| 400 | Invalid chunk or upload parameters, unreadable body, or a missing/mismatched corelliumChecksum for a firmware upload. | - |
| 401 | Not signed in: the `Authorization: Bearer <token>` header is missing, or the token is invalid or expired. Get a new token and retry. | - |
| 403 | Signed in, but not allowed to do this: you lack the required role, have no access to the project, or your license does not include the feature. | - |
| 404 | No image with the given identifier. | - |
| 507 | The image pool does not have enough space for this upload. | - |
[Back to top] [Back to API list] [Back to Model list] [Back to README]