Ir al contenido

GET /v1/partner/redemptions

Devuelve las redenciones de tus boletos (todas tus experiencias), ordenadas por redeemedAt ascendente y posteriores a since. Es el complemento del webhook: aunque lo tengas, usa este pull para reconciliar.

Método y rutaGET /v1/partner/redemptions?since=<iso>&limit=<n>
AuthAuthorization: Bearer agk_…
Rate limit60 req/min por llave
ParámetroTipoObligatorioLímiteDescripción
sincestring (ISO 8601)Nodebe incluir zona (Z o ±hh:mm)Cursor exclusivo: solo redenciones con redeemedAt > since. Omitido = desde el inicio.
limitintegerNo1 – 500, default 100Tamaño de página.

since sin zona horaria (por ejemplo 2026-08-29T00:00:00) responde 400.

{
"items": [
{
"externalRef": "TG-1001",
"experienceId": "22222222-2222-4222-8222-222222222222",
"redeemedAt": "2026-08-29T10:00:01.123456+00:00"
}
],
"nextSince": null
}
CampoTipoDescripción
items[].externalRefstring | nullTu ID del boleto. null si el boleto se cargó sin externalRef.
items[].experienceIdstring (UUID)
items[].redeemedAtstring (ISO 8601)Instante de la redención. Es el valor que usas como cursor.
nextSincestring (ISO 8601) | nullCursor para la siguiente página; null si no hay más por ahora.

nextSince solo viene cuando la página llegó llena (items.length == limit) y entonces es el redeemedAt del último item. Una página parcial significa que el stream está drenado.

  1. Llama sin since (o con tu último cursor guardado).
  2. Procesa items (idempotentemente: un boleto puede repetirse si su redeemedAt coincide exactamente con el cursor de otra página).
  3. Si nextSince no es null, repite con ?since=<nextSince>.
  4. Si es null, guarda el redeemedAt del último item procesado y vuelve a llamar en tu siguiente ciclo de polling (por ejemplo, cada 5 minutos durante el evento).
Ventana de terminal
SINCE=""
while :; do
RES=$(curl -s "https://gate-partners.alpadevs.com/v1/partner/redemptions?limit=500${SINCE:+&since=$SINCE}" \
-H "Authorization: Bearer $GATE_KEY")
echo "$RES" | jq -c '.items[]'
NEXT=$(echo "$RES" | jq -r '.nextSince')
[ "$NEXT" = "null" ] && break
SINCE=$(printf '%s' "$NEXT" | jq -sRr @uri)
done
HTTPcodeCuándo
400VALIDATION_FAILEDsince no es ISO 8601 con zona; limit fuera de 1..500.
401KEY_INVALIDLlave inválida.
429RATE_LIMITEDMás de 60 requests por minuto.
500INTERNALError nuestro; reintenta con backoff.
Ventana de terminal
curl -s "https://gate-partners.alpadevs.com/v1/partner/redemptions?since=2026-08-29T00:00:00Z&limit=100" \
-H "Authorization: Bearer $GATE_KEY"
{
"items": [
{
"externalRef": "TG-1001",
"experienceId": "22222222-2222-4222-8222-222222222222",
"redeemedAt": "2026-08-29T10:00:01.123456+00:00"
}
],
"nextSince": null
}