QUERY_EXPORT_TYPE_SCHOOL_USER_FIND_MANY
Выгружает список пользователей школы с данными профиля, контактами, статусами доступа и активностью.
Это тип отчёта для метода query-export/generate: передайте его
в поле type, а описанные ниже поля — в variables.
Структура
variables повторяет фильтр и сортировку соответствующего запроса поиска пользователей школы.
Итоговый набор допустимых полей валидирует сервис экспорта — при неизвестном поле оно игнорируется.Переменные (variables)
object
Параметры фильтрации.
Show Свойства filter
Show Свойства filter
integer[]
Фильтр по ID пользователей.
string[]
Фильтр по внешним идентификаторам (
extId). До 250 значений, каждый до 50 символов.string
Поиск по тексту (имя, email, телефон, домен), до 50 символов.
boolean
Фильтр по признаку подтверждённого входа.
boolean
Включать архивных пользователей.
string[]
Фильтр по статусам учётной записи. Массив из значений:
Active, OnLeave, Banned, Blocked,
Terminated, Deleted. Поля active/banned из фильтра удалены — используйте statuses
(например, заблокированные — ["Banned", "Blocked"]).object
Диапазон дат регистрации. Свойства
from и to — даты в формате ISO 8601.object
Диапазон дат последней активности. Свойства
from и to — даты в формате ISO 8601.object
Параметры сортировки. Значения:
ASC (по возрастанию) или DESC (по убыванию).Show Свойства sort
Show Свойства sort
Колонки отчёта
ID пользователя, Имя, Фамилия, Способ входа, Номер телефона, Почта, Telegram, Кол-во курсов, Дата регистрации, Тип регистрации, Кем создан, Дата рождения, Дата последнего входа. При фильтреarchived добавляются «Дата
удаления» и «Кто удалил».
curl --location 'https://api.exode.biz/saas/v2/query-export/generate' \
--header 'Seller-Id: {{ sellerId }}' \
--header 'School-Id: {{ schoolId }}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_TOKEN' \
--data '{
"type": "QUERY_EXPORT_TYPE_SCHOOL_USER_FIND_MANY",
"variables": {
"filter": {
"statuses": ["Active"],
"active": true
},
"sort": {
"createdAt": "DESC"
}
}
}'
const axios = require('axios');
const exportSchoolUsers = async () => {
try {
const response = await axios.post('https://api.exode.biz/saas/v2/query-export/generate', {
type: 'QUERY_EXPORT_TYPE_SCHOOL_USER_FIND_MANY',
variables: {
filter: {
statuses: ['Active'],
active: true
},
sort: {
createdAt: 'DESC'
}
}
}, {
headers: {
'Seller-Id': '{{ sellerId }}',
'School-Id': '{{ schoolId }}',
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_TOKEN'
}
});
const { uuid } = response.data.payload;
console.log('Execution UUID:', uuid);
} catch (error) {
console.error('Error:', error.response?.data || error.message);
}
};
exportSchoolUsers();
<?php
$url = 'https://api.exode.biz/saas/v2/query-export/generate';
$data = [
'type' => 'QUERY_EXPORT_TYPE_SCHOOL_USER_FIND_MANY',
'variables' => [
'filter' => [
'statuses' => ['Active'],
'active' => true
],
'sort' => [
'createdAt' => 'DESC'
]
]
];
$headers = [
'Seller-Id: {{ sellerId }}',
'School-Id: {{ schoolId }}',
'Content-Type: application/json',
'Authorization: Bearer YOUR_TOKEN'
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode === 200 || $httpCode === 201) {
$result = json_decode($response, true);
echo "Execution UUID: " . $result['payload']['uuid'] . "\n";
} else {
echo "Error: HTTP $httpCode\n";
echo $response;
}
?>
import requests
url = 'https://api.exode.biz/saas/v2/query-export/generate'
data = {
'type': 'QUERY_EXPORT_TYPE_SCHOOL_USER_FIND_MANY',
'variables': {
'filter': {
'statuses': ['Active'],
'active': True
},
'sort': {
'createdAt': 'DESC'
}
}
}
headers = {
'Seller-Id': '{{ sellerId }}',
'School-Id': '{{ schoolId }}',
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_TOKEN'
}
try:
response = requests.post(url, json=data, headers=headers)
response.raise_for_status()
result = response.json()
print(f"Execution UUID: {result['payload']['uuid']}")
except requests.exceptions.RequestException as e:
print(f'Error: {e}')
Статусы = Новый Массив;
Статусы.Добавить("Active");
Фильтр = Новый Структура;
Фильтр.Вставить("statuses", Статусы);
Фильтр.Вставить("active", Истина);
Сортировка = Новый Структура;
Сортировка.Вставить("createdAt", "DESC");
Переменные = Новый Структура;
Переменные.Вставить("filter", Фильтр);
Переменные.Вставить("sort", Сортировка);
Данные = Новый Структура;
Данные.Вставить("type", "QUERY_EXPORT_TYPE_SCHOOL_USER_FIND_MANY");
Данные.Вставить("variables", Переменные);
// Serialize body to JSON
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Данные);
ТелоЗапроса = ЗаписьJSON.Закрыть();
Соединение = Новый HTTPСоединение("api.exode.biz", 443, , , , 30, Новый OpenSSLSecureConnection);
Запрос = Новый HTTPЗапрос("/saas/v2/query-export/generate");
Запрос.Заголовки.Вставить("Seller-Id", "{{ sellerId }}");
Запрос.Заголовки.Вставить("School-Id", "{{ schoolId }}");
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Запрос.Заголовки.Вставить("Authorization", "Bearer YOUR_TOKEN");
Запрос.УстановитьТелоИзСтроки(ТелоЗапроса);
Ответ = Соединение.ВызватьHTTPМетод("POST", Запрос);
Если Ответ.КодСостояния = 200 Тогда
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
Результат = ПрочитатьJSON(ЧтениеJSON);
Сообщить("Экспорт запущен");
Иначе
Сообщить("Ошибка: HTTP " + Ответ.КодСостояния);
Сообщить(Ответ.ПолучитьТелоКакСтроку());
КонецЕсли;
{
"success": true,
"code": 200,
"payload": {
"total": 100,
"completed": 100,
"status": "Completed",
"result": {
"fileUrl": "https://static.exode.biz/generated/reports/79d46a97-a149-432b-bac7-45f6732b9115.xlsx",
"fileName": "79d46a97-a149-432b-bac7-45f6732b9115.xlsx",
"fileSize": 6748
}
}
}
Обновлено: 2026-07-22 12:19 UTC