Applications Rest API
Continuous Testing allows managing the applications using Rest API. Following are the supported Rest API's for managing applications.
- 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
Name | Type | Mandatory | Description |
---|---|---|---|
packageName | String | No | Package name for Android |
mainActivity | String | No | Main activity of android app |
uniqueName | String | No | String you can use later to identify the app uniquely |
osType | String | No | iOS/Android |
bundleIdentifier | String | No | Application bundle id (only for iOS) |
version | String | No | Deprecated since 12.11, kept for compatibility purposes. buildVersion or releaseVersion can be used instead of version capability |
buildVersion | String | No | Application build versionversionCode for AndroidCFBundleVersion for iOS |
releaseVersion | String | No | Application release versionversionName for Android CFBundleShortVersionString for iOS |
cameraSupport | Boolean | No | If the camera is supported |
networkCaptureSupport | Boolean | No | If network capture is supported |
isForSimulator | Boolean | No | If the application is for a simulator |
instrumentByProfile | String | No | |
hasCustomKeystore | Boolean | No | If the application has a custom keystore |
fileType | String | No | File type Possible values: aab/apk/ipa/zip |
autoTrustEnterpriseDeveloper | Boolean | No | Relevant 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 |
installMDM | Boolean | No | For iOS applications If True it uses an MDM server for installation. If False it uses the regular app installation of Cloud. |
installAttributesMDM | JSON | No | Additional 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
Name | Type | Mandatory | Description |
---|---|---|---|
url | String | Yes | String specifying the location from which to retrieve the application file |
camera | boolean | No | If true the application will include camera libraries |
touchId | boolean | No | true means that application will include touch id libraries |
uniqueName | String | No | string that the user can use later to identify the app uniquely |
project | String | No | Available 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.
Name | Type | Mandatory | Description |
---|---|---|---|
uuid | String | No | Profile to use on install |
fixKeychainAccess | Boolean | No | True if the application should be signed with keychain access group entitlements. |
overrideEntitlements | String | No | XML file for replace the app entitlements with a specific file |
allowResign | Boolean | No | When false the application is not resigned during installation. This application cannot be instrumented because during instrumentation applications must be resigned. Default value is true . |
signPlugins | Boolean | No | True if the application plugins should be signed automatically, allowResign should be also true. Default value is true . |
installMDM | Boolean | No | For 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. |
installAttributesMDM | JSON | No | Additional attributes to be used by MDM server during installation Example: {"AssociatedDomains":["mydomain"],"AssociatedDomainsEnableDirectDownloads":true} |
autoTrustEnterpriseDeveloper | Boolean | No | Relevant 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.
Name | Type | Mandatory | Description |
---|---|---|---|
keystore | File | No | Multi-part file containing the customkeystore |
keystorePassword | String | No | Keystore password |
keyAlias | String | No | Key alias |
keyPassword | String | No | Key password |
networkCaptureSupport | Boolean | No | Whether 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
Name | Type | Mandatory | Description |
---|---|---|---|
file | File | Yes | Multi-part file |
camera | boolean | No | If true the application includes camera libraries |
touchId | boolean | No | If true the application includes touch ID libraries |
uniqueName | String | No | String you can use later to identify the app uniquely |
project | String | No | Available 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,
Name | Type | Mandatory | Description |
---|---|---|---|
uuid | String | No | UUID of the provisioning profile to use when installing the application |
fixKeychainAccess | Boolean | No | If true the application should be signed with keychain access group entitlements. |
overrideEntitlements | String | No | XML file for replace the app entitlements with a specific file |
allowResign | Boolean | No | If false the application is not resigned during installation. This application cannot be instrumented because during instrumentation applications must be resigned. Default value is true . |
signPlugins | Boolean | No | True if the application plugins should be signed automatically, allowResign should be also true. Default value is true . |
installMDM | Boolean | No | For 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. |
installAttributesMDM | JSON | No | Additional attributes to be used by MDM server during installation Example: {"AssociatedDomains":["mydomain"],"AssociatedDomainsEnableDirectDownloads":true} |
autoTrustEnterpriseDeveloper | Boolean | No | Relevant 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.
Name | Type | Mandatory | Description |
---|---|---|---|
keystore | File | No | Multi-part file containing the customkeystore. |
keystorePassword | String | No | Keystore password. |
keyAlias | String | No | Key alias. |
keyPassword | String | No | Key password. |
networkCaptureSupport | Boolean | No | Whether 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
Name | Type | Mandatory | Description |
---|---|---|---|
<br/>plugins<br/> | List | No * | 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:
Name | Type | Mandatory | Description |
---|---|---|---|
<br/>name<br/> | String | Yes | Name of the plugin. |
<br/>uuid<br/> | String | Yes | Profile 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
Name | Type | Mandatory | Description |
---|---|---|---|
deviceId | String | No | ID of device to install on |
devicesList | String | No | List of id of devices (i.e. 1,2,3) |
AllDevices | String | No | AllDevices=true is a short way to give the id of all devices that are of the application's OS and are in 'Available' status |
instrument | Boolean | No | The 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
Name | Type | Mandatory | Description |
---|---|---|---|
deviceId | String | No | ID of device to install on |
devicesList | String | No | List of IDs of devices (for example 1,2,3) |
AllDevices | String | No | allDevices=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
Name | Type | Mandatory | Description |
---|---|---|---|
deviceId | String | Yes | ID of device to install on |
packageName | String | Yes | bundle id for ios application or package name for android application |
Response Status: 200 OK
POST /api/v1/applications/uninstall-by-packageName-devices
Payload
Name | Type | Mandatory | Description |
---|---|---|---|
devicesList | String | Yes | List of IDs of devices (for example 1,2,3) |
packageName | String | Yes | bundle 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.