Boletos QR
Cada reserva confirmada genera un boleto con un QR firmado. La firma
(HMAC-SHA256 con BOLETO_HMAC_SECRET) permite validar el QR sin tocar la
DB y detectar códigos alterados.
Emisión
Sección titulada «Emisión»- Automática:
POST /reservas/{id}/confirmaremite el boleto y encola el correoqr_emitido. - Manual (reemisión puntual):
curl -X POST http://localhost:5000/boletos/ \ -H 'content-type: application/json' -H "authorization: Bearer $TOKEN" \ -d '{"reservaId":"<uuid>"}'Si la reserva ya tiene boleto → 409 "La reserva ya tiene boleto".
Consulta
Sección titulada «Consulta»GET /boletos/?reservaId=<uuid> # boleto de una reservaGET /boletos/{id} # por idVerificar un QR
Sección titulada «Verificar un QR»Pensado para escáners y terminales; responde siempre 200 y decide
con valido + motivo:
curl -X POST http://localhost:5000/boletos/verificar \ -H 'content-type: application/json' -H "authorization: Bearer $TOKEN" \ -d '{"codigo":"a1b2c3…"}'{ "valido": true, "boletoId": "…", "reservaId": "…", "revocado": false }motivo |
Significado |
|---|---|
codigo_invalido |
Longitud/formato inválido |
no_encontrado |
No existe ningún boleto con ese código |
firma_invalida |
El código existe pero la firma HMAC no coincide (alterado) |
revocado |
Boleto revocado por operación |
Descarga PNG / PDF
Sección titulada «Descarga PNG / PDF»curl -H "authorization: Bearer $TOKEN" \ "http://localhost:5000/boletos/{id}/descarga?formato=png" -o boleto.png# formato: png (default) | pdf- PNG arranca con magic bytes
89 50 4E 47; PDF con%PDF-. - Cada descarga queda registrada; el historial:
GET /boletos/{id}/descargasRevocar
Sección titulada «Revocar»curl -X POST http://localhost:5000/boletos/{id}/revocar \ -H 'content-type: application/json' -H "authorization: Bearer $TOKEN" \ -d '{"motivo":"Boleto reportado perdido"}'- El QR deja de verificar:
valido: false, motivo: "revocado". - Cancelar la reserva también revoca su boleto (
revocadoAtqueda en el historial).
Siguiente paso
Sección titulada «Siguiente paso»→ Check-in