user object describes a user account in an Exode school. It is returned by the user/create,
user/update, user/upsert and user/find methods, in nested fields of other entities (invoices, accesses, webhooks) and,
together with the profile object, in userWithProfile.
The set of fields strictly matches the public response schema: internal/private fields (internal metadata,
tokens) are not returned.
user fields
Identifiers and logins
integer
required
User ID in Exode.
string
required
User UUID.
string
required
Domain login. Along with
email and phone, it is used as a sign-in field for the school. By default it is generated
in the id12345 format; you can set your own login (Latin letters, digits, _ and dots not at the edges, up to 65 characters) in
user/create/update/upsert.string | null
User email.
string | null
Phone number in international format.
integer | null
Telegram ID.
integer | null
VK ID (when signing in via VK).
string | null
Apple ID (when signing in via Apple).
string | null
External ID from your system (CRM/LMS). Set in
user/create/update/upsert and used
for lookup in user/find: it links the Exode user to a record in your database. It is not a login:
you cannot sign in with extId.integer | null
ID of the user’s school.
Statuses
enum
required
Account status, the single source of truth for the account lifecycle:
Active, OnLeave, Banned, Blocked, Terminated, Deleted.Active: regular access;OnLeave: “on leave” (informational, does not block access; synchronized automatically with the employee’s absences, including hourly recalculation by the calendar);Banned: banned by an administrator/moderator; when the ban is lifted, the actual status is recalculated automatically (Terminated/OnLeave/Active, based on employments and absences);Blocked: blocked by an administrator;Terminated: terminated (set automatically on termination of the last active employment; rehiring returnsActive);Deleted: account deleted (credentials are wiped, data is kept for reports); set by the system on deletion and cannot be passed manually.
Banned, Blocked, Terminated and Deleted close access: sign-in is denied, sessions are terminated,
product enrollments are blocked.boolean
required
The user has confirmed sign-in (via a code/payment).
boolean
required
Derived from
status: true when the status is Banned or Deleted. Returned for compatibility;
use status to manage blocking.boolean
required
Derived from
status: true when the account is not deleted (status ≠ Deleted). Returned for
compatibility; filter and manage access by status.boolean | null
“Live” access:
status is not one of the blocking statuses (Banned/Blocked/Terminated/Deleted).Locale and activity
enum | null
Interface language:
Ru, Uz, En, Qa.integer | null
Time zone offset from UTC in hours (for example,
5).string | null
Last activity (ISO 8601).
string | null
The user’s current local time, taking the time zone into account.
boolean | null
Heuristic for “night time” for the user.
Platform and gamification
integer
required
”Stars” balance in the gamification system.
System audit fields
string
required
Creation date (ISO 8601).
string
required
Last update date (ISO 8601).
string | null
Archive date (ISO 8601) or
null.profile fields
In userWithProfile, the user object is extended with the profile field (can be null).
integer
required
Profile ID.
integer | null
User ID.
boolean
required
Whether the profile is official (verified).
string | null
First name.
string | null
Last name.
string | null
Full name.
string | null
Short name.
object
User avatar: image links in different sizes.
string | null
Date of birth (
YYYY-MM-DD).enum
Sex:
Men: male, Women: female, Ufo: not specified (default value).string | null
Country.
string | null
City.
enum
Role:
Student, Tutor, Parent.string | null
Status (free text).
string | null
Title.
string | null
Emoji title.
object
Title state (manual/location/achievements).
string
required
Profile creation date (ISO 8601).
string
required
Profile update date (ISO 8601).
Example userWithProfile object
Updated: 2026-09-25 14:33 UTC