Уведомления об операциях
LIFE POS может уведомлять вас об операциях с продажами: создание, изменение и удаление. Для этого он отправляет API-запросы к клиенту. В запросе приходит содержимое объекта на момент выполнения операции.
Чтобы уведомления продолжали отправляться, на запросы от LIFE POS нужно отвечать кодом ответа HTTP 200. Если в течение суток ни на один запрос такой ответ не получен, то отправка уведомлений отключается.
Для отправки уведомлений нужно подключить бесплатное расширение. Рассказываем, как это сделать.
Включение уведомлений
Чтобы включить уведомления, отправьте PATCH-запрос по адресу:
{base_url}/v6/orgs/{org_guid}
base_url
— адрес сервиса. Возможные значения:- https://api-dev.life-pos.ru — тестовый API,
- https://api.life-pos.ru — рабочий API.
- org_guid — id организации в LIFE POS.
В параметре заголовка X-LP-Client-Extensions
передайте значение notification_service
.
Также в теле запроса в параметре value
отправьте параметры для настройки уведомлений:
turned_on
— определяет включена отправка уведомлений или нет.true
— уведомления включены,false
— выключены;primary_url_for_notifications
— основной URL для отправки уведомлений, обязательный параметр.secondary_url_for_notifications
— дополнительный URL для отправки уведомлений. Указывать необязательно. Используется при проблемах с отправкой на основной URL.
Пример запроса в curl:
curl -i -X PATCH \
-H "X-LP-Client-Identifier:a6680000" \
-H "X-LP-Client-Type:app" \
-H "Accept-Language:en-US" \
-H "X-LP-Client-Extensions:notification_service" \
-d \
'[
{
"op": "add",
"path": "/extensions/notification_service",
"value": {
"turned_on": "true",
"primary_url_for_notifications": "https://example.com/lifePOS/update",
"version": "1.0"
}
}
]' \
'https://api.life-pos.ru/orgs/aa000000'
Логика работы
После добавления расширения через параметр заголовка X-LP-Client-Extensions
для организации будет создана очередь уведомлений. У каждой организации может быть только одна очередь. В очередь попадают уведомления, которые не удалось отправить с первого раза.
Если в X-LP-Client-Extensions
не передано значение notification_service
, то очередь уведомлений будет удалена.
При добавленном расширении вы можете принудительно включать его или выключать. Это делается через параметр turned_on
. Если расширение включено, то периодически происходят попытки отправить уведомления из очереди. Если выключено, то отправка не происходит и уведомления накапливаются в очереди.
Логика отправки уведомлений
У каждой организации может быть только одна очередь и один процесс отправки уведомлений. Отправка уведомлений происходит только в прямой последовательности по очереди.
После любых изменений организации процесс отправки уведомлений останавливается. Обработчик уведомлений будет удален и создан новый с сохранением очереди.
Если в течение суток не удалось отправить ни одно уведомление, обработчик уведомлений будет остановлен. Чтобы перезапустить его, обновите организацию PATCH-запросом ил и выключите расширение и включите повторно.
Последовательность действий при отправке
-
Обработчик отправляет уведомление на URL, указанный в параметре
primary_url_for_notifications
. Если в ответ получен код 200, то уведомление помечается обработанным. Если код 200 не получен, то выполняется действие из пункта 2. -
Обработчик отправляет уведомление на URL, указанный в параметре
secondary_url_for_notifications
. Если в ответ получен код 200, то уведомление помечается обработанным. Если код 200 не получен, то выполняется действие из пункта 3. -
Попытки отправить уведомление приостанавливаются до следующего времени повторной отправки. Если за все периоды повторной отправки код 200 от клиента не получен, то отправка уведомлений останавливается.
Формат запроса к клиенту
Метод: HTTP POST
Заголовки:
AcceptLanguage: ru-RU
Content-Type: application/json
X-LP-SRV-Identifier: {server_guid}
X-LP-SRV-Name: “LifePos.Notify.Consumer.Extensions”
X-LP-Extensions: “notification_service”
X-LP-SRV-Attempt: {attempt_number}
Тело сообщения: JSON-представление объекта Ожидаемый ответ: HTTP 200