Skip to main content

Crear pase

Headers

Apple Wallet — Event Ticket con QR

Campos de pass_data (Apple)

Estructura de campos (Apple)

Cada campo en header_fields, primary_fields, secondary_fields, auxiliary_fields y back_fields tiene esta estructura: changeMessage y notificaciones push: Para que el usuario reciba una notificación visible en la pantalla de bloqueo al actualizar un pase, el campo debe incluir changeMessage. Sin este atributo, el pase se actualiza silenciosamente.
Cuando el valor cambia via PUT, iOS muestra un banner:
Pase actualizado — Partido actualizado: Dom 2:30pm · Cancha 5 vs García/López | icon_base64 | string | Icon PNG @1x (29×29 pt) | | icon_2x_base64 | string | Icon PNG @2x (58×58 px) — recomendado | | icon_3x_base64 | string | Icon PNG @3x (87×87 px) | | logo_base64 | string | Logo PNG @1x (160×50 pt) | | logo_2x_base64 | string | Logo PNG @2x (320×100 px) — recomendado | | logo_3x_base64 | string | Logo PNG @3x (480×150 px) | | strip_base64 | string | Strip PNG @1x (375×144 pt) — banda de acento con info dinámica | | strip_2x_base64 | string | Strip PNG @2x (750×288 px) — recomendado | | strip_3x_base64 | string | Strip PNG @3x (1125×432 px) | | thumbnail_base64 | string | Thumbnail PNG (90×90 pt / 180×180 @2x) | | relevant_date | string | Fecha W3C para relevancia | | expiration_date | string | Fecha de expiración W3C | | locations | array | [{"latitude": 19.43, "longitude": -99.13, "relevantText": "Cerca del evento"}] |

Crear pase desde template

Si tienes un template configurado, solo necesitas template_id + los overrides:
El pass_type y style se infieren del template. Los campos del template se mergean con los overrides (el request gana).

Respuesta (202)

Consulta GET /v1/jobs/{job_id} para obtener el resultado:

Descarga directa

Devuelve el .pkpass con Content-Type: application/vnd.apple.pkpass.

Google Wallet

Paso 1: Crear clase (una por torneo/evento)

Cada torneo o evento necesita su propia clase. Los datos de la clase (nombre, sede, fechas) se muestran en el frente de todos los pases de esa clase.
Respuesta (201):

Actualizar clase

Si cambia la sede, fechas o nombre del torneo:
Todos los pases de esa clase se actualizan automáticamente.

Consultar clase

Paso 2: Crear pase (uno por jugador)

El eventName, venue y dateTime del frente vienen de la clase (no del objeto). Resultado:
Importante: cada object_id debe ser único. Si se reutiliza un ID ya creado, Google rechaza el save link.

Actualizar pase

Actualiza un pase existente. Mergea los campos nuevos sobre los existentes, re-firma el .pkpass, y envía push notification a dispositivos registrados.

Apple Wallet

Acepta campos en camelCase (auxiliaryFields) o snake_case (auxiliary_fields). Incluir changeMessage para notificación visible en lock screen.

Google Wallet

Incluir notify_message para enviar notificación visible al usuario.

Respuesta (202)


Estado del pase

Consulta si un pase está instalado en el dispositivo del usuario.

Respuesta (200) — Apple Wallet

Apple notifica a Axelo cuando un dispositivo agrega o elimina el pase. installed_devices muestra cuántos dispositivos lo tienen activo.

Respuesta (200) — Google Wallet

Google no envía callbacks en tiempo real cuando un usuario borra el pase — este endpoint consulta el estado directamente a la API de Google.

Webhook de device registration (Apple)

Axelo puede notificar a tu backend cuando un usuario instala o elimina un pase de Apple Wallet.

Configuración

En el dashboard admin → detalle del tenant → sección “Wallet Webhook”, configura la URL destino. O via API:

Payload que recibe tu webhook

El webhook se dispara de forma asíncrona — no bloquea la respuesta a Apple. Si tu endpoint falla, Axelo loguea el error pero no reintenta. Solo aplica a Apple Wallet. Google Wallet no notifica cuando un usuario elimina un pase — usa GET /v1/passes/{id}/status para consultar bajo demanda.

Guía de diseño

Colores del sistema

Color de acento por torneo

El labelColor en Apple y hexBackgroundColor en Google se usan para el acento del torneo:

Strip image (Apple)

La strip.png es la banda de acento que muestra la hora del próximo partido. Se genera dinámicamente con el accent del torneo y se re-envía en cada update:
  • Dimensiones: 375×144 @1x, 750×288 @2x, 1125×432 @3x
  • Contenido: fondo con gradient del accent + hora del partido + pista + rival
  • Enviar como: strip_base64 (o strip_2x_base64 para retina)
  • Regenerar: cada vez que cambia el próximo partido

Catálogo de push notifications

Para Apple, incluir changeMessage en los campos dinámicos. Para Google, incluir notify_message en el PUT.

Errores