Get Change Approval Detail API
Retrieve the complete approval record for a module object, including all stages and their approvers in a single response.
URL: GET /api/v1/change/change_id/approval/approval_id
Example: GET http://{server-url}/api/v1/change/13/approval/118
Path Variables
| Variable | Type | Description |
|---|---|---|
{change_id} | long | ID of the change record. |
{approval_id} | long | Approval ID returned by the List Approvals endpoint. |
Response Size Limits
To keep response payloads manageable, this endpoint returns a maximum of 50 stages and 100 approvers per stage. If an approval exceeds either limit, the response includes a flag to indicate more records exist:
- When an approval has more than 50 stages,
hasMoreStagesreturnstrue. Call GET Stage Detail to retrieve individual stages beyond the limit. - When a stage has more than 100 approvers,
hasMoreApproversreturnstrue. Call GET Stage Detail for that specific stage to get the full approver list.
Request Headers
| Key | Description |
|---|---|
Authorization | Bearer token or API key |
Content-Type | application/json |
Example Request
curl --location 'http://172.16.15.185/api/v1/change/13/approval/118' \
--header 'Authorization: Apikey wGjCygm6LvI7J1LT%40HHW%2Bs0ighXw7TeP5biyBL1uvBkzRnKMidKLUsz%2FIHEIn9w%3D%3D'
Example Response (200 OK)
{
"id": 118,
"subject": "Approval Required for - CHG-13",
"description": null,
"status": "pending",
"decisionRule": "unanimous",
"totalStages": 2,
"currentStageNumber": 2,
"makerCheckerApproval": false,
"refId": 13,
"model": "change",
"createdAt": 1786692953362,
"updatedAt": 1786692992579,
"stages": [
{
"stageNumber": 1,
"status": "approved",
"decisionRule": "unanimous",
"isActive": true,
"approvedCount": 1,
"rejectedCount": 0,
"pendingCount": 0,
"commentsCount": 1,
"approvers": [
{
"id": 210,
"displayName": "Rosy",
"approvalStatus": "approved",
"decidedAt": 1786692992558
}
],
"hasMoreApprovers": false
},
{
"stageNumber": 2,
"status": "pending",
"decisionRule": "unanimous",
"isActive": true,
"approvedCount": 0,
"rejectedCount": 0,
"pendingCount": 1,
"commentsCount": 0,
"approvers": [
{
"id": 211,
"displayName": "Adam",
"approvalStatus": "pending",
"decidedAt": 1786692992585
}
],
"hasMoreApprovers": false
}
],
"hasMoreStages": false
}
Response Fields
Top-level Fields
| Field | Type | Description |
|---|---|---|
id | long | Unique approval ID. |
subject | string | Approval subject line. |
description | string | Approval description text. |
status | string | Overall approval status: pending, approved, rejected, or cancelled. |
decisionRule | string | Decision rule of the currently active stage: unanimous, majority, or any_one. Each stage may have a different rule configured. |
totalStages | int | Total number of stages defined. |
currentStageNumber | int | Currently active stage number. Returns 0 if not yet started. |
makerCheckerApproval | boolean | true if this is a maker-checker approval. |
refId | long | ID of the parent module object. |
model | string | Module name of the parent object. |
createdAt | long or string | Creation timestamp. Epoch milliseconds by default; formatted string when ?pretty=true is set. |
updatedAt | long or string | Last update timestamp. Epoch milliseconds by default; formatted string when ?pretty=true is set. |
stages | array | List of stage objects. Capped at 50 per response. |
hasMoreStages | boolean | true when the approval has more than 50 stages. |
Stage Object
| Field | Type | Description |
|---|---|---|
stageNumber | int | Stage number, 1-based. |
status | string | Stage status: pending, approved, or rejected. |
decisionRule | string | Decision rule for this stage: unanimous, majority, or any_one. |
isActive | boolean | true when this stage is currently awaiting decisions. |
approvedCount | int | Number of approvers who approved. |
rejectedCount | int | Number of approvers who rejected. |
pendingCount | int | Number of approvers yet to decide. |
commentsCount | int | Total number of comments on this stage. |
approvers | array | List of approver objects. Capped at 100 per stage. |
hasMoreApprovers | boolean | true when the stage has more than 100 approvers. |
Approver Object
| Field | Type | Description |
|---|---|---|
id | long | Approver record ID. |
displayName | string | Name of the approver. |
approvalStatus | string | Individual approver status: pending, approved, or rejected. |
decidedAt | long, string, or null | Timestamp of the decision. null if the approver has not decided yet. |
Error Responses
| Scenario | HTTP Status | When It Occurs |
|---|---|---|
Invalid {module} value | 400 Bad Request | {module} does not match a known module identifier. |
Invalid {ref_id} (less than or equal to 0) | 400 Bad Request | A negative or zero object ID was provided. |
Invalid {id} (less than or equal to 0) | 400 Bad Request | A negative or zero approval ID was provided. |
| Approval not found for ref | 400 Bad Request | The approval ID exists but belongs to a different ref_id or module. |
| Unauthorized | 401 Unauthorized | Session expired or no valid credentials were provided. |