Identity API (public): schemas

The request and response bodies of the operations in this API.

AcceptInvitationResponseDto

PropertyTypeRequiredDescription
acceptedAtstring (date-time)yesTimestamp when the invitation was accepted
invitationIdstringyesID of the invitation that was accepted (the invitationId of the invitation.invitation.accepted event)
organizationIdstringyesOrganization ID the user was added to
organizationNamestringyesOrganization name
rolestringyesRole assigned to the user
userIdstringyesID of the person who accepted it (the userId of the invitation.invitation.accepted event)

AddGroupMemberDto

PropertyTypeRequiredDescription
userIdstring (uuid)yesKeycloak user id to add to the group.

AddOrganizationMemberDto

PropertyTypeRequiredDescription
roleone of "org_owner", "org_admin", "org_member"noRole to assign to the user in the organization

ChangeMemberRoleDto

PropertyTypeRequiredDescription
roleone of "org_owner", "org_admin", "org_member"yesNew role for the member

CreateGroupDto

PropertyTypeRequiredDescription
attributesmap of array of stringnoFree-form Keycloak attributes (string-array values). Consumers tag groups with platform-specific keys (e.g. purpose, region, description).
namestringyesGroup name. Non-empty, at most 255 characters, no "/" (groups are addressed by a slash-delimited path), and not starting with the reserved prefix "user-". The rule is asserted by assertUsableGroupName in the service rather than by decorators here, because a group can be created through more than one door and class-validator runs only at the boundary of the door that declares it — a second rule, not a relaxed one.
parentIdstringnoOptional parent group id. If omitted the group is created at the top of the realm tree (or scoped to the active organization when one is in context).

CreateInvitationDto

PropertyTypeRequiredDescription
emailstring (email)yesEmail address to invite
roleone of "org_owner", "org_admin", "org_member"noRole to assign when invitation is accepted

CreateInvitationRequestDto

PropertyTypeRequiredDescription
companystringnoCompany name
emailstring (email)yesEmail address
namestringyesFull name of the requester
realmstringyesRealm this access request targets. Required: the endpoint is unauthenticated and carries no other tenant signal. Must be a realm this deployment serves; any other value is rejected with 400.

CreateInvitationResponseDto

PropertyTypeRequiredDescription
codestringyesInvitation code for accepting. Returned only by the call that created the invitation; it cannot be read again.
createdAtstring (date-time)yesInvitation creation date
deliveryAttemptedAtstring (date-time) or nullyesWhen the last delivery was attempted. Null when none was.
deliveryOutcomeInvitationDeliveryOutcome or nullyesHow the last delivery of this invitation by mail ended. Null when none was attempted.
emailstringyesInvited email address
expiresAtstring (date-time)yesInvitation expiration date
idstringyesInvitation ID
invitedByNamestringyesName of user who sent the invitation
organizationIdstringyesOrganization ID
organizationNamestringyesOrganization name
rolestringyesRole to be assigned on acceptance
statusone of "PENDING", "ACCEPTED", "EXPIRED", "REVOKED"yesInvitation status

CreateOrganizationDto

PropertyTypeRequiredDescription
displayNamestringyesOrganization display name
domainstringnoOrganization domain
metadataobjectnoOrganization metadata
namestringyesOrganization name (slug)

DashboardPreferencesDto

PropertyTypeRequiredDescription
defaultViewstringnoDefault view field.
favoriteSymbolsarray of stringnoFavorite symbols field.
widgetLayoutobjectnoWidget layout field.

DeliverInvitationDto

PropertyTypeRequiredDescription
applicationIdstringyesThe registered application whose declared accept URI the link is built on. It must declare an invitation accept URI.
localestringnoThe language of the mail, when the realm declares wording for it. Absent means the realm default.

DeliverInvitationResponseDto

PropertyTypeRequiredDescription
acceptUrlstringyesThe link the invitee follows: the application's declared accept URI with a fresh code. Returned only by this call; it cannot be read again.
deliveryInvitationDeliveryDtoyes

GroupResponseDto

PropertyTypeRequiredDescription
attributesmap of array of stringyesFree-form Keycloak attributes (string-array values). Consumer-defined keys only — the identity service's internal bookkeeping keys (e.g. ownership and per-member role attributes) are stripped from this surface.
childGroupIdsarray of stringyesDirect child group ids (one level deep).
idstringyesGroup ID (Keycloak UUID).
namestringyesGroup name.
parentIdstring or nullyesDirect parent group id, or null when the group sits at the realm root.
pathstringyesFull Keycloak path (e.g. "/acme/security-champions").
rootGroupIdstringyesTop-level ancestor id of this group. In platforms that use the top-level group as the org boundary, this is the organization id. Equals id for top-level groups.

InvitationDeliveryDto

PropertyTypeRequiredDescription
attemptedAtstring (date-time)yesWhen the attempt was made.
outcomeInvitationDeliveryOutcomeyesHow the attempt ended. A failed or unknown delivery never cancels the invitation.
reasonInvitationDeliveryReasonnoWhy the mail was not sent, when it was not. A closed vocabulary; never carries the link.

InvitationDeliveryOutcome

How the last delivery of this invitation by mail ended. Null when none was attempted.

Type: one of "SENT", "FAILED", "UNKNOWN", "NOT_CONFIGURED"

InvitationDeliveryReason

Why the mail was not sent, when it was not. A closed vocabulary; never carries the link.

Type: string (11 values)

InvitationRequestResponseDto

PropertyTypeRequiredDescription
companystring or nullnoCompany name
createdAtstring (date-time)yesWhen the request was created
emailstringyesRequester email
idstringyesInvitation request ID
namestringyesRequester name
statusone of "PENDING", "APPROVED", "REJECTED"yesRequest status

InvitationResponseDto

PropertyTypeRequiredDescription
createdAtstring (date-time)yesInvitation creation date
deliveryAttemptedAtstring (date-time) or nullyesWhen the last delivery was attempted. Null when none was.
deliveryOutcomeInvitationDeliveryOutcome or nullyesHow the last delivery of this invitation by mail ended. Null when none was attempted.
emailstringyesInvited email address
expiresAtstring (date-time)yesInvitation expiration date
idstringyesInvitation ID
invitedByNamestringyesName of user who sent the invitation
organizationIdstringyesOrganization ID
organizationNamestringyesOrganization name
rolestringyesRole to be assigned on acceptance
statusone of "PENDING", "ACCEPTED", "EXPIRED", "REVOKED"yesInvitation status

IssueScimCredentialDto

PropertyTypeRequiredDescription
labelstringyesWhat the credential is for, shown to administrators (for example the identity provider it is configured in).

IssuedScimCredentialDto

PropertyTypeRequiredDescription
createdAtstring (date-time)yes
createdBystringyesPrincipal id of the administrator who issued it.
expiresAtstring (date-time) or nullnoWhen a RETIRING credential stops being accepted.
idstringyes
labelstringyes
organizationIdstringyes
prefixstringyesThe public start of the token, to tell credentials apart.
revokedAtstring (date-time) or nullno
revokedBystring or nullnoPrincipal id of the administrator who revoked it; null when the service revoked it.
revokedReasonScimCredentialRevocationReason or nullno
rotatedFromstring or nullnoThe credential this one replaced, when issued by a rotation.
stateScimCredentialStateyes
tokenstringyesThe bearer token for the identity provider. Returned only by this call; it cannot be read again.
updatedAtstring (date-time)yes

NotificationPreferencesDto

PropertyTypeRequiredDescription
alertSeveritiesarray of stringnoAlert severities field.
digestFrequencyone of "realtime", "hourly", "daily", "weekly"noDigest frequency field.
emailbooleannoEmail field.
pushbooleannoPush field.

OrganizationDirectoryEntryDto

PropertyTypeRequiredDescription
displayNamestringyesHuman-readable name to show in a picker. Falls back to the email local part when the user has no name set, so it is never empty.
emailstringyesUser email. Served to every reader of the directory because it is the disambiguator between two members with the same display name.
firstNamestringnoFirst name. Served only to a reader with organization-administrator authority.
idstringyesUser ID
joinedAtstring (date-time)noWhen the user joined the organization. Served only to a reader with organization-administrator authority.
lastNamestringnoLast name. Served only to a reader with organization-administrator authority.
roleone of "org_owner", "org_admin", "org_member"noRole in the organization. Served only to a reader with organization-administrator authority.

OrganizationResponseDto

PropertyTypeRequiredDescription
createdAtstring (date-time) or nullnoOrganization creation timestamp
deletionRequestedAtstring (date-time) or nullyesWhen a deletion of this organization was requested, or null. A requested organization is retired — inactive, without members, and refusing changes — and is kept until it is purged.
displayNamestringyesOrganization display name
domainstring or nullnoOrganization domain
idstringyesOrganization ID (Keycloak group ID)
isActivebooleanyesWhether the organization is active
isProtectedbooleanyesWhether the organization is protected from deletion. A protected organization cannot be deleted through this API by any caller; the delete endpoints answer 409 ORGANIZATION_PROTECTED. Callers that own their own destructive teardown of an organization should read this before acting.
metadataobjectyesOrganization metadata
namestringyesOrganization name (slug)
roleone of "org_owner", "org_admin", "org_member" or nullnoCurrent user role in the organization when available
updatedAtstring (date-time) or nullnoOrganization last update timestamp

PlatformRole

Installation roles the user holds natively in this realm; only members of the closed PlatformRole set are ever stated

Type: one of "platform_owner", "platform_admin", "platform_operator"

ProviderLogoutRequestDto

PropertyTypeRequiredDescription
logout_tokenstringyesThe provider-signed logout token (a JWT).

ScimCredentialDto

PropertyTypeRequiredDescription
createdAtstring (date-time)yes
createdBystringyesPrincipal id of the administrator who issued it.
expiresAtstring (date-time) or nullnoWhen a RETIRING credential stops being accepted.
idstringyes
labelstringyes
organizationIdstringyes
prefixstringyesThe public start of the token, to tell credentials apart.
revokedAtstring (date-time) or nullno
revokedBystring or nullnoPrincipal id of the administrator who revoked it; null when the service revoked it.
revokedReasonScimCredentialRevocationReason or nullno
rotatedFromstring or nullnoThe credential this one replaced, when issued by a rotation.
stateScimCredentialStateyes
updatedAtstring (date-time)yes

ScimCredentialRevocationReason

Type: one of "ADMINISTRATOR_REVOKED", "ORGANIZATION_RETIRED"

ScimCredentialState

Type: one of "ACTIVE", "RETIRING", "REVOKED"

UpdateGroupDto

PropertyTypeRequiredDescription
attributesmap of array of stringnoReplacement attribute map. Replaces ALL attributes; merge semantics live in the consumer. Pass null for a key to delete it.
namestringnoUpdated group name. Same rule as create, asserted in the service by assertUsableGroupName.

UpdateMeDto

PropertyTypeRequiredDescription
firstNamestringnoFirst name
lastNamestringnoLast name

UpdateOrganizationByOwnerDto

PropertyTypeRequiredDescription
displayNamestringnoOrganization display name
metadataobjectnoOrganization metadata (custom key-value data)
namestringnoOrganization name (slug)

UpdatePreferencesDto

PropertyTypeRequiredDescription
dashboardDashboardPreferencesDtonoDashboard preferences
localestringnoLocale code
notificationsNotificationPreferencesDtonoNotification preferences
themeone of "light", "dark", "system"noUI theme
timezonestringnoIANA timezone

UserResponseDto

PropertyTypeRequiredDescription
createdAtstring (date-time) or nullnoUser creation timestamp
emailstringyesUser email address
firstNamestring or nullnoUser first name
groupIdsarray of stringnoIds of the groups inside the active organization that the user is a member of. Populated only when an organization context is supplied; an empty array means the user belongs to no group in that organization. The organization group itself is never included — belonging to it is membership of the organization, not of a group inside it.
idstringyesUser ID (Keycloak subject ID)
isActivebooleanyesWhether the user is active
lastLoginAtstring (date-time) or nullnoLast login timestamp
lastNamestring or nullnoUser last name
orgRolestringnoThe user's membership role within the active organization context (e.g. owner/admin/member). Populated only when an organization context is supplied; absent when no context is given or the user is not a member.
platformRolesarray of PlatformRoleyesInstallation roles the user holds natively in this realm; only members of the closed PlatformRole set are ever stated
preferencesobjectnoThe caller's own preferences, an opaque object this service stores and never interprets. Present on the self profile (GET /users/me and PATCH /users/me/preferences) once the realm's preferences are held here; absent while a realm's one-time import has not run — never an empty object standing in for unknown.
updatedAtstring (date-time) or nullnoUser last update timestamp