Методы web-сервиса сборки заказов СМ

Все методы web- сервиса сборки заказов вызываются http(s) запросом POST. Приложения Домино могут получить адрес сервиса из параметра «Сервис сборки заказов СМ» карточки компании.

Адрес точки доступа для сервиса сборки заказов:

https://компания.ru/sbermarket/orders/api/

Для аутентификации при вызове необходимо передавать авторизационный токен в заголовке запроса Client-Token. Приложения Домино могут получить токен из параметра «Авторизационный токен сервиса сборки заказов» карточки компании. Каждый метод сервиса должен проверить полученный токен, и вернуть http-код 403 forbidden в случае ошибки.

Имя вызываемого метода передается в URL. Параметры всегда передаются как content в формате json (требуется установить параметр заголовка Content-type : application/json ). Json – объект с параметрами запроса имеет следующую структуру:

{

  requestId : <уникальный идентификатор запроса, string, не обязательный>,

  requestData : {

    <параметры запроса в формате json, в зависимости от вызванного метода>

  }

}

Рекомендуется в каждом запросе передавать уникальный идентификатор запроса requestId. Это упростит анализ протоколов при разборе ошибок. В качестве идентификатора запроса проще всего использовать GUID.

Если метод выполнился, то http-кодом ответа всегда будет 200 OK, вне зависимости от результата выполнения метода. Иные коды ответа (4xx или 5xx) означают ошибки в работе сервиса, но не метода.

Результат выполнения метода всегда возвращается в виде json- объекта с фиксированной на верхнем уровне структурой:

{

  requestId : <уникальный идентификатор запроса, string, не обязательный>,

  errorCode : <код ошибки (0-успешно), целое, обязательный>,

  errorMsg : <описание кода ошибки, string, обязательный при ошибке>,

  responseData : {

    <данные ответа в формате json, в зависимости от вызванного метода>

  }

}

Объект «Заказ» возвращается большинством методов сервиса сборки. Его структура:

order : {

  orderId : <Идентификатор заказа СМ, string>

  storeId : <Идентификатор магазина СМ, string>

  state : <Статус заказа, enum string>

  created : <Время поступления заказа, datetime>,

  collectAt : <Планируемое время сборки заказа, datetime>,

  deliveryAt : <Планируемое время передачи заказа в доставку, datetime>,

  collector : <Сборщик, string>,

  customer : {

    name : <Имя покупателя, string>,

    phoneNumber : <Телефон для связи с покупателем, string>,

    auxNumber : <Добавочный номер, string>

  },

  positions : [

    {

      productId : <Идентификатор товара (SKU), string>,

      replacedById : <Товар, на который заменена позиция, string>,

      name : <Наименование товара, string>,

      picture : <URL картинки с изображением товара, string>,

      storage : <Место хранения товара, string>,

      isWeight : <Весовой товар, bool>,

      isMarked : <Маркированный товар, bool>,

      orderedQuantity : <Заказанное количество, number>,

      agreedQuantity : <Согласованное количество, number>,

      collectedQuantity : <Собранное количество, number>,

      markingCodes : [

        <Код маркировки, string>,

        ...

      ]

    },

    ...

  ],

  comment : <Комментарий к заказу, string>,

  replacementPolicy : <Политика замены, string>

}

Комментарии по реквизитам заказа:

  1. Тип datetime - дата и время в ISO формате, обычно YYYY-MM-DDTHH:MI:SS (время местное).
  2. state, статус заказа. Возможные значения «Новый», «В сборке», «Собран, «Передан курьеру», «Доставлен», «Отменен».

Для синхронизации состояния заказа между СМ и Домино сервис сборки заказов отправляет в СМ специальные уведомления. Спецификация API уведомлений СМ https://docs.sbermarket.ru/api-products/other/orders/partners-notifications .

Перечень уведомлений, которые сервис для сборки заказов отправляет в СМ

  • in_work - заказ взят в работу (сборку)
  • ready_for_delivery - сборка заказа завершена, заказ готов к передаче курьеру
  • canceled - заказ отменен магазином

Сборщик заказа - это Пользователь в терминах Домино, для которого установлена роль «Сборщик заказов СМ». Сборщик во всех методах web- сервиса сборки заказов идентифицируется именем пользователя, которое в Домино уникально. Если заказ собирается без указания сборщика (т.н. сборка магазина), то поле «Сборщик» документа заказа СМ остается пустым (NULL).  При вызове методов web- сервиса сборки заказов можно указывать специальное имя сборщика «Сборка магазина», либо null, либо вообще не указывать -  все эти способы эквивалентны, если иное не указано явно. В возвращаемом заказе в случае сборки магазина поле order.collector всегда будет иметь значение null.