Create Access Request
Create a request for access to an app, or to specific entitlements on it, for you or for target_user_id. One submission can create several requests, so the 201 response lists them in access_requests.
Name entitlements in entitlement_ids by Entitlement UUID. An unknown ID returns 404 access_request.entitlement_not_found. An entitlement you can’t request on app_id returns 400 access_request.entitlement_not_requestable.
Answer the app’s custom intake fields in custom_fields, keyed by reference_key. A missing required answer, an unknown key, an answer over 500 characters, or a dropdown answer that is not one of its options returns 400 access_request.custom_fields_invalid, with every problem listed in error.errors as custom_fields.<reference_key>.
Any other refusal returns 400 access_request.<reason>, where the reason is one of invalid, not_requestable, entitlement_invalid, access_length_invalid, expiration_invalid, itsm_ticket_id_required, missing_fields, rejected_by_webhook.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
The UUID of the app to request access to.
Override the user who made the request. If omitted, use the current user. Only organization admins may send this field; any other caller is refused with a 403.
User to request access for. If omitted, request for the current user.
[Deprecated - use business_justification] Why the user needs access.
Why the user needs access.
Once granted, how long the access should last, in seconds. The value must equal one of the app's time-based access options (when requesting entitlements, one that all of them offer) and be at least 30 minutes; anything else is rejected with 400. Omit it for permanent access, which works only if the app offers Unlimited. access_length names the same options by label and is the easier field to use; sending both returns 400.
Once granted, how long the access should last. Omitting it means permanent access, which works only if the app offers Unlimited. All possible values are '2 hours', '4 hours', '8 hours', '12 hours', '1 day', '2 days', '3 days', '7 days', '14 days', '30 days', '90 days', 'Unlimited', but the exact options depend on the settings of the app and entitlements. expiration_in_seconds names the same options in seconds; sending both returns 400.
Entitlement UUIDs to request, as /v1/entitlements returns them. Each must be requestable on app_id. Omit this to just request access to the app.
Answers to the app's custom intake fields, keyed by reference_key. GET /v1/apps/{app_id}/appstore-settings lists the fields with their keys, required flags and dropdown options. Every required field needs a non-blank answer, and a dropdown answer must match one of its options exactly. Problems return 400 access_request.custom_fields_invalid with one entry per field in errors.
Response
Successful Response
The access requests created. One submission fans out into one request per app, so this is a list even when a single app was requested.