Создание полигонов доставки

POST /v1/polygon/create

POST/v1/polygon/create

Полигон создаётся в статусе DRAFT. Статус обработки полигона витриной можно получить методом /polygon/list. Если в одном запросе передано несколько записей с одинаковыми name и location_id, при обработке учитывается последняя запись, предыдущие игнорируются.

Тело запроса

polygons
array
Список полигонов для создания. Максимальное количество полигонов в одном запросе — 200.
PolygonCreateItem
Показать свойства
PolygonCreateItem
name
string
Название полигона.
coordinates
array
Координаты полигона в формате GeoJSON (RFC 7946): массив линейных колец (number[][][]).
Линейное кольцо (LinearRing).
delivery_options
array
Список цен доставки по объёмному весу.
Опция доставки по диапазону объёмного веса.
Показать свойства
volume_weight_from
number
Объёмный вес (кг) от: длина (см) × ширина (см) × высота (см) * масса брутто (кг) / 300.
volume_weight_to
number
Объёмный вес (кг) до: длина (см) × ширина (см) × высота (см) * масса брутто (кг) / 300.
price
number
Цена доставки, значение умноженное на 100.
currency
string
Валюта цены.
Допустимые значения
RUBBYNKZTEURUSDCNY
vat
string
НДС.
Допустимые значения
VAT_0VAT_5VAT_7VAT_10VAT_22NO_VAT
provider_id
string
Идентификатор провайдера доставки (опционально).
Допустимые значения
CDEKBOXBERRY5POSTRUSSIAN_POSTYANDEXSBLMVIDEO
delivery_time_minutes
integer
Время доставки в минутах.
delivery_types
array
Типы доставки.
Параметры типа доставки для опции.
Показать свойства
delivery_type
string
required
Тип доставки.
Допустимые значения
COURIERPICKUP_POINT
weight_from
number
Масса брутто (кг) от.
weight_to
number
Масса брутто (кг) до.
time_slots
array
Доступные интервалы доставки по времени (опционально).
Интервал времени доставки в течение дня (локальное время).
Показать свойства
from
string
Начало интервала, формат «HH:MM» (например, «10:00»).
to
string
Конец интервала, формат «HH:MM» (например, «12:00»).
trunk_schedule
object
График магистральной перевозки по городу (опционально).
Показать свойства
working_schedule
array
Расписание по дням недели; в каждом элементе — day и shipping_cutoff для магистрали.
PolygonWorkingSchedule
Показать свойства
PolygonWorkingSchedule
day
string
День недели.
Допустимые значения
MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY
shipping_cutoff
string
Время, после которого отсчёт слота доставки начнётся со следующего дня магистральной перевозки. Формат «16:30». Если пустое — не применяется.
individual_schedule
array
Индивидуальное расписание на даты; в каждом элементе — date, shipping_cutoff для магистрали, is_works.
PolygonIndividualSchedule
Показать свойства
PolygonIndividualSchedule
date
string
Дата, формат «YYYY-MM-DD».
shipping_cutoff
string
Время, после которого отсчёт слота доставки начнётся со следующего дня магистральной перевозки. Формат «16:30». Если пустое — не применяется.
is_works
boolean
Признак работы в дату.
location_id
string
Идентификатор склада (опционально).

Успешный ответ

200A successful response.
application/json
object
polygons
array
Список созданных полигонов.
PolygonCreateResult
Показать свойства
PolygonCreateResult
polygon_id
string
Идентификатор созданного полигона.
name
string
Название полигона из запроса на создание.
status
string
Статус полигона.
Допустимые значения
DRAFTPENDINGACTIVEFAILEDDELETED
errors
array
Ошибки, из-за которых полигон не был создан или не прошёл модерацию. Коды только из PolygonCreateValidationErrorCode.
Ошибка валидации/бизнеса поля для scope «PolygonCreate». Допустимые field: polygons[].name, coordinates, delivery_options. Для бизнес-правил витрины: code=STOREFRONT_RULE_VIOLATION.
Показать свойства
field
string
required
Путь к полю. Ожидаемые: polygons[].name, coordinates, delivery_options.
code
string
required
Коды ошибок ручки (scope PolygonCreate). Допустимые field: polygons[].name, coordinates, delivery_options. - REQUIRED: Поле отсутствует или пустое, но обязательно - INVALID_TYPE: Неверный JSON-тип - INVALID_FORMAT: Общий сбой формата значения - INVALID_ENUM: Значение не из допустимого enum - CONDITIONALLY_REQUIRED: Поле обязательно при выполнении условия - INVALID_TIME: Не формат HH:MM - INVALID_TIME_RANGE: Некорректный диапазон времени (from >= to и т.п.) - INVALID_DATE: Не формат YYYY-MM-DD - INVALID_DATE_TIME: Не RFC3339 или отсутствует timezone - MIN_VALUE: Значение ниже минимума - MAX_VALUE: Значение выше максимума - NEGATIVE_VALUE: Отрицательное значение недопустимо - INVALID_RANGE: Некорректный диапазон (from > to) - TOO_MANY_ITEMS: Превышен maxItems / лимит пакета - INVALID_COORDINATES: Некорректная геометрия / GeoJSON - RING_TOO_SHORT: LinearRing короче 4 позиций - RING_NOT_CLOSED: Кольцо не замкнуто - POSITION_SIZE: Позиция не 2–3 числа - INVALID_LATITUDE: Широта вне диапазона - INVALID_LONGITUDE: Долгота вне диапазона - NOT_FOUND: Сущность не найдена (уточняется полем field) - CONFLICT: Конфликт состояния ресурса - STOREFRONT_RULE_VIOLATION: Запрос синтаксически валиден, но отклонён бизнес-правилом витрины (детали в message)
Допустимые значения
REQUIREDINVALID_TYPEINVALID_FORMATINVALID_ENUMCONDITIONALLY_REQUIREDINVALID_TIMEINVALID_TIME_RANGEINVALID_DATEINVALID_DATE_TIMEMIN_VALUEMAX_VALUENEGATIVE_VALUEINVALID_RANGETOO_MANY_ITEMSINVALID_COORDINATESRING_TOO_SHORTRING_NOT_CLOSEDPOSITION_SIZEINVALID_LATITUDEINVALID_LONGITUDENOT_FOUNDCONFLICTSTOREFRONT_RULE_VIOLATION
message
string
required
Текст для клиента. Для STOREFRONT_RULE_VIOLATION — описание правила.

Ошибки

400Некорректный запрос
application/json
object
error_type
string
ERROR_TYPE_BAD_REQUEST — HTTP 400 (request-level); ERROR_TYPE_UNAUTHORIZED — 401; ERROR_TYPE_RATE_LIMIT — 429; ERROR_TYPE_INTERNAL — 500. Поэлементные/бизнес-ошибки сущности — в HTTP 200 errors/failed, не здесь.
Допустимые значения
ERROR_TYPE_UNSPECIFIEDERROR_TYPE_UNAUTHORIZEDERROR_TYPE_RATE_LIMITERROR_TYPE_INTERNALERROR_TYPE_BAD_REQUEST
code
string
код ошибки
message
string
сообщение
details
object
401Ошибка авторизации
application/json
object
error_type
string
ERROR_TYPE_BAD_REQUEST — HTTP 400 (request-level); ERROR_TYPE_UNAUTHORIZED — 401; ERROR_TYPE_RATE_LIMIT — 429; ERROR_TYPE_INTERNAL — 500. Поэлементные/бизнес-ошибки сущности — в HTTP 200 errors/failed, не здесь.
Допустимые значения
ERROR_TYPE_UNSPECIFIEDERROR_TYPE_UNAUTHORIZEDERROR_TYPE_RATE_LIMITERROR_TYPE_INTERNALERROR_TYPE_BAD_REQUEST
code
string
код ошибки
message
string
сообщение
details
object
429Превышен лимит запросов
application/json
object
error_type
string
ERROR_TYPE_BAD_REQUEST — HTTP 400 (request-level); ERROR_TYPE_UNAUTHORIZED — 401; ERROR_TYPE_RATE_LIMIT — 429; ERROR_TYPE_INTERNAL — 500. Поэлементные/бизнес-ошибки сущности — в HTTP 200 errors/failed, не здесь.
Допустимые значения
ERROR_TYPE_UNSPECIFIEDERROR_TYPE_UNAUTHORIZEDERROR_TYPE_RATE_LIMITERROR_TYPE_INTERNALERROR_TYPE_BAD_REQUEST
code
string
код ошибки
message
string
сообщение
details
object
500Внутренняя ошибка сервера
application/json
object
error_type
string
ERROR_TYPE_BAD_REQUEST — HTTP 400 (request-level); ERROR_TYPE_UNAUTHORIZED — 401; ERROR_TYPE_RATE_LIMIT — 429; ERROR_TYPE_INTERNAL — 500. Поэлементные/бизнес-ошибки сущности — в HTTP 200 errors/failed, не здесь.
Допустимые значения
ERROR_TYPE_UNSPECIFIEDERROR_TYPE_UNAUTHORIZEDERROR_TYPE_RATE_LIMITERROR_TYPE_INTERNALERROR_TYPE_BAD_REQUEST
code
string
код ошибки
message
string
сообщение
details
object
defaultОшибка (неожиданная или прочие)
application/json
object
error_type
string
ERROR_TYPE_BAD_REQUEST — HTTP 400 (request-level); ERROR_TYPE_UNAUTHORIZED — 401; ERROR_TYPE_RATE_LIMIT — 429; ERROR_TYPE_INTERNAL — 500. Поэлементные/бизнес-ошибки сущности — в HTTP 200 errors/failed, не здесь.
Допустимые значения
ERROR_TYPE_UNSPECIFIEDERROR_TYPE_UNAUTHORIZEDERROR_TYPE_RATE_LIMITERROR_TYPE_INTERNALERROR_TYPE_BAD_REQUEST
code
string
код ошибки
message
string
сообщение
details
object
POST/v1/polygon/create
1curl https://api.omninet.ru/v1/polygon/create \2  --request POST \3  --header 'Content-Type: application/json' \4  --data '{5  "polygons": [6    {7      "name": "string",8      "coordinates": [9        [10          [11            100,12            013          ],14          [15            101,16            017          ],18          [19            101,20            121          ],22          [23            100,24            125          ],26          [27            100,28            029          ]30        ]31      ],32      "delivery_options": [33        {34          "volume_weight_from": 0,35          "volume_weight_to": 0,36          "price": 0,37          "currency": "RUB",38          "vat": "string",39          "provider_id": "string",40          "delivery_time_minutes": 0,41          "delivery_types": [42            {43              "delivery_type": "COURIER"44            }45          ],46          "weight_from": 0,47          "weight_to": 0,48          "time_slots": [49            {50              "from": "string",51              "to": "string"52            }53          ],54          "trunk_schedule": {55            "working_schedule": [56              {57                "day": "MONDAY",58                "shipping_cutoff": "string"59              }60            ],61            "individual_schedule": [62              {63                "date": "string",64                "shipping_cutoff": "string",65                "is_works": true66              }67            ]68          }69        }70      ],71      "location_id": "string"72    }73  ]74}'
{
  "polygons": [
    {
      "polygon_id": "string",
      "name": "string",
      "status": "string",
      "errors": [
        {
          "field": "coordinates",
          "code": "INVALID_COORDINATES",
          "message": "Некорректная геометрия полигона"
        }
      ]
    }
  ]
}

A successful response.