Skip to main content

Applications Rest API

Continuous Testing allows managing the applications using Rest API. Following are the supported Rest API's for managing applications.

info
  • The role of the user performing the Rest Operation is specified by the Authorization header.
  • For more information, see How To Execute Rest API.

Get Applications

Gets a collection of applications you have access to.

You can use filters as parameters. The filter is defined by specifying the required property-name = property-value concatenated with commas.

Examples:

/api/v1/applications?osType=android&fields=id - Returns only IDs of the android applications

/api/v1/applications?osType=ios&version=1050 - Returns iOS applications with version 1050

GET /api/v1/applications

Parameters

NameTypeMandatoryDescription
packageNameStringNoPackage name for Android
mainActivityStringNoMain activity of android app
uniqueNameStringNoString you can use later to identify the app uniquely
osTypeStringNoiOS/Android
bundleIdentifierStringNoApplication bundle id (only for iOS)
versionStringNoDeprecated since 12.11, kept for compatibility purposes.

buildVersion or releaseVersion can be used instead of version capability
buildVersionStringNoApplication build version

versionCode for Android

CFBundleVersion for iOS
releaseVersionStringNoApplication release version

versionName for Android
CFBundleShortVersionString for iOS
cameraSupportBooleanNoIf the camera is supported
networkCaptureSupportBooleanNoIf network capture is supported
isForSimulatorBooleanNoIf the application is for a simulator
instrumentByProfileStringNo
hasCustomKeystoreBooleanNoIf the application has a custom keystore
fileTypeStringNoFile type
Possible values: aab/apk/ipa/zip
autoTrustEnterpriseDeveloperBooleanNoRelevant for Enterprise Distributed iOS Applications
True -will be trusted automatically as part of the installation process.
False - user will need to trust the developer profile manually while launching the application
installMDMBooleanNoFor iOS applications
If True it uses an MDM server for installation.
If False it uses the regular app installation of Cloud.
installAttributesMDMJSONNoAdditional attributes to be used by MDM server during installation

Response

Response Status: 200 OK
[
{
"id": 6796304,
"name": "com.experitest.ExperiBank",
"packageName": null,
"version": "3368",
"buildVersion": "3368",
"releaseVersion": "1.1",
"applicationName": "ExperiBank",
"uniqueName": "EriBank_1plugin",
"notes": null,
"cameraSupport": true,
"networkCaptureSupport": false,
"osType": "IOS",
"createdAt": 1675600976017,
"createdAtFormatted": "2023-02-05 14:42:56",
"mainActivity": null,
"productId": "com.experitest.ExperiBank",
"bundleIdentifier": "com.experitest.ExperiBank",
"instrumentByProfile": "ad02b980-b4d7-4d7b-b447-436e5a7c44aa",
"signWithProfile": "ad02b980-b4d7-4d7b-b447-436e5a7c44aa",
"nonInstrumented": false,
"hasCustomKeystore": false,
"isForSimulator": false,
"fixKeychainAccess": false,
"overrideEntitlements": null,
"allowResign": true,
"distributionType": "Unknown",
"projectsInfo": [
{
"id": 2,
"name": "Default"
}
],
"canDelete": true,
"fileType": "ipa",
"installMDM": false,
"installAttributesMDM": null,
"plugins": [
{
"name": "SiriIntent",
"uuid": "a8b60039-515d-404c-b1cf-b47f2c172be9"
}
]
}
]

Get Application Info

Gets all of the application info.

GET /api/v1/applications/<applicationId>

applicationId - ID of the application

Response

Response Status: 200 OK
{
"id": 6796304,
"name": "com.experitest.ExperiBank",
"packageName": null,
"version": "3368",
"buildVersion": "3368",
"releaseVersion": "1.1",
"applicationName": "ExperiBank",
"uniqueName": "EriBank_1plugin",
"notes": null,
"cameraSupport": true,
"networkCaptureSupport": false,
"osType": "IOS",
"createdAt": 1675600976017,
"createdAtFormatted": "2023-02-05 14:42:56",
"mainActivity": null,
"productId": "com.experitest.ExperiBank",
"bundleIdentifier": "com.experitest.ExperiBank",
"instrumentByProfile": "ad02b980-b4d7-4d7b-b447-436e5a7c44aa",
"signWithProfile": "ad02b980-b4d7-4d7b-b447-436e5a7c44aa",
"nonInstrumented": false,
"hasCustomKeystore": false,
"isForSimulator": false,
"fixKeychainAccess": false,
"overrideEntitlements": null,
"allowResign": true,
"distributionType": "Unknown",
"projectsInfo": [
{
"id": 2,
"name": "Default"
}
],
"canDelete": true,
"fileType": "ipa",
"installMDM": false,
"installAttributesMDM": null,
"plugins": [
{
"name": "SiriIntent",
"uuid": "a8b60039-515d-404c-b1cf-b47f2c172be9"
}
]
}

Response if new application

Response Status: 200 OK
{
"status": "SUCCESS",
"data": {
"created": "true",
"id": "12345",
"name": "com.sample.sample/.MainActivity",
"buildVersion": "401",
"releaseVersion": "4.1",
},
"code": "OK"
}

Upload Application from a url

Gets the id of the uploaded application.

Uploads the application file to the cloud.

This call is exactly like /api/v1/applications/new, except that the application file is not provided as part of the call, instead the url parameter specifies where to get the file.

POST /api/v1/applications/new-from-url

Parameters

NameTypeMandatoryDescription
urlStringYesString specifying the location from which to retrieve the application file
camerabooleanNoIf true the application will include camera libraries
touchIdbooleanNotrue means that application will include touch id libraries
uniqueNameStringNostring that the user can use later to identify the app uniquely
projectStringNoAvailable for cloud admin only, if the project isn't specified, it will be uploaded to Default project.

Project name can be provided or a project id in the following format:

id:<id>. For example: id:123.

Additional Parameters for iOS

In order to use basic instrumentation, 'Camera' and 'TouchId' parameters must be set to 'false'

'overrideEntitlements' can be used only when 'fixKeychainAccess' is false.

NameTypeMandatoryDescription
uuidStringNoProfile to use on install
fixKeychainAccessBooleanNoTrue if the application should be signed with keychain access group entitlements.
overrideEntitlementsStringNoXML file for replace the app entitlements with a specific file
allowResignBooleanNoWhen false the application is not resigned during installation.

This application cannot be instrumented because during instrumentation applications must be resigned.

Default value is true.
signPluginsBooleanNoTrue if the application plugins should be signed automatically, allowResign should be also true.

Default value is true.
installMDMBooleanNoFor iOS applications, and only if MDM server is configured.
True - Uses an MDM server for the installation (no signing, application will get installed as is).
False - Uses the regular app installation of Cloud.
installAttributesMDMJSONNoAdditional attributes to be used by MDM server during installation
Example: {"AssociatedDomains":["mydomain"],"AssociatedDomainsEnableDirectDownloads":true}
autoTrustEnterpriseDeveloperBooleanNoRelevant for Enterprise Distributed iOS Applications

When the application is uploaded with
allowResign=false and autoTrustEnterpriseDeveloper=true
the enterprise developer will be trusted as a part of the installation process.

Additional Parameters for Android

The following parameters are used to upload a customkeystorefor this particular application. If any of these are supplied, all should be supplied.

If a customkeystoreis supplied, it is used for every subsequent (re)instrumenting of this app. The Cloud shows  a "Custom Keystore: Yes" indication in the application info panel for such applications.

NameTypeMandatoryDescription
keystoreFileNoMulti-part file containing the customkeystore
keystorePasswordStringNoKeystore password
keyAliasStringNoKey alias
keyPasswordStringNoKey password
networkCaptureSupportBooleanNoWhether to support HAR network capture

Response if new application

Response Status: 200 OK
{
"status": "SUCCESS",
"data": {
"created": "true",
"id": "12345",
"name": "com.sample.sample/.MainActivity",
"buildVersion": "401",
"releaseVersion": "4.1",
},
"code": "OK"
}

Upload Application

Gets the ID of the uploaded application.

Uploads the application file to the cloud.

POST /api/v1/applications/new

Parameters

NameTypeMandatoryDescription
fileFileYesMulti-part file
camerabooleanNoIf true the application includes camera libraries
touchIdbooleanNoIf true the application includes touch ID libraries
uniqueNameStringNoString you can use later to identify the app uniquely
projectStringNoAvailable for cloud admin only

If the project isn't specified, it is uploaded to Default project.

Project name can be provided or a project id in the following format:

id:<id>. For example: id:123.

Additional Parameters for iOS

In order to use basic instrumentation, 'Camera' and 'TouchId' parameters have to be set to 'false'

'overrideEntitlements' can be used only when 'fixKeychainAccess' is false,

NameTypeMandatoryDescription
uuidStringNoUUID of the provisioning profile to use when installing the application
fixKeychainAccessBooleanNoIf true the application should be signed with keychain access group entitlements.
overrideEntitlementsStringNoXML file for replace the app entitlements with a specific file
allowResignBooleanNoIf false the application is not resigned during installation.

This application cannot be instrumented because during instrumentation applications must be resigned.

Default value is true.
signPluginsBooleanNoTrue if the application plugins should be signed automatically, allowResign should be also true.

Default value is true.
installMDMBooleanNoFor iOS applications, and only if MDM server is configured.
True, will use an MDM server for the installation (no signing, application will get installed as is).
False will use the regular app installation of Cloud.
installAttributesMDMJSONNoAdditional attributes to be used by MDM server during installation
Example: {"AssociatedDomains":["mydomain"],"AssociatedDomainsEnableDirectDownloads":true}
autoTrustEnterpriseDeveloperBooleanNoRelevant for Enterprise Distributed iOS Applications

When the application is uploaded with
allowResign=false and autoTrustEnterpriseDeveloper=true
the enterprise developer will be trusted as a part of the installation process.

Additional Parameters for Android

The first 4 parameters are used to upload a customkeystore (.jks file) for this particular application. If any of these are supplied, all should be supplied.

If a customkeystore is supplied, it will be used for every subsequent (re)instrumenting of this app. The Cloud showa  a "Custom Keystore: Yes" indication in the application info panel for such applications.

NameTypeMandatoryDescription
keystoreFileNoMulti-part file containing the customkeystore.
keystorePasswordStringNoKeystore password.
keyAliasStringNoKey alias.
keyPasswordStringNoKey password.
networkCaptureSupportBooleanNoWhether to support HAR network capture.

Update Application

Update an application information.

Only plugins are supported.

PATCH /api/v1/applications/<applicationId>

applicationId - ID of the application

Parameters for iOS Plugins

NameTypeMandatoryDescription
<br/>plugins<br/>ListNo *List of Plugin to update.

While plugins are not declared as mandatory, as it the only current value, it is required, as otherwise there is no update to make.

Plugin:

NameTypeMandatoryDescription
<br/>name<br/>StringYesName of the plugin.
<br/>uuid<br/>StringYesProfile UUID to use. Use "Auto" to use the default profile.

Request payload

{
"plugins": [
{
"name": "Lexus Siri",
"uuid": "Auto"
},
{
"name": "Lexus",
"uuid": "Auto"
}
]
}

Response

Response Status: 200 OK
{
"plugins": [
{
"name": "Lexus Siri",
"uuid": "Auto"
},
{
"name": "Lexus",
"uuid": "Auto"
}
]
}

Delete Application

Deletes an application file from the cloud.

POST /api/v1/applications/<applicationId>/delete

applicationId - ID of the application

Response

Response Status: 200 OK
{
"status": "SUCCESS",
"data": {
"application": "Application deleted successfully"
},
"code": "OK"
}

Install Application

Installs the application on the device/devices*.*

POST /api/v1/applications/<applicationId>/install

applicationId - ID of the application

Parameters

NameTypeMandatoryDescription
deviceIdStringNoID of device to install on
devicesListStringNoList of id of devices (i.e. 1,2,3)
AllDevicesStringNoAllDevices=true is a short way to give the id of all devices that are of the application's OS and are in 'Available' status
instrumentBooleanNoThe default is instrument=false.

deviceId / devicesList / AllDevices - One of these is mandatory.

Response

Response Status: 200 OK
{
"status": "SUCCESS",
"data": {
"deviceId:12345": "Application installed on device with id 12345"
},
"code": "OK"
}

Uninstall Application

Uninstalls the application on the device/devices.

POST /api/v1/applications/<applicationId>/uninstall

applicationId - ID of the application

Parameters

NameTypeMandatoryDescription
deviceIdStringNoID of device to install on
devicesListStringNoList of IDs of devices (for example 1,2,3)
AllDevicesStringNoallDevices=true is a short way to give the id of all devices that are of the application's OS and are in 'Available' status

deviceId / devicesList / AllDevices - One of these is mandatory,

Response

Response Status: 200 OK
{
"status": "SUCCESS",
"data": {
"deviceId:12345": "Application uninstalled on device with id 12345"
},
"code": "OK"
}

POST /api/v1/applications/uninstall-by-packageName

Payload

NameTypeMandatoryDescription
deviceIdStringYesID of device to install on
packageNameStringYesbundle id for ios application or package name for android application
Response Status: 200 OK

POST /api/v1/applications/uninstall-by-packageName-devices

Payload

NameTypeMandatoryDescription
devicesListStringYesList of IDs of devices (for example 1,2,3)
packageNameStringYesbundle id for ios application or package name for android application
Response Status: 200 OK

Extract Language Files

Downloads a ZIP file that contains the languages files of the application.

POST **/api/v1/applications/<applicationId>/**language-file

<applicationId> - ID of the application

This is supported for APK and IPA applications only.