Cambios de la API y versionado

Política de versionado y cambios de la API v1.

Política de versionado

  • La API pública está en /v1. Dentro de una versión solo se agregan cosas: campos opcionales nuevos, endpoints nuevos y valores nuevos en enumeraciones de respuesta. Tu integración no se rompe.
  • Un cambio incompatible iría en una versión nueva (/v2), con aviso previo y un periodo en que ambas conviven.
  • Ignora los campos que no conozcas en las respuestas, y trata los errCode desconocidos según su rango: 1xxx acceso, 2xxx validación, 3xxx límites, 4xxx recursos, 5xxx credenciales y 9xxx plataforma.

Cambios

0.13.0 — octubre de 2026

  • La descarga de una exportación (downloadUrl) puede redirigir (302) a un enlace temporal del almacenamiento de archivos. Sigue la redirección (en curl, -L).
  • La multimedia puede servirse desde un CDN: usa siempre la url que devuelve la API, sin armarla a mano.

0.12.0 — octubre de 2026

  • Página de estado pública (/estado, /en/status y status.<dominio>) con el estado de cada componente, 90 días de historial e incidentes. Datos en GET /panel/public/status.
  • Sitio público en inglés (/en, /en/pricing, /en/contact) con sitemap.xml, robots.txt y metadatos por idioma.

0.11.0 — octubre de 2026

  • Panel: passkeys (WebAuthn) para iniciar sesión sin contraseña, responder el 2FA y reautenticarse. Ver Passkeys.
  • Nuevo errCode 1115: la passkey no se pudo verificar.

0.10.0 — octubre de 2026

  • Pruebas A/B (/v1/ab-tests): de 2 a 4 variantes a una muestra de la audiencia; el ganador por apertura o clics se envía solo al resto. Ver Pruebas A/B.
  • Las notificaciones incluyen abTest: { id, variant } cuando son una variante o el envío del ganador.

0.9.0 — octubre de 2026

  • Exportaciones CSV (/v1/exports): dispositivos, entregas y estadísticas por hora, con enlace firmado de 24 horas. Ver Exportaciones CSV.
  • Límites de marketing por app: máximo por dispositivo y día, y horas de silencio en la hora local. Las omitidas aparecen como skipped (FREQUENCY_CAP) y las aplazadas en stats.deferred.

0.8.0 — octubre de 2026

  • Dispositivos: se acepta el Installation ID de Firebase (FID) como token FCM; PushHub lo envía en message.fid. Ver Installation ID de Firebase.
  • Notificaciones data_only: el título y el texto viajan en data, en las claves que lee cada framework.
  • Los dispositivos con un SDK oficial ya no reciben deepLink ni imageUrl duplicados como claves planas (los SDK los leen de _ph).
  • Botones en iOS: se marca mutable-content para que la extensión del SDK los registre.

0.7.0 — octubre de 2026 (primera versión pública)

  • Dispositivos: registro, identificación de usuario, tags, topics y emparejamiento de dispositivos de prueba.
  • Notificaciones: destinos por dispositivo, usuario, topic, segmento, filtros o todos; contenido por idioma con variables y plantillas; datos, enlaces profundos, botones y sonidos; validación sin enviar; idempotencia.
  • Programación a hora fija y en la hora local de cada dispositivo; campañas recurrentes.
  • Multimedia: imágenes, GIF, audio y video (/v1/media).
  • Eventos de la app (/v1/events) y analítica; webhooks firmados.
  • Consola de pruebas síncrona (/v1/notifications/test).
  • Planes y cuotas (3001, 3002, 3004, 3011, 3012).
  • Moderación de contenido: un envío que enlaza a un dominio bloqueado responde 2002 con errors.content = ["blocked"].