Skip to main content

Entities & invariants

Rule engine contract

Event → conditions (profile attrs, segment/tier membership, aggregates, frequency) → effects (parametric rule_effect_types, is_system seed: award_points, issue_coupon, send_webhook, trigger_campaign; F2 row: apply_discount per DEC-H4). Effects are deduped per (event, rule) — idempotent.

Events emitted

points.earned|redeemed|expired|adjusted|revoked · points.expiring_soon · coupon.issued|redeemed|expired · referral.link_created|converted · tier.upgraded|downgraded

Endpoints (Runtime hot: SLO <300 ms)

POST /v1/loyalty/redemptions (loyalty.redemptions.create) · POST /v1/loyalty/coupons/validate (loyalty.coupons.validate) · POST /v1/loyalty/qualifications (loyalty.qualifications.read) · GET /v1/loyalty/members/me (member token) · Management CRUD: campaigns, rules, rewards, tiers, referrals (loyalty.{resource}.{action})