Delete a product
Deletes the product, its variants, their prices, and every event line that used them. That last part is why
this refuses by default: a product still on an event returns 409 product_on_event_items:<count> naming how many
lines would go with it. Pass ?force=true to delete anyway, which is what the app’s own delete does.
404 product_not_found when the ID doesn’t belong to the caller’s tenant.
DELETE
/api/v1/products/{id}Authorization
AuthorizationBearer token (bloomcount_...) · headerrequiredPath parameters
idstringrequiredQuery parameters
forcebooleanDelete even when the cascade reaches beyond this resource.
default: false
Responses
200Deleted, with a count of everything the cascade took.
deletedbooleanrequiredvariantsDeletedintegerrequiredVariants removed with the product.
priceEntriesDeletedintegerrequiredPrices removed across every list that carried one for those variants.
eventItemsDeletedintegerrequiredEvent lines removed. Non-zero only on a forced delete.
401Missing or invalid API key, or revoked / expired.
errorstringrequired403Authenticated, but the key lacks the required scope or the tenant has no API access.
errorstringrequired404The requested resource doesn't exist or belongs to a different tenant.
errorstringrequired409The resource is still referenced, and deleting it would take other rows with it. The error names what and how
many, for example price_list_in_use:3. Retry with force=true to delete anyway.
errorstringrequired422Request body or arguments failed validation.
errorstringrequired429Per-minute rate limit (60/min) or per-month cap exceeded.
errorstringrequired