# Process dynamic offer decisions The Dynamic Offer Decision Engine can be invoked via the Public API to calculate a decision output response based upon each property rule under the Dynamic Offer created in the Zephr Console. Endpoint: POST /zephr/public/decisions/v2/dynamic-offers Version: 2025-07-30 Security: CookieBlaizeSession, JwtQuery, JwtHeaderXBlaizeJwt, JwtHeaderXZephrJwt, JwtBearer, JwtCookie ## Request fields (application/json): - `dynamic_offer` (object, required) The dynamic offer to evaluate, must specify the slug of the dynamic offer, and any custom input to be used in the rules. Example: {"slug":"offerX","inputs":{}} - `dynamic_offer.slug` (string, required) Dynamic Offer slug Example: "offerX" - `dynamic_offer.inputs` (object) Custom inputs configured in Dynamic Offer. This can be any single layer map of key-value pairs. Example: {} - `session` (string) Zephr Session ID, required for trials Example: "xxx-xxx-xxx" - `foreign_keys` (object) Foreign system and ID used to identify the user. Example: {} - `ip` (string) Client IP address, defaults to request IP. Example: "x.x.x.x" - `user_agent` (string) Client user agent Example: "Mozilla/5.0 (Macintosh; Intel Mac OS X 11)..." - `jwt` (string) A JSON Web Token, may include identity or product holding claims. Example: "xxx-xxx-xxx" - `path` (string) Request path, required for trials if used. Example: "/x.html" - `content_id` (string) Content ID, used to perform requests to a 3rd party API for additional content information used in making a decision. Example: "xxx-xxx-xxx" ## Response 200 fields (application/json): - `products` (array) The processed output for mainly the Product rule. Price and Discount, if present, the output of those would be nested under each product element according to the rule specification. - `products.id` (string) - `products.label` (string) - `products.description` (string) - `products.features` (array) - `products.features.type` (string) - `products.sharingLimit` (number) - `products.metadata` (object) - `products.metadata.order` (number) - `products.metadata.recommended` (boolean) - `products.paymentPlans` (array) - `products.paymentPlans.planId` (string) - `products.paymentPlans.planData` (object) Any addition fields on the product rate plan level - `products.paymentPlans.charges` (array) - `products.paymentPlans.charges.chargeId` (string) - `products.paymentPlans.charges.prices` (array) The prices associated with this charge, filtered/sorted according to the price rule of the Dynamic Offer - `products.paymentPlans.charges.prices.currency` (string) - `products.paymentPlans.charges.prices.price` (number) - `products.paymentPlans.charges.chargeDefinitionData` (object) Any addition fields on the product charge definition level - `products.paymentPlans.charges.chargeData` (object) Any addition fields on the product rate plan charge level - `products.paymentPlans.charges.discounts` (array) The discounts associated with this charge, according to the discount rule output of this Dynamic Offer. - `products.paymentPlans.charges.discounts.items` (array) - `products.paymentPlans.charges.discounts.items.order` (number) The order with defines the priority of this discount - `products.paymentPlans.charges.discounts.items.type` (string) The type of the discount Enum: "FIXED", "PERCENTAGE", "OVERRIDE" - `products.paymentPlans.charges.discounts.items.value` (number) - `products.paymentPlans.charges.discounts.items.occurrence` (string) The frequency this discount occurs, if it's recurring then an end policy is expected to be present Enum: "ONE_OFF", "RECURRING" - `products.paymentPlans.charges.discounts.items.startPolicy` (object) - `products.paymentPlans.charges.discounts.items.startPolicy.offset` (object) - `products.paymentPlans.charges.discounts.items.startPolicy.offset.unit` (string) Enum: "CHARGE_BILLING_PERIOD", "DAY", "WEEK", "MONTH", "YEAR" - `products.paymentPlans.charges.discounts.items.endPolicy` (object) - `products.paymentPlans.charges.discounts.items.attributes` (object) Discount Attributes you've defined in the Discount output within the Discount rule. - `products.paymentPlans.charges.discounts.orderType` (string) Specify how multiple discounts, if there is any, should be applied together Enum: "SEQUENTIAL", "STACKED" - `products.attributes` (object) Product Attributes you've defined in the Product catalog and application overrides that you've specified in the Product rule. - `tagline` (string) The tagline rule output - `custom` (object) key value pair of any custom property rule output. The key would be the property id, the value would be its rule output - `outcomes` (array) The rule outcome for each property rule within the offer. If you wish to record user conversion data, you would need to send these outcome data back to Zephr upon when the conversion is happening. - `outcomes.ruleId` (string) An identifier for the property rule - `outcomes.outcomeId` (string) An identifier for the outcome of this property rule execution - `errors` (array) - `errors.property` (string) The offer property id in which the rule failed to execute - `errors.error` (string) The error message explaining why this decision failed to resolve. Present only if there was an error. ## Response 400 fields