Saltar al contenido principal

kobana billing proposals

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

ComandoHTTPDescripción
proposals bulk deleteDELETE /v1/proposals/bulkEliminar propuestas en lote
proposals items listGET /v1/proposals/{id}/itemsListar ítems de la propuesta
proposals items createPOST /v1/proposals/{id}/itemsAgregar ítem a la propuesta
proposals items getGET /v1/proposals/{id}/items/{item_id}Obtener ítem de la propuesta
proposals items updatePATCH /v1/proposals/{id}/items/{item_id}Actualizar ítem de la propuesta
proposals items deleteDELETE /v1/proposals/{id}/items/{item_id}Eliminar ítem de la propuesta
proposals statsGET /v1/proposals/statsObtener estadísticas de propuestas
proposals listGET /v1/proposalsListar propuestas
proposals createPOST /v1/proposalsCrear propuesta
proposals updatePUT /v1/proposalsCrear o actualizar propuesta
proposals bulk-cancelPOST /v1/proposals/bulk-cancelCancelar propuestas en lote
proposals bulk-sendPOST /v1/proposals/bulk-sendEnviar propuestas en lote
proposals getGET /v1/proposals/{id}Obtener propuesta
proposals deleteDELETE /v1/proposals/{id}Eliminar propuesta
proposals acceptPOST /v1/proposals/{id}/acceptAceptar propuesta
proposals cancelPOST /v1/proposals/{id}/cancelCancelar propuesta
proposals duplicatePOST /v1/proposals/{id}/duplicateDuplicar propuesta
proposals generate-pdfPOST /v1/proposals/{id}/generate-pdfGenerar PDF de la propuesta
proposals jsonGET /v1/proposals/{id}/jsonObtener snapshot JSON de la propuesta
proposals pricingGET /v1/proposals/{id}/pricingObtener cálculo de precio de la propuesta
proposals publishPOST /v1/proposals/{id}/publishPublicar propuesta
proposals sendPOST /v1/proposals/{id}/sendEnviar propuesta por correo
proposals undo-acceptPOST /v1/proposals/{id}/undo-acceptDeshacer aceptación de la propuesta
proposals unpublishPOST /v1/proposals/{id}/unpublishDespublicar propuesta

proposals bulk delete​

Eliminar propuestas en lote

kobana billing proposals bulk delete [OPCIONES]

DELETE /v1/proposals/bulk

Elimina varias propuestas a la vez (hasta 100). Devuelve conteos de éxito/fallo y errores por id. Exige el nivel de acceso delete. Reemplaza POST /v1/proposals/bulk-delete, eliminado.

Cuerpo de la solicitud

NombreTipoObligatorioDescripción
idsarray<string (uuid)>síLista de UUIDs de las propuestas objetivo. Mínimo 1, máximo 100.

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

Respuestas

HTTPDescripción
200Resultado de la eliminación en lote.
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.

proposals items list​

Listar ítems de la propuesta

kobana billing proposals items list [ID] [OPCIONES]

GET /v1/proposals/{id}/items

Argumentos de la ruta: id

Respuestas

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

proposals items create​

Agregar ítem a la propuesta

kobana billing proposals items create [ID] [OPCIONES]

POST /v1/proposals/{id}/items

Argumentos de la ruta: id

Cuerpo de la solicitud

NombreTipoObligatorioDescripción
product_idstring (uuid)síUUID del producto. Obligatorio.
price_idstring (uuid)síUUID del precio. Obligatorio.
unit_amountnumbersíValor unitario en BRL (float, hasta 4 decimales).
quantitynumbernoCantidad. Por defecto: 1.
metadataobjectnoMetadatos arbitrarios del ítem.
custom_metadataobjectnoCampos personalizados del ítem.

Otros campos y objetos anidados: kobana schema billing.proposals.items.create.

Respuestas

HTTPDescripción
201Ítem 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.

proposals items get​

Obtener ítem de la propuesta

kobana billing proposals items get [ID] [ITEM_ID] [OPCIONES]

GET /v1/proposals/{id}/items/{item_id}

Argumentos de la ruta: id, item_id

Respuestas

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

proposals items update​

Actualizar ítem de la propuesta

kobana billing proposals items update [ID] [ITEM_ID] [OPCIONES]

PATCH /v1/proposals/{id}/items/{item_id}

Actualiza un ítem. Solo permitido en propuestas en borrador (status = draft).

Argumentos de la ruta: id, item_id

Cuerpo de la solicitud

NombreTipoObligatorioDescripción
quantityintegernoActualiza la cantidad.
unit_amountnumbernoActualiza el valor unitario en BRL (float, hasta 4 decimales).
setup_amountnumbernoActualiza el setup unitario en BRL (float, hasta 4 decimales).
custom_metadataobjectnoproposals.items.update.body.custom_metadata

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

Respuestas

HTTPDescripción
200Ítem actualizado.
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.

proposals items delete​

Eliminar ítem de la propuesta

kobana billing proposals items delete [ID] [ITEM_ID] [OPCIONES]

DELETE /v1/proposals/{id}/items/{item_id}

Elimina un ítem. Solo permitido en propuestas en borrador (status = draft).

Argumentos de la ruta: id, item_id

Respuestas

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

proposals stats​

Obtener estadísticas de propuestas

kobana billing proposals stats [OPCIONES]

GET /v1/proposals/stats

Devuelve conteos de propuestas por estado (draft, sent, viewed, accepted, rejected, expired, canceled) para la organización actual.

Respuestas

HTTPDescripción
200Estadísticas de propuestas.
404Recurso no encontrado en la organización actual.

proposals list​

Listar propuestas

kobana billing proposals list [OPCIONES]

GET /v1/proposals

Devuelve una lista paginada de las propuestas comerciales 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: draft, sent, viewed, accepted, rejected, expired o canceled. Valores: draft, sent, viewed, accepted, rejected, expired, canceled.
billing_account_idstringnoFiltra por billing_account_id vinculado.
prospect_idstringnoFiltra por prospect_id.
contact_idstringnoFiltra por contact_id vinculado.
coupon_idstringnoFiltra por coupon_id aplicado.
company_idstringnoFiltra por company_id emisor.
template_idstringnoFiltra por template_id usado para generar el PDF.
codestringnoFiltra por código corto de la propuesta (ej.: PROP-0001).
external_idstringnoFiltra por identificador externo.
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).
expires_afterstringnoFiltra por expires_at inicial (ISO 8601, inclusivo).
expires_beforestringnoFiltra por expires_at final (ISO 8601, inclusivo).
accepted_afterstringnoFiltra por accepted_at inicial (ISO 8601, inclusivo).
accepted_beforestringnoFiltra por accepted_at final (ISO 8601, inclusivo).
sent_afterstringnoFiltra por sent_at inicial (ISO 8601, inclusivo).
sent_beforestringnoFiltra por sent_at final (ISO 8601, inclusivo).
viewed_afterstringnoFiltra por viewed_at inicial (ISO 8601, inclusivo).
viewed_beforestringnoFiltra por viewed_at final (ISO 8601, inclusivo).
rejected_afterstringnoFiltra por rejected_at inicial (ISO 8601, inclusivo).
rejected_beforestringnoFiltra por rejected_at final (ISO 8601, inclusivo).
setup_amount_minnumber,nullnoFiltra por setup_amount mínimo (en BRL).
setup_amount_maxnumber,nullnoFiltra por setup_amount máximo (en BRL).
monthly_amount_minnumber,nullnoFiltra por monthly_amount mínimo (en BRL).
monthly_amount_maxnumber,nullnoFiltra por monthly_amount máximo (en BRL).

Respuestas

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

proposals create​

Crear propuesta

kobana billing proposals create [OPCIONES]

POST /v1/proposals

Crea una propuesta comercial. Es obligatorio informar billing_account_id, prospect_id o prospect_data (creación inline del prospect).

Cuerpo de la solicitud

NombreTipoObligatorioDescripción
company_idstring (uuid)noUUID de la empresa emisora. Usa null para limpiar.
titlestringnoTítulo de la propuesta. Por defecto: "Proposta Comercial".
descriptionstringnoDescripción libre de la propuesta.
billing_account_idstring (uuid)noUUID de la cuenta de cobro destino (cliente existente). Obligatorio si no se informan prospect_id ni prospect_data.
prospect_idstring (uuid)noUUID de un prospect existente. Alternativa a billing_account_id/prospect_data.
contact_idstring (uuid)noUUID de un contacto existente vinculado al prospect.
prospect_dataobjectnoDatos para crear un prospect inline (persona jurídica). Alternativa a prospect_id/billing_account_id.
contact_dataobjectnoDatos para crear un contacto inline (persona física responsable).
coupon_idstring (uuid)noUUID del cupón a aplicar.
template_idstring (uuid)noUUID del template para generar el PDF.
discount_percentnumbernoPorcentaje de descuento negociado (0–100), aplicado sobre el valor mensual; el descuento por ciclo se aplica sobre el valor con descuento. No lo envíe junto con discount_amount.
discount_amountnumbernoDescuento fijo negociado por mes en BRL (float, hasta 4 decimales), aplicado sobre el valor mensual; el descuento por ciclo se aplica sobre el valor con descuento. No lo envíe junto con discount_percent.
commitment_monthsintegernoPermanencia en meses (1–120). Use null para quitar. Copiado a la suscripción cuando se acepta la propuesta.
expires_atstringnoFecha de expiración.
notesstringnoNotas internas.
itemsarray<object>noÍtems de la propuesta. Mínimo 1.
external_idstringnoIdentificador en su sistema externo, para idempotencia/sincronización.
custom_metadataobjectnoCampos personalizados (validados contra el schema de la organización).

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

Respuestas

HTTPDescripción
201Propuesta creada.
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.

proposals update​

Crear o actualizar propuesta

kobana billing proposals update [OPCIONES]

PUT /v1/proposals

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
company_idstring (uuid)noUUID de la empresa emisora. Usa null para limpiar.
titlestringnoTítulo de la propuesta. Por defecto: "Proposta Comercial".
descriptionstringnoDescripción libre de la propuesta.
billing_account_idstring (uuid)noUUID de la cuenta de cobro destino (cliente existente). Obligatorio si no se informan prospect_id ni prospect_data.
prospect_idstring (uuid)noUUID de un prospect existente. Alternativa a billing_account_id/prospect_data.
contact_idstring (uuid)noUUID de un contacto existente vinculado al prospect.
prospect_dataobjectnoDatos para crear un prospect inline (persona jurídica). Alternativa a prospect_id/billing_account_id.
contact_dataobjectnoDatos para crear un contacto inline (persona física responsable).
coupon_idstring (uuid)noUUID del cupón a aplicar.
template_idstring (uuid)noUUID del template para generar el PDF.
discount_percentnumbernoPorcentaje de descuento negociado (0–100), aplicado sobre el valor mensual; el descuento por ciclo se aplica sobre el valor con descuento. No lo envíe junto con discount_amount.
discount_amountnumbernoDescuento fijo negociado por mes en BRL (float, hasta 4 decimales), aplicado sobre el valor mensual; el descuento por ciclo se aplica sobre el valor con descuento. No lo envíe junto con discount_percent.
commitment_monthsintegernoPermanencia en meses (1–120). Use null para quitar. Copiado a la suscripción cuando se acepta la propuesta.
expires_atstringnoFecha de expiración.
notesstringnoNotas internas.
itemsarray<object>noÍtems de la propuesta. Mínimo 1.
external_idstringnoIdentificador en su sistema externo, para idempotencia/sincronización.
custom_metadataobjectnoCampos personalizados (validados contra el schema de la organización).
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.proposals.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.

proposals bulk-cancel​

Cancelar propuestas en lote

kobana billing proposals bulk-cancel [OPCIONES]

POST /v1/proposals/bulk-cancel

Cancela varias propuestas a la vez (hasta 100). Devuelve conteos de éxito/fallo y errores por id.

Cuerpo de la solicitud

NombreTipoObligatorioDescripción
idsarray<string (uuid)>síLista de UUIDs de las propuestas objetivo. Mínimo 1, máximo 100.

Otros campos y objetos anidados: kobana schema billing.proposals.bulk-cancel.

Respuestas

HTTPDescripción
200Resultado de la cancelación en lote.
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.

proposals bulk-send​

Enviar propuestas en lote

kobana billing proposals bulk-send [OPCIONES]

POST /v1/proposals/bulk-send

Envía varias propuestas a la vez (hasta 100). Devuelve conteos de éxito/fallo y errores por id.

Cuerpo de la solicitud

NombreTipoObligatorioDescripción
idsarray<string (uuid)>síLista de UUIDs de las propuestas objetivo. Mínimo 1, máximo 100.

Otros campos y objetos anidados: kobana schema billing.proposals.bulk-send.

Respuestas

HTTPDescripción
200Resultado del envío en lote.
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.

proposals get​

Obtener propuesta

kobana billing proposals get [ID] [OPCIONES]

GET /v1/proposals/{id}

Argumentos de la ruta: id

Respuestas

HTTPDescripción
200Detalle de la propuesta.
404Recurso no encontrado en la organización actual.

proposals delete​

Eliminar propuesta

kobana billing proposals delete [ID] [OPCIONES]

DELETE /v1/proposals/{id}

Argumentos de la ruta: id

Respuestas

HTTPDescripción
200Propuesta eliminada.
404Recurso no encontrado en la organización actual.

proposals accept​

Aceptar propuesta

kobana billing proposals accept [ID] [OPCIONES]

POST /v1/proposals/{id}/accept

Acepta la propuesta y crea (o confirma) la suscripción correspondiente en el ciclo informado.

Argumentos de la ruta: id

Cuerpo de la solicitud

NombreTipoObligatorioDescripción
cyclestringsíCiclo de cobro de la suscripción creada al aceptar: monthly, quarterly, semiannual o annual. Valores: monthly, quarterly, semiannual, annual.

Otros campos y objetos anidados: kobana schema billing.proposals.accept.

Respuestas

HTTPDescripción
200Propuesta aceptada — devuelve la propuesta, subscription_id e invoice_id cuando aplican.
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.

proposals cancel​

Cancelar propuesta

kobana billing proposals cancel [ID] [OPCIONES]

POST /v1/proposals/{id}/cancel

Cancela la propuesta (status → canceled).

Argumentos de la ruta: id

Respuestas

HTTPDescripción
200Propuesta cancelada.
404Recurso no encontrado en la organización actual.

proposals duplicate​

Duplicar propuesta

kobana billing proposals duplicate [ID] [OPCIONES]

POST /v1/proposals/{id}/duplicate

Crea una nueva propuesta a partir de la original (borrador), preservando ítems y configuración.

Argumentos de la ruta: id

Respuestas

HTTPDescripción
201Propuesta duplicada.
404Recurso no encontrado en la organización actual.

proposals generate-pdf​

Generar PDF de la propuesta

kobana billing proposals generate-pdf [ID] [OPCIONES]

POST /v1/proposals/{id}/generate-pdf

Genera (o regenera) el PDF de la propuesta vía Google App Scripts. Requiere un template con app_script_url configurado.

Argumentos de la ruta: id

Respuestas

HTTPDescripción
200PDF generado — devuelve la propuesta actualizada y las URLs del documento/PDF.
404Recurso no encontrado en la organización actual.
422El cuerpo de la solicitud falló en la validación.

proposals json​

Obtener snapshot JSON de la propuesta

kobana billing proposals json [ID] [OPCIONES]

GET /v1/proposals/{id}/json

Devuelve el snapshot completo de los datos usados para renderizar el template del PDF (espeja lo que recibe AppScript).

Argumentos de la ruta: id

Respuestas

HTTPDescripción
200Snapshot JSON de la propuesta.
404Recurso no encontrado en la organización actual.

proposals pricing​

Obtener cálculo de precio de la propuesta

kobana billing proposals pricing [ID] [OPCIONES]

GET /v1/proposals/{id}/pricing

Devuelve el detalle de precios por ciclo de cobro (mensual, trimestral, semestral, anual), con setup y descuentos aplicados.

Argumentos de la ruta: id

Respuestas

HTTPDescripción
200Detalle de precios.
404Recurso no encontrado en la organización actual.

proposals publish​

Publicar propuesta

kobana billing proposals publish [ID] [OPCIONES]

POST /v1/proposals/{id}/publish

Publica la propuesta (draft → sent) sin enviar el correo, dejándola disponible en el portal.

Argumentos de la ruta: id

Respuestas

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

proposals send​

Enviar propuesta por correo

kobana billing proposals send [ID] [OPCIONES]

POST /v1/proposals/{id}/send

Envía (o reenvía) la propuesta por correo al destinatario. Estados permitidos: draft, sent o viewed. Opcionalmente personaliza subject y message (HTML).

Argumentos de la ruta: id

Cuerpo de la solicitud

NombreTipoObligatorioDescripción
subjectstringnoAsunto personalizado del correo. Por defecto: Proposta {code}.
messagestringnoMensaje HTML personalizado del cuerpo del correo.

Otros campos y objetos anidados: kobana schema billing.proposals.send.

Respuestas

HTTPDescripción
200Propuesta enviada.
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.

proposals undo-accept​

Deshacer aceptación de la propuesta

kobana billing proposals undo-accept [ID] [OPCIONES]

POST /v1/proposals/{id}/undo-accept

Deshace la aceptación: elimina la suscripción vinculada y vuelve el estado a sent.

Argumentos de la ruta: id

Respuestas

HTTPDescripción
200Aceptación deshecha.
404Recurso no encontrado en la organización actual.

proposals unpublish​

Despublicar propuesta

kobana billing proposals unpublish [ID] [OPCIONES]

POST /v1/proposals/{id}/unpublish

Vuelve la propuesta a borrador (sent/viewed → draft).

Argumentos de la ruta: id

Respuestas

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