FTP API

FTP API #


Каталог #

Раздел технического описания механизма работы процесса загрузки и синхронизации каталога через протокол FTP, посредством загрузки определенных файлов в директории.

АПИ импорта остатков, товаров, аптек #

Для загрузки остатков, продуктов и аптек партнёрская сеть должна предоставить програмный доступ к своим ресурсам.

Формат и способ загрузки​ #

В данный момент мы поддерживаем следующие форматы файлов: CSV (приоритетнее), JSON, XML. Файлы должны быть в кодировке UTF-8 или Windows-1251.
​ В случае, если у Партнера нет своего FTP сервера, Ютека может предоставить доступ на свой FTP сервер. ​

Остатки #

Остатки загружаются раз в 15 минут.

Ожидаемые поля в файлах остатков:

Поле Обязательное Описание
productId done ID товара
pharmacyId done ID аптеки
price done Цена
quantity done Остаток
partNumber Партия
expirationDate Срок годности

Примеры #

CSV

Рекомендуемый разделитель: ;, но можно ,, если технически можете сформировать корректный csv.

productId;pharmacyId;price;quantity;partNumber;expirationDate
123456;12345;123.45;1;12345;01.02.2020
FF02345;11-33;123.45;1;12345;
EP-1230;11-33;123.45;1;12345;07.04.2025

XML

<?xml version="1.0" encoding="UTF-8"?>
<stocks>
   <stock>
      <partNumber>12345</partNumber>
      <pharmacyId>12345</pharmacyId>
      <price>123.45</price>
      <productId>123456</productId>
      <quantity>1</quantity>
      <expirationDate>01.02.2020</expirationDate>
   </stock>
</stocks>
JSON
[
  {
    "productId": "123456",
    "pharmacyId": "12345",
    "price": 123.45,
    "quantity": 1,
    "partNumber": "12345",
    "expirationDate": "01.02.2020"
  }
]

Товары #

​Загружаются раз в 3 часа, период можно увеличивать до 1 дня. products.csv

Поле Обязательное Описание
productId done уникальный идентификатор товара в аптечной сети.
barcode done Штрихкод
title done Название
vendor done Производитель
country done Страна
egk / rls / katren ЕГК/RLS/Katren - коды значительно ускорят привязку товаров к нашему каталогу

Аптеки #

​​Загружаются раз в 3 часа, период можно увеличивать до 1 дня.

Поле Обязательное Описание Комментарий
pharmacyId done уникальный идентификатор аптеки
title done Название аптеки
address done Адрес С точностью до дома. Если возможно, без дополнительных комментариев, вида пом.75843б, за магазином канцтоваров
phone done Телефон В международном формате (+71234567890). Если это городской номер телефона, то с кодом города (например для Новосибирска это +7(383)000‒00‒00)
workingHours done Часы работы в формате
location done GPS координаты Latitude,Longitude При подстановке в гугл/яндекс/другие карты должна показываться точка на аптеку. По координатам проверяется адрес, если он не точен
email Email аптеки для связи Мы можем присылать email оповещения в аптеку при поступлении новых или отмене заказов
CSV

В корень фтп выгружается файл pharmacies.csv.
Этот файл должен быть в кодировке UTF-8 (либо Windows-1251, если нет технической возможности).
Рекомендуемый разделитель: ;, но можно ,, если технически можете сформировать корректный csv.

pharmacyId;title;address;phone;workingHours;location;email
АП-11;Аптека 24/7/365: №11;Санкт-Петроград, улица Пушкина, д. 17;+78015553535;"{""1"":{""close"":""21:00"",""open"":""09:00""},""2"":{""close"":""21:00"",""open"":""09:00""},""3"":{""close"":""21:00"",""open"":""09:00""},""4"":{""close"":""21:00"",""open"":""09:00""},""5"":{""close"":""23:00"",""open"":""10:00""},""7"":{""close"":""18:00"",""open"":""12:00""}}";55.754867,37.5550808;info@uteka.ru
А-АА;"Аптека ""Аптечная Аптека""";Москва, Люберцы, улица Пушкина, д. 17;+78015553535;"{""1"":{""close"":""00:00"",""open"":""00:00""},""2"":{""close"":""00:00"",""open"":""00:00""},""3"":{""close"":""00:00"",""open"":""00:00""},""4"":{""close"":""00:00"",""open"":""00:00""},""5"":{""close"":""00:00"",""open"":""00:00""},""6"":{""close"":""00:00"",""open"":""00:00""},""7"":{""close"":""00:00"",""open"":""00:00""}}";55.754867,37.5550808;info@uteka.ru

Заказы #

Раздел технического описания механизма работы процесса обмена заказами и статусами по ним через протокол FTP, посредством загрузки определенных файлов в директории.

Ютека будет загружать свои запросы в папку orders/outgoing. А аптечная сеть должна загружать свои запросы в папку orders/incoming. Передача запроса считается успешной, когда файл будет удалён с ftp-сервера получателем.

ID заказов - внутренние ID Ютеки.

Возможные запросы от Ютеки в аптечную сеть #

Создание заказа #

Имя файла соответствует номеру заказа + .xml.

Например, файл с запросом на создание заказа с номером 1234 будет лежать в папке orders/outgoing и называться 1234.xml, полный путь: orders/outgoing/1234.xml

Запрос
<Order>
  <OrderID>123</OrderID>
  <Pharmacy>Основной склад</Pharmacy>
  <Items>
    <ProductID>60001090</ProductID>
    <Quantity>2</Quantity>
    <Price>880</Price>
  </Items>
  <Items>
    <ProductID>60001040</ProductID>
    <Quantity>1</Quantity>
    <Price>73000</Price>
  </Items>
  <Amount>74760</Amount>
  <Name>Кирилл</Name>
  <Phone>9997651151</Phone>
</Order>

Отмена заказа #

Имя файла соответствует status_<id>.xml.

Например, файл с запросом на отмену заказа с номером 1234 будет лежать в папке orders/outgoing и называться status_1234.xml, полный путь: orders/outgoing/status_1234.xml

Запрос
<Status>
  <OrderID>4567</OrderID>
  <Status>cancelled</Status>
</Status>

Возможные запросы от аптечной сети в Ютеку #

Имя файла #

Имя файла соответствует status_<id>.xml.

Например, файл с запросом на отмену заказа с номером 1234 будет лежать в папке orders/incoming и называться 1234.xml, полный путь: orders/incoming/status_1234.xml

Отменён аптекой #

При отмене со стороны аптеки нужно указывать причину (например, “нет на складе” или “отказ покупателя”)

Запрос
<Status>
  <OrderID>4567</OrderID>
  <Status>cancelled</Status>
  <Comment>Нет на складе</Comment>
</Status>

Подтверждён #

Фармацевт в аптеке увидел заказ или заказ дошёл до аптеки и сохранился со стороны аптечной сети.

Запрос
<Status>
  <OrderID>4567</OrderID>
  <Status>approved</Status>  
</Status>

Готов к выдаче #

Покупатель может идти в аптеку.

Запрос
<Status>
  <OrderID>4567</OrderID>
  <Status>ready</Status>  
</Status>

Продан #

Запрос
<Status>
  <OrderID>4567</OrderID>
  <Status>completed</Status>  
</Status>