Описание
Шлюз представляет собой информационную систему для выполнения HTTP запросов к платформе «Агредатор».
Возможности:
- несколько клиентов
- возможность настраивать несколько сервисов
- возможность предоставлять права доступа к сервисам различным клиентам
- статистика запросов для клиента
- асинхронная работа
- возможность доставлять ответ или входящий запрос до клиента при получении (
callback/push)
Шлюз не осуществляет преобразований данных отправляемых и получаемых от указанного сервиса. Форматы запросов и ответов, обязательные поля и прочие специфичные для каждого сервиса вещи можно узнать из документации.
В данном руководстве будет рассмотрен пример с использованием сервиса fns-so.
Общее описание API
Параметры и данные в запрос могут быть переданы как в строке так и в теле запроса. Поддерживаемые форматы(Content-Type) данных в теле запроса:
application/x-www-form-urlencodedmultipart/form-dataapplication/json
Для авторизации используется Basic Access authentication. Это значит что username и password для доступа передаются в открытом виде. Для доступа настоятельно рекомендуется использовать SSL-терминацию.
В качестве username передается идентификатор(identifier) клиента, в качестве password передается секрет(secret):
curl -u identifier:secret "https://agredator.ru/"
Коллекции
Все коллекции возвращаются с использованием пагинации в виде:
{
"has_next": "Признак присутствия следущей страницы для текущего фильтра",
"current_page": "текущая страница",
"per_page": "число документов включенных в элемент 'collection'",
"collection":[
{/элемент запрашиваемой коллекции/}
]
}
Пагинация
Для управлением пагинацией в строке запроса можно передавать следующие параметры:
| Параметр | Описание | По умолчанию |
|---|---|---|
limit |
количество элементов в списке ответа | 50 |
page |
элементы с данной страницы | 1 |
curl "https://agredator.ru/api/v1/requests?limit=20&page=3"
Фильтрация
Большинство адресов, возвращающих коллекции, поддерживают фильтрцию результатов. Параметры фильтрации передаются в строке запроса в поле Query String. Для передачи списка значений используется нотация вида ?field[]=1&field[]=2, описывающая список field=[1,2]. Параметры фильтрации передаются в объекте filter. Например фильтрация коллекции по полям status и service элементов будет выглядеть так:
curl "https://agredator.ru/api/v1/requests?filter[service]=echo&filter[status][]=200&filter[status][]=100"
Callback/push
Для возможности выполнения асинхронной обработки результатов запросов существует возможность получать POST-колбэки. Этот механизм позволяет избежать постоянного опроса результатов и существенно повысить скорость обработки результатов. Для доставки результатов используются HTTP POST-запросы в формате content-type: application/json, тело которых совпадает с результатом, получаемым при обычном опросе результата.
При невозможности доставить результат по указанному адресу будет выполнены несколько попыток переотправки с постепенно увеличивающимися интервалами между ними. Доставка считается успешной если получен статус ответа HTTP code=2XX или code=304. 304 используется для указания на повторную обработку, если клиентская система требует такого поведения.
Если указанный адрес принимающей стороны будет полностью недоступен в течение длительного времени, то такой адрес (его домен) будет временно заблокирован для избежания перегрузки системы. Полностью недоступным считается адрес, на который более половины запросов (при числе не менее 30 за минуту) завершаются ошибкой. Заблокированный домен клиента на 5 минут выводится из процедуры доставки POST-колбэков, при этом клиент всегда может получить результат обработки по схеме Просмотр состояния запроса.
Варианты использования доставки с помощью callback/push
1. Ответ на запрос
Для асинхронного получения ответа на запрос должен быть установлен PUSH-адрес для клиента1 или для каждого запроса2.
1 Установить PUSH-адрес для клиента можно через техподдержку или в Кабинете клиента в разделе Данные ИС.
2 Установить PUSH-адрес для запроса можно при создании запроса через API (в параметре
request.callback_url).
Приоритеты: PUSH-адрес в запросе, но если его нет, то PUSH-адрес клиента.
2. Входящий запрос
Для асинхронного получения входящего запроса должен быть установлен PUSH-адрес (входящий) для клиента1 или для конкретного входящего сервиса2.
1 Установить PUSH-адрес (входящий) для клиента можно через техподдержку или в Кабинете клиента в разделе Данные ИС.
2 Установить PUSH-адрес (входящий) для конкретного входящего сервиса можно через техподдержку или в Кабинете клиента в разделе Доступы, выбрав нужный сервис.
Приоритеты: PUSH-адрес (входящий) сервиса, но если его нет, то PUSH-адрес (входящий) клиента.
3. Изменение статуса ответа на входящий запрос
Для асинхронного получения изменения статуса ответа на входящий запрос должен быть установлен PUSH-адрес (входящий) при создании ответа на входящий запрос через API (в параметре response.callback_incoming_url).
Формат PUSH-адреса
PUSH-адрес — это URL к информационной системе, которая обработает событие. Формат URL:
<схема>:[//[<логин>[:<пароль>]@]<хост>[:<порт>]][/<URL‐путь>]
Где схема — это протокол передачи данных, который должен быть только HTTPS.
Примеры:
https://www.example.com:8080/my/api/path
https://login:password@www.example.com:8080/my/api/path (с указанием имени и пароля)
Проверка callback/push
Для проверки Вашего PUSH-адреса (любого из трех) воспользуйтесь встроенными в Кабинет клиента возможностями тестирования. Сохраните PUSH-адрес для нужного вам варианта оповещения и нажмите на кнопку «Протестировать». По указанному адресу будет отправлено тестовое сообщение.
API V1
- Endpoint:
/api/v1
Для всех запросов к API в качестве username передается идентификатор(identifier) клиента, в качестве password передается секрет(secret):
curl -u identifier:secret https://agredator.ru/
Пример ошибки:
{
"error": true,
"status": "400",
"code": "api_client_no_access",
"title": "Client unauthorized to access service: fns-so",
"meta": {
"errors": {
"client": ["unauthorized to access service: fns-so"]
}
}
}
Работа с запросами
Получение списка запросов
- Endpoint:
/api/v1(/:service)/requests(.json) - Method:
GET - Params:
service: Опциональное указание имени сервиса
- Возможности:
фильтрация,пагинация
Возвращает список всех запросов.
| Параметр | Тип | Описание | Обязательный |
|---|---|---|---|
filter[status] |
Integer |
Фильтрация по полю status |
- |
filter[service] |
String |
Фильтрация по полю service |
- |
filter[external_id] |
String |
Фильтрация по полю external_id |
- |
Получить список последних запросов ко всем сервисам с фильтром по статусу
curl "https://agredator.ru/api/v1/requests?filter[status]=200"
Получить список последних запросов к конкретному сервису(fns-so):
curl "https://agredator.ru/api/v1/fns-so/requests"
Пример ответа:
{
"has_next":true,
"current_page":1,
"per_page":2,
"collection":[
{
"id":6363,
"status":200,
"client":"4cc8d2deeb876add50cac888cbeb195c",
"info":"success result",
"service":"echo",
"created_at":"2019-07-23T15:06:31.692+03:00",
"response":{/service-response/},
"ticket":"0f5dcdc7-1621-437e-8ed6-1d26e6c6d8df",
"callback_url":null,
"provider_id":"1f108ec8-90e4-69d7-b8c0-f7141cd49fae",
"external_id":"6363",
"histories":[
{
"id":11674,
"request_id":6363,
"from":100,
"to":102,
"message":"processing",
"created_at":"2019-07-23T15:06:31.818+03:00",
"updated_at":"2019-07-23T15:06:31.818+03:00"
},
{
"id":11675,
"request_id":6363,
"from":102,
"to":200,
"message":"success result",
"created_at":"2019-07-23T15:06:31.946+03:00",
"updated_at":"2019-07-23T15:06:31.946+03:00"
}
]
}
]
}
Просмотр состояния запроса
- Endpoint:
/api/v1(/:service)/requests/:id(.json) - Method:
GET - Params:
service: Опциональное указание имени сервисаid: Идентификатор запроса
Возвращает полную информацию по запросу. Доступен фильтр по сервису.
Просмотреть запрос:
curl "https://agredator.ru/api/v1/requests/6363.json"
Пример ответа:
{
"id":6363,
"status":200,
"client":"4cc8d2deeb876add50cac888cbeb195c",
"info":"success result",
"service":"echo",
"created_at":"2019-07-23T15:06:31.692+03:00",
"response":{/service-response/},
"ticket":"0f5dcdc7-1621-437e-8ed6-1d26e6c6d8df",
"callback_url":null,
"provider_id":"null",
"external_id":"6363",
"histories":[
{
"id":11674,
"request_id":6363,
"from":100,
"to":102,
"message":"processing",
"created_at":"2019-07-23T15:06:31.818+03:00",
"updated_at":"2019-07-23T15:06:31.818+03:00"
},
{
"id":11675,
"request_id":6363,
"from":102,
"to":200,
"message":"success result",
"created_at":"2019-07-23T15:06:31.946+03:00",
"updated_at":"2019-07-23T15:06:31.946+03:00"
}
]
}
Создание запроса
- Endpoint:
/api/v1(/:service)/requests(.json) - Method:
POST - Params:
service: Опциональное указание имени сервиса
При создании запроса необходимо указать следующие параметры:
| Параметр | Тип | Описание | Обязательный |
|---|---|---|---|
request |
Object |
Объект обертка | + |
request.service |
String |
Имя сервиса. Может быть задано через url | + |
request.external_id |
String |
Произвольный идентификатор запроса, со стороны клиента. Будет возвращён в ответе | - |
request.payload |
Object |
Тело запроса | + |
request.callback_url |
String |
Адрес для доставки результата POST-запросом. Если не задан, берется из настроек всего клиента | - |
Создание запроса с указанием сервиса в строке запроса:
curl -u identifier:secret \
-H "Content-Type: application/json; charset=utf-8" \
-X POST \
-d '{"request": {"payload": {"data": 111}}}' \
https://agredator.ru/api/v1/fns-so/requests
Создание запроса с указанием сервиса в теле запроса:
curl -u identifier:secret \
-H "Content-Type: application/json; charset=utf-8" \
-X POST \
-d '{"request": {"service": "echo", "payload": {"data": 111}}}' \
"https://agredator.ru/api/v1/requests"
Пример ответа:
{
"id": 6365,
"status": 100,
"client": "identifier",
"info": null,
"service": "fns-so",
"created_at": "2019-07-23T17:21:02.483+03:00",
"response": {},
"ticket": null,
"callback_url": null,
"provider_id": null,
"external_id":"6365",
"histories": []
}
После получения ответа на запрос, если callback_url задан (для запроса или для всего клиента), POST-запросом будет доставлено состояние запроса (см. пример ответа).
Модификация шага запроса
- Endpoint:
/api/v1(/:service)/requests/:id/triggers/:trigger(.json) - Method:
GET|POST|PUT - Params:
service: Опциональное указание имени сервисаid: Идентификатор запросаtrigger: Идентификатор шага обработки
Запросы к некоторым сервисам предполагают несколько шагов обработки. Например в случае запроса на проверку номера телефона требуется прислать полученный код подтверждения.
Отправить код подтвержlения на ранее отправленный запрос:
curl "https://agredator.ru/api/v1/requests/6363/triggers/verify?payload\[code\]=12345"
Пример ответа (тело ответа может меняться в зависимости от конкретного шага и сервиса):
{
"verification": "failed",
"details": "{\"result\":{\"valid\":false},\"status\":\"success\",\"id\":\"814b4133-82a8-4be8-a186-6b088b3ae9d2\",\"service\":\"contact-verifier\"}",
"success": true
}
Удаление запроса
- Endpoint:
/api/v1(/:service)/requests/:request_id(.json) - Method:
DELETE - Params:
service: Опциональное указание имени сервисаrequest_id: Идентификатор удаляемого запроса
Удаляет запрос по указанному request_id. В случае успешного выполнения возвращается пустой ответ с 202 статусом.
Пример запроса:
curl -X DELETE "https://agredator.ru/api/v1/requests/115"
Получение информации (JSON) о файле вложений
- Endpoint:
/api/v1(/:service)/requests/:request_id/attachments/:uuid.json - Method:
GET - Params:
service: Опциональное указание имени сервисаrequest_id: Идентификатор запроса, в рамках которого существует файлuuid: Идентификатор вложения
Возвращает полную информацию по файлу вложения в виде JSON.
Просмотреть информацию:
curl "https://agredator.ru/api/v1/requests/116/attachments/e49d01071fafef980fd2a305896032d.json"
Пример ответа (status=200):
{
"uuid":"e49d01071fafef980fd2a305896032d",
"checksum":"e6156f5514d53ca19512a8fc6c62f692943e980e336de1bd0dbfaff60ee0ef21",
"created_at":"2021-11-18T19:30:55.136+03:00",
"tags":["123123"],
"filename":"photo.jpg",
"mime_type": "image/jpeg"
}
Пример ошибки (status=404):
{
"error":true,
"status":"404",
"code":"not_found",
"title":"Couldn't find Request with 'id'=116",
"meta":{
"model":"request",
"id":"116"
}
}
Получение содержимого файла вложений
- Endpoint:
/api/v1(/:service)/requests/:request_id/attachments/:uuid - Method:
GET - Params:
service: Опциональное указание имени сервисаrequest_id: Идентификатор запроса, в рамках которого существует файлuuid: Идентификатор вложения
Возвращает содержимое файла вложения.
Скачать файл:
curl "https://agredator.ru/api/v1/requests/116/attachments/e49d01071fafef980fd2a305896032d" > /tmp/photo.jpg
Пример ошибки (status=500):
{
"error":true,
"status":"500",
"code":"filator_stream_error",
"title":"Failed to open TCP connection to 172.22.4.314:32773 (getaddrinfo: Name or service not known)",
"meta":{}
}
Загрузка файла вложений в систему
- Endpoint:
/api/v1(/:service)/attachments/ - Method:
POST - Params:
service: Опциональное указание имени сервисаbody: Файл вложения
Производит загрузку файла в систему и возвращает полную информацию по файлу вложения в виде JSON.
Пример:
curl -u identifier:secret \
-X POST \
-F "body=@/path/to/photo.jpg" \
"https://agredator.ru/api/v1/attachments/"
Пример ответа (status=200):
{
"uuid":"e49d01071fafef980fd2a305896032d",
"checksum":"e6156f5514d53ca19512a8fc6c62f692943e980e336de1bd0dbfaff60ee0ef21",
"created_at":"2021-11-18T19:30:55.136+03:00",
"tags": [],
"filename":"photo.jpg",
"mime_type": "image/jpeg"
}
Загрузка файла вложений в систему с получением подписи
- Endpoint:
/api/v1/:service/attachments/signed - Method:
POST - Params:
service: Имя сервисаbody: Файл вложенияcert: Идентификатор сертификата, используемый для вычисления подписи. Конфигурация сертификатов, осуществляется отдельно. Значение может отсутствовать, в случае дополнительных настроек клиента/сервиса.
Производит загрузку файла в систему, вычисляет pkcs7 detached подпись и возвращает полную информацию по файлу вложения и файл содержащем подпись в виде JSON.
Пример:
curl -u identifier:secret \
-X POST \
-F "body=@/path/to/photo.jpg" \
-F "cert=test" \
"https://agredator.ru/api/v1/echo/attachments/signed"
Пример ответа (status=200):
{
"file": {
"uuid": "e90b573fa0a0be1114667aae28beb94235aedf05a4bb5fe40a6562d21f4f7e5c",
"tags": [],
"metadata": {
"service": "apigw",
"client_id": "99687"
},
"size": 7507529,
"mime_type": "image/jpeg",
"filename": "photo.jpeg",
"checksum": "f11a3c6a878db8ca349d83d51255599dcb8f23038671df51e8fedb3a13fdc23f",
"content_encoding": null,
"created_at": "2026-03-10T13:52:30.884+00:00",
"delete_at": "2026-03-11T13:52:30.858+00:00",
"store": "db",
"identifier_in_store": "e90b573fa0a0be1114667aae28beb94235aedf05a4bb5fe40a6562d21f4f7e5c"
},
"signature": {
"uuid": "d4e3a992030d97db736ea5b94264ef3327b17a1100c3de51a687926a6e96ff7e",
"tags": [],
"metadata": {
"service": "apigw",
"client_id": "99687"
},
"size": 3249,
"mime_type": "application/octet-stream",
"filename": "photo.jpeg.sig",
"checksum": "68427e27d9d72e363455fb68e8ca24da40e0696ff6a7cfe7bcbfebc36df086d2",
"content_encoding": null,
"created_at": "2026-03-10T13:52:39.233+00:00",
"delete_at": "2026-03-11T13:52:39.233+00:00",
"store": "db",
"identifier_in_store": "d4e3a992030d97db736ea5b94264ef3327b17a1100c3de51a687926a6e96ff7e"
}
}
Получение логов запроса
- Endpoint:
/api/v1(/:service)/requests/:request_id/logs(.json) - Method:
GET - Params:
service: Опциональное указание имени сервисаrequest_id: Идентификатор запроса, в рамках которого существует файл
Возвращает архив, содержащий файлы XML взаимодействия и файл metadata.json, содержащий служебные данные, связанные с запросом. В случае указания формата .json - возвращает JSON, содержащий XML логи взаимодействия.
Пример запроса:
curl "https://agredator.ru/api/v1/requests/116/logs" > /tmp/logs.zip
Пример запроса с JSON форматом ответа:
curl "https://agredator.ru/api/v1/requests/116/logs.json" > /tmp/logs.json
Пример ответа:
{
"request_id": 116,
"service": "uprid3",
"target": "uprid3",
"ticket": "51ccdd21-642f-4770-8885-64757c906b90",
"created_at": "2021-12-06T11:45:44.013+03:00",
"updated_at": "2021-12-06T11:46:05.858+03:00",
"logs": [
{
"type": "sendRequest",
"request": "...",
"response": "..."
},
{
"type": "getResponse",
"request": "...",
"response": "..."
},
{
"type": "ack",
"request": "...",
"response": "..."
}
]
}
Статистика
Клиенты
- Endpoint:
/api/v1/admin/statistics/clients - Method:
GET
При отправке запроса можно указать следующие параметры:
| Поле | Тип | Описание |
|---|---|---|
| name | String |
имя клиента |
| status | Integer |
статус запросов |
| period | String |
период времени, когда были созданы запросы. Возможные значения: daily, weekly, monthly, annualy, custom |
| from | DateTime |
дата начала периода. Используется при period = custom |
| to | DateTime |
дата конца периода. Используется при period = custom |
Запрос:
curl "http://agredator.ru/api/v1/admin/statistics/clients"
Пример ответа:
{
"from": "2020-04-01T00:00:00.000+03:00", // если в запросе есть параметр period
"to": "2020-05-01T00:00:00.000+03:00", // если в запросе есть параметр period
"total": 8,
"clients": [
{
"name": "exampleClient",
"total": 8,
"services": [
{
"name": "exampleService",
"statuses": [
{
"status": 480,
"count": 1
},
{
"status": 102,
"count": 1
},
{
"status": 100,
"count": 6
}
]
}
]
},
]
}
Сервисы
- Endpoint:
/api/v1/admin/statistics/services - Method:
GET
При отправке запроса можно указать следующие параметры:
| Поле | Тип | Описание |
|---|---|---|
| name | String |
имя сервиса |
| status | Integer |
статус запросов |
| period | String |
период времени, когда были созданы запросы. Возможные значения: daily, weekly, monthly, annualy, custom |
| from | DateTime |
дата начала периода. Используется при period = custom |
| to | DateTime |
дата конца периода. Используется при period = custom |
Создание запроса:
curl "http://agredator.ru/api/v1/admin/statistics/services"
Пример ответа:
{
"from": "2020-04-01T00:00:00.000+03:00", // если в запросе есть параметр period
"to": "2020-05-01T00:00:00.000+03:00", // если в запросе есть параметр period
"total": 8,
"services": [
{
"name": "exampleService",
"total": 8,
"clients": [
{
"name": "exampleClient",
"statuses": [
{
"status": 480,
"count": 1
},
{
"status": 102,
"count": 1
},
{
"status": 100,
"count": 6
}
]
}
]
},
]
}
Получение списка пакетов запросов
- Endpoint:
/api/v1/:service/request_batches(.json) - Method:
GET - Params:
service: Имя сервиса
- Возможности:
пагинация
Возвращает список всех пакетов запросов.
Получить список последних пакетов к конкретному сервису(echo):
curl "https://agredator.ru/api/v1/echo/request_batches.json?limit=2"
Пример ответа:
{
"has_next": true,
"current_page":1,
"per_page":2,
"collection":[
{
"id": 9,
"iid": 26,
"client": "4cc8d2deeb876add50cac888cbeb195c",
"service": "echo",
"created_at": "2025-05-22T20:23:30.256+03:00",
"filename": "1.json"
},
{
"id": 8,
"iid": 25,
"client": "4cc8d2deeb876add50cac888cbeb195c",
"service": "echo",
"created_at": "2025-05-22T20:18:33.393+03:00",
"filename": "1.csv"
}
]
}
Просмотр пакета запросов
- Endpoint:
/api/v1/:service/request_batches/:id(.json) - Method:
GET - Params:
service: Имя сервисаid: Идентификатор пакета;
Возвращает полную информацию по пакету.
Просмотреть запрос:
curl "https://agredator.ru/api/v1/echo/request_batches/8.json"
Пример ответа:
{
"id": 8,
"iid": 25,
"client": "4cc8d2deeb876add50cac888cbeb195c",
"service": "echo",
"created_at": "2025-05-22T20:18:33.393+03:00",
"filename": "1.csv"
}
Создание пакета запроса
- Endpoint:
/api/v1/:service/request_batches(.json) - Method:
POST - Params:
service: Имя сервиса
При создании пакета необходимо указать следующие параметры:
| Параметр | Описание | Обязательный |
|---|---|---|
file |
Файл для загрузки с расширением JSON или CSV |
+ |
Создание запроса:
curl -u identifier:secret \
-X POST \
-F 'file=@/tmp/requests.csv' \
"https://agredator.ru/api/v1/echo/request_batches"
Пример файла в формате CSV с обязательной кодировкой UTF-8:
series, number, lastname, firstname
7865, 123456, ПЕТИНА, ЕЛЕНА
1234, 34567, Иванов, Иван
Пример файла в формате JSON:
[
{
"series": 7865,
"number": 123456,
"lastname": "ПЕТИНА",
"firstname": "ЕЛЕНА"
},
{
"series": 1234,
"number": 34567,
"lastname": "Иванов",
"firstname": "Иван"
}
]
Пример ответа:
{
"id": 8,
"iid": 25,
"client": "4cc8d2deeb876add50cac888cbeb195c",
"service": "echo",
"created_at": "2025-05-22T20:18:33.393+03:00",
"filename": "requests.csv"
}
Входящие запросы
Получение списка входящих запросов
- Endpoint:
/api/v1/:service/incomings(.json)?last_id=:last_id - Method:
GET - Возможности:
фильтрация,пагинация - Params:
service: Имя сервиса
Возвращает список всех входящих запросов.
| Параметр | Тип | Описание | Обязательный |
|---|---|---|---|
last_id |
String |
Идентификатор последнего обработанного потребителем запроса | - |
filter[status] |
Integer |
Фильтрация по полю status |
- |
filter[service] |
String |
Фильтрация по полю service |
- |
При указазании в запросе last_id в ответ будет возвращён список новых входящих запросов, если они есть.
Получить список последних входящих запросов по сервису fns-nalflproc:
curl "https://agredator.ru/api/v1/fns-nalflproc/incomings.json?last_id=12"
Пример ответа:
{
"last_id": 12,
"has_next": false,
"current_page": 1,
"per_page": 15,
"collection": [
{
"id": 13,
"status": 103,
"client": "i1",
"info": "response 44 successed",
"service": "fns-nalflproc",
"created_at": "2022-02-15T14:36:11.150+03:00",
"identifier": "3bb85b05-77f1-4072-8dfc-6fd1d78b5bf6-d41d8cd98f00b204",
"request": {/incoming-request/},
"histories": [
{
"id": 8,
"historyable_type": "Incoming",
"historyable_id": 13,
"from": 100,
"to": 103,
"message": "waiting for delivery of response 44",
"created_at": "2022-02-15T14:36:43.044+03:00",
"updated_at": "2022-02-15T14:36:43.044+03:00"
},
{
"id": 10,
"historyable_type": "Incoming",
"historyable_id": 13,
"from": 103,
"to": 103,
"message": "response 44 successed",
"created_at": "2022-02-15T14:42:27.292+03:00",
"updated_at": "2022-02-15T14:42:27.292+03:00"
}
],
"responses": [
{
"id": 44,
"identifier": "9e0d705c-9f08-4465-ab8d-32891d9eb683",
"status": 200,
"incoming_id": 13,
"info": "send successed",
"created_at": "2022-02-15T14:36:41.799+03:00",
"callback_incoming_url": null,
"histories": [
{
"id": 7,
"historyable_type": "Incoming::Response",
"historyable_id": 44,
"from": 100,
"to": 102,
"message": "waiting for send",
"created_at": "2022-02-15T14:36:42.940+03:00",
"updated_at": "2022-02-15T14:36:42.940+03:00"
},
{
"id": 9,
"historyable_type": "Incoming::Response",
"historyable_id": 44,
"from": 102,
"to": 200,
"message": "send successed",
"created_at": "2022-02-15T14:42:27.238+03:00",
"updated_at": "2022-02-15T14:42:27.238+03:00"
}
]
}
]
}
]
}
Просмотр входящего запроса
- Endpoint:
/api/v1/:service/incomings/:id(.json) - Method:
GET - Params:
service: Имя сервисаid: Идентификатор входящего запроса
Возвращает полную информацию по запросу. Поле service_version будет указано только в случае, если поддерживается одновременная работа с несколькими версиями одного ВС.
Просмотреть входящий запрос:
curl "https://agredator.ru/api/v1/fns-nalflproc/incomings/13"
Пример ответа:
{
"id": 13,
"status": 103,
"client": "i1",
"info": "response 44 successed",
"service": "fns-nalflproc",
"service_version": "4.0.1",
"created_at": "2022-02-15T14:36:11.150+03:00",
"identifier": "3bb85b05-77f1-4072-8dfc-6fd1d78b5bf6-d41d8cd98f00b204",
"request": {/incoming-request/},
"histories": [
{
"id": 8,
"historyable_type": "Incoming",
"historyable_id": 13,
"from": 100,
"to": 103,
"message": "waiting for delivery of response 44",
"created_at": "2022-02-15T14:36:43.044+03:00",
"updated_at": "2022-02-15T14:36:43.044+03:00"
},
{
"id": 10,
"historyable_type": "Incoming",
"historyable_id": 13,
"from": 103,
"to": 103,
"message": "response 44 successed",
"created_at": "2022-02-15T14:42:27.292+03:00",
"updated_at": "2022-02-15T14:42:27.292+03:00"
}
],
"responses": [
{
"id": 44,
"status": 200,
"identifier": "9e0d705c-9f08-4465-ab8d-32891d9eb683",
"incoming_id": 13,
"info": "send successed",
"created_at": "2022-02-15T14:36:41.799+03:00",
"callback_incoming_url": null,
"histories": [
{
"id": 7,
"historyable_type": "Incoming::Response",
"historyable_id": 44,
"from": 100,
"to": 102,
"message": "waiting for send",
"created_at": "2022-02-15T14:36:42.940+03:00",
"updated_at": "2022-02-15T14:36:42.940+03:00"
},
{
"id": 9,
"historyable_type": "Incoming::Response",
"historyable_id": 44,
"from": 102,
"to": 200,
"message": "send successed",
"created_at": "2022-02-15T14:42:27.238+03:00",
"updated_at": "2022-02-15T14:42:27.238+03:00"
}
]
}
]
}
Подтверждение о принятии входящего запроса
- Endpoint:
/api/v1/:service/incomings/:id/acknowledge(.json) - Method:
PUT - Params:
service: Имя сервиса
Подтверждение со стороны клиента об успешном принятии запроса. При этом происходит изменение статуса всех неподтверждённых запросов с идентификатором меньше или равным переданному :id. Возвращает число подтверждённых данной операцией запросов и дополнительную информацию.
curl -X PUT "https://agredator.ru/api/v1/fns-nalflproc/incomings/13/acknowledge.json"
Пример ответа:
{
"last_id":13,
"acknowledged_id":13,
"updated":5,
"success":true
}
Получение логов входящего запроса
- Endpoint:
/api/v1/:service/incomings/:incoming_id/logs(.json) - Method:
GET - Params:
service: Имя сервисаincoming_id: Идентификатор входящего запроса, в рамках которого существует файл
Возвращает архив, содержащий файлы XML взаимодействия и файл metadata.json, содержащий служебные данные, связанные с входящим запросом. В случае указания формата .json возвращает JSON, содержащий XML логи взаимодействия.
Пример запроса:
curl "https://agredator.ru/api/v1/fssp-execution-documents/incomings/116/logs" > /tmp/logs.zip
Пример запроса с json форматом ответа:
curl "https://agredator.ru/api/v1/fssp-execution-documents/incomings/logs.json" > /tmp/logs.json
Пример ответа:
{
"incoming_id": 116,
"service": "fssp-execution-documents",
"source": "fssp-execution-documents",
"identifier": "51ccdd21-642f-4770-8885-64757c906b90",
"created_at": "2021-12-06T11:45:44.013+03:00",
"updated_at": "2021-12-06T11:46:05.858+03:00",
"logs": [
{
"type": "getRequest",
"request": "...",
"response": "..."
},
{
"type": "sendResponse",
"request": "...",
"response": "..."
},
{
"type": "ack",
"request": "...",
"response": "..."
}
]
}
Получение списка ответов на входящий запрос
- Endpoint:
/api/v1/:service/incomings/:incoming_id/responses(.json) - Method:
GET - Возможности:
фильтрация,пагинация - Params:
service: Имя сервисаincoming_id: Идентификатор входящего запроса
Возвращает список всех ответов на данный входящий запрос.
| Параметр | Тип | Описание | Обязательный |
|---|---|---|---|
filter[status] |
Integer |
Фильтрация по полю status |
- |
Получить список ответов:
curl "https://agredator.ru/api/v1/fns-nalflproc/incomings/13/responses"
Пример ответа:
{
"has_next": false,
"current_page": 1,
"per_page": 15,
"collection": [
{
"id": 44,
"identifier": "9e0d705c-9f08-4465-ab8d-32891d9eb683",
"status": 200,
"incoming_id": 13,
"info": "send successed",
"created_at": "2022-02-15T14:36:41.799+03:00",
"callback_incoming_url": null,
"histories": [
{
"id": 7,
"historyable_type": "Incoming::Response",
"historyable_id": 44,
"from": 100,
"to": 102,
"message": "waiting for send",
"created_at": "2022-02-15T14:36:42.940+03:00",
"updated_at": "2022-02-15T14:36:42.940+03:00"
},
{
"id": 9,
"historyable_type": "Incoming::Response",
"historyable_id": 44,
"from": 102,
"to": 200,
"message": "send successed",
"created_at": "2022-02-15T14:42:27.238+03:00",
"updated_at": "2022-02-15T14:42:27.238+03:00"
}
]
}
]
}
Просмотр состояния ответа на входящий запрос
- Endpoint:
/api/v1/:service/incomings/:incoming_id/responses/:id(.json) - Method:
GET - Params:
service: Имя сервисаincoming_id: Идентификатор входящего запросаid: Идентификатор ответа
Возвращает полную информацию по данному ответу.
Просмотреть ответ:
curl "https://agredator.ru/api/api/v1/fns-nalflproc/incomings/13/responses/44"
Пример ответа:
{
"id": 44,
"status": 200,
"incoming_id": 13,
"identifier": "9e0d705c-9f08-4465-ab8d-32891d9eb683",
"info": "send successed",
"created_at": "2022-02-15T14:36:41.799+03:00",
"callback_incoming_url": null,
"histories": [
{
"id": 7,
"historyable_type": "Incoming::Response",
"historyable_id": 44,
"from": 100,
"to": 102,
"message": "waiting for send",
"created_at": "2022-02-15T14:36:42.940+03:00",
"updated_at": "2022-02-15T14:36:42.940+03:00"
},
{
"id": 9,
"historyable_type": "Incoming::Response",
"historyable_id": 44,
"from": 102,
"to": 200,
"message": "send successed",
"created_at": "2022-02-15T14:42:27.238+03:00",
"updated_at": "2022-02-15T14:42:27.238+03:00"
}
]
}
Создание ответа на входящий запрос
- Endpoint:
/api/v1/:service/incomings/:incoming_id/responses(.json) - Method:
POST - Params:
service: Имя сервисаincoming_id: Идентификатор входящего запроса
При создании ответа необходимо указать следующие параметры:
| Параметр | Тип | Описание | Обязательный |
|---|---|---|---|
response |
Object |
Объект обертка | + |
response.payload |
Object |
Тело запроса | + |
response.callback_incoming_url |
String |
Адрес для доставки изменения статуса POST-запросом | - |
Создание ответа:
curl -u identifier:secret \
-H "Content-Type: application/json; charset=utf-8" \
-X POST \
-d '{"response": {"payload": {"data": 111}}}' \
"https://agredator.ru/api/v1/fns-nalflproc/incomings/13/responses"
Пример ответа:
{
"id":45,
"status":100,
"incoming_id":13,
"identifier": "9e0d705c-9f08-4465-ab8d-32891d9eb683",
"info":null,
"created_at":"2022-02-17T18:43:33.606+03:00",
"histories":[]
}
После получения подтверждения доставки ответа на входящий запрос (response successed) и/или ошибки, если callback_incoming_url задан, POST-запросом будет доставлено состояние ответа на входящий запрос (см. пример ответа).
Архивация и долгосрочное хранение
Исторические данные клиента после истечения срока актуальности уходят в архив. Архив представляет собой .tar.gz архив, содержащий все запросы, ответы, файлы вложения и пр. данные, ассоциированные с запросом за указанный день/сервис.
archive.tar.gz
├── 197
│ ├── ...
│ └── metadata.json
└── 198
├── request.json
├── responses
│ ├── 0_response.json
│ └── ...
├── [group1]
│ ├── 0_<type>_request.xml
│ ├── 1_<type>_response.xml
│ └── ...
├── [group2]
│ ├── 0_<type>_request.xml
│ ├── 1_<type>_response.xml
│ └── ...
├── 0_<type>_request.xml
├── 1_<type>_response.xml
├── ...
├── attachments
│ ├── CustomFile.txt
│ └── ...
└── metadata.json
Просмотр доступных архивов
- Endpoint:
/api/v1/(:service)/archived_records(.json) - Method:
GET - Params:
service: Имя сервиса
- Возможности:
фильтрация,пагинация
Описание полей архивной записи.
При запросе списка можно указать параметры:
| Параметр | Тип | Описание | Обязательный |
|---|---|---|---|
filter[request_id] |
Integer |
Дополнительный фильтр, разрешающие только элементы, запрос с указанным request_id |
- |
filter[service_id] |
Integer |
Фильтрация по полю service_id |
- |
filter[service_name] |
String |
Фильтрация по полю service_name |
- |
filter[status] |
Integer |
Фильтрация по полю status |
- |
filter[type] |
String |
Фильтрация по полю type |
- |
Возвращает список всех файлов архивов.
При указазании в запросе filter[request_id]=2235 в ответ будет возвращён список, содержащий те архивные записи в которых может находиться данный запрос (записи в которых first_id >= 2235 и last_id <= 2235).
Получить список последних пакетов к конкретному сервису (echo) и идентификатору запроса (2235):
curl "https://agredator.ru/api/v1/echo/archived_records?filter[request_id]=2235"
Пример ответа:
{
"has_next": true,
"current_page":1,
"per_page":2,
"collection":[
{
"id":161,
"type":"ArchivedRecord::Request",
"client_id":1,
"service_id":3,
"service_name":"echo",
"status":100,
"encrypted":0,
"encryption_info":null,
"sha256":"113697ecdbada19bcf8caa380f8f5b182be4d9efe25bc51ad70d14a5980a45f1",
"total":15,
"first_id":2231,
"last_id":2258,
"first_date":"2021-09-16T10:44:38Z",
"last_date":"2021-09-16T11:15:17Z",
"created_at":"2025-08-05T11:59:45.244+03:00",
"actual_version": "02_exchange_logs",
"file": {
"id": 321,
"version": "02_exchange_logs",
"status": 200,
"created_at": "2025-12-02T12:30:27.453+03:00",
"actual": true
}
}
]
}
Получение информации (JSON) о файле архива
- Endpoint:
/api/v1/(:service)/archived_records/:id.json - Method:
GET - Params:
service: Имя сервисаid: Идентификатор архивной записи
Возвращает полную информацию по файлу архива в виде JSON.
Возможные варианты поля status:
| Статус | Описание |
|---|---|
100 |
Архив создан |
200 |
Клиент прислал подтверждение о скачивании |
205 |
Файл зашифрован (услуга длительного хранения) |
210 |
Файл удалён |
| Поле | Описание |
|---|---|
id |
Идентификатор записи |
type |
Тип записи ArchivedRecord::Request или ArchivedRecord::Incoming |
client_id |
Внутренний идентификатор клиента |
service_id |
Внутренний идентификатор сервиса |
service_name |
Имя сервиса |
status |
Статус архивный записи |
encrypted |
Статус шифрования записи |
encryption_info |
Информация о параметрах шифрования записи |
total |
Число запросов в данном архиве |
first_id |
Минимальный идентификатор запроса, входящего в данный архив |
last_id |
Максимальный идентификатор запроса, входящего в данный архив |
first_date |
Точная дата запроса с идентификатором first_id |
last_date |
Точная дата запроса с идентификатором last_id |
created_at |
Дата создания архива |
actual_version |
Текущая версия формата архивной записи |
file |
История изменений форматов архивной записи |
file.id |
Идентификатор версии |
file.version |
Версия формата архивной записии |
file.status |
Статус версии архивной записи |
file.created_at |
Дата создания архивный версии |
file.actual |
Признак актуальности версии архивной записи |
Просмотреть информацию:
curl "https://agredator.ru/api/v1/archived_records/157.json"
Пример ответа:
{
"id":157,
"type":"ArchivedRecord::Request",
"client_id":1,
"service_id":3,
"service_name":"echo",
"status":200,
"encrypted":0,
"encryption_info":null,
"sha256":"270697ecdbada19bcf8caa380f8f5b182be4d9efe25bc51ad70d14a5980a427e",
"total":1142,
"first_id":10,
"last_id":1151,
"first_date":"2021-09-15T10:44:58Z",
"last_date":"2021-09-15T11:15:07Z",
"created_at":"2025-08-04T11:59:45.244+03:00",
"actual_version": "02_exchange_logs",
"file": {
"id": 1,
"version": "02_exchange_logs",
"status": 200,
"created_at": "2025-12-02T12:30:27.453+03:00",
"actual": true
}
}
Скачивание файла архива
- Endpoint:
/api/v1/(:service)/archived_records/:id - Method:
GET - Params:
service: Имя сервисаid: Идентификатор архивной записи
Возвращает содержимое файла архива.
Скачать файл:
curl "https://agredator.ru/api/v1/archived_records/157" > archive.tar.gz
Пример ошибки (status=400):
{
"error":true,
"status":"404",
"code":"not_found",
"title":"Couldn't find ArchivedRecord with 'id'=1581 [WHERE \"archived_records\".\"client_id\" = $1]",
"meta":{ "model":"archived_record", "id":1581 }
}
Подтверждение скачивания файла
- Endpoint:
/api/v1/(:service)/archived_records/:id/ack(.json) - Method:
GET|PUT|POST - Params:
service: Имя сервисаid: Идентификатор архивной записи
Подтверждение со стороны клиента об успешном получении файла архива. При этом происходит изменение статуса на 200
curl -X PUT "https://agredator.ru/api/v1/archived_records/161/ack"
Пример ответа:
{
"id":161,
"type":"ArchivedRecord::Request",
"client_id":1,
"service_id":3,
"service_name":"echo",
"status":200,
"encrypted":0,
"encryption_info":null,
"sha256":"113697ecdbada19bcf8caa380f8f5b182be4d9efe25bc51ad70d14a5980a45f1",
"total":15,
"first_id":2231,
"last_id":2258,
"first_date":"2021-09-16T10:44:38Z",
"last_date":"2021-09-16T11:15:17Z",
"created_at":"2025-08-05T11:59:45.244+03:00",
"actual_version": "02_exchange_logs",
"file": {
"id": 1,
"version": "02_exchange_logs",
"status": 200,
"created_at": "2025-12-02T12:30:27.453+03:00",
"actual": true
}
}
Сертификаты, доступные для использования
- Endpoint:
/api/v1/certs - Method:
GET
Возвращает настроенные для использования сертификаты, которые могут быть использованы для подписания загружаемых файлов.
Пример:
curl -u identifier:secret \
-X GET \
"https://agredator.ru/api/v1/certs"
Пример ответа (status=200):
{
"certs": [
{
"name": "test cert"
}
]
}
Примеры
Шлюз не осуществляет преобразований данных, отправляемых и получаемых от указанного сервиса. Актуальные форматы запросов и ответов, обязательные поля и прочие специфичные для каждого сервиса вещи можно узнать из документации.
Сведения о наличии действующих решений о приостановлении операций по счетам налогоплательщика
- Документация: https://docs.agredator.ru/docs/services/fns/so/
Создание запроса:
curl -u identifier:secret \
-H "Content-Type: application/json; charset=utf-8" \
-X POST \
-d '{"request": {"payload": {"bik": "041203729", "request_identity":
"000000000000000000000000000000000001", "identity_type": "ИННЮЛ", "identity_value": "6321137880"}}}' \
"https://agredator.ru/api/v1/fns-so/requests"
Пример ответа:
{
"id": 6399,
"status": 100,
"client": "identifier",
"info": null,
"service": "fns-so",
"created_at": "2019-07-29T10:27:51.440+03:00",
"response": {},
"ticket": null,
"callback_url": null,
"provider_id": null,
"external_id": "6399",
"histories": []
}
Проверка запроса:
curl "https://agredator.ru/api/v1/requests/6363"
Пример ответа:
{
"id": 6399,
"status": 200,
"client": "identifier",
"info": "success result",
"service": "fns-so",
"created_at": "2019-07-29T10:27:51.440+03:00",
"response": {
"org_info": "ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ \"АВТО-ДОРСТРОЙ\"",
"decision_info": {
"bik": "041203729",
"request_result": "1",
"request_date_time": "2017-06-27T09:30:47"
},
"exchange_logs": [
{
"type": "sendRequest",
"request": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003csoap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/...",
"response": "\u003csoap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"\u003e\u003csoap:Body..."
},
{
"type": "getResponse",
"request": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003csoap:Envelope...",
"response": "\u003csoap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"\u003e\u003csoap:Body..."
}
],
"identity_type": "ИННЮЛ",
"identity_value": "6321137880",
"decision_details": [
{
"bik": "042202803",
"num": "3443/1334Р",
"code": "3443",
"date": "2017-02-12",
"info_date": "2017-02-12T12:35:47"
},
{
"bik": "042202824",
"num": "702",
"code": "6320",
"date": "2017-02-09",
"info_date": "2017-02-10T12:35:47"
}
],
"request_identify": "000000000000000000000000000000000001"
},
"ticket": "f547854f-3730-4894-9a72-684ff7ef45dc",
"callback_url": null,
"provider_id": null,
"external_id": "6399",
"histories": [
{
"id": 11739,
"request_id": 6399,
"from": 100,
"to": 102,
"message": "processing",
"created_at": "2019-07-29T10:32:11.500+03:00",
"updated_at": "2019-07-29T10:32:11.500+03:00"
},
{
"id": 11742,
"request_id": 6399,
"from": 102,
"to": 200,
"message": "success result",
"created_at": "2019-07-29T10:33:35.518+03:00",
"updated_at": "2019-07-29T10:33:35.518+03:00"
}
]
}
Структуры данных
Описание структур данных
Коллекция объектов
Схема:
{
"type": "object",
"properties": {
"collection": {
"$comment": "Коллекция запрашиваемых объектов",
"type": "array",
"items": {
"type": "object"
}
},
"current_page": {
"$comment": "Текущая позиция выборки",
"type": ["string", "integer"]
},
"per_page": {
"$comment": "Количество элементов для построения выборки",
"type": ["string", "integer"]
},
"total_count": {
"$comment": "DEPRECATED: Общее число элементов в базе",
"type": ["string", "integer"]
},
"has_next": {
"$comment": "Признак присутствия следущей страницы",
"type": "boolean"
}
},
"required": ["collection", "current_page", "per_page", "has_next"]
}
Ошибка
Схема:
{
"type": "object",
"properties": {
"error": {
"$comment": "Обязательный признак ошибки",
"type": "boolean",
"enum": [true]
},
"status": {
"$comment": "HTTP-статус ошибки",
"type": "string"
},
"code": {
"$comment": "Уникальный идентификатор ошибки",
"type": "string"
},
"title": {
"$comment": "Краткое описание ошибки",
"type": "string"
},
"meta": {
"$comment": "Дополнительная информация по ошибке",
"type": ["object", null]
}
},
"required": ["error", "status", "code", "title"],
"additionalProperties": false
}
Запрос
Возможные статусы:
STATUS_CODE_100_NEED_REQUEST = 100 # WAITING: [100..199]
STATUS_CODE_102_NEED_RESPONSE = 102
STATUS_CODE_200_COMPLETED = 200 # COMPLETED: (200..299)
STATUS_CODE_400_BAD_REQUEST = 400 # ERROR: (300..699)
STATUS_CODE_480_RESULT_ERROR = 480
STATUS_CODE_490_RUNTIME_ERROR = 490
STATUS_CODE_491_OLD_ERROR = 491
STATUS_CODE_500_ERROR = 500
Схема:
{
"type": "object",
"properties": {
"id": {
"$comment": "Идентификатор запроса. Уникален в рамках данного шлюза",
"type": "integer"
},
"status": {
"$comment": "Состояние обработки запроса. Аналогично HTTP-кодам",
"type": "integer"
},
"client": {
"$comment": "Идентификатор клиента, сделавшего запрос",
"type": "string"
},
"service": {
"$comment": "Имя сервиса, к которому направлен запрос",
"type": "string"
},
"ticket": {
"$comment": "Назначенный системой идентификатор запроса. Уникален в рамках всей системы",
"type": ["string", "null"]
},
"response": {
"$comment": "Ответ от запрашиваемого сервиса, специфичен для каждого сервиса",
"type": "object"
},
"callback_url": {
"$comment": "Адрес, на который необходимо доставить результат POST-запросом",
"type": ["string", "null"]
},
"provider_id": {
"$comment": "Идентификатор поставщика данных",
"type": ["string", "null"]
},
"histories": {
"$comment": "История изменения статуса запроса",
"type": "array",
"items": { "$ref": "/schemas/api/v1/request/history.json" }
},
"info": {
"$comment": "Текущий статус запроса (из истории)",
"type": ["string", "null"]
},
"created_at": {
"$comment": "Дата создания запроса",
"type": "string"
}
},
"required": [
"id", "status", "client", "histories",
"info", "created_at", "ticket",
"callback_url", "provider_id", "response"
],
"additionalProperties": false
}
История запроса
Схема:
{
"type": "object",
"properties": {
"id": {
"$comment": "Идентификатор записи",
"type": "integer"
},
"historyable_type": {
"$comment": "Тип объекта истории (Ex. Incoming, Incoming::Response...).",
"type": "string"
},
"historyable_id": {
"$comment": "Идентификатор объекта истории.",
"type": "integer"
},
"from": {
"$comment": "Предыдущий статус",
"type": "integer"
},
"to": {
"$comment": "Новый статус",
"type": "integer"
},
"message": {
"$comment": "Коментарий",
"type": ["string", "null"]
},
"created_at": {
"$comment": "Дата создания",
"type": "string"
},
"updated_at": {
"$comment": "Дата изменения",
"type": "string"
}
},
"required": ["id", "historyable_type", "historyable_id", "from", "to", "message", "created_at"],
"additionalProperties": false
}
Информация о файле архива
Схема:
{
"type": "object",
"properties": {
"id": {
"$comment": "Идентификатор архивной записи. Уникален в рамках данного шлюза",
"type": "integer"
},
"type": {
"$comment": "Тип архивной записи",
"type": "string",
"enum": ["ArchivedRecord::Request", "ArchivedRecord::Incoming"]
},
"client_id": {
"$comment": "Идентификатор клиента, владельца записи",
"type": "integer"
},
"service_id": {
"$comment": "Идентификатор сервиса, записи по которму находятся в архиве",
"type": "integer"
},
"service_name": {
"$comment": "Название сервиса, записи по которму находятся в архиве",
"type": "string"
},
"status": {
"$comment": "Состояние обработки архивной записи. Аналогично HTTP-кодам",
"type": "integer"
},
"encrypted": {
"$comment": "Состояние шифрования архивной записи",
"type": "integer"
},
"encryption_info": {
"$comment": "Информация о шифровании",
"type": ["object", "null"]
},
"sha256": {
"$comment": "Хеш-сумма файла архива по алгоритму SHA256",
"type": "string"
},
"total": {
"$comment": "Число запросов, входящих в данный архив",
"type": "integer"
},
"first_id": {
"$comment": "Идентификатор первого запроса, входящего в данный архив",
"type": "integer"
},
"last_id": {
"$comment": "Идентификатор последнего запроса, входящего в данный архив",
"type": "integer"
},
"first_date": {
"$comment": "Дата первого запроса, входящего в данный архив в формате ISO8601. Пример: 2021-09-15T10:44:58Z",
"type": "string"
},
"last_date": {
"$comment": "Дата последнего запроса, входящего в данный архив в формате ISO8601. Пример: 2021-09-15T10:44:58Z",
"type": "string"
},
"created_at": {
"$comment": "Дата создания запроса",
"type": "string"
},
"actual_version": {
"$comment": "Версия структуры архивного файла. Текущая актуальная версия \"02_exchange_logs\"",
"type": "string"
},
"file": {
"$comment": "Информация об актуальной версии архивного файла",
"type": "object",
"properties": {
"id": {
"$comment": "Идентификатор архивного файла. Уникален в рамках данного шлюза",
"type": "integer"
},
"version": {
"$comment": "Версия структуры архивного файла. Текущая актуальная версия \"02_exchange_logs\"",
"type": "string"
},
"status": {
"$comment": "Статус архивного файла. 200-доступен, 205-запланировано удаление, 210-удалён",
"type": "integer"
},
"created_at": {
"$comment": "Дата создания запроса",
"type": "string"
},
"actual": {
"$comment": "Признак актуальности версии",
"type": "boolean"
}
},
"required": [
"id", "version", "status", "created_at", "actual"
]
}
},
"required": [
"id", "type", "client_id", "service_id", "service_name",
"status", "encrypted", "encryption_info",
"sha256", "total", "first_id", "last_id", "first_date", "last_date", "created_at", "file", "actual_version"
]
}