Skip to main content

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

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

Как это работает

Генерация отчета выполняется через асинхронный workflow. Процесс состоит из трех шагов:
1

Создание задачи на генерацию

Отправьте POST запрос на /saas/v2/query-export/generate с указанием типа отчета, переменных фильтрации и формата. В ответ (HTTP 201) вы получите объект с полем payload, содержащим uuid — идентификатор для отслеживания результата. Сам файл на этом шаге еще не создан.
2

Получение результата

Отправляйте GET запрос на
/saas/v2/workflow-execution/:executionUuid/result,
подставив uuid из первого шага, с интервалом 2–5 секунд. Повторяйте запрос до тех пор, пока status не станет Completed (или Failed). Сразу после запуска payload может быть null — задача еще не начала выполняться, продолжайте опрос.
3

Скачивание файла

При status: Completed скачайте файл по ссылке payload.result.fileUrl. Скачивайте сразу: результат хранится ограниченное время (подробнее — на странице получения результата).
Сразу, со статусом 400 и cause: "validation", отклоняется только запрос с неизвестным type, format или с variables, которое не является объектом. Ошибки внутри variables (неизвестное поле фильтра, неверное значение enum, отсутствующий filter) и нехватка прав на данные не приводят к ошибке этого запроса: задача создается, а при опросе результата приходит status: Failed. Причина ошибки в ответе не передается — сверьте запрос со страницей типа отчета и правами токена.

Создание запроса на выгрузку

Rate limit: 100 запросов в час на сервисного пользователя (токен). При превышении возвращается HTTP 429 — подробнее в разделе Rate-limit. Опрос результата в этот лимит не входит.
string
Язык заголовков колонок и переводимых значений в файле: ru, en, uz, qa. Если заголовок не передан, колонки называются по-английски. Названия колонок на страницах типов отчетов приведены для ru.

Параметры запроса

string
обязательно
Тип отчета. Определяет, какие данные будут выгружены. Доступные значения:
object
обязательно
Переменные для запроса: filter (обязателен для всех типов; чтобы выгрузить все записи, передайте {}) и sort (необязателен). Набор полей зависит от выбранного type и описан на странице типа отчета — ссылки в списке выше.Поля проверяются при генерации, а не при создании задачи: неизвестное поле или неверное значение приводит к status: Failed на шаге получения результата. Даты в диапазонах (...DateRange) передаются в формате ISO 8601, например 2025-01-01T00:00:00Z.
string
Формат выходного файла. По умолчанию — EXPORT_FORMAT_XLSX.
  • EXPORT_FORMAT_XLSX — Excel (.xlsx). Единственный формат с дополнительными листами (например, Course Progress или Billing Details — см. страницу типа отчета).
  • EXPORT_FORMAT_CSV — CSV (.csv): только основной лист, разделитель — запятая, кодировка UTF-8 с BOM (открывается в Excel без проблем с кириллицей), первая строка — заголовки колонок.
  • EXPORT_FORMAT_JSON — JSON (.json): массив объектов, по одному на строку отчета. Ключи — технические имена колонок на английском (userId, fullName, …), они не зависят от Ux-Language.

Поля ответа

boolean
Результат выполнения запроса.
number
HTTP-код ответа (например, 201).
object
Объект задачи генерации.

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

Сам запрос на генерацию требует только аутентификации по токену сервисного пользователя школы. Данные для файла собираются от имени этого же пользователя, поэтому токену нужно право на выгружаемые данные — одно из перечисленных для типа отчета:
Если права нет, запрос на генерацию все равно вернет 201, а выгрузка завершится со status: Failed. Где включить права — в справочнике прав.

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