3.2. Описание фида с объектами

Общие требования

Формат файла

json. Файлы с объёмом более 100 мегабайт должны быть упакованы в zip-архив без пароля

Расположение файла

В папке на sftp-сервере продавца. Ссылка на папку передаётся в Мегамаркете

Защита доступа к sftp-серверу продавца

Обязательная авторизация. Логин и пароль для доступа передаются в Мегамаркете.

Требования к паролю:

  • Не менее 6 символом
  • Латинская транслитерация(цифры и буквы)
  • Символы должны быть в верхнем и нижнем регистре
  • Не должно быть спец символом

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

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 должен быть обязательно латинской буквой, иначе фид не обработается корректно.


Описание элементов файла

Порядковый номер вложенностиНазвание параметраТип данныхОбязательныйОписание
1fileAttributesObjectДаСодержит технические параметры продавца
1.2 merchantIdIntegerДаИдентификатор продавца по системе Мегамаркета
1.3typeStringДаТип фида. Всегда Outlets
1.4dateTimeStringДа

Время формирования фида в формате:

YYYY-MM-DDTHH-MM-SS±hh-mm
Использование двоеточия в качестве разделителя неприемлемо

2outletsArrayДаМассив данных содержащий информацию о торговых точках
2.1identificationObjectДа

Объект содержащий название торговой точки

2.1.1idStringДа

Идентификатор торговой точки по системе продавца. Информацию необходимо добавлять в латинской транслитерации.

2.1.2nameStringДа

Название точки в системе Мегамаркета.

Поддерживаемые транслитерации: Латиници, Кириллица.

2.2locationObjectДаСодержит информацию с параметрами о местоположении торговой точки
2.2.1timezoneStringДаФормат временной зоны ±hh:mm
2.2.2addressObjectДаМассив содержит информацию о местоположении торговой точки
2.2.2.1plainStringДаАдрес магазина для отображения в системах Мегамаркета.
2.2.2.2postalCodeStringДа, запись можно оставить пустойПочтовый индекс. Есть валидация. Либо передается пустая строка: "", либо в значении должно быть строго 6 цифр без пробелов и дополнительных знаков: "452600"
2.2.3geoObjectДаОбъект содержит информацию о гео-данных для отображения информации на карте сайта Мегамаркета.
2.2.3.1latStringДаШирота
2.2.3.2lonStringДаДолгота
2.2.4directionsObjectДаОбъект может содержать информацию о ближайшем метро и описание как добраться.
2.2.4.1metroStringДа. поле можно оставить пустымОтображает информацию на сайта о ближайшем метро
2.2.4.2tripDescriptionStringДа. Поле можно оставить пустымОтображает информацию с описанием "Как добраться" в интерфейсе колл-центра для оператора Мегамаркета
2.3labelObjectДаОбъект содержит информацию для отображения на сайте и при отправке смс
2.3.1captionStringДа

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

2.3.2imageUrlStringДа. Поле можно оставить пустымКартинка с информацией о том, как добраться.
2.3.3contactsStringДа. Поле можно оставить пустымКонтактная информация для связи с магазином
2.3.4addressStringДаАдрес торговой точки для отображения на сайте Мегамаркета/Sms.
2.3.5scheduleStringДаГрафик работы точки для отображения на сайте Мегамаркета/Sms.
2.4legalInfoObjectДаОбъект содержащий юридическую информацию
2.4.1plainStringДа, поле можно оставить пустымИнформация о юр. лице - владельце объекта (обязательно содержит: наименование, адрес, ОГРН). Данная информацию отображается на карточке товара сайта Мегамаркета.
2.5rolesObjectДаОбъект roles.  
2.5.1storeObjectДаОбъект store.  
2.5.1.1.operationsObjectДаОбъект operations.
2.5.1.1.1packingObjectДаОбъект Packing. Содержит графики срока комплектации и время на комплектацию.
2.5.1.1.1.1scheduleObjectДаОбъект содержащий информацию о графиках
2.5.1.1.1.1.1weekDayRulesObjectДаОбъект содержит информацию о графике отдельного рабочего дня
2.5.1.1.1.1.1.1mondayArrayДаСодержит информацию о графике комплектации каждого Понедельника
2.5.1.1.1.1.1.2tuesdayArrayДаСодержит информацию о графике комплектации каждого Вторника
2.5.1.1.1.1.1.3wednesdayArrayДаСодержит информацию о графике комплектации каждой Среды
2.5.1.1.1.1.1.4thursdayArrayДаСодержит информацию о графике комплектации каждого Четверга
2.5.1.1.1.1.1.5fridayArrayДаСодержит информацию о графике комплектации каждой Пятницы
2.5.1.1.1.1.1.6saturdayArrayДаСодержит информацию о графике комплектации каждой Субботы
2.5.1.1.1.1.1.7sundayArrayДаСодержит информацию о графике комплектации каждого Воскресенья
2.5.1.1.1.1.1.8closedArrayНетСодержит информацию о нерабочих, праздничных, выходных днях
2.5.1.1.1.2durationHoursIntegerДаСодержит информацию о сроках комплектации заказа. Значение должно быть больше 0.
2.5.1.1.2handoverObjectДаОбъект handover. Содержит информацию о графике выдачи товара магазина, способах оплаты, сроках резерва
2.5.1.1.2.1scheduleObjectДаОбъект содержащий информацию о графиках
2.5.1.1.2.1.1weekDayRulesObjectДаОбъект содержит информацию о графике отдельного рабочего дня
2.5.1.1.2.1.1.1mondayArrayДаСодержит информацию о графике работы каждого Понедельника
2.5.1.1.2.1.1.2tuesdayArrayДаСодержит информацию о графике работы каждого Вторника
2.5.1.1.2.1.1.3wednesdayArrayДаСодержит информацию о графике работы каждой Среды
2.5.1.1.2.1.1.4thursdayArrayДаСодержит информацию о графике работы каждого Четверга
2.5.1.1.2.1.1.5fridayArrayДаСодержит информацию о графике работы каждой Пятницы
2.5.1.1.2.1.1.6saturdayArrayДаСодержит информацию о графике работы каждой Субботы
2.5.1.1.2.1.1.7sundayArrayДаСодержит информацию о графике работы каждого Воскресенья
2.5.1.1.2.2reservationPeriodDaysIntegerДаКоличество дней резерва. Значение должно быть больше 0.
2.5.1.1.2.3paymentOptionsObjectДаИнформация о способах оплаты. Обязательно должен быть указан один из способов оплаты.
2.5.1.1.2.3.1prepayOnlineBooleanДаПредоплата. 
2.5.1.1.2.3.2cashBooleanДаНаличные
2.5.1.1.2.3.3bankCardsBooleanДаОплата картой в магазине
2.6isActiveBooleanДаЕсли true = ассортимент для данного магазина отображается на платформе гудс. Если false - ассортимент на торговой точке не отображается.

Важно!

  1. График работы не может быть на всю неделю [0, 0], в этом случае остатки не будут загружаться в ЛКМ.
  2. durationHours и reservationPeriodDays не должны быть равны нулю. В этом случае остатки не будут загружаться в ЛКМ.

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


Операции магазина

Работа магазина описывается в терминах операций. Любой магазин мерчанта, работающий по click&collect  должен поддерживать 2 операции:

  • комплектация заказа - packing
  • выдача заказа покупателю - handover

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


График операций

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

  1. С помощью правил работы в определенные дни недели
  2. С помощью явного указания интервалов работы в конкретные даты

График работы обязательно должен быть описан одним из данных способов.


Логика работы комплектации и резервирования заказа.

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 - пример файла для скачивания


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
        }
    ]
}