Перейти к содержанию

Прочие возможности⚓︎

Информирование о событиях API (Webhooks)⚓︎

АСНА REST API может уведомлять заинтересованных подписчиков о событиях, происходящих в сервисе. Например, вы можете получать уведомление о поступлении новых заказов или об успешной загрузке ваших остатков в облако. Для это API использует технологию Webhooks, т.е. осуществляет HTTP запросы на ваши адреса, зарегистрированные в API. Использование уведомлений возможно, если ваши сервисы находятся в открытом доступе и имеют либо постоянный IP адрес, либо постоянное доменное имя. В случае отсутствия постоянного доменного имени или адреса можно воспользоваться службами Dynamic DNS или утилитами, типа ngrok1 . За консультацией вы можете обратиться в Отдел веб-сервисов компании АСНА.

Список событий, поддерживаемых API⚓︎

Название Описание
stocks_full Приняты полные остатки аптеки
stocks_updates Приняты изменения остатков аптеки
preorders_full Принят полный сводный прайс-лист юрлица
preorders_updates Приняты изменения сводного прайс-листа юрлица
orders_updates_store Приняты изменения заказов со стороны аптеки
orders_updates_site Приняты изменения заказов со стороны сайта

Безопасность webhooks⚓︎

В целях обеспечения безопасности, при запросе на ваш адрес, в заголовке X-Signature запроса мы передаем хэш (HMAC SHA256) тела запроса.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
POST / HTTP/1.1
X-Signature: sha256=37B1103A5B784AEABC772167F7232EECC2886048FC85CB482F0DB45EB2199DDC
Content-Type: application/json; charset=utf-8
Host: 09a08e915c7a.ngrok.io
Content-Length: 189

{
    "ClientId":"BC164E55-B612-4A04-800B-34CCF10F6858",
    "Event":"stocks_full",
    "Message":"Processed",
    "MessageId":"9ebec167-ddf5-4de0-b4df-c4c1749afb1a",
    "Date":"2017-07-25T12:47:05.1210444+00:00"
}

При получении запроса на ваш URL, вы можете вычислить хэш тела запроса по алгоритму SHA256 и сравнить его значение с содержимым заголовка X-Signature. В случае если вычисленное вами значение совпадает с тем, что находится в заголовке, вы обрабатываете запрос, иначе отклоняете его.

Алгоритм формирования значения заголовка X-Signature⚓︎

  • Содержимое тела запроса в виде массива байт хэшируется по алгоритму SHA256 с использованием секретного ключа.
  • Полученный массив байт переводим в строку с шестнадцатиричным кодированием (hex-encoded string)
  • Спереди к полученной строке добавляем строку sha256=

Проверка подписи не обязательна, но если вы хотите быть уверены что запрос пришел именно от АСНА API, а не от постороннего, возможно вредоносного, ПО, то наличие этой проверки в вашем сервисе сделает его более защищенным.

Получение ключа⚓︎

Клиенты, которые желают защитить от несанкционированного доступа свои URL, используемые для получения уведомлений от АСНА REST API, должны получить ключ, который будет использоваться для формирования подписи запроса.

GET /v5/keys/webhooks

Описание⚓︎

Получить ключ для проверки подписи webhooks по протоколу v5

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

Имя Описание
Authorization Bearer token
Accept application/json

Пример запроса⚓︎

1
2
3
4
5
GET /v5/keys/webhooks HTTP/1.1
Host: api.asna.cloud
Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdGQzk0RDU4N0UzQzg4QUM0M0FDQkQyOEU0Njk4RDZCOTE3RkQyOUUiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJmOGxOV0g0OGlLeERyTDBvNUdtTmE1Rl8wcDQifQ.eyJuYmYiOjE0OTE1NzY2MDcsImV4cCI6MTQ5MTU4MDIwNywiaXNzIjoiaHR0cHM6Ly9zc28uYXNuYS5jbG91ZDoxODgxIiwiYXVkIjpbImh0dHBzOi8vc3NvLmFzbmEuY2xvdWQ6MTg4MS9yZXNvdXJjZXMiLCJhcGkiXSwiY2xpZW50X2lkIjoiRTQ1RDM0OTEtNzlFRS00RUVBLTkyQjItMjJDRUJFNEJCOEI1IiwiY2xpZW50X2FjY2VzcyI6WyJzdG9ja3MuZWRpdCIsInN0b2Nrcy5mdWxsX2FjY2VzcyIsInN0b2Nrcy52aWV3Il0sInNjb3BlIjpbImFwaSJdfQ.OvGjvdbOk6QI3CNRyjOmj5mSrUZ7v1LjWRgH9TjwhNTTKiEaww1iEr8CnSKOfpGUdhkFGiup8kzvW0PIsqrVZHEx2r5gmT9SO6orznDg-ESprgjjiBC-uYSSTzK_WmPZp-cjP4OVt8ovGY3ncNhrTYFmBy0CJh0XBtMmO5IkE9ASxyaw5Ou5by0SaMTF8Vh9ocE0Uaj8xf-m6ivKQYv_4gEsKs6XEjKBN0khfZGOvv1qQJ4iBn-fVtOqPUpv1ypcOskGZhVHo200ZjvPalbemV-51D45k1KZcE_K9qiYK8Y1vX_lzRDSaQI30PACuQc-VpB-WcCMAtVEEuo0paL2fw
Content-Type: application/json
Cache-Control: no-cache

Успешный ответ⚓︎

HTTP cтатус Значение
200 OK. Ключ выдан.

Пример ответа⚓︎

1
2
3
4
5
6
HTTP/1.1 200 OK
Content-Type: application/json

{
  "secret": "9xU78vt430"
}

Неуспешный ответ⚓︎

HTTP статус Значение
400 Bad Request. Полученные службой данные содержат ошибки. Информация об ошибке возвращается в теле ответа.
401 Unauthorized. Токен авторизации неверный или истек срок его действия
403 Forbidden. У вас нет прав на выполнение данной операции
429 Too Many Requests. Слишком много запросов с одного IP адреса за промежуток времени
500 Internal Server Error. Ошибка сервиса. Если ошибка повторяется, сообщите, пожалуйста, разработчикам сервиса

Подписка на события⚓︎

Клиенты, которые желают получать уведомление от API о событии, должны подписаться на это событие.

POST /v5/events/{eventName}

Описание⚓︎

Подписаться на событие eventName по протоколу v5

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

Имя Тип Обяз. Описание
eventName string Название события

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

Имя Описание
Authorization Bearer token
Content-Type application/json

Пример запроса⚓︎

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
POST /v5/events/stocks_full HTTP/1.1
Host: api.asna.cloud
Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdGQzk0RDU4N0UzQzg4QUM0M0FDQkQyOEU0Njk4RDZCOTE3RkQyOUUiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJmOGxOV0g0OGlLeERyTDBvNUdtTmE1Rl8wcDQifQ.eyJuYmYiOjE0OTE1NzY2MDcsImV4cCI6MTQ5MTU4MDIwNywiaXNzIjoiaHR0cHM6Ly9zc28uYXNuYS5jbG91ZDoxODgxIiwiYXVkIjpbImh0dHBzOi8vc3NvLmFzbmEuY2xvdWQ6MTg4MS9yZXNvdXJjZXMiLCJhcGkiXSwiY2xpZW50X2lkIjoiRTQ1RDM0OTEtNzlFRS00RUVBLTkyQjItMjJDRUJFNEJCOEI1IiwiY2xpZW50X2FjY2VzcyI6WyJzdG9ja3MuZWRpdCIsInN0b2Nrcy5mdWxsX2FjY2VzcyIsInN0b2Nrcy52aWV3Il0sInNjb3BlIjpbImFwaSJdfQ.OvGjvdbOk6QI3CNRyjOmj5mSrUZ7v1LjWRgH9TjwhNTTKiEaww1iEr8CnSKOfpGUdhkFGiup8kzvW0PIsqrVZHEx2r5gmT9SO6orznDg-ESprgjjiBC-uYSSTzK_WmPZp-cjP4OVt8ovGY3ncNhrTYFmBy0CJh0XBtMmO5IkE9ASxyaw5Ou5by0SaMTF8Vh9ocE0Uaj8xf-m6ivKQYv_4gEsKs6XEjKBN0khfZGOvv1qQJ4iBn-fVtOqPUpv1ypcOskGZhVHo200ZjvPalbemV-51D45k1KZcE_K9qiYK8Y1vX_lzRDSaQI30PACuQc-VpB-WcCMAtVEEuo0paL2fw
Content-Type: application/json
Cache-Control: no-cache

{
    "clientId": "BC164E55-B612-4A04-800B-34CCF10F6858",
    "url": "http://mycompany.ru/webhooks_handler"
}
Имя Тип Обяз. Описание
clientId GUID Уникальный идентификатор клиента по справочнику АСНА (например, если нужно получить уведомление о событии приема полных остатков по определенной аптеке, то в качестве clientId подставляется уникальный идентификатор этой аптеки )
url string URL, на который API должен делать запрос при возникновении события

Успешный ответ⚓︎

HTTP cтатус Значение
201 Created. Новая подписка создана.

Пример ответа⚓︎

1
HTTP/1.1 201 Created

Неуспешный ответ⚓︎

HTTP статус Значение
400 Bad Request. Полученные службой данные содержат ошибки. Информация об ошибке возвращается в теле ответа.
401 Unauthorized. Токен авторизации неверный или истек срок его действия
403 Forbidden. У вас нет прав на выполнение данной операции
429 Too Many Requests. Слишком много запросов с одного IP адреса за промежуток времени
500 Internal Server Error. Ошибка сервиса. Если ошибка повторяется, сообщите, пожалуйста, разработчикам сервиса

Обновление информации о подписке⚓︎

Клиенты могут изменить подписку на событие, например, при изменении URL, который должен вызывать API.

PUT /v5/events/{eventName}

Описание⚓︎

Изменить подписку на событие eventName по протоколу v5

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

Имя Тип Обяз. Описание
eventName string Название события

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

Имя Описание
Authorization Bearer token
Content-Type application/json

Пример запроса⚓︎

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
PUT /v5/events/stocks_full HTTP/1.1
Host: api.asna.cloud
Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdGQzk0RDU4N0UzQzg4QUM0M0FDQkQyOEU0Njk4RDZCOTE3RkQyOUUiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJmOGxOV0g0OGlLeERyTDBvNUdtTmE1Rl8wcDQifQ.eyJuYmYiOjE0OTE1NzY2MDcsImV4cCI6MTQ5MTU4MDIwNywiaXNzIjoiaHR0cHM6Ly9zc28uYXNuYS5jbG91ZDoxODgxIiwiYXVkIjpbImh0dHBzOi8vc3NvLmFzbmEuY2xvdWQ6MTg4MS9yZXNvdXJjZXMiLCJhcGkiXSwiY2xpZW50X2lkIjoiRTQ1RDM0OTEtNzlFRS00RUVBLTkyQjItMjJDRUJFNEJCOEI1IiwiY2xpZW50X2FjY2VzcyI6WyJzdG9ja3MuZWRpdCIsInN0b2Nrcy5mdWxsX2FjY2VzcyIsInN0b2Nrcy52aWV3Il0sInNjb3BlIjpbImFwaSJdfQ.OvGjvdbOk6QI3CNRyjOmj5mSrUZ7v1LjWRgH9TjwhNTTKiEaww1iEr8CnSKOfpGUdhkFGiup8kzvW0PIsqrVZHEx2r5gmT9SO6orznDg-ESprgjjiBC-uYSSTzK_WmPZp-cjP4OVt8ovGY3ncNhrTYFmBy0CJh0XBtMmO5IkE9ASxyaw5Ou5by0SaMTF8Vh9ocE0Uaj8xf-m6ivKQYv_4gEsKs6XEjKBN0khfZGOvv1qQJ4iBn-fVtOqPUpv1ypcOskGZhVHo200ZjvPalbemV-51D45k1KZcE_K9qiYK8Y1vX_lzRDSaQI30PACuQc-VpB-WcCMAtVEEuo0paL2fw
Content-Type: application/json
Cache-Control: no-cache

{
    "clientId": "BC164E55-B612-4A04-800B-34CCF10F6858",
    "url": "http://mycompany.ru/new_webhooks_handler"
}
Имя Тип Обяз. Описание
clientId GUID Уникальный идентификатор клиента по справочнику АСНА (например, если нужно получить уведомление о событии приема полных остатков по определенной аптеке, то в качестве clientId подставляется уникальный идентификатор этой аптеки )
url string URL, на который API должен делать запрос при возникновении события

Успешный ответ⚓︎

HTTP cтатус Значение
200 OK. Подписка изменена.

Пример ответа⚓︎

1
HTTP/1.1 200 OK

Неуспешный ответ⚓︎

HTTP статус Значение
400 Bad Request. Полученные службой данные содержат ошибки. Информация об ошибке возвращается в теле ответа.
401 Unauthorized. Токен авторизации неверный или истек срок его действия
403 Forbidden. У вас нет прав на выполнение данной операции
429 Too Many Requests. Слишком много запросов с одного IP адреса за промежуток времени
500 Internal Server Error. Ошибка сервиса. Если ошибка повторяется, сообщите, пожалуйста, разработчикам сервиса

Удаление подписки⚓︎

Клиенты могут удалить подписку на событие, если в ней больше нет необходимости.

DELETE /v5/events/{eventName}

Описание⚓︎

Удалить подписку на событие eventName по протоколу v5

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

Имя Тип Обяз. Описание
eventName string Название события

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

Имя Описание
Authorization Bearer token
Content-Type application/json

Пример запроса⚓︎

1
2
3
4
5
6
7
8
9
DELETE /v5/events/stocks_full HTTP/1.1
Host: api.asna.cloud
Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdGQzk0RDU4N0UzQzg4QUM0M0FDQkQyOEU0Njk4RDZCOTE3RkQyOUUiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJmOGxOV0g0OGlLeERyTDBvNUdtTmE1Rl8wcDQifQ.eyJuYmYiOjE0OTE1NzY2MDcsImV4cCI6MTQ5MTU4MDIwNywiaXNzIjoiaHR0cHM6Ly9zc28uYXNuYS5jbG91ZDoxODgxIiwiYXVkIjpbImh0dHBzOi8vc3NvLmFzbmEuY2xvdWQ6MTg4MS9yZXNvdXJjZXMiLCJhcGkiXSwiY2xpZW50X2lkIjoiRTQ1RDM0OTEtNzlFRS00RUVBLTkyQjItMjJDRUJFNEJCOEI1IiwiY2xpZW50X2FjY2VzcyI6WyJzdG9ja3MuZWRpdCIsInN0b2Nrcy5mdWxsX2FjY2VzcyIsInN0b2Nrcy52aWV3Il0sInNjb3BlIjpbImFwaSJdfQ.OvGjvdbOk6QI3CNRyjOmj5mSrUZ7v1LjWRgH9TjwhNTTKiEaww1iEr8CnSKOfpGUdhkFGiup8kzvW0PIsqrVZHEx2r5gmT9SO6orznDg-ESprgjjiBC-uYSSTzK_WmPZp-cjP4OVt8ovGY3ncNhrTYFmBy0CJh0XBtMmO5IkE9ASxyaw5Ou5by0SaMTF8Vh9ocE0Uaj8xf-m6ivKQYv_4gEsKs6XEjKBN0khfZGOvv1qQJ4iBn-fVtOqPUpv1ypcOskGZhVHo200ZjvPalbemV-51D45k1KZcE_K9qiYK8Y1vX_lzRDSaQI30PACuQc-VpB-WcCMAtVEEuo0paL2fw
Content-Type: application/json
Cache-Control: no-cache

{
    "clientId": "BC164E55-B612-4A04-800B-34CCF10F6858"
}
Имя Тип Обяз. Описание
clientId GUID Уникальный идентификатор клиента по справочнику АСНА (например, если нужно удалить уведомление о событии приема полных остатков по определенной аптеке, то в качестве clientId подставляется уникальный идентификатор этой аптеки )

Успешный ответ⚓︎

HTTP cтатус Значение
204 No Content. Подписка удалена.

Пример ответа⚓︎

1
HTTP/1.1 204 No Content

Неуспешный ответ⚓︎

HTTP статус Значение
400 Bad Request. Полученные службой данные содержат ошибки. Информация об ошибке возвращается в теле ответа.
401 Unauthorized. Токен авторизации неверный или истек срок его действия
403 Forbidden. У вас нет прав на выполнение данной операции
429 Too Many Requests. Слишком много запросов с одного IP адреса за промежуток времени
500 Internal Server Error. Ошибка сервиса. Если ошибка повторяется, сообщите, пожалуйста, разработчикам сервиса

Проверка отложенной обработки⚓︎

Если вы, при вызове API, получили в ответ HTTP-статус 202 Accepted, то это значит что переданные данные требуют отложенной обработки и были поставлены в очередь на обработку. В этом случае HTTP-заголовок Location содержит URL, запросив который вы получите статус обработки.

Проверить статус отложенной обработки можно несколькими способами.

  1. Через вызов API, описанный в этом разделе, можно получить информацию о статусе отложенной обработки.
  2. Получить статус отложенной обработки можно, кроме вышеописанного, способом, описанным в Информирование о событиях API (Webhooks).
  3. Запросить через API остатки назад и убедиться что они соответствуют отправленным Получение информации по остаткам аптеки.
  4. Получить информацию об остатках и прайс-листах можно через бота.

GET /v5/messages/{messageId}/status

Описание⚓︎

Получить информацию о статусе отложенной обработки упаковки данных c messageId по протоколу v5

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

Имя Тип Обяз. Описание
messageId GUID Идентификатор упаковки данных

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

Имя Описание
Authorization Bearer token
Accept application/json или application/x-json-full

Пример запроса⚓︎

1
2
3
4
5
GET /v5/messages/0e238a6a-c9f7-435f-9f9e-a9257e613879/status HTTP/1.1
Host: api.asna.cloud
Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdGQzk0RDU4N0UzQzg4QUM0M0FDQkQyOEU0Njk4RDZCOTE3RkQyOUUiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJmOGxOV0g0OGlLeERyTDBvNUdtTmE1Rl8wcDQifQ.eyJuYmYiOjE0OTE1NzY2MDcsImV4cCI6MTQ5MTU4MDIwNywiaXNzIjoiaHR0cHM6Ly9zc28uYXNuYS5jbG91ZDoxODgxIiwiYXVkIjpbImh0dHBzOi8vc3NvLmFzbmEuY2xvdWQ6MTg4MS9yZXNvdXJjZXMiLCJhcGkiXSwiY2xpZW50X2lkIjoiRTQ1RDM0OTEtNzlFRS00RUVBLTkyQjItMjJDRUJFNEJCOEI1IiwiY2xpZW50X2FjY2VzcyI6WyJzdG9ja3MuZWRpdCIsInN0b2Nrcy5mdWxsX2FjY2VzcyIsInN0b2Nrcy52aWV3Il0sInNjb3BlIjpbImFwaSJdfQ.OvGjvdbOk6QI3CNRyjOmj5mSrUZ7v1LjWRgH9TjwhNTTKiEaww1iEr8CnSKOfpGUdhkFGiup8kzvW0PIsqrVZHEx2r5gmT9SO6orznDg-ESprgjjiBC-uYSSTzK_WmPZp-cjP4OVt8ovGY3ncNhrTYFmBy0CJh0XBtMmO5IkE9ASxyaw5Ou5by0SaMTF8Vh9ocE0Uaj8xf-m6ivKQYv_4gEsKs6XEjKBN0khfZGOvv1qQJ4iBn-fVtOqPUpv1ypcOskGZhVHo200ZjvPalbemV-51D45k1KZcE_K9qiYK8Y1vX_lzRDSaQI30PACuQc-VpB-WcCMAtVEEuo0paL2fw
Accept: application/json
Cache-Control: no-cache

Успешный ответ⚓︎

HTTP cтатус Значение
200 ОК. В теле ответа содержится JSON со связками.
204 No Content. Информации о пакете нет в БД

Пример ответа⚓︎

1
2
3
4
5
6
7
{
  "id": 5,
  "messageId": "0e238a6a-c9f7-435f-9f9e-a9257e613879",
  "statusId": 2,
  "statusMessage": "Обработано",
  "statusDate": "2017-04-26T15:34:02.9112524+00:00"
}
Имя Тип Описание
id int Идентификатор записи
messageId GUID Идентификатор упаковки
statusId int Код статуса
statusMessage string Статус
statusDate datetime Дата статуса в формате ISO8601 в нулевом часовом поясе

Неуспешный ответ⚓︎

HTTP статус Значение
400 Bad Request. Полученные службой данные содержат ошибки. Информация об ошибке возвращается в теле ответа.
401 Unauthorized. Токен авторизации неверный или истек срок его действия
403 Forbidden. У вас нет прав на выполнение данной операции
429 Too Many Requests. Слишком много запросов с одного IP адреса за промежуток времени
500 Internal Server Error. Ошибка сервиса. Если ошибка повторяется, сообщите, пожалуйста, разработчикам сервиса

Статусы пакетов⚓︎

Код (statusId) Название Описание
0 Accepted Принято к обработке
1 Processing Обрабатывается
2 Processed Обработано
3 Error Ошибка. Пакет не был обработан

Валидация данных в формате JSON⚓︎

Иногда может возникнуть необходимость проверить отправляемые данные на соответствие формату JSON. Как правило, это происходит если API отклоняет запрос со статусом 400, но вы не можете обнаружить причину. Для проверки ваших данных, вы можете использовать следующий вызов API:

POST /v5/json_schemas/{schemaName}/validation

Описание⚓︎

Валидировать данные по схеме schemaName по протоколу v5

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

Имя Тип Обяз. Описание
schemaName string Имя схемы для валидации. Может принимать значения: stocks, preorders, orders, transactions

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

Имя Описание
Authorization Bearer token
Content-Type application/json

Тело запроса⚓︎

Тело запроса должно содержать в формате JSON пакет, который требуется валидировать

Пример запроса

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
POST /v5/json_schemas/stocks/validation HTTP/1.1
Host: api.asna.cloud
Content-Type: application/json

{
    "date": "2018-11-22T16:01:13.032+03:00",
    "stocks": [
        {
            "prtId": 111445,
            "nnt": 6072,
            "qnt": 5,
            "doc": "1к",
            "supInn": "",
            "supId": "",
            "supDate": "",
            "nds": 0,
            "gnvls": 1,
            "dp": 0,
            "man": "Beaufour-ipsen",
            "series": "",
            "exp": 0,
            "prcMan": 120,
            "prcOpt": 0,
            "prcOptNds": 137.5,
            "prcRet": 170,
            "prcReestr": 0,
            "prcGnvlsMax": 170,
            "sumOpt": 0,
            "sumOptNds": 0,
            "mrGnvls": 0,
            "tag": 0
        },
        {
            "prtId": 8608872,
            "nnt": 29534,
            "qnt": 10,
            "doc": "1к",
            "supInn": "",
            "supId": "",
            "supDate": "",
            "nds": 0,
            "gnvls": 1,
            "dp": 0,
            "man": "Beaufour-ipsen",
            "series": "",
            "exp": 0,
            "prcMan": 115,
            "prcOpt": 0,
            "prcOptNds": 132,
            "prcRet": 164,
            "prcReestr": 0,
            "prcGnvlsMax": 164,
            "sumOpt": 0,
            "sumOptNds": 0,
            "mrGnvls": 0,
            "tag": 0
        }
    ]
}

Успешный ответ⚓︎

HTTP cтатус Значение
200 OK. Пакет не содержит ошибок

Неуспешный ответ⚓︎

HTTP статус Значение
400 Bad Request. Полученные службой данные содержат ошибки. Информация об ошибке возвращается в теле ответа.
401 Unauthorized. Токен авторизации неверный или истек срок его действия
403 Forbidden. У вас нет прав на выполнение данной операции
429 Too Many Requests. Слишком много запросов с одного IP адреса за промежуток времени
500 Internal Server Error. Ошибка сервиса. Если ошибка повторяется, сообщите, пожалуйста, разработчикам сервиса

Пример ответа с ошибками валидации⚓︎

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
HTTP/1.1 400 Bad Request
Content-Type: application/json

{
   "statusCode":400,
   "isError":true,
   "isTransient":false,
   "exceptionMessage":"Please correct the specified validation errors and try again",
   "validationErrors":[
      {
         "field":"stocks[0].prtId",
         "message":"Line: 1 Position: 88 Value: 111445 Error: Invalid type. Expected String but got Integer."
      },
      {
         "field":"stocks[0].supDate",
         "message":"Line: 1 Position: 166 Value: Error: String '' does not validate against format 'date-time'."
      },
      {
         "field":"stocks[0].gnvls",
         "message":"Line: 1 Position: 188 Value: 1 Error: Invalid type. Expected Boolean, Null but got Integer."
      },
      {
         "field":"stocks[0].dp",
         "message":"Line: 1 Position: 197 Value: 0 Error: Invalid type. Expected Boolean, Null but got Integer."
      },
      {
         "field":"stocks[0].exp",
         "message":"Line: 1 Position: 246 Value: 0 Error: Invalid type. Expected String, Null but got Integer."
      },
      {
         "field":"stocks[1].prtId",
         "message":"Line: 1 Position: 436 Value: 8608872 Error: Invalid type. Expected String but got Integer."
      },
      {
         "field":"stocks[1].supDate",
         "message":"Line: 1 Position: 516 Value: Error: String '' does not validate against format 'date-time'."
      },
      {
         "field":"stocks[1].gnvls",
         "message":"Line: 1 Position: 538 Value: 1 Error: Invalid type. Expected Boolean, Null but got Integer."
      },
      {
         "field":"stocks[1].dp",
         "message":"Line: 1 Position: 547 Value: 0 Error: Invalid type. Expected Boolean, Null but got Integer."
      },
      {
         "field":"stocks[1].exp",
         "message":"Line: 1 Position: 596 Value: 0 Error: Invalid type. Expected String, Null but got Integer."
      }
   ]
}
Имя Тип Описание
field string Поле, в котором обнаружена ошибка
message string Описание ошибки

Возможна ситуация когда пакет не удается распарсить, в этом случае мы не можем понять в каких полях ошибка. Ниже пример такого ответа.

1
2
3
4
5
6
{
  "statusCode": 400,
  "isError": true,
  "isTransient": false,
  "exceptionMessage": "Invalid character after parsing property name. Expected ':' but got: 1. Path 'stocks[0]', line 5, position 20."
}

Неуспешный ответ⚓︎

HTTP статус Значение
400 Bad Request. Полученные службой данные содержат ошибки. Информация об ошибке возвращается в теле ответа.
401 Unauthorized. Токен авторизации неверный или истек срок его действия
403 Forbidden. У вас нет прав на выполнение данной операции
429 Too Many Requests. Слишком много запросов с одного IP адреса за промежуток времени
500 Internal Server Error. Ошибка сервиса. Если ошибка повторяется, сообщите, пожалуйста, разработчикам сервиса

  1. Ngrok - утилита, обеспечивающая безопасные туннели для инструментов разработки и отладки вебхуков с локального хоста. Имеется бесплатная и платная версии. Ссылка 


Последнее обновление: 17 августа 2021 г. 11:14:40
Созданный: 5 августа 2021 г. 12:36:05

Комментарии

Back to top