Эндпоинт прямой продажи
Эндпоинт прямой продажи помечает места проданными одним атомарным вызовом, без шага блокировки, который требуется в стандартном сценарии продажи. Используйте его для неинтерактивных сценариев, таких как продажи из бэк-офиса, комплиментарные билеты и импорт из внешних POS-систем.
Когда какой использовать
- Сессии бронирования — интерактивная оплата, управляемая из браузера. Страница открывает сессию, удерживает и освобождает места по кликам покупателя, а ваш сервер подтверждает после оплаты.
- Стандартный сценарий продажи — интерактивная оплата, при которой ваш сервер удерживает места через
lockво время оплаты и продаёт их черезsaleпосле подтверждения, храня корзину покупателя на своей стороне. - Прямая продажа — неинтерактивные сценарии, в которых нет клиента, удерживающего места: продажи из бэк-офиса, комплиментарные билеты, ручной импорт. Один вызов, без состояния удержания.
Эндпоинт
POST /api/private/v2.0/booking/directsale?eventId={eventId}
| Parameter | In | Required | Описание |
|---|---|---|---|
eventId |
query | yes | UUID события, содержащего продаваемые места. |
Тело запроса
Структура запроса совпадает со стандартным эндпоинтом продажи: список мест и/или записей входных зон, а также необязательные id сессии и тип удержания.
{
"sessionId": "abc123",
"seats": [{ "id": 42 }, { "id": 43 }],
"groupOfSeats": [{ "id": 7, "capacity": 4 }],
"holdType": "DIRECT"
}
Поле holdType необязательно и носит информационный характер только в строке аудита — прямая продажа не проходит через состояние удержания.
Ответ
| Status | Body | Значение |
|---|---|---|
| 200 | true |
Все места и входная вместимость переведены в SOLD. |
| 200 | false |
Хотя бы одно место не в состоянии ACTIVE или хотя бы одна входная вместимость ниже запрошенного объёма. Без изменений. |
| 402 | Организация вызывающего отключена для booking. | |
| 403 | У вызывающего нет доступа к событию. |
Операция атомарна в пределах запроса — частичное применение отклоняется. Если хотя бы одно место не проходит, весь запрос отклоняется.
Пример
curl -X POST \
"https://api.example.com/api/private/v2.0/booking/directsale?eventId=8d4f0f3a-2b8e-4d2a-9c8e-1d3a2b8e4d2a" \
-H "Authorization: Bearer ${TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"sessionId": "abc123",
"seats": [{"id": 42}, {"id": 43}]
}'
# 200
# true
Ограничения
- Места должны быть в состоянии ACTIVE. Места в состоянии LOCKED, SOLD или BLOCKED отклоняются (ответ
false, без изменения состояния). - Входная вместимость списывается непосредственно из активного счётчика, без промежуточного заблокированного резерва.
- Каждый успешный переход записывает запись аудита, показывающую, что исходным состоянием было ACTIVE, поэтому аналитика и потребители ниже по потоку видят переход корректно.
- Стандартный эндпоинт продажи и его семантика не меняются. Прямая продажа подключается по выбору.
Авторизация
Применяется та же проверка доступа, что и для стандартного эндпоинта продажи. Организация вызывающего должна иметь доступ к событию, и организация должна быть включена для booking.
См. также
- API Reference — интерактивный обозреватель API и полный справочник.