POST /v1/catalog/composed-products
Creates a sale-ready product from published Capability revisions. Nexus resolves the immutable SKU version and Meter for every component so a caller never has to assemble catalog internals by ID.
The server validates credentials, tenant, environment and permissions. This page does not send requests. Replace example values; deployed server validation remains authoritative.
Parameters
No path or query parameters.
Request body
billing_periodstringcategorystringcodestringcomponentsarrayExpand fields
capability_idstringincluded_quantitystringquantitystringsort_orderinteger · int32
descriptionstringinterval_countinteger · int32metadata_jsonstringnamestringsales_modelstringtrial_daysinteger · int32
cURL
curl --request POST 'https://nexus-api.rainlib.com/v1/catalog/composed-products' \
--header 'Authorization: Bearer <NEXUS_ACCESS_TOKEN>' \
--header 'Content-Type: application/json' \
--data '{
"billing_period": "<value>",
"category": "<value>",
"code": "<value>",
"components": [
{
"capability_id": "<value>",
"included_quantity": "<value>",
"quantity": "<value>",
"sort_order": 0
}
],
"description": "<value>",
"interval_count": 0,
"metadata_json": "<value>",
"name": "<value>",
"sales_model": "<value>",
"trial_days": 0
}'Response contract
200 · OK
componentsarrayExpand fields
capability_codestringcapability_idstringcapability_kindstringcapability_namestringcapability_revision_idstringidstringincluded_quantitystringmeter_codestringmeter_idstringquantitystringsku_version_idstringsort_orderinteger · int32
offerobjectExpand fields
codestringidstringnamestringsales_modelstringstatusstring
planobjectExpand fields
billing_periodstringcodestringidstringinterval_countinteger · int32itemsarrayExpand fields
included_quantitystringmeter_codestringmeter_idstringquantitystringsku_codestringsku_display_namestringsku_idstringsku_version_idstringsort_orderinteger · int32
namestringproduct_idstringstatusstringtrial_daysinteger · int32version_idstringversion_nointeger · int32version_statusstring
priceobjectExpand fields
amountstringcurrencystringprice_book_idstringpricing_modelstringrevisioninteger · int32rule_set_idstringstatusstring
price_readybooleanPresence is significant: false means the product exists but still needs a published price. Keep the field on the wire instead of letting proto3 JSON omit the false value and forcing Console clients to guess.
productobjectExpand fields
categorystringcodestringdescriptionstringidstringmetadata_jsonstringnamestringstatusstringversionstringVersion zero is the first valid optimistic-lock revision. Preserve it in JSON so clients can immediately update a newly created product.
Generated responses do not enumerate every runtime error. See the integration guide for authentication, conflicts and retries.