Skip to content

Ошибки ​

Формат ​

json
{
  "error": {
    "code": "limit_exceeded",
    "message": "not enough tickets in some zones",
    "details": {
      "zones": [{ "id": 11, "requested": 4, "available": 1 }]
    }
  },
  "request_id": "9f2c4e7a1b3d5f60718293a4b5c6d7e8"
}

Обрабатывайте ошибки по error.code. Текст message предназначен для логов и может меняться.

Коды ошибок ​

Запрос и авторизация ​

HTTPcodeКогда
400invalid_jsonТело запроса — не валидный JSON или поля неверного типа
400validation_errorНе передан partner_order_id при поиске заказа; неверный формат дат или период в отчёте
400invalid_paginationlimit или page не положительное целое
400invalid_event_id, invalid_event_item_idID в пути не положительное целое
400invalid_category_id, invalid_child_map_idПараметр запроса не положительное целое
401unauthorizedНеверный, отключённый или истёкший ключ
403forbiddenIP-адрес не входит в whitelist ключа
404not_foundМероприятие, сеанс, заказ или путь не найдены

Бизнес-логика заказов ​

HTTPcodeКогдаdetails
422validation_errorНеверный состав заказа или возвратазависит от причины
422event_item_not_availableСеанс не существует или не продаётся—
409seat_unavailableОдно или несколько мест заняты или недоступныseats: ID мест
409limit_exceededНе хватает билетов в зоне, категории или сеансе; превышен лимит на заказсм. ниже
409order_expiredБронь истекла или до её окончания меньше 10 секунд—
409order_not_heldОперация недоступна в текущем статусе заказаstatus: текущий статус
409refund_not_allowedСеанс начался, билеты использованы или возвращать нечегоticket_ids: использованные билеты

Сервер ​

HTTPcodeКогда
500internal_errorВнутренняя ошибка. Повторите запрос позже; если ошибка сохраняется, напишите в поддержку с request_id
503db_unavailableТолько /ready: база данных недоступна

Детали ошибок ​

seat_unavailable ​

json
{ "details": { "seats": [101, 102] } }

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

limit_exceeded ​

В зависимости от причины details содержит одно из полей:

ПолеПричина
limit_per_orderПревышен лимит билетов на один заказ: 50 или лимит сеанса
zonesНе хватает билетов в зонах: массив { id, requested, available }
pricesНе хватает билетов в ценовых категориях: массив { id, requested, available }
requested, availableНе хватает билетов в общем лимите сеанса
json
{ "details": { "limit_per_order": 10 } }
json
{ "details": { "prices": [{ "id": 4179, "requested": 5, "available": 2 }] } }

validation_error при создании заказа ​

messageПричина
partner_order_id is requiredНе передан partner_order_id
partner_order_id must be at most 255 charactersСлишком длинный partner_order_id
event_item_id is requiredНе передан event_item_id
customer.email is invalidНекорректный email покупателя
customer fields must be at most 255 charactersСлишком длинное поле покупателя
seats must contain positive seat idsВ seats есть 0
seat N is listed twiceМесто указано дважды
zones must contain zone_id and a positive quantityНеверный элемент zones
prices must contain price_id and a positive quantityНеверный элемент prices
order must contain at least one seat, zone or priceПустой заказ
this event item has no seating plan, order tickets by pricesДля сеанса type = 6 переданы seats или zones
prices can only be ordered for event items without seats, use seats or zonesДля сеанса со схемой переданы prices
this price category is sold by whole rows onlyКатегория продаётся целым рядом. В details.required_seats — все места ряда

order_not_held ​

json
{ "details": { "status": "expired" } }

Текущий статус заказа, из-за которого операция невозможна.

Рекомендации по повторам ​

ОшибкаПовторять?
Сетевая ошибка, таймаут, 500, 503Да, с паузой. Для POST /orders повтор безопасен благодаря partner_order_id
401, 403Нет — проверьте ключ и IP
400, 422Нет — исправьте запрос
409 seat_unavailable, limit_exceededНет — обновите схему и предложите покупателю другие билеты (с новым partner_order_id)
409 order_expiredНет — создайте новый заказ