Affilcore

API для разработчиков

API только для чтения. Он возвращает ровно то, что владелец ключа видит на своих экранах: те же строки из той же базы данных, под теми же политиками доступа. Здесь нет действий, которые что-либо меняют.

Платное дополнение

Доступ к API — платное дополнение, как для магазинов, так и для партнёров. Панель управления и экспорт в CSV остаются бесплатными всегда — каждый клик, конверсию и комиссию можно увидеть и сохранить в файл, ничего не платя. Добавляется автоматический конвейер.

Готовых тарифов пока нет. Свяжитесь с нами, и мы всё подберём. Пока дополнение не включено, существующий ключ возвращает пустой список, а не ошибку.

Аутентификация

Каждый запрос несёт ключ в заголовке Authorization: Bearer afp_live_…. Ключ создаётся на экране аккаунта и показывается только один раз: у нас хранится лишь его хеш, поэтому показать его снова не можем и мы.

Ключ принадлежит человеку, а не магазину и не партнёру. То, что он может читать, определяется тем, что этот человек может читать в системе в данный момент: тот, кто управляет двумя магазинами, получает оба на одном ключе, а тот, кто и партнёр, и владелец магазина, может выбрать ресурсы с обеих сторон.

Выбор при создании только сужает. Он ничего не расширяет: ресурс, выбранный для того, кто не должен его видеть, вернёт пустой список, но никогда не данные другого человека.

Пример

curl -H "Authorization: Bearer $API_KEY" \
  "https://affilcore.com/api/v1/store-orders?days=30&limit=100"

Ответ имеет вид { data: [...], meta: { resource, count, limit, from, to } }. count — число строк в этом ответе, а не общее количество.

Параметры

  • from и to — включительный диапазон в формате yyyy-MM-dd. Только вместе, иначе они игнорируются.
  • days — 7, 30 или 90 дней назад, включая сегодня. По умолчанию: 30.
  • limit — от 1 до 1000, по умолчанию 100. Значение вне диапазона обрезается, а не отклоняется.

Нестандартный запрос не возвращает ошибку, а откатывается к значению по умолчанию: строка запроса, отредактированная вручную, не должна ронять интеграцию.

Ограничение частоты

120 запросов в минуту, считаются на человека, а не на ключ, — поэтому два ключа одного человека делят один лимит. Превышение возвращает 429 с Retry-After.

Ресурсы

Пять, и это ровно те ресурсы, которые можно скачать в виде CSV с экранов. Столбцы выбраны по одному: псевдонимные идентификаторы и данные, которые никто не запрашивал, просто не выходят отсюда.

GET /api/v1/affiliate-sales

המרות

Для: Партнёр · фильтр по occurred_at

  • occurred_atдата и время (ISO 8601)
  • store_nameтекст
  • order_idтекст
  • program_nameтекст
  • event_typeтекст — purchase | lead | signup | trial | subscription | renewal | booking | install
  • totalдесятичное число
  • refunded_amountдесятичное число
  • currencyтекст
  • attribution_reasonтекст
  • coupon_codeтекст
  • commission_amountдесятичное число
  • commission_adjustmentsдесятичное число
  • commission_statusтекст — pending | approved | rejected | reversed | paid

GET /api/v1/affiliate-commissions

לוח-שחרור

Для: Партнёр · без фильтра по датам

  • release_onдата (yyyy-MM-dd)
  • kindтекст
  • commissionsцелое число
  • amountдесятичное число

GET /api/v1/store-orders

הזמנות

Для: Владелец магазина · Оператор · фильтр по occurred_at

  • occurred_atдата и время (ISO 8601)
  • order_idтекст
  • totalдесятичное число
  • currencyтекст
  • refunded_amountдесятичное число
  • affiliate_nameтекст
  • program_nameтекст
  • coupon_codeтекст
  • attribution_reasonтекст
  • commission_amountдесятичное число
  • commission_adjustmentsдесятичное число
  • commission_statusтекст

GET /api/v1/store-partners

שותפים

Для: Владелец магазина · Оператор · без фильтра по датам

  • display_nameтекст
  • ref_codeтекст
  • affiliate_statusтекст — pending | approved | rejected | paused | terminated
  • clicksцелое число
  • ordersцелое число
  • revenueдесятичное число
  • commission_pendingдесятичное число
  • commission_approvedдесятичное число
  • commission_paidдесятичное число

GET /api/v1/operator-commissions

עמלות

Для: Оператор · фильтр по created_at

  • order_idтекст
  • store_nameтекст
  • affiliate_nameтекст
  • affiliate_refтекст
  • amountдесятичное число
  • adjustmentsдесятичное число
  • currencyтекст
  • statusтекст — pending | approved | rejected | reversed | paid
  • locked_untilдата и время (ISO 8601)

Чего здесь нет — намеренно

Нет постбэка и нет исходящего вебхука. Платформа по своей инициативе не отправляет ничьи данные во внешние системы — кто хочет данные, тот запрашивает их. Это решение о том, что может выходить наружу, а не техническое ограничение.

Нет и записи через API. Измерения поступают через пиксель и вебхуки, которые сохраняют разделение двух слоёв измерения; действие, меняющее деньги, выполняется на экране, под учётной записью ответственного человека.

Вопрос об интеграции