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

Остатки товаров⚓︎

Передача остатков в АСНА⚓︎

Передача остатков в АСНА осуществляется следующими методами:

  1. Передача информации о полных остатках
  2. Передача изменений

Передача полных остатков аптеки⚓︎

Ежедневно, желательно в период наименьшей загруженности сервисов, интегрированное с АСНА программное обеспечение должно отправлять полные сведения о наличии товаров в каждой аптеке. Выгрузка полных сведений об остатках должна производиться не чаще одного раза в сутки. Так как объем передаваемой информации о полных остатках большой, пакет не обрабатывается сразу, а ставится в очередь на обработку.

ОГРАНИЧЕНИЕ

Отправлять полные остатки необходимо один раз в сутки. Желательно отправлять полные остатки в период с 05:15 до 08:45 по московскому времени. В остальное время вы должны передавать только то, что изменилось с момента предыдущей отправки. См. Передача изменений по остаткам аптеки.

ВНИМАНИЕ

Перед обработкой полных остатков и записью их в БД, сервис произведет удаление всех остатков в БД по этой аптеке.

ЗАПРОС

POST    /v5/stores/{storeId}/stocks

Описание⚓︎

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

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

Имя Тип Обяз. Описание
storeId GUID Идентификатор аптеки по справочнику АСНА

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

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

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

Объект запроса⚓︎

Имя Тип Обяз. Описание
date datetime Дата выгрузки остатков в формате ISO8601 с указанием часового пояса, см. примеры
stocks Stock[] Массив строк остатков

Объект запроса Stock (строка остатков)⚓︎

Имя Тип Обяз. Описание
prtId string(50) Уникальный код партии, должен быть уникальным в пределах отправляемого пакета, т.к. это ключ, по которому происходит, обновление записей. Максимум 50 символов.
nnt int Код товара по справочнику АСНА
sku string(50) Код товара по справочнику клиента. Максимум 50 символов.
qnt float Текущее количество в партии (с учетом забронированного товара). Не передавать дробное количество.
supDate datetime Дата поставки в формате ISO8601 с указанием часового пояса, см. примеры
nds int НДС товара. Все расчеты идут по ставкам НДС из справочника номенклатуры АСНА
gnvls bool Признак ЖНВЛС товара (поле обязательно для ЖНВЛС). Если ПО самостоятельно не контролирует максимально допустимые цены ЖНВЛС, то поле обязательно
man string(255) Производитель. Максимум 255 символов
series string(50) Cерия товара. Максимум 50 символов
exp datetime Cрок годности в формате ISO8601, см. примеры. Поле не является обязательным, т.к. не у всех товаров есть срок годности, но если у товара есть срок, убедительная просьба его заполнять. Покупатели хотят видеть срок на сайте. Для сервиса Контроль сроков годности поле обязательно.
prcMan decimal Цена производителя
prcOpt decimal Цена оптовая
prcOptNds decimal Цена оптовая (закупочная) с НДС. Для сервисов Подмена аптечных цен, Асна Экономия поле обязательно. Если вы не предусматриваете работу с этими сервисами, то выгружайте эту цену равную розничной, т.к. поле не может быть пустым
prcRet decimal Цена реализации
prcReestr decimal Цена реестра
prcGnvlsMax decimal Максимально допустимая розничная цена для ЖНВЛС (поле обязательно для ЖНВЛС). Если товар не ЖНВЛС, то это поле заполнять не нужно, если товар ЖНВЛС и включен расчет цен, то поле обязательно заполняется значением, и оно не может быть меньше розничной цены аптеки. Если ПО самостоятельно не контролирует максимально допустимые цены ЖНВЛС, то поле обязательно
mrGnvls decimal Процент наценки для ЖВЛНС
tag int Признак товара. Может принимать значения: 0 - нормальный, 1- сроковый, 2 - уценка, 3 - мятая упаковка
classDiagram
    StocksDto  *-- "1..*" StockDto
    class StocksDto{
      +DatetimeOffset date
      +StockDto[] stocks
    }
    class StockDto{
      +String prtId
      +Int nnt
      +String sku
      +Float qnt 
      +DatetimeOffset supDate
      +Int nds
      +Bool gnvls
      +String man
      +String series
      +Datetime exp
      +Decimal prcMan
      +Decimal prcOpt
      +Decimal prcOptNds
      +Decimal prcRet
      +Decimal prcReestr
      +Decimal prcGnvlsMax
      +Decimal mrGnvls
      +Int tag
    }

JSON схема для валидации и тестирования

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

POST /v5/stores/BC164E55-B612-4A04-800B-34CCF10F6858/stocks HTTP/1.1
Host: api.asna.cloud
Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdGQzk0RDU4N0UzQzg4QUM0M0FDQkQyOEU0Njk4RDZCOTE3RkQyOUUiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJmOGxOV0g0OGlLeERyTDBvNUdtTmE1Rl8wcDQifQ.eyJuYmYiOjE0OTE1NzY2MDcsImV4cCI6MTQ5MTU4MDIwNywiaXNzIjoiaHR0cHM6Ly9zc28uYXNuYS5jbG91ZDoxODgxIiwiYXVkIjpbImh0dHBzOi8vc3NvLmFzbmEuY2xvdWQ6MTg4MS9yZXNvdXJjZXMiLCJhcGkiXSwiY2xpZW50X2lkIjoiRTQ1RDM0OTEtNzlFRS00RUVBLTkyQjItMjJDRUJFNEJCOEI1IiwiY2xpZW50X2FjY2VzcyI6WyJzdG9ja3MuZWRpdCIsInN0b2Nrcy5mdWxsX2FjY2VzcyIsInN0b2Nrcy52aWV3Il0sInNjb3BlIjpbImFwaSJdfQ.OvGjvdbOk6QI3CNRyjOmj5mSrUZ7v1LjWRgH9TjwhNTTKiEaww1iEr8CnSKOfpGUdhkFGiup8kzvW0PIsqrVZHEx2r5gmT9SO6orznDg-ESprgjjiBC-uYSSTzK_WmPZp-cjP4OVt8ovGY3ncNhrTYFmBy0CJh0XBtMmO5IkE9ASxyaw5Ou5by0SaMTF8Vh9ocE0Uaj8xf-m6ivKQYv_4gEsKs6XEjKBN0khfZGOvv1qQJ4iBn-fVtOqPUpv1ypcOskGZhVHo200ZjvPalbemV-51D45k1KZcE_K9qiYK8Y1vX_lzRDSaQI30PACuQc-VpB-WcCMAtVEEuo0paL2fw
Content-Type: application/json
Accept: application/json
Cache-Control: no-cache

{
"date": "2017-04-25T01:29:20.4520214+00:00",
"stocks": [
    {
    "prtId": "fb851e60-b472-4e8f-ba1e-bcbe3df3cf1c",
    "nnt": 14404,
    "sku": "028091",
    "qnt": 5,
    "supDate": "2017-04-20T02:29:31.104986+00:00",
    "nds": 10,
    "gnvls": false,
    "man": "Metz - Beer",
    "series": "pbepvhu6xpuj",
    "exp": "2020-01-07T00:00:00+00:00",
    "prcMan": 242.12,
    "prcOpt": 293.6,
    "prcOptNds": 304.72,
    "prcRet": 388.99,
    "prcReestr": 483.22,
    "prcGnvlsMax": 483.22,
    "mrGnvls": 8.81,
    "tag": 2
    },
    {
    "prtId": "d4340309-c32c-4215-935e-de028a691eff",
    "nnt": 42692,
    "sku": "585703",
    "qnt": 2,
    "supDate": "2017-04-15T15:30:59.9716512+00:00",
    "nds": 20,
    "gnvls": true,
    "man": "O'Connell Inc",
    "series": "8b1l4itzs5pl",
    "exp": "2020-08-27T00:00:00+00:00",
    "prcMan": 668.3,
    "prcOpt": 743.57,
    "prcOptNds": 760.07,
    "prcRet": 972.67,
    "prcReestr": 1134.28,
    "prcGnvlsMax": 1134.28,
    "mrGnvls": 10.19,
    "tag": 1
    }
 ]
}

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

HTTP cтатус Значение
202 Accepted. Принято к обработке. В заголовке Location содержится URL для получения статуса обработки переданного пакета.

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

1
2
3
HTTP/1.1 202 Accepted
Vary: Accept
Location: https://api.asna.cloud/v5/messages/09006a8b-826d-48a0-91ad-f4d05a454b56/status

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

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

Передача изменений по остаткам аптеки⚓︎

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

ОГРАНИЧЕНИЕ

Передача изменений остатков ограничена одним запросом в 10 минут.

ВНИМАНИЕ!

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

ИНФОРМАЦИЯ

Перед обработкой изменений по остаткам аптеки и записью их в БД, сервис не будет производить удаление всех остатков в БД по этой аптеке. Будет произведена операция upsert (update для уже имеющихся в БД строк и insert для отсутствующих).

ЗАПРОС

PUT    /v5/stores/{storeId}/stocks

Описание⚓︎

Передать изменения по остаткам аптеки storeId по протоколу v5

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

Имя Тип Обяз. Описание
storeId GUID Идентификатор аптеки по справочнику АСНА

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

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

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

Объект запроса⚓︎

Имя Тип Обяз. Описание
date datetime Дата выгрузки остатков в формате ISO8601 с указанием вашего часового пояса, см. примеры
stocks Stock[] Массив строк остатков

Объект запроса Stock (строка остатков)⚓︎

Имя Тип Обяз. Описание
prtId string Уникальный код партии, должен быть уникальным в пределах отправляемого пакета, т.к. это ключ, по которому происходит, обновление записей. Максимум 50 символов.
nnt int Код товара по справочнику АСНА
sku string Код товара по справочнику клиента. Максимум 50 символов.
qnt float Текущее количество в партии (с учетом забронированного товара). Не передавать дробное количество.
supDate datetime Дата поставки в формате ISO8601 с указанием часового пояса, см. примеры
nds int НДС товара. Все расчеты идут по ставкам НДС из справочника номенклатуры АСНА
gnvls bool Признак ЖНВЛС товара (поле обязательно для ЖНВЛС). Если ПО самостоятельно не контролирует максимально допустимые цены ЖНВЛС то поле обязательно
man string Производитель. Максимум 255 символов
series string Cерия товара. Максимум 50 символов
exp datetime Cрок годности в формате ISO8601, см. примеры. Поле не является обязательным, т.к. не у всех товаров есть срок годности, но если у товара есть срок, убедительная просьба его заполнять. Покупатели хотят видеть срок на сайте. Для сервиса Контроль сроков годности поле обязательно
prcMan decimal Цена производителя
prcOpt decimal Цена оптовая
prcOptNds decimal Цена оптовая (закупочная) с НДС. Для сервисов Подмена аптечных цен, Асна Экономия поле обязательно. Если вы не предусматриваете работу с этими сервисами, то выгружайте эту цену равную розничной, т.к. поле не может быть пустым
prcRet decimal Цена реализации
prcReestr decimal Цена реестра
prcGnvlsMax decimal Максимально допустимая розничная цена для ЖНВЛС (поле обязательно для ЖНВЛС). Если товар не ЖНВЛС, то это поле заполнять не нужно, если товар ЖНВЛС и включен расчет цен, то поле обязательно заполняется значением, и оно не может быть меньше розничной цены аптеки. Если ПО самостоятельно не контролирует максимально допустимые цены ЖНВЛС то поле обязательно
mrGnvls decimal Процент наценки для ЖВЛНС
tag int Признак товара. Может принимать значения: 0 - нормальный, 1- сроковый, 2 - уценка, 3 - мятая упаковка

JSON схема для валидации и тестирования

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

PUT /v5/stores/BC164E55-B612-4A04-800B-34CCF10F6858/stocks HTTP/1.1
Host: api.asna.cloud
Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdGQzk0RDU4N0UzQzg4QUM0M0FDQkQyOEU0Njk4RDZCOTE3RkQyOUUiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJmOGxOV0g0OGlLeERyTDBvNUdtTmE1Rl8wcDQifQ.eyJuYmYiOjE0OTE1NzY2MDcsImV4cCI6MTQ5MTU4MDIwNywiaXNzIjoiaHR0cHM6Ly9zc28uYXNuYS5jbG91ZDoxODgxIiwiYXVkIjpbImh0dHBzOi8vc3NvLmFzbmEuY2xvdWQ6MTg4MS9yZXNvdXJjZXMiLCJhcGkiXSwiY2xpZW50X2lkIjoiRTQ1RDM0OTEtNzlFRS00RUVBLTkyQjItMjJDRUJFNEJCOEI1IiwiY2xpZW50X2FjY2VzcyI6WyJzdG9ja3MuZWRpdCIsInN0b2Nrcy5mdWxsX2FjY2VzcyIsInN0b2Nrcy52aWV3Il0sInNjb3BlIjpbImFwaSJdfQ.OvGjvdbOk6QI3CNRyjOmj5mSrUZ7v1LjWRgH9TjwhNTTKiEaww1iEr8CnSKOfpGUdhkFGiup8kzvW0PIsqrVZHEx2r5gmT9SO6orznDg-ESprgjjiBC-uYSSTzK_WmPZp-cjP4OVt8ovGY3ncNhrTYFmBy0CJh0XBtMmO5IkE9ASxyaw5Ou5by0SaMTF8Vh9ocE0Uaj8xf-m6ivKQYv_4gEsKs6XEjKBN0khfZGOvv1qQJ4iBn-fVtOqPUpv1ypcOskGZhVHo200ZjvPalbemV-51D45k1KZcE_K9qiYK8Y1vX_lzRDSaQI30PACuQc-VpB-WcCMAtVEEuo0paL2fw
Content-Type: application/json
Accept: application/json
Cache-Control: no-cache

{
   "date":"2017-04-25T01:29:20.4520214+00:00",
   "stocks":[
      {
         "prtId":"fb851e60-b472-4e8f-ba1e-bcbe3df3cf1c",
         "nnt":14404,
         "sku":"028091",
         "qnt":5,
         "supDate":"2017-04-20T02:29:31.104986+00:00",
         "nds":10,
         "gnvls":false,
         "man":"Metz - Beer",
         "series":"pbepvhu6xpuj",
         "exp":"2020-01-07T00:00:00+00:00",
         "prcMan":242.12,
         "prcOpt":293.6,
         "prcOptNds":304.72,
         "prcRet":388.99,
         "prcReestr":483.22,
         "prcGnvlsMax":483.22,
         "mrGnvls":8.81,
         "tag":2
      },
      {
         "prtId":"d4340309-c32c-4215-935e-de028a691eff",
         "nnt":42692,
         "sku":"585703",
         "qnt":2,
         "supDate":"2017-04-15T15:30:59.9716512+00:00",
         "nds":20,
         "gnvls":true,
         "man":"O'Connell Inc",
         "series":"8b1l4itzs5pl",
         "exp":"2020-08-27T00:00:00+00:00",
         "prcMan":668.3,
         "prcOpt":743.57,
         "prcOptNds":760.07,
         "prcRet":972.67,
         "prcReestr":1134.28,
         "prcGnvlsMax":1134.28,
         "mrGnvls":10.19,
         "tag":1
      }
   ]
}

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

HTTP cтатус Значение
202 Accepted. Принято к обработке. В заголовке Location содержится URL для получения статуса обработки переданного пакета.

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

1
2
3
HTTP/1.1 202 Accepted
Vary: Accept
Location: https://api.asna.cloud/v5/messages/09006a8b-826d-48a0-91ad-f4d05a454b56/status

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

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

Удаление информации по остаткам аптеки⚓︎

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

ВНИМАНИЕ!

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

ЗАПРОС

DELETE    /v5/stores/{storeId}/stocks

Описание⚓︎

Удалить информацию по остаткам аптеки storeId по протоколу v5

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

Имя Тип Обяз. Описание
storeId GUID Идентификатор аптеки по справочнику АСНА

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

Имя Описание
Authorization Bearer token

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

1
2
3
DELETE /v5/stores/BC164E55-B612-4A04-800B-34CCF10F6858/stocks HTTP/1.1
Host: api.asna.cloud
Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdGQzk0RDU4N0UzQzg4QUM0M0FDQkQyOEU0Njk4RDZCOTE3RkQyOUUiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJmOGxOV0g0OGlLeERyTDBvNUdtTmE1Rl8wcDQifQ.eyJuYmYiOjE0OTE1NzY2MDcsImV4cCI6MTQ5MTU4MDIwNywiaXNzIjoiaHR0cHM6Ly9zc28uYXNuYS5jbG91ZDoxODgxIiwiYXVkIjpbImh0dHBzOi8vc3NvLmFzbmEuY2xvdWQ6MTg4MS9yZXNvdXJjZXMiLCJhcGkiXSwiY2xpZW50X2lkIjoiRTQ1RDM0OTEtNzlFRS00RUVBLTkyQjItMjJDRUJFNEJCOEI1IiwiY2xpZW50X2FjY2VzcyI6WyJzdG9ja3MuZWRpdCIsInN0b2Nrcy5mdWxsX2FjY2VzcyIsInN0b2Nrcy52aWV3Il0sInNjb3BlIjpbImFwaSJdfQ.OvGjvdbOk6QI3CNRyjOmj5mSrUZ7v1LjWRgH9TjwhNTTKiEaww1iEr8CnSKOfpGUdhkFGiup8kzvW0PIsqrVZHEx2r5gmT9SO6orznDg-ESprgjjiBC-uYSSTzK_WmPZp-cjP4OVt8ovGY3ncNhrTYFmBy0CJh0XBtMmO5IkE9ASxyaw5Ou5by0SaMTF8Vh9ocE0Uaj8xf-m6ivKQYv_4gEsKs6XEjKBN0khfZGOvv1qQJ4iBn-fVtOqPUpv1ypcOskGZhVHo200ZjvPalbemV-51D45k1KZcE_K9qiYK8Y1vX_lzRDSaQI30PACuQc-VpB-WcCMAtVEEuo0paL2fw

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

HTTP cтатус Значение
204 No Content. Данные удалены

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

HTTP/1.1 204 No Content

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

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

Получение информации по остаткам аптеки⚓︎

Для периодической проверки остатков, переданных в АСНА, вы можете получить данные по остаткам аптеки, используя следующий запрос:

ЗАПРОС

GET    /v5/stores/{storeId}/stocks

Описание⚓︎

Передать изменения по остаткам аптеки storeId по протоколу v5

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

Имя Тип Обяз. Описание
storeId GUID Идентификатор аптеки по справочнику АСНА
since datetime Дата/время в формате ISO8601, см. примеры, с которой необходимо получить остатки

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

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

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

1
2
3
GET /v5/stores/BC164E55-B612-4A04-800B-34CCF10F6858/stocks?since=2017-04-20T02:29:31.104986%2B00:00 HTTP/1.1
Host: api.asna.cloud
Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdGQzk0RDU4N0UzQzg4QUM0M0FDQkQyOEU0Njk4RDZCOTE3RkQyOUUiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJmOGxOV0g0OGlLeERyTDBvNUdtTmE1Rl8wcDQifQ.eyJuYmYiOjE0OTE1NzY2MDcsImV4cCI6MTQ5MTU4MDIwNywiaXNzIjoiaHR0cHM6Ly9zc28uYXNuYS5jbG91ZDoxODgxIiwiYXVkIjpbImh0dHBzOi8vc3NvLmFzbmEuY2xvdWQ6MTg4MS9yZXNvdXJjZXMiLCJhcGkiXSwiY2xpZW50X2lkIjoiRTQ1RDM0OTEtNzlFRS00RUVBLTkyQjItMjJDRUJFNEJCOEI1IiwiY2xpZW50X2FjY2VzcyI6WyJzdG9ja3MuZWRpdCIsInN0b2Nrcy5mdWxsX2FjY2VzcyIsInN0b2Nrcy52aWV3Il0sInNjb3BlIjpbImFwaSJdfQ.OvGjvdbOk6QI3CNRyjOmj5mSrUZ7v1LjWRgH9TjwhNTTKiEaww1iEr8CnSKOfpGUdhkFGiup8kzvW0PIsqrVZHEx2r5gmT9SO6orznDg-ESprgjjiBC-uYSSTzK_WmPZp-cjP4OVt8ovGY3ncNhrTYFmBy0CJh0XBtMmO5IkE9ASxyaw5Ou5by0SaMTF8Vh9ocE0Uaj8xf-m6ivKQYv_4gEsKs6XEjKBN0khfZGOvv1qQJ4iBn-fVtOqPUpv1ypcOskGZhVHo200ZjvPalbemV-51D45k1KZcE_K9qiYK8Y1vX_lzRDSaQI30PACuQc-VpB-WcCMAtVEEuo0paL2fw

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

HTTP cтатус Значение
200 ОК. Успешный запрос. Тело запроса содержит массив остатков

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

[
  {
    "realNetId": 10000211,
    "storeId": "BC164E55-B612-4A04-800B-34CCF10F6858",
    "nnt": 14404,
    "sku": "028091",
    "qnt": 5,
    "supDate": "2017-04-20T02:29:31.103+00:00",
    "nds": 10,
    "gnvls": false,
    "man": "Metz - Beer",
    "series": "pbepvhu6xpuj",
    "exp": "2020-01-07T00:00:00+00:00",
    "prcMan": 242.12,
    "prcOpt": 293.6,
    "prcOptNds": 304.72,
    "prcRet": 388.99,
    "prcReestr": 483.22,
    "prcGnvlsMax": 483.22,
    "mrGnvls": 8.81,
    "tag": 2,
    "stkDate": "2017-04-25T01:29:20.4520214+00:00",
    "loadDate": "2017-04-26T15:34:04.28+00:00",
    "rv": "AAAAAAAAB+Y="
  },
  {
    "realNetId": 10000211,
    "storeId": "BC164E55-B612-4A04-800B-34CCF10F6858",
    "nnt": 42692,
    "sku": "585703",
    "qnt": 2,
    "supDate": "2017-04-15T15:30:59.97+00:00",
    "nds": 20,
    "gnvls": true,
    "man": "O'Connell Inc",
    "series": "8b1l4itzs5pl",
    "exp": "2020-08-27T00:00:00+00:00",
    "prcMan": 668.3,
    "prcOpt": 743.57,
    "prcOptNds": 760.07,
    "prcRet": 972.67,
    "prcReestr": 1134.28,
    "prcGnvlsMax": 1134.28,
    "mrGnvls": 10.19,
    "tag": 1,
    "stkDate": "2017-04-25T01:29:20.4520214+00:00",
    "loadDate": "2017-04-26T15:34:04.28+00:00",
    "rv": "AAAAAAAAB+c="
  }
]

Объект ответа (строка остатков)⚓︎

Имя Тип Описание
realNetId int Идентификатор сети
storeId GUID Идентификатор аптеки по справочнику АСНА
prtId string Уникальный код партии, должен быть уникальным в пределах отправляемого пакета, т.к. это ключ, по которому происходит, обновление записей. Максимум 50 символов.
nnt int Код товара по справочнику АСНА
sku string Код товара по справочнику клиента. Максимум 50 символов.
qnt float Текущее количество в партии (с учетом забронированного товара)
supDate datetime Дата поставки в формате ISO8601 с указанием часового пояса, см. примеры
nds int НДС товара
gnvls bool Признак ЖНВЛС товара (поле обязательно для ЖНВЛС)
man string Производитель. Максимум 255 символов
series string Cерия товара. Максимум 50 символов
exp datetime Cрок годности в формате ISO8601, см. примеры. Поле не является обязательным, т.к. не у всех товаров есть срок годности, но если у товара есть срок, убедительная просьба его заполнять. Покупатели хотят видеть срок на сайте
prcMan decimal Цена производителя
prcOpt decimal Цена оптовая
prcOptNds decimal Цена оптовая (закупочная) с НДС
prcRet decimal Цена реализации
prcReestr decimal Цена реестра
prcGnvlsMax decimal Максимально допустимая розничная цена для ЖНВЛС (поле обязательно для ЖНВЛС). Если товар не ЖНВЛС, то это поле заполнять не нужно, если товар ЖНВЛС и включен расчет цен, то поле обязательно заполняется значением, и оно не может быть меньше розничной цены аптеки
mrGnvls decimal Процент наценки для ЖВЛНС
tag int Признак товара. Может принимать значения: 0 - нормальный, 1- сроковый, 2 - уценка, 3 - мятая упаковка
stkDate datetime Дата остатков в формате ISO8601 с указанием часового пояса, см. примеры
loadDate datetime Дата загрузки остатков в формате ISO8601 с указанием часового пояса, см. примеры
rv byte[] Версия записи

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

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

Фильтрация остатков⚓︎

Для исключения попадания на сайт товаров с некорректными(слишком низкими) ценами, которые, как правило, получаются из-за некорректных привязок справочника товаров аптеки и справочника товаров АСНА, мы фильтруем такие товары.

Если вы подписаны на рассылку мониторинга, то ежедневно вы будете получать уведомления по электронной почте с вложенной инструкцией, если нет то вы можете перейти на веб-интерфейс фильтра по ссылке http://api.asna.cloud/dispersion?storeId={storeId}, где storeId - идентификатор вашей аптеки.

Инструкция по работе с веб-интерфейсом фильтра встроена в веб-интефейс.