QUERY_EXPORT_TYPE_INVOICE_MANAGE_FIND_MANY
Выгружает список счетов школы с суммами, типами, статусами оплаты и связанными платежами.
Это тип отчёта для метода query-export/generate: передайте его
в поле type, а описанные ниже поля — в variables.
Набор фильтров совпадает с методом Список счетов. Итоговый контракт
variables валидирует сервис экспорта — неизвестные поля игнорируются.Переменные (variables)
object
Параметры фильтрации.
Show Свойства filter
Show Свойства filter
integer[]
Фильтр по ID счетов.
integer[]
Фильтр по ID пользователей (плательщиков).
integer[]
Фильтр по ID продуктов.
string[]
Фильтр по типам счёта. Массив из значений:
Regular, InstallmentInit, InstallmentPay,
SubscriptionInit, SubscriptionPay.string
Поиск по тексту, до 50 символов.
object
Диапазон суммы счёта. Свойства
from и to — числа.object
Диапазон дат создания счёта. Свойства
from и to — даты в формате ISO 8601.object
Вложенный фильтр по связанному платежу (статус, провайдер и т.д.).
object
Фильтр по UTM-меткам счёта. Поле
value — массив пар { key, value } (непустые строки).object
Параметры сортировки. Значения:
ASC (по возрастанию) или DESC (по убыванию).Show Свойства sort
Show Свойства sort
string
Сортировка по ID.
ASC | DESC.string
Сортировка по дате создания.
ASC | DESC.string
Сортировка по дате обновления.
ASC | DESC.string
Сортировка по статусу счёта.
ASC | DESC.string
Сортировка по сумме.
ASC | DESC.string
Сортировка по дате оплаты (или создания).
ASC | DESC.string
Сортировка по последней активности плательщика.
ASC | DESC.string
Сортировка по фактическому статусу платежа.
ASC | DESC.Колонки отчёта
ID пользователя, Фамилия Имя, Способ входа, Номер телефона, Почта, Telegram, ID платежа, Дата изменения платежа, ID курса, Название курса, ID тарифа, Тариф, Тип платежа, Способ оплаты, Статус, Сумма платежа, Валюта.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_INVOICE_MANAGE_FIND_MANY",
"variables": {
"filter": {
"types": ["Regular"],
"createdAtDateRange": { "from": "2025-01-01T00:00:00Z", "to": "2025-12-31T23:59:59Z" }
},
"sort": {
"paidAtOrCreatedAt": "DESC"
}
}
}'
const axios = require('axios');
const exportInvoices = async () => {
try {
const response = await axios.post('https://api.exode.biz/saas/v2/query-export/generate', {
type: 'QUERY_EXPORT_TYPE_INVOICE_MANAGE_FIND_MANY',
variables: {
filter: {
types: ['Regular'],
createdAtDateRange: { from: '2025-01-01T00:00:00Z', to: '2025-12-31T23:59:59Z' }
},
sort: {
paidAtOrCreatedAt: '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);
}
};
exportInvoices();
<?php
$url = 'https://api.exode.biz/saas/v2/query-export/generate';
$data = [
'type' => 'QUERY_EXPORT_TYPE_INVOICE_MANAGE_FIND_MANY',
'variables' => [
'filter' => [
'types' => ['Regular'],
'createdAtDateRange' => ['from' => '2025-01-01T00:00:00Z', 'to' => '2025-12-31T23:59:59Z']
],
'sort' => [
'paidAtOrCreatedAt' => '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_INVOICE_MANAGE_FIND_MANY',
'variables': {
'filter': {
'types': ['Regular'],
'createdAtDateRange': {'from': '2025-01-01T00:00:00Z', 'to': '2025-12-31T23:59:59Z'}
},
'sort': {
'paidAtOrCreatedAt': '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}')
Типы = Новый Массив;
Типы.Добавить("Regular");
ДиапазонДат = Новый Структура;
ДиапазонДат.Вставить("from", "2025-01-01T00:00:00Z");
ДиапазонДат.Вставить("to", "2025-12-31T23:59:59Z");
Фильтр = Новый Структура;
Фильтр.Вставить("types", Типы);
Фильтр.Вставить("createdAtDateRange", ДиапазонДат);
Сортировка = Новый Структура;
Сортировка.Вставить("paidAtOrCreatedAt", "DESC");
Переменные = Новый Структура;
Переменные.Вставить("filter", Фильтр);
Переменные.Вставить("sort", Сортировка);
Данные = Новый Структура;
Данные.Вставить("type", "QUERY_EXPORT_TYPE_INVOICE_MANAGE_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:24 UTC