Skip to main content

User Management

This guide covers how to create users and manage their access to accounts.

Before you start

Read the User concept guide for an explanation of personas, user groups, and the user lifecycle.

Creating a User

Self-Registration (Public API)

An Investor can register themselves without authentication using the public CreateUser mutation. Their account will be in pending state until an admin approves it.

mutation RegisterInvestor {
CreateUser(
firstName: "Alice"
lastName: "Dupont"
email: "alice.dupont@example.com"
mobile: "+33612345678"
persona: customer
firstAccountInformation: {
firstAccountType: individualAccount
}
tosAcknowledged: true
locale: fr
) {
id
email
firstName
lastName
# ...Other CreatedUser fields
}
}

→ Type reference: CreatedUser

The persona field determines the type of user being created. For end Investors, use customer (direct) or distributed_customer (via distributor channel).

Creating a User as Admin or Distributor

When authenticated as an admin or distributor, use the authenticated CreateUser mutation (under RootMutation). This version allows you to:

  • Immediately activate the user (active: true)
  • Send a welcome email (withEmail: true)
  • Assign the user to a distributor advisor
mutation AdminCreateInvestor {
CreateUser(
firstName: "Bob"
lastName: "Leroy"
email: "bob.leroy@example.com"
mobile: "+33655443322"
persona: distributed_customer
firstAccountInformation: {
firstAccountType: individualAccount
}
active: true
withEmail: true
distributorAdvisorId: "advisor-789"
locale: fr
) {
id
email
active
firstName
lastName
# ...Other User fields
}
}

→ Type reference: User

Creating a Corporate User

For a legal entity investor, provide corporateAccountInformation:

mutation CreateCorporateUser {
CreateUser(
firstName: "Céline"
lastName: "Bernard"
email: "celine.bernard@holding.fr"
mobile: "+33677889900"
persona: customer
firstAccountInformation: {
firstAccountType: corporateAccount
corporateAccountInformation: {
corporateName: "Bernard Holding SAS"
representative: {
firstName: "Céline"
lastName: "Bernard"
}
}
}
active: false
) {
id
email
active
firstName
lastName
# ...Other User fields
}
}

→ Type reference: User

Creating a Joint Account User

For a co-subscription with two natural persons:

mutation CreateJointUser {
CreateUser(
firstName: "Paul"
lastName: "Martin"
email: "paul.martin@example.com"
mobile: "+33611223344"
persona: customer
firstAccountInformation: {
firstAccountType: jointAccount
jointAccountInformation: {
secondaryFirstName: "Sophie"
secondaryLastName: "Martin"
secondaryEmail: "sophie.martin@example.com"
secondaryMobile: "+33622334455"
}
}
) {
id
email
active
firstName
lastName
# ...Other User fields
}
}

→ Type reference: User

Activating and Deactivating a User

Activate

Approves a pending user and optionally sends them an access email:

mutation ApproveUser {
ActivateUser(
userId: "456"
withEmail: true
) {
id
active
acceptedAt
}
}

→ Reference: ActivateUser

Deactivate

Suspends a user's access. A comment explaining the reason is required:

mutation SuspendUser {
DeactivateUser(
userId: "456"
withEmail: true
unactiveComment: "Account suspended pending compliance review."
) {
id
active
unactiveComment
}
}

→ Reference: DeactivateUser

Giving Access to an Account

Query a User's Current Accounts

A user already has the Accounts they were created with. To see all Accounts linked to a User:

query UserAccounts {
GetUser(id: "456") {
id
email
accounts {
id
label
accountType {
code
label
}
kycStatusDetailed {
code
label
}
}
}
}

Updating User Information and Permissions

Changes a User's roles, segments, advisor, or other profile information:

mutation UpdateUser {
UpdateUserInfosAndPermissions(
userId: "456"
firstName: "Alice"
lastName: "Dupont-Martin"
distributorAdvisorId: "999"
) {
id
firstName
lastName
}
}

→ Reference: UpdateUserInfosAndPermissions

Sending Access Email

Resends the invitation email with login instructions to a user:

mutation ResendInvitation {
SendEmailAccess(userId: "456") {
id
email
}
}

→ Reference: SendEmailAccess

Listing and Searching Users

query SearchUsers {
GetUsers(
search: "alice"
isActive: true
personas: [customer, distributed_customer]
resultsPerPage: 20
page: 1
) {
edges {
node {
id
email
firstName
lastName
active
acceptedAt
accounts {
id
label
}
}
}
totalCount
}
}

→ Reference: GetUsers

OperationReference
Create a userCreateUser
Fetch a single userGetUser
List usersGetUsers
Activate a userActivateUser
Deactivate a userDeactivateUser
Update user infoUpdateUserInfosAndPermissions
Send access emailSendEmailAccess