Skip to main content

Заголовки запроса

string
обязательно
API-токен сервисного пользователя в формате Bearer YOUR_TOKEN. Токен выпускает владелец школы в кабинете: Управление → Школа → Для разработчиков → API-ключи — подробнее в разделе «Аутентификация».
integer
обязательно
Числовой ID продавца — аккаунта, которому принадлежит школа. Скопируйте его на странице API-ключи в карточке «Данные для интеграции → Идентификаторы». По этому ID проверяются права токена.
integer
обязательно
Числовой ID школы, берётся там же, где Seller-Id. Значение должно совпадать со школой продавца — иначе вернётся ошибка 400 с cause: "ForbiddenSchoolMismatch".
Состояния пользователя — это ключ-значение записи в базе, связанные с конкретным пользователем. Чтение и запись доступны только для ограниченного списка ключей (whitelist). Для некоторых ключей применяется маскирование при чтении.Эндпоинты ниже работают в контексте школы и требуют прав управления пользователями школы.Установка значения через PUT полностью замещает предыдущее значение ключа. Частичных обновлений (merge) нет.

Список поддерживаемых ключей

  • Тип: object.
  • GET/SET: да/да.
  • Маскирование: нет.
  • Назначение: UTM/реферальные параметры первичного визита/регистрации.
  • UtmSignupParams хранится как объект произвольных строковых пар ключ-значение (например, utm_source, utm_medium, fbclid).
Success (GET UtmSignupParams)
Body (SET UtmSignupParams)
  • Тип: boolean.
  • GET/SET: да/да.
  • Маскирование: нет.
  • Назначение: Флаг заполнения персональных данных.
  • PersonalInfoFilled — булево значение true / false, отражающее факт заполнения персональных данных.
Success (GET PersonalInfoFilled)
Body (SET PersonalInfoFilled)
  • Тип: object.
  • GET/SET: да/да.
  • Маскирование: нет.
  • Назначение: прогресс прохождения онбординга пользователем.
Body (SET OnBoardingProgress)
  • Тип: array.
  • GET/SET: да/да.
  • Маскирование: нет.
  • Назначение: выбранные пользователем категории контента (массив ID).
Body (SET ContentCategoryIds)
Запись (SET) разрешена только для ключей: UtmSignupParams, PersonalInfoFilled, OnBoardingProgress, ContentCategoryIds. Чтение (GET) дополнительно доступно для VkToken (возвращается замаскированным). Запрос к ключу вне этого списка вернёт ошибку 400 с cause: "Unauthorized" и сообщением Not allowed key <ключ> — это ограничение ключа, а не проблема с токеном. Несуществующее имя ключа отклоняется валидацией (400).

Получить состояние по ключу

GET /saas/v2/user/:userId/state/get?key=PersonalInfoFilled

Параметры

integer
обязательно
Числовой ID пользователя в Exode (поле id из user/find или user/list). Пользователь должен принадлежать школе из заголовка School-Id.
string
обязательно
Ключ состояния — одно из значений из списка выше, с учётом регистра.

Ответ

any
обязательно
Значение состояния. Если значение для ключа ещё не записано — null.

Установить состояние по ключу

PUT /saas/v2/user/:userId/state/set?key=PersonalInfoFilled

Параметры

integer
обязательно
Числовой ID пользователя в Exode (поле id из user/find или user/list). Пользователь должен принадлежать школе из заголовка School-Id.
string
обязательно
Ключ состояния — одно из значений из списка выше, с учётом регистра.
any
обязательно
Значение, записываемое в состояние. Тип зависит от ключа.

Ответ

boolean
обязательно
Флаг успешной записи состояния.

Требования к правам доступа

Требуется аутентификация по токену и право «Управление пользователями школы» (SchoolManageUsers).

Обновлено: 2026-09-25 13:43 UTC