Endpoint de venta directa

El endpoint de venta directa marca asientos como vendidos en una única llamada atómica, sin el paso de bloqueo que requiere el flujo de venta estándar. Úsalo para flujos no interactivos como ventas de back-office, entradas de cortesía e importaciones desde sistemas POS externos.

Cuándo usar cada uno

  • Sesiones de reserva — pago interactivo dirigido desde el navegador. La página abre una sesión, retiene y libera asientos según hace clic el comprador, y tu servidor confirma tras el pago.
  • Flujo de venta estándar — pago interactivo en el que tu servidor retiene los asientos con lock durante el pago y los vende con sale tras la confirmación, manteniendo el carrito del comprador de su lado.
  • Venta directa — flujos no interactivos en los que no hay un cliente reteniendo los asientos: ventas de back-office, entradas de cortesía, importaciones manuales. Una llamada, sin estado de retención.

Endpoint

POST /api/private/v2.0/booking/directsale?eventId={eventId}
Parameter In Required Descripción
eventId query yes UUID del evento que contiene los asientos a vender.

Cuerpo de la solicitud

La forma de la solicitud coincide con la del endpoint de venta estándar: una lista de asientos o entradas de admisión general, más un id de sesión opcional y un tipo de retención.

{
  "sessionId": "abc123",
  "seats": [{ "id": 42 }, { "id": 43 }],
  "groupOfSeats": [{ "id": 7, "capacity": 4 }],
  "holdType": "DIRECT"
}

El campo holdType es opcional e informativo solo en la fila de auditoría: la venta directa no pasa por un estado de retención.

Respuesta

Status Body Significado
200 true Todos los asientos y la capacidad GA pasaron a SOLD.
200 false Al menos un asiento no está en estado ACTIVE, o al menos una capacidad GA es inferior a la solicitada. Sin cambios.
402 La organización del solicitante está deshabilitada para booking.
403 El solicitante no tiene acceso al evento.

La operación es atómica por solicitud: la aplicación parcial se rechaza. Si falla algún asiento, toda la solicitud falla.

Ejemplo

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

Restricciones

  • Los asientos deben estar en estado ACTIVE. Los asientos LOCKED, SOLD o BLOCKED se rechazan (respuesta false, sin cambio de estado).
  • La capacidad de admisión general se descuenta directamente del recuento activo, sin un bucket bloqueado intermedio.
  • Cada transición exitosa escribe una entrada de auditoría que indica que el estado de origen era ACTIVE, de modo que la analítica y los consumidores posteriores ven la transición correctamente.
  • El endpoint de venta estándar y su semántica no cambian. La venta directa es opcional.

Autorización

Se aplica la misma comprobación de acceso que en el endpoint de venta estándar. La organización del solicitante debe tener acceso al evento y la organización debe estar habilitada para booking.

Consulta también

  • API Reference — explorador interactivo de la API y referencia completa.

Escriba una función, un ajuste, un endpoint o un método del SDK.