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

Warehouse. Точки продаж

Методы для работы со справочником точек продаж (магазинов и складов): получение списка, создание и изменение.

Как получить ключ, как формируются запросы и какие бывают ответы и ошибки — в статье Общие сведения. Здесь описаны только особенности методов раздела warehouse.

Методы

Метод Адрес Что делает
Получить точки продаж /api/warehouse Возвращает одну или все точки продаж
Создать или изменить /api/warehouse/update Обновляет точку продаж или создаёт новую

Удаления точек продаж через API нет.

Где передавать параметры. Ключ apikey и формат format принимаются и в адресной строке, и в теле POST-запроса. Параметры id и external_id в методе получения читаются только из адресной строки (GET). В методе update все параметры можно передавать и в адресной строке, и в теле POST. Значения с кириллицей, пробелами и знаками + кодируйте.

Получение точек продаж

GET https://[компания].myvirtualpos.ru/api/warehouse?apikey=MySecret&fields=organisation_name

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

id Число. Ид точки продаж. Только GET
external_id Строка. Код точки продаж во внешней системе (например, в 1С). Только GET
fields Дополнительные поля через двоеточие. Допустимое значение: organisation_name — название юридического лица точки продаж
format json (по умолчанию) или xml

Условия объединяются по «и». Без параметров возвращаются все точки продаж одним ответом. Если указано неизвестное поле в fields, метод вернёт ошибку со списком допустимых значений.

Структура ответа

success 1 — данные получены
type Тип данных, всегда warehouse
count Количество точек продаж в ответе
warehouses Список точек продаж. Каждая обёрнута в объект warehouse

Поля точки продаж

Пустые значения в JSON приходят как null, в XML — как пустой элемент.

Основное

id Число. Ид точки продаж
external_id Строка. Код во внешней системе
number Строка. Номер точки продаж
name Строка. Название
active Число. 1 — точка активна
address Строка. Адрес
phone Строка. Телефон
open_time, close_time Строка. Время открытия и закрытия, формат чч:мм:сс
flag24hours Число. 1 — работает круглосуточно
lat, lon Строка. Широта и долгота
location_id Число. Ид территории
location_name Строка. Название территории
created_date, last_update_date Строка. Дата и время создания и последнего изменения
created_by, last_update_by Число. Ид пользователя, создавшего и изменившего запись

Настройки

minusale Число. 1 — разрешена продажа в минус (при отсутствии остатка)
show_in_shop Число. 1 — точка показывается в интернет-магазине и мобильном приложении
organisation_id Число. Ид юридического лица
manager_user_id Число. Ид ответственного менеджера
primary Число. 1 — основная точка продаж
main_store_id Число. Ид главного склада, к которому относится точка
headquerter_id Число. Ид головной точки. Написание поля сохранено для совместимости
vat_mandatory_flag Число. 1 — НДС обязателен
znak_branch_id Строка. Идентификатор в системе маркировки
sbp_merchant_id Строка. Идентификатор для платежей через СБП
attribute1 … attribute15 Строка. Значения гибких полей
organisation_name Строка. Название юридического лица, только при fields=organisation_name

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

{
  "success": 1,
  "type": "warehouse",
  "count": 1,
  "warehouses": [
    {
      "warehouse": {
        "open_time": "10:00:00",
        "close_time": "21:00:00",
        "id": 6,
        "number": "5",
        "name": "Точка на Тверской",
        "active": 1,
        "address": "г. Москва, ул. Тверская, д. 3",
        "phone": "+7 900 000-00-01",
        "headquerter_id": 0,
        "created_date": "2019-06-06 17:25:12",
        "created_by": 3,
        "last_update_date": "2026-09-01 10:34:46",
        "last_update_by": 23,
        "flag24hours": 0,
        "lat": "55.76000000000000",
        "lon": "37.61000000000000",
        "minusale": 1,
        "location_id": 8,
        "external_id": "WH-6",
        "show_in_shop": 1,
        "organisation_id": 2,
        "vat_mandatory_flag": 0,
        "manager_user_id": 3,
        "primary": 0,
        "main_store_id": null,
        "znak_branch_id": "",
        "sbp_merchant_id": null,
        "location_name": "Москва"
      }
    }
  ]
}

В примере опущены пустые гибкие поля attribute1…attribute15. Тот же ответ при format=xml (сокращённо):

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <success>1</success>
  <type>warehouse</type>
  <count>1</count>
  <warehouses>
    <warehouse>
      <open_time>10:00:00</open_time>
      <close_time>21:00:00</close_time>
      <id>6</id>
      <name>Точка на Тверской</name>
      <!-- остальные поля точки продаж -->
      <location_name>Москва</location_name>
    </warehouse>
  </warehouses>
</root>

Если ничего не найдено, метод возвращает успешный ответ с count равным 0 и пустым списком.

Создание и изменение

POST https://[компания].myvirtualpos.ru/api/warehouse/update?apikey=MySecret&external_id=WH-6&create_if_not_exist=1
name=Точка на Тверской&address=г. Москва, ул. Тверская, д. 3&location_name=Москва

Точка продаж ищется по id, а если он не указан — по external_id. Если точка не найдена, а передан create_if_not_exist=1, создаётся новая. Изменяются только переданные параметры.

Параметры

id Число. Ид изменяемой точки продаж
external_id Строка. Код точки продаж во внешней системе. Если id не указан, по нему ищется точка; одновременно это поле точки: при создании код сохраняется
create_if_not_exist 1 — создать точку продаж, если она не найдена
name Строка. Название. Обязательно при создании
address Строка. Адрес. Обязателен при создании
phone Строка. Телефон
open_time, close_time Строка. Время открытия и закрытия, формат чч:мм:сс
flag24hours 1 — работает круглосуточно, 0 — нет
lat, lon Число. Широта и долгота
minusale 1 — разрешить продажу в минус, 0 — запретить
location_id Число. Ид территории; территория должна существовать
location_name Строка. Название территории, используется, если не указан location_id. Если территории с таким названием нет, она создаётся
default_pricelist_id Число. Ид прайс-листа, который становится основным для точки продаж. Прайс-лист должен существовать
attribute1 … attribute15 Значения гибких полей

Остальные поля точки продаж (например, active, organisation_id, show_in_shop) через API не меняются: настраивайте их в панели управления.

Территория новой точки. Если при создании не указаны ни location_id, ни location_name, точка привязывается к первой найденной территории. Для правильной привязки указывайте территорию явно. Если в системе нет ни одной территории и не указано название, метод вернёт ошибку.

Значения по умолчанию. Не переданные при создании lat, lon и minusale становятся равными 0.

Ответ

{"success":1,"id":"17","isnew":"1"}
success 1 — точка продаж сохранена
id Ид точки продаж. При создании приходит строкой, при изменении — числом
isnew «1» — создана, «0» — изменена существующая

Примеры запросов

Задача Запрос
Все точки продаж /api/warehouse?apikey=MySecret
Точка по ид с юридическим лицом /api/warehouse?apikey=MySecret&id=6&fields=organisation_name
Точка по коду из 1С /api/warehouse?apikey=MySecret&external_id=WH-6
Создать точку /api/warehouse/update?apikey=MySecret&create_if_not_exist=1&external_id=WH-7&name=Shop7&address=Moscow&location_id=8
Изменить телефон /api/warehouse/update?apikey=MySecret&id=6&phone=%2B79000000001
Назначить основной прайс-лист /api/warehouse/update?apikey=MySecret&id=6&default_pricelist_id=1

Ошибки

Ошибка авторизации и общие ошибки описаны в статье Общие сведения. Ошибки приходят с кодом HTTP 200 и success равным 0:

Сообщение Причина Что делать
You have to specify [id] or [external_id] to update record Нет id, external_id и create_if_not_exist Передайте идентификатор или create_if_not_exist=1
Record not found Точка не найдена, а create_if_not_exist не указан Проверьте идентификатор или передайте create_if_not_exist=1
There is no any location in VirtualPos. Please create new location and try again В системе нет территорий Создайте территорию или передайте location_name
Data validation failed. … Не заполнены название или адрес, нечисловые lat или lon Исправьте поля, перечисленные в сообщении
Cannot save data. … Ошибка сохранения; например, location_id или default_pricelist_id указывают на несуществующую запись Проверьте ссылки на другие записи
Field '…' not found. Use combination of: [organisation_name] Неизвестное поле в fields Используйте organisation_name

Связанные разделы