{"openapi":"3.1.1","info":{"title":"Admin API","version":"1.0","description":"API for managing users, groups, API keys, and role assignments in Acceldata's tenant administration service. Covers user and service user lifecycle (create, update, disable), user group management, client role assignment, and API key issuance and revocation. SCIM-managed users and groups have restricted edit and delete operations, since their source of truth is the identity provider."},"paths":{"/admin/api/users/list":{"get":{"operationId":"listUsers","tags":["User Management"],"summary":"List all users (paginated with metadata)","description":"Returns a paginated list of users in the tenant with full metadata.\nSupports filtering by search string, user IDs, and enabled status.","parameters":[{"name":"first","in":"query","description":"Starting index for pagination (default: 0)","schema":{"type":"string"}},{"name":"max","in":"query","description":"Maximum number of users to return (default: 10)","schema":{"type":"string"}},{"name":"searchString","in":"query","description":"Filter users by name or email","schema":{"type":"string"}},{"name":"ids","in":"query","description":"Comma-separated user IDs to fetch","schema":{"type":"string"}},{"name":"enabled","in":"query","description":"Filter by enabled status (true/false)","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated list of users with metadata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AllRealmUsersListResponse"}}}}}}},"/admin/api/users/count":{"get":{"operationId":"getUserCount","tags":["User Management"],"summary":"Get user count","description":"Returns the total number of users in the tenant.","parameters":[{"name":"searchString","in":"query","description":"Optional search filter to count matching users","schema":{"type":"string"}}],"responses":{"200":{"description":"Integer representing the total user count","content":{"application/json":{"schema":{"type":"integer"}}}}}}},"/admin/api/users/{userId}":{"put":{"operationId":"updateUser","tags":["User Management"],"summary":"Update a user","description":"Updates user details. Requires MODIFY_USERS permission or matching user identity.\nSCIM-managed users cannot be modified.","parameters":[{"name":"userId","in":"path","description":"User ID","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Updated user details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"responses":{"200":{"description":"User updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}},"403":{"description":"Cannot modify SCIM-managed or identity-provider-managed user"},"500":{"description":"Failed to update user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}}}},"get":{"operationId":"getUser","tags":["User Management"],"summary":"Get a user by ID","description":"Returns user details for the specified user ID.\nRequires VIEW_USERS, VIEW_USER_GROUPS, or VIEW_ROLE permission, or matching user identity.","parameters":[{"name":"userId","in":"path","description":"User ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"User details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"403":{"description":"Insufficient permissions"}}}},"/admin/api/users/{userId}/remove-user":{"delete":{"operationId":"removeUser","tags":["User Management"],"summary":"Remove a user","description":"Disables and removes a user from the tenant. Requires MODIFY_USERS permission.\nSCIM-managed users cannot be removed. Users cannot remove their own account.","parameters":[{"name":"userId","in":"path","description":"User ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"User removed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}},"403":{"description":"Cannot modify SCIM-managed user"},"500":{"description":"Failed to remove user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}}}}},"/admin/api/users/{userId}/assign-groups":{"put":{"operationId":"assignUserGroups","tags":["User Management"],"summary":"Assign groups to a user","description":"Assigns one or more groups to the specified user.\nRequires MODIFY_USER_GROUPS and VIEW_USERS permissions.\nSCIM-managed users and groups cannot be modified.","parameters":[{"name":"userId","in":"path","description":"User ID","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Group assignment request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignUserGroupRequest"}}}},"responses":{"200":{"description":"Groups assigned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}},"403":{"description":"Cannot modify SCIM-managed user or group assignments"},"500":{"description":"Failed to assign groups","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}}}}},"/admin/api/users/{userId}/remove-groups":{"put":{"operationId":"removeUserGroups","tags":["User Management"],"summary":"Remove groups from a user","description":"Removes one or more group assignments from the specified user.\nRequires MODIFY_USER_GROUPS and VIEW_USERS permissions.","parameters":[{"name":"userId","in":"path","description":"User ID","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Group removal request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignUserGroupRequest"}}}},"responses":{"200":{"description":"Groups removed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}},"403":{"description":"Cannot modify SCIM-managed user or group assignments"},"500":{"description":"Failed to remove groups","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}}}}},"/admin/api/users/{userId}/groups":{"get":{"operationId":"getUserGroupsByUserId","tags":["User Management"],"summary":"Get groups for a user","description":"Returns groups the specified user belongs to.\nRequires VIEW_USER_GROUPS permission or matching user identity.","parameters":[{"name":"userId","in":"path","description":"User ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"List of groups for the user"},"403":{"description":"Cannot view groups of another user"}}}},"/admin/api/users/{userId}/api-keys":{"get":{"operationId":"getUserApiKeys","tags":["API Keys"],"summary":"List API keys for a user","description":"Returns all API keys associated with the specified user.\nUsers can only view their own API keys unless they have elevated permissions.","parameters":[{"name":"userId","in":"path","description":"User ID","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","description":"Page number (default: 0)","schema":{"type":"string"}},{"name":"size","in":"query","description":"Page size (default: 25)","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated list of API keys","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeysResponseObject"}}}},"403":{"description":"User is not authorized to view these API keys"}}}},"/admin/api/users/api-keys/all":{"get":{"operationId":"getAllApiKeys","tags":["API Keys"],"summary":"List all API keys in the realm","description":"Returns a paginated list of all API keys in the tenant.\nRequires VIEW_API_KEYS permission.","parameters":[{"name":"page","in":"query","description":"Page number (default: 0)","schema":{"type":"string"}},{"name":"size","in":"query","description":"Page size (default: 25)","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated list of API keys","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeysResponseObject"}}}}}}},"/admin/api/users/api-keys/{accessKey}":{"delete":{"operationId":"deleteApiKey","tags":["API Keys"],"summary":"Delete an API key","description":"Revokes and deletes the specified API key.\nRequires ownership of the key or MODIFY_API_KEYS permission.","parameters":[{"name":"accessKey","in":"path","description":"API access key to delete","required":true,"schema":{"type":"string"}},{"name":"clientId","in":"query","description":"Client ID for permission check (optional)","schema":{"type":"string"}}],"responses":{"200":{"description":"Success message confirming API key deletion"},"403":{"description":"User does not have permission to delete this API key"}}}},"/admin/api/groups/list":{"get":{"operationId":"listGroupsSummary","tags":["Group Management"],"summary":"List groups (summary view)","description":"Returns a paginated list of user groups with summary information.\nSupports filtering by name and SCIM management status.","parameters":[{"name":"first","in":"query","description":"Starting index for pagination (default: 0)","schema":{"type":"string"}},{"name":"last","in":"query","description":"Maximum number of groups to return (default: 10)","schema":{"type":"string"}},{"name":"search","in":"query","description":"Search string to filter groups by name","schema":{"type":"string"}},{"name":"scimEnabled","in":"query","description":"Filter by SCIM management status (true/false)","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated list of groups with metadata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupsListResponse"}}}}}}},"/admin/api/groups/metadata":{"post":{"operationId":"getGroupsMetadata","tags":["Group Management"],"summary":"Get metadata for groups","description":"Returns display names for the specified group IDs.","requestBody":{"description":"List of group IDs","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}}},"responses":{"200":{"description":"Map of group ID to display name","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}}}}},"/admin/api/groups":{"post":{"operationId":"createGroup","tags":["Group Management"],"summary":"Create a group","description":"Creates a new user group. Requires CREATE_USER_GROUPS permission.","requestBody":{"description":"Group creation request with name, members, roles, and attributes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserGroupRequest"}}}},"responses":{"200":{"description":"Created group details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupDetails"}}}}}},"get":{"operationId":"listGroups","tags":["Group Management"],"summary":"List all groups","description":"Returns a paginated list of user groups. Requires VIEW_USER_GROUPS permission.","parameters":[{"name":"first","in":"query","description":"Starting index for pagination (default: 0)","schema":{"type":"string"}},{"name":"last","in":"query","description":"Maximum number of groups to return (default: 10)","schema":{"type":"string"}},{"name":"search","in":"query","description":"Search string to filter groups by name","schema":{"type":"string"}},{"name":"scimEnabled","in":"query","description":"Filter by SCIM management status (true/false)","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated list of groups with metadata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupsListResponse"}}}}}}},"/admin/api/groups/{groupId}":{"put":{"operationId":"updateGroup","tags":["Group Management"],"summary":"Update a group","description":"Updates the specified group. Requires MODIFY_USER_GROUPS permission.\nSCIM-managed groups cannot have their name changed.","parameters":[{"name":"groupId","in":"path","description":"Group ID","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Group update request with name, role changes, member changes, and attributes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditUserGroupRequest"}}}},"responses":{"200":{"description":"Updated group details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupDetails"}}}},"403":{"description":"Cannot rename SCIM-managed groups"}}},"delete":{"operationId":"deleteGroup","tags":["Group Management"],"summary":"Delete a group","description":"Deletes the specified user group. Requires MODIFY_USER_GROUPS permission.\nSCIM-managed groups cannot be deleted.","parameters":[{"name":"groupId","in":"path","description":"Group ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Group deleted successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}},"403":{"description":"Cannot delete SCIM-managed groups"},"500":{"description":"Failed to delete group","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}}}},"get":{"operationId":"getGroup","tags":["Group Management"],"summary":"Get a group by ID","description":"Returns the group details for the specified group ID. Requires VIEW_USER_GROUPS permission.","parameters":[{"name":"groupId","in":"path","description":"Group ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Group details including members, roles, and attributes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupDetails"}}}}}}},"/admin/api/groups/{groupId}/available-roles":{"get":{"operationId":"getGroupAvailableRoles","tags":["Group Management"],"summary":"Get available roles for a group","description":"Returns client roles available to assign to the specified group.\nRequires VIEW_USER_GROUPS permission.","parameters":[{"name":"groupId","in":"path","description":"Group ID","required":true,"schema":{"type":"string"}},{"name":"clientId","in":"query","description":"Client ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Available client roles for the group"}}}},"/admin/api/assign-client-roles":{"put":{"operationId":"assignClientRoles","tags":["Client Roles"],"summary":"Assign client roles to a user","description":"Assigns one or more client-level roles to a user.\nRequires VIEW_ROLE and MODIFY_USERS permissions.","requestBody":{"description":"Client role assignment request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignClientRoleRequest"}}}},"responses":{"200":{"description":"Roles assigned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}},"500":{"description":"Failed to assign roles","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}}}}},"/admin/api/remove-assigned-client-roles":{"put":{"operationId":"removeAssignedClientRoles","tags":["Client Roles"],"summary":"Remove assigned client roles from a user","description":"Removes previously assigned client-level roles from a user.\nRequires VIEW_ROLE and MODIFY_USERS permissions.","requestBody":{"description":"Client role removal request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignClientRoleRequest"}}}},"responses":{"200":{"description":"Roles removed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}},"500":{"description":"Failed to remove roles","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}}}}},"/admin/api/assigned-client-roles/{userId}":{"get":{"operationId":"getAssignedClientRoles","tags":["Role Mapping"],"summary":"Get assigned client roles for a user","description":"Returns client roles assigned to the specified user.\nRequires VIEW_ROLE permission or matching user identity.","parameters":[{"name":"userId","in":"path","description":"User ID","required":true,"schema":{"type":"string"}},{"name":"clientId","in":"query","description":"Client ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Assigned client roles"},"403":{"description":"Insufficient permissions"}}}},"/admin/api/profile-update/forgot-password":{"post":{"operationId":"forgotPassword","tags":["Profile Update"],"summary":"Trigger forgot-password email","description":"Sends a password reset email to the specified user.","requestBody":{"description":"Realm and email address","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordRequest"}}}},"responses":{"200":{"description":"Password reset email triggered","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}},"400":{"description":"Failed to trigger password reset email","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}}}}},"/admin/api/v1/service-users":{"post":{"operationId":"createServiceUser","tags":["Service Users"],"summary":"Create a service user","description":"Creates a new service user. Requires CREATE_SERVICE_USERS permission.","requestBody":{"description":"Service user creation request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateServiceUserRequest"}}}},"responses":{"201":{"description":"Created service user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUser"}}}},"400":{"description":"Invalid request"}}}},"/admin/api/v1/service-users/list":{"get":{"operationId":"listServiceUsers","tags":["Service Users"],"summary":"List service users","description":"Returns a paginated list of service users. Requires VIEW_SERVICE_USERS permission.","parameters":[{"name":"searchString","in":"query","description":"Search filter","schema":{"type":"string"}},{"name":"first","in":"query","description":"Starting index (default: 0)","schema":{"type":"string"}},{"name":"max","in":"query","description":"Maximum results (default: 10)","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated list of service users","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUserListResponse"}}}}}}},"/admin/api/v1/service-users/{serviceUserId}":{"put":{"operationId":"updateServiceUser","tags":["Service Users"],"summary":"Update a service user","description":"Updates a service user. Requires MODIFY_SERVICE_USERS permission.","parameters":[{"name":"serviceUserId","in":"path","description":"Service user ID","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Service user update request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUserUpdateRequest"}}}},"responses":{"200":{"description":"Service user updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}},"404":{"description":"Service user not found"}}},"get":{"operationId":"getServiceUser","tags":["Service Users"],"summary":"Get a service user","description":"Returns details for the specified service user. Requires VIEW_SERVICE_USERS permission.","parameters":[{"name":"serviceUserId","in":"path","description":"Service user ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Service user details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUser"}}}},"404":{"description":"Service user not found"}}}},"/admin/api/v1/service-users/{serviceUserId}/add-roles":{"put":{"operationId":"addServiceUserRoles","tags":["Service Users"],"summary":"Add roles to a service user","description":"Assigns feature and domain resource roles to a service user.\nRequires MODIFY_SERVICE_USERS and VIEW_ROLE permissions.","parameters":[{"name":"serviceUserId","in":"path","description":"Service user ID","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Roles to add","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUserRolesRequest"}}}},"responses":{"200":{"description":"Roles added successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}},"404":{"description":"Service user not found"}}}},"/admin/api/v1/service-users/{serviceUserId}/remove-roles":{"put":{"operationId":"removeServiceUserRoles","tags":["Service Users"],"summary":"Remove roles from a service user","description":"Removes feature and domain resource roles from a service user.\nRequires MODIFY_SERVICE_USERS and VIEW_ROLE permissions.","parameters":[{"name":"serviceUserId","in":"path","description":"Service user ID","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Roles to remove","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUserRolesRequest"}}}},"responses":{"200":{"description":"Roles removed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}},"404":{"description":"Service user not found"}}}},"/admin/api/v1/service-users/{serviceUserId}/api-key":{"post":{"operationId":"createServiceUserApiKey","tags":["Service Users"],"summary":"Create an API key for a service user","description":"Creates an API key for the specified service user.\nRequires MODIFY_SERVICE_USERS and MODIFY_API_KEYS permissions.","parameters":[{"name":"serviceUserId","in":"path","description":"Service user ID","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"API key creation request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUserApiKeyRequest"}}}},"responses":{"200":{"description":"Created API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyResponse"}}}},"404":{"description":"Service user not found"}}}},"/admin/api/v1/service-users/{serviceUserId}/api-key/{accessKey}":{"delete":{"operationId":"deleteServiceUserApiKey","tags":["Service Users"],"summary":"Delete a service user API key","description":"Revokes and deletes an API key for the specified service user.\nRequires MODIFY_SERVICE_USERS and MODIFY_API_KEYS permissions.","parameters":[{"name":"serviceUserId","in":"path","description":"Service user ID","required":true,"schema":{"type":"string"}},{"name":"accessKey","in":"path","description":"API access key to delete","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"API key deleted"},"404":{"description":"Service user not found"}}}}},"components":{"schemas":{"Meta":{"type":"object","title":"Meta","required":["page","size","total"],"properties":{"page":{"type":"integer"},"size":{"type":"integer"},"total":{"type":"integer"}}},"GroupRepresentation":{"type":"object","title":"GroupRepresentation","required":["id","name","description","path","parentId","subGroupCount","subGroups","attributes","realmRoles","clientRoles","access"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"path":{"type":"string"},"parentId":{"type":"string"},"subGroupCount":{"type":"integer"},"subGroups":{"type":"array","items":{"$ref":"#/components/schemas/GroupRepresentation"}},"attributes":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"realmRoles":{"type":"array","items":{"type":"string"}},"clientRoles":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"access":{"type":"object","additionalProperties":{"type":"boolean"}}}},"Metadata":{"type":"object","title":"Metadata","required":["createdAt","createdBy","numberOfDirectGroupsAssigned","numberOfDirectUsersAssigned","numberOfDomainUserGroupAssigned"],"properties":{"createdAt":{"type":"integer"},"createdBy":{"type":"string"},"numberOfDirectGroupsAssigned":{"type":"integer"},"numberOfDirectUsersAssigned":{"type":"integer"},"numberOfDomainUserGroupAssigned":{"type":"integer"},"updatedAt":{"type":"integer"},"updatedBy":{"type":["string","null"]}}},"Role":{"type":"object","title":"Role","required":["id","name"],"properties":{"default":{"type":"boolean"},"description":{"type":["string","null"]},"id":{"type":"integer"},"metadata":{"oneOf":[{"$ref":"#/components/schemas/Metadata"},{"type":"null"}]},"name":{"type":"string"},"type":{"type":["string","null"],"enum":["FEATURE_ROLE","RESOURCE_ROLE"]}}},"User":{"type":"object","title":"User","required":["scimManaged"],"properties":{"actionsPending":{"type":"integer"},"attributes":{"type":["object","null"],"additionalProperties":{"type":"array","items":{"type":"string"}}},"createdBy":{"type":["string","null"]},"createdOn":{"type":"integer"},"email":{"type":["string","null"]},"enabled":{"type":"boolean"},"environment":{"type":["array","null"],"items":{"type":"string"}},"firstName":{"type":["string","null"]},"goal":{"type":["array","null"],"items":{"type":"string"}},"groups":{"type":["array","null"],"items":{"$ref":"#/components/schemas/GroupRepresentation"}},"isEmailVerified":{"type":"boolean"},"lastAccessOn":{"type":"integer"},"lastName":{"type":["string","null"]},"organisation":{"type":["string","null"]},"password":{"type":["string","null"]},"roles":{"type":["array","null"],"items":{"$ref":"#/components/schemas/Role"}},"scimManaged":{"type":"boolean"},"services":{"type":["array","null"],"items":{"type":"string"}},"updatedBy":{"type":["string","null"]},"updatedOn":{"type":"integer"},"userId":{"type":["string","null"]}}},"AllRealmUsersListResponse":{"type":"object","title":"AllRealmUsersListResponse","required":["message","meta","status"],"properties":{"message":{"type":"string"},"meta":{"$ref":"#/components/schemas/Meta"},"status":{"type":"boolean"},"users":{"type":["array","null"],"items":{"$ref":"#/components/schemas/User"}}}},"Status":{"type":"object","title":"Status","required":["message","status"],"properties":{"message":{"type":"string"},"status":{"type":"boolean"}}},"AssignUserGroup":{"type":"object","title":"AssignUserGroup","required":["groups"],"properties":{"groups":{"type":"array","items":{"type":"string"}}}},"AssignUserGroupRequest":{"type":"object","title":"AssignUserGroupRequest","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/AssignUserGroup"}}},"ApiKeyDetails":{"type":"object","title":"ApiKeyDetails","required":["accessKey","createdAt","displayName","email","secretKey","validTill"],"properties":{"accessKey":{"type":"string"},"createdAt":{"type":"integer"},"displayName":{"type":"string"},"email":{"type":"string"},"secretKey":{"type":"string"},"userName":{"type":["string","null"]},"validTill":{"type":"integer"}}},"ApiKeysResponseObject":{"type":"object","title":"ApiKeysResponseObject","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ApiKeyDetails"}},"meta":{"$ref":"#/components/schemas/Meta"}}},"EntityDomainRoleMapping":{"type":"object","title":"EntityDomainRoleMapping","required":["domainId","entityType","roleId","roleType"],"properties":{"domainId":{"type":"integer"},"entityId":{"type":["string","null"]},"entityType":{"type":"string","enum":["USER","USER_GROUP"]},"id":{"type":"integer"},"roleId":{"type":"integer"},"roleType":{"type":"string","enum":["FEATURE_ROLE","RESOURCE_ROLE"]}}},"Group":{"type":"object","title":"Group","required":["domainRoleMappings","id","membersCount","name","roles","rolesCount","scimManaged"],"properties":{"createdAt":{"type":"integer"},"createdBy":{"type":["string","null"]},"description":{"type":["string","null"]},"domainRoleMappings":{"type":"array","items":{"$ref":"#/components/schemas/EntityDomainRoleMapping"}},"id":{"type":"string"},"membersCount":{"type":"integer"},"name":{"type":"string"},"roles":{"type":"array","items":{"$ref":"#/components/schemas/Role"}},"rolesCount":{"type":"integer"},"scimManaged":{"type":"boolean"},"updatedAt":{"type":"integer"},"updatedBy":{"type":["string","null"]}}},"GroupsListResponse":{"type":"object","title":"GroupsListResponse","required":["groups","meta"],"properties":{"groups":{"type":"array","items":{"$ref":"#/components/schemas/Group"}},"meta":{"$ref":"#/components/schemas/Meta"}}},"CreateUserGroupRequest":{"type":"object","title":"CreateUserGroupRequest","required":["domainRoleMappings","members","name","roles"],"properties":{"attributes":{"type":["object","null"],"additionalProperties":{"type":"array","items":{"type":"string"}}},"description":{"type":["string","null"]},"domainRoleMappings":{"type":"array","items":{"$ref":"#/components/schemas/EntityDomainRoleMapping"}},"members":{"type":"array","items":{"type":"string"}},"name":{"type":"string"},"roles":{"type":"array","items":{"type":"integer"}}}},"CredentialRepresentation":{"type":"object","title":"CredentialRepresentation","required":["id","type","userLabel","createdDate","secretData","credentialData","priority","value","temporary","device","hashedSaltedValue","salt","hashIterations","counter","algorithm","digits","period","config","federationLink"],"properties":{"id":{"type":"string"},"type":{"type":"string"},"userLabel":{"type":"string"},"createdDate":{"type":"integer"},"secretData":{"type":"string"},"credentialData":{"type":"string"},"priority":{"type":"integer"},"value":{"type":"string"},"temporary":{"type":"boolean"},"device":{"type":"string"},"hashedSaltedValue":{"type":"string"},"salt":{"type":"string"},"hashIterations":{"type":"integer"},"counter":{"type":"integer"},"algorithm":{"type":"string"},"digits":{"type":"integer"},"period":{"type":"integer"},"config":{"type":"object","additionalProperties":{"type":"string"}},"federationLink":{"type":"string"}}},"FederatedIdentityRepresentation":{"type":"object","title":"FederatedIdentityRepresentation","required":["identityProvider","userId","userName"],"properties":{"identityProvider":{"type":"string"},"userId":{"type":"string"},"userName":{"type":"string"}}},"UserConsentRepresentation":{"type":"object","title":"UserConsentRepresentation","required":["clientId","grantedClientScopes","createdDate","lastUpdatedDate","grantedRealmRoles"],"properties":{"clientId":{"type":"string"},"grantedClientScopes":{"type":"array","items":{"type":"string"}},"createdDate":{"type":"integer"},"lastUpdatedDate":{"type":"integer"},"grantedRealmRoles":{"type":"array","items":{"type":"string"}}}},"SocialLinkRepresentation":{"type":"object","title":"SocialLinkRepresentation","required":["socialProvider","socialUserId","socialUsername"],"properties":{"socialProvider":{"type":"string"},"socialUserId":{"type":"string"},"socialUsername":{"type":"string"}}},"UserRepresentation":{"type":"object","title":"UserRepresentation","required":["self","origin","createdTimestamp","totp","federationLink","serviceAccountClientId","credentials","disableableCredentialTypes","requiredActions","federatedIdentities","realmRoles","clientRoles","clientConsents","notBefore","applicationRoles","socialLinks","groups","access","id","username","firstName","lastName","email","emailVerified","attributes","enabled"],"properties":{"self":{"type":"string"},"origin":{"type":"string"},"createdTimestamp":{"type":"integer"},"totp":{"type":"boolean"},"federationLink":{"type":"string"},"serviceAccountClientId":{"type":"string"},"credentials":{"type":"array","items":{"$ref":"#/components/schemas/CredentialRepresentation"}},"disableableCredentialTypes":{"type":"array","items":{"type":"string"}},"requiredActions":{"type":"array","items":{"type":"string"}},"federatedIdentities":{"type":"array","items":{"$ref":"#/components/schemas/FederatedIdentityRepresentation"}},"realmRoles":{"type":"array","items":{"type":"string"}},"clientRoles":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"clientConsents":{"type":"array","items":{"$ref":"#/components/schemas/UserConsentRepresentation"}},"notBefore":{"type":"integer"},"applicationRoles":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"socialLinks":{"type":"array","items":{"$ref":"#/components/schemas/SocialLinkRepresentation"}},"groups":{"type":"array","items":{"type":"string"}},"access":{"type":"object","additionalProperties":{"type":"boolean"}},"id":{"type":"string"},"username":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"email":{"type":"string"},"emailVerified":{"type":"boolean"},"attributes":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"enabled":{"type":"boolean"}}},"GroupDetails":{"type":"object","title":"GroupDetails","required":["domainRoleMappings","id","members","name","roles"],"properties":{"attributes":{"type":["object","null"],"additionalProperties":{"type":"array","items":{"type":"string"}}},"createdAt":{"type":"integer"},"createdBy":{"type":["string","null"]},"description":{"type":["string","null"]},"domainRoleMappings":{"type":"array","items":{"$ref":"#/components/schemas/EntityDomainRoleMapping"}},"id":{"type":"string"},"members":{"type":"array","items":{"$ref":"#/components/schemas/UserRepresentation"}},"name":{"type":"string"},"roles":{"type":"array","items":{"$ref":"#/components/schemas/Role"}},"updatedAt":{"type":"integer"},"updatedBy":{"type":["string","null"]}}},"EditUserGroupRequest":{"type":"object","title":"EditUserGroupRequest","required":["addDomainRoleMappings","name","removeDomainRoleMappings","rolesAdded","rolesRemoved","usersAdded","usersRemoved"],"properties":{"addDomainRoleMappings":{"type":"array","items":{"$ref":"#/components/schemas/EntityDomainRoleMapping"}},"attributes":{"type":["object","null"],"additionalProperties":{"type":"array","items":{"type":"string"}}},"description":{"type":["string","null"]},"name":{"type":"string"},"removeDomainRoleMappings":{"type":"array","items":{"$ref":"#/components/schemas/EntityDomainRoleMapping"}},"rolesAdded":{"type":"array","items":{"type":"integer"}},"rolesRemoved":{"type":"array","items":{"type":"integer"}},"usersAdded":{"type":"array","items":{"type":"string"}},"usersRemoved":{"type":"array","items":{"type":"string"}}}},"EntityRoleMapping":{"type":"object","title":"EntityRoleMapping","required":["entityId","entityType","roleId","roleType"],"properties":{"entityId":{"type":"string"},"entityType":{"type":"string","enum":["USER","USER_GROUP"]},"roleId":{"type":"integer"},"roleType":{"type":"string","enum":["FEATURE_ROLE","RESOURCE_ROLE"]}}},"ServiceUserDomainRoleMappingChunk":{"type":"object","title":"ServiceUserDomainRoleMappingChunk","required":["domainId","roleIds"],"properties":{"domainId":{"type":"integer"},"roleIds":{"type":"array","items":{"type":"integer"}}}},"AssignClientRole":{"type":"object","title":"AssignClientRole","required":["clientId","domainRoleMapping","roles","serviceUserDomainRoleMappings","userId"],"properties":{"clientId":{"type":"string"},"domainRoleMapping":{"type":"array","items":{"$ref":"#/components/schemas/EntityRoleMapping"}},"roles":{"type":"array","items":{"type":"integer"}},"serviceUserDomainRoleMappings":{"type":"array","items":{"$ref":"#/components/schemas/ServiceUserDomainRoleMappingChunk"}},"userId":{"type":"string"}}},"AssignClientRoleRequest":{"type":"object","title":"AssignClientRoleRequest","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/AssignClientRole"}}},"ForgotPasswordRequest":{"type":"object","title":"ForgotPasswordRequest","required":["email","realm"],"properties":{"email":{"type":"string"},"realm":{"type":"string"}}},"CreateServiceUserRequest":{"type":"object","title":"CreateServiceUserRequest","required":["username"],"properties":{"description":{"type":["string","null"]},"username":{"type":"string"}}},"ServiceUser":{"type":"object","title":"ServiceUser","required":["apiKeys","domainRoleMappings","email","enabled","id","roles","username"],"properties":{"apiKeys":{"type":"array","items":{"$ref":"#/components/schemas/ApiKeyDetails"}},"createdBy":{"type":["string","null"]},"createdOn":{"type":"integer"},"description":{"type":["string","null"]},"domainRoleMappings":{"type":"array","items":{"$ref":"#/components/schemas/EntityDomainRoleMapping"}},"email":{"type":"string"},"enabled":{"type":"boolean"},"id":{"type":"string"},"roles":{"type":"array","items":{"$ref":"#/components/schemas/Role"}},"updatedBy":{"type":["string","null"]},"updatedOn":{"type":"integer"},"username":{"type":"string"}}},"ServiceUserListResponse":{"type":"object","title":"ServiceUserListResponse","required":["meta","serviceUsers"],"properties":{"meta":{"$ref":"#/components/schemas/Meta"},"serviceUsers":{"type":"array","items":{"$ref":"#/components/schemas/ServiceUser"}}}},"ServiceUserUpdateRequest":{"type":"object","title":"ServiceUserUpdateRequest","required":["enabled"],"properties":{"description":{"type":["string","null"]},"enabled":{"type":"boolean"}}},"ServiceUserDomainRoleMappingRequest":{"type":"object","title":"ServiceUserDomainRoleMappingRequest","required":["domainId","roleId"],"properties":{"domainId":{"type":"integer"},"roleId":{"type":"array","items":{"type":"integer"}}}},"ServiceUserRolesRequest":{"type":"object","title":"ServiceUserRolesRequest","required":["clientId","roles"],"properties":{"clientId":{"type":"string"},"domainRoleMappings":{"type":["array","null"],"items":{"$ref":"#/components/schemas/ServiceUserDomainRoleMappingRequest"}},"roles":{"type":"array","items":{"type":"integer"}}}},"ServiceUserApiKeyRequest":{"type":"object","title":"ServiceUserApiKeyRequest","required":["displayName","validTill"],"properties":{"displayName":{"type":"string"},"namespace":{"type":["string","null"]},"nid":{"type":"integer"},"niid":{"type":"integer"},"realm":{"type":["string","null"]},"validTill":{"type":"integer"}}},"ApiKeyResponse":{"type":"object","title":"ApiKeyResponse","required":["accessKey","displayName","secretKey","validTill"],"properties":{"accessKey":{"type":"string"},"displayName":{"type":"string"},"email":{"type":["string","null"]},"ingestKey":{"type":["string","null"]},"secretKey":{"type":"string"},"validTill":{"type":"integer"}}}}},"tags":[{"name":"User Management","description":"Create, retrieve, update, and remove users, and manage their group memberships. Users provisioned through SCIM are synced from the identity provider and have restricted edit and delete operations."},{"name":"API Keys","description":"List and revoke API keys belonging to individual users or across the realm. API keys authenticate programmatic requests made on behalf of a user."},{"name":"Group Management","description":"Create, retrieve, update, and delete user groups, and view the roles available to a group. Groups let administrators assign roles and permissions to multiple users at once instead of managing them individually."},{"name":"Client Roles","description":"Assign and remove client (platform) roles for a user. Client roles determine which platform-wide actions a user can perform, independent of any domain-scoped access."},{"name":"Role Mapping","description":"Retrieve the client roles currently assigned to a user."},{"name":"Profile Update","description":"Self-service account operations, such as triggering a forgot-password email for a user."},{"name":"Service Users","description":"Create, retrieve, update, and manage service users — non-human identities used for automated access and system-to-system integrations in place of personal user API keys. Includes assigning roles to a service user and issuing or revoking its API keys."}]}