Skip to main content

kobana billing products

Commands of kobana billing products. Every global option (Global options) applies here.

CommandHTTPDescription
products bulk deleteDELETE /v1/products/bulkBulk delete products
products reorder createPOST /v1/products/reorderReorder products
products reorder updatePUT /v1/products/reorderReorder products (PUT /reorder)
products listGET /v1/productsList products
products createPOST /v1/productsCreate product
products updatePUT /v1/productsUpsert product
products bulk-archivePOST /v1/products/bulk-archiveBulk archive products
products bulk-change-companyPOST /v1/products/bulk-change-companyBulk change product company
products bulk-move-groupPOST /v1/products/bulk-move-groupMove products to another group
products bulk-visibilityPOST /v1/products/bulk-visibilityBulk change visibility
products getGET /v1/products/{id}Get product
products deleteDELETE /v1/products/{id}Delete product
products archivePOST /v1/products/{id}/archiveArchive product
products publishPOST /v1/products/{id}/publishPublish product
products restorePOST /v1/products/{id}/restoreRestore archived product

products bulk delete​

Bulk delete products

kobana billing products bulk delete [OPTIONS]

DELETE /v1/products/bulk

Deletes many products (soft delete: deleted_at, the same effect as DELETE /v1/products/{id} on each). IDs in use by active subscriptions are skipped and reported in the response. Requires the delete access level. Replaces POST /v1/products/bulk-delete, which was removed.

Request body

NameTypeRequiredDescription
idsarray<string (uuid)>yesIDs of the products to delete.

More fields and nested objects: kobana schema billing.products.bulk.delete.

Responses

HTTPDescription
200Bulk operation result.
400Request body failed validation.
404Resource not found in the current organization.
422Request body failed validation.

products reorder create​

Reorder products

kobana billing products reorder create [OPTIONS]

POST /v1/products/reorder

Updates product display order. Array index 0 becomes the first item in the list.

Request body

NameTypeRequiredDescription
product_idsarray<string (uuid)>yesProduct IDs in the new desired order. Index 0 becomes the first in the list.

More fields and nested objects: kobana schema billing.products.reorder.create.

Responses

HTTPDescription
200Order updated.
400Request body failed validation.
404Resource not found in the current organization.
422Request body failed validation.

products reorder update​

Reorder products (PUT /reorder)

kobana billing products reorder update [OPTIONS]

PUT /v1/products/reorder

Alias PUT for /products/reorder. Same behavior as the POST version.

Request body

NameTypeRequiredDescription
product_idsarray<string (uuid)>yesProduct IDs in the new desired order. Index 0 becomes the first in the list.

More fields and nested objects: kobana schema billing.products.reorder.update.

Responses

HTTPDescription
200Order updated.
400Request body failed validation.
404Resource not found in the current organization.
422Request body failed validation.

products list​

List products

kobana billing products list [OPTIONS]

GET /v1/products

Returns a paginated list of the current organization's products.

Query parameters

NameTypeRequiredDescription
pageintegernoPage (starts at 1). Default: 1.
per_pageintegernoItems per page. Default: 20. Maximum: 100.
sort_bystringnoSort field. Default depends on the resource.
sort_orderstringnoSort direction. Default: desc. Values: asc, desc.
statusstringnoFilter by product status. Values: all, draft, active, archived.
visibilitystringnoFilter by visibility. Values: public, private.
product_typestringnoFilter by product type. Values: base, addon_quantity, addon_fixed, metered, one_time_fixed, one_time_quantity, credits.
product_group_idstringnoFilter by product group.
company_idstringnoFilter by company.
parent_product_idstringnoFilter by parent product.
root_onlystringnoWhen true, returns only root products (with no parent). Values: true, false.
searchstringnoFree-text search (name, slug).
service_item_idstringnoFilter by linked service item.
is_requiredstringnoWhen true, returns only products marked as required. Values: true, false.
self_service_editablestringnoWhen true, returns only products that the customer can edit in the portal. Values: true, false.
external_idstringnoFilter by external identifier.
slugstringnoFilter by exact product slug.
created_afterstringnoStart of creation date range (YYYY-MM-DD).
created_beforestringnoEnd of creation date range (YYYY-MM-DD).
updated_afterstringnoStart of update date range (YYYY-MM-DD).
updated_beforestringnoEnd of update date range (YYYY-MM-DD).

Responses

HTTPDescription
200Paginated list of products.
404Resource not found in the current organization.

products create​

Create product

kobana billing products create [OPTIONS]

POST /v1/products

Request body

NameTypeRequiredDescription
namestringyesProduct name.
slugstringyesUnique slug within the group. Accepts only [a-z0-9_-]+.
descriptionstringno
product_typestringnoProduct type. Default: base. Values: base, addon_quantity, addon_fixed, metered, one_time_fixed, one_time_quantity, credits.
visibilitystringnoPortal visibility. Default: public. Values: public, private.
unit_labelstringno
incrementintegernoMinimum increment. Default: 1.
website_urlstring (uri)no
is_requiredbooleanno
parent_product_idstring (uuid)no
product_group_idstring (uuid)no
company_idstring (uuid)no
external_idstringnoIdentifier in your external system, for idempotency/sync.
custom_metadataobjectno

More fields and nested objects: kobana schema billing.products.create.

Responses

HTTPDescription
201Product created.
400Request body failed validation.
404Resource not found in the current organization.
422Request body failed validation.

products update​

Upsert product

kobana billing products update [OPTIONS]

PUT /v1/products

Takes the same body as POST, plus id and public_id, and dedups on id, public_id, external_id and the resource's natural keys, in that order, stopping at the first key that finds a record. A match is updated and returns 200; otherwise the record is created and returns 201. The POST's required fields are required only when no record is found, and updates are partial: absent fields keep their stored value.

Request body

NameTypeRequiredDescription
namestringnoProduct name.
slugstringnoUnique slug within the group. Accepts only [a-z0-9_-]+.
descriptionstringno
product_typestringnoProduct type. Default: base. Values: base, addon_quantity, addon_fixed, metered, one_time_fixed, one_time_quantity, credits.
visibilitystringnoPortal visibility. Default: public. Values: public, private.
unit_labelstringno
incrementintegernoMinimum increment. Default: 1.
website_urlstring (uri)no
is_requiredbooleanno
parent_product_idstring (uuid)no
product_group_idstring (uuid)no
company_idstring (uuid)no
external_idstringnoIdentifier in your external system, for idempotency/sync.
custom_metadataobjectno
idstring (uuid)noRecord UUID. Used only to locate it — never written.
public_idstring (uuid)noPublic UUID of the record, used to locate it.

More fields and nested objects: kobana schema billing.products.update.

Responses

HTTPDescription
200Record updated.
201Record created.
400Request body failed validation.
404Resource not found in the current organization.
422Request body failed validation.

products bulk-archive​

Bulk archive products

kobana billing products bulk-archive [OPTIONS]

POST /v1/products/bulk-archive

Archives multiple products. IDs in use by active subscriptions or already archived are skipped and reported in the response.

Request body

NameTypeRequiredDescription
idsarray<string (uuid)>yesIDs of products to archive.

More fields and nested objects: kobana schema billing.products.bulk-archive.

Responses

HTTPDescription
200Bulk operation result.
400Request body failed validation.
404Resource not found in the current organization.
422Request body failed validation.

products bulk-change-company​

Bulk change product company

kobana billing products bulk-change-company [OPTIONS]

POST /v1/products/bulk-change-company

Reassigns multiple products to another company. Send company_id: null to clear the link.

Request body

NameTypeRequiredDescription
idsarray<string (uuid)>yes
company_idstring (uuid)yesTarget company. Use null to clear the link.

More fields and nested objects: kobana schema billing.products.bulk-change-company.

Responses

HTTPDescription
200Bulk operation result.
400Request body failed validation.
404Resource not found in the current organization.
422Request body failed validation.

products bulk-move-group​

Move products to another group

kobana billing products bulk-move-group [OPTIONS]

POST /v1/products/bulk-move-group

Moves multiple products to a product group. Send product_group_id: null to remove from the current group.

Request body

NameTypeRequiredDescription
idsarray<string (uuid)>yes
product_group_idstring (uuid)yesTarget group. Use null to remove from the current group.

More fields and nested objects: kobana schema billing.products.bulk-move-group.

Responses

HTTPDescription
200Bulk operation result.
400Request body failed validation.
404Resource not found in the current organization.
422Request body failed validation.

products bulk-visibility​

Bulk change visibility

kobana billing products bulk-visibility [OPTIONS]

POST /v1/products/bulk-visibility

Updates the visibility (public or private) of multiple products.

Request body

NameTypeRequiredDescription
idsarray<string (uuid)>yes
visibilitystringyesNew visibility to apply to all products. Values: public, private.

More fields and nested objects: kobana schema billing.products.bulk-visibility.

Responses

HTTPDescription
200Bulk operation result.
400Request body failed validation.
404Resource not found in the current organization.
422Request body failed validation.

products get​

Get product

kobana billing products get [ID] [OPTIONS]

GET /v1/products/{id}

Path arguments: id

Responses

HTTPDescription
200Product detail.
404Resource not found in the current organization.

products delete​

Delete product

kobana billing products delete [ID] [OPTIONS]

DELETE /v1/products/{id}

Deletes the product (soft delete: deleted_at — it disappears from every read and leaves every plan; subscriptions and invoices that cite it keep the reference). Requires the delete access level. Answers 422 when the product is in use by active subscriptions. Until October 2026 this route archived the product — archiving is POST /v1/products/{id}/archive, reversible.

Path arguments: id

Responses

HTTPDescription
200Product deleted.
404Resource not found in the current organization.
422Request body failed validation.

products archive​

Archive product

kobana billing products archive [ID] [OPTIONS]

POST /v1/products/{id}/archive

Archives the product. Returns 422 when the product is in use by active subscriptions or is already archived.

Path arguments: id

Responses

HTTPDescription
200Product archived.
404Resource not found in the current organization.
422Request body failed validation.

products publish​

Publish product

kobana billing products publish [ID] [OPTIONS]

POST /v1/products/{id}/publish

Promotes a draft product to active status.

Path arguments: id

Responses

HTTPDescription
200Product published.
404Resource not found in the current organization.
422Request body failed validation.

products restore​

Restore archived product

kobana billing products restore [ID] [OPTIONS]

POST /v1/products/{id}/restore

Restores an archived product back to active status.

Path arguments: id

Responses

HTTPDescription
200Product restored.
404Resource not found in the current organization.
422Request body failed validation.