Методы 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 : , storage : <Место хранения товара, string>, isWeight : <Весовой товар, bool>, isMarked : <Маркированный товар, bool>, orderedQuantity : <Заказанное количество, number>, agreedQuantity : <Согласованное количество, number>, collectedQuantity : <Собранное количество, number>, markingCodes : [ <Код маркировки, string>, ... ] }, ... ], comment : <Комментарий к заказу, string>, replacementPolicy : <Политика замены, string> } Комментарии по реквизитам заказа: Тип datetime - дата и время в ISO формате, обычно YYYY-MM-DDTHH:MI:SS (время местное). 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.