Skip to main content
Every integration with Cativa starts with the user. This page describes the User model at the conceptual level, the canonical endpoint for credential validation, and the admin CRUD you use to create, update, and link users to your CRM or ERP.

The User model

Each user belongs to exactly one tenant and is identified by an id (GUID). The same user never exists in two tenants: if the same person is in two communities, those are two distinct records. The most commonly used fields in authenticated responses:
The detailed contract for each response (exact field names and types) is published in the API Reference tab, under the Users / Auth tags. The JSON on this page is illustrative.

Roles (role)

Account status (status)

Every community has a system user with userName = "admin" (internal to the platform). It never appears in listings, searches, or pickers. Ignore it if it shows up in an export.

Validate credentials and discover the associated user

The canonical endpoint for partners to validate a credential and discover the associated user is GET /auth/me. Call it at your integration’s boot and whenever you need to confirm the context.
Illustrative response:
Use the response to:
  • Confirm the key is valid and points to the right tenant (the customer field).
  • Capture the id of the user tied to the key (useful for your own logs and audit).
  • Refresh the session via the returned accessToken / refreshToken.

Admin user CRUD

Partners with an admin API Key manage users directly through the API, under the /admin/users prefix. This is the surface you use to keep the Cativa base in sync with your own system.

Create a user

Illustrative response (201 Created):
password is optional. If omitted, the user comes in through an invite or password-set flow, depending on the tenant’s configuration.

Find a user by email

The most direct path when you have the email from your CRM and don’t have the userId:

Update single fields

Prefer the single-field routes for focused changes: they are safer than a full PUT (they don’t overwrite other fields by accident).

Bind your system’s id (external-id)

Store your CRM/ERP identifier on the Cativa user. This lets you correlate records on both sides without relying on the email (which can change).

Ban and delete

End-to-end: sync a member from your CRM

1

Look up by email

Call GET /admin/users/email/{email}. If it returns 200, the user already exists: store the id and skip to step 3.
2

Create if missing

If the lookup returns 404, call POST /admin/users with the CRM data. Store the id from the response.
3

Bind the external id

Call PATCH /admin/users/{userId}/external-id with your system’s identifier. From here on both sides are correlated.
4

Grant access with a badge

Assign the badge that unlocks the right group/course. See Badges as Permissions.
The applied step-by-step is in Sync members from your CRM.

Self-service user endpoints

Beyond the admin CRUD, the authenticated user manages their own profile:
  • GET /users/profile/{userName}. A user’s public profile by handle.
  • PUT /users/profile. Update your own profile.
  • GET /users/search?query=.... Search users by name (respects the admin system-user filter).
Public profile (illustrative):

Common errors

The user does not exist in that tenant. This is the expected signal to create via POST /admin/users.
A user with that email already exists in the tenant. Look up by email before creating (the standard sync flow).
The key lacks admin scope. /admin/users routes require an admin API Key. Ask the tenant admin for the right credential.

Next steps

Badges as Permissions

How to assign credentials to grant access to groups and courses.

Communities and Spaces

Where the user fits in the Community > Space > Group hierarchy.