fnfd API

Контракт совместим с legacy. Авторизация приёма — заголовок api-key (per-promo). Интерактивная схема: Swagger /docs.

Приём чека

Ответ приёма: {status,uuid,receiptId}. Дубликат → 409.

Статус чека

GET /api/receipts/{uuid} (api-key) или публично GET /r/{uuid}.json. Состояния: ARRIVED → INSPECTED → REVIEWED; поля REVIEWED: approved, retailer, total, answers, rules, promoPoints, reviewers, matchedPromos, fnsReceipt, rejectReason.

Callback бренду

Per-promo URL/метод/заголовки. Шлются ARRIVEDINSPECTEDREVIEWED (тот же payload, что в статусе, + state). Ответ бренда {externalId, meta} сохраняется. Ретраи с бэкоффом; коды 400/409/424 не повторяются; на 404 повторно шлётся ARRIVED и затем исходное событие (само-восстановление).

Виджет

<script src='/widget/fnfd-widget.js'> + FnfdWidget.init({el,apiKey,promoId}). Демо: /widget/demo.