Instalá la skill de migración de Commet v8 a v9 para que tu agente elimine asociaciones de Offers con precios, actualice las rutas de Markets y verifique las Offer Applications de suscripciones.
npx skills add commet-labs/skills --skill migrate-commet-v8-to-v9La API 2026-07-31 y los SDKs v9 completan el modelo introducido en v8: una Offer es el acuerdo económico reutilizable, independiente del plan y del canal que la distribuye.
Offers define condiciones; los canales definen la selección
Creá una Offer sin purpose ni planPriceIds:
const launchOffer = await commet.offers.create({
name: 'Secuencia de lanzamiento',
phases: [
{ type: 'free_trial', durationDays: 14 },
{ type: 'percentage', durationCycles: 3, percentage: 5000 },
{ type: 'percentage', durationCycles: null, percentage: 2000 },
],
})Después elegí cómo la reciben los customers:
| Canal | Comportamiento de selección |
|---|---|
| Introductory | Vinculá una Offer compatible a un precio base desde el Dashboard para selección automática de customers elegibles |
| Promotional | Enviá cualquier Offer compatible directamente mediante offerId |
| Promo Code | Referenciá una Offer con una sola fase percentage o amount_off desde un código ingresado por el customer |
Los trials son fases free_trial. Una Offer directa puede combinar un trial con varias fases pagas; un Promo Code sigue limitado intencionalmente a una sola fase de descuento.
Las condiciones aceptadas son explícitas
Las respuestas de suscripción exponen Offer Applications inmutables con sus fases aceptadas, fuente y objetivo bajo appliesTo. La respuesta puede representar objetivos plan_price, addon y credit_pack sin otro cambio breaking. Los canales públicos actuales de suscripción crean aplicaciones plan_price.
Editar o archivar la Offer del catálogo cambia únicamente las aplicaciones futuras.
Markets pasa a Sales
Markets deja de estar anidado bajo Pricing en la API y el SDK v9:
const argentina = await commet.markets.create({
name: 'Argentina',
countryCodes: ['AR'],
})La superficie REST ahora es:
POST /markets
GET /markets
GET /markets/{id}
PATCH /markets/{id}
DELETE /markets/{id}Los inputs de precios siguen usando marketGroupId al asignar valores específicos por Market. Solo cambiaron la ruta del recurso Market y el namespace del SDK.
CLI
El CLI v5 refleja los recursos nuevos del SDK v9:
commet offers create --name "Launch" --phases '[{"type":"percentage","percentage":2500,"durationCycles":3}]'
commet markets create --name "Argentina" --country-codes '["AR"]'
commet markets listEliminá --purpose y --plan-price-ids de los comandos de Offers. Reemplazá commet pricing *-market-group por commet markets create|list|get|update|delete.
Migración y compatibilidad
| v8 | v9 |
|---|---|
purpose en Offer | Canal de distribución |
planPriceIds en Offer | Ubicación Intro, offerId directo o Promo Code |
/pricing/market-groups | /markets |
commet.pricing.*MarketGroup | commet.markets.* |
| Campos legacy de Offer en suscripción | Offer Applications con objetivo explícito |
La API 2026-07-24 y el SDK v8 siguen disponibles con sus rutas y shapes existentes. La transformación de compatibilidad vive en el límite de versión de la API; el modelo interno y la superficie v9 usan Offers independientes.
Consultá Offers, Markets y precios regionales, Administrar suscripciones y Versionado de API.