Skip to main content

Pricing Context Rules

Creating Rules

POST /api/v1/admin/pricing-context-rules
{
"name": "Visa Partnership",
"partnerId": "VISA",
"disablePromotions": true,
"disableCoupons": true,
"allowedBankOfferIds": ["visa-offer-1", "visa-offer-2"],
"additionalMultiplier": 0.95,
"priority": 10,
"status": "ACTIVE"
}

Priority & Matching

Rules are evaluated by priority descending (highest first). First match wins.

Priority 10: partnerId=VISA           ← matches Visa visitors
Priority 5: loyaltyTierMin=2 ← matches Gold+ members
Priority 1: utmMedium=cpc ← matches paid traffic

A Visa visitor who's also Gold tier → Visa rule wins (priority 10 > 5).

Time-Bound Rules

{
"name": "Summer Campaign",
"utmCampaign": "summer_2026",
"additionalOfferIds": ["summer-promo-1"],
"startAt": "2026-05-01T00:00:00Z",
"endAt": "2026-08-31T23:59:59Z",
"priority": 3,
"status": "ACTIVE"
}

Rules outside their startAt/endAt window are automatically excluded.

Caching

Rules are cached in-memory (AtomicReference) with a 15-minute refresh interval. Changes take up to 15 minutes to take effect.

pricing.context.cache.cron=0 */15 * * * *

Examples

Visa: only Visa bank offers, no promotions

{ "partnerId": "VISA", "disablePromotions": true, "disableCoupons": true,
"allowedBankOfferIds": ["visa-1", "visa-2"], "priority": 10 }

Gold members: 5% off

{ "loyaltyTierMin": 2, "additionalMultiplier": 0.95, "priority": 5 }
{ "utmMedium": "cpc", "additionalOfferIds": ["paid-bonus-1"], "priority": 3 }