An API that connects multiple Microsoft services, enabling data access and automation across platforms
Hello @Omar, Ali (MPBSDP) ,
Welcome to the Microsoft Q&A and thank you for posting your questions here.
I understand that you are asking about Graph API on how to retrieve Approver of an Access Package Request.
You will need to first retrieve the access package assignment request, then use the returned request ID to retrieve the related approval stages.
GET https://graph.microsoft.com/v1.0/identityGovernance/entitlementManagement/assignmentRequests?$filter=accessPackage/id eq '{accessPackageId}'&$expand=requestor,accessPackage,assignment
Use the id from each returned assignment request as the {accessPackageAssignmentRequestId} in the approval stages call:
GET https://graph.microsoft.com/v1.0/identityGovernance/entitlementManagement/accessPackageAssignmentApprovals/{accessPackageAssignmentRequestId}/stages
The approval stages response is where you must read the approver and approval time:
{
"value": [
{
"id": "approval-stage-id",
"reviewedDateTime": "2026-07-16T20:30:00Z",
"reviewResult": "Approved",
"status": "Completed",
"justification": "Approved for business need",
"reviewedBy": {
"id": "approver-user-id",
"displayName": "Approver Name"
}
}
]
}
In this response, reviewedBy is the approver, reviewedDateTime is the approval or denial time, reviewResult confirms whether the request was approved, denied, or not reviewed, and status shows whether the approval stage is completed, in progress, expired, or initializing. - https://learn.microsoft.com/en-us/graph/api/approval-list-stages?view=graph-rest-1.0, https://learn.microsoft.com/en-us/graph/api/resources/approvalstage?view=graph-rest-1.0
Also, the filter in your original query must use the access package ID, not the catalog ID. If you use:
$filter=accessPackage/id eq '{CatalogId}'
then the filter is mismatched, because accessPackage/id expects an access package ID. If your starting point is a catalog, first enumerate the access packages in that catalog, then query assignment requests for each access package ID. - https://learn.microsoft.com/en-us/graph/api/entitlementmanagement-list-assignmentrequests?view=graph-rest-1.0, - https://learn.microsoft.com/en-us/graph/api/resources/accesspackageassignmentpolicy?view=graph-rest-1.0
One important permission point: retrieving assignment requests supports delegated and application permissions with EntitlementManagement.Read.All, but retrieving approval stages for entitlement management requires delegated work or school permissions, and application permissions are not supported for that approval-stage API. The signed-in user must also have a supported entitlement management or Microsoft Entra role, such as Catalog reader, Access package manager, Security Reader, Global Reader, Security Administrator, or Identity Governance Administrator. - https://learn.microsoft.com/en-us/graph/api/entitlementmanagement-list-assignmentrequests?view=graph-rest-1.0, https://learn.microsoft.com/en-us/graph/api/approval-list-stages?view=graph-rest-1.0
Therefore,
- Use assignmentRequests only to retrieve the access package request and its request ID.
- Do not expect $expand=requestor,accessPackage to return approver details.
- Use /accessPackageAssignmentApprovals/{accessPackageAssignmentRequestId}/stages to retrieve the actual approval decision.
- Read reviewedBy for the approver and reviewedDateTime for the approval timestamp.
- Use delegated Graph authentication for the approval-stage call, because application permissions are not supported for this API.
- If long-term audit reporting is required, use Microsoft Entra audit logs or route logs to Azure Monitor, because entitlement management reports and audit logs provide request-processing and approval activity history. - https://learn.microsoft.com/en-us/entra/id-governance/entitlement-management-reports, https://learn.microsoft.com/en-us/graph/api/approval-list-stages?view=graph-rest-1.0
I hope this is helpful. Please! Do not hesitate to let me know if you have any other questions, steps or clarifications.
Please do not close the thread by upvoting and accepting the answer if any part of it is helpful.