Skip to main content

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

VariableTypeDescription
{change_id}longID of the change record.
{approval_id}longApproval 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, hasMoreStages returns true. Call GET Stage Detail to retrieve individual stages beyond the limit.
  • When a stage has more than 100 approvers, hasMoreApprovers returns true. Call GET Stage Detail for that specific stage to get the full approver list.

Request Headers

KeyDescription
AuthorizationBearer token or API key
Content-Typeapplication/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

FieldTypeDescription
idlongUnique approval ID.
subjectstringApproval subject line.
descriptionstringApproval description text.
statusstringOverall approval status: pending, approved, rejected, or cancelled.
decisionRulestringDecision rule of the currently active stage: unanimous, majority, or any_one. Each stage may have a different rule configured.
totalStagesintTotal number of stages defined.
currentStageNumberintCurrently active stage number. Returns 0 if not yet started.
makerCheckerApprovalbooleantrue if this is a maker-checker approval.
refIdlongID of the parent module object.
modelstringModule name of the parent object.
createdAtlong or stringCreation timestamp. Epoch milliseconds by default; formatted string when ?pretty=true is set.
updatedAtlong or stringLast update timestamp. Epoch milliseconds by default; formatted string when ?pretty=true is set.
stagesarrayList of stage objects. Capped at 50 per response.
hasMoreStagesbooleantrue when the approval has more than 50 stages.

Stage Object

FieldTypeDescription
stageNumberintStage number, 1-based.
statusstringStage status: pending, approved, or rejected.
decisionRulestringDecision rule for this stage: unanimous, majority, or any_one.
isActivebooleantrue when this stage is currently awaiting decisions.
approvedCountintNumber of approvers who approved.
rejectedCountintNumber of approvers who rejected.
pendingCountintNumber of approvers yet to decide.
commentsCountintTotal number of comments on this stage.
approversarrayList of approver objects. Capped at 100 per stage.
hasMoreApproversbooleantrue when the stage has more than 100 approvers.

Approver Object

FieldTypeDescription
idlongApprover record ID.
displayNamestringName of the approver.
approvalStatusstringIndividual approver status: pending, approved, or rejected.
decidedAtlong, string, or nullTimestamp of the decision. null if the approver has not decided yet.

Error Responses

ScenarioHTTP StatusWhen It Occurs
Invalid {module} value400 Bad Request{module} does not match a known module identifier.
Invalid {ref_id} (less than or equal to 0)400 Bad RequestA negative or zero object ID was provided.
Invalid {id} (less than or equal to 0)400 Bad RequestA negative or zero approval ID was provided.
Approval not found for ref400 Bad RequestThe approval ID exists but belongs to a different ref_id or module.
Unauthorized401 UnauthorizedSession expired or no valid credentials were provided.