ExodeAPI — типизированный HTTP-клиент, покрывающий эндпоинты /saas/v2/*. Предназначен для сервера (Node.js ≥ 18,
использует встроенный fetch), берёт на себя аутентификацию, сериализацию query и тела запроса, распаковку
ответа (payload) и обработку ошибок.
Полная REST-спецификация (request/response, коды ошибок) — в разделе Exode API.
SDK — типизированная обёртка над тем же контрактом; типы выведены из тех же серверных zod-схем.
Инициализация
Для подключения нужны три значения: API-токен,sellerId и schoolId. Все три выдаются в кабинете школы на
странице API-ключей — пошагово это описано в разделе Работа с API. Там же настраиваются
права токена: каждому методу нужно своё право (указано на странице метода в разделе Exode API).
Параметры конфигурации
number
обязательно
Идентификатор продавца. Передаётся в заголовке
Seller-Id.number
обязательно
Идентификатор школы. Передаётся в заголовке
School-Id.string
обязательно
API-токен сервисного пользователя. Передаётся в
Authorization: Bearer <token>.string
Базовый URL API. По умолчанию
https://api.exode.biz/saas/v2.number
Таймаут запроса в миллисекундах. По умолчанию
30000. При превышении — ExodeAPIError с cause: "Timeout" (code 408).Доступные ресурсы
Клиент предоставляет namespaceschool с девятью ресурсами:
school.user
CRUD пользователей, поиск, состояние (state), удаление, токены авторизации.
school.staff
Оргструктура (HR): подразделения, должности, трудоустройства, руководители, отсутствия.
school.group
Списки групп и участников, массовое добавление/удаление участников.
school.course
Список курсов и прогресс участников по курсу.
school.certificate
Список выданных сертификатов.
school.productAccess
Список доступов к продуктам.
school.invoice
Список счетов.
school.form
Макеты форм и значения кастомных полей.
school.queryExport
Генерация и опрос результата выгрузок.
Пользователи (school.user)
Enum-параметры (
UserStatus, ProfileRole, CourseType и др.) в TypeScript передавайте через
экспортируемые enum’ы: это строковые enum’ы, и строковый литерал вроде 'Active' типизацию не пройдёт.
В JavaScript можно передавать строки напрямую — значения совпадают с именами (UserStatus.Active === 'Active').Сотрудники (school.staff)
Оргструктура для HR-интеграций (1С, HRM): подразделения, должности, трудоустройства, руководители подразделений
и отсутствия. У большинства методов есть варианты ...ByExtId — для синхронизации по вашему внешнему идентификатору.
Методы доступны только школам корпоративного сегмента (Corporate).
Группы (school.group)
Курсы (school.course)
Сертификаты (school.certificate)
Доступы к продуктам (school.productAccess)
Счета (school.invoice)
Формы (school.form)
Выгрузки (school.queryExport)
Выгрузки работают асинхронно: генерация запускает workflow, результат опрашивается по UUID.
Статусы выполнения
generate ограничен лимитом 100 запросов в час. Типы отчётов и переменные — в разделе
Отчёты и выгрузки.Типизация ответов
Типы всех ответов выведены из тех же серверных zod-схем (черезz.infer) и доступны на импорт
(User, Profile, Session, Group, GroupMember, CourseProgress, FormLayout, FormFieldValue,
а также *Output-типы). Рантайм-валидации на стороне клиента нет: контракты уже проверяются на бэкенде
(@ZodResponse), поэтому zod не попадает в рантайм-бандл — ответ возвращается как есть, строго типизированным.
Обработка ошибок
Все ошибки оборачиваются вExodeAPIError:
Полный список доменных
cause-кодов — в разделе Работа с API.Обновлено: 2026-09-25 13:43 UTC