Подключение "Postman"

Первичная авторизация осуществляется посредством bearer токена.
Для получения токена необходимо обратиться с POST запросом по адресу: https://api.f3bus.ru/user/auth
передав данные в формате JSON

{
	"login": "demo",
	"password": "demo"
}

Пример для программы "Postman"
пример 1

пример 2

Активация департаментов

Активация департаментов выполняется для того, чтобы они были доступны для приема данных, а также для отправки заказа.
По не активированным департаментам заказы передаваться не будут! Для получения списка доступных департаментов, необходимо выполнить запрос(ы):

GET /User/Departments - показать все доступные интегратору департаменты, включая активированные.

GET /User/Departments/unactivated - показать доступные интегратору, но не активированные департаменты.

Описание полей:
department - департамент аптеки
id - Уникальный код департамента
name - Наименование
address – Адрес подразделения
inn – ИНН
kpp – КПП
rv - версия последнего полученного объекта из предыдущего запроса
created - дата создания записи
source - источник данных
id - уникальный код источника данных
name - название источника
email – электронная почта
phone – телефон
address – адрес
isCentral – флаг ЦО аптеки. Заказы не принимаются в центральный офис, только в периферийную аптеку
isActivated - флаг активации департамента
\
Далее для активации/деактивации выполнить запрос:

POST /user/departments/activate
POST /user/departments/deactivate

Активация департамента возможна только по одному источнику!
В теле запроса перечислить департаменты и источник данных.

	
[{"depId":"0967CCEA-51C4-4968-AE34-41DE36C54A45", "sourceId":"129564"},...]							

активация

Единый справочник (товары, инструкции, фотографии)

Единый справочник включает в себя 3 сущности: товары, инструкции и фотографии.
Для каждой сущности существует 2 способа получения данных - по версии строки (для регулярного обновления данных, пачками) и поштучно (для получения точечной информации, например - получить атрибуты по конкретному товару ЕС).
Поштучные методы необходимы для выполнения редких задач загрузки конкретного товара, инструкции или фотографии, для регулярного обновления необходимо использовать методы с параметром {rv} (версия строки).
Для обеспечения корректной работы с API существуют ограничения на количество вызовов каждого метода ЕС в сутки - 100 раз.


Методы:

GET /EsAdditional/goods/{rv} - Единый справочник товаров (по версии строки).

GET /EsAdditional/goods/{id} - Единый справочник товаров (по одной позиции).

GET /EsAdditional/instructions/{rv} - Единый справочник инструкций товаров (по версии строки).

GET /EsAdditional/instructions/{id} - Единый справочник инструкций товаров (по одной позиции).

GET /EsAdditional/photos/{rv} - Единый справочник фотографий товаров (по версии строки).

GET /EsAdditional/photos/{id} - Единый справочник фотографий товаров (для одной позиции товара).

Справочник товаров

GET /Goods

Параметры:
depId - идентификатор департамента, для которого нужно выгрузить справочник. Обязательный параметр!
rv - версия последнего полученного объекта из предыдущего запроса

Описание полей:
refId – уникальный идентификатор товара по справочнику F3Bus
code – уникальный код товара по справочнику аптеки
name – наименование товара
producer – производитель
country - страна
barcodes – штрихкод товара
GoodsGroupCodes – массив кодов групп товаров в кодировке аптеки, в которые входит номенклатурная позиция
rv - версия последнего полученного объекта из предыдущего запроса
created - дата создания записи

Справочник групп товаров

GET /GoodsGroup

Параметры:
sourceId - идентификатор установки, для которой нужно выгрузить справочник групп товаров аптеки. Обязательный параметр!
rv - версия последнего полученного объекта из предыдущего запроса

Описание полей:
groupId – уникальный идентификатор группы товаров в рамках аптеки (передается вместе с номенклатурой аптеки)
parentGroupId – уникальный идентификатор родительской группы товаров в рамках аптеки
esGroupGuid – уникальный идентификатор группы товара по Единому справочнику (если он используется в аптеке)
name – название группы товара
created - дата создания записи
deletedDate - дата удаления группы товара в аптеке
rv - версия последнего полученного объекта из предыдущего запроса

Справочник департаментов

GET /Departments

Параметры:
rv - версия последнего полученного объекта из предыдущего запроса

Описание полей:
id - Уникальный код департамента
name - Наименование
address – Адрес подразделения
inn – ИНН
kpp – КПП
rv - версия последнего полученного объекта из предыдущего запроса
created - дата создания записи

Чеки

GET /Receipts

Параметры:
rv - версия последнего чека, полученного в предыдущей выгрузке. Будут выгружены данные после этого чека. Если не указано, данные будут перевыгружены полностью.
depId - код департамента, если не указан - используются все, доступные интегратору.
date - дата чека, если указана - выдаются все чеки, начиная с этой даты.

Описание полей:
id - id чека
chequeType - тип чека (продажа, возврат)
date - дата выдачи чека
sessNum - номер кассовой смены
cashierId - идентификатор кассира
depId - уникальный код департамента
items - список позиций чека
goodsCode - код товара
qty - количество
totalPriceVAT - Цена продажи с учетом НДС (розничная цена)
bestBefore - Срок годности
rv - версия строки данных
created - дата создания записи

Остатки

GET /Stocks

Параметры:
rv - версия последнего полученного объекта из предыдущего запроса

Описание полей:
stockDate - дата остатка
depId - уникальный код департамента
goodsCode - код товара
qty - количество
priceBuy - цена покупки
priceSale - цена продажи
expDate - срок годности
seriesNum - серия ЛС
rv - версия последнего полученного объекта из предыдущего запроса
created - Дата создания

Заказы

Получение списка интернет-заказов

GET /Orders - для получения всех заказов
GET /Orders/{orderNum} - для получения указанного заказа
GET /Orders/{orderNum}/status - для получения статуса указанного заказа
orderNum - идентификатор заказа в системе интегратора
Параметры:
rv - версия последнего полученного объекта из предыдущего запроса

Описание полей:
agentId - идентификатор агента
id - уникальный идентификатор заказа
num - номер заказа
dep_id - аптечное подразделение, в которое необходимо передать заказ
date - дата заказа
customer - информация по заказчику
name - ФИО клиента
phone - телефон клиента
prepaymentAmount - сумма предоплаты по заказу
paymentAmount - полная сумма заказа
orderStatus - статусы заказа: new, registered, reserved, reservedPartially, cancelled, readyToPickup, completed
comment - комментарий к заказу
items - Список позиций заказа
goodsCode - код товара
qnt - заказанное количество
price - цена
discountPr - скидка в процентах
discountVal - сумма скидки
rv - версия последнего полученного объекта из предыдущего запроса

Статусы:
Шапка заказа { New, Registered, Reserved, ReservedPartially, Cancelled, ReadyToPickup, Completed }
Позиция { Ok, NotEnough, Cancelled }

{
  "id": "string",
  "num": "string",
  "depId": "string",
  "date": "2020-04-27T12:27:00",
  "customer": {
    "name": "string",
    "phone": "string"
  },
  "prepaymentAmount": 0,
  "paymentAmount": 0,
  "orderStatus": "new",
  "comment": "string",
  "items": [
    {
      "goodsCode": "string",
      "qnt": 0,
      "price": 0,
      "discountPr": 0,
      "discountVal": 0
    }
  ]
}
Отмена Интернет-заказа, указывается номер заказа и статус

PUT /Orders/{orderNum}/status
orderNum - номер заказа

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

Callback сервис

Callback сервис используется для получения событий о смене состояния данных и представляет собой url ресурса со стороны клиента, который будет вызван системой F3BUS.

Для регистрации callback-сервиса необходимо выполнить:
PUT /Settings/Callback/{type}
Передав в теле url:

{
  url: "https://your.callback/ 
}
Параметр type описывает тип регистрируемого callback-сервиса и на данный момент может принимать единственное значение: orders - получение уведомлений об изменении заказа. При наступлении события в F3bus, для которого зарегистрированы callback-сервисы, система вызывыет указанный ресурс и передаст сообщение следующего формата:
{ 
  type: "<Тип события>", // Тип, определяющий сущность сообщения 
  payload: "Сопутствующие данные" 
} 
Для коллбэка orders, type может принимать значение NewOrderStatus - смена статуса заказа. При этом в payload будет записан идентификатор заказа, у которого сменился статус.

Пример сообщения:
{ 
  type: "NewOrderStatus", 
  payload: "С27A59B7-1033-528B-B03C-E6C6FD678722" 
}  

Дельта данных

Объем данных получаемых клиентами может быть весьма велик.
Для обеспечения полноты данных у клиента, все данные из шины передаются порциями - не более 1000 позиций за раз.
Для этого используется параметр "RV" - версия последнего полученного объекта из предыдущего запроса.
Значение формируется как TimeStamp(UTC) + случайное число.

Типичный цикл получения данных выглядит так:

  • При первом подключении параметр RV должен быть установлен равным нулю
  • Клиент получает порцию данных (не более 1000 позиций) и сохраняет у себя значение RV для этой порции данных
  • При следующем обращении клиент должен указать параметр RV полученный в предыдущем сеансе.
    При этом клиенту будут переданы уже новые данные (не более 1000 позиций) и новое значение RV
  • Цикл получения данных необходимо повторять до тех пор пока запрос возвращает хотя бы одну строку данных
Для повторной полной загрузки данных параметр RV необходимо установить равным нулю

Подключение аптек

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

pic2