Saltar al contenido principal

Lectura de campañas desde GET

Esta guía forma parte de la integración Coupon Server del motor nuevo. Úsala cuando el TPV, e-commerce o middleware debe leer campañas de descuento en GET /discounts e interpretar los campos antes de aplicar la promoción en local.

Alcance: campañas de descuento evaluadas sobre carritos en modo Coupon Server (apply_discounts: false). Eventos personalizados, triggers y challenges pertenecen a puntos, juegos o challenges. Modelo de runtime: Coupon Server.

Esta guía está orientada al equipo de integraciones que interpreta campañas de descuentos ya creadas al consultar listados desde GET /discounts (equivalente interno: GET /discounts) y las alinea con el carrito enviado a la Streaming API.

Alcance: solo campañas de descuentos con evento carrito (when: after_create_activity). Evento personalizado, trigger y challenge aplican a puntos, no a esta guía.

Índice​


Contenido de la guía​

PáginaQué cubre
Respuesta GETQuery params, metadatos, coupon_info, campos TPV, parseo JSON
Condicionesrule_conditions: AND/OR, catálogos cliente/carrito/líneas/tienda
Aplicaciónrule_application: alcance del efecto en líneas
Efectosrule_effects: tipos, distribución, bundle (rule_group)

Modelo canónico​

CampoQué representa
rule_conditionsCondiciones de victoria: ¿cuándo puede aplicar o no la campaña?
rule_applicationAplicación: ¿sobre qué líneas se aplica el efecto?
rule_effectsEfecto: qué descuento y cómo se distribuye

Usa siempre rule_conditions, rule_application, rule_effects (no rules_* ni alias legacy como victory_conditions). rule_application no es distribución; la distribución va en rule_effects.distribution.


Cómo leer una campaña paso a paso​

  1. Metadatos y vigencia — id, name, active, available_from / available_to, category, currency. Ver Respuesta de GET /discounts.
  2. Evento y audiencia — when debe ser after_create_activity. select_customers: all_customers, loyalty, targeted. Si coupon_required: true, leer coupon_info. Si además select_customers: targeted, leer coupon_info.voucher_info.
  3. Modo Company — Si configurations.default_apply_discounts = false, comprobar product_ids_rule_* y locations_* (rellenos solo con taxonomía interna en categorías). Ver Campos para TPV.
  4. rule_conditions — Parsea el string JSON. Interior: conditions.and[] / or[]. Ver Condiciones.
  5. rule_application — Tras parsear, raíz application.and[]. Vacío = todas las líneas. Ver Aplicación.
  6. rule_effects — type, value, distribution, limits, rule_group. Ver Efectos.
  7. Apilamiento y límites — stackability_properties, priority, once, once_limit, budget_*, maximum_discount_transaction (distinto de limits del efecto).

Checklist para integraciones​

  • GET /discounts con filtros correctos (customer_id, countries, location_id, campaign_audience, …).
  • Paginación: usar next_token_starts_after → starting_after hasta agotar data[].
  • Vigencia: active, available_from / available_to, recurrence_type / recurrence_days.
  • category, stackability_properties, priority — coherente con Apilamiento.
  • when: after_create_activity y select_customers; si coupon_required: true: coupon_info; si targeted: también coupon_info.voucher_info (voucher_code, selected, redenciones, ventanas).
  • configurations.default_apply_discounts de la Company: si false, usar arrays TPV solo si vienen rellenos (taxonomía interna); si no, parsear rule_*.
  • Parsear rule_conditions, rule_application, rule_effects si vienen como string JSON.
  • Recorrer conditions.and (dentro de rule_conditions) y subgrupos; ninguna cláusula debe fallar en AND raíz.
  • Cláusulas por **field** (+ array_field); validar contra customer + ticket.
  • Totales: total / original_total / total_cart_without_additional_costs.
  • rule_application: vacío = todas las líneas; subcondiciones solo quantity.
  • Separar victoria (rule_conditions) vs aplicación (rule_application) vs efecto (rule_effects).
  • Límites de victoria: once, once_limit; presupuesto budget_*; maximum_discount_transaction.
  • Efecto: type, distribution, limits, rule_group (bundle).
  • formula: promoPrice (o acordado) en líneas del carrito.
  • Respuesta de compra: effects[] del carrito vs rule_effects del GET si el descuento no coincide.

Páginas relacionadas​