Navbar 2
Logo
Shell HTTP JavaScript Node.JS Ruby Python Java
Back to documentation

Kobiton API v1.0

Base URL: https://api.kobiton.com/v1

Authentication

For example, with username testuser and api key 123ed­123fac­9137dca the authorization header will be: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=.

The secure method is Basic Auth with structure: username:apikey.

Basic Auth is a simple technique for access control. Authorization header will have a simple structure as Basic base64(username:apikey) to secure each API request.

// Create a base64 string.
var base64EncodedBasicAuth = window.btoa('testuser:123ed­123fac­9137dca');

// Defines Authorization header for a request.
var headers = {
  'Authorization': 'Basic ' + base64EncodedBasicAuth
};

// Sends a request with Authorization header.
$.ajax({
  url: 'https://api.kobiton.com/v1/apps',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

All requests sending to https://api.kobiton.com/v1 must contain the API key which can be found at API Keys Settings.

Apps Repository

The App Repository is intended to help users manage new and existing versions of their applications within the Kobiton cloud. Users can add any number of apps to the App Repository and also create restricted access if necessary.

Visit Managing Apps for more details

Get An Application Version


Sample request

# You can also use wget
curl -X GET https://api.kobiton.com/v1/app/versions/{versionId} \
  -H 'Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
  -H 'Accept: application/json'

GET https://api.kobiton.com/v1/app/versions/{versionId} HTTP/1.1
Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=

Accept: application/json

var headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept':'application/json'

};
$.ajax({
  url: 'https://api.kobiton.com/v1/app/versions/{versionId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})
const request = require('request');

const headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept':'application/json'

};

request({
  url: 'https://api.kobiton.com/v1/app/versions/{versionId}',
  json: true,
  method: 'GET',

  headers: headers
}, function (err, response, body) {
  if (err) return console.error('Error:', err);

  console.log('Response:', response);
  console.log('Response body:', body);
});
require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept' => 'application/json'
}

result = RestClient.get 'https://api.kobiton.com/v1/app/versions/{versionId}', params: {
  }, headers: headers

p JSON.parse(result)
import requests
headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept': 'application/json'
}
r = requests.get('https://api.kobiton.com/v1/app/versions/{versionId}', params={

}, headers = headers)

print r.json()
URL obj = new URL("https://api.kobiton.com/v1/app/versions/{versionId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty ("Authorization", "Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

GET /app/versions/{versionId}

Get information about an application version.

Parameters

Parameter In Type Required Description
versionId path integer true Application Version ID.

Sample response

{
  "id": 2,
  "appId": 1,
  "name": "Test App",
  "state": "OK",
  "version": "1.3.0"
}

Responses

Status Meaning Description
200 OK Get the application version info successfully.

Response Schema

Status Code 200

Name Type Required Description
id integer false No description
appId integer false No description
name string false No description
state string false No description
version string false No description

Delete Application Version


Sample request

# You can also use wget
curl -X DELETE https://api.kobiton.com/v1/app/versions/{versionId}
  -H 'Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='

DELETE https://api.kobiton.com/v1/app/versions/{versionId} HTTP/1.1
Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=


var headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='

};
$.ajax({
  url: 'https://api.kobiton.com/v1/app/versions/{versionId}',
  method: 'delete',

  success: function(data) {
    console.log(JSON.stringify(data));
  }
})
const request = require('request');

const headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='

};

request({
  url: 'https://api.kobiton.com/v1/app/versions/{versionId}',
  json: true,
  method: 'DELETE'

}, function (err, response, body) {
  if (err) return console.error('Error:', err);

  console.log('Response:', response);
  console.log('Response body:', body);
});
require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
}

result = RestClient.delete 'https://api.kobiton.com/v1/app/versions/{versionId}', params: {
  }

p JSON.parse(result)
import requests
headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
}
r = requests.delete('https://api.kobiton.com/v1/app/versions/{versionId}', params={

)

print r.json()
URL obj = new URL("https://api.kobiton.com/v1/app/versions/{versionId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
con.setRequestProperty ("Authorization", "Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

DELETE /app/versions/{versionId}

Delete an application version.

Parameters

Parameter In Type Required Description
versionId path integer true The application version ID.

Responses

Status Meaning Description
200 OK Delete an application version successfully.

Get Applications


Sample request

# You can also use wget
curl -X GET https://api.kobiton.com/v1/apps \
  -H 'Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
  -H 'Accept: application/json'

GET https://api.kobiton.com/v1/apps HTTP/1.1
Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=

Accept: application/json

var headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept':'application/json'

};
$.ajax({
  url: 'https://api.kobiton.com/v1/apps',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})
const request = require('request');

const headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept':'application/json'

};

request({
  url: 'https://api.kobiton.com/v1/apps',
  json: true,
  method: 'GET',

  headers: headers
}, function (err, response, body) {
  if (err) return console.error('Error:', err);

  console.log('Response:', response);
  console.log('Response body:', body);
});
require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept' => 'application/json'
}

result = RestClient.get 'https://api.kobiton.com/v1/apps', params: {
  }, headers: headers

p JSON.parse(result)
import requests
headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept': 'application/json'
}
r = requests.get('https://api.kobiton.com/v1/apps', params={

}, headers = headers)

print r.json()
URL obj = new URL("https://api.kobiton.com/v1/apps");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty ("Authorization", "Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

GET /apps

Get list of applications which were added to the Apps Repo.

Sample response

[
  {
    "id": 17,
    "createdAt": "2017‐04‐18T04:36:05.537Z",
    "name": "Test App",
    "privateAccess": true,
    "os": "ANDROID",
    "createdBy": "testuser",
    "state": "OK",
    "versions": [
      {
        "id": 20,
        "createdAt": "2017‐04‐18T04:36:05.556Z",
        "name": "Test App",
        "version": "1.3.0",
        "createdBy": "testuser",
        "state": "OK",
        "nativeProperties": {
          "package": null,
          "application": {
            "icon": "res/mipmap‐mdpi‐v4/app‐prod‐debug.png",
            "label": "Test App",
            "versionName": "1.3.0",
            "iconLocalPath": "/tmp/kobiton‐api‐13956/u‐1‐1492490165564/app‐prod‐debug‐8165dff0‐23f0‐11e7‐81ff‐7f02fd6dff65/res/mipmap‐mdpi‐v",
            "iconUrl": "https://kobiton.s3.amazonaws.com/users/1/apps/app‐prod‐debug‐8c96dd70‐23f0‐11e7‐81ff‐7f02fd6dff65.png?AWSAccessKeyId=AKIAJDVH"
          }
        }
      }
    ],
    "iconUrl": "https://kobiton.s3.amazonaws.com/users/1/apps/app‐prod‐debug‐8c96dd70‐23f0‐11e7‐81ff‐7f02fd6dff65.png?AWSAccessKeyId=AKIAJDVH"
  }
]

Responses

Status Meaning Description
200 OK Get the applications successfully.

Response Schema

Status Code 200

Name Type Required Description
anonymous [App] false No description

Create Application Or Version


Sample request

# You can also use wget
curl -X POST https://api.kobiton.com/v1/apps \
  -H 'Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
  -H 'Content-Type: application/json'

POST https://api.kobiton.com/v1/apps HTTP/1.1
Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=
Content-Type: application/json

var headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Content-Type':'application/json'

};
$.ajax({
  url: 'https://api.kobiton.com/v1/apps',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})
const request = require('request');
const inputBody = {
  "filename": "app‐prod‐debug.apk",
  "appPath": "users/1/apps/app‐prod‐debug‐237824a0‐302c‐11e7‐9bfd‐ff417c89610a.apk"
};
const headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Content-Type':'application/json'

};

request({
  url: 'https://api.kobiton.com/v1/apps',
  json: true,
  method: 'POST',
  body: inputBody,
  headers: headers
}, function (err, response, body) {
  if (err) return console.error('Error:', err);

  console.log('Response:', response);
  console.log('Response body:', body);
});
require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Content-Type' => 'application/json'
}

result = RestClient.post 'https://api.kobiton.com/v1/apps', params: {
  }, headers: headers

p JSON.parse(result)
import requests
headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Content-Type': 'application/json'
}
r = requests.post('https://api.kobiton.com/v1/apps', params={

}, headers = headers)

print r.json()
URL obj = new URL("https://api.kobiton.com/v1/apps");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty ("Authorization", "Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

POST /apps

Create a new application or a new application version.

This endpoints is a part of uploading apps to Apps Repository, see the detail document

Body data

{
  "filename": "app‐prod‐debug.apk",
  "appPath": "users/1/apps/app‐prod‐debug‐237824a0‐302c‐11e7‐9bfd‐ff417c89610a.apk"
}

Parameters

Parameter In Type Required Description
body body object true No description
» filename body string false Set custom app filename. By default it’s the filename from the parameter “appPath”
» appPath body string true No description

Responses

Status Meaning Description
200 OK Received the S3 file and parsing the application.

Generate Upload URL


Sample request

# You can also use wget
curl -X POST https://api.kobiton.com/v1/apps/uploadUrl \
  -H 'Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://api.kobiton.com/v1/apps/uploadUrl HTTP/1.1
Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=
Content-Type: application/json
Accept: application/json

var headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Content-Type':'application/json',
  'Accept':'application/json'

};
$.ajax({
  url: 'https://api.kobiton.com/v1/apps/uploadUrl',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})
const request = require('request');
const inputBody = {
  "filename": "app-debug.apk",
  "appId": 1
};
const headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Content-Type':'application/json',
  'Accept':'application/json'

};

request({
  url: 'https://api.kobiton.com/v1/apps/uploadUrl',
  json: true,
  method: 'POST',
  body: inputBody,
  headers: headers
}, function (err, response, body) {
  if (err) return console.error('Error:', err);

  console.log('Response:', response);
  console.log('Response body:', body);
});
require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Content-Type' => 'application/json',
  'Accept' => 'application/json'
}

result = RestClient.post 'https://api.kobiton.com/v1/apps/uploadUrl', params: {
  }, headers: headers

p JSON.parse(result)
import requests
headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}
r = requests.post('https://api.kobiton.com/v1/apps/uploadUrl', params={

}, headers = headers)

print r.json()
URL obj = new URL("https://api.kobiton.com/v1/apps/uploadUrl");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty ("Authorization", "Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

POST /apps/uploadUrl

Generate a pre-signed S3 upload URL.

This endpoints is a part of uploading apps to Apps Repository, see the detail document

Body data

{
  "filename": "app-debug.apk",
  "appId": 1
}

Parameters

Parameter In Type Required Description
body body object true No description
» filename body string true No description
» appId body integer false If you’re going to create a new version, specify an app id of existing application here. Otherwise, skip this field

Sample response

{
  "appPath": "users/1/apps/app‐prod‐debug‐237824a0‐302c‐9bfd‐ff417c89610a.apk",
  "url": "https://kobiton-us.s3.amazonaws.com/users/1/apps/app‐f417c89610a.apk?AWSAccessKeyId=AKINQ57IQCo\n"
}

Responses

Status Meaning Description
200 OK Successfully return pre-signed upload URL.

Response Schema

Status Code 200

Name Type Required Description
appPath string false The S3 object key for uploaded file. The client will use this value for step Create Application Or Version
url string false The pre-signed URL for uploading. The client will use this url to upload their app to AWS under Kobiton S3 bucket

Delete Application


Sample request

# You can also use wget
curl -X DELETE https://api.kobiton.com/v1/apps/{appId}
  -H 'Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='

DELETE https://api.kobiton.com/v1/apps/{appId} HTTP/1.1
Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=


var headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='

};
$.ajax({
  url: 'https://api.kobiton.com/v1/apps/{appId}',
  method: 'delete',

  success: function(data) {
    console.log(JSON.stringify(data));
  }
})
const request = require('request');

const headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='

};

request({
  url: 'https://api.kobiton.com/v1/apps/{appId}',
  json: true,
  method: 'DELETE'

}, function (err, response, body) {
  if (err) return console.error('Error:', err);

  console.log('Response:', response);
  console.log('Response body:', body);
});
require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
}

result = RestClient.delete 'https://api.kobiton.com/v1/apps/{appId}', params: {
  }

p JSON.parse(result)
import requests
headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
}
r = requests.delete('https://api.kobiton.com/v1/apps/{appId}', params={

)

print r.json()
URL obj = new URL("https://api.kobiton.com/v1/apps/{appId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
con.setRequestProperty ("Authorization", "Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

DELETE /apps/{appId}

Delete an application.

Parameters

Parameter In Type Required Description
appId path integer true The application ID.

Responses

Status Meaning Description
200 OK Delete an application successfully.

Get An Application


Sample request

# You can also use wget
curl -X GET https://api.kobiton.com/v1/apps/{appId} \
  -H 'Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
  -H 'Accept: application/json'

GET https://api.kobiton.com/v1/apps/{appId} HTTP/1.1
Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=

Accept: application/json

var headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept':'application/json'

};
$.ajax({
  url: 'https://api.kobiton.com/v1/apps/{appId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})
const request = require('request');

const headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept':'application/json'

};

request({
  url: 'https://api.kobiton.com/v1/apps/{appId}',
  json: true,
  method: 'GET',

  headers: headers
}, function (err, response, body) {
  if (err) return console.error('Error:', err);

  console.log('Response:', response);
  console.log('Response body:', body);
});
require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept' => 'application/json'
}

result = RestClient.get 'https://api.kobiton.com/v1/apps/{appId}', params: {
  }, headers: headers

p JSON.parse(result)
import requests
headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept': 'application/json'
}
r = requests.get('https://api.kobiton.com/v1/apps/{appId}', params={

}, headers = headers)

print r.json()
URL obj = new URL("https://api.kobiton.com/v1/apps/{appId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty ("Authorization", "Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

GET /apps/{appId}

Get information about an application.

Parameters

Parameter In Type Required Description
appId path integer true Application ID.

Sample response

{
  "id": 1,
  "name": "Test App",
  "state": "OK",
  "versions": [
    {
      "id": 2,
      "state": "OK",
      "version": 1.2
    }
  ]
}

Responses

Status Meaning Description
200 OK Get the application info successfully.

Response Schema

Status Code 200

Name Type Required Description
id integer false No description
name string false No description
state string false No description
versions [object] false No description
» id integer false No description
» state string false No description
» version string false No description

Make An Application Private


Sample request

# You can also use wget
curl -X PUT https://api.kobiton.com/v1/apps/{appId}/private
  -H 'Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='

PUT https://api.kobiton.com/v1/apps/{appId}/private HTTP/1.1
Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=


var headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='

};
$.ajax({
  url: 'https://api.kobiton.com/v1/apps/{appId}/private',
  method: 'put',

  success: function(data) {
    console.log(JSON.stringify(data));
  }
})
const request = require('request');

const headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='

};

request({
  url: 'https://api.kobiton.com/v1/apps/{appId}/private',
  json: true,
  method: 'PUT'

}, function (err, response, body) {
  if (err) return console.error('Error:', err);

  console.log('Response:', response);
  console.log('Response body:', body);
});
require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
}

result = RestClient.put 'https://api.kobiton.com/v1/apps/{appId}/private', params: {
  }

p JSON.parse(result)
import requests
headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
}
r = requests.put('https://api.kobiton.com/v1/apps/{appId}/private', params={

)

print r.json()
URL obj = new URL("https://api.kobiton.com/v1/apps/{appId}/private");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
con.setRequestProperty ("Authorization", "Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

PUT /apps/{appId}/private

Make an application private so it’s only accessible by creator.

Parameters

Parameter In Type Required Description
appId path integer true Application ID.

Responses

Status Meaning Description
200 OK Successfully make the application private.

Make An Application Public


Sample request

# You can also use wget
curl -X PUT https://api.kobiton.com/v1/apps/{appId}/public
  -H 'Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='

PUT https://api.kobiton.com/v1/apps/{appId}/public HTTP/1.1
Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=


var headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='

};
$.ajax({
  url: 'https://api.kobiton.com/v1/apps/{appId}/public',
  method: 'put',

  success: function(data) {
    console.log(JSON.stringify(data));
  }
})
const request = require('request');

const headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='

};

request({
  url: 'https://api.kobiton.com/v1/apps/{appId}/public',
  json: true,
  method: 'PUT'

}, function (err, response, body) {
  if (err) return console.error('Error:', err);

  console.log('Response:', response);
  console.log('Response body:', body);
});
require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
}

result = RestClient.put 'https://api.kobiton.com/v1/apps/{appId}/public', params: {
  }

p JSON.parse(result)
import requests
headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
}
r = requests.put('https://api.kobiton.com/v1/apps/{appId}/public', params={

)

print r.json()
URL obj = new URL("https://api.kobiton.com/v1/apps/{appId}/public");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
con.setRequestProperty ("Authorization", "Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

PUT /apps/{appId}/public

Make an application public to everyone in the organization.

Parameters

Parameter In Type Required Description
appId path integer true Application ID.

Responses

Status Meaning Description
200 OK Successfully make the application private.

Upload File To S3


Sample request

curl
  -T ${filePath}
  -H "Content-Type: application/octet-stream"
  -H "x-amz-tagging: unsaved=true"
  -X PUT https://kobiton-us.s3.amazonaws.com/users/1/apps/app‐f417c89610a.apk?AWSAccessKeyId=AKINQ57IQCo...

PUT https://kobiton-us.s3.amazonaws.com/users/1/apps/app-prod-debug-237824a0-302c-11e7-9bfd-ff417c89610a.apk?AWSAccessKeyId=AKIAJDRVHONF2RQQ57IQ... HTTP/1.1
content-type: application/octet-stream
x-amz-tagging: unsaved=true
CONTENT OF YOUR APPLICATION FILE

// Example for JavaScript is not available. Please see Shell example.

// Example for Node.JS is not available. Please see Shell example.

# Example for Python is not available. Please see Shell example.

# Example for Ruby is not available. Please see Shell example.

// Example for Java is not available. Please see Shell example.

PUT /{pre-signed-url}

Pre-signed S3 URL helps us upload an application in secure.

This endpoints is a part of uploading apps to Apps Repository, see the detail document

Read more about pre-signed S3 URL

Responses

Status Meaning Description
200 OK The file has been uploaded successfully.

Devices

You can use cloud devices, your own devices or your organization’s devices with Kobiton manual and automation testing.

Visit Getting Started for more details

Get All Devices


Sample request

# You can also use wget
curl -X GET https://api.kobiton.com/v1/devices \
  -H 'Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
  -H 'Accept: application/json'

GET https://api.kobiton.com/v1/devices HTTP/1.1
Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=

Accept: application/json

var headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept':'application/json'

};
$.ajax({
  url: 'https://api.kobiton.com/v1/devices',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})
const request = require('request');

const headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept':'application/json'

};

request({
  url: 'https://api.kobiton.com/v1/devices',
  json: true,
  method: 'GET',

  headers: headers
}, function (err, response, body) {
  if (err) return console.error('Error:', err);

  console.log('Response:', response);
  console.log('Response body:', body);
});
require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept' => 'application/json'
}

result = RestClient.get 'https://api.kobiton.com/v1/devices', params: {
  }, headers: headers

p JSON.parse(result)
import requests
headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept': 'application/json'
}
r = requests.get('https://api.kobiton.com/v1/devices', params={

}, headers = headers)

print r.json()
URL obj = new URL("https://api.kobiton.com/v1/devices");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty ("Authorization", "Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

GET /devices

Retrieve devices in 3 groups: private/org, favorite and cloud devices.

Parameters

Parameter In Type Required Description
udid query string false The udid of Cloud device.
isBooked query boolean false Check if the device is booked.
isOnline query boolean false Check if the device is online.
modelName query string false The device model.
deviceName query string false The device name, can use exact name or name, name, name.
platformName query string false The device platform.
platformVersion query integer false The platform device version, can use exact version or version, version, version.
browserName query string false The browser is used in the device.
appiumDisabled query boolean false Check if Appium is disabled.

Sample response

{
  "privateDevices": [
    {
      "id": 17469,
      "isBooked": false,
      "isOnline": false,
      "modelName": "LG-K350",
      "deviceName": "LG K8",
      "resolution": {
        "width": 720,
        "height": 1280
      },
      "platformName": "ANDROID",
      "platformVersion": "6.0",
      "installedBrowsers": [
        {
          "name": "chrome",
          "version": "55.0.2883.91"
        }
      ],
      "deviceImageUrl": "",
      "isFavorite": true,
      "isCloud": true,
      "isMyOrg": false,
      "isMyOwn": false,
      "udid": "LGK350YPR4H"
    }
  ],
  "favoriteDevices": [
    {
      "id": 17469,
      "isBooked": false,
      "isOnline": false,
      "modelName": "LG-K350",
      "deviceName": "LG K8",
      "resolution": {
        "width": 720,
        "height": 1280
      },
      "platformName": "ANDROID",
      "platformVersion": "6.0",
      "installedBrowsers": [
        {
          "name": "chrome",
          "version": "55.0.2883.91"
        }
      ],
      "deviceImageUrl": "",
      "isFavorite": true,
      "isCloud": true,
      "isMyOrg": false,
      "isMyOwn": false
    }
  ],
  "cloudDevices": [
    {
      "id": 17469,
      "isBooked": false,
      "isOnline": false,
      "modelName": "LG-K350",
      "deviceName": "LG K8",
      "resolution": {
        "width": 720,
        "height": 1280
      },
      "platformName": "ANDROID",
      "platformVersion": "6.0",
      "installedBrowsers": [
        {
          "name": "chrome",
          "version": "55.0.2883.91"
        }
      ],
      "deviceImageUrl": "",
      "isFavorite": true,
      "isCloud": true,
      "isMyOrg": false,
      "isMyOwn": false
    }
  ]
}

Responses

Status Meaning Description
200 OK Get the devices successfully.

Response Schema

Status Code 200

Name Type Required Description
privateDevices [PrivateDevice] false No description
favoriteDevices [CloudDevice] false No description
cloudDevices [CloudDevice] false No description

Mark Device Favorite


Sample request

# You can also use wget
curl -X POST https://api.kobiton.com/v1/devices/{deviceId}/favorite
  -H 'Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='

POST https://api.kobiton.com/v1/devices/{deviceId}/favorite HTTP/1.1
Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=


var headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='

};
$.ajax({
  url: 'https://api.kobiton.com/v1/devices/{deviceId}/favorite',
  method: 'post',

  success: function(data) {
    console.log(JSON.stringify(data));
  }
})
const request = require('request');

const headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='

};

request({
  url: 'https://api.kobiton.com/v1/devices/{deviceId}/favorite',
  json: true,
  method: 'POST'

}, function (err, response, body) {
  if (err) return console.error('Error:', err);

  console.log('Response:', response);
  console.log('Response body:', body);
});
require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
}

result = RestClient.post 'https://api.kobiton.com/v1/devices/{deviceId}/favorite', params: {
  }

p JSON.parse(result)
import requests
headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
}
r = requests.post('https://api.kobiton.com/v1/devices/{deviceId}/favorite', params={

)

print r.json()
URL obj = new URL("https://api.kobiton.com/v1/devices/{deviceId}/favorite");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty ("Authorization", "Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

POST /devices/{deviceId}/favorite

Mark a device favorite

Parameters

Parameter In Type Required Description
deviceId path string true Device ID

Responses

Status Meaning Description
200 OK Successfully marked device favorite.

Unmark Favorite Device


Sample request

# You can also use wget
curl -X DELETE https://api.kobiton.com/v1/devices/{deviceId}/favorite
  -H 'Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='

DELETE https://api.kobiton.com/v1/devices/{deviceId}/favorite HTTP/1.1
Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=


var headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='

};
$.ajax({
  url: 'https://api.kobiton.com/v1/devices/{deviceId}/favorite',
  method: 'delete',

  success: function(data) {
    console.log(JSON.stringify(data));
  }
})
const request = require('request');

const headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='

};

request({
  url: 'https://api.kobiton.com/v1/devices/{deviceId}/favorite',
  json: true,
  method: 'DELETE'

}, function (err, response, body) {
  if (err) return console.error('Error:', err);

  console.log('Response:', response);
  console.log('Response body:', body);
});
require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
}

result = RestClient.delete 'https://api.kobiton.com/v1/devices/{deviceId}/favorite', params: {
  }

p JSON.parse(result)
import requests
headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
}
r = requests.delete('https://api.kobiton.com/v1/devices/{deviceId}/favorite', params={

)

print r.json()
URL obj = new URL("https://api.kobiton.com/v1/devices/{deviceId}/favorite");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
con.setRequestProperty ("Authorization", "Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

DELETE /devices/{deviceId}/favorite

Unmark a favorite device

Parameters

Parameter In Type Required Description
deviceId path string true Device ID

Responses

Status Meaning Description
200 OK Successfully unmarked favorite device.

Get Device Status


Sample request

# You can also use wget
curl -X GET https://api.kobiton.com/v1/devices/{deviceId}/status \
  -H 'Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
  -H 'Accept: application/json'

GET https://api.kobiton.com/v1/devices/{deviceId}/status HTTP/1.1
Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=

Accept: application/json

var headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept':'application/json'

};
$.ajax({
  url: 'https://api.kobiton.com/v1/devices/{deviceId}/status',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})
const request = require('request');

const headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept':'application/json'

};

request({
  url: 'https://api.kobiton.com/v1/devices/{deviceId}/status',
  json: true,
  method: 'GET',

  headers: headers
}, function (err, response, body) {
  if (err) return console.error('Error:', err);

  console.log('Response:', response);
  console.log('Response body:', body);
});
require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept' => 'application/json'
}

result = RestClient.get 'https://api.kobiton.com/v1/devices/{deviceId}/status', params: {
  }, headers: headers

p JSON.parse(result)
import requests
headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept': 'application/json'
}
r = requests.get('https://api.kobiton.com/v1/devices/{deviceId}/status', params={

}, headers = headers)

print r.json()
URL obj = new URL("https://api.kobiton.com/v1/devices/{deviceId}/status");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty ("Authorization", "Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

GET /devices/{deviceId}/status

Get status of a specific device

Sample response

{
  "isBooked": true,
  "isOnline": true
}

Responses

Status Meaning Description
200 OK Get device status sucessfully.

Response Schema

Status Code 200

Name Type Required Description
isBooked boolean false No description
isOnline boolean false No description

Sessions

Kobiton supports 2 testing types: Manual and Automation. Testers can access the sessions to see the test steps, device logs, device metadata and session video.

Get Sessions


Sample request

# You can also use wget
curl -X GET https://api.kobiton.com/v1/sessions \
  -H 'Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
  -H 'Accept: application/json'

GET https://api.kobiton.com/v1/sessions HTTP/1.1
Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=

Accept: application/json

var headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept':'application/json'

};
$.ajax({
  url: 'https://api.kobiton.com/v1/sessions',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})
const request = require('request');

const headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept':'application/json'

};

request({
  url: 'https://api.kobiton.com/v1/sessions',
  json: true,
  method: 'GET',

  headers: headers
}, function (err, response, body) {
  if (err) return console.error('Error:', err);

  console.log('Response:', response);
  console.log('Response body:', body);
});
require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept' => 'application/json'
}

result = RestClient.get 'https://api.kobiton.com/v1/sessions', params: {
  }, headers: headers

p JSON.parse(result)
import requests
headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept': 'application/json'
}
r = requests.get('https://api.kobiton.com/v1/sessions', params={

}, headers = headers)

print r.json()
URL obj = new URL("https://api.kobiton.com/v1/sessions");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty ("Authorization", "Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

GET /sessions

Retrieve all sessions belong to the current organization or user.

Parameters

Parameter In Type Required Description
state query string false The session status.
type query string false The session testing type.
platform query string false The platform of device used in session.
userId query integer false The user whom sessions belong to.
keyword query string false The keyword to search in session, version and device name.
page query integer false The page number, start from 1.
startDate query integer false The timestamp of start date.
endDate query integer false The timestamp of end date.

Sample response

{
  "members": [
    {
      "id": 114,
      "username": "Test User",
      "avatarUrl": "https://kobiton-us.s3.amazonaws.com/users/114/avatars/1492438501898.jpg"
    }
  ],
  "currentPage": 1,
  "totalPages": 1767,
  "data": [
    {
      "id": 3894,
      "userId": 114,
      "endedAt": "2017-04-17T16:02:59.952Z",
      "state": "COMPLETE",
      "type": "MANUAL",
      "name": "Manual testing on Samsung device",
      "description": "Test user case #101",
      "createdAt": "2017-04-17T16:02:55.182Z",
      "username": "Test User",
      "avatarUrl": "https://kobiton-staging.s3.amazonaws.com/users/114/avatars/1492438501898.jpg",
      "deviceBooked": false,
      "deviceOnline": false,
      "deviceImageUrl": "https://s3.amazonaws.com/kobiton/devices/256/samsung-galaxy-s6.png",
      "executionData": {
        "networkLogs": [
          {
            "endTime": "2017-12-09T16:47:45.943Z",
            "startTime": "2017-12-09T16:53:45.943Z",
            "fileName": "Har_202307_0",
            "path": "https://kobiton-us-east.s3.amazonaws.com/sessions/2307/network-logs/Har_202307_0-f80598a0-0db8-11e8-bb19-65c7ba03f67a.zip?AWSAccessKeyId=BKIBJ7BOUOZUJZMWR4WQ&Expires=1518238081&Signature=zGzB5S4xwaOy%2B5rg1kUT2EKVZZs%3D",
            "size": 25432
          }
        ],
        "log": {
          "previewPath": "sessions/3894/logs/device-54844080-2387-11e7-b00c-2f9a563e5f09.log",
          "downloadPath": "sessions/3894/logs/device-54844080-2387-11e7-b00c-2f9a563e5f09.log",
          "appiumPreviewPath": "sessions/71610/logs/appium-7435e650-6a8a-11e7-aef2-2f8386028e6a.log"
        },
        "actual": {
          "sdk": 23,
          "udid": "818972fe78cd87198",
          "isIos": false,
          "state": "device",
          "codeName": "zeroflteskt",
          "brandName": "samsung",
          "modelName": "SM-G920S",
          "deviceName": "Galaxy S6",
          "isEmulator": false,
          "orientation": 0,
          "platformName": "Android",
          "serialNumber": "06157df64310c502",
          "cpuArchitecture": "arm64-v8a",
          "platformVersion": "6.0.1",
          "resolution": {
            "width": 1440,
            "height": 2560
          },
          "installedBrowsers": [
            {
              "name": "chrome",
              "enabled": true,
              "version": "57.0.2987.132"
            }
          ]
        },
        "desired": {
          "modelName": "SM-G920S",
          "deviceName": "Galaxy S6",
          "platformName": "Android",
          "sessionName": "Test login page"
        },
        "versions": {
          "nodeVersion": "v7.4.0",
          "appiumVersion": "1.7.1"
        },
        "wdSessionId": "99f6ad1b-3f64-4544-b113-a6db9771a2f6"
      }
    }
  ]
}

Responses

Status Meaning Description
200 OK List of sessions.

Response Schema

Status Code 200

Name Type Required Description
currentPage integer false No description
totalPages integer false No description
members [object] false No description
» id integer false No description
» username string false No description
» avatarUrl string false No description
data [Session] false No description

Get a Session


Sample request

# You can also use wget
curl -X GET https://api.kobiton.com/v1/sessions/{sessionId} \
  -H 'Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
  -H 'Accept: application/json'

GET https://api.kobiton.com/v1/sessions/{sessionId} HTTP/1.1
Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=

Accept: application/json

var headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept':'application/json'

};
$.ajax({
  url: 'https://api.kobiton.com/v1/sessions/{sessionId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})
const request = require('request');

const headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept':'application/json'

};

request({
  url: 'https://api.kobiton.com/v1/sessions/{sessionId}',
  json: true,
  method: 'GET',

  headers: headers
}, function (err, response, body) {
  if (err) return console.error('Error:', err);

  console.log('Response:', response);
  console.log('Response body:', body);
});
require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept' => 'application/json'
}

result = RestClient.get 'https://api.kobiton.com/v1/sessions/{sessionId}', params: {
  }, headers: headers

p JSON.parse(result)
import requests
headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept': 'application/json'
}
r = requests.get('https://api.kobiton.com/v1/sessions/{sessionId}', params={

}, headers = headers)

print r.json()
URL obj = new URL("https://api.kobiton.com/v1/sessions/{sessionId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty ("Authorization", "Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

GET /sessions/{sessionId}

Retrieve a session info belonging to the current user or organization. Note: Absolute urls in response body like ‘screenshotDownloadUrl’, ‘previewUrl’, etc. expire in 2 hours since the response is made

Parameters

Parameter In Type Required Description
sessionId path integer true Session Id

Sample response

{
  "id": 3894,
  "userId": 114,
  "deviceId": 153,
  "endedAt": "2017-04-17T16:02:59.952Z",
  "state": "COMPLETE",
  "type": "MANUAL",
  "name": "Manual testing on Samsung device",
  "description": "Test user case #101",
  "createdAt": "2017-04-17T16:02:55.182Z",
  "username": "Test User",
  "avatarUrl": "https://kobiton-us.s3.amazonaws.com/users/114/avatars/1492438501898.jpg",
  "deviceImageUrl": "https://s3.amazonaws.com/kobiton/devices/256/samsung-galaxy-s6.png",
  "deviceBooked": false,
  "deviceOnline": true,
  "isCloud": true,
  "executionData": {
    "networkLogs": [
      {
        "endTime": "2017-12-09T16:47:45.943Z",
        "startTime": "2017-12-09T16:53:45.943Z",
        "fileName": "Har_202307_0",
        "path": "https://kobiton-us-east.s3.amazonaws.com/sessions/2307/network-logs/Har_202307_0-f80598a0-0db8-11e8-bb19-65c7ba03f67a.zip?AWSAccessKeyId=BKIBJ7BOUOZUJZMWR4WQ&Expires=1518238081&Signature=zGzB5S4xwaOy%2B5rg1kUT2EKVZZs%3D",
        "size": 25432
      }
    ],
    "log": {
      "previewPath": "sessions/3894/logs/device-54844080-2387-11e7-b00c-2f9a563e5f09.log",
      "downloadPath": "sessions/3894/logs/device-54844080-2387-11e7-b00c-2f9a563e5f09.log",
      "appiumPreviewPath": "sessions/71610/logs/appium-7435e650-6a8a-11e7-aef2-2f8386028e6a.log"
    },
    "actual": {
      "sdk": 23,
      "udid": "818972fe78cd87198",
      "isIos": false,
      "state": "device",
      "codeName": "zeroflteskt",
      "brandName": "samsung",
      "modelName": "SM-G920S",
      "deviceName": "Galaxy S6",
      "isEmulator": false,
      "orientation": 0,
      "platformName": "Android",
      "serialNumber": "06157df64310c502",
      "cpuArchitecture": "arm64-v8a",
      "platformVersion": "6.0.1",
      "resolution": {
        "width": 1440,
        "height": 2560
      },
      "installedBrowsers": [
        {
          "name": "chrome",
          "enabled": true,
          "version": "57.0.2987.132"
        }
      ]
    },
    "desired": {
      "modelName": "SM-G920S",
      "deviceName": "Galaxy S6",
      "platformName": "Android",
      "sessionName": "Test login page"
    },
    "versions": {
      "nodeVersion": "v7.4.0",
      "appiumVersion": "1.7.1"
    },
    "wdSessionId": "99f6ad1b-3f64-4544-b113-a6db9771a2f6"
  },
  "log": {
    "previewUrl": "https://kobiton-us.s3.amazonaws.com/sessions/3933/logs/device-38ffa250-23f0-11e7-be2a-a1d550620ffe.log?AWSAccessKeyId=AKIAINNNJIBOGNOGWBJQ&Expires=1500285830&Signature=4BMnjDB%2BPbw6sypKPl5DBOAeaUU%3D&response-cache-control=max-age%3D86400",
    "downloadUrl": "https://kobiton-us.s3.amazonaws.com/sessions/3933/logs/device-38ffa250-23f0-11e7-be2a-a1d550620ffe.log?AWSAccessKeyId=AKIAINNNJIBOGNOGWBJQ&Expires=1500285830&Signature=4BMnjDB%2BPbw6sypKPl5DBOAeaUU%3D&response-cache-control=max-age%3D86400",
    "appiumPreviewUrl": "https://kobiton-us.s3.amazonaws.com/sessions/3933/logs/appium-38ffa250-23f0-11e7-be2a-a1d550620ffe.log?AWSAccessKeyId=AKIAINNNJIBOGNOGWBJQ&Expires=1500285830&Signature=4BMnjDB%2BPbw6sypKPl5DBOAeaUU%3D&response-cache-control=max-age%3D86400",
    "previewSize": 5868641,
    "appiumPreviewSize": 5868641
  },
  "video": {
    "path": "https://kobiton-us.s3.amazonaws.com/sessions/3933/videos/device-38ffa250-23f0-11e7-be2a-a1d550620ffe.log?AWSAccessKeyId=AKIAINNNJIBOGNOGWBJQ&Expires=1500285830&Signature=4BMnjDB%2BPbw6sypKPl5DBOAeaUU%3D&response-cache-control=max-age%3D86400",
    "size": 534524
  }
}

Responses

Status Meaning Description
200 OK Session info including video, logs, etc.

Delete Session


Sample request

# You can also use wget
curl -X DELETE https://api.kobiton.com/v1/sessions/{sessionId}
  -H 'Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='

DELETE https://api.kobiton.com/v1/sessions/{sessionId} HTTP/1.1
Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=


var headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='

};
$.ajax({
  url: 'https://api.kobiton.com/v1/sessions/{sessionId}',
  method: 'delete',

  success: function(data) {
    console.log(JSON.stringify(data));
  }
})
const request = require('request');

const headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='

};

request({
  url: 'https://api.kobiton.com/v1/sessions/{sessionId}',
  json: true,
  method: 'DELETE'

}, function (err, response, body) {
  if (err) return console.error('Error:', err);

  console.log('Response:', response);
  console.log('Response body:', body);
});
require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
}

result = RestClient.delete 'https://api.kobiton.com/v1/sessions/{sessionId}', params: {
  }

p JSON.parse(result)
import requests
headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
}
r = requests.delete('https://api.kobiton.com/v1/sessions/{sessionId}', params={

)

print r.json()
URL obj = new URL("https://api.kobiton.com/v1/sessions/{sessionId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
con.setRequestProperty ("Authorization", "Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

DELETE /sessions/{sessionId}

Delete a session.

Parameters

Parameter In Type Required Description
sessionId path integer true Session Id

Responses

Status Meaning Description
200 OK Deleted the session successfully.

Update Session Information


Sample request

# You can also use wget
curl -X PUT https://api.kobiton.com/v1/sessions/{sessionId} \
  -H 'Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
  -H 'Content-Type: application/json'

PUT https://api.kobiton.com/v1/sessions/{sessionId} HTTP/1.1
Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=
Content-Type: application/json

var headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Content-Type':'application/json'

};
$.ajax({
  url: 'https://api.kobiton.com/v1/sessions/{sessionId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})
const request = require('request');
const inputBody = {
  "name": "Test Case 101",
  "description": "A new test to cover test case",
  "state": "PASSED | FAILED | COMPLETE"
};
const headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Content-Type':'application/json'

};

request({
  url: 'https://api.kobiton.com/v1/sessions/{sessionId}',
  json: true,
  method: 'PUT',
  body: inputBody,
  headers: headers
}, function (err, response, body) {
  if (err) return console.error('Error:', err);

  console.log('Response:', response);
  console.log('Response body:', body);
});
require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Content-Type' => 'application/json'
}

result = RestClient.put 'https://api.kobiton.com/v1/sessions/{sessionId}', params: {
  }, headers: headers

p JSON.parse(result)
import requests
headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Content-Type': 'application/json'
}
r = requests.put('https://api.kobiton.com/v1/sessions/{sessionId}', params={

}, headers = headers)

print r.json()
URL obj = new URL("https://api.kobiton.com/v1/sessions/{sessionId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
con.setRequestProperty ("Authorization", "Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

PUT /sessions/{sessionId}

Update a session’s information.

Body data

{
  "name": "Test Case 101",
  "description": "A new test to cover test case",
  "state": "PASSED | FAILED | COMPLETE"
}

Parameters

Parameter In Type Required Description
sessionId path integer true Session Id
body body object true
» name body string false No description
» description body string false No description
» state body string false No description

Enumerated Values

Parameter Value
» state PASSED
» state FAILED
» state COMPLETE
body

Supported session states:

Responses

Status Meaning Description
200 OK Updated session information successfully.

Get Session Commands


Sample request

# You can also use wget
curl -X GET https://api.kobiton.com/v1/sessions/{sessionId}/commands \
  -H 'Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
  -H 'Accept: application/json'

GET https://api.kobiton.com/v1/sessions/{sessionId}/commands HTTP/1.1
Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=

Accept: application/json

var headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept':'application/json'

};
$.ajax({
  url: 'https://api.kobiton.com/v1/sessions/{sessionId}/commands',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})
const request = require('request');

const headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept':'application/json'

};

request({
  url: 'https://api.kobiton.com/v1/sessions/{sessionId}/commands',
  json: true,
  method: 'GET',

  headers: headers
}, function (err, response, body) {
  if (err) return console.error('Error:', err);

  console.log('Response:', response);
  console.log('Response body:', body);
});
require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept' => 'application/json'
}

result = RestClient.get 'https://api.kobiton.com/v1/sessions/{sessionId}/commands', params: {
  }, headers: headers

p JSON.parse(result)
import requests
headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept': 'application/json'
}
r = requests.get('https://api.kobiton.com/v1/sessions/{sessionId}/commands', params={

}, headers = headers)

print r.json()
URL obj = new URL("https://api.kobiton.com/v1/sessions/{sessionId}/commands");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty ("Authorization", "Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

GET /sessions/{sessionId}/commands

Retrieves commands of a session belonging to the current user or organization.

Parameters

Parameter In Type Required Description
page query integer false The page number of commands, start from 1. Each page contains 20 commands.
sessionId path integer true Session Id

Sample response

{
  "currentPage": 1,
  "totalPages": 3,
  "data": [
    {
      "id": 12032,
      "sessionId": 12032,
      "data": {
        "url": "/wd/hub/session/99b6ad1c-3664-4544-b113-a6db9771a2f6/url",
        "method": "POST",
        "statusCode": 200,
        "requestBody": {
          "url": "https://kobiton.com/blog/"
        },
        "responseBody": {
          "value": "",
          "status": 0,
          "sessionId": "99b6ad1c-3664-4544-b113-a6db9771a2f6"
        },
        "value": "HOME",
        "action": "PRESS_BUTTON"
      },
      "screenshot": "sessions/160570/screenshots/12034174.jpg",
      "screenshotDownloadUrl": "https://kobiton-us.s3.amazonaws.com/sessions/160570/screenshots/12034174.jpg?AWSAccessKeyId=AKIAINNNJIBOGNOGWBJQ&Expires=1500285830&Signature=4BMnjDB%2BPbw6sypKPl5DBOAeaUU%3D&response-cache-control=max-age%3D86400",
      "endedAt": "2017-04-17T16:02:59.952Z",
      "createdAt": "2017-04-17T16:02:59.952Z"
    }
  ]
}

Responses

Status Meaning Description
200 OK List of sessions.

Response Schema

Status Code 200

Name Type Required Description
currentPage integer false No description
totalPages integer false No description
data [SessionCommandData] false No description

Terminate a Session


Sample request

# You can also use wget
curl -X DELETE https://api.kobiton.com/v1/sessions/{sessionId}/terminate
  -H 'Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='

DELETE https://api.kobiton.com/v1/sessions/{sessionId}/terminate HTTP/1.1
Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=


var headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='

};
$.ajax({
  url: 'https://api.kobiton.com/v1/sessions/{sessionId}/terminate',
  method: 'delete',

  success: function(data) {
    console.log(JSON.stringify(data));
  }
})
const request = require('request');

const headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='

};

request({
  url: 'https://api.kobiton.com/v1/sessions/{sessionId}/terminate',
  json: true,
  method: 'DELETE'

}, function (err, response, body) {
  if (err) return console.error('Error:', err);

  console.log('Response:', response);
  console.log('Response body:', body);
});
require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
}

result = RestClient.delete 'https://api.kobiton.com/v1/sessions/{sessionId}/terminate', params: {
  }

p JSON.parse(result)
import requests
headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
}
r = requests.delete('https://api.kobiton.com/v1/sessions/{sessionId}/terminate', params={

)

print r.json()
URL obj = new URL("https://api.kobiton.com/v1/sessions/{sessionId}/terminate");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
con.setRequestProperty ("Authorization", "Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

DELETE /sessions/{sessionId}/terminate

Terminate a session.

Parameters

Parameter In Type Required Description
sessionId path integer true Session Id

Responses

Status Meaning Description
200 OK Terminate the session successfully.

User

Get Subscription Information


Sample request

# You can also use wget
curl -X GET https://api.kobiton.com/v1/users/me/subscription \
  -H 'Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E='
  -H 'Accept: application/json'

GET https://api.kobiton.com/v1/users/me/subscription HTTP/1.1
Authorization: Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=

Accept: application/json

var headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept':'application/json'

};
$.ajax({
  url: 'https://api.kobiton.com/v1/users/me/subscription',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})
const request = require('request');

const headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept':'application/json'

};

request({
  url: 'https://api.kobiton.com/v1/users/me/subscription',
  json: true,
  method: 'GET',

  headers: headers
}, function (err, response, body) {
  if (err) return console.error('Error:', err);

  console.log('Response:', response);
  console.log('Response body:', body);
});
require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept' => 'application/json'
}

result = RestClient.get 'https://api.kobiton.com/v1/users/me/subscription', params: {
  }, headers: headers

p JSON.parse(result)
import requests
headers = {
  'Authorization': 'Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=',
  'Accept': 'application/json'
}
r = requests.get('https://api.kobiton.com/v1/users/me/subscription', params={

}, headers = headers)

print r.json()
URL obj = new URL("https://api.kobiton.com/v1/users/me/subscription");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty ("Authorization", "Basic dGVzdHVzZXI6MTIzZWQtMTIzZmFjLTkxMzdkY2E=");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

GET /users/me/subscription

Retrieves subscription information of current user.

Sample response

{
  "planName": "Business - Monthly",
  "startedAt": "2017-08-14T10:30:38.000Z",
  "endsAt": "2017-09-14T10:30:38.000Z",
  "totalUsableMinutes": 911,
  "usedMinutes": 706,
  "remainingMinutes": 205,
  "overageMinutes": 0,
  "purchasedDeviceSlots": 100
}

Responses

Status Meaning Description
200 OK Get subscription information successfully.

totalUsableMinutes is a total of usedMinutes and remainingMinutes

Schemas

App

{
  "id": 17,
  "createdAt": "2017‐04‐18T04:36:05.537Z",
  "name": "Test App",
  "privateAccess": true,
  "os": "ANDROID",
  "createdBy": "testuser",
  "state": "OK",
  "versions": [
    {
      "id": 20,
      "createdAt": "2017‐04‐18T04:36:05.556Z",
      "name": "Test App",
      "version": "1.3.0",
      "createdBy": "testuser",
      "state": "OK",
      "nativeProperties": {
        "package": null,
        "application": {
          "icon": "res/mipmap‐mdpi‐v4/app‐prod‐debug.png",
          "label": "Test App",
          "versionName": "1.3.0",
          "iconLocalPath": "/tmp/kobiton‐api‐13956/u‐1‐1492490165564/app‐prod‐debug‐8165dff0‐23f0‐11e7‐81ff‐7f02fd6dff65/res/mipmap‐mdpi‐v",
          "iconUrl": "https://kobiton.s3.amazonaws.com/users/1/apps/app‐prod‐debug‐8c96dd70‐23f0‐11e7‐81ff‐7f02fd6dff65.png?AWSAccessKeyId=AKIAJDVH"
        }
      }
    }
  ],
  "iconUrl": "https://kobiton.s3.amazonaws.com/users/1/apps/app‐prod‐debug‐8c96dd70‐23f0‐11e7‐81ff‐7f02fd6dff65.png?AWSAccessKeyId=AKIAJDVH"
} 

Properties

Name Type Required Description
id string false No description
createdAt date false No description
name string false No description
privateAccess boolean false No description
os string false No description
createdBy string false No description
state string false No description
iconUrl string false No description
versions [object] false No description
» id string false No description
» createdAt date false No description
» name string false No description
» version string false No description
» createdBy string false No description
» state string false No description
» nativeProperties object false No description
»» package Unknown false No description
»» application object false No description
»»» icon string false No description
»»» label string false No description
»»» versionName string false No description
»»» iconLocalPath string false No description
»»» iconUrl string false No description

CloudDevice

{
  "id": 17469,
  "isBooked": false,
  "isOnline": false,
  "modelName": "LG-K350",
  "deviceName": "LG K8",
  "resolution": {
    "width": 720,
    "height": 1280
  },
  "platformName": "ANDROID",
  "platformVersion": "6.0",
  "installedBrowsers": [
    {
      "name": "chrome",
      "version": "55.0.2883.91"
    }
  ],
  "deviceImageUrl": "",
  "isFavorite": true,
  "isCloud": true,
  "isMyOrg": false,
  "isMyOwn": false
} 

Properties

Name Type Required Description
id integer false No description
isBooked boolean false No description
isOnline boolean false No description
modelName string false No description
deviceName string false No description
resolution object false No description
» width integer false No description
» height integer false No description
platformName string false No description
platformVersion string false No description
deviceImageUrl string false No description
isFavorite boolean false No description
isCloud boolean false No description
isMyOrg boolean false No description
isMyOwn boolean false No description
installedBrowsers [object] false No description
» name string false No description
» version string false No description

PrivateDevice

{
  "id": 17469,
  "isBooked": false,
  "isOnline": false,
  "modelName": "LG-K350",
  "deviceName": "LG K8",
  "resolution": {
    "width": 720,
    "height": 1280
  },
  "platformName": "ANDROID",
  "platformVersion": "6.0",
  "installedBrowsers": [
    {
      "name": "chrome",
      "version": "55.0.2883.91"
    }
  ],
  "deviceImageUrl": "",
  "isFavorite": true,
  "isCloud": true,
  "isMyOrg": false,
  "isMyOwn": false,
  "udid": "LGK350YPR4H"
} 

Properties

Name Type Required Description
undefined object false No description
udid string false No description

ExecutionData

{
  "networkLogs": [
    {
      "endTime": "2017-12-09T16:47:45.943Z",
      "startTime": "2017-12-09T16:53:45.943Z",
      "fileName": "Har_202307_0",
      "path": "https://kobiton-us-east.s3.amazonaws.com/sessions/2307/network-logs/Har_202307_0-f80598a0-0db8-11e8-bb19-65c7ba03f67a.zip?AWSAccessKeyId=BKIBJ7BOUOZUJZMWR4WQ&Expires=1518238081&Signature=zGzB5S4xwaOy%2B5rg1kUT2EKVZZs%3D",
      "size": 25432
    }
  ],
  "log": {
    "previewPath": "sessions/3894/logs/device-54844080-2387-11e7-b00c-2f9a563e5f09.log",
    "downloadPath": "sessions/3894/logs/device-54844080-2387-11e7-b00c-2f9a563e5f09.log",
    "appiumPreviewPath": "sessions/71610/logs/appium-7435e650-6a8a-11e7-aef2-2f8386028e6a.log"
  },
  "actual": {
    "sdk": 23,
    "udid": "818972fe78cd87198",
    "isIos": false,
    "state": "device",
    "codeName": "zeroflteskt",
    "brandName": "samsung",
    "modelName": "SM-G920S",
    "deviceName": "Galaxy S6",
    "isEmulator": false,
    "orientation": 0,
    "platformName": "Android",
    "serialNumber": "06157df64310c502",
    "cpuArchitecture": "arm64-v8a",
    "platformVersion": "6.0.1",
    "resolution": {
      "width": 1440,
      "height": 2560
    },
    "installedBrowsers": [
      {
        "name": "chrome",
        "enabled": true,
        "version": "57.0.2987.132"
      }
    ]
  },
  "desired": {
    "modelName": "SM-G920S",
    "deviceName": "Galaxy S6",
    "platformName": "Android",
    "sessionName": "Test login page"
  },
  "versions": {
    "nodeVersion": "v7.4.0",
    "appiumVersion": "1.7.1"
  },
  "wdSessionId": "99f6ad1b-3f64-4544-b113-a6db9771a2f6"
} 

Properties

Name Type Required Description
log object false No description
» previewPath string false No description
» downloadPath string false No description
» appiumPreviewPath string false No description
actual object false No description
» sdk string false No description
» udid string false No description
» isIos boolean false No description
» state string false No description
» codeName string false No description
» brandName string false No description
» modelName string false No description
» deviceName string false No description
» isEmulator boolean false No description
» orientation integer false No description
» platformName string false No description
» serialNumber string false No description
» cpuArchitecture string false No description
» platformVersion string false No description
» resolution object false No description
»» width integer false No description
»» height integer false No description
» installedBrowsers [object] false No description
»» name string false No description
»» enabled boolean false No description
»» version string false No description
desired object false No description
» modelName string false No description
» deviceName string false No description
» platformName string false No description
» sessionName string false No description
versions object false No description
» nodeVersion string false No description
» appiumVersion string false No description
wdSessionId string false No description
networkLogs [object] false No description
» endTime string false No description
» startTime string false No description
» fileName string false No description
» path string false No description
» size integer false No description

SessionCommandData

{
  "id": 12032,
  "sessionId": 12032,
  "data": {
    "url": "/wd/hub/session/99b6ad1c-3664-4544-b113-a6db9771a2f6/url",
    "method": "POST",
    "statusCode": 200,
    "requestBody": {
      "url": "https://kobiton.com/blog/"
    },
    "responseBody": {
      "value": "",
      "status": 0,
      "sessionId": "99b6ad1c-3664-4544-b113-a6db9771a2f6"
    },
    "value": "HOME",
    "action": "PRESS_BUTTON"
  },
  "screenshot": "sessions/160570/screenshots/12034174.jpg",
  "screenshotDownloadUrl": "https://kobiton-us.s3.amazonaws.com/sessions/160570/screenshots/12034174.jpg?AWSAccessKeyId=AKIAINNNJIBOGNOGWBJQ&Expires=1500285830&Signature=4BMnjDB%2BPbw6sypKPl5DBOAeaUU%3D&response-cache-control=max-age%3D86400",
  "endedAt": "2017-04-17T16:02:59.952Z",
  "createdAt": "2017-04-17T16:02:59.952Z"
} 

Properties

Name Type Required Description
id integer false No description
sessionId integer false No description
data object false No description
» url string false No description
» method string false No description
» statusCode integer false No description
» requestBody object false No description
»» url string false No description
» responseBody object false No description
»» value string false No description
»» status integer false No description
»» sessionId string false No description
» value string false No description
» action string false No description
screenshot string false No description
screenshotDownloadUrl string false No description
endedAt datetime false No description
createdAt datetime false No description

SessionDetail

{
  "id": 3894,
  "userId": 114,
  "deviceId": 153,
  "endedAt": "2017-04-17T16:02:59.952Z",
  "state": "COMPLETE",
  "type": "MANUAL",
  "name": "Manual testing on Samsung device",
  "description": "Test user case #101",
  "createdAt": "2017-04-17T16:02:55.182Z",
  "username": "Test User",
  "avatarUrl": "https://kobiton-us.s3.amazonaws.com/users/114/avatars/1492438501898.jpg",
  "deviceImageUrl": "https://s3.amazonaws.com/kobiton/devices/256/samsung-galaxy-s6.png",
  "deviceBooked": false,
  "deviceOnline": true,
  "isCloud": true,
  "executionData": {
    "networkLogs": [
      {
        "endTime": "2017-12-09T16:47:45.943Z",
        "startTime": "2017-12-09T16:53:45.943Z",
        "fileName": "Har_202307_0",
        "path": "https://kobiton-us-east.s3.amazonaws.com/sessions/2307/network-logs/Har_202307_0-f80598a0-0db8-11e8-bb19-65c7ba03f67a.zip?AWSAccessKeyId=BKIBJ7BOUOZUJZMWR4WQ&Expires=1518238081&Signature=zGzB5S4xwaOy%2B5rg1kUT2EKVZZs%3D",
        "size": 25432
      }
    ],
    "log": {
      "previewPath": "sessions/3894/logs/device-54844080-2387-11e7-b00c-2f9a563e5f09.log",
      "downloadPath": "sessions/3894/logs/device-54844080-2387-11e7-b00c-2f9a563e5f09.log",
      "appiumPreviewPath": "sessions/71610/logs/appium-7435e650-6a8a-11e7-aef2-2f8386028e6a.log"
    },
    "actual": {
      "sdk": 23,
      "udid": "818972fe78cd87198",
      "isIos": false,
      "state": "device",
      "codeName": "zeroflteskt",
      "brandName": "samsung",
      "modelName": "SM-G920S",
      "deviceName": "Galaxy S6",
      "isEmulator": false,
      "orientation": 0,
      "platformName": "Android",
      "serialNumber": "06157df64310c502",
      "cpuArchitecture": "arm64-v8a",
      "platformVersion": "6.0.1",
      "resolution": {
        "width": 1440,
        "height": 2560
      },
      "installedBrowsers": [
        {
          "name": "chrome",
          "enabled": true,
          "version": "57.0.2987.132"
        }
      ]
    },
    "desired": {
      "modelName": "SM-G920S",
      "deviceName": "Galaxy S6",
      "platformName": "Android",
      "sessionName": "Test login page"
    },
    "versions": {
      "nodeVersion": "v7.4.0",
      "appiumVersion": "1.7.1"
    },
    "wdSessionId": "99f6ad1b-3f64-4544-b113-a6db9771a2f6"
  },
  "log": {
    "previewUrl": "https://kobiton-us.s3.amazonaws.com/sessions/3933/logs/device-38ffa250-23f0-11e7-be2a-a1d550620ffe.log?AWSAccessKeyId=AKIAINNNJIBOGNOGWBJQ&Expires=1500285830&Signature=4BMnjDB%2BPbw6sypKPl5DBOAeaUU%3D&response-cache-control=max-age%3D86400",
    "downloadUrl": "https://kobiton-us.s3.amazonaws.com/sessions/3933/logs/device-38ffa250-23f0-11e7-be2a-a1d550620ffe.log?AWSAccessKeyId=AKIAINNNJIBOGNOGWBJQ&Expires=1500285830&Signature=4BMnjDB%2BPbw6sypKPl5DBOAeaUU%3D&response-cache-control=max-age%3D86400",
    "appiumPreviewUrl": "https://kobiton-us.s3.amazonaws.com/sessions/3933/logs/appium-38ffa250-23f0-11e7-be2a-a1d550620ffe.log?AWSAccessKeyId=AKIAINNNJIBOGNOGWBJQ&Expires=1500285830&Signature=4BMnjDB%2BPbw6sypKPl5DBOAeaUU%3D&response-cache-control=max-age%3D86400",
    "previewSize": 5868641,
    "appiumPreviewSize": 5868641
  },
  "video": {
    "path": "https://kobiton-us.s3.amazonaws.com/sessions/3933/videos/device-38ffa250-23f0-11e7-be2a-a1d550620ffe.log?AWSAccessKeyId=AKIAINNNJIBOGNOGWBJQ&Expires=1500285830&Signature=4BMnjDB%2BPbw6sypKPl5DBOAeaUU%3D&response-cache-control=max-age%3D86400",
    "size": 534524
  }
} 

Properties

Name Type Required Description
id integer false No description
userId integer false No description
deviceId integer false No description
endedAt datetime false No description
state string false No description
type string false No description
name string false No description
description string false No description
createdAt datetime false No description
username string false No description
avatarUrl string false No description
deviceImageUrl string false No description
deviceBooked boolean false No description
deviceOnline boolean false No description
isCloud boolean false No description
executionData ExecutionData false No description
log object false No description
» previewUrl string false No description
» downloadUrl string false No description
» appiumPreviewUrl string false No description
» previewSize integer false No description
» appiumPreviewSize integer false No description
video object false No description
» path string false No description
» size integer false No description

Session

{
  "id": 3894,
  "userId": 114,
  "endedAt": "2017-04-17T16:02:59.952Z",
  "state": "COMPLETE",
  "type": "MANUAL",
  "name": "Manual testing on Samsung device",
  "description": "Test user case #101",
  "createdAt": "2017-04-17T16:02:55.182Z",
  "username": "Test User",
  "avatarUrl": "https://kobiton-staging.s3.amazonaws.com/users/114/avatars/1492438501898.jpg",
  "deviceBooked": false,
  "deviceOnline": false,
  "deviceImageUrl": "https://s3.amazonaws.com/kobiton/devices/256/samsung-galaxy-s6.png",
  "executionData": {
    "networkLogs": [
      {
        "endTime": "2017-12-09T16:47:45.943Z",
        "startTime": "2017-12-09T16:53:45.943Z",
        "fileName": "Har_202307_0",
        "path": "https://kobiton-us-east.s3.amazonaws.com/sessions/2307/network-logs/Har_202307_0-f80598a0-0db8-11e8-bb19-65c7ba03f67a.zip?AWSAccessKeyId=BKIBJ7BOUOZUJZMWR4WQ&Expires=1518238081&Signature=zGzB5S4xwaOy%2B5rg1kUT2EKVZZs%3D",
        "size": 25432
      }
    ],
    "log": {
      "previewPath": "sessions/3894/logs/device-54844080-2387-11e7-b00c-2f9a563e5f09.log",
      "downloadPath": "sessions/3894/logs/device-54844080-2387-11e7-b00c-2f9a563e5f09.log",
      "appiumPreviewPath": "sessions/71610/logs/appium-7435e650-6a8a-11e7-aef2-2f8386028e6a.log"
    },
    "actual": {
      "sdk": 23,
      "udid": "818972fe78cd87198",
      "isIos": false,
      "state": "device",
      "codeName": "zeroflteskt",
      "brandName": "samsung",
      "modelName": "SM-G920S",
      "deviceName": "Galaxy S6",
      "isEmulator": false,
      "orientation": 0,
      "platformName": "Android",
      "serialNumber": "06157df64310c502",
      "cpuArchitecture": "arm64-v8a",
      "platformVersion": "6.0.1",
      "resolution": {
        "width": 1440,
        "height": 2560
      },
      "installedBrowsers": [
        {
          "name": "chrome",
          "enabled": true,
          "version": "57.0.2987.132"
        }
      ]
    },
    "desired": {
      "modelName": "SM-G920S",
      "deviceName": "Galaxy S6",
      "platformName": "Android",
      "sessionName": "Test login page"
    },
    "versions": {
      "nodeVersion": "v7.4.0",
      "appiumVersion": "1.7.1"
    },
    "wdSessionId": "99f6ad1b-3f64-4544-b113-a6db9771a2f6"
  }
} 

Properties

Name Type Required Description
id integer false No description
userId integer false No description
endedAt datetime false No description
state string false No description
type string false No description
name string false No description
description string false No description
createdAt datetime false No description
username string false No description
avatarUrl string false No description
deviceBooked boolean false No description
deviceOnline boolean false No description
deviceImageUrl string false No description
executionData ExecutionData false No description

UserSubscription

{
  "planName": "Business - Monthly",
  "startedAt": "2017-08-14T10:30:38.000Z",
  "endsAt": "2017-09-14T10:30:38.000Z",
  "totalUsableMinutes": 911,
  "usedMinutes": 706,
  "remainingMinutes": 205,
  "overageMinutes": 0,
  "purchasedDeviceSlots": 100
} 

Properties

Name Type Required Description
planName string false No description
startedAt datetime false No description
endsAt datetime false No description
totalUsableMinutes integer false No description
usedMinutes integer false No description
remainingMinutes integer false No description
overageMinutes integer false No description
purchasedDeviceSlots integer false No description