Test Cases
Get Test Case Details¶
Role: Guest and above.
Parameters
| Name | Description |
|---|---|
| id * | Numeric ID of the Test Case. Type: integer (path) |
Responses
| Code | Description |
|---|---|
| 200 |
Test Case data. Media type: application/json Example Value: { "id": 0, "name": "string", "description": "string", "testStepList": [ { "function": "WIFI", "params": { "STATUS": "ON" }, "deviceId": 0 }, { "function": "WAIT", "params": { "TIMEOUT": "10" }, "deviceId": 0 } ], "tags": [ "string" ], "disableReason": "string", "notes": "string", "disabled": false, "skipInitializationOnDirectRun": false, "skipCleanupOnDirectRun": false, "traceFilters": [ { "mobileDeviceId": 0, "traceFilterId": 0, "enableTrace": true, "mobileDeviceName": "string", "msisdn": "string" } ], "sipTraceFilters": [ { "mobileDeviceId": 0, "sipMessageCodes": "string", "mobileDeviceName": "string", "msisdn": "string" } ], "projects": [ { "id": 0, "name": "string" } ], "aiGenerated": false } |
| 404 |
Resource was not found. |
Update a Test Case¶
Role: Admin, or the user who created the Test Case.
name is required (at least 5 characters) and must be unique. Each step in testStepList has a function, its params and the deviceId (Mobile Device ID) it runs on; see Test Functions for every function's parameters. traceFilters[].mobileDeviceId, sipTraceFilters[].mobileDeviceId and sipTraceFilters[].sipMessageCodes are required when those lists are sent. skipCleanupOnDirectRun is ignored unless Skip Cleanup is enabled for your environment.
Check a body without saving it with POST /api/v2/testcases/validate.
Parameters
| Name | Description |
|---|---|
| id * | Numeric ID of the Test Case. Type: integer (path) |
Request body *
{ "name": "string", "description": "string", "testStepList": [ { "function": "WIFI", "params": { "STATUS": "ON" }, "deviceId": 0 }, { "function": "WAIT", "params": { "TIMEOUT": "10" }, "deviceId": 0 } ], "tags": [ "string" ], "notes": "string", "disabled": false, "disableReason": "string", "skipInitializationOnDirectRun": false, "skipCleanupOnDirectRun": false, "traceFilters": [ { "mobileDeviceId": 0, "traceFilterId": 0, "enableTrace": true } ], "sipTraceFilters": [ { "mobileDeviceId": 0, "sipMessageCodes": "string" } ] }
Responses
| Code | Description |
|---|---|
| 200 |
Test Case was updated successfully. |
| 400 |
The body is invalid, for example a missing name, an unknown function, or a parameter value the function does not accept. |
| 404 |
Resource was not found. |
| 409 |
Another Test Case already has this name. |
Delete a Test Case¶
Role: Admin, or the user who created the Test Case.
Parameters
| Name | Description |
|---|---|
| id * | Numeric ID of the Test Case. Type: integer (path) |
Responses
| Code | Description |
|---|---|
| 200 |
Test Case was deleted successfully. |
| 404 |
Resource was not found. |
| 409 |
The Test Case is part of a Test Suite, or a direct run of it is in progress. |
Import Test Case's¶
Parameters
No parameters
Request body
application/json
Example Value:
[ { "name": "string", "description": "string", "testStepList": [ { "additionalProp1": {}, "additionalProp2": {}, "additionalProp3": {} } ], "tags": [ "string" ], "disableReason": "string", "notes": "string", "disabled": true, "traceFilters": [ { "mobileDeviceId": 0, "traceFilterId": 0 } ], "sipTraceFilters": [ { "mobileDeviceId": 0, "sipMessageCodes": "string" } ] } ]
Responses
| Code | Description |
|---|---|
| 200 |
OK Media type: application/json Example Value: { "ids": [ 0 ] } |
Export Test Case's¶
Parameters
No parameters
Request body
application/json
Example Value:
{ "ids": [ 0 ] }
Responses
| Code | Description |
|---|---|
| 200 |
OK Media type: application/json Example Value: [ { "id": 0, "name": "string", "description": "string", "testStepList": [ { "additionalProp1": {}, "additionalProp2": {}, "additionalProp3": {} } ], "tags": [ "string" ], "disableReason": "string", "notes": "string", "disabled": true, "traceFilters": [ { "mobileDeviceId": 0, "traceFilterId": 0, "mobileDeviceName": "string", "msisdn": "stringstr" } ], "sipTraceFilters": [ { "mobileDeviceId": 0, "sipMessageCodes": "string", "mobileDeviceName": "string", "msisdn": "stringstr" } ], "projects": [ { "id": 0, "name": "string" } ], "devices": [ { "id": 0, "name": "string", "msisdn": "stringstr", "imsi": "string", "imei": "stringstringstr", "ranType": "string", "testNodeId": 0, "testNodeName": "string", "deviceModelId": 0, "deviceModelName": "string", "subscriptionType": "string", "platformName": "string", "deviceId": "string", "nationalFormat": "string", "internationalFormat": "string", "iccid": "string", "eid": "string", "projects": [ { "id": 0, "name": "string" } ] } ], "apiClients": [ { "basicAuthViaSecrets": true, "name": "string", "apiClientAuthType": "NONE", "headerParams": { "additionalProp1": "string", "additionalProp2": "string", "additionalProp3": "string" }, "authParams": { "additionalProp1": "string", "additionalProp2": "string", "additionalProp3": "string" }, "serverURL": "string", "payload": "string", "httpMethod": "string", "failureRegexBody": "string", "username": "string", "password": "string", "tokenEndpointForOAuth2": "string", "oauth2Scopes": "string", "id": 0, "projects": [ { "id": 0, "name": "string" } ] } ] } ] |
List Test Case's¶
Role: Guest and above.
Parameters
| Name | Description |
|---|---|
| page | Zero-based page number. Default 0. Type: integer (query) |
| size | Page size. Default 20. Type: integer (query) |
| sort | <field>,asc or <field>,desc.Type: string (query) |
| prj | Only return items assigned to these projects: comma-separated project IDs. Type: string (query) |
| filterName | Filter to apply: text (name contains), tagsAny, tagsAll or tagsNone (comma-separated tag names), disabled (true or false), trace (true: tracing enabled) or mobileid (Mobile Device name).Type: string (query) |
| filterValue | The value for filterName.Type: string (query) |
Responses
| Code | Description |
|---|---|
| 200 |
A page of Test Cases. Media type: application/json Example Value: { "content": [ { "id": 0, "name": "string", "description": "string", "testStepCount": 0, "deviceList": [ "string" ], "created": "string", "updated": "string", "projects": [ { "id": 0, "name": "string" } ], "disabled": false, "disableReason": "string", "tags": [ "string" ], "running": false, "runningExecutionId": null, "aiGenerated": false } ], "totalElements": 0, "totalPages": 0, "number": 0, "size": 20 } |
Create a Test Case¶
Role: Standard and above.
name is required (at least 5 characters) and must be unique. Each step in testStepList has a function, its params and the deviceId (Mobile Device ID) it runs on; see Test Functions for every function's parameters. traceFilters[].mobileDeviceId, sipTraceFilters[].mobileDeviceId and sipTraceFilters[].sipMessageCodes are required when those lists are sent. skipCleanupOnDirectRun is ignored unless Skip Cleanup is enabled for your environment.
Check a body without saving it with POST /api/v2/testcases/validate.
Request body *
{ "name": "string", "description": "string", "testStepList": [ { "function": "WIFI", "params": { "STATUS": "ON" }, "deviceId": 0 }, { "function": "WAIT", "params": { "TIMEOUT": "10" }, "deviceId": 0 } ], "tags": [ "string" ], "notes": "string", "disabled": false, "disableReason": "string", "skipInitializationOnDirectRun": false, "skipCleanupOnDirectRun": false, "traceFilters": [ { "mobileDeviceId": 0, "traceFilterId": 0, "enableTrace": true } ], "sipTraceFilters": [ { "mobileDeviceId": 0, "sipMessageCodes": "string" } ] }
Responses
| Code | Description |
|---|---|
| 201 |
ID of the Test Case. Media type: application/json Example Value: { "id": 0 } |
| 400 |
The body is invalid, for example a missing name, an unknown function, or a parameter value the function does not accept. |
| 409 |
Name needs to be unique. |
List Test Suite's for a Test Case¶
Role: Guest and above.
Parameters
| Name | Description |
|---|---|
| id * | Numeric ID of the Test Case. Type: integer (path) |
Responses
| Code | Description |
|---|---|
| 200 |
The Test Suites that contain this Test Case, as a page. Only the first 10 are returned; the endpoint takes no paging parameters. Media type: application/json Example Value: { "content": [ { "id": 0, "name": "string" } ], "totalElements": 0, "totalPages": 0, "number": 0, "size": 20 } |
| 404 |
Resource was not found. |
Run a Test Case directly (Direct Run), without a Test Suite¶
Role: Standard and above.
The Test Case runs on its own, without a Test Suite. skipInitializationOnDirectRun and skipCleanupOnDirectRun on the Test Case apply.
Parameters
| Name | Description |
|---|---|
| id * | Numeric ID of the Test Case. Type: integer (path) |
Responses
| Code | Description |
|---|---|
| 202 |
The run was started. Follow it with GET /api/v2/testexecutions/{id} using Media type: application/json Example Value: { "executionId": 0 } |
| 404 |
Resource was not found. |
| 409 |
The run could not start: a run of this Test Case is already in progress, a device it needs is busy, or the environment is already running as many executions as it allows. |
| 500 |
The run could not be scheduled. |
Validate a Test Case¶
Role: Standard and above.
Checks a Test Case body the way create and update would, without saving anything.
Parameters
| Name | Description |
|---|---|
| id | The Test Case this body belongs to, when you check changes to an existing one (its own name then counts as available). Type: integer (query) |
Request body *
{ "name": "string", "description": "string", "testStepList": [ { "function": "WIFI", "params": { "STATUS": "ON" }, "deviceId": 0 }, { "function": "WAIT", "params": { "TIMEOUT": "10" }, "deviceId": 0 } ], "tags": [ "string" ], "notes": "string", "disabled": false, "disableReason": "string", "skipInitializationOnDirectRun": false, "skipCleanupOnDirectRun": false, "traceFilters": [ { "mobileDeviceId": 0, "traceFilterId": 0, "enableTrace": true } ], "sipTraceFilters": [ { "mobileDeviceId": 0, "sipMessageCodes": "string" } ] }
Responses
| Code | Description |
|---|---|
| 200 |
The verdict. The call always returns 200, also for a body that would be rejected: check Media type: application/json Example Value: { "valid": false, "problem": "string", "nameAvailable": true } |
Get the latest result of a Test Case¶
Role: Guest and above.
Parameters
| Name | Description |
|---|---|
| id * | Numeric ID of the Test Case. Type: integer (path) |
Responses
| Code | Description |
|---|---|
| 200 |
The most recent result, from a suite execution or a direct run. Media type: application/json Example Value: { "id": 0, "testCaseId": 0, "testCaseName": "string", "executionId": 0, "errorCode": "string", "success": true, "executedAt": "2026-09-23T10:00:00Z", "running": false, "runningExecutionId": null, "directRun": true, "suiteId": 0, "suiteName": "string" } |
| 404 |
The Test Case does not exist, or it has never run. |
List the results of a Test Case¶
Role: Guest and above.
Parameters
| Name | Description |
|---|---|
| id * | Numeric ID of the Test Case. Type: integer (path) |
| page | Zero-based page number. Default 0. Type: integer (query) |
| size | Page size. Default 20. Type: integer (query) |
Responses
| Code | Description |
|---|---|
| 200 |
A page of results, newest first. Media type: application/json Example Value: { "content": [ { "id": 0, "testCaseId": 0, "testCaseName": "string", "executionId": 0, "errorCode": "string", "success": true, "executedAt": "2026-09-23T10:00:00Z", "running": false, "runningExecutionId": null, "directRun": true, "suiteId": 0, "suiteName": "string" } ], "totalElements": 0, "totalPages": 0, "number": 0, "size": 20 } |
| 404 |
Resource was not found. |
Enable or disable Test Cases in bulk¶
Role: Admin.
ids is required and must contain at least one Test Case ID. disableReason is optional, up to 200 characters.
Request body *
{ "ids": [ 0 ], "disabled": true, "disableReason": "string" }
Responses
| Code | Description |
|---|---|
| 200 |
Test Cases were updated successfully. |
| 400 |
Invalid request body, for example an empty |