Objetivo
Suscríbete o cancela la suscripción a los anuncios de release del changelog con una sola llamada al API. El botón Subscribe en /<locale>/changelog (Astro) usa estos endpoints internamente; el mismo flujo está disponible para cualquier cliente autenticado por cookie.
Ambos endpoints requieren autenticación por cookie (app_token). No aceptan API key (es una preferencia por usuario, no una superficie M2M).
Prerrequisitos
- Sesión de usuario activa (cookie
app_tokenválida) — primero inicia sesión vía/login. - La cookie
app_csrfse establece en el mismo login y se lee del lado cliente para el headerX-CSRF-Token.
Pasos
1. Consulta tu estado de suscripción actual
curl -s -X GET 'https://api.example.com/v1/users/me/changelog/subscribe-status' \
-H 'Cookie: app_token=<tu-token>'Respuesta (200):
{
"data": {
"type": "changelog_subscription_status",
"id": "<user_id>",
"attributes": {
"subscribed": true,
"channels": {
"in_app": true,
"email": true
}
}
}
}subscribed es true solo cuando ambos canales están activos. El acoplamiento de los dos canales es intencional — el botón Subscribe es un control agregado todo-o-nada. Si necesitás control canal-por-canal (e.g. solo in-app, sin email), usá la API granular de preferencias de notificación.
2. Activá o desactivá la suscripción
curl -s -X POST 'https://api.example.com/v1/users/me/changelog/subscribe' \
-H 'Cookie: app_token=<tu-token>; app_csrf=<tu-csrf>' \
-H 'X-CSRF-Token: <tu-csrf>' \
-H 'Content-Type: application/json' \
-d '{"enabled": true}'enabled: trueactiva AMBAS preferenciaschangelog.release_published.in_appYchangelog.digest_monthly.email.enabled: falsedesactiva ambas.- La respuesta tiene la misma forma que el endpoint
subscribe-status, consubscribedreflejando el nuevo estado.
El toggle es idempotente — llamarlo con el mismo valor que el estado actual es no-op (no se emite evento de auditoría cuando nada cambia).
Errores
| Status | Código | Causa |
|---|---|---|
| 401 | unauthorized | Cookie faltante o inválida. |
| 401 | csrf_missing / csrf_mismatch | POST sin header X-CSRF-Token válido. |
| 422 | invalid_enabled | Body sin enabled, o valor no booleano. |