Create approval request
POST
/api/admin/approvals
Code sample: Shell / cURL
curl --request POST \ --url https://auth.example.com/api/admin/approvals \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "investigation_id": "case_123", "target_subject_type": "user", "target_subject_id": "user_123", "request_surface": "approvals", "requested_action": "detail_read", "resource_class": "approval_transport_detail", "resource_ids": [ "apreq_123" ], "detail_classes": [ "transport_evidence" ], "audience": "admin_api", "redaction_level": "masked", "reason_code": "support_case", "reason_note": "Investigating a support request.", "reference_id": "SUP-1234", "policy_preset": "support_case_default", "reuse_scope": "request", "partial_access_allowed": false, "expires_at": 1770086400000, "approvals": [ { "subject_type": "admin_user", "subject_id": "admin_approver", "relation_type": "owner", "method": "email_otp", "transport_channel": "[email protected]" } ] }'Creates an approval request and its required approval steps. The workflow may send initial notifications after the request is created.
Authorizations
Section titled “Authorizations ”Request Body required
Section titled “Request Body required ” Media type application/json
object
investigation_id
string
requester_subject_type
string
requester_subject_id
string
target_subject_type
required
string
target_subject_id
required
string
request_surface
required
string
requested_action
required
string
resource_class
required
string
resource_ids
Array<string>
detail_classes
Array<string>
dataset
string
audience
string
redaction_level
string
attributes
object
key
additional properties
reason_code
required
string
reason_note
string
reference_id
string
reference
object
system
required
string
id
required
string
url
string format: uri
key
additional properties
ticket_reference
object
system
required
string
id
required
string
url
string format: uri
key
additional properties
policy_preset
required
string
reuse_scope
string
partial_access_allowed
boolean
expires_at
integer
approvals
required
Array<object>
object
step_key
required
string
side
required
string
subject_type
required
string
subject_id
string
relation_type
string
relation_source
string
method
string
transport_channel
string
expires_at
integer
key
additional properties
key
additional properties
Example
{ "investigation_id": "case_123", "target_subject_type": "user", "target_subject_id": "user_123", "request_surface": "approvals", "requested_action": "detail_read", "resource_class": "approval_transport_detail", "resource_ids": [ "apreq_123" ], "detail_classes": [ "transport_evidence" ], "audience": "admin_api", "redaction_level": "masked", "reason_code": "support_case", "reason_note": "Investigating a support request.", "reference_id": "SUP-1234", "policy_preset": "support_case_default", "reuse_scope": "request", "partial_access_allowed": false, "expires_at": 1770086400000, "approvals": [ { "subject_type": "admin_user", "subject_id": "admin_approver", "relation_type": "owner", "method": "email_otp", } ]}Responses
Section titled “ Responses ”Approval request with steps and grants.
Media type application/json
object
id
string
public_request_id
string
tenant_id
string
investigation_id
string
requester_subject_type
string
requester_subject_id
string
target_subject_type
string
target_subject_id
string
request_surface
string
requested_action
string
redaction_level
string
status
string
scope_canonical
string
scope_json
object
key
additional properties
reason_code
string
reference
ticket_reference
reuse_scope
string
policy_preset
string
partial_access_allowed
boolean
requested_at
integer
expires_at
integer
created_at
integer
updated_at
integer
has_detail
boolean
resolved_policy
object
key
additional properties
approvals
required
Array<object>
object
id
string
approval_request_id
string
step_key
string
side
string
subject_type
string
status
string
notification_count
integer
requested_at
integer
expires_at
integer
created_at
integer
updated_at
integer
key
additional properties
grants
required
Array<object>
object
id
string
public_grant_id
string
approval_request_id
string
tenant_id
string
status
string
target_audience
string
resource_class
string
redaction_level
string
scope_canonical
string
scope_json
object
key
additional properties
requester_subject_type
string
requester_subject_id
string
actor_subject_type
string
actor_subject_id
string
issued_at
integer
expires_at
integer
created_at
integer
updated_at
integer
key
additional properties
notification_results
Array<object>
object
approval_id
string
step_key
string
action
string
method
string
completion_artifact
success
boolean
retryable
boolean
key
additional properties
Example
{ "id": "apr_internal_123", "public_request_id": "apreq_123", "tenant_id": "tenant_123", "investigation_id": "case_123", "requester_subject_type": "admin_user", "requester_subject_id": "admin_requester", "target_subject_type": "user", "target_subject_id": "user_123", "request_surface": "approvals", "requested_action": "detail_read", "resource_class": "approval_transport_detail", "resource_ids": [ "apreq_123" ], "detail_classes": [ "transport_evidence" ], "dataset": null, "audience": "admin_api", "redaction_level": "masked", "attributes": { "case_priority": "high" }, "reason_code": "support_case", "reason_note": "Investigating a support request.", "reference_id": "SUP-1234", "reference": { "type": "ticket", "id": "SUP-1234", "url": "https://support.example.com/tickets/SUP-1234" }, "ticket_reference": { "type": "ticket", "id": "SUP-1234", "url": "https://support.example.com/tickets/SUP-1234" }, "policy_preset": "support_case_default", "reuse_scope": "request", "partial_access_allowed": false, "status": "pending", "expires_at": 1770086400000, "decided_at": null, "created_at": 1770000000000, "updated_at": 1770000000000, "approvals": [ { "id": "apstep_123", "public_approval_id": "apstep_123", "approval_request_id": "apr_internal_123", "subject_type": "admin_user", "subject_id": "admin_approver", "relation_type": "owner", "relation_source": "direct", "status": "pending", "method": "email_otp", "reason_code": null, "reason_note": null, "expires_at": 1770086400000, "decided_at": null, "created_at": 1770000000000, "updated_at": 1770000000000 } ], "grants": []}default
Section titled “default ”Error response.
Media type application/json
object
error
string
message
string
error_description
string
key
additional properties
Example generated
{ "error": "example", "message": "example", "error_description": "example"}