Gestiona licencias por usuario con el SDK de Commet.
Las licencias permiten cobrar según el tamaño del equipo de tu cliente. Commet trackea los cambios y los cobra automáticamente — las licencias incluidas al inicio del período, las adicionales prorrateadas.
| Componente | Descripción | Ejemplo |
|---|---|---|
| Feature Code | Categoría de licencia de usuario | editor, admin, viewer |
| Count | Cantidad de licencias a agregar, quitar o setear | 5, 10, 50 |
| Billing | Las licencias se cobran por unidad en el plan | $25/licencia/mes |
Las features de licencias se crean desde Features → Create Feature con tipo Seats — el código de la feature es lo que pasas como featureCode. Los feature codes deben crearse en el dashboard antes de usarse. La página Seats muestra los balances y eventos de licencias por cliente; los balances también aparecen en la página de detalle de suscripción de cada cliente.
await commet.seats.add({
customerId: 'user_123',
featureCode: 'editor',
count: 5,
})commet.seats.add(
feature_code='editor',
count=5,
customer_id='user_123',
)client.Seats.Add(ctx, &commet.AddSeatsParams{
FeatureCode: "editor",
Count: 5,
CustomerID: "user_123",
})commet.seats().add("editor", 5, "user_123", null);$commet->seats->add(
featureCode: 'editor',
count: 5,
customerId: 'user_123',
);curl -X POST https://commet.co/api/v1/seats \
-H "x-api-key: $COMMET_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customerId": "user_123",
"featureCode": "editor",
"count": 5
}'await commet.seats.remove({
customerId: 'user_123',
featureCode: 'editor',
count: 2,
})commet.seats.remove(
feature_code='editor',
count=2,
customer_id='user_123',
)client.Seats.Remove(ctx, &commet.RemoveSeatsParams{
FeatureCode: "editor",
Count: 2,
CustomerID: "user_123",
})commet.seats().remove("editor", 2, "user_123", null);$commet->seats->remove(
featureCode: 'editor',
count: 2,
customerId: 'user_123',
);curl -X DELETE https://commet.co/api/v1/seats \
-H "x-api-key: $COMMET_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customerId": "user_123",
"featureCode": "editor",
"count": 2
}'Las licencias no pueden bajar de cero — quitar más que la cantidad actual falla.
Usa set cuando sincronizas las cantidades de licencias desde tu sistema.
await commet.seats.set({
customerId: 'user_123',
featureCode: 'editor',
count: 10,
})commet.seats.set(
feature_code='editor',
count=10,
customer_id='user_123',
)client.Seats.Set(ctx, &commet.SetSeatsParams{
FeatureCode: "editor",
Count: 10,
CustomerID: "user_123",
})commet.seats().set("editor", 10, "user_123", null);$commet->seats->set(
featureCode: 'editor',
count: 10,
customerId: 'user_123',
);curl -X PUT https://commet.co/api/v1/seats \
-H "x-api-key: $COMMET_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customerId": "user_123",
"featureCode": "editor",
"count": 10
}'Usa setAll para sincronizar múltiples tipos de licencia en una sola llamada. Útil cuando tu sistema trackea todos los roles y querés reconciliar con un solo request.
await commet.seats.setAll({
customerId: 'user_123',
seats: { editor: 5, viewer: 20, admin: 2 },
})commet.seats.set_all(
seats={'editor': 5, 'viewer': 20, 'admin': 2},
customer_id='user_123',
)client.Seats.SetAll(ctx, &commet.BulkSetSeatsParams{
Seats: map[string]int{"editor": 5, "viewer": 20, "admin": 2},
CustomerID: "user_123",
})commet.seats().setAll(Map.of("editor", 5, "viewer", 20, "admin", 2), "user_123", null);$commet->seats->setAll(
seats: ['editor' => 5, 'viewer' => 20, 'admin' => 2],
customerId: 'user_123',
);curl -X PUT https://commet.co/api/v1/seats/bulk \
-H "x-api-key: $COMMET_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customerId": "user_123",
"seats": { "editor": 5, "viewer": 20, "admin": 2 }
}'const balance = await commet.seats.getBalance({
customerId: 'user_123',
featureCode: 'editor',
})balance = commet.seats.get_balance(
feature_code='editor',
customer_id='user_123',
)balance, err := client.Seats.GetBalance(ctx, &commet.GetSeatBalanceParams{
FeatureCode: "editor",
CustomerID: "user_123",
})var balance = commet.seats().getBalance("editor", "user_123");$balance = $commet->seats->getBalance(
featureCode: 'editor',
customerId: 'user_123',
);curl "https://commet.co/api/v1/seats/balance?customerId=user_123&featureCode=editor" \
-H "x-api-key: $COMMET_API_KEY"Pasa un ID de Commet (cus_xxx) o tu ID externo como customerId. Se requiere una suscripción activa por cliente.
Devuelve los balances de cada tipo de licencia en la suscripción activa del cliente.
const balances = await commet.seats.getAllBalances({
customerId: 'user_123',
})
// { editor: { included: 5, used: 3, ... }, viewer: { ... } }balances = commet.seats.get_all_balances(
customer_id='user_123',
)balances, err := client.Seats.GetAllBalances(ctx, &commet.GetAllSeatBalancesParams{
CustomerID: "user_123",
})var balances = commet.seats().getAllBalances("user_123");$balances = $commet->seats->getAllBalances(
customerId: 'user_123',
);curl "https://commet.co/api/v1/seats/balances?customerId=user_123" \
-H "x-api-key: $COMMET_API_KEY"¿Cómo está esta guía?