Documentation
MCPTool reference

Products tools

Arguments, results, errors, and access, confirmation, and retry policy for each Products tool in FloPay MCP, from the reviewed API contract.

Products tools

Generated from the FloPay MCP contract version 1, revision 764b41d5c7205d6df7eeaeac832fafe882247f5526b1d4d6bc6f98e3eaca7784.

Collection_create

Create Collection

Creates a collection optionally containing a set of products.

PolicyValue
OperationPOST /v1/collections
Classmutating
Riskmedium
Confirmationrequired
Retrysame-idempotency-key
Rate-limit tiermutation
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
codebodystringYesMinimum length: 1. Maximum length: 255.
descriptionbodystringNoMinimum length: 0. Maximum length: 1000.
namebodystringYesMinimum length: 1. Maximum length: 255.
productIdsbodyarray of string (uuid)NoProduct ids in this collection.

Result

Returns 201 with a JSON body.

FieldTypeRequiredDescription
codestringYes
createdAtstring (date-time)Yes
descriptionstring or nullYes
idstringYes
namestringYes
productsarray of objectYes
products[].ageGroupstring or nullYes
products[].attributesobject or nullYes
products[].availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
products[].brandobject or nullYes
products[].brand.codestringYes
products[].brand.createdAtstring (date-time)Yes
products[].brand.descriptionstring or nullYes
products[].brand.idstringYes
products[].brand.namestringYes
products[].brand.updatedAtstring (date-time)Yes
products[].categoryobject or nullYes
products[].category.codestringYes
products[].category.createdAtstring (date-time)Yes
products[].category.descriptionstring or nullYes
products[].category.idstringYes
products[].category.namestringYes
products[].category.parentIdstring (uuid) or nullYes
products[].category.updatedAtstring (date-time)Yes
products[].codestringYes
products[].createdAtstring (date-time)Yes
products[].descriptionstring or nullYes
products[].genderstring or nullYes
products[].gtinstring or nullYes
products[].heightMmnumber or nullYes
products[].idstringYes
products[].knowledgeBaseUrlstring or nullYes
products[].lengthMmnumber or nullYes
products[].longDescriptionstring or nullYes
products[].mediaarray of objectYes
products[].media[].altTextstring or nullYes
products[].media[].createdAtstring (date-time)Yes
products[].media[].idstringYes
products[].media[].isPrimarybooleanYes
products[].media[].positionnumberYes
products[].media[].typestringYesAllowed values: image, video, model_3d, document.
products[].media[].updatedAtstring (date-time)Yes
products[].media[].urlstringYes
products[].media[].variantIdstring (uuid) or nullYes
products[].metadataobject or nullYes
products[].namestringYes
products[].pricesarray of objectYes
products[].prices[].amountnumberYesBase price in major units.
products[].prices[].createdAtstring (date-time)Yes
products[].prices[].currencystringYesISO-4217 currency code.
products[].prices[].effectiveAmountnumberYesSale price when the current time is in the sale window, otherwise the base amount.
products[].prices[].idstringYes
products[].prices[].rebillAtSaleAmountbooleanYesWhen false an active sale applies to the first subscription charge only (rebills revert to the full amount); when true the sale price is retained for the subscription lifetime.
products[].prices[].saleAmountnumber or nullYesSale price; populated only when sale window is set.
products[].prices[].saleEndsAtstring (date-time) or nullYes
products[].prices[].saleStartsAtstring (date-time) or nullYes
products[].prices[].statusstringYesInactive prices remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
products[].prices[].updatedAtstring (date-time)Yes
products[].prices[].variantIdstring (uuid) or nullYes
products[].recurringIntervalstring or nullYesAllowed values: day, week, month, year.
products[].recurringIntervalCountnumber or nullYes
products[].recurringTrialPeriodDaysnumber or nullYes
products[].recurringTrialPeriodDaysFreebooleanYesWhether the trial period is free. When false the trial period is charged the effective sale price before rebilling at the recurring price.
products[].statusstringYesCatalog lifecycle state. Inactive products retain identity and history but cannot be sold. Allowed values: active, inactive.
products[].stockQuantitynumber or nullYes
products[].tagsarray of string or nullYes
products[].tangibilitystring or nullYesAllowed values: digital, physical.
products[].taxCodestring or nullYes
products[].typestringYesAllowed values: subscription, item.
products[].updatedAtstring (date-time)Yes
products[].variantsarray of objectYes
products[].variants[].attributesobject or nullYes
products[].variants[].availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
products[].variants[].createdAtstring (date-time)Yes
products[].variants[].heightMmnumber or nullYes
products[].variants[].idstringYes
products[].variants[].lengthMmnumber or nullYes
products[].variants[].namestring or nullYes
products[].variants[].skustringYes
products[].variants[].statusstringYesInactive variants remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
products[].variants[].stockQuantitynumber or nullYes
products[].variants[].updatedAtstring (date-time)Yes
products[].variants[].weightGramsnumber or nullYes
products[].variants[].widthMmnumber or nullYes
products[].weightGramsnumber or nullYes
products[].widthMmnumber or nullYes
updatedAtstring (date-time)Yes

Errors

StatusDescription
400The supplied request body or list query is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Collection mutations require an owner or admin membership.

Collection_findOne

Get Collection

Returns a single collection with its products.

PolicyValue
OperationGET /v1/collections/{uuid}
Classread-only
Risklow
Confirmationnot-required
Retrysafe
Rate-limit tierread
Rolesowner, admin, member
Scopesmcp:read

Arguments

ArgumentInTypeRequiredDescription
uuidpathstringYes

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
codestringYes
createdAtstring (date-time)Yes
descriptionstring or nullYes
idstringYes
namestringYes
productsarray of objectYes
products[].ageGroupstring or nullYes
products[].attributesobject or nullYes
products[].availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
products[].brandobject or nullYes
products[].brand.codestringYes
products[].brand.createdAtstring (date-time)Yes
products[].brand.descriptionstring or nullYes
products[].brand.idstringYes
products[].brand.namestringYes
products[].brand.updatedAtstring (date-time)Yes
products[].categoryobject or nullYes
products[].category.codestringYes
products[].category.createdAtstring (date-time)Yes
products[].category.descriptionstring or nullYes
products[].category.idstringYes
products[].category.namestringYes
products[].category.parentIdstring (uuid) or nullYes
products[].category.updatedAtstring (date-time)Yes
products[].codestringYes
products[].createdAtstring (date-time)Yes
products[].descriptionstring or nullYes
products[].genderstring or nullYes
products[].gtinstring or nullYes
products[].heightMmnumber or nullYes
products[].idstringYes
products[].knowledgeBaseUrlstring or nullYes
products[].lengthMmnumber or nullYes
products[].longDescriptionstring or nullYes
products[].mediaarray of objectYes
products[].media[].altTextstring or nullYes
products[].media[].createdAtstring (date-time)Yes
products[].media[].idstringYes
products[].media[].isPrimarybooleanYes
products[].media[].positionnumberYes
products[].media[].typestringYesAllowed values: image, video, model_3d, document.
products[].media[].updatedAtstring (date-time)Yes
products[].media[].urlstringYes
products[].media[].variantIdstring (uuid) or nullYes
products[].metadataobject or nullYes
products[].namestringYes
products[].pricesarray of objectYes
products[].prices[].amountnumberYesBase price in major units.
products[].prices[].createdAtstring (date-time)Yes
products[].prices[].currencystringYesISO-4217 currency code.
products[].prices[].effectiveAmountnumberYesSale price when the current time is in the sale window, otherwise the base amount.
products[].prices[].idstringYes
products[].prices[].rebillAtSaleAmountbooleanYesWhen false an active sale applies to the first subscription charge only (rebills revert to the full amount); when true the sale price is retained for the subscription lifetime.
products[].prices[].saleAmountnumber or nullYesSale price; populated only when sale window is set.
products[].prices[].saleEndsAtstring (date-time) or nullYes
products[].prices[].saleStartsAtstring (date-time) or nullYes
products[].prices[].statusstringYesInactive prices remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
products[].prices[].updatedAtstring (date-time)Yes
products[].prices[].variantIdstring (uuid) or nullYes
products[].recurringIntervalstring or nullYesAllowed values: day, week, month, year.
products[].recurringIntervalCountnumber or nullYes
products[].recurringTrialPeriodDaysnumber or nullYes
products[].recurringTrialPeriodDaysFreebooleanYesWhether the trial period is free. When false the trial period is charged the effective sale price before rebilling at the recurring price.
products[].statusstringYesCatalog lifecycle state. Inactive products retain identity and history but cannot be sold. Allowed values: active, inactive.
products[].stockQuantitynumber or nullYes
products[].tagsarray of string or nullYes
products[].tangibilitystring or nullYesAllowed values: digital, physical.
products[].taxCodestring or nullYes
products[].typestringYesAllowed values: subscription, item.
products[].updatedAtstring (date-time)Yes
products[].variantsarray of objectYes
products[].variants[].attributesobject or nullYes
products[].variants[].availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
products[].variants[].createdAtstring (date-time)Yes
products[].variants[].heightMmnumber or nullYes
products[].variants[].idstringYes
products[].variants[].lengthMmnumber or nullYes
products[].variants[].namestring or nullYes
products[].variants[].skustringYes
products[].variants[].statusstringYesInactive variants remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
products[].variants[].stockQuantitynumber or nullYes
products[].variants[].updatedAtstring (date-time)Yes
products[].variants[].weightGramsnumber or nullYes
products[].variants[].widthMmnumber or nullYes
products[].weightGramsnumber or nullYes
products[].widthMmnumber or nullYes
updatedAtstring (date-time)Yes

Errors

StatusDescription
400The supplied request body or list query is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Collection mutations require an owner or admin membership.
404No collection with the requested id exists for this client.

Collection_list

List Collections

Returns paginated collections for the authenticated client. Supports page, limit, sort[asc|desc], and whitelisted filters for id, code, name, createdAt, and updatedAt.

PolicyValue
OperationGET /v1/collections
Classread-only
Risklow
Confirmationnot-required
Retrysafe
Rate-limit tierread
Rolesowner, admin, member
Scopesmcp:read

Arguments

ArgumentInTypeRequiredDescription
pagequeryintegerNo1-based page number for paginated list endpoints. Default: 1. Minimum: 1.
limitqueryintegerNoMaximum number of records to return per page. Default: 20. Minimum: 1. Maximum: 100.
sortquerystringNoSort by one allowed field. Use exactly one of sort[asc] or sort[desc]. Allowed fields: code, createdAt, name, updatedAt. Default: createdAt DESC. Allowed values: code, createdAt, name, updatedAt.
relationquerystringNoThis endpoint does not support relation aliases. Supplying relation returns 400.
codequerystringNoClient-defined collection code. Equality filter. Pass without operator for exact match or pass any of the following operators: [search]. [search] is case-insensitive text contains matching.
createdAtquerystring (date-time)NoCollection creation timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
idquerystringNoCollection id. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
namequerystringNoCollection name. Equality filter. Pass without operator for exact match or pass any of the following operators: [search]. [search] is case-insensitive text contains matching.
updatedAtquerystring (date-time)NoCollection update timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
dataarray of objectYes
data[].codestringYes
data[].createdAtstring (date-time)Yes
data[].descriptionstring or nullYes
data[].idstringYes
data[].namestringYes
data[].productsarray of objectYes
data[].products[].ageGroupstring or nullYes
data[].products[].attributesobject or nullYes
data[].products[].availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
data[].products[].brandobject or nullYes
data[].products[].brand.codestringYes
data[].products[].brand.createdAtstring (date-time)Yes
data[].products[].brand.descriptionstring or nullYes
data[].products[].brand.idstringYes
data[].products[].brand.namestringYes
data[].products[].brand.updatedAtstring (date-time)Yes
data[].products[].categoryobject or nullYes
data[].products[].category.codestringYes
data[].products[].category.createdAtstring (date-time)Yes
data[].products[].category.descriptionstring or nullYes
data[].products[].category.idstringYes
data[].products[].category.namestringYes
data[].products[].category.parentIdstring (uuid) or nullYes
data[].products[].category.updatedAtstring (date-time)Yes
data[].products[].codestringYes
data[].products[].createdAtstring (date-time)Yes
data[].products[].descriptionstring or nullYes
data[].products[].genderstring or nullYes
data[].products[].gtinstring or nullYes
data[].products[].heightMmnumber or nullYes
data[].products[].idstringYes
data[].products[].knowledgeBaseUrlstring or nullYes
data[].products[].lengthMmnumber or nullYes
data[].products[].longDescriptionstring or nullYes
data[].products[].mediaarray of objectYes
data[].products[].media[].altTextstring or nullYes
data[].products[].media[].createdAtstring (date-time)Yes
data[].products[].media[].idstringYes
data[].products[].media[].isPrimarybooleanYes
data[].products[].media[].positionnumberYes
data[].products[].media[].typestringYesAllowed values: image, video, model_3d, document.
data[].products[].media[].updatedAtstring (date-time)Yes
data[].products[].media[].urlstringYes
data[].products[].media[].variantIdstring (uuid) or nullYes
data[].products[].metadataobject or nullYes
data[].products[].namestringYes
data[].products[].pricesarray of objectYes
data[].products[].prices[].amountnumberYesBase price in major units.
data[].products[].prices[].createdAtstring (date-time)Yes
data[].products[].prices[].currencystringYesISO-4217 currency code.
data[].products[].prices[].effectiveAmountnumberYesSale price when the current time is in the sale window, otherwise the base amount.
data[].products[].prices[].idstringYes
data[].products[].prices[].rebillAtSaleAmountbooleanYesWhen false an active sale applies to the first subscription charge only (rebills revert to the full amount); when true the sale price is retained for the subscription lifetime.
data[].products[].prices[].saleAmountnumber or nullYesSale price; populated only when sale window is set.
data[].products[].prices[].saleEndsAtstring (date-time) or nullYes
data[].products[].prices[].saleStartsAtstring (date-time) or nullYes
data[].products[].prices[].statusstringYesInactive prices remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
data[].products[].prices[].updatedAtstring (date-time)Yes
data[].products[].prices[].variantIdstring (uuid) or nullYes
data[].products[].recurringIntervalstring or nullYesAllowed values: day, week, month, year.
data[].products[].recurringIntervalCountnumber or nullYes
data[].products[].recurringTrialPeriodDaysnumber or nullYes
data[].products[].recurringTrialPeriodDaysFreebooleanYesWhether the trial period is free. When false the trial period is charged the effective sale price before rebilling at the recurring price.
data[].products[].statusstringYesCatalog lifecycle state. Inactive products retain identity and history but cannot be sold. Allowed values: active, inactive.
data[].products[].stockQuantitynumber or nullYes
data[].products[].tagsarray of string or nullYes
data[].products[].tangibilitystring or nullYesAllowed values: digital, physical.
data[].products[].taxCodestring or nullYes
data[].products[].typestringYesAllowed values: subscription, item.
data[].products[].updatedAtstring (date-time)Yes
data[].products[].variantsarray of objectYes
data[].products[].variants[].attributesobject or nullYes
data[].products[].variants[].availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
data[].products[].variants[].createdAtstring (date-time)Yes
data[].products[].variants[].heightMmnumber or nullYes
data[].products[].variants[].idstringYes
data[].products[].variants[].lengthMmnumber or nullYes
data[].products[].variants[].namestring or nullYes
data[].products[].variants[].skustringYes
data[].products[].variants[].statusstringYesInactive variants remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
data[].products[].variants[].stockQuantitynumber or nullYes
data[].products[].variants[].updatedAtstring (date-time)Yes
data[].products[].variants[].weightGramsnumber or nullYes
data[].products[].variants[].widthMmnumber or nullYes
data[].products[].weightGramsnumber or nullYes
data[].products[].widthMmnumber or nullYes
data[].updatedAtstring (date-time)Yes
limitnumberYes
pagenumberYes
pagesnumberYes
totalnumberYes

Errors

StatusDescription
400The supplied request body or list query is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Collection mutations require an owner or admin membership.

Collection_update

Update Collection

Updates a collection. Products are replaced when productIds is supplied.

PolicyValue
OperationPATCH /v1/collections/{uuid}
Classmutating
Riskmedium
Confirmationrequired
Retrysame-idempotency-key
Rate-limit tiermutation
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
uuidpathstringYes
codebodystringNoMinimum length: 1. Maximum length: 255.
descriptionbodystringNoMinimum length: 0. Maximum length: 1000.
namebodystringNoMinimum length: 1. Maximum length: 255.
productIdsbodyarray of string (uuid)NoProduct ids in this collection.

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
codestringYes
createdAtstring (date-time)Yes
descriptionstring or nullYes
idstringYes
namestringYes
productsarray of objectYes
products[].ageGroupstring or nullYes
products[].attributesobject or nullYes
products[].availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
products[].brandobject or nullYes
products[].brand.codestringYes
products[].brand.createdAtstring (date-time)Yes
products[].brand.descriptionstring or nullYes
products[].brand.idstringYes
products[].brand.namestringYes
products[].brand.updatedAtstring (date-time)Yes
products[].categoryobject or nullYes
products[].category.codestringYes
products[].category.createdAtstring (date-time)Yes
products[].category.descriptionstring or nullYes
products[].category.idstringYes
products[].category.namestringYes
products[].category.parentIdstring (uuid) or nullYes
products[].category.updatedAtstring (date-time)Yes
products[].codestringYes
products[].createdAtstring (date-time)Yes
products[].descriptionstring or nullYes
products[].genderstring or nullYes
products[].gtinstring or nullYes
products[].heightMmnumber or nullYes
products[].idstringYes
products[].knowledgeBaseUrlstring or nullYes
products[].lengthMmnumber or nullYes
products[].longDescriptionstring or nullYes
products[].mediaarray of objectYes
products[].media[].altTextstring or nullYes
products[].media[].createdAtstring (date-time)Yes
products[].media[].idstringYes
products[].media[].isPrimarybooleanYes
products[].media[].positionnumberYes
products[].media[].typestringYesAllowed values: image, video, model_3d, document.
products[].media[].updatedAtstring (date-time)Yes
products[].media[].urlstringYes
products[].media[].variantIdstring (uuid) or nullYes
products[].metadataobject or nullYes
products[].namestringYes
products[].pricesarray of objectYes
products[].prices[].amountnumberYesBase price in major units.
products[].prices[].createdAtstring (date-time)Yes
products[].prices[].currencystringYesISO-4217 currency code.
products[].prices[].effectiveAmountnumberYesSale price when the current time is in the sale window, otherwise the base amount.
products[].prices[].idstringYes
products[].prices[].rebillAtSaleAmountbooleanYesWhen false an active sale applies to the first subscription charge only (rebills revert to the full amount); when true the sale price is retained for the subscription lifetime.
products[].prices[].saleAmountnumber or nullYesSale price; populated only when sale window is set.
products[].prices[].saleEndsAtstring (date-time) or nullYes
products[].prices[].saleStartsAtstring (date-time) or nullYes
products[].prices[].statusstringYesInactive prices remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
products[].prices[].updatedAtstring (date-time)Yes
products[].prices[].variantIdstring (uuid) or nullYes
products[].recurringIntervalstring or nullYesAllowed values: day, week, month, year.
products[].recurringIntervalCountnumber or nullYes
products[].recurringTrialPeriodDaysnumber or nullYes
products[].recurringTrialPeriodDaysFreebooleanYesWhether the trial period is free. When false the trial period is charged the effective sale price before rebilling at the recurring price.
products[].statusstringYesCatalog lifecycle state. Inactive products retain identity and history but cannot be sold. Allowed values: active, inactive.
products[].stockQuantitynumber or nullYes
products[].tagsarray of string or nullYes
products[].tangibilitystring or nullYesAllowed values: digital, physical.
products[].taxCodestring or nullYes
products[].typestringYesAllowed values: subscription, item.
products[].updatedAtstring (date-time)Yes
products[].variantsarray of objectYes
products[].variants[].attributesobject or nullYes
products[].variants[].availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
products[].variants[].createdAtstring (date-time)Yes
products[].variants[].heightMmnumber or nullYes
products[].variants[].idstringYes
products[].variants[].lengthMmnumber or nullYes
products[].variants[].namestring or nullYes
products[].variants[].skustringYes
products[].variants[].statusstringYesInactive variants remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
products[].variants[].stockQuantitynumber or nullYes
products[].variants[].updatedAtstring (date-time)Yes
products[].variants[].weightGramsnumber or nullYes
products[].variants[].widthMmnumber or nullYes
products[].weightGramsnumber or nullYes
products[].widthMmnumber or nullYes
updatedAtstring (date-time)Yes

Errors

StatusDescription
400The supplied request body or list query is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Collection mutations require an owner or admin membership.
404No collection with the requested id exists for this client.

Coupon_create

Create Coupon

Creates a coupon optionally scoped to a list of products.

PolicyValue
OperationPOST /v1/coupons
Classmutating
Riskmedium
Confirmationrequired
Retrysame-idempotency-key
Rate-limit tiermutation
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
codebodystringYesMinimum length: 1. Maximum length: 255.
descriptionbodystringNoMinimum length: 0. Maximum length: 1000.
durationbodystringYesAllowed values: forever, once, repeating.
metadatabodyobjectNo
namebodystringYesMinimum length: 1. Maximum length: 255.
percentageOffbodynumberNoPercent discount in major units, e.g. 10 for 10%. Required when type is percentage. Must be omitted when type is amount. Minimum: 0.01. Maximum: 100.
pricesbodyarray of objectNoRequired when type is amount. Must be omitted when type is percentage. Minimum items: 1.
prices[].amountbodynumberYesDiscount amount in major units. Up to 2 decimal places. Minimum: 0. Maximum: 99999999.99.
prices[].currencybodystringYesMinimum length: 3. Maximum length: 3.
productIdsbodyarray of string (uuid)NoProduct ids this coupon applies to. Empty or omitted means the coupon applies to every product.
repeatingIntervalCountbodynumberNoNumber of intervals the coupon repeats for (only used when duration is repeating). Minimum: 1.
stackablebodybooleanNoWhether this coupon may be combined with other coupons in the same checkout session. Defaults to false; when false, the coupon cannot appear alongside any other coupon code in a multi-coupon request. Default: false.
typebodystringYesAllowed values: percentage, amount.

Result

Returns 201 with a JSON body.

FieldTypeRequiredDescription
codestringYes
createdAtstring (date-time)Yes
descriptionstring or nullYes
durationstringYesAllowed values: forever, once, repeating.
idstringYes
metadataobject or nullYes
namestringYes
percentageOffnumber or nullYesPercent discount in major units. Populated when type is percentage; null otherwise.
pricesarray of objectYes
prices[].amountnumberYesDiscount amount in major units.
prices[].createdAtstring (date-time)Yes
prices[].currencystringYesISO-4217 currency code.
prices[].idstringYes
prices[].updatedAtstring (date-time)Yes
productsarray of objectYesEmpty array means the coupon applies to every product.
products[].ageGroupstring or nullYes
products[].attributesobject or nullYes
products[].availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
products[].brandobject or nullYes
products[].brand.codestringYes
products[].brand.createdAtstring (date-time)Yes
products[].brand.descriptionstring or nullYes
products[].brand.idstringYes
products[].brand.namestringYes
products[].brand.updatedAtstring (date-time)Yes
products[].categoryobject or nullYes
products[].category.codestringYes
products[].category.createdAtstring (date-time)Yes
products[].category.descriptionstring or nullYes
products[].category.idstringYes
products[].category.namestringYes
products[].category.parentIdstring (uuid) or nullYes
products[].category.updatedAtstring (date-time)Yes
products[].codestringYes
products[].createdAtstring (date-time)Yes
products[].descriptionstring or nullYes
products[].genderstring or nullYes
products[].gtinstring or nullYes
products[].heightMmnumber or nullYes
products[].idstringYes
products[].knowledgeBaseUrlstring or nullYes
products[].lengthMmnumber or nullYes
products[].longDescriptionstring or nullYes
products[].mediaarray of objectYes
products[].media[].altTextstring or nullYes
products[].media[].createdAtstring (date-time)Yes
products[].media[].idstringYes
products[].media[].isPrimarybooleanYes
products[].media[].positionnumberYes
products[].media[].typestringYesAllowed values: image, video, model_3d, document.
products[].media[].updatedAtstring (date-time)Yes
products[].media[].urlstringYes
products[].media[].variantIdstring (uuid) or nullYes
products[].metadataobject or nullYes
products[].namestringYes
products[].pricesarray of objectYes
products[].prices[].amountnumberYesBase price in major units.
products[].prices[].createdAtstring (date-time)Yes
products[].prices[].currencystringYesISO-4217 currency code.
products[].prices[].effectiveAmountnumberYesSale price when the current time is in the sale window, otherwise the base amount.
products[].prices[].idstringYes
products[].prices[].rebillAtSaleAmountbooleanYesWhen false an active sale applies to the first subscription charge only (rebills revert to the full amount); when true the sale price is retained for the subscription lifetime.
products[].prices[].saleAmountnumber or nullYesSale price; populated only when sale window is set.
products[].prices[].saleEndsAtstring (date-time) or nullYes
products[].prices[].saleStartsAtstring (date-time) or nullYes
products[].prices[].statusstringYesInactive prices remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
products[].prices[].updatedAtstring (date-time)Yes
products[].prices[].variantIdstring (uuid) or nullYes
products[].recurringIntervalstring or nullYesAllowed values: day, week, month, year.
products[].recurringIntervalCountnumber or nullYes
products[].recurringTrialPeriodDaysnumber or nullYes
products[].recurringTrialPeriodDaysFreebooleanYesWhether the trial period is free. When false the trial period is charged the effective sale price before rebilling at the recurring price.
products[].statusstringYesCatalog lifecycle state. Inactive products retain identity and history but cannot be sold. Allowed values: active, inactive.
products[].stockQuantitynumber or nullYes
products[].tagsarray of string or nullYes
products[].tangibilitystring or nullYesAllowed values: digital, physical.
products[].taxCodestring or nullYes
products[].typestringYesAllowed values: subscription, item.
products[].updatedAtstring (date-time)Yes
products[].variantsarray of objectYes
products[].variants[].attributesobject or nullYes
products[].variants[].availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
products[].variants[].createdAtstring (date-time)Yes
products[].variants[].heightMmnumber or nullYes
products[].variants[].idstringYes
products[].variants[].lengthMmnumber or nullYes
products[].variants[].namestring or nullYes
products[].variants[].skustringYes
products[].variants[].statusstringYesInactive variants remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
products[].variants[].stockQuantitynumber or nullYes
products[].variants[].updatedAtstring (date-time)Yes
products[].variants[].weightGramsnumber or nullYes
products[].variants[].widthMmnumber or nullYes
products[].weightGramsnumber or nullYes
products[].widthMmnumber or nullYes
repeatingIntervalCountnumber or nullYes
stackablebooleanYesWhether this coupon may be combined with other coupons in the same checkout session. When false, the coupon cannot appear alongside any other coupon code in a multi-coupon request.
statusstringYesInactive coupons retain their code and history but cannot be applied to new checkouts. Allowed values: active, inactive.
typestringYesAllowed values: percentage, amount.
updatedAtstring (date-time)Yes

Errors

StatusDescription
400The supplied request body or list query is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Coupon mutations require an owner or admin membership.

Coupon_findOne

Get Coupon

Returns a single coupon with nested prices and products.

PolicyValue
OperationGET /v1/coupons/{uuid}
Classread-only
Risklow
Confirmationnot-required
Retrysafe
Rate-limit tierread
Rolesowner, admin, member
Scopesmcp:read

Arguments

ArgumentInTypeRequiredDescription
uuidpathstringYes

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
codestringYes
createdAtstring (date-time)Yes
descriptionstring or nullYes
durationstringYesAllowed values: forever, once, repeating.
idstringYes
metadataobject or nullYes
namestringYes
percentageOffnumber or nullYesPercent discount in major units. Populated when type is percentage; null otherwise.
pricesarray of objectYes
prices[].amountnumberYesDiscount amount in major units.
prices[].createdAtstring (date-time)Yes
prices[].currencystringYesISO-4217 currency code.
prices[].idstringYes
prices[].updatedAtstring (date-time)Yes
productsarray of objectYesEmpty array means the coupon applies to every product.
products[].ageGroupstring or nullYes
products[].attributesobject or nullYes
products[].availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
products[].brandobject or nullYes
products[].brand.codestringYes
products[].brand.createdAtstring (date-time)Yes
products[].brand.descriptionstring or nullYes
products[].brand.idstringYes
products[].brand.namestringYes
products[].brand.updatedAtstring (date-time)Yes
products[].categoryobject or nullYes
products[].category.codestringYes
products[].category.createdAtstring (date-time)Yes
products[].category.descriptionstring or nullYes
products[].category.idstringYes
products[].category.namestringYes
products[].category.parentIdstring (uuid) or nullYes
products[].category.updatedAtstring (date-time)Yes
products[].codestringYes
products[].createdAtstring (date-time)Yes
products[].descriptionstring or nullYes
products[].genderstring or nullYes
products[].gtinstring or nullYes
products[].heightMmnumber or nullYes
products[].idstringYes
products[].knowledgeBaseUrlstring or nullYes
products[].lengthMmnumber or nullYes
products[].longDescriptionstring or nullYes
products[].mediaarray of objectYes
products[].media[].altTextstring or nullYes
products[].media[].createdAtstring (date-time)Yes
products[].media[].idstringYes
products[].media[].isPrimarybooleanYes
products[].media[].positionnumberYes
products[].media[].typestringYesAllowed values: image, video, model_3d, document.
products[].media[].updatedAtstring (date-time)Yes
products[].media[].urlstringYes
products[].media[].variantIdstring (uuid) or nullYes
products[].metadataobject or nullYes
products[].namestringYes
products[].pricesarray of objectYes
products[].prices[].amountnumberYesBase price in major units.
products[].prices[].createdAtstring (date-time)Yes
products[].prices[].currencystringYesISO-4217 currency code.
products[].prices[].effectiveAmountnumberYesSale price when the current time is in the sale window, otherwise the base amount.
products[].prices[].idstringYes
products[].prices[].rebillAtSaleAmountbooleanYesWhen false an active sale applies to the first subscription charge only (rebills revert to the full amount); when true the sale price is retained for the subscription lifetime.
products[].prices[].saleAmountnumber or nullYesSale price; populated only when sale window is set.
products[].prices[].saleEndsAtstring (date-time) or nullYes
products[].prices[].saleStartsAtstring (date-time) or nullYes
products[].prices[].statusstringYesInactive prices remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
products[].prices[].updatedAtstring (date-time)Yes
products[].prices[].variantIdstring (uuid) or nullYes
products[].recurringIntervalstring or nullYesAllowed values: day, week, month, year.
products[].recurringIntervalCountnumber or nullYes
products[].recurringTrialPeriodDaysnumber or nullYes
products[].recurringTrialPeriodDaysFreebooleanYesWhether the trial period is free. When false the trial period is charged the effective sale price before rebilling at the recurring price.
products[].statusstringYesCatalog lifecycle state. Inactive products retain identity and history but cannot be sold. Allowed values: active, inactive.
products[].stockQuantitynumber or nullYes
products[].tagsarray of string or nullYes
products[].tangibilitystring or nullYesAllowed values: digital, physical.
products[].taxCodestring or nullYes
products[].typestringYesAllowed values: subscription, item.
products[].updatedAtstring (date-time)Yes
products[].variantsarray of objectYes
products[].variants[].attributesobject or nullYes
products[].variants[].availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
products[].variants[].createdAtstring (date-time)Yes
products[].variants[].heightMmnumber or nullYes
products[].variants[].idstringYes
products[].variants[].lengthMmnumber or nullYes
products[].variants[].namestring or nullYes
products[].variants[].skustringYes
products[].variants[].statusstringYesInactive variants remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
products[].variants[].stockQuantitynumber or nullYes
products[].variants[].updatedAtstring (date-time)Yes
products[].variants[].weightGramsnumber or nullYes
products[].variants[].widthMmnumber or nullYes
products[].weightGramsnumber or nullYes
products[].widthMmnumber or nullYes
repeatingIntervalCountnumber or nullYes
stackablebooleanYesWhether this coupon may be combined with other coupons in the same checkout session. When false, the coupon cannot appear alongside any other coupon code in a multi-coupon request.
statusstringYesInactive coupons retain their code and history but cannot be applied to new checkouts. Allowed values: active, inactive.
typestringYesAllowed values: percentage, amount.
updatedAtstring (date-time)Yes

Errors

StatusDescription
400The supplied request body or list query is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Coupon mutations require an owner or admin membership.
404No coupon with the requested id exists for this client.

Coupon_list

List Coupons

Returns paginated coupons. Dashboard bearer callers see active and inactive coupons by default and may filter by status; legacy Basic callers retain active-only defaults.

PolicyValue
OperationGET /v1/coupons
Classread-only
Risklow
Confirmationnot-required
Retrysafe
Rate-limit tierread
Rolesowner, admin, member
Scopesmcp:read

Arguments

ArgumentInTypeRequiredDescription
pagequeryintegerNo1-based page number for paginated list endpoints. Default: 1. Minimum: 1.
limitqueryintegerNoMaximum number of records to return per page. Default: 20. Minimum: 1. Maximum: 100.
sortquerystringNoSort by one allowed field. Use exactly one of sort[asc] or sort[desc]. Allowed fields: code, createdAt, duration, name, type, updatedAt. Default: createdAt DESC. Allowed values: code, createdAt, duration, name, type, updatedAt.
relationquerystringNoThis endpoint does not support relation aliases. Supplying relation returns 400.
codequerystringNoClient-defined coupon code. Equality filter. Pass without operator for exact match or pass any of the following operators: [search]. [search] is case-insensitive text contains matching.
createdAtquerystring (date-time)NoCoupon creation timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
durationquerystringNoCoupon duration. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: forever, once, repeating.
idquerystringNoCoupon id. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
namequerystringNoCoupon name. Equality filter. Pass without operator for exact match or pass any of the following operators: [search]. [search] is case-insensitive text contains matching.
statusquerystringNoCatalog lifecycle state. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: active, inactive.
typequerystringNoCoupon type. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: percentage, amount.
updatedAtquerystring (date-time)NoCoupon update timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
dataarray of objectYes
data[].codestringYes
data[].createdAtstring (date-time)Yes
data[].descriptionstring or nullYes
data[].durationstringYesAllowed values: forever, once, repeating.
data[].idstringYes
data[].metadataobject or nullYes
data[].namestringYes
data[].percentageOffnumber or nullYesPercent discount in major units. Populated when type is percentage; null otherwise.
data[].pricesarray of objectYes
data[].prices[].amountnumberYesDiscount amount in major units.
data[].prices[].createdAtstring (date-time)Yes
data[].prices[].currencystringYesISO-4217 currency code.
data[].prices[].idstringYes
data[].prices[].updatedAtstring (date-time)Yes
data[].productsarray of objectYesEmpty array means the coupon applies to every product.
data[].products[].ageGroupstring or nullYes
data[].products[].attributesobject or nullYes
data[].products[].availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
data[].products[].brandobject or nullYes
data[].products[].brand.codestringYes
data[].products[].brand.createdAtstring (date-time)Yes
data[].products[].brand.descriptionstring or nullYes
data[].products[].brand.idstringYes
data[].products[].brand.namestringYes
data[].products[].brand.updatedAtstring (date-time)Yes
data[].products[].categoryobject or nullYes
data[].products[].category.codestringYes
data[].products[].category.createdAtstring (date-time)Yes
data[].products[].category.descriptionstring or nullYes
data[].products[].category.idstringYes
data[].products[].category.namestringYes
data[].products[].category.parentIdstring (uuid) or nullYes
data[].products[].category.updatedAtstring (date-time)Yes
data[].products[].codestringYes
data[].products[].createdAtstring (date-time)Yes
data[].products[].descriptionstring or nullYes
data[].products[].genderstring or nullYes
data[].products[].gtinstring or nullYes
data[].products[].heightMmnumber or nullYes
data[].products[].idstringYes
data[].products[].knowledgeBaseUrlstring or nullYes
data[].products[].lengthMmnumber or nullYes
data[].products[].longDescriptionstring or nullYes
data[].products[].mediaarray of objectYes
data[].products[].media[].altTextstring or nullYes
data[].products[].media[].createdAtstring (date-time)Yes
data[].products[].media[].idstringYes
data[].products[].media[].isPrimarybooleanYes
data[].products[].media[].positionnumberYes
data[].products[].media[].typestringYesAllowed values: image, video, model_3d, document.
data[].products[].media[].updatedAtstring (date-time)Yes
data[].products[].media[].urlstringYes
data[].products[].media[].variantIdstring (uuid) or nullYes
data[].products[].metadataobject or nullYes
data[].products[].namestringYes
data[].products[].pricesarray of objectYes
data[].products[].prices[].amountnumberYesBase price in major units.
data[].products[].prices[].createdAtstring (date-time)Yes
data[].products[].prices[].currencystringYesISO-4217 currency code.
data[].products[].prices[].effectiveAmountnumberYesSale price when the current time is in the sale window, otherwise the base amount.
data[].products[].prices[].idstringYes
data[].products[].prices[].rebillAtSaleAmountbooleanYesWhen false an active sale applies to the first subscription charge only (rebills revert to the full amount); when true the sale price is retained for the subscription lifetime.
data[].products[].prices[].saleAmountnumber or nullYesSale price; populated only when sale window is set.
data[].products[].prices[].saleEndsAtstring (date-time) or nullYes
data[].products[].prices[].saleStartsAtstring (date-time) or nullYes
data[].products[].prices[].statusstringYesInactive prices remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
data[].products[].prices[].updatedAtstring (date-time)Yes
data[].products[].prices[].variantIdstring (uuid) or nullYes
data[].products[].recurringIntervalstring or nullYesAllowed values: day, week, month, year.
data[].products[].recurringIntervalCountnumber or nullYes
data[].products[].recurringTrialPeriodDaysnumber or nullYes
data[].products[].recurringTrialPeriodDaysFreebooleanYesWhether the trial period is free. When false the trial period is charged the effective sale price before rebilling at the recurring price.
data[].products[].statusstringYesCatalog lifecycle state. Inactive products retain identity and history but cannot be sold. Allowed values: active, inactive.
data[].products[].stockQuantitynumber or nullYes
data[].products[].tagsarray of string or nullYes
data[].products[].tangibilitystring or nullYesAllowed values: digital, physical.
data[].products[].taxCodestring or nullYes
data[].products[].typestringYesAllowed values: subscription, item.
data[].products[].updatedAtstring (date-time)Yes
data[].products[].variantsarray of objectYes
data[].products[].variants[].attributesobject or nullYes
data[].products[].variants[].availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
data[].products[].variants[].createdAtstring (date-time)Yes
data[].products[].variants[].heightMmnumber or nullYes
data[].products[].variants[].idstringYes
data[].products[].variants[].lengthMmnumber or nullYes
data[].products[].variants[].namestring or nullYes
data[].products[].variants[].skustringYes
data[].products[].variants[].statusstringYesInactive variants remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
data[].products[].variants[].stockQuantitynumber or nullYes
data[].products[].variants[].updatedAtstring (date-time)Yes
data[].products[].variants[].weightGramsnumber or nullYes
data[].products[].variants[].widthMmnumber or nullYes
data[].products[].weightGramsnumber or nullYes
data[].products[].widthMmnumber or nullYes
data[].repeatingIntervalCountnumber or nullYes
data[].stackablebooleanYesWhether this coupon may be combined with other coupons in the same checkout session. When false, the coupon cannot appear alongside any other coupon code in a multi-coupon request.
data[].statusstringYesInactive coupons retain their code and history but cannot be applied to new checkouts. Allowed values: active, inactive.
data[].typestringYesAllowed values: percentage, amount.
data[].updatedAtstring (date-time)Yes
limitnumberYes
pagenumberYes
pagesnumberYes
totalnumberYes

Errors

StatusDescription
400The supplied request body or list query is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Coupon mutations require an owner or admin membership.

Coupon_reactivate

Reactivate Coupon

Reactivates a historically used coupon.

PolicyValue
OperationPOST /v1/coupons/{uuid}/reactivate
Classmutating
Riskmedium
Confirmationrequired
Retrysame-idempotency-key
Rate-limit tiermutation
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
uuidpathstringYes

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
codestringYes
createdAtstring (date-time)Yes
descriptionstring or nullYes
durationstringYesAllowed values: forever, once, repeating.
idstringYes
metadataobject or nullYes
namestringYes
percentageOffnumber or nullYesPercent discount in major units. Populated when type is percentage; null otherwise.
pricesarray of objectYes
prices[].amountnumberYesDiscount amount in major units.
prices[].createdAtstring (date-time)Yes
prices[].currencystringYesISO-4217 currency code.
prices[].idstringYes
prices[].updatedAtstring (date-time)Yes
productsarray of objectYesEmpty array means the coupon applies to every product.
products[].ageGroupstring or nullYes
products[].attributesobject or nullYes
products[].availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
products[].brandobject or nullYes
products[].brand.codestringYes
products[].brand.createdAtstring (date-time)Yes
products[].brand.descriptionstring or nullYes
products[].brand.idstringYes
products[].brand.namestringYes
products[].brand.updatedAtstring (date-time)Yes
products[].categoryobject or nullYes
products[].category.codestringYes
products[].category.createdAtstring (date-time)Yes
products[].category.descriptionstring or nullYes
products[].category.idstringYes
products[].category.namestringYes
products[].category.parentIdstring (uuid) or nullYes
products[].category.updatedAtstring (date-time)Yes
products[].codestringYes
products[].createdAtstring (date-time)Yes
products[].descriptionstring or nullYes
products[].genderstring or nullYes
products[].gtinstring or nullYes
products[].heightMmnumber or nullYes
products[].idstringYes
products[].knowledgeBaseUrlstring or nullYes
products[].lengthMmnumber or nullYes
products[].longDescriptionstring or nullYes
products[].mediaarray of objectYes
products[].media[].altTextstring or nullYes
products[].media[].createdAtstring (date-time)Yes
products[].media[].idstringYes
products[].media[].isPrimarybooleanYes
products[].media[].positionnumberYes
products[].media[].typestringYesAllowed values: image, video, model_3d, document.
products[].media[].updatedAtstring (date-time)Yes
products[].media[].urlstringYes
products[].media[].variantIdstring (uuid) or nullYes
products[].metadataobject or nullYes
products[].namestringYes
products[].pricesarray of objectYes
products[].prices[].amountnumberYesBase price in major units.
products[].prices[].createdAtstring (date-time)Yes
products[].prices[].currencystringYesISO-4217 currency code.
products[].prices[].effectiveAmountnumberYesSale price when the current time is in the sale window, otherwise the base amount.
products[].prices[].idstringYes
products[].prices[].rebillAtSaleAmountbooleanYesWhen false an active sale applies to the first subscription charge only (rebills revert to the full amount); when true the sale price is retained for the subscription lifetime.
products[].prices[].saleAmountnumber or nullYesSale price; populated only when sale window is set.
products[].prices[].saleEndsAtstring (date-time) or nullYes
products[].prices[].saleStartsAtstring (date-time) or nullYes
products[].prices[].statusstringYesInactive prices remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
products[].prices[].updatedAtstring (date-time)Yes
products[].prices[].variantIdstring (uuid) or nullYes
products[].recurringIntervalstring or nullYesAllowed values: day, week, month, year.
products[].recurringIntervalCountnumber or nullYes
products[].recurringTrialPeriodDaysnumber or nullYes
products[].recurringTrialPeriodDaysFreebooleanYesWhether the trial period is free. When false the trial period is charged the effective sale price before rebilling at the recurring price.
products[].statusstringYesCatalog lifecycle state. Inactive products retain identity and history but cannot be sold. Allowed values: active, inactive.
products[].stockQuantitynumber or nullYes
products[].tagsarray of string or nullYes
products[].tangibilitystring or nullYesAllowed values: digital, physical.
products[].taxCodestring or nullYes
products[].typestringYesAllowed values: subscription, item.
products[].updatedAtstring (date-time)Yes
products[].variantsarray of objectYes
products[].variants[].attributesobject or nullYes
products[].variants[].availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
products[].variants[].createdAtstring (date-time)Yes
products[].variants[].heightMmnumber or nullYes
products[].variants[].idstringYes
products[].variants[].lengthMmnumber or nullYes
products[].variants[].namestring or nullYes
products[].variants[].skustringYes
products[].variants[].statusstringYesInactive variants remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
products[].variants[].stockQuantitynumber or nullYes
products[].variants[].updatedAtstring (date-time)Yes
products[].variants[].weightGramsnumber or nullYes
products[].variants[].widthMmnumber or nullYes
products[].weightGramsnumber or nullYes
products[].widthMmnumber or nullYes
repeatingIntervalCountnumber or nullYes
stackablebooleanYesWhether this coupon may be combined with other coupons in the same checkout session. When false, the coupon cannot appear alongside any other coupon code in a multi-coupon request.
statusstringYesInactive coupons retain their code and history but cannot be applied to new checkouts. Allowed values: active, inactive.
typestringYesAllowed values: percentage, amount.
updatedAtstring (date-time)Yes

Errors

StatusDescription
400The supplied request body or list query is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Coupon mutations require an owner or admin membership.

Coupon_update

Update Coupon

Updates a coupon. Prices and products are replaced when supplied.

PolicyValue
OperationPATCH /v1/coupons/{uuid}
Classmutating
Riskmedium
Confirmationrequired
Retrysame-idempotency-key
Rate-limit tiermutation
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
uuidpathstringYes
codebodystringNoMinimum length: 1. Maximum length: 255.
descriptionbodystringNoMinimum length: 0. Maximum length: 1000.
durationbodystringNoAllowed values: forever, once, repeating.
metadatabodyobjectNo
namebodystringNoMinimum length: 1. Maximum length: 255.
percentageOffbodynumberNoPercent discount in major units, e.g. 10 for 10%. Required when type is percentage. Must be omitted when type is amount. Minimum: 0.01. Maximum: 100.
pricesbodyarray of objectNoRequired when type is amount. Must be omitted when type is percentage. Minimum items: 1.
prices[].amountbodynumberYesDiscount amount in major units. Up to 2 decimal places. Minimum: 0. Maximum: 99999999.99.
prices[].currencybodystringYesMinimum length: 3. Maximum length: 3.
productIdsbodyarray of string (uuid)NoProduct ids this coupon applies to. Empty or omitted means the coupon applies to every product.
repeatingIntervalCountbodynumberNoNumber of intervals the coupon repeats for (only used when duration is repeating). Minimum: 1.
stackablebodybooleanNoWhether this coupon may be combined with other coupons in the same checkout session. Defaults to false; when false, the coupon cannot appear alongside any other coupon code in a multi-coupon request. Default: false.
typebodystringNoAllowed values: percentage, amount.

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
codestringYes
createdAtstring (date-time)Yes
descriptionstring or nullYes
durationstringYesAllowed values: forever, once, repeating.
idstringYes
metadataobject or nullYes
namestringYes
percentageOffnumber or nullYesPercent discount in major units. Populated when type is percentage; null otherwise.
pricesarray of objectYes
prices[].amountnumberYesDiscount amount in major units.
prices[].createdAtstring (date-time)Yes
prices[].currencystringYesISO-4217 currency code.
prices[].idstringYes
prices[].updatedAtstring (date-time)Yes
productsarray of objectYesEmpty array means the coupon applies to every product.
products[].ageGroupstring or nullYes
products[].attributesobject or nullYes
products[].availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
products[].brandobject or nullYes
products[].brand.codestringYes
products[].brand.createdAtstring (date-time)Yes
products[].brand.descriptionstring or nullYes
products[].brand.idstringYes
products[].brand.namestringYes
products[].brand.updatedAtstring (date-time)Yes
products[].categoryobject or nullYes
products[].category.codestringYes
products[].category.createdAtstring (date-time)Yes
products[].category.descriptionstring or nullYes
products[].category.idstringYes
products[].category.namestringYes
products[].category.parentIdstring (uuid) or nullYes
products[].category.updatedAtstring (date-time)Yes
products[].codestringYes
products[].createdAtstring (date-time)Yes
products[].descriptionstring or nullYes
products[].genderstring or nullYes
products[].gtinstring or nullYes
products[].heightMmnumber or nullYes
products[].idstringYes
products[].knowledgeBaseUrlstring or nullYes
products[].lengthMmnumber or nullYes
products[].longDescriptionstring or nullYes
products[].mediaarray of objectYes
products[].media[].altTextstring or nullYes
products[].media[].createdAtstring (date-time)Yes
products[].media[].idstringYes
products[].media[].isPrimarybooleanYes
products[].media[].positionnumberYes
products[].media[].typestringYesAllowed values: image, video, model_3d, document.
products[].media[].updatedAtstring (date-time)Yes
products[].media[].urlstringYes
products[].media[].variantIdstring (uuid) or nullYes
products[].metadataobject or nullYes
products[].namestringYes
products[].pricesarray of objectYes
products[].prices[].amountnumberYesBase price in major units.
products[].prices[].createdAtstring (date-time)Yes
products[].prices[].currencystringYesISO-4217 currency code.
products[].prices[].effectiveAmountnumberYesSale price when the current time is in the sale window, otherwise the base amount.
products[].prices[].idstringYes
products[].prices[].rebillAtSaleAmountbooleanYesWhen false an active sale applies to the first subscription charge only (rebills revert to the full amount); when true the sale price is retained for the subscription lifetime.
products[].prices[].saleAmountnumber or nullYesSale price; populated only when sale window is set.
products[].prices[].saleEndsAtstring (date-time) or nullYes
products[].prices[].saleStartsAtstring (date-time) or nullYes
products[].prices[].statusstringYesInactive prices remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
products[].prices[].updatedAtstring (date-time)Yes
products[].prices[].variantIdstring (uuid) or nullYes
products[].recurringIntervalstring or nullYesAllowed values: day, week, month, year.
products[].recurringIntervalCountnumber or nullYes
products[].recurringTrialPeriodDaysnumber or nullYes
products[].recurringTrialPeriodDaysFreebooleanYesWhether the trial period is free. When false the trial period is charged the effective sale price before rebilling at the recurring price.
products[].statusstringYesCatalog lifecycle state. Inactive products retain identity and history but cannot be sold. Allowed values: active, inactive.
products[].stockQuantitynumber or nullYes
products[].tagsarray of string or nullYes
products[].tangibilitystring or nullYesAllowed values: digital, physical.
products[].taxCodestring or nullYes
products[].typestringYesAllowed values: subscription, item.
products[].updatedAtstring (date-time)Yes
products[].variantsarray of objectYes
products[].variants[].attributesobject or nullYes
products[].variants[].availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
products[].variants[].createdAtstring (date-time)Yes
products[].variants[].heightMmnumber or nullYes
products[].variants[].idstringYes
products[].variants[].lengthMmnumber or nullYes
products[].variants[].namestring or nullYes
products[].variants[].skustringYes
products[].variants[].statusstringYesInactive variants remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
products[].variants[].stockQuantitynumber or nullYes
products[].variants[].updatedAtstring (date-time)Yes
products[].variants[].weightGramsnumber or nullYes
products[].variants[].widthMmnumber or nullYes
products[].weightGramsnumber or nullYes
products[].widthMmnumber or nullYes
repeatingIntervalCountnumber or nullYes
stackablebooleanYesWhether this coupon may be combined with other coupons in the same checkout session. When false, the coupon cannot appear alongside any other coupon code in a multi-coupon request.
statusstringYesInactive coupons retain their code and history but cannot be applied to new checkouts. Allowed values: active, inactive.
typestringYesAllowed values: percentage, amount.
updatedAtstring (date-time)Yes

Errors

StatusDescription
400The supplied request body or list query is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Coupon mutations require an owner or admin membership.
404No coupon with the requested id exists for this client.

Product_create

Create Product

Creates an active product immediately. Nested prices are the initial full price set; use the stable price routes for later single-price changes.

PolicyValue
OperationPOST /v1/products
Classmutating
Riskmedium
Confirmationrequired
Retrysame-idempotency-key
Rate-limit tiermutation
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
ageGroupbodystringNoMinimum length: 0. Maximum length: 32.
attributesbodyobjectNoFree-form technical attributes (e.g. dimensions, ingredients, energy rating).
availabilityStatusbodystringNoAllowed values: in_stock, out_of_stock, pre_order, backorder.
brandIdbodystring (uuid)NoBrand id this product belongs to.
categoryIdbodystring (uuid)NoCategory id this product belongs to.
codebodystringYesUnique product code for this client. Minimum length: 1. Maximum length: 255.
collectionIdsbodyarray of string (uuid)NoCollection ids this product belongs to. Replaces the full set on update; pass an empty array to remove from all collections.
descriptionbodystringNoMinimum length: 0. Maximum length: 1000.
genderbodystringNoMinimum length: 0. Maximum length: 32.
gtinbodystringNoGTIN / UPC / EAN / ISBN. Must be 8, 12, 13, or 14 digits.
heightMmbodynumberNoMinimum: 0.
knowledgeBaseUrlbodystring (uri)NoMinimum length: 0. Maximum length: 2048.
lengthMmbodynumberNoMinimum: 0.
longDescriptionbodystringNoLong-form product description, suitable for marketing content or LLM input. Minimum length: 0. Maximum length: 100000.
metadatabodyobjectNo
namebodystringYesMinimum length: 1. Maximum length: 255.
pricesbodyarray of objectYesMinimum items: 1.
prices[].amountbodynumberYesPrice in major units. Up to 2 decimal places. Minimum: 0. Maximum: 99999999.99.
prices[].currencybodystringYesISO-4217 currency code. Minimum length: 3. Maximum length: 3.
prices[].rebillAtSaleAmountbodybooleanNoWhen false (default) an active sale applies to the first subscription charge only and rebills revert to the full amount. When true the sale price is kept for the lifetime of the subscription. No-op when no sale is active. Default: false.
prices[].saleAmountbodynumberNoOptional sale price; takes effect inside the sale window. Minimum: 0. Maximum: 99999999.99.
prices[].saleEndsAtbodystring (date-time)NoSale end timestamp (inclusive).
prices[].saleStartsAtbodystring (date-time)NoSale start timestamp (inclusive).
prices[].variantIdbodystring (uuid)NoOptional variant id to scope this price to a specific variant.
recurringIntervalbodystringNoAllowed values: day, week, month, year.
recurringIntervalCountbodynumberNoMinimum: 1.
recurringTrialPeriodDaysbodynumberNoMinimum: 0.
recurringTrialPeriodDaysFreebodybooleanNoWhether the recurringTrialPeriodDays trial is free. When true (default) the trial period is $0 for the configured days, then the subscription rebills. When false the trial period is charged the effective sale price (sale amount if a sale is active, otherwise the amount) before rebilling at the recurring price. Requires recurringTrialPeriodDays > 0. Default: true.
stockQuantitybodynumberNoHint for stock on hand. Flo does not act as the inventory ledger. Minimum: 0.
tagsbodyarray of stringNo
tangibilitybodystringNoAllowed values: digital, physical.
taxCodebodystringNoProvider-neutral tax code. Minimum length: 0. Maximum length: 64.
typebodystringYesAllowed values: subscription, item.
weightGramsbodynumberNoMinimum: 0.
widthMmbodynumberNoMinimum: 0.

Result

Returns 201 with a JSON body.

FieldTypeRequiredDescription
ageGroupstring or nullYes
attributesobject or nullYes
availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
brandobject or nullYes
brand.codestringYes
brand.createdAtstring (date-time)Yes
brand.descriptionstring or nullYes
brand.idstringYes
brand.namestringYes
brand.updatedAtstring (date-time)Yes
categoryobject or nullYes
category.codestringYes
category.createdAtstring (date-time)Yes
category.descriptionstring or nullYes
category.idstringYes
category.namestringYes
category.parentIdstring (uuid) or nullYes
category.updatedAtstring (date-time)Yes
codestringYes
createdAtstring (date-time)Yes
descriptionstring or nullYes
genderstring or nullYes
gtinstring or nullYes
heightMmnumber or nullYes
idstringYes
knowledgeBaseUrlstring or nullYes
lengthMmnumber or nullYes
longDescriptionstring or nullYes
mediaarray of objectYes
media[].altTextstring or nullYes
media[].createdAtstring (date-time)Yes
media[].idstringYes
media[].isPrimarybooleanYes
media[].positionnumberYes
media[].typestringYesAllowed values: image, video, model_3d, document.
media[].updatedAtstring (date-time)Yes
media[].urlstringYes
media[].variantIdstring (uuid) or nullYes
metadataobject or nullYes
namestringYes
pricesarray of objectYes
prices[].amountnumberYesBase price in major units.
prices[].createdAtstring (date-time)Yes
prices[].currencystringYesISO-4217 currency code.
prices[].effectiveAmountnumberYesSale price when the current time is in the sale window, otherwise the base amount.
prices[].idstringYes
prices[].rebillAtSaleAmountbooleanYesWhen false an active sale applies to the first subscription charge only (rebills revert to the full amount); when true the sale price is retained for the subscription lifetime.
prices[].saleAmountnumber or nullYesSale price; populated only when sale window is set.
prices[].saleEndsAtstring (date-time) or nullYes
prices[].saleStartsAtstring (date-time) or nullYes
prices[].statusstringYesInactive prices remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
prices[].updatedAtstring (date-time)Yes
prices[].variantIdstring (uuid) or nullYes
recurringIntervalstring or nullYesAllowed values: day, week, month, year.
recurringIntervalCountnumber or nullYes
recurringTrialPeriodDaysnumber or nullYes
recurringTrialPeriodDaysFreebooleanYesWhether the trial period is free. When false the trial period is charged the effective sale price before rebilling at the recurring price.
statusstringYesCatalog lifecycle state. Inactive products retain identity and history but cannot be sold. Allowed values: active, inactive.
stockQuantitynumber or nullYes
tagsarray of string or nullYes
tangibilitystring or nullYesAllowed values: digital, physical.
taxCodestring or nullYes
typestringYesAllowed values: subscription, item.
updatedAtstring (date-time)Yes
variantsarray of objectYes
variants[].attributesobject or nullYes
variants[].availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
variants[].createdAtstring (date-time)Yes
variants[].heightMmnumber or nullYes
variants[].idstringYes
variants[].lengthMmnumber or nullYes
variants[].namestring or nullYes
variants[].skustringYes
variants[].statusstringYesInactive variants remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
variants[].stockQuantitynumber or nullYes
variants[].updatedAtstring (date-time)Yes
variants[].weightGramsnumber or nullYes
variants[].widthMmnumber or nullYes
weightGramsnumber or nullYes
widthMmnumber or nullYes

Errors

StatusDescription
400The supplied request body or list query is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Product mutations require an owner or admin membership.

Product_findOne

Get Product

Returns a single product with its nested prices.

PolicyValue
OperationGET /v1/products/{uuid}
Classread-only
Risklow
Confirmationnot-required
Retrysafe
Rate-limit tierread
Rolesowner, admin, member
Scopesmcp:read

Arguments

ArgumentInTypeRequiredDescription
uuidpathstringYes

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
ageGroupstring or nullYes
attributesobject or nullYes
availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
brandobject or nullYes
brand.codestringYes
brand.createdAtstring (date-time)Yes
brand.descriptionstring or nullYes
brand.idstringYes
brand.namestringYes
brand.updatedAtstring (date-time)Yes
categoryobject or nullYes
category.codestringYes
category.createdAtstring (date-time)Yes
category.descriptionstring or nullYes
category.idstringYes
category.namestringYes
category.parentIdstring (uuid) or nullYes
category.updatedAtstring (date-time)Yes
codestringYes
createdAtstring (date-time)Yes
descriptionstring or nullYes
genderstring or nullYes
gtinstring or nullYes
heightMmnumber or nullYes
idstringYes
knowledgeBaseUrlstring or nullYes
lengthMmnumber or nullYes
longDescriptionstring or nullYes
mediaarray of objectYes
media[].altTextstring or nullYes
media[].createdAtstring (date-time)Yes
media[].idstringYes
media[].isPrimarybooleanYes
media[].positionnumberYes
media[].typestringYesAllowed values: image, video, model_3d, document.
media[].updatedAtstring (date-time)Yes
media[].urlstringYes
media[].variantIdstring (uuid) or nullYes
metadataobject or nullYes
namestringYes
pricesarray of objectYes
prices[].amountnumberYesBase price in major units.
prices[].createdAtstring (date-time)Yes
prices[].currencystringYesISO-4217 currency code.
prices[].effectiveAmountnumberYesSale price when the current time is in the sale window, otherwise the base amount.
prices[].idstringYes
prices[].rebillAtSaleAmountbooleanYesWhen false an active sale applies to the first subscription charge only (rebills revert to the full amount); when true the sale price is retained for the subscription lifetime.
prices[].saleAmountnumber or nullYesSale price; populated only when sale window is set.
prices[].saleEndsAtstring (date-time) or nullYes
prices[].saleStartsAtstring (date-time) or nullYes
prices[].statusstringYesInactive prices remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
prices[].updatedAtstring (date-time)Yes
prices[].variantIdstring (uuid) or nullYes
recurringIntervalstring or nullYesAllowed values: day, week, month, year.
recurringIntervalCountnumber or nullYes
recurringTrialPeriodDaysnumber or nullYes
recurringTrialPeriodDaysFreebooleanYesWhether the trial period is free. When false the trial period is charged the effective sale price before rebilling at the recurring price.
statusstringYesCatalog lifecycle state. Inactive products retain identity and history but cannot be sold. Allowed values: active, inactive.
stockQuantitynumber or nullYes
tagsarray of string or nullYes
tangibilitystring or nullYesAllowed values: digital, physical.
taxCodestring or nullYes
typestringYesAllowed values: subscription, item.
updatedAtstring (date-time)Yes
variantsarray of objectYes
variants[].attributesobject or nullYes
variants[].availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
variants[].createdAtstring (date-time)Yes
variants[].heightMmnumber or nullYes
variants[].idstringYes
variants[].lengthMmnumber or nullYes
variants[].namestring or nullYes
variants[].skustringYes
variants[].statusstringYesInactive variants remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
variants[].stockQuantitynumber or nullYes
variants[].updatedAtstring (date-time)Yes
variants[].weightGramsnumber or nullYes
variants[].widthMmnumber or nullYes
weightGramsnumber or nullYes
widthMmnumber or nullYes

Errors

StatusDescription
400The supplied request body or list query is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Product mutations require an owner or admin membership.
404No product with the requested id exists for this client.

Product_list

List Products

Returns paginated products for the authenticated client. Dashboard bearer callers see active and inactive records by default and may filter by status; legacy Basic callers retain active-only defaults.

PolicyValue
OperationGET /v1/products
Classread-only
Risklow
Confirmationnot-required
Retrysafe
Rate-limit tierread
Rolesowner, admin, member
Scopesmcp:read

Arguments

ArgumentInTypeRequiredDescription
pagequeryintegerNo1-based page number for paginated list endpoints. Default: 1. Minimum: 1.
limitqueryintegerNoMaximum number of records to return per page. Default: 20. Minimum: 1. Maximum: 100.
sortquerystringNoSort by one allowed field. Use exactly one of sort[asc] or sort[desc]. Allowed fields: code, createdAt, name, type, updatedAt. Default: createdAt DESC. Allowed values: code, createdAt, name, type, updatedAt.
relationquerystringNoThis endpoint does not support relation aliases. Supplying relation returns 400.
availabilityStatusquerystringNoProduct availability status. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: in_stock, out_of_stock, pre_order, backorder.
brandIdquerystringNoBrand id this product belongs to. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
categoryIdquerystringNoCategory id this product belongs to. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
codequerystringNoClient-defined product code. Equality filter. Pass without operator for exact match or pass any of the following operators: [search]. [search] is case-insensitive text contains matching.
createdAtquerystring (date-time)NoProduct creation timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
idquerystringNoProduct id. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
namequerystringNoHuman-readable product name. Equality filter. Pass without operator for exact match or pass any of the following operators: [search]. [search] is case-insensitive text contains matching.
statusquerystringNoCatalog lifecycle state. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: active, inactive.
tangibilityquerystringNoWhether the product is digital or physical. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: digital, physical.
typequerystringNoProduct type. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: subscription, item.
updatedAtquerystring (date-time)NoProduct update timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
dataarray of objectYes
data[].availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
data[].brandIdstring (uuid) or nullYes
data[].categoryIdstring (uuid) or nullYes
data[].codestringYes
data[].createdAtstring (date-time)Yes
data[].descriptionstring or nullYes
data[].idstringYes
data[].namestringYes
data[].pricesarray of objectYes
data[].prices[].amountnumberYesBase price in major units.
data[].prices[].createdAtstring (date-time)Yes
data[].prices[].currencystringYesISO-4217 currency code.
data[].prices[].effectiveAmountnumberYesSale price when the current time is in the sale window, otherwise the base amount.
data[].prices[].idstringYes
data[].prices[].rebillAtSaleAmountbooleanYesWhen false an active sale applies to the first subscription charge only (rebills revert to the full amount); when true the sale price is retained for the subscription lifetime.
data[].prices[].saleAmountnumber or nullYesSale price; populated only when sale window is set.
data[].prices[].saleEndsAtstring (date-time) or nullYes
data[].prices[].saleStartsAtstring (date-time) or nullYes
data[].prices[].statusstringYesInactive prices remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
data[].prices[].updatedAtstring (date-time)Yes
data[].prices[].variantIdstring (uuid) or nullYes
data[].recurringIntervalstring or nullYesAllowed values: day, week, month, year.
data[].recurringIntervalCountnumber or nullYes
data[].statusstringYesAllowed values: active, inactive.
data[].tagsarray of string or nullYes
data[].tangibilitystring or nullYesAllowed values: digital, physical.
data[].typestringYesAllowed values: subscription, item.
data[].updatedAtstring (date-time)Yes
limitnumberYes
pagenumberYes
pagesnumberYes
totalnumberYes

Errors

StatusDescription
400The supplied request body or list query is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Product mutations require an owner or admin membership.

Product_reactivate

Reactivate Product

Re-runs current catalog validation and reactivates an inactive historical product.

PolicyValue
OperationPOST /v1/products/{uuid}/reactivate
Classmutating
Riskmedium
Confirmationrequired
Retrysame-idempotency-key
Rate-limit tiermutation
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
uuidpathstringYes

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
ageGroupstring or nullYes
attributesobject or nullYes
availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
brandobject or nullYes
brand.codestringYes
brand.createdAtstring (date-time)Yes
brand.descriptionstring or nullYes
brand.idstringYes
brand.namestringYes
brand.updatedAtstring (date-time)Yes
categoryobject or nullYes
category.codestringYes
category.createdAtstring (date-time)Yes
category.descriptionstring or nullYes
category.idstringYes
category.namestringYes
category.parentIdstring (uuid) or nullYes
category.updatedAtstring (date-time)Yes
codestringYes
createdAtstring (date-time)Yes
descriptionstring or nullYes
genderstring or nullYes
gtinstring or nullYes
heightMmnumber or nullYes
idstringYes
knowledgeBaseUrlstring or nullYes
lengthMmnumber or nullYes
longDescriptionstring or nullYes
mediaarray of objectYes
media[].altTextstring or nullYes
media[].createdAtstring (date-time)Yes
media[].idstringYes
media[].isPrimarybooleanYes
media[].positionnumberYes
media[].typestringYesAllowed values: image, video, model_3d, document.
media[].updatedAtstring (date-time)Yes
media[].urlstringYes
media[].variantIdstring (uuid) or nullYes
metadataobject or nullYes
namestringYes
pricesarray of objectYes
prices[].amountnumberYesBase price in major units.
prices[].createdAtstring (date-time)Yes
prices[].currencystringYesISO-4217 currency code.
prices[].effectiveAmountnumberYesSale price when the current time is in the sale window, otherwise the base amount.
prices[].idstringYes
prices[].rebillAtSaleAmountbooleanYesWhen false an active sale applies to the first subscription charge only (rebills revert to the full amount); when true the sale price is retained for the subscription lifetime.
prices[].saleAmountnumber or nullYesSale price; populated only when sale window is set.
prices[].saleEndsAtstring (date-time) or nullYes
prices[].saleStartsAtstring (date-time) or nullYes
prices[].statusstringYesInactive prices remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
prices[].updatedAtstring (date-time)Yes
prices[].variantIdstring (uuid) or nullYes
recurringIntervalstring or nullYesAllowed values: day, week, month, year.
recurringIntervalCountnumber or nullYes
recurringTrialPeriodDaysnumber or nullYes
recurringTrialPeriodDaysFreebooleanYesWhether the trial period is free. When false the trial period is charged the effective sale price before rebilling at the recurring price.
statusstringYesCatalog lifecycle state. Inactive products retain identity and history but cannot be sold. Allowed values: active, inactive.
stockQuantitynumber or nullYes
tagsarray of string or nullYes
tangibilitystring or nullYesAllowed values: digital, physical.
taxCodestring or nullYes
typestringYesAllowed values: subscription, item.
updatedAtstring (date-time)Yes
variantsarray of objectYes
variants[].attributesobject or nullYes
variants[].availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
variants[].createdAtstring (date-time)Yes
variants[].heightMmnumber or nullYes
variants[].idstringYes
variants[].lengthMmnumber or nullYes
variants[].namestring or nullYes
variants[].skustringYes
variants[].statusstringYesInactive variants remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
variants[].stockQuantitynumber or nullYes
variants[].updatedAtstring (date-time)Yes
variants[].weightGramsnumber or nullYes
variants[].widthMmnumber or nullYes
weightGramsnumber or nullYes
widthMmnumber or nullYes

Errors

StatusDescription
400The supplied request body or list query is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Product mutations require an owner or admin membership.

Product_update

Update Product

Updates a product. The backward-compatible nested prices payload remains full-set replacement; use the dedicated price routes when stable price IDs are required.

PolicyValue
OperationPATCH /v1/products/{uuid}
Classmutating
Riskmedium
Confirmationrequired
Retrysame-idempotency-key
Rate-limit tiermutation
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
uuidpathstringYes
ageGroupbodystringNoMinimum length: 0. Maximum length: 32.
attributesbodyobjectNoFree-form technical attributes (e.g. dimensions, ingredients, energy rating).
availabilityStatusbodystringNoAllowed values: in_stock, out_of_stock, pre_order, backorder.
brandIdbodystring (uuid)NoBrand id this product belongs to.
categoryIdbodystring (uuid)NoCategory id this product belongs to.
codebodystringNoUnique product code for this client. Minimum length: 1. Maximum length: 255.
collectionIdsbodyarray of string (uuid)NoCollection ids this product belongs to. Replaces the full set on update; pass an empty array to remove from all collections.
descriptionbodystringNoMinimum length: 0. Maximum length: 1000.
genderbodystringNoMinimum length: 0. Maximum length: 32.
gtinbodystringNoGTIN / UPC / EAN / ISBN. Must be 8, 12, 13, or 14 digits.
heightMmbodynumberNoMinimum: 0.
knowledgeBaseUrlbodystring (uri)NoMinimum length: 0. Maximum length: 2048.
lengthMmbodynumberNoMinimum: 0.
longDescriptionbodystringNoLong-form product description, suitable for marketing content or LLM input. Minimum length: 0. Maximum length: 100000.
metadatabodyobjectNo
namebodystringNoMinimum length: 1. Maximum length: 255.
pricesbodyarray of objectNoMinimum items: 1.
prices[].amountbodynumberYesPrice in major units. Up to 2 decimal places. Minimum: 0. Maximum: 99999999.99.
prices[].currencybodystringYesISO-4217 currency code. Minimum length: 3. Maximum length: 3.
prices[].rebillAtSaleAmountbodybooleanNoWhen false (default) an active sale applies to the first subscription charge only and rebills revert to the full amount. When true the sale price is kept for the lifetime of the subscription. No-op when no sale is active. Default: false.
prices[].saleAmountbodynumberNoOptional sale price; takes effect inside the sale window. Minimum: 0. Maximum: 99999999.99.
prices[].saleEndsAtbodystring (date-time)NoSale end timestamp (inclusive).
prices[].saleStartsAtbodystring (date-time)NoSale start timestamp (inclusive).
prices[].variantIdbodystring (uuid)NoOptional variant id to scope this price to a specific variant.
recurringIntervalbodystringNoAllowed values: day, week, month, year.
recurringIntervalCountbodynumberNoMinimum: 1.
recurringTrialPeriodDaysbodynumberNoMinimum: 0.
recurringTrialPeriodDaysFreebodybooleanNoWhether the recurringTrialPeriodDays trial is free. When true (default) the trial period is $0 for the configured days, then the subscription rebills. When false the trial period is charged the effective sale price (sale amount if a sale is active, otherwise the amount) before rebilling at the recurring price. Requires recurringTrialPeriodDays > 0. Default: true.
stockQuantitybodynumberNoHint for stock on hand. Flo does not act as the inventory ledger. Minimum: 0.
tagsbodyarray of stringNo
tangibilitybodystringNoAllowed values: digital, physical.
taxCodebodystringNoProvider-neutral tax code. Minimum length: 0. Maximum length: 64.
typebodystringNoAllowed values: subscription, item.
weightGramsbodynumberNoMinimum: 0.
widthMmbodynumberNoMinimum: 0.

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
ageGroupstring or nullYes
attributesobject or nullYes
availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
brandobject or nullYes
brand.codestringYes
brand.createdAtstring (date-time)Yes
brand.descriptionstring or nullYes
brand.idstringYes
brand.namestringYes
brand.updatedAtstring (date-time)Yes
categoryobject or nullYes
category.codestringYes
category.createdAtstring (date-time)Yes
category.descriptionstring or nullYes
category.idstringYes
category.namestringYes
category.parentIdstring (uuid) or nullYes
category.updatedAtstring (date-time)Yes
codestringYes
createdAtstring (date-time)Yes
descriptionstring or nullYes
genderstring or nullYes
gtinstring or nullYes
heightMmnumber or nullYes
idstringYes
knowledgeBaseUrlstring or nullYes
lengthMmnumber or nullYes
longDescriptionstring or nullYes
mediaarray of objectYes
media[].altTextstring or nullYes
media[].createdAtstring (date-time)Yes
media[].idstringYes
media[].isPrimarybooleanYes
media[].positionnumberYes
media[].typestringYesAllowed values: image, video, model_3d, document.
media[].updatedAtstring (date-time)Yes
media[].urlstringYes
media[].variantIdstring (uuid) or nullYes
metadataobject or nullYes
namestringYes
pricesarray of objectYes
prices[].amountnumberYesBase price in major units.
prices[].createdAtstring (date-time)Yes
prices[].currencystringYesISO-4217 currency code.
prices[].effectiveAmountnumberYesSale price when the current time is in the sale window, otherwise the base amount.
prices[].idstringYes
prices[].rebillAtSaleAmountbooleanYesWhen false an active sale applies to the first subscription charge only (rebills revert to the full amount); when true the sale price is retained for the subscription lifetime.
prices[].saleAmountnumber or nullYesSale price; populated only when sale window is set.
prices[].saleEndsAtstring (date-time) or nullYes
prices[].saleStartsAtstring (date-time) or nullYes
prices[].statusstringYesInactive prices remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
prices[].updatedAtstring (date-time)Yes
prices[].variantIdstring (uuid) or nullYes
recurringIntervalstring or nullYesAllowed values: day, week, month, year.
recurringIntervalCountnumber or nullYes
recurringTrialPeriodDaysnumber or nullYes
recurringTrialPeriodDaysFreebooleanYesWhether the trial period is free. When false the trial period is charged the effective sale price before rebilling at the recurring price.
statusstringYesCatalog lifecycle state. Inactive products retain identity and history but cannot be sold. Allowed values: active, inactive.
stockQuantitynumber or nullYes
tagsarray of string or nullYes
tangibilitystring or nullYesAllowed values: digital, physical.
taxCodestring or nullYes
typestringYesAllowed values: subscription, item.
updatedAtstring (date-time)Yes
variantsarray of objectYes
variants[].attributesobject or nullYes
variants[].availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
variants[].createdAtstring (date-time)Yes
variants[].heightMmnumber or nullYes
variants[].idstringYes
variants[].lengthMmnumber or nullYes
variants[].namestring or nullYes
variants[].skustringYes
variants[].statusstringYesInactive variants remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
variants[].stockQuantitynumber or nullYes
variants[].updatedAtstring (date-time)Yes
variants[].weightGramsnumber or nullYes
variants[].widthMmnumber or nullYes
weightGramsnumber or nullYes
widthMmnumber or nullYes

Errors

StatusDescription
400The supplied request body or list query is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Product mutations require an owner or admin membership.
404No product with the requested id exists for this client.

ProductBrand_create

Create Brand

Creates a product brand for the authenticated client.

PolicyValue
OperationPOST /v1/products/brands
Classmutating
Risklow
Confirmationrequired
Retrysame-idempotency-key
Rate-limit tiermutation
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
codebodystringYesUnique brand code for this client. Minimum length: 1. Maximum length: 255.
descriptionbodystringNoMinimum length: 0. Maximum length: 1000.
namebodystringYesMinimum length: 1. Maximum length: 255.

Result

Returns 201 with a JSON body.

FieldTypeRequiredDescription
codestringYes
createdAtstring (date-time)Yes
descriptionstring or nullYes
idstringYes
namestringYes
updatedAtstring (date-time)Yes

Errors

StatusDescription
400The supplied request body or list query is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Brand mutations require an owner or admin membership.

ProductBrand_findOne

Get Brand

Returns a single brand.

PolicyValue
OperationGET /v1/products/brands/{uuid}
Classread-only
Risklow
Confirmationnot-required
Retrysafe
Rate-limit tierread
Rolesowner, admin, member
Scopesmcp:read

Arguments

ArgumentInTypeRequiredDescription
uuidpathstringYes

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
codestringYes
createdAtstring (date-time)Yes
descriptionstring or nullYes
idstringYes
namestringYes
updatedAtstring (date-time)Yes

Errors

StatusDescription
400The supplied request body or list query is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Brand mutations require an owner or admin membership.
404No brand with the requested id exists for this client.

ProductBrand_list

List Brands

Returns paginated product brands for the client.

PolicyValue
OperationGET /v1/products/brands
Classread-only
Risklow
Confirmationnot-required
Retrysafe
Rate-limit tierread
Rolesowner, admin, member
Scopesmcp:read

Arguments

ArgumentInTypeRequiredDescription
pagequeryintegerNo1-based page number for paginated list endpoints. Default: 1. Minimum: 1.
limitqueryintegerNoMaximum number of records to return per page. Default: 20. Minimum: 1. Maximum: 100.
sortquerystringNoSort by one allowed field. Use exactly one of sort[asc] or sort[desc]. Allowed fields: code, createdAt, name, updatedAt. Default: createdAt DESC. Allowed values: code, createdAt, name, updatedAt.
relationquerystringNoThis endpoint does not support relation aliases. Supplying relation returns 400.
codequerystringNoBrand code. Equality filter. Pass without operator for exact match or pass any of the following operators: [search]. [search] is case-insensitive text contains matching.
createdAtquerystring (date-time)NoBrand creation timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
idquerystringNoBrand id. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
namequerystringNoBrand name. Equality filter. Pass without operator for exact match or pass any of the following operators: [search]. [search] is case-insensitive text contains matching.
updatedAtquerystring (date-time)NoBrand update timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
dataarray of objectYes
data[].codestringYes
data[].createdAtstring (date-time)Yes
data[].descriptionstring or nullYes
data[].idstringYes
data[].namestringYes
data[].updatedAtstring (date-time)Yes
limitnumberYes
pagenumberYes
pagesnumberYes
totalnumberYes

Errors

StatusDescription
400The supplied request body or list query is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Brand mutations require an owner or admin membership.

ProductBrand_update

Update Brand

Updates a brand.

PolicyValue
OperationPATCH /v1/products/brands/{uuid}
Classmutating
Risklow
Confirmationrequired
Retrysame-idempotency-key
Rate-limit tiermutation
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
uuidpathstringYes
codebodystringNoUnique brand code for this client. Minimum length: 1. Maximum length: 255.
descriptionbodystringNoMinimum length: 0. Maximum length: 1000.
namebodystringNoMinimum length: 1. Maximum length: 255.

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
codestringYes
createdAtstring (date-time)Yes
descriptionstring or nullYes
idstringYes
namestringYes
updatedAtstring (date-time)Yes

Errors

StatusDescription
400The supplied request body or list query is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Brand mutations require an owner or admin membership.
404No brand with the requested id exists for this client.

ProductCategory_create

Create Category

Creates a product category, optionally nested under a parent category.

PolicyValue
OperationPOST /v1/products/categories
Classmutating
Risklow
Confirmationrequired
Retrysame-idempotency-key
Rate-limit tiermutation
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
codebodystringYesMinimum length: 1. Maximum length: 255.
descriptionbodystringNoMinimum length: 0. Maximum length: 1000.
namebodystringYesMinimum length: 1. Maximum length: 255.
parentIdbodystring (uuid)NoParent category id for nested taxonomies.

Result

Returns 201 with a JSON body.

FieldTypeRequiredDescription
codestringYes
createdAtstring (date-time)Yes
descriptionstring or nullYes
idstringYes
namestringYes
parentIdstring (uuid) or nullYes
updatedAtstring (date-time)Yes

Errors

StatusDescription
400The supplied request body or list query is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Category mutations require an owner or admin membership.

ProductCategory_findOne

Get Category

Returns a single category.

PolicyValue
OperationGET /v1/products/categories/{uuid}
Classread-only
Risklow
Confirmationnot-required
Retrysafe
Rate-limit tierread
Rolesowner, admin, member
Scopesmcp:read

Arguments

ArgumentInTypeRequiredDescription
uuidpathstringYes

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
codestringYes
createdAtstring (date-time)Yes
descriptionstring or nullYes
idstringYes
namestringYes
parentIdstring (uuid) or nullYes
updatedAtstring (date-time)Yes

Errors

StatusDescription
400The supplied request body or list query is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Category mutations require an owner or admin membership.
404No category with the requested id exists for this client.

ProductCategory_list

List Categories

Returns paginated product categories for the client.

PolicyValue
OperationGET /v1/products/categories
Classread-only
Risklow
Confirmationnot-required
Retrysafe
Rate-limit tierread
Rolesowner, admin, member
Scopesmcp:read

Arguments

ArgumentInTypeRequiredDescription
pagequeryintegerNo1-based page number for paginated list endpoints. Default: 1. Minimum: 1.
limitqueryintegerNoMaximum number of records to return per page. Default: 20. Minimum: 1. Maximum: 100.
sortquerystringNoSort by one allowed field. Use exactly one of sort[asc] or sort[desc]. Allowed fields: code, createdAt, name, updatedAt. Default: createdAt DESC. Allowed values: code, createdAt, name, updatedAt.
relationquerystringNoThis endpoint does not support relation aliases. Supplying relation returns 400.
codequerystringNoCategory code. Equality filter. Pass without operator for exact match or pass any of the following operators: [search]. [search] is case-insensitive text contains matching.
createdAtquerystring (date-time)NoCategory creation timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
idquerystringNoCategory id. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
namequerystringNoCategory name. Equality filter. Pass without operator for exact match or pass any of the following operators: [search]. [search] is case-insensitive text contains matching.
parentIdquerystringNoCategory parent id. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
updatedAtquerystring (date-time)NoCategory update timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
dataarray of objectYes
data[].codestringYes
data[].createdAtstring (date-time)Yes
data[].descriptionstring or nullYes
data[].idstringYes
data[].namestringYes
data[].parentIdstring (uuid) or nullYes
data[].updatedAtstring (date-time)Yes
limitnumberYes
pagenumberYes
pagesnumberYes
totalnumberYes

Errors

StatusDescription
400The supplied request body or list query is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Category mutations require an owner or admin membership.

ProductCategory_update

Update Category

Updates a category.

PolicyValue
OperationPATCH /v1/products/categories/{uuid}
Classmutating
Risklow
Confirmationrequired
Retrysame-idempotency-key
Rate-limit tiermutation
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
uuidpathstringYes
codebodystringNoMinimum length: 1. Maximum length: 255.
descriptionbodystringNoMinimum length: 0. Maximum length: 1000.
namebodystringNoMinimum length: 1. Maximum length: 255.
parentIdbodystring (uuid)NoParent category id for nested taxonomies.

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
codestringYes
createdAtstring (date-time)Yes
descriptionstring or nullYes
idstringYes
namestringYes
parentIdstring (uuid) or nullYes
updatedAtstring (date-time)Yes

Errors

StatusDescription
400The supplied request body or list query is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Category mutations require an owner or admin membership.
404No category with the requested id exists for this client.

ProductMedia_create

Create Media

Creates a media item under the specified product.

PolicyValue
OperationPOST /v1/products/{productUuid}/media
Classmutating
Risklow
Confirmationrequired
Retrysame-idempotency-key
Rate-limit tiermutation
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
productUuidpathstringYes
altTextbodystringNoMinimum length: 0. Maximum length: 500.
isPrimarybodybooleanNoMarks this asset as the primary media item.
positionbodynumberNoSort position; lower values render first. Minimum: 0.
typebodystringYesAllowed values: image, video, model_3d, document.
urlbodystring (uri)YesMinimum length: 1. Maximum length: 2048.
variantIdbodystring (uuid)NoVariant id to associate this media item with.

Result

Returns 201 with a JSON body.

FieldTypeRequiredDescription
altTextstring or nullYes
createdAtstring (date-time)Yes
idstringYes
isPrimarybooleanYes
positionnumberYes
typestringYesAllowed values: image, video, model_3d, document.
updatedAtstring (date-time)Yes
urlstringYes
variantIdstring (uuid) or nullYes

Errors

StatusDescription
400The supplied request body is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Media mutations require an owner or admin membership.

ProductMedia_findOne

Get Media

Returns a single media item.

PolicyValue
OperationGET /v1/products/{productUuid}/media/{uuid}
Classread-only
Risklow
Confirmationnot-required
Retrysafe
Rate-limit tierread
Rolesowner, admin, member
Scopesmcp:read

Arguments

ArgumentInTypeRequiredDescription
productUuidpathstringYes
uuidpathstringYes

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
altTextstring or nullYes
createdAtstring (date-time)Yes
idstringYes
isPrimarybooleanYes
positionnumberYes
typestringYesAllowed values: image, video, model_3d, document.
updatedAtstring (date-time)Yes
urlstringYes
variantIdstring (uuid) or nullYes

Errors

StatusDescription
400The supplied request body is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Media mutations require an owner or admin membership.
404No media with the requested id exists for this product.

ProductMedia_update

Update Media

Updates a media item.

PolicyValue
OperationPATCH /v1/products/{productUuid}/media/{uuid}
Classmutating
Risklow
Confirmationrequired
Retrysame-idempotency-key
Rate-limit tiermutation
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
productUuidpathstringYes
uuidpathstringYes
altTextbodystringNoMinimum length: 0. Maximum length: 500.
isPrimarybodybooleanNoMarks this asset as the primary media item.
positionbodynumberNoSort position; lower values render first. Minimum: 0.
typebodystringNoAllowed values: image, video, model_3d, document.
urlbodystring (uri)NoMinimum length: 1. Maximum length: 2048.
variantIdbodystring (uuid)NoVariant id to associate this media item with.

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
altTextstring or nullYes
createdAtstring (date-time)Yes
idstringYes
isPrimarybooleanYes
positionnumberYes
typestringYesAllowed values: image, video, model_3d, document.
updatedAtstring (date-time)Yes
urlstringYes
variantIdstring (uuid) or nullYes

Errors

StatusDescription
400The supplied request body is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Media mutations require an owner or admin membership.
404No media with the requested id exists for this product.

ProductPrice_create

Create stable Product Price

PolicyValue
OperationPOST /v1/products/{productUuid}/prices
Classmutating
Riskmedium
Confirmationrequired
Retrysame-idempotency-key
Rate-limit tiermutation
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
productUuidpathstringYes
amountbodynumberYesPrice in major units. Up to 2 decimal places. Minimum: 0. Maximum: 99999999.99.
currencybodystringYesISO-4217 currency code. Minimum length: 3. Maximum length: 3.
rebillAtSaleAmountbodybooleanNoWhen false (default) an active sale applies to the first subscription charge only and rebills revert to the full amount. When true the sale price is kept for the lifetime of the subscription. No-op when no sale is active. Default: false.
saleAmountbodynumberNoOptional sale price; takes effect inside the sale window. Minimum: 0. Maximum: 99999999.99.
saleEndsAtbodystring (date-time)NoSale end timestamp (inclusive).
saleStartsAtbodystring (date-time)NoSale start timestamp (inclusive).
variantIdbodystring (uuid)NoOptional variant id to scope this price to a specific variant.

Result

Returns 201 with a JSON body.

FieldTypeRequiredDescription
amountnumberYesBase price in major units.
createdAtstring (date-time)Yes
currencystringYesISO-4217 currency code.
effectiveAmountnumberYesSale price when the current time is in the sale window, otherwise the base amount.
idstringYes
rebillAtSaleAmountbooleanYesWhen false an active sale applies to the first subscription charge only (rebills revert to the full amount); when true the sale price is retained for the subscription lifetime.
saleAmountnumber or nullYesSale price; populated only when sale window is set.
saleEndsAtstring (date-time) or nullYes
saleStartsAtstring (date-time) or nullYes
statusstringYesInactive prices remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
updatedAtstring (date-time)Yes
variantIdstring (uuid) or nullYes

Errors

StatusDescription
400The supplied price or lifecycle request is invalid.
401A valid Basic auth API key or OAuth2 bearer token is required.
403OAuth client members have read-only catalog access. Stable price mutations require an owner or admin membership.

ProductPrice_findOne

Get Product Price

PolicyValue
OperationGET /v1/products/{productUuid}/prices/{uuid}
Classread-only
Risklow
Confirmationnot-required
Retrysafe
Rate-limit tierread
Rolesowner, admin, member
Scopesmcp:read

Arguments

ArgumentInTypeRequiredDescription
productUuidpathstringYes
uuidpathstringYes

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
amountnumberYesBase price in major units.
createdAtstring (date-time)Yes
currencystringYesISO-4217 currency code.
effectiveAmountnumberYesSale price when the current time is in the sale window, otherwise the base amount.
idstringYes
rebillAtSaleAmountbooleanYesWhen false an active sale applies to the first subscription charge only (rebills revert to the full amount); when true the sale price is retained for the subscription lifetime.
saleAmountnumber or nullYesSale price; populated only when sale window is set.
saleEndsAtstring (date-time) or nullYes
saleStartsAtstring (date-time) or nullYes
statusstringYesInactive prices remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
updatedAtstring (date-time)Yes
variantIdstring (uuid) or nullYes

Errors

StatusDescription
400The supplied price or lifecycle request is invalid.
401A valid Basic auth API key or OAuth2 bearer token is required.
403OAuth client members have read-only catalog access. Stable price mutations require an owner or admin membership.
404No price with the requested id exists for this product.

ProductPrice_reactivate

Reactivate Product Price

PolicyValue
OperationPOST /v1/products/{productUuid}/prices/{uuid}/reactivate
Classmutating
Riskmedium
Confirmationrequired
Retrysame-idempotency-key
Rate-limit tiermutation
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
productUuidpathstringYes
uuidpathstringYes

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
amountnumberYesBase price in major units.
createdAtstring (date-time)Yes
currencystringYesISO-4217 currency code.
effectiveAmountnumberYesSale price when the current time is in the sale window, otherwise the base amount.
idstringYes
rebillAtSaleAmountbooleanYesWhen false an active sale applies to the first subscription charge only (rebills revert to the full amount); when true the sale price is retained for the subscription lifetime.
saleAmountnumber or nullYesSale price; populated only when sale window is set.
saleEndsAtstring (date-time) or nullYes
saleStartsAtstring (date-time) or nullYes
statusstringYesInactive prices remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
updatedAtstring (date-time)Yes
variantIdstring (uuid) or nullYes

Errors

StatusDescription
400The supplied price or lifecycle request is invalid.
401A valid Basic auth API key or OAuth2 bearer token is required.
403OAuth client members have read-only catalog access. Stable price mutations require an owner or admin membership.

ProductPrice_update

Update stable Product Price

Updates one price in place without replacing unrelated prices or changing its id.

PolicyValue
OperationPATCH /v1/products/{productUuid}/prices/{uuid}
Classmutating
Riskmedium
Confirmationrequired
Retrysame-idempotency-key
Rate-limit tiermutation
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
productUuidpathstringYes
uuidpathstringYes
amountbodynumberNoPrice in major units. Up to 2 decimal places. Minimum: 0. Maximum: 99999999.99.
currencybodystringNoISO-4217 currency code. Minimum length: 3. Maximum length: 3.
rebillAtSaleAmountbodybooleanNoWhen false (default) an active sale applies to the first subscription charge only and rebills revert to the full amount. When true the sale price is kept for the lifetime of the subscription. No-op when no sale is active. Default: false.
saleAmountbodynumberNoOptional sale price; takes effect inside the sale window. Minimum: 0. Maximum: 99999999.99.
saleEndsAtbodystring (date-time)NoSale end timestamp (inclusive).
saleStartsAtbodystring (date-time)NoSale start timestamp (inclusive).
variantIdbodystring (uuid)NoOptional variant id to scope this price to a specific variant.

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
amountnumberYesBase price in major units.
createdAtstring (date-time)Yes
currencystringYesISO-4217 currency code.
effectiveAmountnumberYesSale price when the current time is in the sale window, otherwise the base amount.
idstringYes
rebillAtSaleAmountbooleanYesWhen false an active sale applies to the first subscription charge only (rebills revert to the full amount); when true the sale price is retained for the subscription lifetime.
saleAmountnumber or nullYesSale price; populated only when sale window is set.
saleEndsAtstring (date-time) or nullYes
saleStartsAtstring (date-time) or nullYes
statusstringYesInactive prices remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
updatedAtstring (date-time)Yes
variantIdstring (uuid) or nullYes

Errors

StatusDescription
400The supplied price or lifecycle request is invalid.
401A valid Basic auth API key or OAuth2 bearer token is required.
403OAuth client members have read-only catalog access. Stable price mutations require an owner or admin membership.

ProductVariant_create

Create Variant

Creates a variant under the specified product.

PolicyValue
OperationPOST /v1/products/{productUuid}/variants
Classmutating
Riskmedium
Confirmationrequired
Retrysame-idempotency-key
Rate-limit tiermutation
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
productUuidpathstringYes
attributesbodyobjectNoFree-form variant attributes (e.g. color, size, material).
availabilityStatusbodystringNoAllowed values: in_stock, out_of_stock, pre_order, backorder.
heightMmbodynumberNoMinimum: 0.
lengthMmbodynumberNoMinimum: 0.
namebodystringNoMinimum length: 1. Maximum length: 255.
skubodystringYesVariant SKU unique per product. Minimum length: 1. Maximum length: 255.
stockQuantitybodynumberNoMinimum: 0.
weightGramsbodynumberNoMinimum: 0.
widthMmbodynumberNoMinimum: 0.

Result

Returns 201 with a JSON body.

FieldTypeRequiredDescription
attributesobject or nullYes
availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
createdAtstring (date-time)Yes
heightMmnumber or nullYes
idstringYes
lengthMmnumber or nullYes
namestring or nullYes
skustringYes
statusstringYesInactive variants remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
stockQuantitynumber or nullYes
updatedAtstring (date-time)Yes
weightGramsnumber or nullYes
widthMmnumber or nullYes

Errors

StatusDescription
400The supplied request body is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Variant mutations require an owner or admin membership.

ProductVariant_findOne

Get Variant

Returns a single variant under the specified product.

PolicyValue
OperationGET /v1/products/{productUuid}/variants/{uuid}
Classread-only
Risklow
Confirmationnot-required
Retrysafe
Rate-limit tierread
Rolesowner, admin, member
Scopesmcp:read

Arguments

ArgumentInTypeRequiredDescription
productUuidpathstringYes
uuidpathstringYes

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
attributesobject or nullYes
availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
createdAtstring (date-time)Yes
heightMmnumber or nullYes
idstringYes
lengthMmnumber or nullYes
namestring or nullYes
skustringYes
statusstringYesInactive variants remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
stockQuantitynumber or nullYes
updatedAtstring (date-time)Yes
weightGramsnumber or nullYes
widthMmnumber or nullYes

Errors

StatusDescription
400The supplied request body is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Variant mutations require an owner or admin membership.
404No variant with the requested id exists for this product.

ProductVariant_reactivate

Reactivate Variant

Reactivates an inactive historical variant.

PolicyValue
OperationPOST /v1/products/{productUuid}/variants/{uuid}/reactivate
Classmutating
Riskmedium
Confirmationrequired
Retrysame-idempotency-key
Rate-limit tiermutation
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
productUuidpathstringYes
uuidpathstringYes

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
attributesobject or nullYes
availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
createdAtstring (date-time)Yes
heightMmnumber or nullYes
idstringYes
lengthMmnumber or nullYes
namestring or nullYes
skustringYes
statusstringYesInactive variants remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
stockQuantitynumber or nullYes
updatedAtstring (date-time)Yes
weightGramsnumber or nullYes
widthMmnumber or nullYes

Errors

StatusDescription
400The supplied request body is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Variant mutations require an owner or admin membership.

ProductVariant_update

Update Variant

Updates a variant.

PolicyValue
OperationPATCH /v1/products/{productUuid}/variants/{uuid}
Classmutating
Riskmedium
Confirmationrequired
Retrysame-idempotency-key
Rate-limit tiermutation
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
productUuidpathstringYes
uuidpathstringYes
attributesbodyobjectNoFree-form variant attributes (e.g. color, size, material).
availabilityStatusbodystringNoAllowed values: in_stock, out_of_stock, pre_order, backorder.
heightMmbodynumberNoMinimum: 0.
lengthMmbodynumberNoMinimum: 0.
namebodystringNoMinimum length: 1. Maximum length: 255.
skubodystringNoVariant SKU unique per product. Minimum length: 1. Maximum length: 255.
stockQuantitybodynumberNoMinimum: 0.
weightGramsbodynumberNoMinimum: 0.
widthMmbodynumberNoMinimum: 0.

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
attributesobject or nullYes
availabilityStatusstring or nullYesAllowed values: in_stock, out_of_stock, pre_order, backorder.
createdAtstring (date-time)Yes
heightMmnumber or nullYes
idstringYes
lengthMmnumber or nullYes
namestring or nullYes
skustringYes
statusstringYesInactive variants remain readable but cannot be selected for new purchases. Allowed values: active, inactive.
stockQuantitynumber or nullYes
updatedAtstring (date-time)Yes
weightGramsnumber or nullYes
widthMmnumber or nullYes

Errors

StatusDescription
400The supplied request body is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403OAuth client members have read-only catalog access. Variant mutations require an owner or admin membership.
404No variant with the requested id exists for this product.

On this page