Skip to content

Latest commit

 

History

History
1455 lines (1030 loc) · 69 KB

ProjectsApi.md

File metadata and controls

1455 lines (1030 loc) · 69 KB

corellium.ProjectsApi

Request timeouts

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

v3_create_project

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.

Example

  • 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)

Parameters

Name Type Description Notes
create_project_body CreateProjectBody Project to create.

Return type

Project

Authorization

BearerAuth

HTTP request headers

  • Content-Type: application/json
  • Accept: application/json

HTTP response details

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]

v3_create_project_key

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.

Example

  • 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)

Parameters

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.

Return type

ProjectKey

Authorization

BearerAuth

HTTP request headers

  • Content-Type: application/json
  • Accept: application/json

HTTP response details

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

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.

Example

  • 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)

Parameters

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.

Return type

void (empty response body)

Authorization

BearerAuth

HTTP request headers

  • Content-Type: Not defined
  • Accept: application/json

HTTP response details

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

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.

Example

  • 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)

Parameters

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.

Return type

void (empty response body)

Authorization

BearerAuth

HTTP request headers

  • Content-Type: Not defined
  • Accept: application/json

HTTP response details

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]

v3_fetch_project_firmware_assets

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.

Example

  • 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)

Parameters

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.

Return type

FetchFirmwareAssetsResponse

Authorization

BearerAuth

HTTP request headers

  • Content-Type: application/json
  • Accept: application/json

HTTP response details

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]

v3_get_project

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.

Example

  • 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)

Parameters

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.

Return type

Project

Authorization

BearerAuth

HTTP request headers

  • Content-Type: Not defined
  • Accept: application/json

HTTP response details

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]

v3_get_project_image_upload

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 (resumableChunkNumber and 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.

Example

  • 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)

Parameters

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]

Return type

bytearray

Authorization

BearerAuth

HTTP request headers

  • Content-Type: Not defined
  • Accept: application/octet-stream, application/json

HTTP response details

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]

v3_get_project_network_log

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.

Example

  • 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)

Parameters

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.

Return type

str

Authorization

BearerAuth

HTTP request headers

  • Content-Type: Not defined
  • Accept: text/plain, application/json

HTTP response details

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]

v3_get_project_network_status

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.

Example

  • 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)

Parameters

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.

Return type

NetworkStatus

Authorization

BearerAuth

HTTP request headers

  • Content-Type: Not defined
  • Accept: application/json

HTTP response details

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]

v3_get_project_vpn_config

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.

Example

  • 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)

Parameters

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.

Return type

str

Authorization

BearerAuth

HTTP request headers

  • Content-Type: Not defined
  • Accept: application/x-openvpn-profile, application/zip, application/json

HTTP response details

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]

v3_list_project_instances

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}.

Example

  • 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)

Parameters

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]

Return type

ProjectInstanceList

Authorization

BearerAuth

HTTP request headers

  • Content-Type: Not defined
  • Accept: application/json

HTTP response details

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]

v3_list_project_keys

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.

Example

  • 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)

Parameters

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]

Return type

ProjectKeyList

Authorization

BearerAuth

HTTP request headers

  • Content-Type: Not defined
  • Accept: application/json

HTTP response details

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]

v3_list_projects

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.

Example

  • 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)

Parameters

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]

Return type

ProjectList

Authorization

BearerAuth

HTTP request headers

  • Content-Type: Not defined
  • Accept: application/json

HTTP response details

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]

v3_patch_project

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.

  • settings is merged into the existing settings: fields you leave out keep their current values.
  • quotas follows the same rules as on create: cores is required, instances is 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.

Example

  • 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)

Parameters

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.

Return type

Project

Authorization

BearerAuth

HTTP request headers

  • Content-Type: application/json
  • Accept: application/json

HTTP response details

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]

v3_preauth_vpn_config

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.

Example

  • 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)

Parameters

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.

Return type

VpnConfigPreauthorization

Authorization

BearerAuth

HTTP request headers

  • Content-Type: Not defined
  • Accept: application/json

HTTP response details

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]

v3_put_project_image_upload

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.

Example

  • 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)

Parameters

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]

Return type

Dict[str, Optional[object]]

Authorization

BearerAuth

HTTP request headers

  • Content-Type: application/octet-stream
  • Accept: application/json

HTTP response details

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]