Get Details Service
Convert a project, release, cycle, platform, test suite, and build name into the numeric identifiers that other Open API endpoints require, in a single call. Use this API when your automation knows the names of the entities it works with but not their identifiers.
Endpoint
POST /rest/admin/project/getDetails/v1
Request
Content-Type: application/json
Parameters
Name | Located in | Required | Description | Default | Schema |
|---|---|---|---|---|---|
| header | yes | Open API key generated in Integration, Open API in QMetry Test Management. | - | string |
| header | no | Project or scope ID, key, or name. | Default | string |
| body | yes | Name of the project. The value must exactly match the name of an existing project that the API key user can access. | - | string |
| body | no | Name of the release. When you include this parameter, the response contains a | - | string |
| body | no | Name of the cycle. Send | - | string |
| body | no | Name of the platform. When you include this parameter, the response contains a | - | string |
| body | no | Entity key of the test suite, for example, | - | string |
| body | no | Name of the build. When you include this parameter, the response contains a | - | string |
Cycle Resolution
The same cycle name can exist under more than one release in a project. To identify a cycle without ambiguity, send releaseName together with cycleName. When you send cycleName without releaseName, the cycle id is always null and the response includes an errorMessage, even if a cycle with that name exists. This is expected behavior, not an error.
Understand the Response Structure
The response returns each resolved entity as a nested object. Only the entities you named in the request appear in the response.
When an entity resolves, its object holds a populated
idtogether with thename, or theentityKeyin the case of a test suite.When an entity does not resolve, its
idisnull, thenameorentityKeyis echoed back from the request, and anerrorMessageexplains the reason.When a build exists but is archived, its
idisnulland theerrorMessagestates that the build is archived. This message distinguishes an archived build from a build that is not found.A
nullidentifier does not fail the request. The response status remains 200. Always check whether the returned identifier isnullbefore you use it in a later call.
Two members are always present, whichever optional parameters you send:
statusDetailslists the execution statuses configured for the project.testExecutionViewIdholds the default test execution view identifier for the project, ornullwhen no view is configured.
Response
Content-Type: application/json
Status code | Reason | Response model |
|---|---|---|
200 | Details fetched successfully. An unresolved optional entity still returns 200, with a | ResponseEntity |
400 |
| - |
401 | Unauthorized or session expired. | - |
500 | The server connection timed out. | - |
A minimal request returns the project object along with statusDetails and testExecutionViewId. No optional entity objects appear in the response.
Request
{
"projectName": "<project-name>"
}
Response
{
"project": {
"id": 101,
"name": "<project-name>"
},
"statusDetails": [
{ "id": 1, "name": "PASS" },
{ "id": 2, "name": "FAIL" },
{ "id": 3, "name": "WIP" },
{ "id": 4, "name": "BLOCKED" },
{ "id": 5, "name": "NOT EXECUTED" }
],
"testExecutionViewId": 200
}
Request
{
"projectName": "<project-name>",
"releaseName": "<release-name>",
"cycleName": "<cycle-name>",
"platformName": "<platform-name>",
"tsEntityKey": "<entity-key>",
"buildName": "<build-name>"
}
Response
{
"project": {
"id": 101,
"name": "<project-name>"
},
"release": {
"id": 202,
"name": "<release-name>"
},
"cycle": {
"id": 303,
"name": "<cycle-name>"
},
"platform": {
"id": 404,
"name": "<platform-name>"
},
"testSuite": {
"id": 505,
"entityKey": "<entity-key>"
},
"build": {
"id": 606,
"name": "<build-name>"
},
"statusDetails": [
{ "id": 1, "name": "PASS" },
{ "id": 2, "name": "FAIL" },
{ "id": 3, "name": "WIP" },
{ "id": 4, "name": "BLOCKED" },
{ "id": 5, "name": "NOT EXECUTED" }
],
"testExecutionViewId": 200
}
The cycle id is null because the cycle cannot be resolved without a release. To resolve the cycle, send releaseName together with cycleName.
Request
{
"projectName": "<project-name>",
"cycleName": "<cycle-name>"
}
Response
{
"project": {
"id": 101,
"name": "<project-name>"
},
"cycle": {
"id": null,
"name": "<cycle-name>",
"errorMessage": "Release name either not provided or not available, hence unable to fetch cycle."
},
"statusDetails": [
{ "id": 1, "name": "PASS" },
{ "id": 2, "name": "FAIL" },
{ "id": 3, "name": "WIP" },
{ "id": 4, "name": "BLOCKED" },
{ "id": 5, "name": "NOT EXECUTED" }
],
"testExecutionViewId": 200
}
When a named entity does not exist, the identifier is null and the response explains why.
{
"release": {
"id": null,
"name": "BadRelease",
"errorMessage": "No release found with name: BadRelease."
}
}
The testSuite id is null, with an errorMessage, when the entity key does not exist in the project or cannot be parsed to a number.
Request
{
"projectName": "<project-name>",
"releaseName": "<release-name>",
"tsEntityKey": "<entity-key>"
}
Response
{
"project": {
"id": 101,
"name": "<project-name>"
},
"release": {
"id": 202,
"name": "<release-name>"
},
"testSuite": {
"id": null,
"entityKey": "<entity-key>",
"errorMessage": "<error-message>"
},
"statusDetails": [
{ "id": 1, "name": "PASS" },
{ "id": 2, "name": "FAIL" },
{ "id": 3, "name": "WIP" },
{ "id": 4, "name": "BLOCKED" },
{ "id": 5, "name": "NOT EXECUTED" }
],
"testExecutionViewId": 200
}
When the build exists but is archived, the build id is null and the errorMessage states that the build is archived.
{
"projectName": "<project-name>",
"buildName": "<archived-build-name>"
}
Response
{
"project": {
"id": 101,
"name": "<project-name>"
},
"build": {
"id": null,
"name": "<archived-build-name>",
"errorMessage": "Build '<archived-build-name>' is archived."
},
"statusDetails": [
{ "id": 1, "name": "PASS" },
{ "id": 2, "name": "FAIL" },
{ "id": 3, "name": "WIP" },
{ "id": 4, "name": "BLOCKED" },
{ "id": 5, "name": "NOT EXECUTED" }
],
"testExecutionViewId": 200
}
Request
{
"projectName": "<project-name>",
"buildName": "BuildThatDoesNotExist"
}
Response
{
"project": {
"id": 101,
"name": "<project-name>"
},
"build": {
"id": null,
"name": "BuildThatDoesNotExist",
"errorMessage": "No build found with name: BuildThatDoesNotExist."
},
"statusDetails": [
{ "id": 1, "name": "PASS" },
{ "id": 2, "name": "FAIL" },
{ "id": 3, "name": "WIP" },
{ "id": 4, "name": "BLOCKED" },
{ "id": 5, "name": "NOT EXECUTED" }
],
"testExecutionViewId": 200
}
Error Responses
Missing projectName:
{
"success": false,
"code": "projectName is mandatory."
}
Project not found:
{
"success": false,
"code": "No project found with name: ProjectThatDoesNotExist."
}
When projectName is missing or does not match a project that the API key can access, no other parameter is evaluated.