Our REST API enables you to integrate and run your Appium automation tests on M-Live. Appium API follows the general conventions of REST. The API reference has 3 sections:
- Authentication
- Devices
- Application Library
1. Authentication
momentumToken is required for all operations. Keep the accessToken value to use in the header for the next requests.
Log in
Request
POST https://console.momentumsuite.com/rdcApi/api/auth
{"username":"<your-user-name>","password":"<your-password>","grant_type":"password"}
POST https://console.momentumsuite.com/rdcApi/api/auth
POST data (raw):
{"username":"<your-user-name>","password":"<your-password>","grant_type":"password"}
POST https://console.momentumsuite.com/rdcApi/api/auth
POST data (raw):
{"username":"<your-user-name>","password":"<your-password>","grant_type":"password"}
Response
{"result":{"accessToken":"eyJhbGc......","refreshToken":"5ABA9FEDCED26F5A5079E5A4BA....","expiresIn":7200,"tokenType":"Bearer"},"status":"SUCCESS","message":"Resource retrieved","validationMessages":null}
{"result":{"accessToken":"eyJhbGc......","refreshToken":"5ABA9FEDCED26F5A5079E5A4BA....","expiresIn":7200,"tokenType":"Bearer"},"status":"SUCCESS","message":"Resource retrieved","validationMessages":null}
{"result":{"accessToken":"eyJhbGc......","refreshToken":"5ABA9FEDCED26F5A5079E5A4BA....","expiresIn":7200,"tokenType":"Bearer"},"status":"SUCCESS","message":"Resource retrieved","validationMessages":null}
2. Devices
Get a list of real Android and iOS devices with their status and other properties. These are not simulators or emulators.
Devices List
Request
GET https://console.momentumsuite.com/rdcApi/api/devices/list
GET https://console.momentumsuite.com/rdcApi/api/devices/list
GET https://console.momentumsuite.com/rdcApi/api/devices/list
Request Header
Authorization value will be “Bearer accessToken“.
Authorization: Bearer eyJhbGciOiJS.....
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJS.....
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJS.....
Content-Type: application/json
Response
- “status”: 1 -> ONLINE
- “status”: 2 -> BUSY
"deviceBrand": "Samsung",
"deviceName": "Samsung Galaxy A71",
"deviceModel": "SM-A715F (12)",
"iconTag": "samsung-galaxy-s8.jpg",
"releaseDate": "2019-12-12T12:53:57+00:00",
"resolution": "1080 x 2400",
"createdAt": "2022-03-02T12:53:57+00:00",
"liveWatchSupport": true,
"liveWatchId": "3e30c68837f72355",
"remoteTestUrl": "console.momentumsuite.com",
"momentumUser": "YOUR-USER",
"momentumToken": "YOUR-TOKEN",
"message": "Resource retrieved",
"validationMessages": null
{
"result": [
{
"id": 5,
"farmId": 12,
"signalPort": DEVICE-ID,
"deviceToken": "UDID",
"deviceBrand": "Samsung",
"deviceName": "Samsung Galaxy A71",
"deviceModel": "SM-A715F (12)",
"iconTag": "samsung-galaxy-s8.jpg",
"osVersion": "11.0",
"deviceOs": "android",
"releaseDate": "2019-12-12T12:53:57+00:00",
"screenSize": "6.7\"",
"resolution": "1080 x 2400",
"status": 1,
"createdAt": "2022-03-02T12:53:57+00:00",
"updatedAt": null,
"liveWatchSupport": true,
"isBusy": false,
"liveWatchId": "3e30c68837f72355",
"activeSessions": [],
"deviceCredential": {
"remoteTestUrl": "console.momentumsuite.com",
"remoteTestPort": 443,
"momentumUser": "YOUR-USER",
"momentumToken": "YOUR-TOKEN",
"momentumGw": DEVICE-ID
}
},
.....
.....
.....
],
"status": "SUCCESS",
"message": "Resource retrieved",
"validationMessages": null
}
{
"result": [
{
"id": 5,
"farmId": 12,
"signalPort": DEVICE-ID,
"deviceToken": "UDID",
"deviceBrand": "Samsung",
"deviceName": "Samsung Galaxy A71",
"deviceModel": "SM-A715F (12)",
"iconTag": "samsung-galaxy-s8.jpg",
"osVersion": "11.0",
"deviceOs": "android",
"releaseDate": "2019-12-12T12:53:57+00:00",
"screenSize": "6.7\"",
"resolution": "1080 x 2400",
"status": 1,
"createdAt": "2022-03-02T12:53:57+00:00",
"updatedAt": null,
"liveWatchSupport": true,
"isBusy": false,
"liveWatchId": "3e30c68837f72355",
"activeSessions": [],
"deviceCredential": {
"remoteTestUrl": "console.momentumsuite.com",
"remoteTestPort": 443,
"momentumUser": "YOUR-USER",
"momentumToken": "YOUR-TOKEN",
"momentumGw": DEVICE-ID
}
},
.....
.....
.....
],
"status": "SUCCESS",
"message": "Resource retrieved",
"validationMessages": null
}
3. Application Library
In order to test your native and hybrid apps on M-Live using Appium, you first need to upload an Android app (.apk
/.aab
file) or an iOS app(.ipa
file) to M-Live Application Library. Use our REST API endpoints to upload and manage your apps on M-Live.
List uploaded apps
Request
GET https://console.momentumsuite.com/rdcApi/api/ApplicationLibraries/list
GET https://console.momentumsuite.com/rdcApi/api/ApplicationLibraries/list
GET https://console.momentumsuite.com/rdcApi/api/ApplicationLibraries/list
Request Header
Authorization value will be “Bearer accessToken“.
Authorization: Bearer eyJhbGciOiJS.....
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJS.....
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJS.....
Content-Type: application/json
Response
"appUrl": "ms://06d8c9e89......",
"createdAt": "2022-05-13T08:57:46+00:00",
"message": "Resource retrieved",
"validationMessages": null
{
"result": [
{
"id": 113,
"title": "myapp.apk",
"appUrl": "ms://06d8c9e89......",
"createdAt": "2022-05-13T08:57:46+00:00",
"appType": 1
},
....
.....
],
"status": "SUCCESS",
"message": "Resource retrieved",
"validationMessages": null
}
{
"result": [
{
"id": 113,
"title": "myapp.apk",
"appUrl": "ms://06d8c9e89......",
"createdAt": "2022-05-13T08:57:46+00:00",
"appType": 1
},
....
.....
],
"status": "SUCCESS",
"message": "Resource retrieved",
"validationMessages": null
}
Upload an app
Request
POST https://console.momentumsuite.com/rdcApi/api/ApplicationLibraries
ApplicationFile: myapp.apk
POST https://console.momentumsuite.com/rdcApi/api/ApplicationLibraries
POST data (form-data):
Title:SmartMobile
IsReSignable:false
ApplicationFile: myapp.apk
POST https://console.momentumsuite.com/rdcApi/api/ApplicationLibraries
POST data (form-data):
Title:SmartMobile
IsReSignable:false
ApplicationFile: myapp.apk
Request Header
The authorization value will be “Bearer accessToken“.
Authorization: Bearer eyJhbGciOiJS.....
Content-Type: multipart/form-data
Authorization: Bearer eyJhbGciOiJS.....
Content-Type: multipart/form-data
Authorization: Bearer eyJhbGciOiJS.....
Content-Type: multipart/form-data
Response
You can use appId as “ms:\\appId“. This URL only works with the Momentum Suite’s Appium gateway.
"appId": "3e86e209........",
"appUrl": "http://momentumv2.mobven.com:8084/Upload/0/3e86e209-cb2.....-app.apk",
"createdAt": "2022-07-27T21:13:09.557891+00:00",
"message": "New applicationlibrary has been created",
"validationMessages": null
{
"result": {
"id": 177,
"title": "SmartMobile",
"appId": "3e86e209........",
"appUrl": "http://momentumv2.mobven.com:8084/Upload/0/3e86e209-cb2.....-app.apk",
"createdAt": "2022-07-27T21:13:09.557891+00:00",
"appType": 1
},
"status": "SUCCESS",
"message": "New applicationlibrary has been created",
"validationMessages": null
}
{
"result": {
"id": 177,
"title": "SmartMobile",
"appId": "3e86e209........",
"appUrl": "http://momentumv2.mobven.com:8084/Upload/0/3e86e209-cb2.....-app.apk",
"createdAt": "2022-07-27T21:13:09.557891+00:00",
"appType": 1
},
"status": "SUCCESS",
"message": "New applicationlibrary has been created",
"validationMessages": null
}
Delete an app
Request
DELETE https://console.momentumsuite.com/rdcApi/api/ApplicationLibraries/177
DELETE https://console.momentumsuite.com/rdcApi/api/ApplicationLibraries/177
DELETE https://console.momentumsuite.com/rdcApi/api/ApplicationLibraries/177
Request Header
Authorization value will be “Bearer accessToken“.
Authorization: Bearer eyJhbGciOiJS.....
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJS.....
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJS.....
Content-Type: application/json
Response
"message": "Entity \"177\" has been deleted",
"validationMessages": null
{
"result": null,
"status": "SUCCESS",
"message": "Entity \"177\" has been deleted",
"validationMessages": null
}
{
"result": null,
"status": "SUCCESS",
"message": "Entity \"177\" has been deleted",
"validationMessages": null
}