Программное обеспечение «LIFE POS Backend (version 6)»

Руководство администратора

Редакция от 14.08.2026

Скачать PDF

Введение

Сокращения

СокращениеРасшифровка
ПОпрограммное обеспечение
APIпрограммный интерфейс приложения
LPLIFE POS

Назначение

Руководство администратора предназначено для специалистов, осуществляющих настройку, сопровождение и контроль использования LIFE POS API в составе информационных систем пользователя.

Сведения о правообладателях

Авторские права на ПО «LIFE POS API» принадлежат ООО «Ритейл Бизнес Софт», 123112, г. Москва, вн. тер. г. Муниципальный округ Пресненский, Пресненская наб., дом 10, строение 2, помещ. 5Н. Сайт: life-pay.ru.

Управление продажами

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

У Василия служба доставки. Покупатели заказывают еду из ресторанов, а курьеры её привозят и получают оплату. Василий берёт из оплаты свою долю за доставку, а остальное передаёт ресторанам.

Пока курьер ходит по покупателям, Василий в офисе видит все открытые продажи и может получить информацию о каждой из них. Он может изменить данные заказа или отменить его. Когда работу над заказом закончили, Василий переносит его в архив.

Добавление продажи

Для всех заказов в API LIFE POS используется объект Продажа. Он объединяет информацию о товаре, передаваемом покупателю, его стоимости, статусе передачи и т. д. Именно продажу мы создавали в рамках быстрого старта.

Продажа создаётся POST-запросом по адресу:

{base_url}/orgs/{org_guid}/deals/sales

base_url — адрес сервиса. Возможные значения:

  • https://api-dev.life-pos.ru — тестовый API,
  • https://api.life-pos.ru — рабочий API.

Описание запроса

Можно создать сразу несколько продаж. Для этого измените адрес POST-запроса:

{base_url}/orgs/{org_guid}/deals/sales.batch

Адреса сервиса · Описание запроса

Вместо одной продажи в теле запроса передайте массив сделок.

Вне зависимости от количества созданных сделок, главный результат первого шага — продажа, имеющая идентификатор guid и статус New.

Созданные продажи появятся в приложении LIFE POS. Чтобы работать с продажей в приложении, включите приложение, откройте раздел Продажи и нажатием выберите продажу из списка. Подробнее: как в приложении LIFE POS редактировать созданную ранее продажу.

Изменение статуса продажи

Когда курьер доставил заказ, а покупатель оплатил его, можно изменить статус продажи. Для этого отправьте PATCH-запрос по адресу:

{base_url}/orgs/{org_guid}/deals/sales/{deal_guid}

Адреса сервиса · Описание запроса

Модель статусов продажи описывается тремя параметрами:

ПараметрОписаниеВозможные значения
stateСостояние самой продажи
  • New
  • InProgress
  • Completed
  • Cancelled
payment_statusСтатус оплаты
  • NotPaid
  • Paid
  • PartiallyPaid
  • Refunded
  • PartiallyRefunded
shipping_statusСтатус отгрузки товаров
  • NotShipped
  • Shipped
  • PartiallyShipped
  • Refunded
  • PartiallyRefunded

В нашем примере нужно передать payment_status=Paid и shipping_status=Shipped.

С помощью PATCH-запроса на изменение продажи можно менять не только статус, но и другие данные. Например, если покупатель попросил добавить в заказ новый товар.

Получение данных о продаже

Если вам нужно видеть все открытые продажи, получите их список, отправив GET-запрос по адресу:

{base_url}/orgs/{org_guid}/deals/sales

Адреса сервиса · Описание запроса

Данные выводятся постранично, по 20 записей на страницу. Если нужно получить данные второй страницы, возьмите из ответа значение параметра next_page_token и отправьте новый запрос, передав это значение в параметре page_token. Продолжайте до тех пор, пока параметр next_page_token не придёт пустым.

Например, вы запросили данные о сотрудниках и получили такой ответ:

"next_page_token": "OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0",
"page_number": 1,
"pages_total": 2,
"items_per_page": 20,
"items_total": 27,

В ответе представлены только записи 1–20. Чтобы посмотреть записи с 21 по 27, отправьте новый GET-запрос, указав page_token="OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0".

Важно. В запросе есть необязательный параметр selection. Это фильтр продаж по их статусу. Если параметр не передан, по умолчанию используется значение alive_only, то есть в ответе придут только данные продаж, не перенесённых в архив. Чтобы посмотреть весь список продаж или только архивные данные, укажите значение all или archived_only соответственно.

Чтобы получить информацию о конкретной продаже, отправьте GET-запрос по следующему адресу:

{base_url}/orgs/{org_guid}/deals/sales/{deal_guid}

Адреса сервиса · Описание запроса

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

Получение информации об оплате

Вы можете выгружать из системы LIFE POS информацию о движении денежных средств. Она отражена в прямой сессии, которая будет создана, когда курьер примет оплату.

Чтобы получить список прямых сессий, отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/deals/sales/{deal_guid}/sessions

Адреса сервиса · Описание запроса

Данные выводятся постранично, по 20 записей на страницу. Если нужно получить данные второй страницы, возьмите из ответа значение параметра next_page_token и отправьте новый запрос, передав это значение в параметре page_token. Продолжайте до тех пор, пока параметр next_page_token не придёт пустым.

Например, вы запросили данные о сотрудниках и получили такой ответ:

"next_page_token": "OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0",
"page_number": 1,
"pages_total": 2,
"items_per_page": 20,
"items_total": 27,

В ответе представлены только записи 1–20. Чтобы посмотреть записи с 21 по 27, отправьте новый GET-запрос, указав page_token="OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0".

Важно. В запросе есть необязательный параметр selection. Это фильтр сессий по их статусу. Если параметр не передан, по умолчанию используется значение alive_only, то есть в ответе придут только данные сессий, не перенесённых в архив. Чтобы посмотреть весь список сессий или только архивные данные, укажите значение all или archived_only соответственно.

Данные конкретной прямой сессии получаются другим GET-запросом:

{base_url}/orgs/{org_guid}/deals/sales/{deal_guid}/sessions/{session_type}/{session_guid}

Адреса сервиса

ПараметрОписание
session_typeТип сессии. Возможные значения: direct, reversal, direct-correction, reversal-correction.
session_guidИдентификатор сессии. Передаётся в списке сессий.

Описание запроса

Если покупатель платил по карте, можете также получить данные транзакции. Для этого отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/{method}/{terminal_guid}/transactions/{transaction_guid}

Адреса сервиса

ПараметрОписание
methodСпособ оплаты. Возможные значения: bank — банковская карта, quick-payments — СБП.
transaction_guidИдентификатор транзакции. Передаётся в описании сессии, в рамках которой была оплачена продажа.

Описание запроса для банковской карты · Описание запроса для СБП

Получение чека

Вы можете выгружать из системы LIFE POS фискальные документы, в том числе и чеки. Чтобы выгрузить список чеков, отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/fiscal-registrars/{registrar_guid}/docs

Адреса сервиса · Описание запроса

Данные выводятся постранично, по 20 записей на страницу. Если нужно получить данные второй страницы, возьмите из ответа значение параметра next_page_token и отправьте новый запрос, передав это значение в параметре page_token. Продолжайте до тех пор, пока параметр next_page_token не придёт пустым.

Например, вы запросили данные о сотрудниках и получили такой ответ:

"next_page_token": "OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0",
"page_number": 1,
"pages_total": 2,
"items_per_page": 20,
"items_total": 27,

В ответе представлены только записи 1–20. Чтобы посмотреть записи с 21 по 27, отправьте новый GET-запрос, указав page_token="OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0".

Важно. В запросе есть необязательный параметр selection. Это фильтр документов по их статусу. Если параметр не передан, по умолчанию используется значение alive_only, то есть в ответе придут только данные документов, не перенесённых в архив. Чтобы посмотреть весь список документов или только архивные данные, укажите значение all или archived_only соответственно.

Чтобы получить данные конкретного кассового чека, отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/fiscal-registrars/{registrar_guid}/docs/receipts/{doc_guid}

Адреса сервиса · Описание запроса

Архивирование и восстановление продажи

Если ошибку в заказе невозможно исправить, если покупатель отказался от покупки или если ваш заказ закрыт вне системы LIFE POS, можете перенести продажу в архив. Вместе с продажей в архив отправятся все её дочерние объекты.

Чтобы архивировать продажу, отправьте DEL-запрос по адресу:

{base_url}/orgs/{org_guid}/deals/sales/{deal_guid}

Адреса сервиса · Описание запроса

Никакая информация не удаляется навсегда — из архива продажу можно вернуть. Для этого отправьте POST-запрос по адресу:

{base_url}/orgs/{org_guid}/deals/sales/{deal_guid}:unarchive

Адреса сервиса · Описание запроса

Продажа маркированных товаров

До сих пор мы разбирали продажу обычных товаров. Рассмотрим теперь специфику передачи данных о маркированных товарах.

Коды маркировки нужны, чтобы товар можно было отследить по всей цепочке от производителя до конечного покупателя. Данные о лекарствах собирает ИС МДЛП, а об остальных маркированных товарах — система «Честный знак».

Данные о маркировке передаются вместе с данными о товаре в POST-запросе создания сделки:

{base_url}/orgs/{org_guid}/deals/sales

base_url — адрес сервиса. Возможные значения:

  • https://api-dev.life-pos.ru — тестовый API,
  • https://api.life-pos.ru — рабочий API.

Описание запроса

За данные о товаре отвечает массив positions. В нём с маркировкой связаны следующие поля:

ПолеОписание
is_markableЛогический признак маркированного товара.
barcodeШтрихкод товара. Заполнять обязательно, если is_markable=true.
marking_attributesМассив данных о маркированном товаре.

В массиве marking_attributes передаются следующие поля:

ПолеОписание
is_part_of_package_ofПараметр используется, если позиция является частью упаковки — например, пакетик Терафлю из упаковки на 20 пакетиков. Параметр нужен, чтобы показать связь между единицей товара и упаковкой. Позиции для этого не подходят: каждую единицу маркированного товара нужно передавать как отдельную позицию. Это обусловлено тем, что коды маркировки уникальные и являются атрибутом позиции, а не единицы товара.
marksМассив кодов маркировки.

В массиве marks передаются следующие поля:

ПолеОписание
marking_codeКод маркировки.
checking_resultРезультат проверки кода маркировки. Проверка происходит при фискализации покупки. Результат проверки выставляется на основании данных, полученных от фискального регистратора. Возможные значения параметра: KMChecked, KPKMCorrect, OISMStatusChecked, OISMStatusCorrect, KPKMCheckedAutonomously.
for_quantityОбязательный параметр. Количество позиций, к которым относится код маркировки.

Чтобы код маркировки правильно обрабатывался во всех системах, он должен соответствовать требованиям «Честного знака». Специальные символы нужно экранировать по стандарту RFC 8259, а <GS> заменять на \u001D.

Исходный код: 0104650117240408211dmfcZNcM"4
Экранированный код: 0104650117240408211dmfcZNcM\"4

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

К примеру, у Василия заказали две пары кожаных ботинок. В сделке появится массив positions, содержащий среди своих объектов маркированную позицию «Ботинки рабочие кожаные размер 41 черные Трейл Плюс ТЗ».

Обратим внимание на параметр "quantity": 2.0. Так как каждый код маркировки уникален, кодов должно быть передано два. Но Василий хочет одну марку передать по API, а вторую отсканировать на кассе. В этом случае объектов в массиве marks всё равно должно быть два, однако второй объект содержит только счётный параметр for_quantity.

"positions": [
  {
    "settlement_subject": "Product",
    "name": "Ботинки рабочие кожаные размер 41 черные Трейл Плюс Т3",
    "uom": {
      "guid": "25865e33-2efc-11df-942d-0023543d7b52",
      "type_of": "Uom"
    },
    "tax": "Tax20",
    "sale_price": {
      "value": 48800,
      "currency": "RUB",
      "type_of": "Money"
    },
    "quantity": 2.0,
    "total_sum": {
      "value": 48800,
      "currency": "RUB",
      "type_of": "Money"
    },
    "barcode": "4678599263104",
    "is_markable": true,
    "marking_attributes": {
      "marks": [
        {
          "marking_code": "010290000002493921AqjmFon,CoD_)\u001D91003E\u001D92DNI4UMPkN5SpwqPRN7c2ihHTHmM4ZnGm81A6qlFMNkedQnPm6SmcbDKfYt3XAJ+WVdl05ewWpGg/dpJEBAnI6g==",
          "for_quantity": 1.0,
          "checking_result": [
            "KPKMCheckedAutonomously"
          ]
        },
        {
          "for_quantity": 1.0
        }
      ]
    },
    "meta": "good_guid=0a135191-6469-11ea-80c8-00155dfc0b56",
    "guid": "2c9619d4-f005-49f6-a2b4-4014815b26f1",
    "type_of": "DealPosition"
  },

Неправильно — при значении "quantity": 2.0 передавать в массиве marks только один объект кода маркировки:

"is_markable": true,
"marking_attributes": {
  "marks": [
    {
      "marking_code": "010290000002493921AqjmFon,CoD_)\u001D91003E\u001D92DNI4UMPkN5SpwqPRN7c2ihHTHmM4ZnGm81A6qlFMNkedQnPm6SmcbDKfYt3XAJ+WVdl05ewWpGg/dpJEBAnI6g==",
      "for_quantity": 1.0,
      "checking_result": [
        "KPKMCheckedAutonomously"
      ]
    }
  ]
},

Готово! Вы зарегистрировали сделку с маркированным товаром.

Данные покупателя

LIFE POS позволяет собирать и хранить значительные данные о клиентах. Передав данные по API, вы упростите работу курьеру: ему не нужно будет вводить их руками при продаже — останется только передать товар, получить деньги и пробить чек.

Данные покупателя хранятся в сделке в объекте customer_data. Передать их в API можно POST-запросом, а получить — GET-запросом по адресу:

{base_url}/orgs/{org_guid}/deals/sales

base_url — адрес сервиса. Возможные значения:

  • https://api-dev.life-pos.ru — тестовый API,
  • https://api.life-pos.ru — рабочий API.

Описание POST-запроса · Описание GET-запроса

Вот как выглядят сами данные:

"customer_data": {
  "name": "string",
  "inn": "string",
  "contacts": "string",
  "citizenship": "RUS",
  "identity_document_type": "RFPassport",
  "identity_document_data": "string",
  "date_of_birth": "2019-08-24T14:15:22Z",
  "address": "string"
}

Нюансы работы с полями:

ПолеОграничение
innМаксимум 12 символов.
citizenshipПринимает трёхбуквенные коды стран.

Возможные значения поля identity_document_type:

  • RFPassport,
  • RFSpecialPassport,
  • RFTemporaryIdentity,
  • RFBirthCertificate,
  • RFOtherDocuments,
  • ForeignPassport,
  • ForeignOtherDocuments,
  • ForeignIdentity,
  • ForeignResidence,
  • ForeignTemporaryResidence,
  • RefugeeApplication.

Чаще всего эти поля используются для передачи ФИО и ИНН или данных паспорта покупателя на фискальный регистратор — если нужно указать их в чеке.

Продажа по агентской схеме

LIFE POS поддерживает продажу товаров по агентской схеме. Такая схема подразумевает, что поставщик продаёт свои товары через стороннее лицо — агента. Агентом может быть ИП, компания, кредитная организация или торговый посредник. Агент занимается доставкой товара и принимает оплату. Для расчётов с физическими клиентами ему нужна онлайн-касса.

По закону касса должна передавать в ФНС информацию об агенте, поставщике и операторе перевода. В LIFE POS эти реквизиты нужно передать в сделке в объекте additional_attributes. Он находится внутри объекта positions. Это позволяет продавать часть позиций по агентской схеме, а другую часть как собственные товары.

Чтобы провести сделку по агентской схеме, заполните additional_attributes и отправьте POST-запрос для создания продажи:

{base_url}/orgs/{org_guid}/deals/sales

base_url — адрес сервиса. Возможные значения:

  • https://api-dev.life-pos.ru — тестовый API,
  • https://api.life-pos.ru — рабочий API.

Описание запроса

Вот так выглядят сами данные:

"additional_attributes": {
  "as_agent_type_of": "String",
  "transfer_operator_name": "String",
  "transfer_operator_phones": "String",
  "transfer_operator_address": "String",
  "transfer_operator_inn": "String",
  "paying_agent_operation": "String",
  "paying_agent_phones": "String",
  "payment_operator_phones": "String",
  "supplier_name": "String",
  "supplier_inn": "String",
  "supplier_phones": "String"
}

Особенности работы с полями:

ПолеОграничение
transfer_operator_inn, supplier_innМаксимум 12 символов.
paying_agent_operationМаксимум 24 символа.
as_agent_type_ofПринимает только 7 значений:
  • BankPayingAgent
  • BankPayingSubagent
  • PayingAgent
  • PayingSubagent
  • Attorney
  • Consignee
  • Agent

Организация

Организация в системе LIFE POS — это ваш бизнес. В организации может быть несколько юридических лиц, как и несколько магазинов. Их объединяет то, что они работают на вас. Рассказываем, что можно сделать с организацией через API LIFE POS.

Проверить псевдоним

У каждой организации в системе LIFE POS есть псевдоним — значение поля alias. Этот псевдоним должен быть уникальным. Чтобы проверить доступность придуманного псевдонима, отправьте POST-запрос по адресу:

{base_url}/orgs:check-alias-availability

base_url — адрес сервиса. Возможные значения:

  • https://api-dev.life-pos.ru — тестовый API,
  • https://api.life-pos.ru — рабочий API.

Описание запроса

Добавить организацию

Чтобы добавить организацию, отправьте POST-запрос по адресу:

{base_url}/orgs

Адреса сервиса

Метод отправит вам смс с логином и пин-кодом для входа в приложение LIFE POS.

Кроме организации, метод создаст:

  • Роли пользователей по умолчанию.
  • Страницу с контактами техподдержки, если вы заполнили поле support.
  • Сотрудника организации с ролью Владелец. Сотрудник привязывается к аккаунту, от которого поступил запрос на создание организации.
  • Сущность Системная валюта (OrganizationOption: SYSTEM_CURRENCY) со значением RUB.
  • Единицы измерения: Не задана, Килограмм, Штука, Литр.
  • Расширения, данные которых вы указали в объекте extensions.

В тело запроса входит объект support — контакты поддержки, которые будут выводиться в приложении для курьера. Если их не передать, в приложении будут контакты поддержки LIFE POS. Вот что можно настроить в объекте support:

ПолеОписание
lineНазвание компании для заголовка: «Контакты техподдержки %line%». Например: «Контакты техподдержки LIFE POS».
responsibilityКраткое описание вопросов, по которым помогает поддержка. Например: «Обращайся сюда, если есть вопросы по заказам».
phoneТелефон.
emailЭлектронная почта.
opening_hoursЧасы работы.
whatsappWhatsApp.
viberViber.
telegramTelegram.

Подробное описание запроса

Получить данные организации

Чтобы получить список организаций, отправьте GET-запрос по адресу:

{base_url}/orgs

Адреса сервиса · Описание запроса

Данные выводятся постранично, по 20 записей на страницу. Если нужно получить данные второй страницы, возьмите из ответа значение параметра next_page_token и отправьте новый запрос, передав это значение в параметре page_token. Продолжайте до тех пор, пока параметр next_page_token не придёт пустым.

Например, вы запросили данные о сотрудниках и получили такой ответ:

"next_page_token": "OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0",
"page_number": 1,
"pages_total": 2,
"items_per_page": 20,
"items_total": 27,

В ответе представлены только записи 1–20. Чтобы посмотреть записи с 21 по 27, отправьте новый GET-запрос, указав page_token="OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0".

Чтобы получить данные о конкретной организации, отправьте GET-запрос по другому адресу:

{base_url}/orgs/{org_guid}

Описание запроса

Изменить данные организации

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

Подробнее про расширения

Чтобы скорректировать данные, отправьте PATCH-запрос по адресу:

{base_url}/orgs/{org_guid}

Адреса сервиса

В теле запроса передайте изменения.

Описание запроса

Удалить и восстановить данные организации

Полностью удалить данные организации нельзя, но их можно отправить в архив. Данные исчезнут из интерфейса, но сохранятся на сервере LIFE POS. Чтобы заархивировать данные, отправьте DELETE-запрос по адресу:

{base_url}/orgs/{org_guid}

Адреса сервиса · Описание запроса

Чтобы восстановить данные из архива, отправьте POST-запрос по адресу:

{base_url}/orgs/{org_guid}:unarchive

Вот и всё, что касается настроек организации.

Сессии

Сессия — это объект в LIFE POS API, отвечающий за движения денег и товаров между вами и покупателем. Это любое ваше взаимодействие с покупателем, в рамках которого передаются деньги или позиции номенклатуры.

Сессии делятся на прямые и обратные. Оплата заказа, отгрузка товара или предоставление услуги — это прямые сессии, а возврат — обратная.

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

Если бы покупатель оплачивал джинсы картой на сайте, а получал их у курьера, то прямых сессий возникло бы две: в рамках первой Василий получил бы от покупателя аванс, а в рамках второй отгрузил бы ему товар.

Внимание! API LIFE POS пока не поддерживает работу со всеми признаками расчёта. Можно оформить только полный расчёт, т. е. получить оплату и отгрузить товар в рамках одной сессии.

Теперь представим, что покупатель примерил джинсы и они ему не подошли. Покупатель отдаёт их обратно курьеру, а Василий возвращает деньги на карту покупателю. Возникает обратная сессия: товар вернулся Василию, а деньги — покупателю. Сессия возврата должна быть привязана к исходной сессии продажи, чтобы было понятно, какая именно позиция и какие именно деньги возвращаются.

Бывает так, что в момент оплаты чек пробить не удалось. Тогда в момент создания чека коррекции возникает прямая сессия коррекции. Если же вы корректируете возврат, это обратная сессия коррекции. Как и обратная сессия, сессия коррекции должна быть привязана к той сессии, которую она корректирует.

Структура объекта Сессия

Рассмотрим структуру объекта Сессия в API LIFE POS — она одинакова и для прямых сессий, и для обратных, и для сессий коррекции; содержит следующие данные:

ПолеОписание
saleОбъект Продажа, содержащий guid продажи и тип объекта type_of.
actionsМассив объектов Действия, который описывает, что именно произошло в рамках сессии.
fiscal_documentsМассив объектов Фискальные документы. Когда по сессии появится чек, здесь появятся guid чека и тип объекта type_of.

При необходимости каждый объект массива fiscal_documents можно раскрыть, чтобы получить полную информацию о каждой транзакции. Для этого надо передать в запросе параметр expand:

{base_url}/orgs/{org_guid}/deals/sales/{deal_guid}/sessions?expand=fiscal_documents[:].fiscal_registrar&presentation=full

base_url — адрес сервиса. Возможные значения:

  • https://api-dev.life-pos.ru — тестовый API,
  • https://api.life-pos.ru — рабочий API.

Раскрытый объект будет содержать объект fiscal_registrar, который, в свою очередь, содержит следующие поля:

ПолеОписание
modelМодель фискального регистратора.
registration_numberРегистрационный номер.
serial_numberСерийный номер.

В массиве actions передаются следующие данные:

ПолеОписание
money_actionОбъект Операция с деньгами и позициями. Содержит следующие поля:
  • purposes — массив объектов Предметы расчёта;
  • payment_parts — массив объектов Части платежа.
non_purpose_money_actionОбъект Операция с деньгами. Пока не используется, поскольку признаки способа расчёта не поддержаны и подразумевается, что при получении каждой оплаты вы передаёте покупателю товар.
shipping_actionОбъект Операция с позициями. Содержит массив объектов purposes, каждый из которых должен содержать (знаком * отмечены обязательные поля):
  • quantity * — количество позиций;
  • marking_attributes — данные о маркировке;
  • position — объект Позиция, содержащий guid позиции и тип объекта type_of.

В объекте money_action.purposes передаются следующие данные (знаком * отмечены обязательные поля):

ПолеОписание
amount *Объект Стоимость товара. Содержит поля:
  • value — сумма;
  • currency * — валюта. Возможные значения: RUB, GBP, USD, EUR, Unknown;
  • position — объект Позиция, содержащий guid позиции и тип объекта type_of.

Объект money_action.payment_parts содержит данные о частях платежа. Частей платежа может быть сколько угодно, а конкретное содержимое каждой части зависит от способа, которым покупатель оплачивает заказ.

Сервис оплаты частями «Подели» (BnplPaymentPart)

ПолеОписание
podeli_detailsОбъект, содержащий обязательное поле order_id — идентификатор заказа.

Оплата картой (CardPaymentPart)

ПолеОписание
transactionsМассив ссылок на транзакции; каждая ссылка содержит поля guid и type_of.

При необходимости каждый объект массива transactions можно раскрыть, чтобы получить полную информацию о каждой транзакции. Для этого надо передать в запросе параметр expand:

{base_url}/orgs/{org_guid}/deals/sales/{deal_guid}/sessions?expand=actions.*.payment_parts[:].transactions[:].bank_terminal&presentation=full

Адреса сервиса

Раскрытый объект будет содержать объект bank_terminal, который, в свою очередь, содержит следующие поля:

ПолеОписание
modelМодель банковского терминала.
terminal_idИдентификатор банковского терминала.
merchant_idИдентификатор продавца, выданный банком.
reference_retrieval_numberRRN операции.
card_numberНомер карты покупателя.

Наличные (CashPaymentPart)

Специальных полей нет.

Незарегистрированный перевод (CashlessPaymentPart)

Специальных полей нет. Этот способ оплаты используется, если покупатель расплатился с вами переводом без использования платёжного шлюза LIFE POS. Например, отправил деньги по СБП.

Платёжная ссылка (LinkPaymentPart)

ПолеОписание
external_idВнешний идентификатор.
ttlВремя жизни ссылки в минутах, от 5 до 2880.
payment_urlАдрес ссылки.
expired_atДата и время истечения срока жизни ссылки.
transactionsМассив ссылок на транзакции; каждая ссылка содержит поля guid и type_of.

Система быстрых платежей (QuickPaymantPaymentPart)

ПолеОписание
transactionsМассив ссылок на транзакции; каждая ссылка содержит поля guid и type_of.

При необходимости каждый объект массива transactions можно раскрыть, чтобы получить полную информацию о каждой транзакции. Для этого надо передать в запросе параметр expand:

{base_url}/orgs/{org_guid}/deals/sales/{deal_guid}/sessions?expand=actions.*.payment_parts[:].transactions[:].quick_payments_terminal&presentation=full

Адреса сервиса

Раскрытый объект будет содержать объект quick_payments_terminal, который, в свою очередь, содержит следующие поля:

ПолеОписание
modelМодель терминала СБП.
terminal_idИдентификатор терминала СБП.
reference_retrieval_numberRRN операции.

Поля объекта money_action.purposes, общие для всех способов оплаты:

ПолеОписание
amount *Объект Стоимость товара. Содержит поля:
  • value — сумма;
  • currency * — валюта. Возможные значения: RUB, GBP, USD, EUR, Unknown;
  • position — объект Позиция, содержащий guid позиции и тип объекта type_of.
status *Статус платежа. Возможные значения: Draft, Accepted, Refunded.
guidИдентификатор.

С помощью такой модели можно реализовать комбинированную оплату (например, часть картой, часть наличными), частичную предоплату с последующей доплатой, частичный возврат и т. д.

Вот и всё, что вам нужно знать о сессиях.

Оплаты

LIFE POS API позволяет получать, хранить и обрабатывать все данные об оплатах, в том числе для последующей фискализации.

Создать оплату

За движения денежных средств в LIFE POS API отвечает объект Сессия. Сессия — это любое ваше взаимодействие с покупателем, в рамках которого передаются деньги или позиции номенклатуры. Оплата продавцу и отгрузка товара покупателю — это прямые сессии, а возврат — обратная. Подробнее о сессиях.

Чтобы создать новую прямую сессию, отправьте POST-запрос по адресу:

base_url — адрес сервиса. Возможные значения:

  • https://api-dev.life-pos.ru — тестовый API,
  • https://api.life-pos.ru — рабочий API.

Описание запроса

Получение информации об оплате

Чтобы получить список всех сессий, связанных с продажей, отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/deals/sales/{deal_guid}/sessions

Адреса сервиса · Описание запроса

Данные выводятся постранично, по 20 записей на страницу. Если нужно получить данные второй страницы, возьмите из ответа значение параметра next_page_token и отправьте новый запрос, передав это значение в параметре page_token. Продолжайте до тех пор, пока параметр next_page_token не придёт пустым.

Например, вы запросили данные о сотрудниках и получили такой ответ:

"next_page_token": "OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0",
"page_number": 1,
"pages_total": 2,
"items_per_page": 20,
"items_total": 27,

В ответе представлены только записи 1–20. Чтобы посмотреть записи с 21 по 27, отправьте новый GET-запрос, указав page_token="OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0".

Чтобы получить данные конкретной сессии, отправьте GET-запрос по другому адресу:

{base_url}/orgs/{org_guid}/deals/sales/{deal_guid}/sessions/direct/{session_guid}

ПараметрОписание
session_guidИдентификатор сессии. Можно получить в списке сессий по продаже.

Адреса сервиса · Описание запроса

Если покупатель платил по карте, можете также получить данные транзакции. Для этого отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/{method}/{terminal_guid}/transactions/{transaction_guid}

ПараметрОписание
methodСпособ оплаты. Возможные значения: bank — банковская карта, quick-payments — СБП.
transaction_guidИдентификатор транзакции. Передаётся в документе оплаты.

Описание запроса для банковской карты · Описание запроса для СБП

Изменение информации об оплате

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

Чтобы изменить информацию об оплате, отправьте PATCH-запрос по адресу:

{base_url}/orgs/{org_guid}/deals/sales/{deal_guid}/sessions/direct/{session_guid}

Адреса сервиса · Описание запроса

Удаление и восстановление информации об оплате

Вы можете отправить информацию об оплате в архив. Полностью информация не удаляется. Она исчезает из вашего интерфейса управления заказами, но продолжает храниться на сервере LIFE POS. Её можно восстановить, если она снова понадобится.

Чтобы удалить информацию об оплате, отправьте DEL-запрос по адресу:

{base_url}/orgs/{org_guid}/deals/sales/{deal_guid}/sessions/direct/{session_guid}

Адреса сервиса · Описание запроса

Восстановить информацию об оплате можно POST-запросом:

{base_url}/orgs/{org_guid}/deals/sales/{deal_guid}/sessions/direct/{session_guid}:unarchive

Адреса сервиса · Описание запроса

Вот и всё, что нужно знать о работе с оплатами.

Транзакции

В LIFE POS по одному заказу может проходить несколько транзакций. Самые частые примеры таких случаев — если покупатель оплачивает заказ частями или если состав оплаченного заказа изменился.

Различать нужно транзакции по банковскому терминалу, т. е. классический эквайринг, и транзакции по СБП — переводы по QR-коду или ссылке. Они описываются разным набором данных, поэтому для них предусмотрены разные методы API.

Рассказываем, как перенести данные о транзакциях из LIFE POS в вашу систему учёта.

Получить список транзакций

Чтобы получить список транзакций банковского терминала, отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/bank/{terminal_guid}/transactions

ПараметрОписание
base_urlАдрес сервиса. Возможные значения:
  • https://api-dev.life-pos.ru — тестовый API,
  • https://api.life-pos.ru — рабочий API.
terminal_guidИдентификатор банковского терминала.

Описание запроса

Чтобы получить список транзакций по СБП, отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/quick-payments/{terminal_guid}/transactions

Описание запроса

Если вам нужен список всех транзакций вне зависимости от платёжной системы, отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/*/{terminal_guid}/transactions

Описание запроса

Данные выводятся постранично, по 20 записей на страницу. Если нужно получить данные второй страницы, возьмите из ответа значение параметра next_page_token и отправьте новый запрос, передав это значение в параметре page_token. Продолжайте до тех пор, пока параметр next_page_token не придёт пустым.

Например, вы запросили данные о сотрудниках и получили такой ответ:

"next_page_token": "OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0",
"page_number": 1,
"pages_total": 2,
"items_per_page": 20,
"items_total": 27,

В ответе представлены только записи 1–20. Чтобы посмотреть записи с 21 по 27, отправьте новый GET-запрос, указав page_token="OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0".

Получить описание транзакции

Чтобы получить описание транзакции по банковскому терминалу, отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/bank/{terminal_guid}/transactions/{transaction_guid}

Адреса сервиса

ПараметрОписание
terminal_guidИдентификатор банковского терминала.
transaction_guidИдентификатор транзакции. Можно получить в списке транзакций.

Описание запроса

Чтобы получить описание транзакции по СБП, отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/quick-payments/{terminal_guid}/transactions/{transaction_guid}

Описание запроса

Если нужны данные транзакции вне зависимости от платёжной системы, отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/*/*/transactions/{transaction_guid}

Описание запроса

Удалить и восстановить транзакцию

Удалить транзакцию из LIFE POS невозможно, но можно отправить её в архив. Она исчезнет из интерфейса, но останется на сервере LIFE POS. Чтобы удалить транзакцию по банковскому терминалу, отправьте DEL-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/bank/{terminal_guid}/transactions/{transaction_guid}

Адреса сервиса

ПараметрОписание
terminal_guidИдентификатор банковского терминала.
transaction_guidИдентификатор транзакции. Можно получить в списке транзакций.

Описание запроса

Чтобы удалить транзакцию по СБП, отправьте DEL-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/quick-payments/{terminal_guid}/transactions/{transaction_guid}

Описание запроса

Если нужно восстановить транзакцию по банковскому терминалу, отправьте POST-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/bank/{terminal_guid}/transactions/{transaction_guid}:unarchive

Описание запроса

Если нужно восстановить транзакцию по СБП, отправьте POST-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/quick-payments/{terminal_guid}/transactions/{transaction_guid}:unarchive

Описание запроса

На этом с транзакциями всё.

Возвраты

Провести через API полноценную операцию возврата средств не получится — обязательно понадобится карта покупателя для проведения денег через эквайринг. Но через API вы можете создать обратную сессию для выполнения возврата. Рассказываем, как работать с обратными сессиями.

Оформить возврат

За движения денежных средств в LIFE POS API отвечает объект Сессия. Сессия — это любое ваше взаимодействие с покупателем, в рамках которого передаются деньги или товары. Оплата продавцу, отгрузка товара или предоставление услуги — это прямые сессии, а возврат — обратная. Подробнее о сессиях.

Чтобы создать обратную сессию, отправьте POST-запрос по адресу:

{base_url}/orgs/{org_guid}/deals/sales/{deal_guid}/sessions/reversal

base_url — адрес сервиса. Возможные значения:

  • https://api-dev.life-pos.ru — тестовый API,
  • https://api.life-pos.ru — рабочий API.

Возврат должен ссылаться на прямую сессию оплаты, а каждая часть платежа — на соответствующую часть платежа в этой прямой сессии. Для этого в описании операций, проведённых в рамках сессии, в объекте payment_parts используются объекты primary_sale_session и primary_payment_part соответственно. Передайте в них guid и type_of объектов, на которые хотите сослаться.

Подробное описание запроса

Когда возврат будет оформлен, поменяйте статус сделки. Как поменять статус сделки.

Получить документ возврата

Чтобы получить список всех сессий, связанных с продажей, отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/deals/sales/{deal_guid}/sessions

Адреса сервиса · Описание запроса

Данные выводятся постранично, по 20 записей на страницу. Если нужно получить данные второй страницы, возьмите из ответа значение параметра next_page_token и отправьте новый запрос, передав это значение в параметре page_token. Продолжайте до тех пор, пока параметр next_page_token не придёт пустым.

Например, вы запросили данные о сотрудниках и получили такой ответ:

"next_page_token": "OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0",
"page_number": 1,
"pages_total": 2,
"items_per_page": 20,
"items_total": 27,

В ответе представлены только записи 1–20. Чтобы посмотреть записи с 21 по 27, отправьте новый GET-запрос, указав page_token="OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0".

Чтобы получить данные конкретного возврата, отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/deals/sales/{deal_guid}/sessions/reversal/{session_guid}

ПараметрОписание
session_guidИдентификатор сессии. Можно получить в списке всех сессий, связанных с продажей.

Описание запроса

Изменить документ возврата

Когда возврат будет фискализирован, добавьте данные чека в описание сессии PATCH-запросом по адресу:

{base_url}/orgs/{org_guid}/deals/sales/{deal_guid}/sessions/reversal/{session_guid}

Адреса сервиса · Описание запроса

Удалить и восстановить возврат

Сессию нельзя удалить навсегда, но можно перенести в архив. Она исчезнет из интерфейса вашей учётной программы, но сохранится на сервере LIFE POS. Для этого отправьте DEL-запрос по адресу:

{base_url}/orgs/{org_guid}/deals/sales/{deal_guid}/sessions/reversal/{session_guid}

Чтобы восстановить архивную сессию, отправьте POST-запрос по адресу:

{base_url}/orgs/{org_guid}/deals/sales/{deal_guid}/sessions/reversal/{session_guid}:unarchive

Описание запроса

Сессии коррекции

Бывает так, что в момент оплаты на точке нет интернета. Платёж невозможно провести сразу, но он фиксируется в системе и будет проведён позже, когда связь восстановится. Тогда в момент списания возникает прямая сессия коррекции. Также она возникает, когда вы печатаете чек коррекции — например, если в момент продажи кассовый чек пробить не удалось. Если же вы корректируете возврат, возникает обратная сессия коррекции.

Как и обратные сессии, все сессии коррекции должны быть привязаны к тем сессиям, которые они корректируют. Для этого в описании операций, проведённых в рамках сессии, в объекте payment_parts используются объекты primary_sale_session и primary_payment_part соответственно. Передайте в них guid и type_of объектов, на которые хотите сослаться.

Подробнее о сессиях

Исправить ошибку

Чтобы создать новую сессию коррекции, отправьте POST-запрос по адресу:

{base_url}/orgs/{org_guid}/deals/sales/{deal_guid}/sessions/direct-correction

base_url — адрес сервиса. Возможные значения:

  • https://api-dev.life-pos.ru — тестовый API,
  • https://api.life-pos.ru — рабочий API.

Получить данные о коррекции

Чтобы получить список всех сессий, связанных с продажей, отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/deals/sales/{deal_guid}/sessions

Адреса сервиса · Описание запроса

Данные выводятся постранично, по 20 записей на страницу. Если нужно получить данные второй страницы, возьмите из ответа значение параметра next_page_token и отправьте новый запрос, передав это значение в параметре page_token. Продолжайте до тех пор, пока параметр next_page_token не придёт пустым.

Например, вы запросили данные о сотрудниках и получили такой ответ:

"next_page_token": "OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0",
"page_number": 1,
"pages_total": 2,
"items_per_page": 20,
"items_total": 27,

В ответе представлены только записи 1–20. Чтобы посмотреть записи с 21 по 27, отправьте новый GET-запрос, указав page_token="OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0".

Важно. В запросе есть необязательный параметр selection. Это фильтр сессий по их статусу. Если параметр не передан, по умолчанию используется значение alive_only, то есть в ответе придут только данные сессий, не перенесённых в архив. Чтобы посмотреть весь список сессий или только архивные данные, укажите значение all или archived_only соответственно.

Чтобы получить данные конкретной коррекции, отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/deals/sales/{deal_guid}/sessions/direct-correction

Адреса сервиса

ПараметрОписание
session_guidИдентификатор сессии. Можно получить в списке всех сессий, связанных с продажей.

Отредактировать коррекцию

Когда коррекция будет фискализирована, добавьте данные чека в описание сессии PATCH-запросом по адресу:

{base_url}/orgs/{org_guid}/deals/sales/{deal_guid}/sessions/direct-correction

Адреса сервиса

Удалить и восстановить коррекцию

Сессию нельзя удалить навсегда, но можно перенести в архив. Она исчезнет из интерфейса вашей учётной программы, но сохранится на сервере LIFE POS. Для этого отправьте DEL-запрос по адресу:

{base_url}/orgs/{org_guid}/deals/sales/{deal_guid}/sessions/direct-correction

Адреса сервиса

Чтобы восстановить архивную сессию, отправьте POST-запрос по адресу:

{base_url}/orgs/{org_guid}/deals/sales/{deal_guid}/sessions/direct-correction:unarchive

Адреса сервиса

Уведомления об операциях

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_guidID организации в 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-запросом или выключите расширение и включите повторно.

Последовательность действий при отправке

  1. Обработчик отправляет уведомление на URL, указанный в параметре primary_url_for_notifications. Если в ответ получен код 200, то уведомление помечается обработанным. Если код 200 не получен, то выполняется действие из пункта 2.
  2. Обработчик отправляет уведомление на URL, указанный в параметре secondary_url_for_notifications. Если в ответ получен код 200, то уведомление помечается обработанным. Если код 200 не получен, то выполняется действие из пункта 3.
  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.

Получить список транзакций

Чтобы получить список транзакций банковского терминала, отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/bank/{terminal_guid}/transactions

ПараметрОписание
base_urlАдрес сервиса. Возможные значения:
  • https://api-dev.life-pos.ru — тестовый API,
  • https://api.life-pos.ru — рабочий API.
terminal_guidИдентификатор банковского терминала.

Описание запроса

Чтобы получить список транзакций по СБП, отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/quick-payments/{terminal_guid}/transactions

Описание запроса

Если вам нужен список всех транзакций вне зависимости от платёжной системы, отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/*/{terminal_guid}/transactions

Описание запроса

Данные выводятся постранично, по 20 записей на страницу. Если нужно получить данные второй страницы, возьмите из ответа значение параметра next_page_token и отправьте новый запрос, передав это значение в параметре page_token. Продолжайте до тех пор, пока параметр next_page_token не придёт пустым.

Например, вы запросили данные о сотрудниках и получили такой ответ:

"next_page_token": "OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0",
"page_number": 1,
"pages_total": 2,
"items_per_page": 20,
"items_total": 27,

В ответе представлены только записи 1–20. Чтобы посмотреть записи с 21 по 27, отправьте новый GET-запрос, указав page_token="OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0".

Получить описание транзакции

Чтобы получить описание транзакции по банковскому терминалу, отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/bank/{terminal_guid}/transactions/{transaction_guid}

Адреса сервиса

ПараметрОписание
terminal_guidИдентификатор банковского терминала.
transaction_guidИдентификатор транзакции. Можно получить в списке транзакций.

Описание запроса

Чтобы получить описание транзакции по СБП, отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/quick-payments/{terminal_guid}/transactions/{transaction_guid}

Описание запроса

Если нужны данные транзакции вне зависимости от платёжной системы, отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/*/*/transactions/{transaction_guid}

Описание запроса

Удалить и восстановить транзакцию

Удалить транзакцию из LIFE POS невозможно, но можно отправить её в архив. Она исчезнет из интерфейса, но останется на сервере LIFE POS. Чтобы удалить транзакцию по банковскому терминалу, отправьте DEL-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/bank/{terminal_guid}/transactions/{transaction_guid}

Адреса сервиса

ПараметрОписание
terminal_guidИдентификатор банковского терминала.
transaction_guidИдентификатор транзакции. Можно получить в списке транзакций.

Описание запроса

Чтобы удалить транзакцию по СБП, отправьте DEL-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/quick-payments/{terminal_guid}/transactions/{transaction_guid}

Описание запроса

Если нужно восстановить транзакцию по банковскому терминалу, отправьте POST-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/bank/{terminal_guid}/transactions/{transaction_guid}:unarchive

Описание запроса

Если нужно восстановить транзакцию по СБП, отправьте POST-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/quick-payments/{terminal_guid}/transactions/{transaction_guid}:unarchive

Описание запроса

На этом с транзакциями всё.

Сотрудники

У каждого сотрудника, работающего с LIFE POS, должна быть учётная запись в системе. Вы можете работать с учётными записями сотрудников в личном кабинете (ЛК) или по API. Рассказываем, какие данные сотрудников хранит система и как работать с ними по API.

Добавить учётную запись

Чтобы добавить сотрудника, отправьте POST-запрос по адресу:

{base_url}/orgs/{org_guid}/employees

base_url — адрес сервиса. Возможные значения:

  • https://api-dev.life-pos.ru — тестовый API,
  • https://api.life-pos.ru — рабочий API.

Описание запроса

Авторизовать сотрудника

Для доступа к сервисам LIFE POS сотруднику нужны пин-код или пароль. Чтобы сгенерировать их вместе, отправьте POST-запрос по адресу:

{base_url}/v6/orgs/{org_guid}/employees/{employee_guid}:reset-credentials

Адреса сервиса · Описание запроса

Если сотрудник входит на рабочее место впервые, рабочее место потребуется активировать. Как активировать рабочее место.

Если сотрудник забыл свои учётные данные, пин-код и пароль можно сгенерировать по отдельности.

Чтобы сгенерировать пин-код, отправьте POST-запрос по адресу:

{base_url}/v6/orgs/{org_guid}/employees/{employee_guid}:reset-pincode

Описание запроса

Чтобы сгенерировать пароль, отправьте POST-запрос по адресу:

{base_url}/v6/orgs/{org_guid}/employees/{employee_guid}:reset-password

Описание запроса

По API можно менять учётные данные всех пользователей, кроме Владельца бизнеса. Роли пользователей.

Получить данные учётной записи

Чтобы получить список сотрудников, отправьте GET-запрос по адресу:

{base_url}/v6/orgs/{org_guid}/employees

Адреса сервиса · Описание запроса

Данные выводятся постранично, по 20 записей на страницу. Если нужно получить данные второй страницы, возьмите из ответа значение параметра next_page_token и отправьте новый запрос, передав это значение в параметре page_token. Продолжайте до тех пор, пока параметр next_page_token не придёт пустым.

Например, вы запросили данные о сотрудниках и получили такой ответ:

"next_page_token": "OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0",
"page_number": 1,
"pages_total": 2,
"items_per_page": 20,
"items_total": 27,

В ответе представлены только записи 1–20. Чтобы посмотреть записи с 21 по 27, отправьте новый GET-запрос, указав page_token="OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0".

Важно. В запросе есть необязательный параметр selection. Это фильтр сотрудников по их статусу. Если параметр не передан, по умолчанию используется значение alive_only, то есть в ответе придут только данные сотрудников, не перенесённых в архив. Чтобы посмотреть весь список сотрудников или только архивные данные, укажите значение all или archived_only соответственно.

Теперь, если вам нужно получить данные о конкретном сотруднике, отправьте GET-запрос по другому адресу:

{base_url}/v6/orgs/{org_guid}/employees/{employee_guid}

Описание запроса

Изменить данные учётной записи

Если у сотрудника изменился номер телефона, адрес электронной почты или фамилия, отразите изменения в системе. Чтобы изменить данные сотрудника, отправьте PATCH-запрос по адресу:

{base_url}/v6/orgs/{org_guid}/employees/{employee_guid}

Адреса сервиса · Описание запроса

В теле запроса передайте изменения.

Удалить или восстановить учётную запись

Полностью удалить данные сотрудника нельзя, но их можно отправить в архив. Они исчезнут из рабочих интерфейсов, но сохранятся на сервере LIFE POS. При необходимости их можно восстановить.

Чтобы заархивировать учётную запись, отправьте DEL-запрос по адресу:

{base_url}/v6/orgs/{org_guid}/employees/{employee_guid}

Адреса сервиса · Описание запроса

Чтобы восстановить учётную запись, отправьте POST-запрос по адресу:

{base_url}/v6/orgs/{org_guid}/employees/{employee_guid}:unarchive

Описание запроса

Вот и всё, что нужно, чтобы работать с учётными записями сотрудников.

Рабочие места

Рабочее место — это устройство с приложением LIFE POS — смартфон или онлайн-касса. За одним рабочим местом могут работать разные сотрудники. Без рабочего места работать не выйдет, так что за каждым новым кассиром или курьером нужно закрепить хотя бы одно. Объясняем, как управлять рабочими местами через API LIFE POS.

Добавить рабочее место

Чтобы добавить рабочее место, отправьте POST-запрос по адресу:

{base_url}/orgs/{org_guid}/workplaces

base_url — адрес сервиса. Возможные значения:

  • https://api-dev.life-pos.ru — тестовый API,
  • https://api.life-pos.ru — рабочий API.

Параметры тела запроса (знаком * отмечены обязательные):

ПараметрОписание
workplace_type *Тип рабочего места. Параметр определяет принцип заполнения адреса места расчётов в чеке. Возможные значения:
  • Unknown;
  • Mobile — касса для развозной торговли. Место расчётов определяется в момент печати чека;
  • Stationary — стационарная касса. Место расчётов задаётся при регистрации и не меняется;
  • Automat — касса, которая может работать и как мобильная, и как стационарная.
extensionsРасширения, подключённые на рабочем месте.

Подробное описание запроса

Активировать рабочее место

Чтобы использовать все возможности рабочего места, его надо активировать. Для этого сотрудник, начинающий работу, должен ввести код активации. Код активации вводится один раз и действует, пока вы не деактивируете рабочее место или не очистите данные приложения.

Код активации генерируется POST-запросом по адресу:

{base_url}/v6/orgs/{org_guid}/workplaces/{workplace_guid}:generate-activation-code

Адреса сервиса · Описание запроса

Код активации можно отправить в смс сотруднику. Для этого передайте параметр send_sms=true. В описании сотрудника должен быть указан его номер телефона. Сотрудники.

Теперь код активации нужно передать в API. Для этого отправьте POST-запрос по адресу:

{base_url}/v6/auth/activate-workplace

В параметре activation_code передайте код активации, полученный ранее. В ответ вы получите параметр token, который можно использовать для авторизации на рабочем месте.

Описание запроса

Кроме кода активации сотруднику нужно ввести пин-код или пароль. Их можно настроить в данных сотрудника. Там же есть запрос на отправку данных для входа в смс. Как настроить пин-код и пароль.

Пример процесса активации вы уже видели в статье «Быстрый старт». Там вы активировали бесплатное рабочее место.

Получить данные о рабочем месте

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

{base_url}/orgs/{org_guid}/workplaces

Адреса сервиса · Описание запроса

Данные выводятся постранично, по 20 записей на страницу. Если нужно получить данные второй страницы, возьмите из ответа значение параметра next_page_token и отправьте новый запрос, передав это значение в параметре page_token. Продолжайте до тех пор, пока параметр next_page_token не придёт пустым.

Например, вы запросили данные о сотрудниках и получили такой ответ:

"next_page_token": "OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0",
"page_number": 1,
"pages_total": 2,
"items_per_page": 20,
"items_total": 27,

В ответе представлены только записи 1–20. Чтобы посмотреть записи с 21 по 27, отправьте новый GET-запрос, указав page_token="OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0".

Важно. В запросе есть необязательный параметр selection. Это фильтр рабочих мест по их статусу. Если параметр не передан, по умолчанию используется значение alive_only, то есть в ответе придут только данные рабочих мест, не перенесённых в архив. Чтобы посмотреть весь список рабочих мест или только архивные данные, укажите значение all или archived_only соответственно.

Чтобы получить данные о конкретном рабочем месте, отправьте GET-запрос по другому адресу:

{base_url}/orgs/{org_guid}/workplaces/{workplace_guid}

Описание запроса

Изменить данные рабочего места

Иногда нужно изменить данные рабочего места — например, если вы хотите предоставить доступ к новому расширению. Для этого отправьте PATCH-запрос по адресу:

{base_url}/orgs/{org_guid}/workplaces/{workplace_guid}

Адреса сервиса · Описание запроса

В теле запроса передайте изменения.

Удалить и восстановить рабочее место

Рабочее место нельзя удалить навсегда, но можно перенести в архив. Оно исчезнет из интерфейсов, но сохранится на сервере LIFE POS. Чтобы заархивировать рабочее место, отправьте DEL-запрос по адресу:

{base_url}/orgs/{org_guid}/workplaces/{workplace_guid}

Адреса сервиса · Описание запроса

Чтобы восстановить рабочее место, отправьте POST-запрос по адресу:

{base_url}/orgs/{org_guid}/workplaces/{workplace_guid}:unarchive

Описание запроса

Деактивировать рабочее место

Чтобы деактивировать рабочее место, отправьте POST-запрос по адресу:

{base_url}/orgs/{org_guid}/workplaces/{workplace_guid}:deactivate

Адреса сервиса · Описание запроса

Вот и всё, что касается рабочих мест.

Терминалы

Через LIFE POS вы можете управлять торговыми терминалами организации. Это удобно, когда нужно обработать много терминалов. Например, добавить 50 новых и удалить 20 старых. API поддерживает два типа терминалов: банковские и СБП.

Создать терминал

Чтобы добавить новый терминал, отправьте POST-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/{type}

ПараметрОписание
base_urlАдрес сервиса. Возможные значения:
  • https://api-dev.life-pos.ru — тестовый API,
  • https://api.life-pos.ru — рабочий API.
typeТип терминала. Возможные значения:
  • bank — банковский терминал,
  • quick-payments — терминал СБП.

Описание запроса для банковского терминала · Описание запроса для терминала СБП

Получить информацию о терминалах

Чтобы получить список всех терминалов организации, отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/

Адреса сервиса · Описание запроса

Чтобы получить список терминалов одного типа, отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/{type}

Адреса сервиса

ПараметрОписание
typeТип терминала. Возможные значения:
  • bank — банковский терминал,
  • quick-payments — терминал СБП.

Описание запроса для банковского терминала · Описание запроса для терминала СБП

Данные выводятся постранично, по 20 записей на страницу. Если нужно получить данные второй страницы, возьмите из ответа значение параметра next_page_token и отправьте новый запрос, передав это значение в параметре page_token. Продолжайте до тех пор, пока параметр next_page_token не придёт пустым.

Например, вы запросили данные о сотрудниках и получили такой ответ:

"next_page_token": "OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0",
"page_number": 1,
"pages_total": 2,
"items_per_page": 20,
"items_total": 27,

В ответе представлены только записи 1–20. Чтобы посмотреть записи с 21 по 27, отправьте новый GET-запрос, указав page_token="OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0".

Чтобы получить информацию о терминале по его ID без указания типа, отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/*/{terminal_guid}

Адреса сервиса · Описание запроса

Чтобы получить информацию о терминале по его ID и типу, отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/{type}/{terminal_guid}

Описание запроса для банковского терминала · Описание запроса для терминала СБП

Изменить терминал

Чтобы внести изменения в данные терминала, отправьте PATCH-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/{type}/{terminal_guid}

Адреса сервиса

ПараметрОписание
typeТип терминала. Возможные значения:
  • bank — банковский терминал,
  • quick-payments — терминал СБП.

Описание запроса для банковского терминала · Описание запроса для терминала СБП

Удалить и восстановить терминал

Вы можете отправить информацию о терминале в архив. Полностью информация не удаляется. Она исчезает из вашего интерфейса управления терминалами, но продолжает храниться на сервере LIFE POS. Её можно восстановить, если она снова понадобится.

Чтобы удалить терминал, отправьте DELETE-запрос по адресу:

{base_url}/orgs/{org_guid}/terminals/{type}/{terminal_guid}

Адреса сервиса

ПараметрОписание
typeТип терминала. Возможные значения:
  • bank — банковский терминал,
  • quick-payments — терминал СБП.

Описание запроса для банковского терминала · Описание запроса для терминала СБП

Восстановить информацию о терминале можно POST-запросом:

{base_url}/orgs/{org_guid}/terminals/{type}/{terminal_guid}:unarchive

Описание запроса для банковского терминала · Описание запроса для терминала СБП

На этом мы закончили с терминалами.

Торговые точки

Торговая точка в системе LIFE POS соответствует вашему магазину. Создать точку полезно, если вы хотите отдельно следить за продажами каждого магазина или применить к разным магазинам разные настройки. Рассказываем, как управлять торговыми точками.

СБП, облачная фискализация и права

В описании торговой точки есть параметр extensions, отвечающий за подключение и настройку расширений. С помощью расширений вы можете подключить СБП или облачную фискализацию, настроить гибкие права курьерам и кассирам.

Подробнее про расширения

Добавить торговую точку

Чтобы добавить торговую точку, отправьте POST-запрос по адресу:

{base_url}/orgs/{org_guid}/outlets

base_url — адрес сервиса. Возможные значения:

  • https://api-dev.life-pos.ru — тестовый API,
  • https://api.life-pos.ru — рабочий API.

В теле запроса передайте настройки торговой точки:

ПараметрОписание
nameНазвание.
addressАдрес. Используется в реквизите чека «адрес и место расчётов».
legal_entityЮридическое лицо, которому принадлежит точка. Идентификатор юридического лица можно скопировать в личном кабинете LIFE POS.
brandНе используется.
permissionsНе используется.
extensionsСписок расширений и их настройки.

Подробное описание запроса

Получить данные торговой точки

Чтобы получить список торговых точек, отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/outlets

Адреса сервиса · Описание запроса

Данные выводятся постранично, по 20 записей на страницу. Если нужно получить данные второй страницы, возьмите из ответа значение параметра next_page_token и отправьте новый запрос, передав это значение в параметре page_token. Продолжайте до тех пор, пока параметр next_page_token не придёт пустым.

Например, вы запросили данные о сотрудниках и получили такой ответ:

"next_page_token": "OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0",
"page_number": 1,
"pages_total": 2,
"items_per_page": 20,
"items_total": 27,

В ответе представлены только записи 1–20. Чтобы посмотреть записи с 21 по 27, отправьте новый GET-запрос, указав page_token="OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0".

Важно. В запросе есть необязательный параметр selection. Это фильтр торговых точек по их статусу. Если параметр не передан, по умолчанию используется значение alive_only, то есть в ответе придут только данные торговых точек, не перенесённых в архив. Чтобы посмотреть весь список торговых точек или только архивные данные, укажите значение all или archived_only соответственно.

Чтобы получить данные конкретной точки, отправьте GET-запрос по другому адресу:

{base_url}/orgs/{org_guid}/outlets/{outlet_guid}

ПараметрОписание
outlet_guidИдентификатор торговой точки. Можете указать его при добавлении точки. Если не укажете, LIFE POS создаст его сам и пришлёт в ответе на запрос. Кроме того, идентификаторы точек можно получить, запросив их список.

Описание запроса

Изменить торговую точку

Чтобы изменить данные торговой точки, отправьте PATCH-запрос по адресу:

{base_url}/orgs/{org_guid}/outlets/{outlet_guid}

Адреса сервиса

ПараметрОписание
outlet_guidИдентификатор торговой точки. Можете указать его при добавлении точки. Если не укажете, LIFE POS создаст его сам и пришлёт в ответе на запрос. Кроме того, идентификаторы точек можно получить, запросив их список.

Описание запроса

Удалить или восстановить торговую точку

Полностью удалить торговую точку нельзя, но можно отправить её в архив. Точка исчезнет из интерфейса, но её данные останутся на сервере LIFE POS. Чтобы архивировать торговую точку, отправьте DEL-запрос по адресу:

{base_url}/orgs/{org_guid}/outlets/{outlet_guid}

Адреса сервиса

ПараметрОписание
outlet_guidИдентификатор торговой точки. Можете указать его при добавлении точки. Если не укажете, LIFE POS создаст его сам и пришлёт в ответе на запрос. Кроме того, идентификаторы точек можно получить, запросив их список.

Описание запроса

Чтобы восстановить торговую точку из архива, отправьте POST-запрос по адресу:

{base_url}/orgs/{org_guid}/outlets/{outlet_guid}:unarchive

Описание запроса

Вот и всё, что касается торговых точек.

Единицы измерения

В каталоге LIFE POS можно использовать любые единицы измерения, какие только вам удобны. Мы уже настроили килограммы, штуки и литры, плюс единицу Не определено. Вы можете добавить что угодно: ящики, упаковки, сеансы. Рассказываем, как это сделать.

Добавить единицу измерения

Чтобы добавить единицу измерения, отправьте POST-запрос по адресу:

{base_url}/orgs/{org_guid}/uoms

base_url — адрес сервиса. Возможные значения:

  • https://api-dev.life-pos.ru — тестовый API,
  • https://api.life-pos.ru — рабочий API.

Параметры запроса (знаком * отмечены обязательные):

ПараметрОписание
name *Название.
symbol *Сокращение или символ для чека. Например, килограмм → кг.
is_fractionalПризнак дробности.
code_ru_okeiКод по ОКЕИ.
code_uneceКод по международному классификатору UNECE.
guidИдентификатор. Если не передан, LIFE POS создаст сам и пришлёт в ответе на запрос.

Подробное описание запроса

Получить данные о единице измерения

Чтобы получить список единиц измерения, отправьте GET-запрос по адресу:

{base_url}/orgs/{org_guid}/uoms

Адреса сервиса · Описание запроса

Данные выводятся постранично, по 20 записей на страницу. Если нужно получить данные второй страницы, возьмите из ответа значение параметра next_page_token и отправьте новый запрос, передав это значение в параметре page_token. Продолжайте до тех пор, пока параметр next_page_token не придёт пустым.

Например, вы запросили данные о сотрудниках и получили такой ответ:

"next_page_token": "OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0",
"page_number": 1,
"pages_total": 2,
"items_per_page": 20,
"items_total": 27,

В ответе представлены только записи 1–20. Чтобы посмотреть записи с 21 по 27, отправьте новый GET-запрос, указав page_token="OdDEFa2CzpYdp1CmlO9s9mjBn4NkUZB3CXKOtNfQWM0".

Если нужны данные конкретной единицы измерения, отправьте GET-запрос по другому адресу:

{base_url}/orgs/{org_guid}/uoms/{uom_guid}

ПараметрОписание
uom_guidИдентификатор единицы измерения. Присваивается при создании.

Описание запроса

Изменить единицу измерения

Чтобы изменить данные единицы измерения, отправьте PATCH-запрос по адресу:

{base_url}/orgs/{org_guid}/uoms/{uom_guid}

Адреса сервиса

ПараметрОписание
uom_guidИдентификатор единицы измерения. Присваивается при создании.

Описание запроса

Удалить и восстановить единицу измерения

Полностью удалить единицу измерения невозможно, но можно отправить её в архив. Единица измерения исчезнет из интерфейса, но сохранится на сервере LIFE POS. Чтобы заархивировать единицу измерения, отправьте DELETE-запрос по адресу:

{base_url}/orgs/{org_guid}/uoms/{uom_guid}

Адреса сервиса

ПараметрОписание
uom_guidИдентификатор единицы измерения. Присваивается при создании.

Описание запроса

Если хотите заархивировать сразу все единицы измерения, отправьте DELETE-запрос по другому адресу:

{base_url}/orgs/{org_guid}/uoms

Описание запроса

Метод отправит в архив в том числе единицы измерения, настроенные по умолчанию. Если вы хотели вернуться к настройкам по умолчанию, эти единицы придётся дополнительно восстановить.

Если нужно восстановить единицу измерения из архива, отправьте POST-запрос по адресу:

{base_url}/orgs/{org_guid}/uoms/{uom_guid}:unarchive

Описание запроса

Вот и всё, что касается единиц измерения.

Управление ролями

В этой статье поговорим о том, как ваши сотрудники будут работать в API LIFE POS. У каждого сотрудника в LIFE POS есть роль. Она определяет, что сотрудник может делать, а что нет. К примеру, менеджер может добавлять и редактировать пользователей, а кассир — только просматривать их список. Разбираемся, как работать с ролями.

Вот список ролей:

РольПолномочия
ВладелецМожет добавлять, изменять, удалять и восстанавливать что угодно.
АдминистраторМожет добавлять, изменять, удалять и восстанавливать всё, кроме организаций.
МенеджерМожет добавлять, изменять и удалять, но не восстанавливать всё, что связано с продажами. Может просматривать, но не изменять базовые настройки — бренд, юридические лица, рабочие места, фискальные регистраторы.
КассирМожет просматривать список пользователей, список товаров и подобные настройки. Роль не рекомендована для работы с API.
Курьер, ГостьНе имеют прав работать с API.

Кроме этих ролей, специально для работы с API вы можете настроить индивидуальные разрешения — добавлять позицию по свободной цене, редактировать данные покупателя, удалять сделку и т. д. Эти разрешения накладываются на обычные полномочия роли. Они помогают предотвратить мошенничество.

Чтобы настроить индивидуальные разрешения, подключите расширение retail_app. Для этого измените данные торговой точки — в поле extensions передайте настройки расширения.

Запрет на редактирование корзины

Вы можете запретить сотрудникам с определёнными ролями редактировать список позиций в продаже. Для этого подключите расширение retail_app. Рассказываем!

Принцип работы

Расширение retail_app сопоставляет список позиций в чеке со списком ролей. Для каждой пары «позиция — роль» расширение разрешает или запрещает определённые действия. Вот их список:

  • can_edit_name
  • can_edit_good_type
  • can_edit_uom
  • can_edit_quantity
  • can_edit_tax
  • can_edit_sale_price
  • can_delete

Подключение расширения

Чтобы начать работу с расширением, объявите его в заголовке запроса в параметре X-LP-Client-Extensions. Подставьте retail_app вместо %extension_name%:

Объявление расширения в заголовке запроса:

curl -i -X GET \
  -H "Authorization:eyJhbGciOiJI.eyJzdWIiOiIxMjM0NTY.SflKxwRJSMeKK" \
  -H "Accept-Language:ru-RU" \
  -H "X-LP-Client-Identifier:unique_id" \
  -H "X-LP-Client-Type:App" \
  -H "X-LP-Client-Extensions:%extension_name%" \
  'https://api.life-pos.ru/v4/orgs/123e4567-e89b-12d3-a456-123456780000/deals/sales'

Работа с расширением

В POST-запрос на создание продажи включается массив extensions.retail_app.deal_position_permissions. Каждый элемент массива содержит следующие поля (обязательные отмечены знаком *):

ПолеОписание
position *Объект, содержащий GUID позиции и тип type_of. GUID позиции — необязательное поле и при создании продажи обычно не указывается. В этом случае LIFE POS генерирует GUID позиции сам. Вы можете либо указать его явно, либо создать продажу как обычно и получить идентификаторы позиций в ответе. Во втором случае настройки расширения retail_app передаются PATCH-запросом к предварительно созданной продаже.
role *Объект, содержащий GUID роли и тип type_of.
Список разрешенийРазрешения для пары «позиция — роль» (см. список выше).

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

"extensions": {
  "retail_app": {
    "deal_position_permissions": [
      {
        "position": {
          "guid": "75747750-bce4-47bf-bf4e-76b3afbd1e07",
          "type_of": "DealPosition"
        },
        "role": {
          "guid": "ffeeddcc-bbaa-0000-0000-000000000002",
          "type_of": "Role"
        },
        "can_edit_name": true,
        "can_edit_good_type": true,
        "can_edit_uom": true,
        "can_edit_quantity": false,
        "can_edit_tax": true,
        "can_edit_sale_price": true,
        "can_delete": true
      },
      ...
    ]
  }
}

© ООО «Ритейл Бизнес Софт». Техническая поддержка: support_pos@life-pay.ru, круглосуточно.