3.2. Описание фида с объектами
Общие требования
Формат файла | json. Файлы с объёмом более 100 мегабайт должны быть упакованы в zip-архив без пароля |
Расположение файла | В папке на sftp-сервере продавца. Ссылка на папку передаётся в Мегамаркете |
Защита доступа к sftp-серверу продавца | Обязательная авторизация. Логин и пароль для доступа передаются в Мегамаркете. Требования к паролю:
|
Протокол передачи | sftp |
Кодировка файла | UTF-8 без BOM |
Формат перевода строки | CR (U+000D) |
Максимальный размер файла | 500 мб |
Частота выгрузки информации об объектах | Один раз в 24 часа |
Требования к названию файла
Название файла содержит общую информацию о выгрузке и должно генерироваться в формате merchantId_outlets. Zip-архив и json должны иметь одинаковые названия.
Важно!
На момент выгрузки файла с объектами в названии файла должна быть всегда указана актуальная дата и время.
Примеры названий файлов:
45_outlets_2019-12-10T17-46-18+03-00.zip
45_outlets_2019-12-10T17-46-18+03-00.json
157_outlets_2019-12-10T17-46-18+03-00.zip
157_outlets_2019-12-10T17-46-18+03-00.json
Разделитель T должен быть обязательно латинской буквой, иначе фид не обработается корректно.
Описание элементов файла
Порядковый номер вложенности | Название параметра | Тип данных | Обязательный | Описание |
---|---|---|---|---|
1 | fileAttributes | Object | Да | Содержит технические параметры продавца |
1.2 | merchantId | Integer | Да | Идентификатор продавца по системе Мегамаркета |
1.3 | type | String | Да | Тип фида. Всегда Outlets |
1.4 | dateTime | String | Да | Время формирования фида в формате: YYYY-MM-DDTHH-MM-SS±hh-mm |
2 | outlets | Array | Да | Массив данных содержащий информацию о торговых точках |
2.1 | identification | Object | Да | Объект содержащий название торговой точки |
2.1.1 | id | String | Да | Идентификатор торговой точки по системе продавца. Информацию необходимо добавлять в латинской транслитерации. |
2.1.2 | name | String | Да | Название точки в системе Мегамаркета. Поддерживаемые транслитерации: Латиници, Кириллица. |
2.2 | location | Object | Да | Содержит информацию с параметрами о местоположении торговой точки |
2.2.1 | timezone | String | Да | Формат временной зоны ±hh:mm |
2.2.2 | address | Object | Да | Массив содержит информацию о местоположении торговой точки |
2.2.2.1 | plain | String | Да | Адрес магазина для отображения в системах Мегамаркета. |
2.2.2.2 | postalCode | String | Да, запись можно оставить пустой | Почтовый индекс. Есть валидация. Либо передается пустая строка: "", либо в значении должно быть строго 6 цифр без пробелов и дополнительных знаков: "452600" |
2.2.3 | geo | Object | Да | Объект содержит информацию о гео-данных для отображения информации на карте сайта Мегамаркета. |
2.2.3.1 | lat | String | Да | Широта |
2.2.3.2 | lon | String | Да | Долгота |
2.2.4 | directions | Object | Да | Объект может содержать информацию о ближайшем метро и описание как добраться. |
2.2.4.1 | metro | String | Да. поле можно оставить пустым | Отображает информацию на сайта о ближайшем метро |
2.2.4.2 | tripDescription | String | Да. Поле можно оставить пустым | Отображает информацию с описанием "Как добраться" в интерфейсе колл-центра для оператора Мегамаркета |
2.3 | label | Object | Да | Объект содержит информацию для отображения на сайте и при отправке смс |
2.3.1 | caption | String | Да | В данном параметре необходимо указывать название бренда, который будет отображаться на витрине. Можно дополнить названием торгового центра в котором располагается торговая точка. |
2.3.2 | imageUrl | String | Да. Поле можно оставить пустым | Картинка с информацией о том, как добраться. |
2.3.3 | contacts | String | Да. Поле можно оставить пустым | Контактная информация для связи с магазином |
2.3.4 | address | String | Да | Адрес торговой точки для отображения на сайте Мегамаркета/Sms. |
2.3.5 | schedule | String | Да | График работы точки для отображения на сайте Мегамаркета/Sms. |
2.4 | legalInfo | Object | Да | Объект содержащий юридическую информацию |
2.4.1 | plain | String | Да, поле можно оставить пустым | Информация о юр. лице - владельце объекта (обязательно содержит: наименование, адрес, ОГРН). Данная информацию отображается на карточке товара сайта Мегамаркета. |
2.5 | roles | Object | Да | Объект roles. |
2.5.1 | store | Object | Да | Объект store. |
2.5.1.1. | operations | Object | Да | Объект operations. |
2.5.1.1.1 | packing | Object | Да | Объект Packing. Содержит графики срока комплектации и время на комплектацию. |
2.5.1.1.1.1 | schedule | Object | Да | Объект содержащий информацию о графиках |
2.5.1.1.1.1.1 | weekDayRules | Object | Да | Объект содержит информацию о графике отдельного рабочего дня |
2.5.1.1.1.1.1.1 | monday | Array | Да | Содержит информацию о графике комплектации каждого Понедельника |
2.5.1.1.1.1.1.2 | tuesday | Array | Да | Содержит информацию о графике комплектации каждого Вторника |
2.5.1.1.1.1.1.3 | wednesday | Array | Да | Содержит информацию о графике комплектации каждой Среды |
2.5.1.1.1.1.1.4 | thursday | Array | Да | Содержит информацию о графике комплектации каждого Четверга |
2.5.1.1.1.1.1.5 | friday | Array | Да | Содержит информацию о графике комплектации каждой Пятницы |
2.5.1.1.1.1.1.6 | saturday | Array | Да | Содержит информацию о графике комплектации каждой Субботы |
2.5.1.1.1.1.1.7 | sunday | Array | Да | Содержит информацию о графике комплектации каждого Воскресенья |
2.5.1.1.1.1.1.8 | closed | Array | Нет | Содержит информацию о нерабочих, праздничных, выходных днях |
2.5.1.1.1.2 | durationHours | Integer | Да | Содержит информацию о сроках комплектации заказа. Значение должно быть больше 0. |
2.5.1.1.2 | handover | Object | Да | Объект handover. Содержит информацию о графике выдачи товара магазина, способах оплаты, сроках резерва |
2.5.1.1.2.1 | schedule | Object | Да | Объект содержащий информацию о графиках |
2.5.1.1.2.1.1 | weekDayRules | Object | Да | Объект содержит информацию о графике отдельного рабочего дня |
2.5.1.1.2.1.1.1 | monday | Array | Да | Содержит информацию о графике работы каждого Понедельника |
2.5.1.1.2.1.1.2 | tuesday | Array | Да | Содержит информацию о графике работы каждого Вторника |
2.5.1.1.2.1.1.3 | wednesday | Array | Да | Содержит информацию о графике работы каждой Среды |
2.5.1.1.2.1.1.4 | thursday | Array | Да | Содержит информацию о графике работы каждого Четверга |
2.5.1.1.2.1.1.5 | friday | Array | Да | Содержит информацию о графике работы каждой Пятницы |
2.5.1.1.2.1.1.6 | saturday | Array | Да | Содержит информацию о графике работы каждой Субботы |
2.5.1.1.2.1.1.7 | sunday | Array | Да | Содержит информацию о графике работы каждого Воскресенья |
2.5.1.1.2.2 | reservationPeriodDays | Integer | Да | Количество дней резерва. Значение должно быть больше 0. |
2.5.1.1.2.3 | paymentOptions | Object | Да | Информация о способах оплаты. Обязательно должен быть указан один из способов оплаты. |
2.5.1.1.2.3.1 | prepayOnline | Boolean | Да | Предоплата. |
2.5.1.1.2.3.2 | cash | Boolean | Да | Наличные |
2.5.1.1.2.3.3 | bankCards | Boolean | Да | Оплата картой в магазине |
2.6 | isActive | Boolean | Да | Если true = ассортимент для данного магазина отображается на платформе гудс. Если false - ассортимент на торговой точке не отображается. |
Важно!
- График работы не может быть на всю неделю [0, 0], в этом случае остатки не будут загружаться в ЛКМ.
- durationHours и reservationPeriodDays не должны быть равны нулю. В этом случае остатки не будут загружаться в ЛКМ.
В этих случаях наша система будет принимать ваш магазин, как неработающий!
Операции магазина
Работа магазина описывается в терминах операций. Любой магазин мерчанта, работающий по click&collect должен поддерживать 2 операции:
- комплектация заказа - packing
- выдача заказа покупателю - handover
Операции магазина обязательно должны содержать информацию о графике их выполнения, а также могут содержать дополнительные атрибуты, описанные ниже.
График операций
График работы операции должен содержать временные интервалы, в которые магазин может выполнять данную операцию. График может быть описан двумя способами:
- С помощью правил работы в определенные дни недели
С помощью явного указания интервалов работы в конкретные даты
График работы обязательно должен быть описан одним из данных способов.
Логика работы комплектации и резервирования заказа.
1. Если магазин работает с 10 утра до 23 вечера. Срок комплектации(durationHours = 2). Срок резерва(reservationPeriodDays = 2)
Покупатель оформляется заказ в 13:10. На стороне Мегамаркета всегда происходит округление до часа вверх + срок комплектации(в нашем примере 2 часа). В результате, продавец должен успеть скомплектовать заказ до 16:00. Первым днем резерва будет считаться сегодняшний день. Если клиент не забирается заказ в течении 2 дней, то на 3 день в начале рабочего графика магазина Мегамаркет отправляет запрос order/cancel с просьбой подтвердить информацию о том, что клиент не пришел. Если продавец не подтверждает информацию об отмене в течении 2 дней после запроса об отмене Мегамаркету, заказ отменяется в одностороннем порядке.
2. Если магазин работает с 10 утра до 23 вечера. Срок комплектации(duration = 2). Срок резерва(reservationPeriodDays = 2)
Покупатель оформляется заказ в 22:00. На стороне Мегамаркета всегда происходит округление до часа вверх + срок комплектации(в нашем примере 2 часа). Если срок комплектации или резерва не укладывается в текущий график работы точки, то это время переносится на следующий день. Первым днем резерва будет считаться завтрашний день. При расчёте графика точки не учитываются выходные дни. Если клиент не забирается заказ в течении 2 дней, то на 4 день в начале рабочего графика магазина Мегамаркета отправляет запрос order/cancel с просьбой подтвердить информацию о том, что клиент не пришел. Если продавец не подтверждает информацию об отмене в течении 2 дней после запроса об отмене Мегамаркету, заказ отменяется в одностороннем порядке.
Примечание
- Если день является выходным, в массиве дня можно указывать график [0,0]
- При круглосуточном режиме работы указывается массив [0, 24]
График работы торговый точки и график комплектации должны совпадать.
test.json - пример файла для скачивания
{ "fileAttributes": { "merchantId": 999, "type": "outlets", "dateTime": "2019-07-30T15-11-26+03-00" }, "outlets": [{ "identification": { "id": "F017", "name": "название" }, "location": { "timezone": "+03:00", "address": { "plain": "г.Москва, ул.Бакинская, д.10, к.1", "postalCode": "198323" }, "geo": { "lat": "59.85134", "lon": "30.266739" }, "directions": { "metro": "", "tripDescription": "" } }, "label": { "caption": "Бренд", "imageUrl": "", "contacts": "", "address": "г.Москва, ул.Бакинская, д.10, к.1", "schedule": "Понедельник - Воскресенье: с 10:00 до 22:00" }, "legalInfo": { "plain": "" }, "roles": { "store": { "operations": { "packing": { "schedule": { "weekDayRules": { "friday": [10, 22], "saturday": [10, 22], "tuesday": [10, 22], "wednesday": [10, 22], "sunday": [10, 22], "thursday": [10, 22], "monday": [10, 22], "closed": [ "2021-01-01", "2021-01-02" ] } }, "durationHours": 1 }, "handover": { "schedule": { "weekDayRules": { "friday": [10, 22], "saturday": [10, 22], "tuesday": [10, 22], "wednesday": [10, 22], "sunday": [10, 22], "thursday": [10, 22], "monday": [10, 22], "closed": [ "2021-01-01", "2021-01-02" ] } }, "reservationPeriodDays": 2, "paymentOptions": { "prepayOnline": false, "cash": true, "bankCards": true } } } } }, "isActive": true } ] }