Upsert a price tier
Changed onCreate a price tier when id is absent, update it in place when present. Every write records a new immutable version and points the tier's current_version_id at it, so order items priced by an earlier version keep their frozen pricing (see price_tier_version on the sales order item).
Updates are sparse: only the fields you send change, and anything you omit is left as-is. This applies to conditions too — send only the conditions you want to change, and send an empty array (or null) for a one_of_*/not_one_of_* list to clear that one. Omitting menu_ids leaves the tier's current menus untouched; send the full list to replace them. When you send the min_quantity or total_thc_percentage_range object, include every sub-field — a present sub-field may be null, but a missing one is rejected. Send the object as null to clear it.
conditions decides whether the tier can apply to a sales order item — every populated condition must be met together (AND), or the tier is not applicable. Within a single "one of" list any listed match qualifies; a "not one of" list disqualifies any listed match; min_quantity is compared against the combined quantity of the order's matching items; and total_thc_percentage_range applies only where selling by potency is enabled. A create must resolve to at least one condition, otherwise it is rejected with a 400. Creating a tier also requires your company to be set up for price tiers; if it is not, the create fails with a 400 and a message to contact Distru support.
Saving a tier also refreshes buyer-facing and statewide marketplace price discovery, which happens asynchronously — a 200/201 reflects the saved tier itself, not yet its propagation to every menu or marketplace surface that shows it. When a promo-enabled tier newly becomes eligible for a menu, that menu gets a fresh promo entry.
Promo card fields default sensibly on create: omit menu_promo_card_type and it becomes TEXT, and a TEXT card fills menu_promo_card_background_hex and menu_promo_card_text_hex with default colors when you omit them. Send menu_promo_card_type: "IMAGE" for an image card, where the hex colors are optional. menu_promo_enabled (default false) controls whether the card shows on menus.
Required permission: settings_permissions_price_tiers, and price tier visibility other than "Restrict access" on your teams (admins are always allowed).
Request
- Base URLhttps://app.distru.com
- AuthHTTP bearer
Request body
Response
The updated price tier
Changes
- info
added the required property
/////to the response with the status - info
added the required property
/////to the response with the status - info
added the required property
/////to the response with the status - info
added the required property
/////to the response with the status - info
added the required property
/////to the response with the status - info
added the required property
/////to the response with the status - info
added the required property
/////to the response with the status - info
added the required property
/////to the response with the status - info
added the required property
//to the response with the status - info
added the required property
//to the response with the status - info
added the required property
//to the response with the status - info
added the required property
//to the response with the status
- info
- info
added the new optional request property
/ - info
added the new optional request property
/ - info
added the required property
//to the response with the status - info
added the required property
//to the response with the status - info
added the required property
//to the response with the status - info
added the required property
//to the response with the status
- info