curl --request PATCH \
--url https://api.mobileboost.io/tests \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"testId": "<string>",
"commands": [
"<string>"
],
"title": "<string>",
"tags": [
"<string>"
],
"autoGenerate": true,
"folderId": "<string>"
}
'import requests
url = "https://api.mobileboost.io/tests"
payload = {
"testId": "<string>",
"commands": ["<string>"],
"title": "<string>",
"tags": ["<string>"],
"autoGenerate": True,
"folderId": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
testId: '<string>',
commands: ['<string>'],
title: '<string>',
tags: ['<string>'],
autoGenerate: true,
folderId: '<string>'
})
};
fetch('https://api.mobileboost.io/tests', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.mobileboost.io/tests",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'testId' => '<string>',
'commands' => [
'<string>'
],
'title' => '<string>',
'tags' => [
'<string>'
],
'autoGenerate' => true,
'folderId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.mobileboost.io/tests"
payload := strings.NewReader("{\n \"testId\": \"<string>\",\n \"commands\": [\n \"<string>\"\n ],\n \"title\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"autoGenerate\": true,\n \"folderId\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.mobileboost.io/tests")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"testId\": \"<string>\",\n \"commands\": [\n \"<string>\"\n ],\n \"title\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"autoGenerate\": true,\n \"folderId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mobileboost.io/tests")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"testId\": \"<string>\",\n \"commands\": [\n \"<string>\"\n ],\n \"title\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"autoGenerate\": true,\n \"folderId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyUpdate test
Update an existing test. Send testId plus the fields you want to change; anything you omit is left as it is.
Only a change to commands re-triggers automation generation, because only that changes what the test should do. Renaming a test, re-tagging it or moving it to another folder leaves the generated automation alone, and the response says so with automation.requested: false.
curl --request PATCH \
--url https://api.mobileboost.io/tests \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"testId": "<string>",
"commands": [
"<string>"
],
"title": "<string>",
"tags": [
"<string>"
],
"autoGenerate": true,
"folderId": "<string>"
}
'import requests
url = "https://api.mobileboost.io/tests"
payload = {
"testId": "<string>",
"commands": ["<string>"],
"title": "<string>",
"tags": ["<string>"],
"autoGenerate": True,
"folderId": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
testId: '<string>',
commands: ['<string>'],
title: '<string>',
tags: ['<string>'],
autoGenerate: true,
folderId: '<string>'
})
};
fetch('https://api.mobileboost.io/tests', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.mobileboost.io/tests",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'testId' => '<string>',
'commands' => [
'<string>'
],
'title' => '<string>',
'tags' => [
'<string>'
],
'autoGenerate' => true,
'folderId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.mobileboost.io/tests"
payload := strings.NewReader("{\n \"testId\": \"<string>\",\n \"commands\": [\n \"<string>\"\n ],\n \"title\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"autoGenerate\": true,\n \"folderId\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.mobileboost.io/tests")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"testId\": \"<string>\",\n \"commands\": [\n \"<string>\"\n ],\n \"title\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"autoGenerate\": true,\n \"folderId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mobileboost.io/tests")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"testId\": \"<string>\",\n \"commands\": [\n \"<string>\"\n ],\n \"title\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"autoGenerate\": true,\n \"folderId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyAuthorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Send testId plus at least one field to change. An omitted field is left as it is.
The commands the test is made of. Changing them changes what the test should do, so this is the one field that re-triggers automation generation.
Rename the test. Renaming never re-triggers automation generation. Titles are unique within an organisation, so a title another test already uses is refused.
Replace the test's tags. Send the full list you want the test to end up with: [] clears them, and omitting the field leaves them as they are. Re-tagging never re-triggers automation generation, so a CI job can regroup a suite as often as it likes. Tags are trimmed and de-duplicated before they are stored.
Whether updating this test's commands should automatically re-trigger MobileBoost to write and verify its automation code. Defaults to true; pass false to skip automatic generation.
Move the test to this folder, or null to take it out of its folder. Omit the field to leave the folder as it is. Changing a test's folder never re-triggers automation generation: it does not change what the test should do.
Response
Successful response

