Skip to content
← All services

ProjectX Identity

ProjectX ID: the directory and its attribute schema, credentials and sessions, agent identities under delegation, bulk operations, and SCIM in both directions. The pillar every other pillar asks who somebody is, which is why it is published rather than treated as internal plumbing.

282 operations · https://api.projectx.dev

Generated from the checked-in OpenAPI document for this service. The document itself is the authority, and it is what a generated client is built from.

agent 6

  • GET/v1/iam/agentsRequires iam:agent:list

    List agent identities

    Each with whose authority it borrows, its blast radius and its budget.

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/agentsRequires iam:agent:create

    Register an agent identity acting under delegation

    An agent is never its own principal: `acts_for` is whose authority it borrows, and every decision about the agent is a decision about that person too.

    Body
    CreateAgentRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/agents/{name}Requires iam:agent:read

    Fetch one agent identity

    Parameters (2)
    • name · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • PUT/v1/iam/agents/{name}/budgetRequires iam:agent:configure

    Replace an agent’s rate and spend ceilings

    Body
    AgentBudget
    Parameters (3)
    • name · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/agents/{name}/resumeRequires iam:agent:configure

    Return a stopped agent to service

    Parameters (3)
    • name · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/agents/{name}/stopRequires iam:agent:stop

    Stop an agent immediately

    The kill switch. The response carries the propagation time, so an operator can see when the last service actually stopped honouring the agent’s tokens.

    Body
    StopAgentRequest
    Parameters (3)
    • name · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.

app 8

  • POST/v1/iam/api-grants/{grant}/introspectRequires iam:app:read

    Introspect an API grant for a scope

    The scope must be within the grant and the grant not revoked. A revoked or missing grant allows nothing — the point of introspection over a self-contained token.

    Body
    IntrospectGrantRequest
    Parameters (3)
    • grant · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/api-grants/{grant}/revokeRequires iam:app:configure

    Revoke an API access grant

    Parameters (3)
    • grant · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/applicationsRequires iam:app:read

    List this tenant’s published SSO applications

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/applicationsRequires iam:app:configure

    Publish an SSO application from a template

    From a catalog template — a specific SaaS, or generic-saml/generic-oidc — over SAML or OIDC, with optional per-app SCIM outbound.

    Body
    PublishApplicationRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/applications/{application}/api-grantsRequires iam:app:configure

    Grant an application consented API access

    A consented set of scopes with a rate limit. The consent is recorded (who, when) and the grant is revocable — introspection reads both.

    Body
    GrantApiAccessRequest
    Parameters (3)
    • application · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • PUT/v1/iam/applications/{application}/assignmentRequires iam:app:configure

    Set an application’s group- and rule-based assignment

    Who gets the app: a set of groups and an optional attribute rule. Access follows the org chart rather than a hand-maintained list.

    Body
    SetAssignmentRequest
    Parameters (3)
    • application · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/applications/{application}/unused-licencesRequires iam:app:read

    Find assigned licences unused past a threshold

    Given the assigned principals, returns those whose last use is older than the threshold — or who never used it. Turns a seat count into a reclaim list.

    Body
    UnusedLicencesRequest
    Parameters (3)
    • application · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/applications/{application}/usageRequires iam:app:record

    Record that a principal used an application

    Feeds unused-licence detection — a seat assigned and never touched is the clearest waste.

    Body
    RecordAppUsageRequest
    Parameters (3)
    • application · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.

auth 9

  • POST/v1/iam/adaptive/decideRequires iam:auth:evaluate

    Decide how much proof a sign-in needs, given its risk

    Critical risk is denied; high needs a phishing-resistant factor or steps up; medium needs a second factor or steps up; low allows. A sign-in already meeting the bar is not made to jump again.

    Body
    AdaptiveDecideRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/adaptive/impossible-travelRequires iam:auth:evaluate

    Check whether two sign-ins imply impossible travel

    Distance over time gives an implied speed; a speed no traveller reaches is flagged. The same account in two places at once is two people.

    Body
    ImpossibleTravelRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/continuous-access/evaluateRequires iam:auth:evaluate

    Continuously evaluate whether a session’s access still holds

    Given the epoch the session was last evaluated at and the fresh PDP verdict when re-evaluation is due, returns continue or revoke — a session that no longer passes dies mid-request.

    Body
    ContinuousAccessRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/legacy-authRequires iam:auth:read

    List this tenant’s legacy auth endpoints

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • PUT/v1/iam/legacy-auth/{protocol}Requires iam:auth:configure

    Enable and configure a legacy auth protocol

    LDAP bind, RADIUS, Kerberos, smart card (PIV/CAC) or hardware OTP — off by default, opened only where the estate needs it.

    Body
    LegacyEndpointRequest
    Parameters (3)
    • protocol · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/legacy-auth/{protocol}/authenticateRequires iam:auth:evaluate

    Authenticate a legacy identifier to a principal

    Refuses an attempt against a disabled protocol and an identifier that maps to nobody. Returns the resolved principal.

    Body
    LegacyAuthenticateRequest
    Parameters (3)
    • protocol · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/legacy-auth/{protocol}/mappingsRequires iam:auth:configure

    Map a legacy identifier to a principal

    Bridges an old identifier — a bind DN, cert subject or token serial — to a platform principal, so a legacy protocol never authenticates a stranger.

    Body
    LegacyMappingRequest
    Parameters (3)
    • protocol · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/policy-epochRequires iam:auth:read

    Read the tenant’s access-policy epoch

    The version live sessions are measured against for continuous access evaluation.

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/policy-epoch/bumpRequires iam:auth:configure

    Bump the access-policy epoch on a policy change

    Makes a policy change land mid-session: every live session evaluated against the old epoch is re-checked on its next request, and dies if it no longer passes.

    Body
    BumpEpochRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.

auth_event 1

  • GET/v1/iam/auth-eventsRequires iam:auth_event:read

    Query authentication attempts

    Failures carry the username attempted rather than a resolved principal, because a sign-in attempt against an account that does not exist is exactly the event worth reading.

    Parameters (5)
    • principal · query — URN of the principal, for attempts that resolved to one.
    • outcome · query — success, failure, challenge or revoked.
    • since · query — Inclusive RFC 3339 lower bound.
    • limit · query — How many to return. Defaults to 100.
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.

ciam 16

  • POST/v1/iam/account-takeover/assessRequires iam:ciam:read

    Score a sign-in for account-takeover risk

    Bands the sign-in signals into low/medium/high so a response playbook reads the risk, not the arithmetic. Impossible travel weighs double.

    Body
    TakeoverAssessRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/bot-defence/evaluateRequires iam:ciam:read

    Decide allow / challenge / block for an attempt

    The gateway calls this with what it has observed of the source. Credential stuffing is blocked; a source over its budget or already suspicious is challenged; the rest is allowed.

    Body
    BotEvaluateRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • PUT/v1/iam/bot-policyRequires iam:ciam:configure

    Set the bot-defence thresholds

    How many attempts from one source before a challenge, and how many distinct accounts one source may fail against before it is blocked as credential stuffing.

    Body
    BotPolicyRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/consentsRequires iam:ciam:consent

    Grant consent for a purpose at a terms version

    Consent is per purpose against a terms version — agreeing to v1 is not agreeing to v2. A new terms version resets it.

    Body
    GrantConsentRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/consents/withdrawRequires iam:ciam:consent

    Withdraw consent for a purpose

    Withdrawal stamps the record withdrawn rather than deleting it — the audit needs both the grant and the withdrawal.

    Body
    WithdrawConsentRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/customer-tenantsRequires iam:ciam:read

    List this tenant’s customer tenants

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/customer-tenantsRequires iam:ciam:configure

    Create a customer tenant with its own branding

    A customer’s own user base with its branding (logo, colours, domain, copy) and registration policy — the sign-up page a customer’s users see is the customer’s page, not ours wearing a hat.

    Body
    CreateCustomerTenantRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/data-subject-requestsRequires iam:ciam:dsr

    List this tenant’s data-subject requests, newest first

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/data-subject-requestsRequires iam:ciam:dsr

    Raise a GDPR data-subject request

    Export, rectify or erase — a tracked obligation with a deadline and a closed lifecycle, so a GDPR deadline is a state the system tracks rather than a promise in an inbox.

    Body
    RaiseDsrRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/data-subject-requests/{request}/closeRequires iam:ciam:dsr

    Close a data-subject request, fulfilled or rejected

    A request is decided once; the outcome records where an export landed or why it was rejected.

    Body
    CloseDsrRequest
    Parameters (3)
    • request · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/org-membershipsRequires iam:ciam:configure

    Set a principal’s roles in a customer org

    B2B multi-org: one identity across many organisations, a different set of roles in each. Roles set here never leak into another org.

    Body
    SetOrgMembershipRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • PUT/v1/iam/preference-centreRequires iam:ciam:configure

    Apply preference changes for a principal

    The customer’s switchboard. Changes merge over existing preferences — editing one leaves the others alone.

    Body
    SetPreferencesRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/registration-policyRequires iam:ciam:configure

    Set the self-registration policy

    The fields collected at sign-up versus later. A short front door, the rest asked for when it is worth asking — progressive profiling.

    Body
    RegistrationPolicyRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/social-identitiesRequires iam:ciam:configure

    Link a social provider identity to a principal

    Links a Google/Apple/Microsoft/Facebook/GitHub subject to a principal. Refuses a subject already tied to another user — an external subject that maps to two people is an account-takeover seam.

    Body
    LinkSocialIdentityRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/verificationsRequires iam:ciam:verify

    Issue a verification challenge

    A challenge to an email, phone or document with a code and a deadline. It cannot be reused once verified — a spent verification is not a standing pass.

    Body
    IssueVerificationRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/verifications/{challenge}/verifyRequires iam:ciam:verify

    Verify a challenge with a presented code

    Accepts the right code before the deadline and refuses a wrong code, an expired challenge, or a second attempt on a spent one.

    Body
    VerifyChallengeRequest
    Parameters (3)
    • challenge · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.

credential 5

  • GET/v1/iam/api-keysRequires iam:credential:list

    List API keys in the tenant

    Parameters (2)
    • principal · query — Only keys held by this principal URN. What an offboarding sweep asks before it revokes.
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/api-keysRequires iam:credential:create

    Mint an API key, returning the secret exactly once

    Body
    ApiKeyRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • DELETE/v1/iam/api-keys/{id}Requires iam:credential:revoke

    Revoke an API key

    Parameters (4)
    • id · path · required
    • reason · query — Recorded on the credential. Defaults to a generic administrator note.
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/api-keys/{id}/rotateRequires iam:credential:rotate

    Replace an API key, leaving the old one valid for a grace window

    The grace window is what lets a deploy pick up the new key without an outage in between.

    Body
    RotateApiKeyRequest
    Parameters (3)
    • id · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/me/api-keysRequires iam:credential:list_own

    List your own API keys

    Prefixes and expiries, never secrets. A secret is returned once, at issue.

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.

customer_user 6

  • GET/v1/iam/customer-usersRequires platform:customer_user:read

    List one customer’s users, as metadata

    Platform tenant only. Name, email, state, source and sign-in times — never attributes or credentials.

    Parameters (6)
    • tenant · query · required — The customer tenant. Required.
    • search · query — Substring match on username, display name and email.
    • state · query — pending, active, suspended or deprovisioned.
    • cursor · query — Opaque cursor from the previous page.
    • limit · query — Page size, at most 200. Defaults to 50.
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • GET/v1/iam/customer-users/{tenant}/{username}Requires platform:customer_user:read

    One customer user, with the kinds of factor they have enrolled

    Factor kinds and when each was added, so support can see why a sign-in fails. Never the factor itself.

    Parameters (3)
    • tenant · path · required
    • username · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/customer-users/{tenant}/{username}/reactivateRequires platform:customer_user:manage

    Reactivate a suspended customer user

    Body
    CustomerUserActionRequest
    Parameters (4)
    • tenant · path · required
    • username · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/customer-users/{tenant}/{username}/require-passkeyRequires platform:customer_user:manage

    Make a customer user register a new passkey at their next sign-in

    The recovery path for somebody who has lost their key: nothing is removed, and the next sign-in asks for a new one.

    Body
    CustomerUserActionRequest
    Parameters (4)
    • tenant · path · required
    • username · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/customer-users/{tenant}/{username}/sign-out-everywhereRequires platform:customer_user:manage

    Revoke every session a customer user holds

    Body
    CustomerUserActionRequest
    Parameters (4)
    • tenant · path · required
    • username · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/customer-users/{tenant}/{username}/suspendRequires platform:customer_user:manage

    Suspend a customer’s user, revoking their sessions and credentials

    Body
    CustomerUserActionRequest
    Parameters (4)
    • tenant · path · required
    • username · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.

delegation 7

  • GET/v1/iam/delegationsRequires iam:delegation:read

    List the delegation grants this tenant has opened

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/delegationsRequires iam:delegation:configure

    Grant an MSP delegated administration of this tenant

    Names the MSP tenant, the exact MSP principals, the action prefixes they may use, and why. Pausing the grant closes every access window it opened.

    Body
    DelegationGrantRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • PATCH/v1/iam/delegations/{grant}Requires iam:delegation:configure

    Pause or resume a delegation grant

    Pausing closes every access window the grant opened.

    Body
    DelegationUpdateRequest
    Parameters (3)
    • grant · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/delegations/{grant}/accessRequires iam:delegation:access

    Open a time-boxed delegated access window into a client tenant

    Every check runs on every open: the grant names your tenant and you, it is enabled and unexpired, and your account in the MSP tenant is active. The window lasts at most eight hours and never outlives the grant.

    Parameters (3)
    • grant · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/delegations/access-windowsRequires iam:delegation:read

    The delegated access windows open in this tenant right now

    No unmanaged cross-client access is a list the client can read, not a promise.

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/delegations/access-windows/{window}/revokeRequires iam:delegation:configure

    End one delegated access window now

    Parameters (3)
    • window · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/delegations/acting-onRequires iam:delegation:read

    The client tenants the calling MSP principal may act for

    Read from the MSP tenant’s own mirror records; a grant the client paused or let expire does not appear.

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.

device 13

  • GET/v1/iam/device-access-policyRequires iam:device:read

    Read the managed-device access policy

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/device-access-policyRequires iam:device:configure

    Set the managed-device access policy

    One rule per resource sensitivity, stating whether a device must be managed and compliant. This is what turns a personal laptop away from the crown jewels while letting a managed, healthy device through.

    Body
    DeviceAccessPolicyRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/device-integrationsRequires iam:device:read

    List this tenant’s MDM/EDR integrations

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/device-integrationsRequires iam:device:configure

    Register an MDM or EDR integration

    A connection to the system of record for device management (Intune, Jamf, Kandji, Workspace ONE) or endpoint protection (CrowdStrike, SentinelOne, Defender). A synced posture is attributed to the integration it came from.

    Body
    RegisterIntegrationRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/devicesRequires iam:device:read

    List this tenant’s enrolled devices

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/devicesRequires iam:device:enrol

    Enrol a device to a principal

    Ties a device to its owner and records whether it is corporate-managed or personal. The device proves its identity with a client certificate, not a self-asserted name.

    Body
    EnrolDeviceRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/devices/{device}/evaluateRequires iam:device:read

    Decide whether a device may reach a resource of a sensitivity

    Folds device trust into an ABAC decision: returns allowed plus, when refused, the reasons — the same reasons the user needs to know what to fix. With no policy set, access is allowed; device trust is opt-in per tenant.

    Body
    EvaluateDeviceAccessRequest
    Parameters (3)
    • device · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/devices/{device}/postureRequires iam:device:report

    Report a device’s posture signals

    The MDM/EDR reporter posts the current signals — encryption, patch level, EDR, screen lock, jailbreak. Compliance is computed from these on demand, so a device that drifts out is treated as such at the next check.

    Body
    ReportPostureRequest
    Parameters (3)
    • device · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/network-zonesRequires iam:device:read

    List this tenant’s network zones

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/network-zonesRequires iam:device:configure

    Create or replace a network zone

    A named set of CIDR ranges and how far they are trusted. A request’s source address resolves to a zone, which becomes an attribute ABAC reads — turning "only from a trusted network" into a rule rather than a firewall no one can see into.

    Body
    NetworkZoneRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/published-appsRequires iam:device:read

    List this tenant’s published apps

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/published-appsRequires iam:device:configure

    Publish an internal app through the ZTNA proxy

    Makes an internal app reachable without a VPN, on conditions: a resource sensitivity the device policy reads and, optionally, a minimum network-zone trust. Every request is evaluated on its own — there is no inside.

    Body
    PublishAppRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/published-apps/{app}/reachRequires iam:device:read

    Decide whether a device on a network may reach a published app

    The proxy calls this per request: it resolves the source address to a network zone and combines device trust with zone trust, with no implicit inside. Returns allowed plus the reasons when refused — whether to fix the device or get on a better network.

    Body
    ReachAppRequest
    Parameters (3)
    • app · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.

directory 6

  • GET/v1/iam/attribute-schemaRequires iam:directory:read

    Read the attributes this directory accepts

    What a bulk import may set, what policy may test, and what a user may edit about themselves — all three are read from here rather than agreed by convention.

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • PUT/v1/iam/attribute-schema/{name}Requires iam:directory:configure

    Declare or replace one directory attribute

    The two fields that matter most are `self_service_editable` and `policy_visible`: an attribute a user may edit and the decision point may read is a privilege escalation waiting to be found.

    Body
    AttributeDefinition
    Parameters (3)
    • name · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/ca/rootRequires iam:directory:read

    The workload CA root certificate

    What a workload needs to verify the certificate of another workload. Public by nature — a root certificate is meant to be distributed — but read through the directory permission so the request is audited like any other.

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • GET/v1/iam/realmRequires iam:directory:read

    Read session and sign-in policy for the tenant

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • PUT/v1/iam/realmRequires iam:directory:configure

    Set session and sign-in policy for the tenant

    `allow_weak_second_factors` is the one field here that lowers a security floor, and it is annotated on the audit event for exactly that reason.

    Body
    RealmConfig
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/tenants/{tenant}/provisionRequires iam:directory:provision

    Create a new company’s sign-in realm and first administrator

    Self-service sign-up (A5): creates the realm named after the tenant, a public PKCE client per customer console stamping a fixed `tenant` claim, and the first user with no password. Keycloak emails them a link, valid for three days, to verify the address and set a password and authenticator or register a passkey. Idempotent. Platform tenant only.

    Body
    ProvisionCompanyRequest
    Parameters (3)
    • tenant · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.

factor 9

  • GET/v1/iam/me/factorsRequires iam:factor:list_own

    List your own enrolled second factors

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/me/factorsRequires iam:factor:enrol_own

    Start enrolling a second factor on your own account

    Body
    EnrolFactorRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • DELETE/v1/iam/me/factors/{id}Requires iam:factor:remove_own

    Remove a second factor from your own account

    Parameters (3)
    • id · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/me/push/challengesRequires iam:factor:challenge_own

    Send a number-matching push challenge to your phone

    Returns the number the login screen displays. The phone receives the challenge id and three options — never the answer — and answers by signing the number the user tapped.

    Body
    BeginPushChallengeRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/me/push/challenges/{id}Requires iam:factor:challenge_own

    Read a push challenge’s status

    Parameters (2)
    • id · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/me/push/challenges/{id}/answerRequires iam:factor:challenge_own

    Answer a push challenge with the tapped number and the device signature

    Body
    AnswerPushChallengeRequest
    Parameters (3)
    • id · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/me/push/devicesRequires iam:factor:list_own

    List your own enrolled push devices

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/me/push/devicesRequires iam:factor:enrol_own

    Enrol a phone for push MFA with number matching

    Body
    EnrolPushDeviceRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • DELETE/v1/iam/me/push/devices/{id}Requires iam:factor:remove_own

    Remove one of your push devices

    Parameters (3)
    • id · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.

federation 14

  • GET/v1/iam/directories/ldapRequires iam:federation:read

    List the LDAP and Active Directory directories this tenant reads people from

    The bind credential is never returned.

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • DELETE/v1/iam/directories/ldap/{name}Requires iam:federation:configure

    Disconnect a directory

    The people imported from it are removed from the realm with it: their accounts were the directory’s, and it is no longer there to vouch for them.

    Parameters (3)
    • name · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • PUT/v1/iam/directories/ldap/{name}Requires iam:federation:configure

    Connect or replace an LDAP or Active Directory directory

    Read-only federation: people sign in with their directory password, checked by binding to the directory, and nothing is written back. The bind is tried before anything is saved; a directory that refuses it answers 422. Leave `bind_credential` out on a replace to keep the stored one.

    Body
    LdapDirectoryConfig
    Parameters (3)
    • name · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/directories/ldap/{name}/syncRequires iam:federation:configure

    Pull people from a directory now

    `mode: full` pulls everyone; `changed` (the default) only who changed since the last sync. The scheduled sync runs the `changed` kind every `sync_interval_seconds`.

    Body
    LdapSyncRequest
    Parameters (3)
    • name · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/hr/connectionsRequires iam:federation:read

    List this tenant’s HR connections

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/hr/connectionsRequires iam:federation:configure

    Connect an HR system (Workday, SuccessFactors, BambooHR, Personio, HiBob, ADP)

    The credential stays behind a reference resolved by the deployment; this record holds where to call and how often, never the secret.

    Body
    CreateHrConnectionRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • PATCH/v1/iam/hr/connections/{id}Requires iam:federation:configure

    Pause, resume or re-cadence an HR connection

    Body
    UpdateHrConnectionRequest
    Parameters (3)
    • id · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/hr/connections/{id}/syncRequires iam:federation:configure

    Run a sync from this HR connection now

    A delta run reads what changed since the watermark; a full run reads everything and reconciles, flagging principals this source manages whom the feed no longer mentions. A dry run reports what would change and touches nothing. Failures are recorded per record rather than aborting the run, and the run is kept as a reconciliation report.

    Parameters (5)
    • id · path · required
    • dry_run · query — Set to `true` to report without writing.
    • full · query — Set to `true` for a full reconciliation read.
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/hr/sync-runsRequires iam:federation:read

    Reconciliation reports for HR sync runs, newest first

    Each report carries the steps, the per-record failures, the conflicts where an HR value overrode a locally managed principal, and the attributes the tenant schema declined.

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • GET/v1/iam/identity-providersRequires iam:federation:read

    List configured upstream identity providers

    Aliases, protocols and mappings. Client secrets are never returned.

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • DELETE/v1/iam/identity-providers/{alias}Requires iam:federation:configure

    Remove an upstream identity provider

    Deletes the realm’s federation to this provider. A user who signed in through it keeps their local principal; what goes is the ability to broker a new login.

    Parameters (3)
    • alias · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • PUT/v1/iam/identity-providers/{alias}Requires iam:federation:configure

    Register or replace an upstream identity provider

    `client_secret` is written through to the realm and never read back, so the audit event records the alias and the protocol and nothing else.

    Body
    IdentityProviderConfig
    Parameters (3)
    • alias · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/identity-providers/{alias}/saml-metadataRequires iam:federation:read

    Service-provider metadata for one upstream SAML provider

    What the customer’s identity provider imports to trust this tenant: the entity id and the ACS URL its assertions are posted to. Answers `application/xml`. Not found for a provider that is not SAML.

    Parameters (2)
    • alias · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • GET/v1/iam/saml/metadataRequires iam:federation:read

    This realm’s SAML identity-provider metadata

    The metadata a SAML application imports to sign people in through this tenant: the sign-in endpoint and the certificate assertions are signed with. Answers `application/xml`, not JSON, because the application expects the SAML metadata schema.

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.

group 4

  • GET/v1/iam/groupsRequires iam:group:list

    List groups, static and dynamic

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/groupsRequires iam:group:create

    Create a static or dynamic group

    Supplying a `rule` makes the group dynamic — membership is evaluated from attributes rather than assigned — and omitting one makes it static.

    Body
    CreateGroupRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • DELETE/v1/iam/groups/{group}/members/{principal}Requires iam:group:manage_members

    Remove a principal from a group

    Parameters (4)
    • group · path · required
    • principal · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • PUT/v1/iam/groups/{group}/members/{principal}Requires iam:group:manage_members

    Add a principal to a group

    An `expires_at` is what makes this a time-boxed elevation rather than a permanent grant.

    Body
    GroupMembershipRequest
    Parameters (4)
    • group · path · required
    • principal · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.

iga 26

  • GET/v1/iam/access-requestsRequires iam:iga:read

    List this tenant’s access requests, newest first

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/access-requestsRequires iam:iga:request

    Request access to an entitlement, with a justification

    The justification is the request’s reason for existing, not a note on it — an approver answers with it and an auditor reads it first, so a request without one is refused. The workflow says who approves and how: steps in order, together, or only when a condition holds, escalating when nobody acts in time.

    Body
    AccessRequestBody
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/access-requests/{request}/decideRequires iam:iga:approve

    Approve or reject an access request as one of its approvers

    Any approver may reject the whole request; it is approved only when every applicable step is. On approval the time-bound grant is minted in the same step, so an approved request without the access it approved cannot happen.

    Body
    DecideAccessRequestBody
    Parameters (3)
    • request · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/birthright-rulesRequires iam:iga:read

    List this tenant’s birthright rules

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/birthright-rulesRequires iam:iga:configure

    Define a birthright rule: what a role or attribute grants on joining

    The floor access a role implies — a new nurse opens the ward system on day one without a ticket. Anything beyond the birthright goes through a request.

    Body
    CreateBirthrightRuleRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/campaignsRequires iam:iga:read

    List this tenant’s access review campaigns

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/campaignsRequires iam:iga:configure

    Open an access review campaign, scoped to a manager, owner or role

    The scope decides who reviews — a review nobody is accountable for is a review nobody does. Every item starts undecided, and an item still undecided when the campaign closes is revoked, not kept.

    Body
    CreateCampaignRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/campaigns/{campaign}/certificationRequires iam:iga:read

    Export the certification evidence for a campaign

    What an auditor is handed: every item, its reviewer, the decision and when. A review whose result cannot be exported is, to an auditor, a review that did not happen.

    Parameters (2)
    • campaign · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/campaigns/{campaign}/closeRequires iam:iga:review

    Close a campaign, revoking every item nobody reviewed

    The fail-safe direction: an item nobody looked at loses its access, because access that persists because nobody reviewed it is the exact failure a review exists to catch. The grants are revoked in the same step the campaign closes.

    Parameters (3)
    • campaign · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/campaigns/{campaign}/reviewRequires iam:iga:review

    Record a keep-or-revoke decision on one item of a campaign

    Body
    ReviewItemRequest
    Parameters (3)
    • campaign · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/entitlementsRequires iam:iga:read

    List the cross-pillar entitlement catalog with its pillar coverage

    Returns the catalog and which pillars it actually covers, so a governance view shows the gap — a catalog that stops at three pillars is a leaver sweep that misses two — rather than discovering it during an incident.

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/entitlementsRequires iam:iga:configure

    Add one grantable thing to the cross-pillar entitlement catalog

    One list of every grantable thing across identity, data, video, cloud, agents and ops. A review, a segregation-of-duties rule and a leaver sweep are only as complete as this single catalog, which is why it is one list and not five.

    Body
    CreateEntitlementRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/grantsRequires iam:iga:read

    List this tenant’s time-bound access grants

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/grants/{grant}/renewRequires iam:iga:request

    Renew a time-bound grant, extending it a fresh window

    A renewal extends a live grant from now, not from its old expiry, so it grants a fresh window rather than back-dating a lapsed one. A revoked or permanent grant cannot be renewed and the call is refused rather than silently doing nothing.

    Body
    RenewGrantBody
    Parameters (3)
    • grant · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/least-privilegeRequires iam:iga:read

    Least-privilege analytics: who holds unused access and how much

    An entitlement granted and never exercised is standing risk with no upside. Ranks principals by the fraction of their access that goes unused since the given instant, so a right-sizing conversation starts with who is furthest from least privilege.

    Parameters (2)
    • since · query — Access not used since this instant counts as idle.
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/lifecycle/joinerRequires iam:iga:configure

    Grant a joiner their role’s birthright on join

    A new hire gets the floor access their role implies without a ticket. Anything beyond it goes through a request.

    Body
    LifecycleFactsRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/lifecycle/leaverRequires iam:iga:approve

    Revoke every governance grant a leaver holds, across all pillars, in one run

    The headline: one sweep spans identity, data, video, cloud, agents and ops, because the grants all name entitlements in the one cross-pillar catalog. The plan’s pillars_reached is the proof of breadth. The wider reach — sessions, credentials, downstream SaaS — is the platform offboarding sweep.

    Body
    LeaverRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/lifecycle/moverRequires iam:iga:configure

    Recompute a mover’s birthright and apply the difference

    A move is a replacement, not an accumulation: the new position’s access is granted and the old position’s birthright is revoked, so a long-tenured employee does not end up with the run of the building.

    Body
    LifecycleFactsRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/orphansRequires iam:iga:read

    Grants and credentials whose owner is gone or deprovisioned

    Access with nobody accountable for it — the residue of an incomplete leaver sweep. Reported, never deleted: an orphaned account might still be load-bearing, and destroying it is a human’s call.

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • GET/v1/iam/role-miningRequires iam:iga:read

    Suggest roles from the entitlement sets many principals already share

    When many people hold the same set of entitlements, that set is a role whether or not anyone named it. A suggestion an administrator confirms, never a role the miner creates on its own.

    Parameters (2)
    • min · query — Minimum principals sharing a set to suggest it. Defaults to 2.
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • GET/v1/iam/rolesRequires iam:iga:read

    List this tenant’s role catalog

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/rolesRequires iam:iga:configure

    Define a role: a named bundle of permissions with an owner

    The owner is required, not decorative — a role nobody owns is a role nobody reviews, and "who signs off that this bundle is still right" is the first question a review campaign asks.

    Body
    CreateRoleRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/sod-exceptionsRequires iam:iga:configure

    Grant a time-bounded exception to an SoD rule for one principal

    Allowed only with an expiry — a permanent exception is the rule quietly repealed, and the exception that outlives its reason is the one an auditor finds years later.

    Body
    SodExceptionRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/sod-rulesRequires iam:iga:read

    List this tenant’s segregation-of-duties rules

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/sod-rulesRequires iam:iga:configure

    Define a segregation-of-duties rule: two entitlements one person must not hold

    The two sides are entitlement URNs from the one catalog, so a rule can pair things across pillars — the cross-pillar conflict a per-pillar model cannot even express.

    Body
    CreateSodRuleRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/sod-violationsRequires iam:iga:read

    Every principal holding both sides of an SoD rule, across live grants

    Excepted violations are reported and flagged, not hidden — a suppressed violation is one nobody re-reviews when its exception lapses.

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.

itdr 8

  • GET/v1/iam/detectionsRequires iam:itdr:read

    List a principal’s detections, newest first

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/detectionsRequires iam:itdr:detect

    Raise an identity threat detection

    A known thing from the detection library — impossible travel, privilege escalation, mass entitlement change — against a principal. Severity defaults to the kind’s base but a detector may raise it.

    Body
    RaiseDetectionRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/response-playbooksRequires iam:itdr:configure

    Create or replace a response playbook

    Maps a risk band to the response it warrants — force re-auth, step up, notify, open a case, suspend, disable. Kept as data so it is edited, reviewed and tested.

    Body
    SavePlaybookRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/response-playbooks/{playbook}/respondRequires iam:itdr:respond

    Resolve the actions a playbook orders for a principal’s risk

    Scores the principal, bands the risk, and reads the playbook’s rule for that band — the responder runs the result.

    Body
    RespondRequest
    Parameters (3)
    • playbook · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/riskRequires iam:itdr:read

    Read a principal’s live risk score and band

    The decaying sum of the principal’s recent detections as of now — a spree today lights it up, the same spree last month has faded.

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/risk/correlateRequires iam:itdr:read

    Correlate a principal’s identity risk with video and cloud events

    Joins the principal’s identity risk to the video and cloud event refs the caller has gathered — one story across three pillars instead of three consoles.

    Body
    CorrelateRiskRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/soc-sinksRequires iam:itdr:read

    List this tenant’s SOC sinks

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/soc-sinksRequires iam:itdr:configure

    Configure a SOC sink

    A SIEM stream, webhook or ticketing target detections are emitted to. The transport is the platform’s; this is the identity-side config.

    Body
    SaveSocSinkRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.

lifecycle 20

  • POST/v1/iam/credential-handoffs/{handoff}/readRequires iam:lifecycle:read

    Consume a single-read credential handoff

    Body
    CredentialHandoffRead
    Parameters (3)
    • handoff · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/lifecycle-connectionsRequires iam:lifecycle:read

    List Lifecycle provider metadata

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/lifecycle-connectionsRequires iam:lifecycle:configure

    Register Lifecycle provider metadata

    Body
    LifecycleConnectionRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/lifecycle-providers/healthRequires iam:lifecycle:read

    Read Lifecycle provider health and simulator status

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • GET/v1/iam/lifecycle-requestsRequires iam:lifecycle:read

    List Lifecycle requests and execution state

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/lifecycle-requestsRequires iam:lifecycle:request

    Create a governed Lifecycle request

    Body
    LifecycleRequestCreate
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/lifecycle-requests/{request}Requires iam:lifecycle:read

    Read a Lifecycle request and its history

    Parameters (2)
    • request · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/lifecycle-requests/{request}/compensateRequires iam:lifecycle:execute

    Compensate completed steps of a failed Lifecycle request

    Parameters (3)
    • request · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/lifecycle-requests/{request}/credential-handoffRequires iam:lifecycle:execute

    Create a single-read first-day credential handoff

    Body
    CredentialHandoffCreate
    Parameters (3)
    • request · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/lifecycle-requests/{request}/decideRequires iam:lifecycle:approve

    Approve or reject a Lifecycle request

    Body
    LifecycleDecisionRequest
    Parameters (3)
    • request · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/lifecycle-requests/{request}/executeRequires iam:lifecycle:execute

    Execute or retry an approved Lifecycle request

    Parameters (3)
    • request · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/lifecycle/cohortsRequires iam:lifecycle:read

    List lifecycle cohorts and their state

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/lifecycle/cohortsRequires iam:lifecycle:request

    Open one governed lifecycle action over a directory-selected cohort

    The member list is frozen at creation and capped; every member runs through the same named approvals and per-step execution records as a single request.

    Body
    LifecycleCohortRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/lifecycle/cohorts/{cohort}/decideRequires iam:lifecycle:approve

    Apply one approval decision to every member of a cohort

    Body
    LifecycleCohortDecisionRequest
    Parameters (3)
    • cohort · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/lifecycle/cohorts/{cohort}/executeRequires iam:lifecycle:execute

    Execute every approved member of a cohort

    A member that fails fails its own request with its own compensation path; the cohort reports partial rather than pretending unanimity.

    Parameters (3)
    • cohort · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/lifecycle/licence-insightRequires iam:lifecycle:read

    Licence holdings, cost and reclaim candidates per SKU

    Holdings are computed from Lifecycle’s own execution history; reclaim candidates are named with their reason — suspended, deprovisioned, or idle for ninety days.

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • GET/v1/iam/lifecycle/licence-ratesRequires iam:lifecycle:read

    List the licence rate card

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • PUT/v1/iam/lifecycle/licence-ratesRequires iam:lifecycle:configure

    Add or replace a licence rate card entry

    Licence insight costs come from the tenant’s own rate card — a number we invented would be a number nobody can check.

    Body
    LicenceRateRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/role-profilesRequires iam:lifecycle:read

    List Lifecycle role profiles

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/role-profilesRequires iam:lifecycle:configure

    Create a Lifecycle role profile

    Body
    LifecycleRoleProfileRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.

oauth_client 5

  • GET/v1/iam/oauth-clientsRequires iam:oauth_client:list

    List OAuth clients in the tenant

    Registration records only — a client’s secret is never returned.

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/oauth-clientsRequires iam:oauth_client:create

    Register an OAuth client

    A confidential client’s secret appears in this response and nowhere else — not in the audit context, not in a log line. Redirect URIs must be https, or http to a loopback address for a native app; a public client uses PKCE and may not hold client_credentials.

    Body
    CreateOAuthClientRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/oauth-clients/{clientId}Requires iam:oauth_client:read

    Read one OAuth client’s registration

    Parameters (2)
    • clientId · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/oauth-clients/{clientId}/revokeRequires iam:oauth_client:revoke

    Revoke an OAuth client

    The record stays — the audit trail for what the client could ask for survives it — but the Keycloak client is deleted, so the flows stop working.

    Body
    RevokeOAuthClientRequest
    Parameters (3)
    • clientId · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/oauth-clients/{clientId}/rotate-secretRequires iam:oauth_client:rotate

    Rotate an OAuth client’s secret

    Returns the new secret once. The previous one stops working immediately. A public client has no secret to rotate.

    Parameters (3)
    • clientId · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.

pam 18

  • GET/v1/iam/break-glassRequires iam:pam:read

    List this tenant’s break-glass accounts and their seal state

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/break-glass/{account}/openRequires iam:pam:break-glass

    Open a sealed break-glass account, requiring two approvers

    No one person can open it alone — the account one person can open in an emergency is the account they open when it suits them. Every open raises an alert and is recorded for review.

    Body
    OpenBreakGlassRequest
    Parameters (3)
    • account · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/command-filtersRequires iam:pam:read

    List this tenant’s command filters

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/command-filtersRequires iam:pam:configure

    Create or replace a command filter

    An ordered list of rules the broker consults before forwarding a command. Order is meaning: the first matching rule decides, so a narrow alert exception sits before the broad block it excepts.

    Body
    SaveCommandFilterRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/command-filters/{filter}/evaluateRequires iam:pam:read

    Evaluate a command against a filter before it runs

    Returns the decision — allow, alert or block — and the rule that decided. A block means the command is refused at the broker and never reaches the target.

    Body
    EvaluateCommandRequest
    Parameters (3)
    • filter · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/elevationsRequires iam:pam:read

    List this tenant’s JIT elevations, newest first

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/elevationsRequires iam:pam:request

    Request just-in-time elevation to a role for a window

    Privilege with a stopwatch: approved once, it expires on its own, so it cannot outlive the work — there is no "forgot to hand it back".

    Body
    RequestElevationRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/elevations/{elevation}/approveRequires iam:pam:approve

    Approve a JIT elevation, starting its window

    The clock starts at approval, not at the request, so the window is the time the operator actually has the access.

    Parameters (3)
    • elevation · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/sessionsRequires iam:pam:read

    List this tenant’s brokered sessions, newest first

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/sessionsRequires iam:pam:session

    Open a brokered session to a host, cluster or database

    The broker mints a short-lived credential the target trusts — an SSH certificate, an RDP ticket, a per-session kubeconfig, an ephemeral database role — that expires on its own. Nothing standing is left on the target, and a database session is credential-less: the injected role is the access, no password is handed back.

    Body
    OpenSessionRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/sessions/{session}/closeRequires iam:pam:session

    Close a brokered session, killing its credential now

    The ephemeral credential is dead from the close rather than at its natural expiry — the operator handed the session back, so the access ends with the hand-back.

    Parameters (3)
    • session · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/sessions/{session}/eventsRequires iam:pam:record

    Append a captured event to a session recording

    The capture agent posts keystrokes, resolved commands and video frame markers as the session runs. Each carries an offset from the session open, so a later search is a seek into the video, not just a log line.

    Body
    RecordEventRequest
    Parameters (3)
    • session · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/sessions/{session}/recordingRequires iam:pam:read

    Play back or search a session recording

    Returns the ordered event stream for playback. Pass ?q= to search: the response then carries only the matching events and their offsets, the moments a reviewer should watch.

    Parameters (2)
    • session · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/vault/dynamic-secretsRequires iam:pam:checkout

    Mint a dynamic secret leased for a short window

    No stored shared secret: a fresh credential leased for a window and dead after. The credential that leaks is dead in minutes and belonged to nobody else.

    Body
    MintDynamicSecretRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/vault/secretsRequires iam:pam:read

    List vault secrets as metadata, never their values

    Names, systems, versions and checkout state — who holds the root password right now, and why. The value is never in the list.

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/vault/secretsRequires iam:pam:configure

    Store a privileged secret in the vault

    The vault holds another system’s privileged secret. Only metadata is stored here; the value goes to the encrypted store and is never returned by a listing — getting it is a recorded checkout.

    Body
    StoreSecretRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/vault/secrets/{secret}/checkinRequires iam:pam:checkout

    Check a secret back in, rotating it

    Check-in rotates the secret, so the copy the borrower walked away with is dead the moment they hand the checkout back.

    Parameters (3)
    • secret · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/vault/secrets/{secret}/checkoutRequires iam:pam:checkout

    Check a secret out to yourself, with a reason

    A recorded event with a holder and a reason, because "who has the root password right now, and why" is the question the vault exists to answer.

    Body
    CheckoutSecretRequest
    Parameters (3)
    • secret · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.

scim 11

  • GET/scim/v2/GroupsRequires iam:scim:read

    List groups by SCIM

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • GET/scim/v2/Groups/{id}Requires iam:scim:read

    Fetch one group by SCIM

    Parameters (2)
    • id · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • PATCH/scim/v2/Groups/{id}Requires iam:scim:write

    Patch a group’s membership by SCIM provisioning

    Body
    ScimPatchOp
    Parameters (3)
    • id · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/scim/v2/UsersRequires iam:scim:read

    List users by SCIM

    RFC 7644 paging, which counts from one rather than zero. Errors on every SCIM route answer in SCIM’s error format rather than RFC 7807, because a provisioning agent treats anything else as a transport failure and retries for ever.

    Parameters (4)
    • filter · query — SCIM filter expression, such as `userName eq "ada"`.
    • startIndex · query — One-based index of the first result. Defaults to 1.
    • count · query — Page size. Defaults to 100.
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/scim/v2/UsersRequires iam:scim:write

    Create a user by SCIM provisioning

    Idempotent on `externalId`, so a provider replaying a create gets the existing user and a 200 rather than a duplicate.

    Body
    ScimUser
    Parameters (3)
    • source · query — Which provisioning agent. Defaults to `scim`.
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • DELETE/scim/v2/Users/{id}Requires iam:scim:write

    Deprovision a user by SCIM

    Most providers send a patch setting `active` to false instead; this is the harder form and is honoured as a deprovision rather than a delete, because the audit chain outlives the account.

    Parameters (4)
    • id · path · required
    • source · query — Which provisioning agent. Defaults to `scim`.
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/scim/v2/Users/{id}Requires iam:scim:read

    Fetch one user by SCIM

    The id is a percent-encoded URN. One belonging to another tenant gets a 404 rather than a 403, because confirming that it exists is itself a disclosure.

    Parameters (2)
    • id · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • PATCH/scim/v2/Users/{id}Requires iam:scim:write

    Patch a user by SCIM provisioning

    `active: false` arriving as a replace operation is how most identity providers say a person has left, which makes this the most consequential body in the identity plane.

    Body
    ScimPatchOp
    Parameters (4)
    • id · path · required
    • source · query — Which provisioning agent. Defaults to `scim`.
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • PUT/scim/v2/Users/{id}Requires iam:scim:write

    Replace a user by SCIM provisioning

    Body
    ScimUser
    Parameters (4)
    • id · path · required
    • source · query — Which provisioning agent. Defaults to `scim`.
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/scim-targetsRequires iam:scim:read

    List the downstream systems this tenant pushes users to

    Names only, never credentials. An offboarding sweep reads this to know which systems it must ask to deactivate the leaver, so that a target nobody told it about is a gap in the configuration rather than a gap in the sweep.

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/scim-targets/{name}/syncRequires iam:scim:write

    Push this tenant’s users to a downstream SCIM target

    A dry run reports what would change and touches nothing. Failures are listed per user rather than aborting the run, because one rejected account should not leave the other four hundred unsynchronised.

    Parameters (4)
    • name · path · required
    • dry_run · query — Set to `true` to report without writing.
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.

service_account 2

  • POST/v1/iam/service-accountsRequires iam:service_account:create

    Create a service account with a client secret

    The secret appears in this response and nowhere else — not in the audit context, not in a log line.

    Body
    CreateServiceAccountRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/service-accounts/{username}/rotate-secretRequires iam:service_account:rotate

    Rotate a service account’s client secret

    Returns the new secret once. The previous one stops working immediately.

    Parameters (3)
    • username · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.

session 3

  • GET/v1/iam/me/sessionsRequires iam:session:list_own

    List your own sessions

    Device, address and assurance level for each, which is what lets a person recognise the one they do not recognise.

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • DELETE/v1/iam/sessions/{id}Requires iam:session:revoke

    Revoke one session

    Parameters (4)
    • id · path · required
    • reason · query — Recorded on the session.
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/users/{id}/sign-out-everywhereRequires iam:session:revoke_all

    Revoke every session a user holds

    The response carries the propagation time, because “signed out everywhere” that takes four minutes to reach the last service is not what an incident responder needs.

    Body
    SignOutRequest
    Parameters (3)
    • id · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.

tenant 1

  • GET/v1/iam/product-operationsRequires platform:tenant:read

    Read one customer’s allow-listed product operations summary

    Platform tenant only. Counts, states, usage and provider health; no customer content or verification payloads.

    Parameters (2)
    • tenant · query · required — Customer tenant key
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.

user 11

  • GET/v1/iam/bulk/usersRequires iam:user:list

    Export the directory as CSV

    Round-trippable through the import: the columns this writes are the columns that endpoint reads, so an administrator can export, edit in a spreadsheet, and apply.

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/bulk/usersRequires iam:user:create

    Apply a user import

    Planned first and refused as a whole if any row is invalid, so the operator fixes a spreadsheet rather than reconciling a partial run.

    Parameters (3)
    • source · query — Recorded on every principal created, so an import can be told from a SCIM push later.
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/bulk/users/planRequires iam:user:create

    Validate a user import without writing anything

    Returns a row-by-row verdict over the whole file. The two-step exists because a partially applied import of four thousand users is worse than a refused one: the operator has no way to tell what landed.

    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • PATCH/v1/iam/me/profileRequires iam:user:update_self

    Change attributes on your own profile

    Only attributes the tenant’s schema marks self-service editable are accepted, and the rest are refused rather than ignored: a user who thinks they changed their clearance and did not is worse off than one who was told no.

    Body
    SelfProfilePatch
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/usersRequires iam:user:list

    List users

    Parameters (6)
    • state · query — pending, active, suspended or deprovisioned.
    • search · query — Substring match on username, display name and email.
    • ou · query — Organisational unit path; includes everything below it.
    • cursor · query — Opaque cursor from the previous page.
    • limit · query — Page size. Defaults to 50.
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/usersRequires iam:user:create

    Create a user in the tenant directory

    Body
    CreateUserRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/users/{id}Requires iam:user:read

    Fetch one user

    `me` in place of the id resolves to the caller, and then goes through exactly the same decision as any other principal — so “can a user read their own profile” is a policy question with an auditable answer rather than a special case.

    Parameters (2)
    • id · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • PATCH/v1/iam/users/{id}Requires iam:user:update

    Change a user’s profile fields

    An absent field is left alone, which is not the same as one set to null: a patch that omits a field must not be indistinguishable from one that clears it.

    Body
    UpdateUserRequest
    Parameters (3)
    • id · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/users/{id}/groupsRequires iam:user:read

    Effective group membership for one user

    Includes memberships inherited from parent groups and memberships a dynamic rule produces, because those are the ones an access review would otherwise miss.

    Parameters (2)
    • id · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/users/{id}/lifecycleRequires iam:user:lifecycle

    Move a user between pending, active, suspended and deprovisioned

    Suspending and deprovisioning revoke sessions and credentials as part of the same transition, and the response says how many of each — a state change that left a live session behind would be a suspension in name only.

    Body
    LifecycleRequest
    Parameters (3)
    • id · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/users/{id}/require-passkeyRequires iam:user:update

    Require the user to enrol a passkey at next sign-in

    Parameters (3)
    • id · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.

verify 35

  • GET/v1/iam/verify/applicantsRequires iam:verify:read

    List Verify applicant metadata

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/verify/applicantsRequires iam:verify:manage

    Create a Verify applicant metadata record

    Body
    VerifyApplicantRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/verify/attemptsRequires iam:verify:read

    List Verify attempts and review state

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/verify/attemptsRequires iam:verify:manage

    Start a Verify attempt

    Body
    VerifyAttemptRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/verify/attempts/{attempt}Requires iam:verify:read

    Read a Verify attempt timeline

    Parameters (2)
    • attempt · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/verify/attempts/{attempt}/checks/{kind}Requires iam:verify:manage

    Run one Verify provider check

    Body
    VerifyCheckRequest
    Parameters (4)
    • attempt · path · required
    • kind · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/verify/attempts/{attempt}/closeRequires iam:verify:manage

    Close an unbillable Verify attempt

    Body
    VerifyCloseRequest
    Parameters (3)
    • attempt · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/verify/attempts/{attempt}/completeRequires iam:verify:manage

    Complete and meter a processed Verify attempt

    Parameters (3)
    • attempt · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/verify/attempts/{attempt}/consentRequires iam:verify:manage

    Record purpose-specific Verify consent

    Body
    VerifyConsentRequest
    Parameters (3)
    • attempt · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/verify/attempts/{attempt}/deleteRequires iam:verify:manage

    Delete expired evidence and return deletion evidence

    Parameters (3)
    • attempt · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/verify/attempts/{attempt}/payloadsRequires iam:verify:manage

    Register synthetic evidence in the regional boundary

    Body
    VerifyPayloadRequest
    Parameters (3)
    • attempt · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/verify/attempts/{attempt}/reviewRequires iam:verify:review

    Record a reasoned Verify review decision

    Body
    VerifyReviewRequest
    Parameters (3)
    • attempt · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/verify/attempts/{attempt}/riskRequires iam:verify:read

    Read explainable Verify risk reasons

    Parameters (2)
    • attempt · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • GET/v1/iam/verify/flowsRequires iam:verify:read

    List Verify flow versions

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/verify/flowsRequires iam:verify:manage

    Publish a versioned Verify flow

    Body
    VerifyFlowRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/verify/monitoring/alertsRequires iam:verify:read

    List monitoring alerts, newest first

    Parameters (2)
    • state · query — Filter to `open` or `resolved`.
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/verify/monitoring/alerts/{alert}/resolveRequires iam:verify:review

    Resolve an alert with words

    A resolution without reasons is not one.

    Body
    MonitoringAlertResolveRequest
    Parameters (3)
    • alert · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/verify/monitoring/evaluateRequires iam:verify:manage

    Evaluate one subscription now; a non-passing answer opens an alert

    Body
    MonitoringEvaluateRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/verify/monitoring/providers/healthRequires iam:verify:read

    Read monitoring provider health and simulator status

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • GET/v1/iam/verify/monitoring/subscriptionsRequires iam:verify:read

    List monitoring subscriptions

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/verify/monitoring/subscriptionsRequires iam:verify:manage

    Open a standing fraud/AML watch over an applicant

    Ongoing duty, not a one-time check: the subscription re-screens on its cadence and every non-passing evaluation opens an alert.

    Body
    MonitoringSubscriptionRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • PATCH/v1/iam/verify/monitoring/subscriptions/{subscription}Requires iam:verify:manage

    Pause or resume a monitoring subscription

    Body
    MonitoringUpdateRequest
    Parameters (3)
    • subscription · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/verify/providers/healthRequires iam:verify:read

    Read Verify provider health and simulator status

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • GET/v1/iam/verify/reporting/profilesRequires iam:verify:read

    List reporting profiles

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • PUT/v1/iam/verify/reporting/profilesRequires iam:verify:manage

    Declare or replace the reporting profile for a jurisdiction

    Jurisdiction is declared, not inferred: the profile names the regulator, currency and Travel Rule threshold.

    Body
    ReportingProfileRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/verify/reporting/providers/healthRequires iam:verify:read

    Read Travel Rule provider health and simulator status

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • GET/v1/iam/verify/reporting/reportsRequires iam:verify:read

    List regulated reports and their filing state

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/verify/reporting/reportsRequires iam:verify:manage

    Compile a regulated report from the period’s records

    Reports are compiled from transfer and alert records, never inferred from KYC outcomes.

    Body
    RegulatedReportRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/verify/reporting/reports/{report}/fileRequires iam:verify:manage

    File a draft report; filing names its filer and happens once

    Parameters (3)
    • report · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/verify/reusable-identitiesRequires iam:verify:read

    List reusable identities and their state

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/verify/reusable-identitiesRequires iam:verify:manage

    Issue a reusable identity from a completed, approved attempt

    One identity per source attempt; expiry is the applicant retention horizon capped at one year.

    Body
    ReusableIdentityIssueRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/verify/reusable-identities/{identity}/revokeRequires iam:verify:manage

    Revoke a reusable identity; attempts already satisfied stand

    Parameters (3)
    • identity · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/verify/travel-rule/transfersRequires iam:verify:read

    List Travel Rule transfers and their state

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/verify/travel-rule/transfersRequires iam:verify:manage

    Record a transfer and send Travel Rule data when the threshold is met

    Below the threshold the exemption itself is on the record; at or above it, originator, beneficiary and counterparty are required.

    Body
    TravelRuleTransferRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/verify/travel-rule/transfers/{transfer}/acknowledgeRequires iam:verify:manage

    Record the counterparty’s acknowledgement of a sent transfer

    Parameters (3)
    • transfer · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.

workload_identity 1

  • POST/v1/iam/workloads/{name}/certificateRequires iam:workload_identity:issue

    Sign a workload certificate request

    Returns a short-lived SPIFFE certificate. The private key never leaves the workload, which is the whole point of taking a CSR rather than generating a keypair here.

    Body
    WorkloadCertificateRequest
    Parameters (3)
    • name · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.

workplace 37

  • GET/v1/iam/workplace/assistive/policyRequires iam:workplace:read

    Read the assistive policy

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • PUT/v1/iam/workplace/assistive/policyRequires iam:workplace:manage

    Set the assistive cage: allowed actions, device cap, kill switch

    Switching it off kills every proposed and approved run with it.

    Body
    AssistivePolicyRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/workplace/assistive/runsRequires iam:workplace:read

    List assistive runs, their simulations and their outcomes

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/workplace/assistive/runsRequires iam:workplace:manage

    Propose an assistive run; every step is simulated first

    Body
    AssistiveRunRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/workplace/assistive/runs/{run}/decideRequires iam:workplace:approve

    Approve or reject a proposed run; the approver is never the proposer

    Body
    AssistiveDecisionRequest
    Parameters (3)
    • run · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/workplace/assistive/runs/{run}/executeRequires iam:workplace:manage

    Execute the approved plan; the kill switch is re-checked first

    Parameters (3)
    • run · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/workplace/baselinesRequires iam:workplace:read

    List Workplace policy baselines

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/workplace/baselinesRequires iam:workplace:manage

    Publish a Workplace policy baseline

    Body
    WorkplaceBaselineRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/workplace/deploymentsRequires iam:workplace:read

    List Workplace deployment results

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • GET/v1/iam/workplace/devicesRequires iam:workplace:read

    List the Workplace managed fleet

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/workplace/devicesRequires iam:workplace:manage

    Register or update a stable managed device

    Body
    WorkplaceDeviceRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/workplace/devices/{device}/assignRequires iam:workplace:manage

    Assign a device to a ring and baseline

    Body
    WorkplaceAssignRequest
    Parameters (3)
    • device · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/workplace/devices/{device}/deploymentsRequires iam:workplace:manage

    Execute an idempotent Workplace deployment

    Body
    WorkplaceDeploymentRequest
    Parameters (3)
    • device · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/workplace/devices/{device}/driftRequires iam:workplace:read

    Compare observed device settings with its baseline

    Parameters (2)
    • device · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/workplace/devices/{device}/laps/rotateRequires iam:workplace:manage

    Rotate the device’s local admin password; the record keeps the digest only

    Body
    LapsRotateRequest
    Parameters (3)
    • device · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/workplace/devices/{device}/packages/{package}/deployRequires iam:workplace:manage

    Deploy a published package to a device

    Parameters (4)
    • device · path · required
    • package · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/workplace/devices/{device}/packages/{package}/rollbackRequires iam:workplace:manage

    Roll a device back to the package’s named rollback target

    Parameters (4)
    • device · path · required
    • package · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/workplace/devices/{device}/remediateRequires iam:workplace:manage

    Answer a device’s baseline drift with a baseline deployment

    A device in step with its baseline has nothing to remediate — a 409, not a no-op.

    Parameters (3)
    • device · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/workplace/devices/syncRequires iam:workplace:manage

    Synchronize inventory through the MDM port

    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/workplace/elevationsRequires iam:workplace:read

    List Workplace elevation requests and expiry

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/workplace/elevationsRequires iam:workplace:manage

    Request time-boxed endpoint elevation

    Body
    WorkplaceElevationRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/workplace/elevations/{elevation}/decideRequires iam:workplace:approve

    Approve or reject endpoint elevation

    Body
    WorkplaceElevationDecisionRequest
    Parameters (3)
    • elevation · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/workplace/elevations/{elevation}/revokeRequires iam:workplace:approve

    Revoke active endpoint elevation

    Parameters (3)
    • elevation · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/workplace/laps/{credential}/revealRequires iam:workplace:manage

    Reveal the current local admin password once, for a named purpose

    The reveal is written onto the record; afterwards the secret is gone from the boundary and the next reader rotates first.

    Body
    LapsRevealRequest
    Parameters (3)
    • credential · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/workplace/laps/dueRequires iam:workplace:read

    List LAPS credentials whose rotation cadence has elapsed

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • PUT/v1/iam/workplace/migration/itsmRequires iam:workplace:manage

    Configure the ITSM bridge migration waves publish cases to

    Body
    ItsmConnectionRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/workplace/migration/wavesRequires iam:workplace:read

    List migration waves and per-device outcomes

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/workplace/migration/wavesRequires iam:workplace:manage

    Create a migration wave over a frozen, inventory-checked device list

    Body
    MigrationWaveRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/workplace/migration/waves/{wave}/reconcileRequires iam:workplace:read

    Ticket reconciliation: the wave’s ITSM case, or why there is none

    Parameters (2)
    • wave · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/workplace/migration/waves/{wave}/rollbackRequires iam:workplace:manage

    Reclaim every device the wave enrolled, recorded the same way

    Parameters (3)
    • wave · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/workplace/migration/waves/{wave}/runRequires iam:workplace:manage

    Run a wave: per-device enrolment, partial over pretend, ITSM case attached

    Parameters (3)
    • wave · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/workplace/packagesRequires iam:workplace:read

    List application packages and their state

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/workplace/packagesRequires iam:workplace:manage

    Publish a reviewed application package

    A package is a source reference plus a SHA-256 digest; it publishes once per name and version and names its rollback target.

    Body
    AppPackageRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • POST/v1/iam/workplace/packages/{package}/retireRequires iam:workplace:manage

    Retire a package; a retired package cannot be deployed

    Parameters (3)
    • package · path · required
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
  • GET/v1/iam/workplace/providers/healthRequires iam:workplace:read

    Read Workplace MDM health and simulator status

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • GET/v1/iam/workplace/ringsRequires iam:workplace:read

    List Workplace rollout rings

    Parameters (1)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
  • POST/v1/iam/workplace/ringsRequires iam:workplace:manage

    Create an ordered Workplace rollout ring

    Body
    WorkplaceRingRequest
    Parameters (2)
    • X-Request-Id · header — Echoed on the response and recorded on the audit event.
    • Idempotency-Key · header — Makes a retry safe. A replay of the same key and body returns the stored response with Idempotency-Replayed: true; the same key with a different body is a 409.
ProjectX Identity · API reference · ProjectX