Skip to content

Импорт локаций

XML

Не используйте этот метод, если используете способ загрузки товаров через YML/XML.

Прежде, чем загружать товары, необходимо загрузить в базу данных актуальный перечень локаций. Загружайте только те локации, которые используются в товарах (и промежуточные элементы дерева локаций). Нет смысла загружать конечные элементы дерева локаций (листья), в которых нет товаров.

Описание метода

POST https://api.rees46.ru/import/locations

Необходимо указать заголовок:

Content-Type: application/json

Данные отправляются в виде JSON-строки, которая является телом запроса.

Жизненный цикл запроса

  1. Сервер API REES46 принимает запрос.
  2. Выполняет первичную проверку доступа (shop_id, shop_secret). Если shop_id и shop_secret не соответствуют существующим, сервер возвращает ошибку 400 Bad request.
  3. Отправляет задачу в фоновую обработку.
  4. Возвращает код 204 No body.
  5. В случае успешной обработки фоновой задачи ничего не происходит. Задача обрабатывается быстро, поэтому спустя минуту уже можно загружать информацию о товарах.
  6. В случае ошибочной обработки фоновой задачи приходит уведомление на адрес электронной почты сотрудников, подписанных на технические уведомления.

Структура данных

json
{
    "shop_id":      "...",
    "shop_secret":  "...",
    "locations":    [{location}, {location}, ...]
}

Структура информации о локации:

json
{
    "id":     "...", // String. Required
    "name":   "...", // String. Required
    "parent": "...", // String || Null. Required
    "type":   "...", // String. Optional
    "group":  "...", // String or Array of string. Optional
    "discount_percent":  "...", // Optional
    "search_level_up": "..." // Integer. Optional
}

Обратите внимание

Как считается discount_percent при отсутствии значения (или самого параметра):

  • На корневом уровне товара:

    • Если параметр указан — используется напрямую.
    • Если параметр не указан, но есть oldprice и price — значение вычисляется как целая часть от ((oldprice - price) / oldprice) * 100 (путём округления вниз до целого).
  • На уровне локаций:

    • Работает по тем же правилам, что и на корневом уровне.
    • Если в локации не указаны oldprice или price, для расчёта используются значения из корня товара.

Вложенность элементов не ограничена.

Пример тела запроса

json
{
    "shop_id":      "eehj3eu84299kg5ghw5a6743r8",  
    "shop_secret":  "pmd5362597thrgq8k256ep01t0",  
    "locations":    [
        {
            "id":           "1",
            "name":         "Москва",
            "parent":       null,
            "type":         "city",
            "group":        "ДенежныеГорода",
            "discount_percent": 5
        },
        {
            "id":           "145",
            "name":         "Пункт выдачи на Арбате",
            "parent":       "1",
            "type":         "store",
            "search_level_up": 1
        },
        {
            "id":           "2",
            "name":         "Санкт-Петербург",
            "parent":       null,
            "type":         "city",
            "group":        "ДенежныеГорода",
            "discount_percent": 5
        },
        {
            "id":           "3",
            "name":         "Приморский край",
            "parent":       "1",
            "type":         "state",
            "search_level_up": 0
        },
        {
            "id":           "4",
            "name":         "Владивосток",
            "parent":       "3",
            "type":         "city",
            "group":        "ДальнийВосток",
            "discount_percent": 5,
            "search_level_up": 1
        }
    ]
}