Saltar al contenido principal

kobana billing plans

Comandos de kobana billing plans. Toda opción global (Opciones globales) vale aquí.

ComandoHTTPDescripción
plans bulk deleteDELETE /v1/plans/bulkEliminar planes en lote
plans itemsGET /v1/plans/{id}/itemsListar ítems del plan
plans items updatePUT /v1/plans/{id}/itemsReemplazar ítems del plan
plans listGET /v1/plansListar planes
plans createPOST /v1/plansCrear plan
plans updatePUT /v1/plansCrear o actualizar plan
plans bulk-archivePOST /v1/plans/bulk-archiveArchivar planes en lote
plans bulk-move-groupPOST /v1/plans/bulk-move-groupMover planes a otro grupo en lote
plans getGET /v1/plans/{id}Obtener plan
plans deleteDELETE /v1/plans/{id}Eliminar plan
plans archivePOST /v1/plans/{id}/archiveArchivar plan
plans duplicatePOST /v1/plans/{id}/duplicateDuplicar plan

plans bulk delete​

Eliminar planes en lote

kobana billing plans bulk delete [OPCIONES]

DELETE /v1/plans/bulk

Elimina los planes informados (soft delete: deleted_at, el mismo efecto que DELETE /v1/plans/{id} en cada uno). Los planes con una suscripción que no esté cancelada se omiten y se devuelven en skipped_ids. Exige el nivel de acceso delete. Reemplaza POST /v1/plans/bulk-delete, eliminado.

Cuerpo de la solicitud

NombreTipoObligatorioDescripción
idsarray<string (uuid)>síLista de UUIDs de planes. Mínimo 1.

Otros campos y objetos anidados: kobana schema billing.plans.bulk.delete.

Respuestas

HTTPDescripción
200Resumen de la eliminación en lote.
404Recurso no encontrado en la organización actual.
422El cuerpo de la solicitud falló en la validación.

plans items​

Listar ítems del plan

kobana billing plans items [ID] [OPCIONES] [COMANDO]

GET /v1/plans/{id}/items

Argumentos de la ruta: id

Respuestas

HTTPDescripción
200Lista de ítems del plan.
404Recurso no encontrado en la organización actual.

plans items update​

Reemplazar ítems del plan

kobana billing plans items update [ID] [OPCIONES]

PUT /v1/plans/{id}/items

Reemplaza de forma atómica todos los ítems del plan. Solo se aceptan productos raíz y cada product_id debe ser único en la lista.

Argumentos de la ruta: id

Cuerpo de la solicitud

NombreTipoObligatorioDescripción
itemsarray<object>sí

Otros campos y objetos anidados: kobana schema billing.plans.items.update.

Respuestas

HTTPDescripción
200Ítems del plan reemplazados.
404Recurso no encontrado en la organización actual.
422El cuerpo de la solicitud falló en la validación.

plans list​

Listar planes

kobana billing plans list [OPCIONES]

GET /v1/plans

Devuelve una lista paginada de los planes de la organización actual.

Parámetros de consulta

NombreTipoObligatorioDescripción
pageintegernoPágina (comienza en 1). Por defecto: 1.
per_pageintegernoÍtems por página. Por defecto: 20. Máximo: 100.
sort_bystringnoCampo de ordenación. El valor por defecto depende del recurso.
sort_orderstringnoDirección de ordenación. Por defecto: desc. Valores: asc, desc.
person_idstringnoFiltra por UUID de la persona asociada.
person_document_numberstringnoFiltra por CPF/CNPJ de la persona (coincidencia exacta).
person_name_containsstringnoFiltra por nombre de la persona (búsqueda parcial, sin distinción de mayúsculas).
statusstringnoFiltra por estado del plan. Valores: draft, active, archived.
plan_typestringnoFiltra por tipo del plan. Valores: standard, custom, promotional.
visibilitystringnoFiltra por visibilidad. Valores: public, private.
plan_group_idstringnoFiltra por grupo de planes.
company_idstringnoFiltra por empresa emisora.
billing_account_idstringnoFiltra planes custom asociados a una cuenta de cobro.
scoped_billing_account_idstringnoDevuelve planes disponibles para la cuenta de cobro indicada (estándar + planes custom de la cuenta).
exclude_custom_plansstringnoCuando es true, excluye los planes de tipo custom de los resultados. Valores: true, false.
default_billing_cyclestringnoFiltra por la periodicidad de cobro por defecto del plan. Valores: monthly, quarterly, semiannual, annual.
external_idstringnoFiltra por el identificador externo del plan.
slugstringnoFiltra por el slug del plan.
searchstringnoBúsqueda textual libre.
created_afterstringnoInicio del rango de fecha de creación (YYYY-MM-DD).
created_beforestringnoFin del rango de fecha de creación (YYYY-MM-DD).
updated_afterstringnoInicio del rango de fecha de actualización (YYYY-MM-DD).
updated_beforestringnoFin del rango de fecha de actualización (YYYY-MM-DD).

Respuestas

HTTPDescripción
200Lista paginada de planes.
404Recurso no encontrado en la organización actual.

plans create​

Crear plan

kobana billing plans create [OPCIONES]

POST /v1/plans

Crea un plan para la organización autenticada.

Cuerpo de la solicitud

NombreTipoObligatorioDescripción
namestringsí
slugstringsíSolo letras minúsculas, dígitos y guiones.
external_idstringnoIdentificador en su sistema externo, para idempotencia/sincronización.
company_idstring (uuid)no
plan_group_idstring (uuid)no
descriptionstringno
statusstringnoValores: draft, active, archived.
plan_typestringnoPor defecto: standard. Valores: standard, custom, promotional.
billing_account_idstring (uuid)no
visibilitystringnoPor defecto: public. Valores: public, private.
featuresarray<string>no
limitsobjectno
trial_period_daysintegerno
default_billing_cyclestringnoValores: monthly, quarterly, semiannual, annual.
available_billing_cyclesarray<string>no
itemsarray<object>no
custom_metadataobjectnoMetadatos personalizados en formato libre (object).

Otros campos y objetos anidados: kobana schema billing.plans.create.

Respuestas

HTTPDescripción
201Plan creado.
400El cuerpo de la solicitud falló en la validación.
404Recurso no encontrado en la organización actual.
422El cuerpo de la solicitud falló en la validación.

plans update​

Crear o actualizar plan

kobana billing plans update [OPCIONES]

PUT /v1/plans

Recibe el mismo cuerpo del POST, más id y public_id, y deduplica por id, public_id, external_id y las claves naturales del recurso, en ese orden, deteniéndose en la primera que encuentre un registro. Si lo encuentra, lo actualiza y responde 200; si no, lo crea y responde 201. Los campos obligatorios del POST solo se exigen cuando no se encuentra ningún registro, y la actualización es parcial.

Cuerpo de la solicitud

NombreTipoObligatorioDescripción
external_idstringnoIdentificador en su sistema externo, para idempotencia/sincronización.
company_idstring (uuid)no
plan_group_idstring (uuid)no
namestringno
slugstringnoSolo letras minúsculas, dígitos y guiones.
descriptionstringno
statusstringnoValores: draft, active, archived.
plan_typestringnoPor defecto: standard. Valores: standard, custom, promotional.
billing_account_idstring (uuid)no
visibilitystringnoPor defecto: public. Valores: public, private.
featuresarray<string>no
limitsobjectno
trial_period_daysintegerno
default_billing_cyclestringnoValores: monthly, quarterly, semiannual, annual.
available_billing_cyclesarray<string>no
itemsarray<object>no
custom_metadataobjectnoMetadatos personalizados en formato libre (object).
idstring (uuid)noUUID del registro. Se usa solo para localizarlo — nunca se guarda.
public_idstring (uuid)noUUID público del registro, usado para localizarlo.

Otros campos y objetos anidados: kobana schema billing.plans.update.

Respuestas

HTTPDescripción
200Registro actualizado.
201Registro creado.
400El cuerpo de la solicitud falló en la validación.
404Recurso no encontrado en la organización actual.
422El cuerpo de la solicitud falló en la validación.

plans bulk-archive​

Archivar planes en lote

kobana billing plans bulk-archive [OPCIONES]

POST /v1/plans/bulk-archive

Cuerpo de la solicitud

NombreTipoObligatorioDescripción
idsarray<string (uuid)>síLista de UUIDs de planes. Mínimo 1.

Otros campos y objetos anidados: kobana schema billing.plans.bulk-archive.

Respuestas

HTTPDescripción
200Resumen del archivado en lote.
404Recurso no encontrado en la organización actual.
422El cuerpo de la solicitud falló en la validación.

plans bulk-move-group​

Mover planes a otro grupo en lote

kobana billing plans bulk-move-group [OPCIONES]

POST /v1/plans/bulk-move-group

Cuerpo de la solicitud

NombreTipoObligatorioDescripción
idsarray<string (uuid)>sí
plan_group_idstring (uuid)síUUID del grupo destino. Usa null para quitar la agrupación.

Otros campos y objetos anidados: kobana schema billing.plans.bulk-move-group.

Respuestas

HTTPDescripción
200Resumen del movimiento en lote.
404Recurso no encontrado en la organización actual.
422El cuerpo de la solicitud falló en la validación.

plans get​

Obtener plan

kobana billing plans get [ID] [OPCIONES]

GET /v1/plans/{id}

Argumentos de la ruta: id

Respuestas

HTTPDescripción
200Detalle del plan.
404Recurso no encontrado en la organización actual.

plans delete​

Eliminar plan

kobana billing plans delete [ID] [OPCIONES]

DELETE /v1/plans/{id}

Elimina el plan (soft delete: deleted_at — desaparece de toda lectura; las reglas de cambio de plan que lo citan se eliminan). Exige el nivel de acceso delete. Devuelve 422 mientras haya una suscripción en el plan que no esté cancelada. Hasta octubre de 2026 esta ruta archivaba el plan, o eliminaba un borrador con ?hard=true (el parámetro ya no existe) — archivar es POST /v1/plans/{id}/archive, reversible.

Argumentos de la ruta: id

Respuestas

HTTPDescripción
200Plan eliminado.
404Recurso no encontrado en la organización actual.
422El cuerpo de la solicitud falló en la validación.

plans archive​

Archivar plan

kobana billing plans archive [ID] [OPCIONES]

POST /v1/plans/{id}/archive

Archiva el plan: sigue listado y puede restaurarse, pero no acepta nuevas suscripciones; las existentes siguen cobrando. Devuelve 422 mientras haya suscripciones activas en el plan. Exige el nivel de acceso write.

Argumentos de la ruta: id

Respuestas

HTTPDescripción
200Plan archivado.
404Recurso no encontrado en la organización actual.
422El cuerpo de la solicitud falló en la validación.

plans duplicate​

Duplicar plan

kobana billing plans duplicate [ID] [OPCIONES]

POST /v1/plans/{id}/duplicate

Crea una copia del plan (incluyendo sus ítems) en estado de borrador.

Argumentos de la ruta: id

Respuestas

HTTPDescripción
201Plan duplicado.
404Recurso no encontrado en la organización actual.