Create Test Plan(Appium2)
The endpoint creates a new test plan for a specific project. The user must provide project details and plan specifications in the request body. The API validates the input and returns the created plan as a ProjectDTO object.
Note: After the plan is created, the Create Period, Create Plan Scenarios, and Create Plan Environment APIs must be executed to ensure the workflow runs correctly.
Endpoint Information
URL: <your-gateway-url>/plan
Method:
POSTAuthentication: Required (
Bearer Token)
Request Body Table
The JSON format request data that needs to be sent for creating a test plan is as follows:
{
"planName": "Sample Test Plan",
"groupPlan": false,
"description": "This is a sample test plan for demonstration purposes.",
"type": "APPIUM",
"enabled": true,
"deleted": false,
"planParallelTestLimit": 5,
"projectId": 709,
"userId": 1,
"companyId": 1,
"failedTestRetryCount": 2,
"maxExecutionTime": 3600,
"testRunType": "CROSS",
"screenShotType": "YES",
"videoEnabled": true,
"uninstallApp": false,
"clearAppData": false,
"androidMobileApp": null,
"iosMobileApp": 118,
"isSigned": true,
"alertsEnabled": false
}
planName
string
The name of the test plan displayed in the user interface.
groupPlan
boolean
Indicates whether the plan is a group plan.
description
string
A detailed explanation or note describing the test plan.
enabled
boolean
Determines whether the plan is active and can be executed.
deleted
boolean
Marks the plan as deleted without permanently removing it.
planParallelTestLimit
integer
The maximum number of tests allowed to run in parallel.
projectId
integer
The ID of the project to which this plan belongs.
userId
integer
The ID of the user who created or last updated the plan.
companyId
integer
The ID of the company associated with this plan.
failedTestRetryCount
integer
Specifies how many times failed tests will be retried.
maxExecutionTime
integer
Maximum allowed execution time for this plan in seconds.
testRunType
string
Determines how tests will run .
screenShotType
string
The screenshot capture behavior (e.g., YES, NO, ON_FAILURE).
videoEnabled
boolean
Indicates whether video recording will be enabled during execution.
uninstallApp
boolean
Whether the app should be uninstalled before execution starts.
clearAppData
boolean
Whether the app’s data should be cleared before execution.
androidMobileApp
integer
The ID of the Android application used in this plan.
iosMobileApp
integer
The ID of the iOS application used in this plan.
isSigned
boolean
Indicates whether the associated mobile application is signed.
alertsEnabled
boolean
Enables or disables alert notifications for this plan.
Response Body Table
Upon a successful request, the API returns the following JSON structure:
{
"data": {
"id": 766,
"planName": "Sample Test Plan",
"groupPlan": false,
"description": "This is a sample test plan for demonstration purposes.",
"enabled": true,
"deleted": false,
"planParallelTestLimit": 5,
"projectId": 709,
"projectName": "Appium2GaugeCalisan",
"projectTestFramework": "APPIUM2",
"userId": 1,
"companyId": 1,
"failedTestRetryCount": 2,
"maxExecutionTime": 3600,
"testRunType": "CROSS",
"screenShotType": "YES",
"videoEnabled": false,
"uninstallApp": false,
"clearAppData": false,
"selectedIosMobileApp": {
"id": 118,
"mobileAppName": "demo",
"mobileAppHash": "demo",
"mobileAppMetadata": "demo",
"operatingSystem": "IOS",
"createdAt": "2025-04-07T04:58:11.588+00:00",
"apkMetaData": {
"packageName": null,
"activityName": null,
"label": null,
"icon": null,
"versionName": null,
"versionCode": null,
"installLocation": null,
"minSdkAndroidVersion": null,
"minSdkVersion": null,
"targetSdkVersion": null,
"maxSdkVersion": null,
"glEsVersion": null
},
"iosMetaData": {
"bundleName": "demo",
"bundleDisplayName": "demo",
"bundleVersion": "3.2.15",
"bundleMinOsVersion": "12.0",
"bundleDevelopmentRegion": "tr",
"bundleExecutable": "demo",
"bundleIconFiles": "",
"bundleInfoDictVersion": "6.0",
"bundlePackageType": "APPL",
"bundleMainStoryBoardFile": "Main",
"bundleIdentifier": "demos",
"teamName": "demo"
}
},
"isSigned": true,
"testFileType": "APPIUM_GAUGE",
"testRunnerTool": "MAVEN",
"testDispatchMethodType": "ONE_BY_ONE",
"alertsEnabled": false
},
"result": {
"code": 0,
"message": "success"
}
}data
Object
The payload of the response. In this case null since no extra data is returned.
result
Object
Contains details about the outcome of the operation.
result.code
Integer
The result code (e.g., 0 indicates success).
result.message
String
A message describing the outcome (e.g., "success").
Error Codes
Possible error codes and their explanations during the operation:
401
UNAUTHORIZED
The request lacks valid authentication credentials. Check your Bearer token.
400
INVALID_REQUEST
The request was malformed or contained errors.
500
INTERNAL_SERVER_ERROR
An unexpected error occurred on the server side.
Application Error Codes
10000
{filed} with id {projectId} not found
10009
Mobile App with {id} not found!
10010
{field} must not be null
10011
Plan name {0} already exists!
Example Request
curl --location '<your-gateway-url>/plan' \
--header 'accept: application/json, text/plain, */*' \
--header 'authorization: Bearer <your_access_token>' \
--header 'content-type: application/json' \
--header 'Cookie: JSESSIONID=0D9219B3E88D8FE8513FF21049407F10' \
--data '{
"planName": "Sample Test Plan",
"groupPlan": false,
"description": "This is a sample test plan for demonstration purposes.",
"type": "APPIUM",
"enabled": true,
"deleted": false,
"planParallelTestLimit": 5,
"projectId": 709,
"userId": 1,
"companyId": 1,
"failedTestRetryCount": 2,
"maxExecutionTime": 3600,
"testRunType": "CROSS",
"screenShotType": "YES",
"videoEnabled": true,
"uninstallApp": false,
"clearAppData": false,
"androidMobileApp": null,
"iosMobileApp": 118,
"isSigned": true,
"alertsEnabled": false
}
'Last updated