Proposals
The quote before the subscription: publish, send, generate a PDF and accept. Accepting is what turns the proposal into a subscription — and undo-accept reverses it.
| Command | HTTP | Description |
|---|---|---|
proposals list | GET /v1/proposals | List proposals |
proposals create | POST /v1/proposals | Create a proposal |
proposals get | GET /v1/proposals/{id} | Get a proposal |
proposals update | PATCH /v1/proposals/{id} | Update a proposal |
proposals delete | DELETE /v1/proposals/{id} | Delete a proposal |
proposals accept | POST /v1/proposals/{id}/accept | Accept a proposal |
proposals cancel | POST /v1/proposals/{id}/cancel | Cancel a proposal |
proposals duplicate | POST /v1/proposals/{id}/duplicate | Duplicate a proposal |
proposals generate-pdf | POST /v1/proposals/{id}/generate-pdf | Generate the proposal PDF |
proposals json | GET /v1/proposals/{id}/json | Get the proposal's JSON snapshot |
proposals pricing | GET /v1/proposals/{id}/pricing | Get the proposal's price calculation |
proposals publish | POST /v1/proposals/{id}/publish | Publish a proposal |
proposals send | POST /v1/proposals/{id}/send | Send a proposal by e-mail |
proposals undo-accept | POST /v1/proposals/{id}/undo-accept | Undo the proposal's acceptance |
proposals unpublish | POST /v1/proposals/{id}/unpublish | Unpublish a proposal |
proposals bulk-cancel create | POST /v1/proposals/bulk-cancel | Cancel proposals in bulk |
proposals bulk-delete create | POST /v1/proposals/bulk-delete | Delete proposals in bulk |
proposals bulk-send create | POST /v1/proposals/bulk-send | Send proposals in bulk |
proposals items get | GET /v1/proposals/{id}/items | List the proposal's items |
proposals items create | POST /v1/proposals/{id}/items | Add an item to a proposal |
proposals items update | PATCH /v1/proposals/{id}/items/{itemId} | Update a proposal item |
proposals items delete | DELETE /v1/proposals/{id}/items/{itemId} | Delete a proposal item |
proposals stats list | GET /v1/proposals/stats | Get proposal statistics |
Examples
--params carries query and path parameters (id, page, filters); --json carries the request body; --fields limits which fields come back — worth using on every list/get to save context. See Global flags for the full reference.
# List proposals
kobana billing proposals list \
--fields "id,public_id,external_id,company_id,code"
# Get a proposal
kobana billing proposals get --params '{"id": "PROPOSAL_ID"}'
# Create a proposal
kobana billing proposals create \
--json '{"company_id": "COMPANY_ID", "title": "TITLE", "description": "DESCRIPTION"}'
# Update a proposal
kobana billing proposals update \
--params '{"id": "PROPOSAL_ID"}' \
--json '{"company_id": "COMPANY_ID", "title": "TITLE", "description": "DESCRIPTION"}'
# Accept a proposal
kobana billing proposals accept \
--params '{"id": "PROPOSAL_ID"}' \
--json '{"cycle": "monthly"}'
# Delete a proposal
kobana billing proposals delete --params '{"id": "PROPOSAL_ID"}' --dry-run
Next steps
- Proposal templates
- Schema introspection — every parameter this resource accepts.