openapi: 3.0.0
info:
description: "Testim.io Public API for branches and tests"
version: "1.0.0"
title: "Testim.io Public API"
contact:
email: "support@testim.io"
servers:
- url: 'https://api.testim.io'
- url: 'https://api.eu.testim.io'
paths:
/mobile/applications:
get:
summary: Get All Mobile Applications
description: Get a list of all mobile applications related to the project
tags:
- Mobile Applications
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
applicationId:
type: string
fileSize:
type: number
description: The size of the uploaded file in bytes
status:
$ref: '#/components/schemas/mobileAppStatus'
appMetaData:
$ref: '#/components/schemas/mobileAppMetaData'
metaData:
$ref: '#/components/schemas/metaData'
'400':
$ref: '#/components/responses/InvalidOrMissingProperty'
'401':
$ref: '#/components/responses/InvalidApiKey'
'403':
$ref: '#/components/responses/ApiKeyInsufficientPermissions'
'429':
$ref: '#/components/responses/TooManyRequests'
post:
summary: Upload a new mobile application
description: Upload a new mobile application to the project
tags:
- Mobile Applications
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
required:
- file
responses:
'200':
description: Created
content:
application/json:
schema:
type: object
properties:
appId:
type: string
description: The id of the uploaded application
metaData:
$ref: '#/components/schemas/metaData'
'400':
$ref: '#/components/responses/InvalidOrMissingProperty'
'401':
$ref: '#/components/responses/InvalidApiKey'
'403':
$ref: '#/components/responses/ApiKeyInsufficientPermissions'
'429':
$ref: '#/components/responses/TooManyRequests'
/mobile/applications/{applicationId}:
get:
summary: Get a mobile application
description: Get a mobile application from the project
tags:
- Mobile Applications
parameters:
- in: path
name: applicationId
required: true
description: The id of the application to get
schema:
example: 'APPLICATION_ID'
responses:
'200':
description: Ok
content:
application/json:
schema:
type: object
properties:
applicationId:
type: string
fileSize:
type: number
description: The size of the uploaded file in bytes
status:
$ref: '#/components/schemas/mobileAppStatus'
appMetaData:
$ref: '#/components/schemas/mobileAppMetaData'
metaData:
$ref: '#/components/schemas/metaData'
'400':
$ref: '#/components/responses/InvalidOrMissingProperty'
'401':
$ref: '#/components/responses/InvalidApiKey'
'403':
$ref: '#/components/responses/ApiKeyInsufficientPermissions'
'404':
$ref: '#/components/responses/MobileAppDoesNotExist'
'429':
$ref: '#/components/responses/TooManyRequests'
delete:
summary: Delete a mobile application
description: Delete a mobile application from the project
tags:
- Mobile Applications
parameters:
- in: path
name: applicationId
required: true
description: The id of the application to delete
schema:
example: 'APPLICATION_ID'
responses:
'200':
description: Deleted
content:
application/json:
schema:
type: object
properties:
metaData:
$ref: '#/components/schemas/metaData'
'400':
$ref: '#/components/responses/InvalidOrMissingProperty'
'401':
$ref: '#/components/responses/InvalidApiKey'
'403':
$ref: '#/components/responses/ApiKeyInsufficientPermissions'
'404':
$ref: '#/components/responses/MobileAppDoesNotExist'
'429':
$ref: '#/components/responses/TooManyRequests'
/branches:
post:
summary: Creates a new branch
description: Forks source branch into a new branch
tags:
- Branches
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
sourceBranch:
description: The name of the branch to fork
example: master
type: string
newBranch:
description: The name of the new (target) branch
example: feature-234_login_form
type: string
required:
- sourceBranch
- newBranch
responses:
'200':
description: Created
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: The name given in the request's newBranch field
created_at:
$ref: '#/components/schemas/created_at'
metaData:
$ref: '#/components/schemas/metaData'
'400':
$ref: '#/components/responses/InvalidOrMissingProperty'
'409':
$ref: '#/components/responses/BranchAlreadyExists'
'401':
$ref: '#/components/responses/InvalidApiKey'
'403':
$ref: '#/components/responses/ApiKeyInsufficientPermissions'
'429':
$ref: '#/components/responses/TooManyRequests'
get:
summary: List branches
description: List all project branches
tags:
- Branches
responses:
'200':
description: List
content:
application/json:
schema:
type: object
properties:
branches:
type: array
items:
type: object
properties:
name:
type: string
description: Branch name
created_at:
$ref: '#/components/schemas/created_at'
modified_at:
$ref: '#/components/schemas/modified_at'
metaData:
$ref: '#/components/schemas/metaData'
'401':
$ref: '#/components/responses/InvalidApiKey'
'403':
$ref: '#/components/responses/ApiKeyInsufficientPermissions'
'429':
$ref: '#/components/responses/TooManyRequests'
/branches/merge:
put:
summary: Merge branches
description: Merge source into target branch
tags:
- Branches
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
targetBranch:
description: The name of the branch to merge into
example: feature-234_login_form
type: string
sourceBranch:
description: The name of the branch to merge from
example: master
type: string
forceMerge:
description: Whether to use heuristics to solve conflicts.
type: boolean
required:
- sourceBranch
- targetBranch
responses:
'200':
description: Merged
content:
application/json:
schema:
type: object
properties:
metaData:
$ref: '#/components/schemas/metaData'
'400':
$ref: '#/components/responses/InvalidOrMissingProperty'
'404':
$ref: '#/components/responses/BranchDoesNotExist'
'405':
$ref: '#/components/responses/BranchMergeError'
'401':
$ref: '#/components/responses/InvalidApiKey'
'403':
$ref: '#/components/responses/ApiKeyInsufficientPermissions'
'429':
$ref: '#/components/responses/TooManyRequests'
/branches/{branch}:
delete:
summary: Delete the given branch
tags:
- Branches
parameters:
- in: path
name: branch
required: true
description: The name of the branch to delete
schema:
example: 'CMPNY-23_fix_signin_form'
type: string
responses:
'200':
description: Deleted
content:
application/json:
schema:
type: object
properties:
metaData:
$ref: '#/components/schemas/metaData'
'400':
$ref: '#/components/responses/InvalidOrMissingProperty'
'404':
$ref: '#/components/responses/BranchDoesNotExist'
'401':
$ref: '#/components/responses/InvalidApiKey'
'403':
$ref: '#/components/responses/ApiKeyInsufficientPermissions'
'429':
$ref: '#/components/responses/TooManyRequests'
/tests:
get:
summary: List tests
description: "List the test names and IDs of a given branch"
tags:
- Tests
parameters:
- name: branch
in: query
required: false
description: The name of branch to list tests of.
example: 'CMPNY-23_fix_signin_form'
schema:
type : string
default: master
- name: includeTestStatus
in: query
required: false
description: Include the status of the test
schema:
type: boolean
default: false
responses:
'200':
description: Test list
content:
application/json:
schema:
type: object
properties:
tests:
type: array
items:
type: object
properties:
name:
type: string
description: Test name
_id:
type: string
description: Test ID
labels:
type: string
description: Labels associated with the test
metaData:
$ref: '#/components/schemas/metaData'
'400':
$ref: '#/components/responses/InvalidOrMissingProperty'
'401':
$ref: '#/components/responses/InvalidApiKey'
'403':
$ref: '#/components/responses/ApiKeyInsufficientPermissions'
'429':
$ref: '#/components/responses/TooManyRequests'
/tests/{testId}:
get:
summary: Fetch test data by test ID
description: Retrieves the details of a specific test by its ID. Optionally, a branch name can be specified as a query parameter to fetch test data from a specific branch.
tags:
- Tests
parameters:
- in: path
name: testId
required: true
schema:
type: string
description: The unique identifier of the test.
- in: query
name: branch
required: false
schema:
type: string
default: master
description: The name of the branch to fetch the test information from.
responses:
'200':
description: Successfully retrieved test information
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: The name of the test.
owner:
type: string
description: The owner of the test.
status:
type: string
description: The current status of the test (e.g., active, draft).
description:
type: string
description: The description of the test.
testId:
type: string
description: The unique identifier of the test.
latestTestResult:
type: object
description: The latest test result of the test.
properties:
resultId:
type: string
description: The resultId of the latest test result.
resultStatus:
type: string
description: The result of the latest test result.
resultDate:
type: string
description: The date of the latest test result.
failureReason:
type: string
description: The failureReason of the latest test result.
example:
name: "Login Test"
owner: "example@example.com"
status: "active"
'404':
description: Test not found
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: "Test {testId} does not exist in branch {branch}"
/tests/{testId}/status:
put:
summary: Change the test-status
description: "Change the status (active, draft, evaluating, quarantine) of a test by test ID"
tags:
- Tests
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
branch:
description: The name of the branch on which to update the test
example: feature-234_login_form
default: master
type: string
status:
description: The new test-status to set the test to
example: evaluating
type: string
required:
- status
parameters:
- in: path
name: testId
required: true
description: The ID of the test to update
schema:
example: 'KmgBvUZJvTu83Lox'
type: string
responses:
200:
description: Test status updated
content:
application/json:
schema:
type: object
properties:
response:
type: string
metaData:
$ref: '#/components/schemas/metaData'
400:
$ref: '#/components/responses/InvalidOrMissingProperty'
401:
$ref: '#/components/responses/InvalidApiKey'
403:
$ref: '#/components/responses/ApiKeyInsufficientPermissions'
429:
$ref: '#/components/responses/TooManyRequests'
/tests/search:
get:
summary: Get tests by name
description: "List the ID and link of tests matching the given name"
tags:
- Tests
parameters:
- name: name
in: query
required: true
description: The name of test to search.
example: 'test'
schema:
type : string
responses:
'200':
description: Test list
content:
application/json:
schema:
type: object
properties:
tests:
type: array
items:
type: object
properties:
id:
type: string
description: Test ID
link:
type: string
description: Link to open test in Testim editor
metaData:
$ref: '#/components/schemas/metaData'
'400':
$ref: '#/components/responses/InvalidOrMissingProperty'
'401':
$ref: '#/components/responses/InvalidApiKey'
'403':
$ref: '#/components/responses/ApiKeyInsufficientPermissions'
'429':
$ref: '#/components/responses/TooManyRequests'
/tests/tms/{testId}/test-cases:
get:
summary: List all TMS test case IDs
description: "List IDs of all TMS test cases associated with the specific test for the specific branch (defaults to master)"
tags:
- Tests
parameters:
- name: branch
in: query
required: false
description: The name of the branch with the specific test for which to list the test IDs.
example: 'CMPNY-23_fix_signin_form'
schema:
type : string
default: master
- in: path
name: testId
required: true
description: The ID of the test to update
schema:
example: 'KmgBvUZJvTu83Lox'
type: string
responses:
200:
description: List of test case IDs
content:
application/json:
schema:
type: object
properties:
testCaseIds:
oneOf:
- type: array
items:
type: integer
example: 1234123
- type: array
items:
type: string
example: "Fx34Vc"
branch:
type: string
description: The branch on which the query was run on
example: 'CMPNY-23_fix_signin_form'
metaData:
$ref: '#/components/schemas/metaData'
400:
$ref: '#/components/responses/InvalidOrMissingProperty'
401:
$ref: '#/components/responses/InvalidApiKey'
403:
$ref: '#/components/responses/ApiKeyInsufficientPermissions'
429:
$ref: '#/components/responses/TooManyRequests'
/suites/search:
get:
summary: Get suites by name
description: "List the ID and link of suites matching the given name"
tags:
- Suites
parameters:
- name: name
in: query
required: true
description: The name of suites to search.
example: 'suite'
schema:
type : string
responses:
'200':
description: Suite list
content:
application/json:
schema:
type: object
properties:
suites:
type: array
items:
type: object
properties:
id:
type: string
description: Suite ID
link:
type: string
description: Link to open suite in Testim editor
metaData:
$ref: '#/components/schemas/metaData'
'400':
$ref: '#/components/responses/InvalidOrMissingProperty'
'401':
$ref: '#/components/responses/InvalidApiKey'
'403':
$ref: '#/components/responses/ApiKeyInsufficientPermissions'
'429':
$ref: '#/components/responses/TooManyRequests'
/test-plans/search:
get:
summary: Get test-plans by name
description: "List the ID and link of test-plans matching the given name"
tags:
- Test plans
parameters:
- name: name
in: query
required: true
description: The name of test-plans to search.
example: 'plan'
schema:
type : string
responses:
'200':
description: Test-plan list
content:
application/json:
schema:
type: object
properties:
testPlans:
type: array
items:
type: object
properties:
id:
type: string
description: Test-plan ID
link:
type: string
description: Link to open test-plan in Testim editor
metaData:
$ref: '#/components/schemas/metaData'
'400':
$ref: '#/components/responses/InvalidOrMissingProperty'
'401':
$ref: '#/components/responses/InvalidApiKey'
'403':
$ref: '#/components/responses/ApiKeyInsufficientPermissions'
'429':
$ref: '#/components/responses/TooManyRequests'
/runs/executions:
get:
summary: Get executions results
description: Get the list of executions remote runs.
tags:
- Executions
parameters:
- in: query
name: page
required: false
description: the page number
schema:
default: 0
example: 0
type: number
- in: query
name: pageSize
required: false
description: total rows to get on each page.
schema:
default: 200
example: 300
type: number
- in: query
name: fromDate
required: false
description: filter data from this given date (ISO 8601 format)
schema:
default: start of today
example: '05-01-2020, 2020-05-01 or 2020-05-01T00:00:00'
format: YYYY-MM-DD, MM-DD-YYYY, YYYY-MM-DDTHH:MM:SSZ
type: string
- in: query
name: toDate
required: false
description: filter date to this date (ISO 8601 format)
schema:
default: end of today
example: '05-01-2020, 2020-05-01 or 2020-05-01T10:00:00'
format: YYYY-MM-DD, MM-DD-YYYY, YYYY-MM-DDTHH:MM:SSZ
type: string
- in: query
name: status
required: false
description: execution status to filter by.
schema:
example: passed
type: string
- in: query
name: browser
required: false
description: browser name to filter by.
schema:
example: chrome
type: string
- in: query
name: name
description: execution name to filter by.
schema:
type: string
- in: query
name: resultLabel
description: resultLabel or multi resultLabels to filter by.
schema:
type: array
items:
type: string
- in: query
name: branch
description: branch name or multi branch names to filter by.
schema:
example: [master]
type: array
items:
type: string
- in: query
name: strictNameSearch
description: Search execution with strict name match
required: false
schema:
type: boolean
default: false
responses:
'200':
description: Executions runs result
content:
application/json:
schema:
type: object
properties:
totalRecords:
type: number
description: total rows
example: 300
page:
type: number
description: current page index
example: 0
pageSize:
type: number
description: max items on each page
example: 200
executions:
type: array
items:
type: object
properties:
execution:
type: string
description: The name of the execution
example: remote-run
executionId:
type: string
description: The id of the execution
example: OSApM0g8f3FRQnvN
executionResult:
type: string
description: Wether the execution passed or failed
example: Failed
duration:
type: number
description: The amount of time (MS) the execution took
totalTests:
type: number
description: The amount of tests executed
example: 1
failedCount:
type: number
description: The amount of failed tests
example: 1
concurrency:
type: number
description: The amount of tests executed in parallel
example: 1
branch:
type: string
description: The branch of the tests executed
example: master
browser:
type: array
description: The name of the browser the tests were executed in
items:
type: string
example: chrome
startTime:
type: string
description: the state time of the execution
example: 2022-05-10T02:39:54.483Z
turboMode:
type: boolean
description: Wether the execution used Testim's Turbo Mode or not
example: false
success:
type: boolean
description: indication of the execution result
example: false
resultLabels:
type: array
description: hold the result labels as array of string for the execution if exists
items:
type: string
example: scheduler-run
link:
type: string
description: A link to the execution result in Testim editor
metaData:
$ref: '#/components/schemas/metaData'
'400':
$ref: '#/components/responses/InvalidOrMissingProperty'
'401':
$ref: '#/components/responses/InvalidApiKey'
'403':
$ref: '#/components/responses/ApiKeyInsufficientPermissions'
'404':
$ref: '#/components/responses/ExecutionDoesNotExist'
'429':
$ref: '#/components/responses/TooManyRequests'
/runs/executions/{executionId}:
get:
summary: Get execution results
description: Get the result of an execution, together with its failing tests, with a list of the failed steps of the test
tags:
- Executions
parameters:
- in: path
name: executionId
required: true
description: The ID of the execution to get details
schema:
example: 'EXECUTION_ID'
type: string
responses:
'200':
description: Execution result
content:
application/json:
schema:
type: object
properties:
executionId:
type: string
description: The execution ID
startTime:
type: string
description: Execution start time in ISO 8601 format
example: 2022-05-10T02:39:54.483Z
source:
type: string
description: The method which of execution initiation
enum: ["cli", "scheduler", "editor", "remote-run", "local"]
branch:
type: string
description: The branch of the tests executed
example: master
execution:
type: string
description: The name of the execution
example: remote-run
concurrency:
type: number
description: The amount of tests executed in parallel
example: 1
executionResult:
type: string
description: Wether the execution passed or failed
example: Failed
browser:
type: string
description: The name of the browser the tests were executed in
example: chrome
failedCount:
type: number
description: The amount of failed tests
example: 1
totalTests:
type: number
description: The amount of tests executed
example: 1
link:
type: string
description: A link to the execution result in Testim editor
turboMode:
type: boolean
description: Wether the execution used Testim's Turbo Mode or not
duration:
type: number
description: The amount of time (MS) the execution took
failedTests:
type: array
description: A list of the failed tests
items:
type: object
properties:
testId:
type: string
description: The test ID
testName:
type: string
description: The name of the failed test
errorMessage:
type: string
description: The error message with test failure reason
executionResult:
type: string
description: Wether the execution passed or failed
link:
type: string
description: A link to the test result in Testim editor
failedSteps:
type: array
description: A list of the failed steps in the test
items:
type: object
properties:
reason:
type: string
description: The reason the step failed
name:
type: string
description: The name of the failing step
failureType:
type: string
description: The type of failure the test was tagged with
enum: ["Bug in app", "Environment Issue", "Invalid test data", "Test design", "New UI change", "Other"]
failureDescription:
type: string
description: User supplied description for the particular failure
linkToFailureIssue:
type: string
description: User supplied url to the an issue tracker ticket for the particular issue
example: 'http://demo.jira.com/issue/234234'
baseUrl:
type: string
description: The base URL used
example: 'https://api.testim.io'
startTime:
type: string
description: Test execution start time in ISO 8601 format
example: 2022-05-10T02:39:54.483Z
duration:
type: string
description: Time from startTime to the end of the test (in milliseconds)
$ref: '#/components/schemas/metaData'
'400':
$ref: '#/components/responses/InvalidOrMissingProperty'
'401':
$ref: '#/components/responses/InvalidApiKey'
'403':
$ref: '#/components/responses/ApiKeyInsufficientPermissions'
'404':
$ref: '#/components/responses/ExecutionDoesNotExist'
'429':
$ref: '#/components/responses/TooManyRequests'
/v2/runs/executions/{executionId}:
get:
summary: Get execution results
description: Get all test results in the given execution
tags:
- Executions
parameters:
- in: path
name: executionId
required: true
description: The ID of the execution to get details
schema:
example: 'EXECUTION_ID'
type: string
- in: query
name: page
description: the page number
schema:
default: 0
example: 0
type: number
- in: query
name: pageSize
description: limit return test
schema:
default: 200
example: 200
type: number
responses:
'200':
description: Execution result
content:
application/json:
schema:
type: object
properties:
id:
type: string
description: The execution ID
startTime:
type: string
description: Execution start time in ISO 8601 format
example: 2022-05-10T02:39:54.483Z
source:
type: string
description: The method which of execution initiation
enum: ["cli", "scheduler", "editor", "remote-run", "local"]
branch:
type: string
description: The branch of the tests executed
example: master
execution:
type: string
description: The name of the execution
example: remote-run
concurrency:
type: number
description: The amount of tests executed in parallel
example: 1
executionResult:
type: string
description: Whether the execution passed or failed
example: Failed
browser:
type: string
description: The name of the browser the tests were executed in
example: chrome
failedCount:
type: number
description: The amount of failed tests
example: 1
passedCount:
type: number
description: The amount of passed tests
example: 1
abortedCount:
type: number
description: The amount of aborted tests
example: 1
timedOutTests:
type: number
description: The amount of timed out tests
example: 1
totalTests:
type: number
description: The amount of tests executed
example: 1
link:
type: string
description: A link to the execution result in Testim's editor
turboMode:
type: boolean
description: Whether the execution used Testim's Turbo Mode or not
duration:
type: number
description: The amount of time (MS) the execution took
tests:
type: array
description: A list of the all included tests
items:
type: object
properties:
id:
type: string
description: The test ID
testName:
type: string
description: The name of the test
errorMessage:
type: string
description: The error message with test failure reason
executionStatus:
type: string
description: test status
link:
type: string
description: A link to the test result in Testim editor
failureType:
type: string
description: The type of failure the test was tagged with
enum: ["Bug in app", "Environment Issue", "Invalid test data", "Test design", "New UI change", "Other"]
failureDescription:
type: string
description: User supplied description for the particular failure
linkToFailureIssue:
type: string
description: User supplied url to the an issue tracker ticket for the particular issue
example: 'http://demo.jira.com/issue/234234'
baseUrl:
type: string
description: The base URL used
example: 'https://api.testim.io'
startTime:
type: string
description: Test execution start time in ISO 8601 format
example: 2022-05-10T02:39:54.483Z
duration:
type: string
description: Time from startTime to the end of the test (in milliseconds)
failedSteps:
type: array
description: A list of the failed steps in the test
items:
type: object
properties:
reason:
type: string
description: The reason the step failed
name:
type: string
description: The name of the failing step
metaData:
$ref: '#/components/schemas/metaData'
'400':
$ref: '#/components/responses/InvalidOrMissingProperty'
'401':
$ref: '#/components/responses/InvalidApiKey'
'403':
$ref: '#/components/responses/ApiKeyInsufficientPermissions'
'404':
$ref: '#/components/responses/ExecutionDoesNotExist'
'429':
$ref: '#/components/responses/TooManyRequests'
/runs/tests/{testResultId}:
get:
summary: Get test result
description: Get the result of a test, together with all its steps.
To see run parameters, specify "runParams=true".
To see steps results, specify "stepsResults=true".
*Only remote runs are supported
tags:
- Executions
parameters:
- in: path
name: testResultId
required: true
description: The ID of the result to get details
schema:
example: 'RESULT_ID'
type: string
- in: query
name: runParams
description: Retrieve the test's run parameters
schema:
example: false
type: boolean
- in: query
name: stepsResults
description: Retrieve the test's steps results
schema:
example: false
type: boolean
responses:
'200':
description: Test result
content:
application/json:
schema:
type: object
properties:
testResult:
type: object
properties:
testId:
type: string
description: The test ID
testName:
type: string
description: The name of the test
link:
type: string
description: Link to open test in Testim editor
branch:
type: string
description: The name of the branch to execute tests from
baseURL:
type: string
configuration:
type: string
description: The test configuration name
executionDate:
type: string
example: '2022-12-31'
executionTime:
type: string
example: '10:59:59'
turboMode:
type: boolean
testResult:
type: string
description: Could be 'Passed' or 'Failed'
example: Passed
errorMessage:
type: string
description: Test result failure message
runParams:
type: object
duration:
type: number
description: In seconds
testStatus:
type: string
description: e.g Draft, Evaluating, Active, Quarantine
browser:
type: string
example: chrome
owner:
type: string
example: rosie@testim.io
description: The owner user email
stepsResults:
type: array
items:
type: object
properties:
name:
type: string
type:
type: string
treatAsWarning:
type: boolean
description:
type: string
sharedStep:
type: boolean
duration:
type: string
description: In seconds
status:
type: string
description: Could be 'Passed' or 'Failed'
example: Passed
errorMessage:
type: string
tabURL:
type: string
screenshot:
type: string
screenshots:
type: object
properties:
baseline:
type: string
result:
type: string
highlightedBaseline:
type: string
highlightedResult:
type: string
accessibleUntil:
type: integer
example: 1693808555043
path:
type: array
items:
type: string
failureType:
type: string
description: The type of failure the test was tagged with
enum: ["Bug in app", "Environment Issue", "Invalid test data", "Test design", "New UI change", "Other"]
failureDescription:
type: string
description: The type of failure the test was tagged with
linkToFailureIssue:
type: string
description: User supplied url to the an issue tracker ticket for the particular issue
example: 'http://demo.jira.com/issue/234234'
startTime:
type: string
description: Test execution start time in ISO 8601 format
example: 2022-05-10T02:39:54.483Z
metaData:
$ref: '#/components/schemas/metaData'
'400':
$ref: '#/components/responses/InvalidOrMissingProperty'
'401':
$ref: '#/components/responses/InvalidApiKey'
'403':
$ref: '#/components/responses/ApiKeyInsufficientPermissions'
'404':
$ref: '#/components/responses/TestResultDoesNotExist'
'429':
$ref: '#/components/responses/TooManyRequests'
/tests/run/{testId}:
post:
summary: Execute test remotely
tags:
- Tests
requestBody:
$ref: '#/components/requestBodies/ExecuteParameters'
parameters:
- in: path
name: testId
required: true
description: The ID of the test to execute
schema:
example: 'TEST_ID'
type: string
responses:
'200':
description: Execution result
content:
application/json:
schema:
type: object
properties:
executionId:
type: string
description: The ID of the new execution
metaData:
$ref: '#/components/schemas/metaData'
'400':
$ref: '#/components/responses/InvalidOrMissingProperty'
'401':
$ref: '#/components/responses/InvalidApiKey'
'403':
$ref: '#/components/responses/ApiKeyInsufficientPermissions'
'429':
$ref: '#/components/responses/TooManyRequests'
/suites/run/{suiteId}:
post:
summary: Execute suites remotely
tags:
- Suites
requestBody:
$ref: '#/components/requestBodies/ExecuteParameters'
parameters:
- in: path
name: suiteId
required: true
description: The ID of the suite to execute
schema:
example: 'SUITE_ID'
type: string
responses:
'200':
description: Execution result
content:
application/json:
schema:
type: object
properties:
executionId:
type: string
description: The ID of the new execution
metaData:
$ref: '#/components/schemas/metaData'
'400':
$ref: '#/components/responses/InvalidOrMissingProperty'
'401':
$ref: '#/components/responses/InvalidApiKey'
'403':
$ref: '#/components/responses/ApiKeyInsufficientPermissions'
'429':
$ref: '#/components/responses/TooManyRequests'
/labels/run/{label}:
post:
summary: Execute labels remotely
tags:
- Labels
requestBody:
$ref: '#/components/requestBodies/ExecuteParameters'
parameters:
- in: path
name: label
required: true
description: The name of the label to execute
schema:
example: 'LABEL'
type: string
responses:
'200':
description: Execution result
content:
application/json:
schema:
type: object
properties:
executionId:
type: string
description: The ID of the new execution
metaData:
$ref: '#/components/schemas/metaData'
'400':
$ref: '#/components/responses/InvalidOrMissingProperty'
'401':
$ref: '#/components/responses/InvalidApiKey'
'403':
$ref: '#/components/responses/ApiKeyInsufficientPermissions'
'429':
$ref: '#/components/responses/TooManyRequests'
/test-plans/run/{planId}:
post:
summary: Execute test plans remotely
tags:
- Test plans
requestBody:
description: A JSON object containing the execution setup information.
required: true
content:
application/json:
schema:
type: object
properties:
branch:
description: The name of the branch to execute tests from
default: master
type: string
parallel:
description: The amount of tests to execute concurrently.
default: 1
type: number
params:
description: A JSON object (or stringified object) of parameters to add to the execution.
anyOf:
- type: string
- type: object
example:
paramName: paramValue
resultLabels:
description: Labels to append to the execution result
type: array
items:
type: string
retries:
description: The amount of retries to allow per test.
type: number
timeout:
description: The amount of seconds before a test will timeout.
default: 600
type: number
turboMode:
description: Wether to execute using Turbo Mode or not.
default: false
type: boolean
mode:
$ref: '#/components/schemas/executionMode'
parameters:
- in: path
name: planId
required: true
description: The ID of the test plan to execute
schema:
example: 'PLAN_ID'
type: string
responses:
'200':
description: Execution result
content:
application/json:
schema:
type: object
properties:
executionId:
type: string
description: The ID of the new execution
metaData:
$ref: '#/components/schemas/metaData'
'400':
$ref: '#/components/responses/InvalidOrMissingProperty'
'401':
$ref: '#/components/responses/InvalidApiKey'
'403':
$ref: '#/components/responses/ApiKeyInsufficientPermissions'
'429':
$ref: '#/components/responses/TooManyRequests'
tags:
- name: Branches
description: List, create, delete and merge branches
- name: Tests
description: List tests by branch, search by test name, and execute tests
- name: Test plans
description: Search test plans by name, and execute test plans
- name: Suites
description: Search suites by name, and execute suites
- name: Labels
description: Execute labels
- name: Executions
description: Get execution results
security:
- apiKeyAuth: []
components:
requestBodies:
ExecuteParameters:
description: A JSON object containing the execution setup information.
Must provide a Grid or Grid ID.
Params field size is limited to 67KB.
required: true
content:
application/json:
schema:
type: object
properties:
baseUrl:
description: An optional URL to use instead of default base URL.
example: http://demo.com/
type: string
branch:
description: The name of the branch to execute tests from
default: master
type: string
grid:
description: The name of grid to use for execution.
type: string
parallel:
description: The amount of tests to execute concurrently.
default: 1
type: number
params:
description: A JSON object (or stringified object) of parameters to add to the execution.
anyOf:
- type: string
- type: object
example:
paramName: paramValue
resultLabels:
description: Labels to append to the execution result
type: array
items:
type: string
retries:
description: The amount of retries to allow per test.
type: number
testConfig:
description: The name of test config to use for execution.
type: string
timeout:
description: The amount of seconds before a test will timeout.
default: 600
type: number
turboMode:
description: Wether to execute using Turbo Mode or not.
default: false
type: boolean
responses:
# Errors
BranchAlreadyExists:
description: A resource with that name already exists
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
InvalidOrMissingProperty:
description: A required property is either missing or it's value is invalid
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
BranchDoesNotExist:
description: Specified branch does not exist
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
BranchMergeError:
description: Merge failed due to conflicts (forceMerge disabled)
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
InvalidApiKey:
description: 'Issue authenticating request: missing or invalid API Key'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
ApiKeyInsufficientPermissions:
description: 'API key does not have suffiecient permission to make the request'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
TooManyRequests:
description: 'Project or API key rate limiting has been reached'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
ExecutionDoesNotExist:
description: Specified execution ID does not exist
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
MobileAppDoesNotExist:
description: Specified application ID does not exist
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
TestResultDoesNotExist:
description: Specified test result ID does not exist
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
# requestId attached to all requests and responses
requestId:
type: string
example: 'RQ-HykKrXuMxrp47BRbdWWO-41ed477e-4052-4904-ab98-034f6285e60e'
# A root level object returned with all success responses
mobileAppMetaData:
type: object
properties:
name:
type: string
example: "My App"
version:
type: string
example: "1.0.0"
id:
type: string
example: "com.myapp"
activity:
type: string
example: "com.myapp.MainActivity"
minSdkVersion:
type: number
example: 21
minOsVersion:
type: string
example: "5.0"
required:
- name
- version
- id
mobileAppStatus:
type: string
enum: ["valid", "invalid", "parsing"]
# A root level object returned with all success responses
metaData:
type: object
properties:
requestId:
$ref: '#/components/schemas/requestId'
required:
- requestId
# Date resource was created at
created_at:
type: string
example: "2020-10-13T16:52:47.571Z"
# Date resource was modified at
modified_at:
type: string
example: "2020-10-19T17:43:51.997Z"
executionMode:
type: string
enum: ["extension", "selenium"]
# Schema for error response body
Error:
type: object
properties:
requestId:
$ref: '#/components/schemas/requestId'
error:
type: object
properties:
message:
type: string
status:
type: number
example: 400
required:
- status
- message
required:
- string
- error
securitySchemes:
apiKeyAuth:
type: http
scheme: bearer
bearerFormat: PAK-[RANDOM_KEY]