cURL Commands
1. Overview
To access the Quadified API, you need to request an access token using your assigned credentials.
Each environment has its own base URL, defined as a configurable variable.
This page is shared across customer deployments; use the clientId, clientSecret, and environment URL assigned to your customer.
2. API Sections
3. Base URL (Configurable)
The base URL of the API differs by environment and should be defined as a variable in your configuration.
All API requests must use this base URL as a prefix.
Example:
BASE_URL=https://app-{environment}.quadified.com
Replace {environment} with your assigned environment name
4. Request API Credentials
clientId and clientSecret are created by Quadified and are unique per customer and environment. They are not generated from the documentation page.
To request credentials, contact support@quadified.com and include:
- Customer or project name
- Target environment, for example
integration, staging, or production
- Requester name and email address
- Intended API usage, such as automation, reporting, or integration testing
Keep the returned credentials secure. Do not commit them to repositories, paste them into tickets, or share them in screenshots.
5. Getting an Access Token
Example Request:
curl --request POST \
--url "$BASE_URL/api/v2/connect/token" \
--header "Content-Type: application/json" \
--data '{
"clientId": "<YOUR_CLIENT_ID>",
"clientSecret": "<YOUR_CLIENT_SECRET>"
}'
Parameters:
| Parameter |
Description |
| clientId |
Provided by Quadified team; unique per customer and environment |
| clientSecret |
Provided by Quadified team; used together with clientId for authentication |
Example Response:
{
"accessToken": "eyJraWQiOiJcL3QwazdyN0phKzVOc0JNUVJlR25XM0x1R1pKcCtFZmQ4azFpVUhJaFIzUT0iLCJhbGciOiJSUzI1NiJ9...",
"tokenType": "Bearer",
"expiresIn": 3600
}
- accessToken: The token used to authenticate API requests.
- tokenType: Always "Bearer".
- expiresIn: Token validity in seconds (3600 = 1 hour).
A successful request returns 201. Wrong credentials return 401; a request the token service refuses (for example an unknown scope) returns 400. The optional scope field is only needed when Quadified gave you one. See Errors for the error format.
Quick setup (optional environment variables):
BASE_URL="https://app-integration.quadified.com"
TOKEN="REPLACE_WITH_ACCESS_TOKEN"
Tip: You can export these variables in your shell and paste commands as-is.
Agent Config
- GET /api/v2/agentconfig
curl --request GET \
--url "$BASE_URL/api/v2/agentconfig?label={LABEL}" \
--header "Authorization: Bearer $TOKEN"
API Clients
- GET /api/v2/apiclients/{id}
curl --request GET \
--url "$BASE_URL/api/v2/apiclients/{id}" \
--header "Authorization: Bearer $TOKEN"
- PUT /api/v2/apiclients/{id}
curl --request PUT \
--url "$BASE_URL/api/v2/apiclients/{id}" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{
"basicAuthViaSecrets": false,
"name": "string",
"apiClientAuthType": "NONE",
"headerParams": {},
"authParams": {},
"serverURL": "string",
"payload": "string",
"httpMethod": "POST",
"failureRegexBody": "string",
"username": "string",
"password": "string",
"tokenEndpointForOAuth2": "string",
"oauth2Scopes": "string"
}'
- DELETE /api/v2/apiclients/{id}
curl --request DELETE \
--url "$BASE_URL/api/v2/apiclients/{id}" \
--header "Authorization: Bearer $TOKEN"
- GET /api/v2/apiclients
curl --request GET \
--url "$BASE_URL/api/v2/apiclients?page=0&size=20" \
--header "Authorization: Bearer $TOKEN"
- POST /api/v2/apiclients
curl --request POST \
--url "$BASE_URL/api/v2/apiclients" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{
"basicAuthViaSecrets": false,
"name": "string",
"apiClientAuthType": "NONE",
"headerParams": {},
"authParams": {},
"serverURL": "string",
"payload": "string",
"httpMethod": "POST",
"failureRegexBody": "string",
"username": "string",
"password": "string",
"tokenEndpointForOAuth2": "string",
"oauth2Scopes": "string"
}'
Change & Delete Logs
- GET /api/v2/changelogs
curl --request GET \
--url "$BASE_URL/api/v2/changelogs?entityName=TEST_CASE&entityId={id}" \
--header "Authorization: Bearer $TOKEN"
- GET /api/v2/deletelogs
curl --request GET \
--url "$BASE_URL/api/v2/deletelogs?entityName=TEST_CASE" \
--header "Authorization: Bearer $TOKEN"
Device Jobs
- POST /api/v2/deviceJobs
The body is
multipart/form-data; do not set a JSON Content-Type.
curl --request POST \
--url "$BASE_URL/api/v2/deviceJobs" \
--header "Authorization: Bearer $TOKEN" \
--form "mobileId={mobileId}" \
--form "file=@app.apk"
- GET /api/v2/deviceJobs
curl --request GET \
--url "$BASE_URL/api/v2/deviceJobs?mobileId={mobileId}&status=PENDING" \
--header "Authorization: Bearer $TOKEN"
- GET /api/v2/deviceJobs/{id}
curl --request GET \
--url "$BASE_URL/api/v2/deviceJobs/{id}" \
--header "Authorization: Bearer $TOKEN"
Device Models
- GET /api/v2/devicemodels
curl --request GET \
--url "$BASE_URL/api/v2/devicemodels" \
--header "Authorization: Bearer $TOKEN"
Function Params
- GET /api/v2/functionparams
curl --request GET \
--url "$BASE_URL/api/v2/functionparams?function={functionName}" \
--header "Authorization: Bearer $TOKEN"
Mobile Devices
- GET /api/v2/mobiledevices/{id}
curl --request GET \
--url "$BASE_URL/api/v2/mobiledevices/{id}" \
--header "Authorization: Bearer $TOKEN"
- PUT /api/v2/mobiledevices/{id}
curl --request PUT \
--url "$BASE_URL/api/v2/mobiledevices/{id}" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{
"name": "string",
"msisdn": "string",
"imsi": "string",
"imei": "string",
"ranType": "_LTE_3G_2G_AUTO",
"testNodeId": 0,
"deviceModelId": 0,
"subscriptionType": "string",
"platformName": "string",
"deviceId": "string",
"nationalFormat": "string",
"internationalFormat": "string",
"iccid": "string",
"eid": "string"
}'
- DELETE /api/v2/mobiledevices/{id}
curl --request DELETE \
--url "$BASE_URL/api/v2/mobiledevices/{id}" \
--header "Authorization: Bearer $TOKEN"
- POST /api/v2/mobiledevices/{id}/action
curl --request POST \
--url "$BASE_URL/api/v2/mobiledevices/{id}/action" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{ "command": "PREPARE", "params": "string" }'
- GET /api/v2/mobiledevices
curl --request GET \
--url "$BASE_URL/api/v2/mobiledevices" \
--header "Authorization: Bearer $TOKEN"
- POST /api/v2/mobiledevices
curl --request POST \
--url "$BASE_URL/api/v2/mobiledevices" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{
"name": "string",
"msisdn": "string",
"imsi": "string",
"imei": "string",
"ranType": "_LTE_3G_2G_AUTO",
"testNodeId": 0,
"deviceModelId": 0,
"subscriptionType": "string",
"platformName": "string",
"deviceId": "string",
"nationalFormat": "string",
"internationalFormat": "string",
"iccid": "string",
"eid": "string"
}'
- GET /api/v2/mobiledevices/{id}/testcases
curl --request GET \
--url "$BASE_URL/api/v2/mobiledevices/{id}/testcases" \
--header "Authorization: Bearer $TOKEN"
- GET /api/v2/mobiledevices/{id}/status
curl --request GET \
--url "$BASE_URL/api/v2/mobiledevices/{id}/status" \
--header "Authorization: Bearer $TOKEN"
- GET /api/v2/mobiledevices/{id}/uptime
curl --request GET \
--url "$BASE_URL/api/v2/mobiledevices/{id}/uptime" \
--header "Authorization: Bearer $TOKEN"
- GET /api/v2/mobiledevices/uptime
curl --request GET \
--url "$BASE_URL/api/v2/mobiledevices/uptime" \
--header "Authorization: Bearer $TOKEN"
Projects
- GET /api/v2/projects/{id}
curl --request GET \
--url "$BASE_URL/api/v2/projects/{id}" \
--header "Authorization: Bearer $TOKEN"
- PUT /api/v2/projects/{id}
curl --request PUT \
--url "$BASE_URL/api/v2/projects/{id}" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{ "name": "string" }'
- DELETE /api/v2/projects/{id}
curl --request DELETE \
--url "$BASE_URL/api/v2/projects/{id}" \
--header "Authorization: Bearer $TOKEN"
- POST /api/v2/projects/listAssignments
curl --request POST \
--url "$BASE_URL/api/v2/projects/listAssignments" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{ "entityType": "TEST_NODE", "entityIds": [0] }'
- POST /api/v2/projects/assignments
curl --request POST \
--url "$BASE_URL/api/v2/projects/assignments" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{ "entityType": "TEST_NODE", "entityIds": [0], "projectNames": ["string"] }'
- GET /api/v2/projects
curl --request GET \
--url "$BASE_URL/api/v2/projects" \
--header "Authorization: Bearer $TOKEN"
- POST /api/v2/projects
curl --request POST \
--url "$BASE_URL/api/v2/projects" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{ "name": "string", "entityType": "TEST_NODE", "entityIds": [0] }'
- GET /api/v2/tags
curl --request GET \
--url "$BASE_URL/api/v2/tags?type=testcase" \
--header "Authorization: Bearer $TOKEN"
Test Cases
- GET /api/v2/testcases/{id}
curl --request GET \
--url "$BASE_URL/api/v2/testcases/{id}" \
--header "Authorization: Bearer $TOKEN"
- PUT /api/v2/testcases/{id}
curl --request PUT \
--url "$BASE_URL/api/v2/testcases/{id}" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{
"name": "string",
"description": "string",
"testStepList": [{"function": "WIFI", "params": {"STATUS": "ON"}, "deviceId": 0}],
"tags": ["string"],
"disableReason": "string",
"notes": "string",
"disabled": false,
"skipInitializationOnDirectRun": false,
"skipCleanupOnDirectRun": false,
"traceFilters": [{"mobileDeviceId": 0, "traceFilterId": 0, "enableTrace": true}],
"sipTraceFilters": [{"mobileDeviceId": 0, "sipMessageCodes": "string"}]
}'
- DELETE /api/v2/testcases/{id}
curl --request DELETE \
--url "$BASE_URL/api/v2/testcases/{id}" \
--header "Authorization: Bearer $TOKEN"
- POST /api/v2/testcases/import
curl --request POST \
--url "$BASE_URL/api/v2/testcases/import" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '[{ "name": "string", "description": "string", "testStepList": [{"function": "WAIT", "params": {"TIMEOUT": "10"}, "deviceId": 0}] }]'
- POST /api/v2/testcases/export
curl --request POST \
--url "$BASE_URL/api/v2/testcases/export" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{ "ids": [0] }'
- GET /api/v2/testcases
curl --request GET \
--url "$BASE_URL/api/v2/testcases?filterName=tagsAny&filterValue=regression" \
--header "Authorization: Bearer $TOKEN"
- POST /api/v2/testcases
curl --request POST \
--url "$BASE_URL/api/v2/testcases" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{
"name": "string",
"description": "string",
"testStepList": [{"function": "WIFI", "params": {"STATUS": "ON"}, "deviceId": 0}],
"tags": ["string"],
"disableReason": "string",
"notes": "string",
"disabled": false,
"skipInitializationOnDirectRun": false,
"skipCleanupOnDirectRun": false,
"traceFilters": [{"mobileDeviceId": 0, "traceFilterId": 0, "enableTrace": true}],
"sipTraceFilters": [{"mobileDeviceId": 0, "sipMessageCodes": "string"}]
}'
- GET /api/v2/testcases/{id}/testsuites
curl --request GET \
--url "$BASE_URL/api/v2/testcases/{id}/testsuites" \
--header "Authorization: Bearer $TOKEN"
- POST /api/v2/testcases/{id}/run
Starts a Direct Run of one Test Case; the response (202) carries the
executionId.
curl --request POST \
--url "$BASE_URL/api/v2/testcases/{id}/run" \
--header "Authorization: Bearer $TOKEN"
- POST /api/v2/testcases/validate
curl --request POST \
--url "$BASE_URL/api/v2/testcases/validate?id={id}" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{
"name": "string",
"description": "string",
"testStepList": [{"function": "WIFI", "params": {"STATUS": "ON"}, "deviceId": 0}],
"tags": ["string"],
"disableReason": "string",
"notes": "string",
"disabled": false,
"skipInitializationOnDirectRun": false,
"skipCleanupOnDirectRun": false,
"traceFilters": [{"mobileDeviceId": 0, "traceFilterId": 0, "enableTrace": true}],
"sipTraceFilters": [{"mobileDeviceId": 0, "sipMessageCodes": "string"}]
}'
- GET /api/v2/testcases/{id}/result/latest
curl --request GET \
--url "$BASE_URL/api/v2/testcases/{id}/result/latest" \
--header "Authorization: Bearer $TOKEN"
- GET /api/v2/testcases/{id}/results
curl --request GET \
--url "$BASE_URL/api/v2/testcases/{id}/results?page=0&size=20" \
--header "Authorization: Bearer $TOKEN"
- PUT /api/v2/testcases/bulk-status
curl --request PUT \
--url "$BASE_URL/api/v2/testcases/bulk-status" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{ "ids": [0], "disabled": true, "disableReason": "string" }'
Test Executions
- POST /api/v2/testexecutions/{id}/rerun
curl --request POST \
--url "$BASE_URL/api/v2/testexecutions/{id}/rerun" \
--header "Authorization: Bearer $TOKEN"
- GET /api/v2/testexecutions/{id}
curl --request GET \
--url "$BASE_URL/api/v2/testexecutions/{id}" \
--header "Authorization: Bearer $TOKEN"
- DELETE /api/v2/testexecutions/{id}
curl --request DELETE \
--url "$BASE_URL/api/v2/testexecutions/{id}" \
--header "Authorization: Bearer $TOKEN"
- GET /api/v2/testexecutions
curl --request GET \
--url "$BASE_URL/api/v2/testexecutions?testSuiteId={testSuiteId}&sort=created,desc" \
--header "Authorization: Bearer $TOKEN"
- GET /api/v2/testexecutions/{id}/analysis
curl --request GET \
--url "$BASE_URL/api/v2/testexecutions/{id}/analysis" \
--header "Authorization: Bearer $TOKEN"
- POST /api/v2/testexecutions/{id}/analyze
curl --request POST \
--url "$BASE_URL/api/v2/testexecutions/{id}/analyze" \
--header "Authorization: Bearer $TOKEN"
- DELETE /api/v2/testexecutions/{id}/analysis
curl --request DELETE \
--url "$BASE_URL/api/v2/testexecutions/{id}/analysis" \
--header "Authorization: Bearer $TOKEN"
Test Nodes
- GET /api/v2/testnodes/{id}
curl --request GET \
--url "$BASE_URL/api/v2/testnodes/{id}" \
--header "Authorization: Bearer $TOKEN"
- PUT /api/v2/testnodes/{id}
curl --request PUT \
--url "$BASE_URL/api/v2/testnodes/{id}" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{ "name": "string" }'
- POST /api/v2/testnodes/{id}/action
curl --request POST \
--url "$BASE_URL/api/v2/testnodes/{id}/action" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{ "command": "RESTART_AGENT", "params": "string" }'
- GET /api/v2/testnodes
curl --request GET \
--url "$BASE_URL/api/v2/testnodes" \
--header "Authorization: Bearer $TOKEN"
- POST /api/v2/testnodes
curl --request POST \
--url "$BASE_URL/api/v2/testnodes" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{ "name": "string" }'
- DELETE /api/v2/testnodes/{id}
curl --request DELETE \
--url "$BASE_URL/api/v2/testnodes/{id}" \
--header "Authorization: Bearer $TOKEN"
- GET /api/v2/testnodes/{id}/status
curl --request GET \
--url "$BASE_URL/api/v2/testnodes/{id}/status" \
--header "Authorization: Bearer $TOKEN"
- GET /api/v2/testnodes/info
curl --request GET \
--url "$BASE_URL/api/v2/testnodes/info" \
--header "Authorization: Bearer $TOKEN"
- GET /api/v2/testnodes/{id}/uptime
curl --request GET \
--url "$BASE_URL/api/v2/testnodes/{id}/uptime" \
--header "Authorization: Bearer $TOKEN"
- GET /api/v2/testnodes/uptime
curl --request GET \
--url "$BASE_URL/api/v2/testnodes/uptime" \
--header "Authorization: Bearer $TOKEN"
- GET /api/v2/testnodes/{id}/mobiledevices
curl --request GET \
--url "$BASE_URL/api/v2/testnodes/{id}/mobiledevices" \
--header "Authorization: Bearer $TOKEN"
Test Suites
- GET /api/v2/testsuites/{id}
curl --request GET \
--url "$BASE_URL/api/v2/testsuites/{id}" \
--header "Authorization: Bearer $TOKEN"
- PUT /api/v2/testsuites/{id}
curl --request PUT \
--url "$BASE_URL/api/v2/testsuites/{id}" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{
"name": "string",
"description": "string",
"testCaseIds": [0],
"testCaseWeights": [1],
"schedule": {"startTime": "2026-09-23T08:00:00Z", "repeating": true, "repeatPeriod": 1, "repeatUnit": "H", "repeatDays": "MON,TUE,WED,THU,FRI", "repeatTimeRange": "08:00-18:00", "timezone": "Europe/London"},
"tags": ["string"],
"notifyFailureThresholdPercentage": 99,
"disabled": false,
"notifEmail": "string",
"failureNotifEmail": "string",
"skipInitialization": false,
"skipCleanup": false
}'
- DELETE /api/v2/testsuites/{id}
curl --request DELETE \
--url "$BASE_URL/api/v2/testsuites/{id}" \
--header "Authorization: Bearer $TOKEN"
- POST /api/v2/testsuites/{id}/execute
curl --request POST \
--url "$BASE_URL/api/v2/testsuites/{id}/execute" \
--header "Authorization: Bearer $TOKEN"
- POST /api/v2/testsuites/{id}/cancel
curl --request POST \
--url "$BASE_URL/api/v2/testsuites/{id}/cancel" \
--header "Authorization: Bearer $TOKEN"
- GET /api/v2/testsuites
curl --request GET \
--url "$BASE_URL/api/v2/testsuites" \
--header "Authorization: Bearer $TOKEN"
- POST /api/v2/testsuites
curl --request POST \
--url "$BASE_URL/api/v2/testsuites" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{
"name": "string",
"description": "string",
"testCaseIds": [0],
"testCaseWeights": [1],
"schedule": {"startTime": "2026-09-23T08:00:00Z", "repeating": true, "repeatPeriod": 1, "repeatUnit": "H", "repeatDays": "MON,TUE,WED,THU,FRI", "repeatTimeRange": "08:00-18:00", "timezone": "Europe/London"},
"tags": ["string"],
"notifyFailureThresholdPercentage": 99,
"disabled": false,
"notifEmail": "string",
"failureNotifEmail": "string",
"skipInitialization": false,
"skipCleanup": false
}'
- GET /api/v2/testsuites/upcoming
curl --request GET \
--url "$BASE_URL/api/v2/testsuites/upcoming?hours=24" \
--header "Authorization: Bearer $TOKEN"
Tokens
- POST /api/v2/tokens/validate
No bearer token is needed; a valid token returns an empty 200.
curl --request POST \
--url "$BASE_URL/api/v2/tokens/validate" \
--header 'Content-Type: application/json' \
--data '{ "token": "string" }'
- GET /api/v2/tokens
curl --request GET \
--url "$BASE_URL/api/v2/tokens?mobileId={mobileId}" \
--header "Authorization: Bearer $TOKEN"
- POST /api/v2/tokens
curl --request POST \
--url "$BASE_URL/api/v2/tokens" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{ "mobileId": 0, "fullControl": true, "expiryHours": 1 }'
- DELETE /api/v2/tokens/{id}
curl --request DELETE \
--url "$BASE_URL/api/v2/tokens/{id}" \
--header "Authorization: Bearer $TOKEN"
Trace Filters
- GET /api/v2/tracefilters/{id}
curl --request GET \
--url "$BASE_URL/api/v2/tracefilters/{id}" \
--header "Authorization: Bearer $TOKEN"
- PUT /api/v2/tracefilters/{id}
curl --request PUT \
--url "$BASE_URL/api/v2/tracefilters/{id}" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{ "name": "string", "filter": "string" }'
- DELETE /api/v2/tracefilters/{id}
curl --request DELETE \
--url "$BASE_URL/api/v2/tracefilters/{id}" \
--header "Authorization: Bearer $TOKEN"
- GET /api/v2/tracefilters
curl --request GET \
--url "$BASE_URL/api/v2/tracefilters" \
--header "Authorization: Bearer $TOKEN"
- POST /api/v2/tracefilters
curl --request POST \
--url "$BASE_URL/api/v2/tracefilters" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{ "name": "string", "filter": "string" }'
- GET /api/v2/tracefilters/{id}/testcases
curl --request GET \
--url "$BASE_URL/api/v2/tracefilters/{id}/testcases" \
--header "Authorization: Bearer $TOKEN"
Users API
- GET /api/v2/users/{id}
curl --request GET \
--url "$BASE_URL/api/v2/users/{id}" \
--header "Authorization: Bearer $TOKEN"
- PUT /api/v2/users/{id}
curl --request PUT \
--url "$BASE_URL/api/v2/users/{id}" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{ "role": "STANDARD" }'
- POST /api/v2/users/{id}/delete
curl --request POST \
--url "$BASE_URL/api/v2/users/{id}/delete" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{ "newUser": 0 }'
- GET /api/v2/users
curl --request GET \
--url "$BASE_URL/api/v2/users" \
--header "Authorization: Bearer $TOKEN"
- POST /api/v2/users
curl --request POST \
--url "$BASE_URL/api/v2/users" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{ "email": "user@example.com", "role": "STANDARD", "tempPassword": "string" }'
- GET /api/v2/users/me
curl --request GET \
--url "$BASE_URL/api/v2/users/me" \
--header "Authorization: Bearer $TOKEN"
AI Test Authoring
- POST /api/v2/requirements
curl --request POST \
--url "$BASE_URL/api/v2/requirements" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{ "name": "string", "description": "An SMS sent on LTE is received by another device", "devices": [0], "generate": true }'
- GET /api/v2/requirements
curl --request GET \
--url "$BASE_URL/api/v2/requirements" \
--header "Authorization: Bearer $TOKEN"
- GET /api/v2/requirements/{id}
curl --request GET \
--url "$BASE_URL/api/v2/requirements/{id}" \
--header "Authorization: Bearer $TOKEN"
- PUT /api/v2/requirements/{id}
curl --request PUT \
--url "$BASE_URL/api/v2/requirements/{id}" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{ "name": "string", "description": "An SMS sent on LTE is received by another device", "devices": [0], "generate": true }'
- DELETE /api/v2/requirements/{id}
curl --request DELETE \
--url "$BASE_URL/api/v2/requirements/{id}" \
--header "Authorization: Bearer $TOKEN"
- DELETE /api/v2/requirements
curl --request DELETE \
--url "$BASE_URL/api/v2/requirements" \
--header "Authorization: Bearer $TOKEN"
- POST /api/v2/requirements/{id}/suggestions
curl --request POST \
--url "$BASE_URL/api/v2/requirements/{id}/suggestions" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{ "devices": [0] }'
- GET /api/v2/requirements/{id}/suggestions
curl --request GET \
--url "$BASE_URL/api/v2/requirements/{id}/suggestions" \
--header "Authorization: Bearer $TOKEN"
- POST /api/v2/requirements/{id}/suggestions/{suggestionId}/approve
curl --request POST \
--url "$BASE_URL/api/v2/requirements/{id}/suggestions/{suggestionId}/approve" \
--header "Authorization: Bearer $TOKEN"
- POST /api/v2/requirements/{id}/suggestions/{suggestionId}/discard
curl --request POST \
--url "$BASE_URL/api/v2/requirements/{id}/suggestions/{suggestionId}/discard" \
--header "Authorization: Bearer $TOKEN"
- DELETE /api/v2/requirements/{id}/suggestions/{suggestionId}
curl --request DELETE \
--url "$BASE_URL/api/v2/requirements/{id}/suggestions/{suggestionId}" \
--header "Authorization: Bearer $TOKEN"
- DELETE /api/v2/requirements/{id}/suggestions
curl --request DELETE \
--url "$BASE_URL/api/v2/requirements/{id}/suggestions" \
--header "Authorization: Bearer $TOKEN"
- GET /api/v2/requirements/{id}/feedback
curl --request GET \
--url "$BASE_URL/api/v2/requirements/{id}/feedback" \
--header "Authorization: Bearer $TOKEN"
- POST /api/v2/requirements/{id}/done
curl --request POST \
--url "$BASE_URL/api/v2/requirements/{id}/done" \
--header "Authorization: Bearer $TOKEN"
- POST /api/v2/requirements/{id}/reopen
curl --request POST \
--url "$BASE_URL/api/v2/requirements/{id}/reopen" \
--header "Authorization: Bearer $TOKEN"
MCP Connectors
- POST /api/v2/mcp/connectors
curl --request POST \
--url "$BASE_URL/api/v2/mcp/connectors" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{ "label": "string", "expiryDays": 90 }'
- GET /api/v2/mcp/connectors
curl --request GET \
--url "$BASE_URL/api/v2/mcp/connectors" \
--header "Authorization: Bearer $TOKEN"
- DELETE /api/v2/mcp/connectors/{id}
Add
?purge=true to delete the connector instead of revoking it.
curl --request DELETE \
--url "$BASE_URL/api/v2/mcp/connectors/{id}" \
--header "Authorization: Bearer $TOKEN"
- POST /api/v2/mcp/connectors/{id}/rotate
curl --request POST \
--url "$BASE_URL/api/v2/mcp/connectors/{id}/rotate" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{ "expiryDays": 90 }'
AT-Command Suggestions
- POST /api/v2/at-command-suggestions
curl --request POST \
--url "$BASE_URL/api/v2/at-command-suggestions" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{ "request": "Query signal strength and network registration status", "modem": "Quectel-EG25" }'
- GET /api/v2/at-command-suggestions/{id}
curl --request GET \
--url "$BASE_URL/api/v2/at-command-suggestions/{id}" \
--header "Authorization: Bearer $TOKEN"
Legacy API
- GET /api/custom/executionPdf/{id}
curl --request GET \
--url "$BASE_URL/api/custom/executionPdf/{id}" \
--header "Authorization: Bearer $TOKEN" \
--output execution-report.pdf
- GET /api/custom/trace/{id}
curl --request GET \
--url "$BASE_URL/api/custom/trace/{id}" \
--header "Authorization: Bearer $TOKEN" \
--output trace.bin
- GET /api/custom/scheduledTasks
curl --request GET \
--url "$BASE_URL/api/custom/scheduledTasks?page=0&size=20" \
--header "Authorization: Bearer $TOKEN"
- GET /api/custom/nextFireTime/{id}
curl --request GET \
--url "$BASE_URL/api/custom/nextFireTime/{id}" \
--header "Authorization: Bearer $TOKEN"
- GET /api/custom/canReserve/{id}
curl --request GET \
--url "$BASE_URL/api/custom/canReserve/{id}" \
--header "Authorization: Bearer $TOKEN"
- POST /api/custom/reserveDevice/{id}
curl --request POST \
--url "$BASE_URL/api/custom/reserveDevice/{id}" \
--header "Authorization: Bearer $TOKEN" \
--header 'Content-Type: application/json' \
--data '{ "minutes": 30 }'
- DELETE /api/custom/reserveDevice/{id}
curl --request DELETE \
--url "$BASE_URL/api/custom/reserveDevice/{id}" \
--header "Authorization: Bearer $TOKEN"