Cómo Commet versiona su API y webhooks para que tu integración nunca se rompa inesperadamente.
Commet usa versionado de API basado en fechas, inspirado en Stripe. Cada breaking change queda detrás de una versión, y tu integración se queda en la versión fijada hasta que decidas actualizarla.
Las versiones usan la fecha en la que se lanzaron: YYYY-MM-DD (por ejemplo 2026-05-01).
La versión actual es 2026-07-31.
Cada request a la API y cada entrega de webhook resuelve una versión con esta prioridad:
| Prioridad | Origen | Descripción |
|---|---|---|
| 1 | Header Commet-Version | Override por request (solo API) |
| 2 | Pin del endpoint | Versión por endpoint de webhook (solo webhooks) |
| 3 | Pin de la organización | Definido al crear la org o en el último upgrade |
| 4 | Versión actual | Última versión, usada como fallback |
Para requests a la API, envía el header Commet-Version para sobrescribir el pin de tu organización en ese request:
curl https://commet.co/api/v1/subscriptions \
-H "x-api-key: $COMMET_API_KEY" \
-H "Commet-Version: 2026-07-31"Para webhooks, cada endpoint puede tener su propia versión fijada. Si no se define, usa el pin de la organización.
Una versión nueva sale cada vez que un breaking change la necesita — a veces salen varias en el mismo mes, a veces pasan meses sin ninguna. Esto nunca afecta a una integración en marcha: tu organización y tus endpoints de webhook siguen en su versión fijada sin importar cuántas versiones salgan después. Un breaking change es cualquier cosa que:
Los cambios no breaking se publican continuamente y nunca requieren subir de versión:
Cuando se lanza una nueva versión:
/api/* (anteriores a /api/v1) devuelven los headers Deprecation: true y Sunset, con un Link a su sucesora en /api/v1 — los endpoints versionados nunca llevan estos headersCommet-Version antes de aplicar el cambioPara webhooks, puedes fijar un endpoint nuevo a la última versión y mantener el viejo activo. Ambos reciben los eventos transformados a su respectiva versión, lo que te permite validar en producción antes de hacer el switch.
Cada release de SDK sale fijada a la versión de API contra la que fue compilada y envía el header Commet-Version automáticamente. Esto previene el clásico bug en que actualizar el SDK cambia silenciosamente las formas de los responses.
Además, todos los SDKs permiten fijar otra versión al construir el cliente — sin necesidad de actualizar el SDK:
| SDK | Opción de pin |
|---|---|
| Node.js | apiVersion en las opciones del constructor |
| Python | api_version en el constructor |
| Go | Opción de cliente commet.WithApiVersion(...) |
| Java | Commet.builder().apiVersion(...) |
| PHP | Argumento apiVersion del constructor |
Los payloads de webhook incluyen un campo apiVersion en el envelope, así siempre sabes qué versión modeló los datos:
{
"event": "subscription.activated",
"timestamp": "2026-05-12T14:30:00.000Z",
"organizationId": "org_abc123",
"mode": "live",
"apiVersion": "2026-07-31",
"data": { ... }
}Cada endpoint de webhook se puede fijar de forma independiente. Para migrar, crea un segundo endpoint fijado a la nueva versión — ambos reciben todos los eventos, cada uno transformado a su propia versión. Una vez que el nuevo endpoint esté funcionando, elimina el viejo.
¿Cómo está esta guía?