Traducción. El inglés es la versión autoritativa: ../../../modules/loyalty/spec.md.
Entidades e invariantes
Contrato del motor de reglas
Evento → condiciones (atributos de perfil, pertenencia a segmento o nivel, agregados, frecuencia) → efectos (rule_effect_types paramétrico, semillas is_system: award_points, issue_coupon,
send_webhook, trigger_campaign; fila F2: apply_discount según DEC-H4). Los efectos se deduplican
por (evento, regla) — idempotentes.
Eventos emitidos
points.earned|redeemed|expired|adjusted|revoked · points.expiring_soon · coupon.issued|redeemed|expired · referral.link_created|converted · tier.upgraded|downgradedEndpoints (Runtime caliente: 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 (token de member) ·
CRUD de gestión: campañas, reglas, recompensas, niveles, referidos (loyalty.{resource}.{action})