Generated Assets ReferenceAuth Service Assets
Generated Assets Reference

Auth Service Generated Assets

Comprehensive reference for all automatically generated assets in the auth service, including data objects, Business APIs, REST routes, Kafka topics, and database utility functions.

The auth service is automatically generated when you configure the Authentication module in your Mindbricks project. This service provides user management, authentication, authorization, and multi-tenancy capabilities.


Automatic Data Objects

The auth service automatically includes the following data objects:

1. user Data Object

The user data object is the core entity for user management. It is always present in the auth service.

Naming Convention:

  • Data Object Name: user
  • Model Name: User (PascalCase)
  • Service Reference: auth:user (when referenced from other services)

System-Owned Properties:

Property NameTypeRequiredDescription
idUUIDYesUnique identifier for the user
emailStringYesUser's email address (unique, used for login)
passwordStringYesHashed password (never stored in plain text)
emailVerifiedBooleanYesWhether email has been verified
nameStringConditionalFirst name (when userNameType is "asNamePair")
surnameStringConditionalLast name (when userNameType is "asNamePair")
fullnameStringConditionalFull name (when userNameType is "asFullname")
avatarStringNoURL to user's avatar image
roleIdAny/ArrayConditionalUser's role(s) (when RBAC is active)
mobileStringConditionalMobile phone number (when userMobileIsActive is true)
mobileVerifiedBooleanConditionalWhether mobile is verified (when userMobileIsActive is true)
{tenantName}IdUUIDConditionalTenant ID (when multi-tenancy is active, e.g., clientId, storeId)

Custom Properties: Architects can add custom properties via ProjectAuthentication.userProperties array. These properties follow standard DataProperty pattern definitions.

Initial Data:

  • Super Admin User: Automatically created on deployment with credentials defined in LoginDefUserSettings.superAdminEmail and LoginDefUserSettings.superAdminPassword

2. userGroup Data Object (Conditional)

The userGroup data object is generated when userGroupsActive is set to true in LoginDefUserSettings.

Naming Convention:

  • Data Object Name: userGroup
  • Model Name: UserGroup (PascalCase)
  • Service Reference: auth:userGroup

System-Owned Properties:

Property NameTypeRequiredDescription
idUUIDYesUnique identifier for the group
groupNameStringYesName of the user group
avatarStringNoURL to group's avatar image
{tenantName}IdUUIDConditionalTenant ID (when userGroupsInTenantLevel is true)

3. userGroupMember Data Object (Conditional)

The userGroupMember data object is generated when userGroupsActive is set to true. It manages the many-to-many relationship between users and groups.

Naming Convention:

  • Data Object Name: userGroupMember
  • Model Name: UserGroupMember (PascalCase)
  • Service Reference: auth:userGroupMember

System-Owned Properties:

Property NameTypeRequiredDescription
idUUIDYesUnique identifier for the membership record
groupIdUUIDYesReference to userGroup.id
userIdUUIDYesReference to user.id
ownerIdUUIDYesID of admin who created the membership (auto-populated from session)
{tenantName}IdUUIDConditionalTenant ID (when userGroupsInTenantLevel is true)

4. ROLES System Object

Roles in Mindbricks are not stored as data objects but as a system object (constant/enum) that defines available role names and their values. This ROLES object is always present in the auth service, regardless of whether RBAC is active.

System Roles (Always Available):

Single-Tenant Projects:

  • superAdmin — Super administrator with full system access
  • admin — Administrator with elevated permissions
  • user — Standard user role

Multi-Tenant (SaaS) Projects:

  • superAdmin — Super administrator at SaaS level
  • saasAdmin — SaaS-level administrator
  • saasUser — SaaS-level user
  • tenantOwner — Owner of a tenant
  • tenantAdmin — Administrator within a tenant
  • tenantUser — Standard user within a tenant

Custom Roles (When RBAC is Active):

When rbacIsActive is true, architects can define additional custom roles via AccessControl.roleSettings.configuration.rolesObject array. Each role is defined with:

  • name — Display name (used in UIs and documentation)
  • value — Role value stored in user.roleId and session

Example Custom Roles Configuration:

{
  "authentication": {
    "accessControl": {
      "roleSettings": {
        "rbacIsActive": true,
        "configuration": {
          "rolesObject": [
            { "name": "Manager", "value": "manager" },
            { "name": "Editor", "value": "editor" },
            { "name": "Viewer", "value": "viewer" }
          ]
        }
      }
    }
  }
}

Usage in Business Logic:

Role names (both system and custom) are assets that should be referenced in authorization business logic:

  • In MScript expressions: this.session.roleId === "admin"
  • In Business API auth options: requiredRole: "admin"
  • In permission checks: PermissionCheckAction with role-based conditions
  • In access control rules: Role-based where clauses and filters

Note: The user.roleId property stores the role value (not the role name). When usersHaveMultipleRoles is enabled, roleId becomes an array of role values.


5. givenPermission Data Object (Conditional)

The givenPermission data object is generated when Permission-Based Access Control (PBAC) is active (pbacIsActive is true). This data object stores permission assignments — it records which permissions are granted to roles, user groups, users, or specific objects.

Naming Convention:

  • Data Object Name: givenPermission
  • Model Name: GivenPermission (PascalCase)
  • Service Reference: auth:givenPermission

System-Owned Properties:

Property NameTypeRequiredDescription
idUUIDYesUnique identifier for the permission assignment record
permissionNameStringYesReference to the named permission. Can be formatted as: "groupName.permissionName" (specific permission), "permissionName" (permission without group), or "groupName.*" (all permissions in a group)
roleIdStringNoRole name to which the permission is assigned (for role-based permissions)
subjectUserIdStringNoUser ID to whom the permission is assigned (for user-based permissions)
subjectUserGroupIdStringNoUser group ID to which the permission is assigned (for group-based permissions)
objectIdStringNoObject ID for which the permission is given (for object-based permissions/OBAC)
canDoBooleanYesWhether the permission is active. Default: true. Can be set to false to explicitly deny a permission (overrides more general positive permissions)
{tenantName}IdUUIDConditionalTenant ID (when multi-tenancy is active)

Note: Permissions themselves are hardcoded/defined in the PBAC configuration via PermissionGroups in AccessControl.permissionSettings.configuration.permissionGroups. The givenPermission data object only stores assignments of these predefined permissions to roles, users, groups, or objects.


6. tenant Data Object (Conditional)

The tenant data object is generated when multi-tenancy is active (useMultiTenantFeature is true).

Naming Convention:

  • Data Object Name: {tenantName} (e.g., client, store, workspace)
  • Model Name: {TenantName} (PascalCase, e.g., Client, Store, Workspace)
  • Service Reference: auth:{tenantName}

System-Owned Properties:

Property NameTypeRequiredDescription
idUUIDYesUnique identifier for the tenant
codenameStringYesUnique codename for the tenant (used in URLs, tokens)
fullnameStringYesDisplay name of the tenant
avatarStringNoURL to tenant's avatar image

Custom Properties: Architects can add custom properties via ProjectAuthentication.tenantProperties array.

Initial Data:

  • Root Tenant: Automatically created with codename "root" for SaaS-level operations

Automatic Business APIs and REST Routes

Mindbricks automatically generates Business APIs for the auth service data objects. The REST routes are generated based on the API name and crudType, following RESTful conventions.

For detailed route generation rules, see the Introduction document.

User Data Object APIs

Business API NameCRUD TypeREST RouteHTTP MethodDescriptionAuth Requirements
getUserget/auth-api/v1/users/:userIdGETGet user profile information (admin or self)Login required, ownership check or admin roles
updateProfileupdate/auth-api/v1/profile/:userIdPATCHUser updates their own profileLogin required, ownership check (superAdmin can update anyone)
updateUserupdate/auth-api/v1/users/:userIdPATCHAdmin updates user profileLogin required, admin roles (prevents updating higher roles)
createUsercreate/auth-api/v1/usersPOSTAdmin creates a new user manuallyLogin required, admin roles
registerUsercreate/auth-api/v1/registeruserPOSTPublic user registration (single-tenant only)Public (if userRegisterIsPublic is true and not multi-tenant)
register{TenantName}Ownercreate/auth-api/v1/register{tenantName}ownerPOSTPublic registration as tenant owner (multi-tenant only)Public, creates both user and tenant
register{TenantName}Usercreate/auth-api/v1/register{tenantName}userPOSTPublic registration to existing tenant (multi-tenant only)Public, creates user with tenantUser role
archiveProfiledelete/auth-api/v1/archiveprofile/:userIdDELETEUser archives their own profileLogin required, ownership check (prevents SuperAdmin deletion)
deleteUserdelete/auth-api/v1/users/:userIdDELETEAdmin deletes user profileLogin required, admin roles (prevents SuperAdmin deletion)
listUserslist/auth-api/v1/usersGETAdmin lists users (paginated, cached)Login required, admin roles
searchUserslist/auth-api/v1/searchusersGETAdmin searches users by email/fullnameLogin required, admin roles, requires keyword query param, uses search filter
updateUserRoleupdate/auth-api/v1/userrole/:userIdPATCHAdmin updates user roleLogin required, admin roles (prevents assigning higher roles), custom roleId parameter
updateUserPasswordupdate/auth-api/v1/userpassword/:userIdPATCHUser updates their own passwordLogin required, ownership check (requires oldPassword and newPassword parameters)
updateUserPasswordByAdminupdate/auth-api/v1/userpasswordbyadmin/:userIdPATCHAdmin updates any user's passwordLogin required, admin roles (prevents updating higher roles), custom password parameter
getBriefUserget/auth-api/v1/briefuser/:userIdGETPublic brief user informationPublic, returns only id, name/fullname, avatar (via selectClause)

Note:

  • Replace {TenantName} with the actual tenant name (e.g., Client, Store, Workspace)
  • registerUser is only generated when userRegisterIsPublic is true and multi-tenancy is disabled
  • register{TenantName}Owner and register{TenantName}User are only generated when multi-tenancy is active
  • All user APIs have gRPC controllers enabled

UserGroup Data Object APIs (if userGroupsActive is true)

Business API NameCRUD TypeREST RouteHTTP MethodDescriptionAuth Requirements
createUserGroupcreate/auth-api/v1/usergroupsPOSTAdmin creates a new user groupLogin required, admin roles (superAdmin always allowed)
updateUserGroupupdate/auth-api/v1/usergroups/:userGroupIdPATCHAdmin updates user groupLogin required, ownership check, admin roles
deleteUserGroupdelete/auth-api/v1/usergroups/:userGroupIdDELETEAdmin deletes user groupLogin required, ownership check, admin roles
getUserGroupget/auth-api/v1/usergroups/:userGroupIdGETGet user group informationPublic (no login required)
listUserGroupslist/auth-api/v1/usergroupsGETList all user groupsPublic (no login required), sorted by groupName

UserGroupMember Data Object APIs (if userGroupsActive is true)

Business API NameCRUD TypeREST RouteHTTP MethodDescriptionAuth Requirements
createUserGroupMembercreate/auth-api/v1/usergroupmembersPOSTAdmin adds user to groupLogin required, ownership check, admin roles
deleteUserGroupMemberdelete/auth-api/v1/usergroupmembers/:userGroupMemberIdDELETEAdmin removes user from groupLogin required, ownership check, admin roles
getUserGroupMemberget/auth-api/v1/usergroupmembers/:userGroupMemberIdGETGet user group member informationPublic (no login required)
listUserGroupMemberslist/auth-api/v1/listusergroupmembers/:groupIdGETList members of a group (filtered by groupId)Public (no login required), includes joined user data

GivenPermission Data Object APIs (if pbacIsActive is true)

Business API NameCRUD TypeREST RouteHTTP MethodDescriptionAuth Requirements
createGivenPermissioncreate/auth-api/v1/givenpermissionsPOSTAdmin creates permission assignment (general)Login required, admin roles
createRolePermissioncreate/auth-api/v1/rolepermissionPOSTAdmin assigns permission to a roleLogin required, admin roles (superAdmin always allowed)
createUserPermissioncreate/auth-api/v1/userpermissionPOSTAdmin assigns permission to a userLogin required, admin roles (superAdmin always allowed)
createGroupPermissioncreate/auth-api/v1/grouppermissionPOSTAdmin assigns permission to a user groupLogin required, admin roles (superAdmin always allowed)
createPermissionForRoleAndGroupcreate/auth-api/v1/permissionforroleandgroupPOSTAdmin assigns permission to role+group combinationLogin required, admin roles (superAdmin always allowed)
createObjectPermissioncreate/auth-api/v1/objectpermissionPOSTAdmin assigns permission to user for specific objectLogin required, admin roles (superAdmin always allowed)
createObjectPermissionForGroupcreate/auth-api/v1/objectpermissionforgroupPOSTAdmin assigns permission to group for specific objectLogin required, admin roles (superAdmin always allowed)
createObjectPermissionForRolecreate/auth-api/v1/objectpermissionforrolePOSTAdmin assigns permission to role for specific objectLogin required, admin roles (superAdmin always allowed)
createObjectPermissionForRoleAndGroupcreate/auth-api/v1/objectpermissionforroleandgroupPOSTAdmin assigns permission to role+group for specific objectLogin required, admin roles (superAdmin always allowed)
updateGivenPermissionupdate/auth-api/v1/givenpermissions/:givenPermissionIdPATCHAdmin updates permission assignmentLogin required, admin roles (superAdmin always allowed)
deleteGivenPermissiondelete/auth-api/v1/givenpermissions/:givenPermissionIdDELETEAdmin deletes permission assignmentLogin required, admin roles
getGivenPermissionget/auth-api/v1/givenpermissions/:givenPermissionIdGETGet permission assignment informationPublic (no login required)
listGivenPermissionslist/auth-api/v1/givenpermissionsGETList all permission assignmentsPublic (no login required), sorted by name

Tenant Data Object APIs (if multi-tenancy is active)

Business API NameCRUD TypeREST RouteHTTP MethodDescriptionAuth Requirements
create{TenantName}create/auth-api/v1/{tenantName}sPOSTSaaS admin creates tenant manuallyLogin required, SaaS-level, superAdmin/saasAdmin only
get{TenantName}get/auth-api/v1/{tenantName}s/:{tenantName}IdGETAdmin gets tenant informationLogin required, SaaS-level, ownership check, admin roles
getBrief{TenantName}get/auth-api/v1/brief{tenantName}/:{tenantName}IdGETPublic brief tenant informationPublic, returns only id, name, codename, fullname, avatar
get{TenantName}ByCodenameget/auth-api/v1/{tenantName}bycodename/:codenameGETPublic get tenant by codenamePublic, custom route path (not standard /auth-api/v1/{tenantName}s/:id)
listRegistered{TenantName}slist/auth-api/v1/registered{tenantName}sGETSaaS users list registered tenantsLogin required, SaaS-level, saas roles (not paginated)
listBrief{TenantName}slist/auth-api/v1/brief{tenantName}sGETPublic list brief tenant informationPublic, returns only name, codename, fullname, avatar (not paginated)
update{TenantName}update/auth-api/v1/{tenantName}s/:{tenantName}IdPATCHAdmin updates tenantLogin required, ownership check, admin roles
delete{TenantName}delete/auth-api/v1/{tenantName}s/:{tenantName}IdDELETEAdmin deletes tenantLogin required, ownership check, admin roles

Note: Replace {TenantName} with the actual tenant name (e.g., Client, Store, Workspace). The route uses the pluralized form (e.g., /auth/clients, /auth/stores).


Auth Service Additional Routes

The auth service includes additional authentication and session management routes beyond the common session routes. These are mounted at /auth-api (without version).

RouteHTTP MethodDescriptionAuth Requirements
/loginGETGet login page HTMLPublic
/loginPOSTUser login (creates session, returns JWT token)Public
/reloginGETRefresh/renew existing sessionLogin required (returns 401 if no valid session)
/realtimetokenGETGet realtime event token for WebSocket connectionsLogin required
/getusersessionsGETGet all active sessions for a userLogin required
/getuserhistoryGETGet session history for a userLogin required
/deleteusersession/:sessionIdDELETEDelete a specific user sessionLogin required
/deleteallsessionsDELETEDelete all sessions for a userLogin required
/logoutPOSTLogout current user (invalidates session)Login required

Query Parameters:

  • /getusersessions — Optional userId query parameter (defaults to current user)
  • /getuserhistory — Optional userId query parameter (defaults to current user)
  • /deleteusersession/:sessionId — Optional userId query parameter (defaults to current user)
  • /deleteallsessions — Optional userId query parameter (defaults to current user)

Path Parameters:

  • /deleteusersession/:sessionId — The session ID to delete

Request Body (POST /login):

{
  "username": "user@example.com",  // or "email"
  "password": "userpassword"
}

Response (POST /login):

  • Returns session object with JWT token and user information
  • Sets HTTP-only cookie with access token
  • May include cookieError if cookie setting fails

For common session routes available in all services, see General Service Assets.


Automatic Verification Service Routes

Mindbricks automatically generates verification service routes when the corresponding verification features are activated in the VerificationServices configuration. These routes are mounted at /auth-api/verification-services (without version prefix) and are only active when their respective isActive flags are set to true in the pattern design.

Note: All verification routes are system routes and therefore are not versioned. The /verification-services router is mounted to /auth-api, so the full route paths are /auth-api/verification-services/{service}/{action}.

Email Verification Routes

Activation Condition: VerificationServices.emailVerification.emailVerificationIsActive must be true

RouteHTTP MethodDescriptionAuth Requirements
/auth-api/verification-services/email-verification/startPOSTStarts email verification by generating and sending a secret code to the user's emailPublic
/auth-api/verification-services/email-verification/completePOSTCompletes email verification using the received codePublic

Request Body (/start):

{
  "email": "user@example.com"
}

Request Body (/complete):

{
  "email": "user@example.com",
  "secretCode": "123456"
}

Response (/start):

  • Returns codeIndex, timeStamp, date, expireTime, verificationType
  • In test mode: also returns secretCode and userId

Response (/complete):

  • Returns status: "OK", isVerified: true, email
  • In test mode: also returns userId

Mobile Verification Routes

Activation Condition: VerificationServices.mobileVerification.mobileVerificationIsActive must be true

RouteHTTP MethodDescriptionAuth Requirements
/auth-api/verification-services/mobile-verification/startPOSTStarts mobile verification by generating and sending a secret code to the user's mobile numberPublic
/auth-api/verification-services/mobile-verification/completePOSTCompletes mobile verification using the received codePublic

Request Body (/start):

{
  "email": "user@example.com"
}

Request Body (/complete):

{
  "email": "user@example.com",
  "secretCode": "123456"
}

Response (/start):

  • Returns codeIndex, timeStamp, date, expireTime, verificationType, masked mobile
  • In test mode: also returns secretCode and userId

Response (/complete):

  • Returns status: "OK", isVerified: true, email
  • In test mode: also returns userId and mobile

Email 2-Factor Authentication Routes

Activation Condition: VerificationServices.email2Factor.email2FactorIsActive must be true

RouteHTTP MethodDescriptionAuth Requirements
/auth-api/verification-services/email-2factor-verification/startPOSTStarts email-based 2FA by generating and sending a secret codeLogin required (session context needed)
/auth-api/verification-services/email-2factor-verification/completePOSTCompletes email 2FA verification using the received codeLogin required

Request Body (/start):

{
  "userId": "user-uuid",
  "sessionId": "session-uuid",
  "reason": "login",
  "client": "web"
}

Request Body (/complete):

{
  "userId": "user-uuid",
  "sessionId": "session-uuid",
  "secretCode": "123456"
}

Response (/start):

  • Returns status: "OK", sessionId, userId, codeIndex, timeStamp, date, expireTime, verificationType
  • In test mode: also returns secretCode

Response (/complete):

  • Returns the updated session object with sessionNeedsEmail2FA: false

Mobile 2-Factor Authentication Routes

Activation Condition: VerificationServices.mobile2Factor.mobile2FactorIsActive must be true

RouteHTTP MethodDescriptionAuth Requirements
/auth-api/verification-services/mobile-2factor-verification/startPOSTStarts mobile-based 2FA by generating and sending a secret code to the user's mobileLogin required (session context needed, requires mobile to be verified)
/auth-api/verification-services/mobile-2factor-verification/completePOSTCompletes mobile 2FA verification using the received codeLogin required

Request Body (/start):

{
  "userId": "user-uuid",
  "sessionId": "session-uuid",
  "reason": "login",
  "client": "web"
}

Request Body (/complete):

{
  "userId": "user-uuid",
  "sessionId": "session-uuid",
  "secretCode": "123456"
}

Response (/start):

  • Returns status: "OK", sessionId, userId, codeIndex, timeStamp, date, expireTime, verificationType
  • In test mode: also returns secretCode

Response (/complete):

  • Returns the updated session object with sessionNeedsMobile2FA: false

Password Reset by Email Routes

Activation Condition: VerificationServices.passwordResetByEmail.passwordResetByEmailIsActive must be true

RouteHTTP MethodDescriptionAuth Requirements
/auth-api/verification-services/password-reset-by-email/startPOSTInitiates password reset by sending a verification code to the user's emailPublic
/auth-api/verification-services/password-reset-by-email/completePOSTCompletes password reset by verifying the code and setting a new passwordPublic

Request Body (/start):

{
  "email": "user@example.com"
}

Request Body (/complete):

{
  "email": "user@example.com",
  "secretCode": "123456",
  "password": "newPassword123"
}

Response (/start):

  • Returns status: "OK", codeIndex, timeStamp, date, expireTime, verificationType
  • In test mode: also returns secretCode and userId

Response (/complete):

  • Returns status: "OK", isVerified: true, email
  • In test mode: also returns userId
  • Automatically sets emailVerified: true on the user

Password Reset by Mobile Routes

Activation Condition: VerificationServices.passwordResetByMobile.passwordResetByMobileIsActive must be true

RouteHTTP MethodDescriptionAuth Requirements
/auth-api/verification-services/password-reset-by-mobile/startPOSTInitiates password reset by sending a verification code to the user's mobile numberPublic
/auth-api/verification-services/password-reset-by-mobile/completePOSTCompletes password reset by verifying the code and setting a new passwordPublic

Request Body (/start):

{
  "email": "user@example.com"
}

Request Body (/complete):

{
  "email": "user@example.com",
  "secretCode": "123456",
  "password": "newPassword123"
}

Response (/start):

  • Returns status: "OK", codeIndex, timeStamp, masked mobile, date, expireTime, verificationType
  • In test mode: also returns secretCode and userId

Response (/complete):

  • Returns status: "OK", isVerified: true, mobile
  • In test mode: also returns userId
  • Automatically sets mobileVerified: true on the user

Important Notes:

  • All verification routes are rate-limited (typically 60 seconds between requests)
  • Verification codes expire based on the expireTimeWindow configuration
  • In test mode (VerificationSettings.verificationMode: "testMode"), secret codes are returned in responses for development purposes
  • In live mode (VerificationSettings.verificationMode: "liveMode"), secret codes are only sent via email/SMS
  • Each verification service publishes Kafka events on start and complete actions (see Kafka Topics section below)

Generated Kafka Topics

Database Event Topics

For each data object in the auth service, Kafka topics are automatically generated for database-level events:

User Data Object Topics (DB Events)

Event TypeTopic Name PatternTriggered WhenMessage Structure
created{projectCodeName}-auth-service-dbevent-user-createdUser is created{ user: {...userData} }
updated{projectCodeName}-auth-service-dbevent-user-updatedUser is updated{ user: {...userData} }
deleted{projectCodeName}-auth-service-dbevent-user-deletedUser is deleted{ user: {...userData} }

Example: If project code name is myproject, the topics would be:

  • myproject-auth-service-dbevent-user-created
  • myproject-auth-service-dbevent-user-updated
  • myproject-auth-service-dbevent-user-deleted

UserGroup Data Object Topics (DB Events, if userGroupsActive is true)

Event TypeTopic Name PatternTriggered When
created{projectCodeName}-auth-service-dbevent-usergroup-createdUser group is created
updated{projectCodeName}-auth-service-dbevent-usergroup-updatedUser group is updated
deleted{projectCodeName}-auth-service-dbevent-usergroup-deletedUser group is deleted

UserGroupMember Data Object Topics (DB Events, if userGroupsActive is true)

Event TypeTopic Name PatternTriggered When
created{projectCodeName}-auth-service-dbevent-usergroupmember-createdUser added to group
updated{projectCodeName}-auth-service-dbevent-usergroupmember-updatedGroup membership updated
deleted{projectCodeName}-auth-service-dbevent-usergroupmember-deletedUser removed from group

GivenPermission Data Object Topics (DB Events, if pbacIsActive is true)

Event TypeTopic Name PatternTriggered When
created{projectCodeName}-auth-service-dbevent-givenpermission-createdPermission assignment is created
updated{projectCodeName}-auth-service-dbevent-givenpermission-updatedPermission assignment is updated
deleted{projectCodeName}-auth-service-dbevent-givenpermission-deletedPermission assignment is deleted

Tenant Data Object Topics (DB Events, if multi-tenancy is active)

Event TypeTopic Name PatternTriggered When
created{projectCodeName}-auth-service-dbevent-{tenantName}-createdTenant is created
updated{projectCodeName}-auth-service-dbevent-{tenantName}-updatedTenant is updated
deleted{projectCodeName}-auth-service-dbevent-{tenantName}-deletedTenant is deleted

Note: Replace {tenantName} with the actual tenant name (e.g., client, store, workspace).

Business API Event Topics (if raiseApiEvent is true)

Business APIs that have raiseApiEvent set to true (default) publish events to topics following the pattern: {projectCodeName}-auth-service-{resource}-{actionPassiveForm}

Examples:

  • login API → {projectCodeName}-auth-service-user-logged-in (if resource is "user")
  • registerUser API → {projectCodeName}-auth-service-user-registered (if resource is "user")
  • updateUserRole API → {projectCodeName}-auth-service-userrole-updated (if resource is "userRole")

Note: The exact topic name depends on the API's resource name and action passive form. Not all Business APIs necessarily publish events (depends on raiseApiEvent setting).

Verification Service Event Topics

When verification services are active, they automatically publish Kafka events on start and complete actions. These events are published using the ServicePublisher and include the verification data, session (when available), and request ID. These topics follow the pattern: {projectCodeName}-auth-service-{verificationType}-{action}

Event Publishing Details:

  • Start Events: Published immediately after a verification process is initiated (when /start route is called successfully)
  • Complete Events: Published immediately after a verification process is successfully completed (when /complete route is called successfully and verification code matches)
  • Session Attachment: Session object is automatically attached to the Kafka message when available (for authenticated routes like 2FA)
  • Message Structure: Each event includes the full verification data object with user information, timestamps, and verification metadata

Email Verification Topics (if emailVerificationIsActive is true)

EventTopic Name PatternTriggered WhenMessage Structure
start{projectCodeName}-auth-service-email-verification-startEmail verification process is initiated{ userId, email, codeIndex, timeStamp, date, expireTime, verificationType, user: {...userData} }
complete{projectCodeName}-auth-service-email-verification-completeEmail verification is successfully completed{ userId, email, isVerified: true, user: {...userData} }

Mobile Verification Topics (if mobileVerificationIsActive is true)

EventTopic Name PatternTriggered WhenMessage Structure
start{projectCodeName}-auth-service-mobile-verification-startMobile verification process is initiated{ userId, mobile, codeIndex, timeStamp, date, expireTime, verificationType, user: {...userData} }
complete{projectCodeName}-auth-service-mobile-verification-completeMobile verification is successfully completed{ userId, mobile, isVerified: true, user: {...userData} }

Email 2FA Topics (if email2FactorIsActive is true)

EventTopic Name PatternTriggered WhenMessage Structure
start{projectCodeName}-auth-service-email-2FA-startEmail 2FA process is initiated{ userId, sessionId, email, reason, client, codeIndex, timeStamp, date, expireTime, verificationType, user: {...userData} }
complete{projectCodeName}-auth-service-email-2FA-completeEmail 2FA is successfully completed{ userId, sessionId, email, isVerified: true, user: {...userData} }

Mobile 2FA Topics (if mobile2FactorIsActive is true)

EventTopic Name PatternTriggered WhenMessage Structure
start{projectCodeName}-auth-service-mobile-2FA-startMobile 2FA process is initiated{ userId, sessionId, mobile, reason, client, codeIndex, timeStamp, date, expireTime, verificationType, user: {...userData} }
complete{projectCodeName}-auth-service-mobile-2FA-completeMobile 2FA is successfully completed{ userId, sessionId, mobile, isVerified: true, user: {...userData} }

Password Reset by Email Topics (if passwordResetByEmailIsActive is true)

EventTopic Name PatternTriggered WhenMessage Structure
start{projectCodeName}-auth-service-password-reset-by-email-startPassword reset by email is initiated{ userId, email, codeIndex, timeStamp, date, expireTime, verificationType, user: {...userData} }
complete{projectCodeName}-auth-service-password-reset-by-email-completePassword reset by email is successfully completed{ userId, email, isVerified: true, user: {...userData} }

Password Reset by Mobile Topics (if passwordResetByMobileIsActive is true)

EventTopic Name PatternTriggered WhenMessage Structure
start{projectCodeName}-auth-service-password-reset-by-mobile-startPassword reset by mobile is initiated{ userId, mobile, codeIndex, timeStamp, date, expireTime, verificationType, user: {...userData} }
complete{projectCodeName}-auth-service-password-reset-by-mobile-completePassword reset by mobile is successfully completed{ userId, mobile, isVerified: true, user: {...userData} }

Note: Replace {projectCodeName} with your actual project code name. These topics are only created when the corresponding verification service is activated in the VerificationServices configuration.


Database Utility Functions

For each data object in the auth service, Mindbricks generates database utility functions in the dbLayer module. These follow the standard naming convention:

Function Pattern: {operation}{ModelName}

User Data Object Functions

const {
  createUser,
  createBulkUser,
  getUserById,
  getUserAggById,
  getUserListByQuery,
  getUserByQuery,
  getUserStatsByQuery,
  getIdListOfUserByField,
  updateUserById,
  updateUserByIdList,
  updateUserByQuery,
  deleteUserById,
  deleteUserByQuery
} = require("dbLayer");

UserGroup Data Object Functions (if userGroupsActive is true)

const {
  createUserGroup,
  createBulkUserGroup,
  getUserGroupById,
  getUserGroupAggById,
  getUserGroupListByQuery,
  getUserGroupByQuery,
  getUserGroupStatsByQuery,
  getIdListOfUserGroupByField,
  updateUserGroupById,
  updateUserGroupByIdList,
  updateUserGroupByQuery,
  deleteUserGroupById,
  deleteUserGroupByQuery
} = require("dbLayer");

UserGroupMember Data Object Functions (if userGroupsActive is true)

const {
  createUserGroupMember,
  createBulkUserGroupMember,
  getUserGroupMemberById,
  getUserGroupMemberAggById,
  getUserGroupMemberListByQuery,
  getUserGroupMemberByQuery,
  getUserGroupMemberStatsByQuery,
  getIdListOfUserGroupMemberByField,
  updateUserGroupMemberById,
  updateUserGroupMemberByIdList,
  updateUserGroupMemberByQuery,
  deleteUserGroupMemberById,
  deleteUserGroupMemberByQuery
} = require("dbLayer");

GivenPermission Data Object Functions (if pbacIsActive is true)

const {
  createGivenPermission,
  createBulkGivenPermission,
  getGivenPermissionById,
  getGivenPermissionAggById,
  getGivenPermissionListByQuery,
  getGivenPermissionByQuery,
  getGivenPermissionStatsByQuery,
  getIdListOfGivenPermissionByField,
  updateGivenPermissionById,
  updateGivenPermissionByIdList,
  updateGivenPermissionByQuery,
  deleteGivenPermissionById,
  deleteGivenPermissionByQuery
} = require("dbLayer");

Tenant Data Object Functions (if multi-tenancy is active)

Similar functions are generated for the tenant data object (e.g., createClient, getClientById, etc., where Client is the tenant name).

Note: There are no database utility functions for roles, as roles are system constants, not data objects.

For detailed documentation on all database utility functions, see the Database Utility Functions guide.


Automatically Populated Initial Data

Super Admin User

On deployment, Mindbricks automatically creates a Super Admin user with:

  • Email: Value from LoginDefUserSettings.superAdminEmail
  • Password: Value from LoginDefUserSettings.superAdminPassword
  • Role: superAdmin (system role)
  • Email Verified: true
  • Full Access: Complete system access across all services and tenants

Root Tenant (Multi-Tenant Only)

When multi-tenancy is active, a root tenant is automatically created:

  • Codename: "root"
  • Fullname: "Root" (or as configured)
  • Purpose: SaaS-level operations and global administration

Was this page helpful?
Built with Documentation.AI

Last updated Dec 29, 2025