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 | installtotalдесятичное число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 | terminatedclicksцелое число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 | paidlocked_untilдата и время (ISO 8601)
Чего здесь нет — намеренно
Нет постбэка и нет исходящего вебхука. Платформа по своей инициативе не отправляет ничьи данные во внешние системы — кто хочет данные, тот запрашивает их. Это решение о том, что может выходить наружу, а не техническое ограничение.
Нет и записи через API. Измерения поступают через пиксель и вебхуки, которые сохраняют разделение двух слоёв измерения; действие, меняющее деньги, выполняется на экране, под учётной записью ответственного человека.