Ir al contenido

POST /v1/partner/tickets/void

Marca un boleto como void. Es idempotente: anular dos veces responde already_void. Si el boleto ya fue redimido en puerta, la anulación se rechaza: la redención no se pisa.

Método y rutaPOST /v1/partner/tickets/void
AuthAuthorization: Bearer agk_…
Content-Typeapplication/json
Rate limit60 req/min por llave
CampoTipoObligatorioLímiteDescripción
experienceIdstring (UUID)Experiencia enlazada a tu proveedor.
externalRefstring1 – 200 charsTu ID del boleto (el que enviaste en el bulk).

Solo se puede anular por externalRef: un boleto cargado sin externalRef se anula reenviándolo al bulk con status: "void".

statusSignificado
voidedAnulado ahora. La puerta responderá VOID.
already_voidYa estaba anulado. No cambia nada.
{ "status": "voided" }
HTTPcodeCuándo
400VALIDATION_FAILEDBody fuera de schema.
401KEY_INVALIDLlave inválida.
403EXPERIENCE_NOT_LINKEDLa experiencia no está enlazada a tu proveedor.
404TICKET_NOT_FOUNDNo existe ese externalRef en esa experiencia (para tu proveedor).
409REDEEMED_CONFLICTEl boleto ya entró por la puerta; no se anula desde este endpoint.
429RATE_LIMITEDMás de 60 requests por minuto.
500INTERNALError nuestro; reintenta con backoff.
{ "error": { "code": "REDEEMED_CONFLICT", "message": "Ticket already redeemed" } }
Ventana de terminal
curl -s -X POST "https://gate-partners.alpadevs.com/v1/partner/tickets/void" \
-H "Authorization: Bearer $GATE_KEY" \
-H "Content-Type: application/json" \
-d '{ "experienceId": "22222222-2222-4222-8222-222222222222", "externalRef": "TG-1002" }'
{ "status": "voided" }

Segunda llamada idéntica:

{ "status": "already_void" }