# Validate dynamic offer decisions The Dynamic Offer Decision Engine can be tested via this endpoint to calculate a decision output response based on the criteria of the provided validation ID. Validation criteria is configured on the Zephr Console and determines the version of the dynamic offer being used. Endpoint: GET /zephr/public/decisions/v2/dynamic-offers/{offerId}/validations/{validationId} Version: 2025-07-30 Security: CookieBlaizeSession, JwtQuery, JwtHeaderXBlaizeJwt, JwtHeaderXZephrJwt, JwtBearer, JwtCookie ## Path parameters: - `offerId` (string, required) The dynamic offer ID. - `validationId` (string, required) The dynamic offer validation ID. ## 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 ## Response 404 fields