Skip to content

Test Cases

Get Test Case Details

/api/v2/testcases/{id} 📋 Copied! ▼

Role: Guest and above.

Parameters

Name Description
id * Numeric ID of the Test Case.
Type: integer (path)

Responses

Code Description
200

Test Case data. aiGenerated is true for Test Cases created by AI Authoring.

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

/api/v2/testcases/{id} 📋 Copied! ▼

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

/api/v2/testcases/{id} 📋 Copied! ▼

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

/api/v2/testcases/import 📋 Copied! ▼

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

/api/v2/testcases/export 📋 Copied! ▼

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

/api/v2/testcases 📋 Copied! ▼

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. running and runningExecutionId show a run in progress.

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

/api/v2/testcases 📋 Copied! ▼

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

/api/v2/testcases/{id}/testsuites 📋 Copied! ▼

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

/api/v2/testcases/{id}/run 📋 Copied! ▼

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 executionId, or poll GET /api/v2/testcases/{id}/result/latest.

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

/api/v2/testcases/validate 📋 Copied! ▼

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 valid, problem (why it would be rejected) and nameAvailable.

Media type: application/json

Example Value:

{
"valid": false,
"problem": "string",
"nameAvailable": true
}

Get the latest result of a Test Case

/api/v2/testcases/{id}/result/latest 📋 Copied! ▼

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. running and runningExecutionId show a run in progress; errorCode is set when the Test Case failed.

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

/api/v2/testcases/{id}/results 📋 Copied! ▼

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

/api/v2/testcases/bulk-status 📋 Copied! ▼

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 ids list.