Replace the Actor's role set (REPLACE-semantics, idempotent)

Replaces every role currently bound to the Actor with the supplied set. The replacement is computed as a DIFF: only the roles being added are inserted and only the roles being dropped are deleted, so POST is idempotent — re-applying the same set is a DB no-op, and a role present in both sets keeps its original assignment timestamp and produces no audit event.

To ADD a role, POST the union of the current set and the new role; to drop one, POST the set without it (or use DELETE /actors/{actorId}/roles/{roleName}). A payload that shares roles with the current set is the normal case, not a conflict.

Validation: every role name must exist in the active catalog and must NOT carry the s2sOnly flag (defense-in-depth — S2S-internal scopes are rejected here even if a tenant-admin somehow obtains the assign scope).

When a replacement drops a role, the withdrawal takes effect at the Actor's next token mint — not immediately. An access token already issued to this Actor carries the withdrawn scope literally and stays valid until its natural expiry, bounded by JWT_EXPIRATION (default 900s). The client_credentials grant issues no refresh token (RFC 6749 §4.4.3), so the token cannot be extended — only re-minted from credentials, and a re-mint reads the role set fresh. Worst-case staleness is therefore one token lifetime; raising JWT_EXPIRATION widens that window linearly. To cut a machine identity off without waiting for expiry, suspend the Actor instead — that works through the effective-status gate, which is consulted on the Actor's next request rather than at its next mint.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Path Params
uuid
required
uuid
required
Body Params

Payload for replacing the user's roles. Valid values for roles include any of the following:

  • admin.assignRolesToApp
  • admin.assignRolesToHuman
  • admin.createAppCredential
  • admin.createApplication
  • admin.createHumanUser
  • admin.createInstance
  • admin.deleteAppCredential
  • admin.deleteApplication
  • admin.deleteHumanUser
  • admin.deleteInstance
  • admin.getAppCredential
  • admin.getApplication
  • admin.getApplicationRoles
  • admin.getHumanUser
  • admin.getHumanUserRoles
  • admin.getInstance
  • admin.tenant.read
  • admin.listAppCredentials
  • admin.listApplications
  • admin.listHumanUsers
  • admin.listInstances
  • admin.updateAppCredential
  • admin.updateApplication
  • admin.updateHumanUser
  • admin.updateInstance
  • key_management.exportKey
  • key_management.generateKey
  • key_management.importKey
  • key_management.importPrivateKeyPkcs12
  • key_management.listKeys
  • key_management.patchKey
  • key_management.revokeKey
  • key_management.rotateKey
  • licenseManagement.getLicenseInfo
  • platform.bootstrap
  • secure.decrypt
  • secure.encrypt
  • secure.reencrypt
  • secure.resign
  • secure.sign
  • secure.verifySignature
  • stream.decryptStream
  • stream.encryptStream
  • stream.reencryptStream
  • stream.resignStream
  • stream.signStream
  • stream.verifySignatureStream
  • interoperability.encrypt
  • interoperability.verifySignature

Any roles not in this list will be rejected with a 400 or 404 error.

roles
array of strings
required
length between 0 and 50

List of roles to assign to the user. Replaces the user's full role set.

roles*
roleIds
array of uuids

List of role IDs to assign to the user (for new hierarchical API).

roleIds
Headers
string
enum
Defaults to application/json

Generated from available response content types

Allowed:
Responses

Language
Credentials
Bearer
JWT
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json
application/problem+json