Grant Requests
Returns grant requests visible to the current user, optionally filtered by group, user, status, or action.
Grant request group ID (required only when accessing from group route)
Filter by current user (use 'me')
Filter by status
Filter by action (e.g., 'approve')
List of grant requests
Unauthorized
Forbidden
Internal Server Error
GET /api/grant_requests HTTP/1.1
Accept: */*
{
"data": [
{
"_embedded": {
"data_structure": {
"external_id": "ds_1",
"id": 1,
"name": "DS",
"type": "table"
},
"group": {
"_embedded": {
"user": {
"full_name": "User Name",
"id": 3,
"user_name": "u"
}
},
"id": 2,
"type": "grant_request_group"
}
},
"dynamic_content": {
"foo": "bar"
},
"filters": {
"status": [
"pending"
]
},
"id": 456,
"inserted_at": "2020-01-01T00:00:00Z",
"metadata": {
"grant_meta": "bar"
},
"status": "pending",
"type": "grant_creation"
}
],
"permissions": [
"approver"
]
}Approves or rejects multiple grant requests in bulk according to the provided approval parameters and returns created approvals.
Optional comment
Whether this is a rejection
falseApproval role
Grant request approvals created
Unauthorized
Forbidden
Unprocessable Entity
Internal Server Error
POST /api/grant_requests/bulk_approval HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 99
{
"comment": "Bulk approval",
"filters": {
"status": [
"pending"
]
},
"is_rejection": false,
"role": "approver"
}{
"data": [
{
"comment": "Bulk approval",
"id": 789,
"inserted_at": "2026-06-16T09:43:18.491754Z",
"is_rejection": false,
"role": "approver"
}
]
}Triggers a full reindex of grant requests for search.
Reindexing accepted
No content
Unauthorized
Forbidden
Internal Server Error
GET /api/grant_requests/search/reindex_all HTTP/1.1
Accept: */*
No content
Returns grant request groups available to the current user, optionally filtered by a comma-separated list of IDs.
Comma-separated list of group IDs to filter
List of grant request groups
Unauthorized
Internal Server Error
GET /api/grant_request_groups HTTP/1.1
Accept: */*
{
"data": [
{
"_embedded": {
"requests": [
{
"id": 789,
"type": "grant_creation"
}
]
},
"id": 123,
"status": "pending",
"type": "grant_request",
"user_id": 456
}
]
}Returns grant requests visible to the current user, optionally filtered by group, user, status, or action.
Grant request group ID (required only when accessing from group route)
Filter by current user (use 'me')
Filter by status
Filter by action (e.g., 'approve')
List of grant requests
Unauthorized
Forbidden
Internal Server Error
GET /api/grant_request_groups/{grant_request_group_id}/grant_requests HTTP/1.1
Accept: */*
{
"data": [
{
"_embedded": {
"data_structure": {
"external_id": "ds_1",
"id": 1,
"name": "DS",
"type": "table"
},
"group": {
"_embedded": {
"user": {
"full_name": "User Name",
"id": 3,
"user_name": "u"
}
},
"id": 2,
"type": "grant_request_group"
}
},
"dynamic_content": {
"foo": "bar"
},
"filters": {
"status": [
"pending"
]
},
"id": 456,
"inserted_at": "2020-01-01T00:00:00Z",
"metadata": {
"grant_meta": "bar"
},
"status": "pending",
"type": "grant_creation"
}
],
"permissions": [
"approver"
]
}Generates an XLSX file containing grant requests matching the request filters.
The payload mirrors POST /api/grant_requests/search so that the active view (Approve or Search) can be reused as-is. As in the search endpoint, the Approve view filters (Search.apply_approve_filters/1) are applied whenever the payload carries them, and the payload is used verbatim otherwise. Results are always restricted to the domains and structures the user can see, regardless of the payload.
Every record matching the query is exported, so the pagination and cursor properties of the search payload are ignored.
Request body for POST /api/grant_requests/xlsx/download.
Mirrors GrantRequestSearchRequest so that the payload sent by the
Manage grant requests view (Search or Approve) can be forwarded
verbatim. Dynamic template fields are not listed here because the
schema depends on the active templates at runtime; the headers for
each dynamic column are returned in the same order produced by the
server, prefixed by the eight fixed columns.
The download always exports every record matching the query, so the
pagination and cursor properties of the search payload (page,
size, scroll, scroll_id) are accepted but ignored.
Locale used to translate the status and request type columns and the template fields. Defaults to the default locale.
esAccepted and ignored.
Accepted and ignored.
Accepted and ignored.
Accepted and ignored. The Approve view filters are applied whenever the payload carries them, as in the search endpoint.
allPossible values: Accepted and ignored.
XLSX file downloaded
No grant requests available for download
Unauthorized
Forbidden
Unprocessable Entity
Internal Server Error
POST /api/grant_requests/xlsx/download HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 305
{
"filters": {
"status": [
"pending"
]
},
"header_labels": {
"created_by_full_name": "Created by",
"current_status": "Status",
"domains": "Domains",
"request_type": "Request type",
"structure_external_id": "Structure",
"structure_path": "Path",
"system_name": "System",
"user_full_name": "User"
},
"lang": "en",
"search_by": "approve"
}binaryRetrieves the grant request with the specified ID.
Grant request ID
Grant request retrieved
Unauthorized
Forbidden
Internal Server Error
GET /api/grant_requests/{id} HTTP/1.1
Accept: */*
{
"data": {
"_embedded": {
"data_structure": {
"external_id": "ds_1",
"id": 1,
"name": "DS"
}
},
"data_structure_id": 789,
"id": 456,
"status": "pending",
"type": "grant_creation"
}
}Deletes the grant request identified by the provided ID.
Grant request ID
Grant request deleted
No content
Unauthorized
Forbidden
Internal Server Error
DELETE /api/grant_requests/{id} HTTP/1.1
Accept: */*
No content
Returns the set of available filters for grant requests according to caller permissions and provided parameters.
Page number (0-indexed)
0Search query string
Scroll ID for pagination (e.g., '1m' for 1 minute)
Scroll ID to continue a previous search
Page size
20Available filters
Unauthorized
Internal Server Error
POST /api/grant_requests_filters/search HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 73
{
"filters": {
"status": [
"pending"
]
},
"page": 0,
"query": "user name",
"size": 20
}{
"data": {
"status": [
{
"count": 10,
"key": "pending"
}
],
"type": [
{
"count": 5,
"key": "grant_creation"
}
]
}
}Creates or updates the status of a grant request for the given request ID.
Grant request ID
Grant request status created
Unauthorized
Forbidden
Unprocessable Entity
Internal Server Error
POST /api/grant_requests/{grant_request_id}/status HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 49
{
"reason": "Request approved",
"status": "approved"
}{
"data": {
"_embedded": {
"approvals": [],
"data_structure": {
"external_id": "ds_1",
"id": 1,
"name": "DS"
},
"group": {
"created_by_id": 123,
"id": 1
}
},
"all_pending_roles": [],
"data_structure_id": 789,
"domain_ids": [
123
],
"dynamic_content": {
"foo": "bar"
},
"filters": {
"status": [
"pending"
]
},
"id": 456,
"inserted_at": "2026-06-16T13:40:56.464111Z",
"metadata": {
"grant_meta": "bar"
},
"pending_roles": [],
"request_type": "grant_access",
"status": "processing",
"status_reason": "Processing the request",
"type": "grant_request",
"updated_at": "2026-06-16T13:40:56.468406Z"
}
}Searches grant requests using the provided criteria and returns paginated results with total count and optional filters.
Page number (0-indexed)
0Search query string
Scroll ID for pagination (e.g., '1m' for 1 minute)
Scroll ID to continue a previous search
Page size
20Grant request search response
User permissions for the search results
Scroll ID for pagination
Unauthorized
Forbidden
Unprocessable Entity
Internal Server Error
POST /api/grant_requests/search HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 73
{
"filters": {
"status": [
"pending"
]
},
"page": 0,
"query": "user name",
"size": 20
}{
"_permissions": [],
"data": [
{
"created_by": {
"email": "email325",
"full_name": "",
"user_name": "joe"
},
"created_by_id": 666498,
"current_status": "pending",
"data_structure_id": 2735267,
"data_structure_version": {
"data_structure_id": 2735267,
"description": "data_structure_version_description100",
"domain": null,
"external_id": "ds_external_id398",
"metadata": {
"description": "some description"
},
"mutable_metadata": null,
"name": "data_structure_version_name100",
"note": null,
"path": []
},
"domain_ids": [],
"grant": null,
"group_id": 1130,
"id": 48207,
"inserted_at": "2026-06-16T17:13:15.241941Z",
"metadata": {},
"modification_grant_id": null,
"request_type": "grant_access",
"user": {
"email": "email325",
"full_name": "",
"user_name": "joe"
},
"user_id": 666498
}
],
"filters": null,
"scroll_id": null
}Creates an approval record for the specified grant request.
Grant request ID
Grant request approval created
Unauthorized
Forbidden
Unprocessable Entity
Internal Server Error
POST /api/grant_requests/{grant_request_id}/approvals HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 53
{
"approval": {
"comment": "Approved",
"role": "approver"
}
}{
"data": {
"_embedded": {
"user": {
"id": 1,
"user_name": "admin"
}
},
"comment": "Approved",
"id": 789,
"inserted_at": "2026-06-16T09:43:18.491754Z",
"is_rejection": false,
"role": "approver"
}
}Last updated