curl --request POST \
--url https://tester.army/api/v1/groups/{groupId}/runs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"projectEnvironmentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"targetUrl": "<string>",
"mobile": {
"appId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"bundleId": "<string>",
"artifactUrl": "<string>",
"artifactFilename": "<string>",
"buildId": "<string>"
},
"commitSha": "<string>",
"prNumber": 123
}
'import requests
url = "https://tester.army/api/v1/groups/{groupId}/runs"
payload = {
"projectEnvironmentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"targetUrl": "<string>",
"mobile": {
"appId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"bundleId": "<string>",
"artifactUrl": "<string>",
"artifactFilename": "<string>",
"buildId": "<string>"
},
"commitSha": "<string>",
"prNumber": 123
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
projectEnvironmentId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
targetUrl: '<string>',
mobile: {
appId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
bundleId: '<string>',
artifactUrl: '<string>',
artifactFilename: '<string>',
buildId: '<string>'
},
commitSha: '<string>',
prNumber: 123
})
};
fetch('https://tester.army/api/v1/groups/{groupId}/runs', 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://tester.army/api/v1/groups/{groupId}/runs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'projectEnvironmentId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'targetUrl' => '<string>',
'mobile' => [
'appId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'bundleId' => '<string>',
'artifactUrl' => '<string>',
'artifactFilename' => '<string>',
'buildId' => '<string>'
],
'commitSha' => '<string>',
'prNumber' => 123
]),
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://tester.army/api/v1/groups/{groupId}/runs"
payload := strings.NewReader("{\n \"projectEnvironmentId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"targetUrl\": \"<string>\",\n \"mobile\": {\n \"appId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"bundleId\": \"<string>\",\n \"artifactUrl\": \"<string>\",\n \"artifactFilename\": \"<string>\",\n \"buildId\": \"<string>\"\n },\n \"commitSha\": \"<string>\",\n \"prNumber\": 123\n}")
req, _ := http.NewRequest("POST", 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.post("https://tester.army/api/v1/groups/{groupId}/runs")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"projectEnvironmentId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"targetUrl\": \"<string>\",\n \"mobile\": {\n \"appId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"bundleId\": \"<string>\",\n \"artifactUrl\": \"<string>\",\n \"artifactFilename\": \"<string>\",\n \"buildId\": \"<string>\"\n },\n \"commitSha\": \"<string>\",\n \"prNumber\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://tester.army/api/v1/groups/{groupId}/runs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"projectEnvironmentId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"targetUrl\": \"<string>\",\n \"mobile\": {\n \"appId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"bundleId\": \"<string>\",\n \"artifactUrl\": \"<string>\",\n \"artifactFilename\": \"<string>\",\n \"buildId\": \"<string>\"\n },\n \"commitSha\": \"<string>\",\n \"prNumber\": 123\n}"
response = http.request(request)
puts response.read_body{
"status": "queued",
"groupId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"batchId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"runIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"queuedRunIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"cancelledRunIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"count": 123,
"metadata": {
"github": {
"configured": true,
"checkRunCreated": true,
"commentTargetResolved": true,
"status": "not_configured"
}
}
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Trigger a test group run
Trigger all runnable tests in a group using API-key authentication. Returns the batch ID plus queuedRunIds (runs accepted onto the worker) and cancelledRunIds (runs the server immediately cancelled, e.g. duplicates or quota cancellations). status is queued when at least one run is queued and cancelled when every run was rejected.
curl --request POST \
--url https://tester.army/api/v1/groups/{groupId}/runs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"projectEnvironmentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"targetUrl": "<string>",
"mobile": {
"appId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"bundleId": "<string>",
"artifactUrl": "<string>",
"artifactFilename": "<string>",
"buildId": "<string>"
},
"commitSha": "<string>",
"prNumber": 123
}
'import requests
url = "https://tester.army/api/v1/groups/{groupId}/runs"
payload = {
"projectEnvironmentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"targetUrl": "<string>",
"mobile": {
"appId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"bundleId": "<string>",
"artifactUrl": "<string>",
"artifactFilename": "<string>",
"buildId": "<string>"
},
"commitSha": "<string>",
"prNumber": 123
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
projectEnvironmentId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
targetUrl: '<string>',
mobile: {
appId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
bundleId: '<string>',
artifactUrl: '<string>',
artifactFilename: '<string>',
buildId: '<string>'
},
commitSha: '<string>',
prNumber: 123
})
};
fetch('https://tester.army/api/v1/groups/{groupId}/runs', 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://tester.army/api/v1/groups/{groupId}/runs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'projectEnvironmentId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'targetUrl' => '<string>',
'mobile' => [
'appId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'bundleId' => '<string>',
'artifactUrl' => '<string>',
'artifactFilename' => '<string>',
'buildId' => '<string>'
],
'commitSha' => '<string>',
'prNumber' => 123
]),
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://tester.army/api/v1/groups/{groupId}/runs"
payload := strings.NewReader("{\n \"projectEnvironmentId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"targetUrl\": \"<string>\",\n \"mobile\": {\n \"appId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"bundleId\": \"<string>\",\n \"artifactUrl\": \"<string>\",\n \"artifactFilename\": \"<string>\",\n \"buildId\": \"<string>\"\n },\n \"commitSha\": \"<string>\",\n \"prNumber\": 123\n}")
req, _ := http.NewRequest("POST", 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.post("https://tester.army/api/v1/groups/{groupId}/runs")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"projectEnvironmentId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"targetUrl\": \"<string>\",\n \"mobile\": {\n \"appId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"bundleId\": \"<string>\",\n \"artifactUrl\": \"<string>\",\n \"artifactFilename\": \"<string>\",\n \"buildId\": \"<string>\"\n },\n \"commitSha\": \"<string>\",\n \"prNumber\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://tester.army/api/v1/groups/{groupId}/runs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"projectEnvironmentId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"targetUrl\": \"<string>\",\n \"mobile\": {\n \"appId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"bundleId\": \"<string>\",\n \"artifactUrl\": \"<string>\",\n \"artifactFilename\": \"<string>\",\n \"buildId\": \"<string>\"\n },\n \"commitSha\": \"<string>\",\n \"prNumber\": 123\n}"
response = http.request(request)
puts response.read_body{
"status": "queued",
"groupId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"batchId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"runIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"queuedRunIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"cancelledRunIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"count": 123,
"metadata": {
"github": {
"configured": true,
"checkRunCreated": true,
"commentTargetResolved": true,
"status": "not_configured"
}
}
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Authorizations
API key authentication using Bearer token format. The CLI's ta auth access tokens are also accepted; because they name a user rather than a workspace, a user in several workspaces selects one with the x-testerarmy-team header (workspace id or slug).
Path Parameters
Test group ID
Body
Run platform for the batch. Mobile tests default to ios when omitted, so Android runs must set platform: android - including when the mobile app is selected by appId or bundleId.
web, ios, android Mobile device variant within the run platform (iOS: iphone | ipad). Omit for the platform default phone-sized device; explicitly requesting the default (e.g. iphone) is equivalent to omitting it.
iphone, ipad production, staging, preview, custom Show child attributes
Show child attributes
1Response
Group run queued successfully