01 Введение и авторизация
Запросы к API осуществляются по протоколу HTTPS. Базовый адрес функции — https://cpaw.cat/api/cpaw/<функция>.json. Расширение формата обязательно (.json).
Параметры можно передавать в GET или в POST. Ответ всегда выдаётся в формате JSON в кодировке UTF-8, HTTP-статус ответа всегда 200.
В тексте параметры-плейсхолдеры показаны в фигурных скобках: {id} — строка авторизации, {offer} — идентификатор оффера, {network} — идентификатор сети. В реальных запросах фигурные скобки не используются — только сами значения.
Авторизация
Ключ передаётся в параметре id в виде <идентификатор>-<ключ>:
<идентификатор>— числовой ID вашего пользователя;<ключ>— ваш персональный API-ключ.
02 Формат ответа
Успешный ответ содержит поле status: ok и данные в поле data:
{
"status": "ok",
"data": { "...": "..." }
}
Функция offers дополнительно возвращает рядом блок навигации nav — его состав описан в её разделе. Остальные функции отдают всё разом, без постраничной разбивки.
03 Обработка ошибок
При ошибке ответ содержит status: error и поле error с кодом ошибки:
{
"status": "error",
"error": "auth"
}
Общие коды ошибок:
auth— API-ключ не подходит;ban— пользователь заблокирован;access— доступ к выбранному ресурсу закрыт;request— некорректный запрос (например, не указано расширение формата);not-found— запрошенный объект не найден.
Каждая функция может возвращать и свои собственные коды ошибок, описанные в её разделе.
Вернуться к оглавлению04 Типы событий
Идентификаторы типов событий применяются в запросах и ответах функций feed и offer:
| ID | Событие | ID | Событие |
|---|---|---|---|
1 | Новый оффер | 9 | Изменилась цена |
2 | Оффер отключён | 10 | Изменилось отчисление |
3 | Оффер активирован | 11 | Изменился апсейл |
4 | Новая цель | 12 | Изменился кросс-сейл |
5 | Цель отключена | 13 | Изменился процент |
6 | Цель активирована | 14 | Изменилась валюта |
7 | Изменился тип | 15 | Изменилось название оффера |
8 | Изменился холд | 16 | Изменилось название цели |
05 feed — Лента обновлений
Возвращает события ленты за указанный период. Максимум 1000 событий в ответе, отсортированы от самого свежего (по убыванию id).
Параметры
| Поле | Описание |
|---|---|
feed | Тип ленты: all — все публичные события; offer — мои офферы; subs — мои подписки. По умолчанию — мой мониторинг (мои офферы + мои подписки). |
from | Начало выборки: дата ГГГГ-ММ-ДД или Unix Timestamp. |
to | Конец выборки: дата ГГГГ-ММ-ДД или Unix Timestamp. |
after | ID последнего изменения, после которого начать выгрузку. |
search | URL оффера в партнёрской сети для поиска. |
network | Идентификатор партнёрской сети. |
offer | Идентификатор оффера на стороне WatchCat. |
goal | Идентификатор цели на стороне WatchCat. |
type | Идентификатор типа события. |
after вместо дат. После каждой выгрузки сохраняйте наибольший id изменения (всегда идёт первым в списке) и передавайте его в after при следующем запросе.Ответ
Поле data содержит массив событий (лента упорядочена по времени). Поля каждого события:
| Поле | Описание |
|---|---|
id | Идентификатор изменения. |
time | Время события, Unix Timestamp. |
tid | Тип события, число. |
nid | Идентификатор сети. |
oid | Идентификатор оффера. |
gid | Идентификатор цели (0, если событие не о цели). |
date | Дата события, ГГГГ-ММ-ДД ЧЧ:ММ:СС. |
type | Название типа события. |
network | Название сети. |
offer | Название оффера. |
goal | Название цели или false. |
value | Новое значение или false. |
old | Старое значение или false. |
url | Адрес оффера в WatchCat. |
my | true — персональный оффер, false — публичный. |
{
"status": "ok",
"data": [
{
"id": 35400, "time": 1573291851, "tid": 4,
"nid": 16, "oid": 6113, "gid": 19304,
"date": "2019-11-09 09:30:51", "type": "Новая цель",
"network": "Admitad", "offer": "Едадил [CPI, Android] RU",
"goal": "Install on Android",
"value": false, "old": false,
"url": "https://cpaw.cat/offer/6113", "my": false
}
]
}
Вернуться к оглавлению
06 network — Список сетей
Показывает список доступных для работы сетей. Входящих параметров нет. data — объект, ключ — идентификатор сети, значение — объект с полями:
| Поле | Описание |
|---|---|
id | Идентификатор сети. |
name | Название. |
domain | Домен для распознавания ссылок на офферы. |
private | Сеть приватная, доступна только VIP. Поле присутствует только у VIP-пользователей. |
offer | Сеть поддерживает добавление своих приватных офферов. |
fav | Избранная сеть (выводится на дашборде). |
prio | Приоритет сортировки (сети идут по prio убыв., затем по названию). |
geo | Гео сети: { код: название } — объединение гео активных публичных офферов сети. Пусто ([]), пока сеть ни разу не проверялась. |
auths | Список требуемых данных авторизации (только если offer = true): login/pass — логин и пароль кабинета, user — идентификатор пользователя API, api/key — публичный и секретный ключи. |
subscribed | Подписан ли текущий пользователь на изменения этой сети. |
level | Уровень подписки: 0 — не подписан, 1 — только новые офферы, 2 — любые изменения. |
{
"status": "ok",
"data": {
"2": {
"id": 2, "name": "Admitad", "domain": "www.admitad.com",
"offer": true, "fav": true, "prio": 100,
"geo": { "ru": "Россия", "de": "Германия" },
"auths": [ "user", "key" ],
"subscribed": true, "level": 2
}
}
}
Вернуться к оглавлению
07 offers — Список и поиск офферов
Показывает списки офферов: общий каталог, приватные офферы, подписки. Поиск по URL, названию или похожим офферам.
Параметры
| Поле | Описание |
|---|---|
filter | my — мои офферы; public — публичные; subs — мои подписки. По умолчанию — мои + публичные. |
like | Идентификатор оффера, к которому подбираются похожие (по ключевым словам названия). Если задан, search игнорируется. |
search | Название оффера (полнотекстовый поиск) или его URL в партнёрской сети. |
geo | Гео оффера: один или несколько двухбуквенных ISO-кодов стран через пробел, тире или запятую. |
active | Активность: 0 — отключённые, 1 — активные. |
network | Идентификатор сети. |
show | Офферов на странице, 10–1000, по умолчанию 500. |
offset | Позиция начала выборки (0, 500, 1000, …). |
page | Страница списка, если не указан offset (по умолчанию 1). |
Ответ
Поле data содержит объект офферов (ключ — ID оффера), а рядом — блок навигации nav с постраничной разбивкой:
Поле nav | Описание |
|---|---|
total | всего найдено записей |
page | текущая страница |
pages | всего страниц |
show | записей на страницу |
offset | позиция начала выборки в общем списке |
Поля оффера:
| Поле | Описание |
|---|---|
id | Идентификатор оффера. |
active | Оффер активен. |
name | Название оффера. |
info | Адрес оффера в WatchCat. |
nid | Идентификатор сети. |
network | Название сети. |
url | Адрес оффера в партнёрской сети. |
add | Можно ли добавить оффер в приватные. |
time | Время последнего изменения, Unix. |
date | Дата последнего изменения. |
first | Первое появление оффера, Unix. |
sub | Подписан ли пользователь на оффер. |
now | Мгновенное уведомление по подписке (иначе — в дайджест). |
goal | Число активных целей. |
goals | Всего целей. |
geo | Гео оффера: { код: название }. |
private | false для публичного оффера или объект приватного: period, а также login/pass/user/api/key (расшифрованные, при наличии). |
{
"status": "ok",
"data": {
"2861": {
"id": 2861, "active": true, "name": "Пояс AB Gymnic",
"info": "https://cpaw.cat/offer/2861", "nid": 6, "network": "M1 Shop",
"url": "http://m1-shop.ru/myoffers/add/453", "add": true,
"time": 1571411245, "date": "2019-10-18 15:07:25", "first": 1571411245,
"sub": true, "now": false, "goal": 3, "goals": 5,
"geo": { "ru": "Россия", "ua": "Украина" },
"private": false
}
},
"nav": { "total": 100, "page": 1, "pages": 1, "show": 500, "offset": 0 }
}
Вернуться к оглавлению
08 offer — Информация об оффере
Показывает все сведения об одном оффере. Найти оффер можно тремя способами:
- по
offer— идентификатору оффера на стороне WatchCat (единственный способ для приватного оффера); - по
url— адресу оффера в партнёрской сети (только публичные); - по
network+uid— идентификатору сети и оффера на её стороне (только публичные).
offer (в легаси-API это был id; теперь id занят под авторизацию).Параметры
| Поле | Описание |
|---|---|
offer | Идентификатор оффера в WatchCat. |
url | Адрес оффера в партнёрской сети (только публичные офферы). |
network | Идентификатор сети (вместе с uid, только публичные). |
uid | Идентификатор оффера на стороне сети (вместе с network). |
Если оффер не найден — ошибка not-found. При успехе data содержит поля оффера (те же, что в offers), а также:
| Поле | Описание |
|---|---|
goals | Всего целей оффера. |
goalactive | Число активных целей (в списке offers это поле называется goal). |
goal | Объект целей, ключ — ID цели (состав — ниже). |
change | Массив изменений оффера (состав — ниже). |
Поля цели (goal):
| Поле | Описание |
|---|---|
id | Идентификатор цели. |
active | Цель активна. |
name | Название цели. |
type | Модель: CPS/CPL/CPA/CoD/CPC/RS. |
code | Код цели в сети. |
geo | ISO-код гео цели. |
price | Цена на лендинге. |
cash | Базовое отчисление или нижняя граница. |
up | Апсейл / верхняя граница. |
cross | Кросс-сейл. |
percent | Процент. |
currency | Валюта или false. |
Поля изменения (change): id, time, tid, gid, date, type, goal, value, old (см. feed).
{
"status": "ok",
"data": {
"id": 2874, "active": true, "name": "Detoxic - средство от паразитов",
"info": "https://cpaw.cat/offer/2874", "nid": 6, "network": "M1 Shop",
"url": "http://m1-shop.ru/myoffers/add/897", "add": true,
"time": 1571432786, "date": "2019-10-18 21:06:26", "first": 1571429261,
"sub": true, "now": false,
"private": false, "goals": 1, "goalactive": 1,
"geo": { "tj": "Таджикистан" },
"goal": {
"11419": {
"id": 11419, "active": true, "name": "Таджикистан", "type": "CPS",
"code": "tj", "geo": "tj", "price": 200, "cash": 350,
"up": 0, "cross": 0, "percent": 0, "currency": "rub"
}
},
"change": [
{ "id": 24201, "time": 1571432786, "tid": 4, "gid": 11419,
"date": "2019-10-18 21:06:26", "type": "Новая цель",
"goal": "Таджикистан", "value": false, "old": false }
]
}
}
Вернуться к оглавлению
09 stat — Статистика по сетям
Агрегаты по каждой публичной сети. Входящих параметров нет. data содержит:
nets— массив сетей с полямиid,name,url(каталог, отфильтрованный по сети),nomy(сеть не поддерживает добавление своих офферов),domain,offer(офферов),goal(целей),change(изменений);total— суммарные счётчики:networks,offers,goals,changes.
{
"status": "ok",
"data": {
"nets": [
{
"id": 2, "name": "Admitad",
"url": "https://cpaw.cat/offers?n=2", "nomy": true,
"domain": "www.admitad.com", "offer": 5820, "goal": 14310, "change": 92034
}
],
"total": { "networks": 48, "offers": 99358, "goals": 229257, "changes": 3293186 }
}
}
Вернуться к оглавлению
10 daily — Ежедневная статистика
Глобальные счётчики. Входящих параметров нет. data:
| Поле | Описание |
|---|---|
net | Всего рабочих сетей. |
nets | Из них публичных. |
offer | Всего офферов. |
offers | Офферов добавлено за последние 24 часа. |
goal | Всего целей. |
goals | Целей добавлено за последние 24 часа. |
change | Всего изменений. |
changes | Изменений за последние 24 часа. |
{
"status": "ok",
"data": {
"net": 48, "nets": 47,
"offer": 99358, "offers": 42,
"goal": 229257, "goals": 118,
"change": 3293186, "changes": 1204
}
}
Вернуться к оглавлению
11 add — Добавить приватный оффер
Создаёт приватный оффер и включает его проверку раз в сутки. Источник оффера задаётся одним из трёх способов.
Параметры
| Поле | Описание |
|---|---|
offer | Существующий публичный оффер WatchCat (первый способ). |
url | Адрес оффера в партнёрской сети (второй способ). |
network + uid | Идентификатор сети и оффера на её стороне (третий способ). |
login, pass, user, api, key | Данные авторизации в сети. Нужный набор полей берётся из списка сетей (поле auths). |
При успехе data содержит id добавленного оффера (пригодится для edit / del).
Коды ошибок: not-found — оффер/сеть не найдены; no-private — сеть не поддерживает свои офферы; bad-auth — сеть отклонила данные авторизации; error — ошибка сохранения.
{ "status": "ok", "data": { "id": 1234 } }
Вернуться к оглавлению
12 edit — Настройка приватного оффера
Изменяет данные авторизации и частоту проверки. Отправляйте только те поля, которые хотите изменить; обязателен лишь offer.
Параметры
| Поле | Описание |
|---|---|
offer* | Идентификатор оффера на стороне WatchCat (обязательный). |
period | Период проверки в минутах: 1440 — раз в день (оптимально), 720 — дважды в день, 360 — раз в 6 часов, 180 — раз в 3 часа, 120 — раз в 2 часа, 60 — каждый час; для VIP также 30 и 10. |
login, pass, user, api, key | Данные авторизации (обновляются только те поля, которые уже заданы у оффера). |
При успехе data содержит id и changed — список реально изменённых полей (пустой, если поле уже имело нужное значение).
Коды ошибок: bad-id — не указан offer; access — оффер не ваш; edit — ошибка сохранения.
{ "status": "ok", "data": { "id": 1234, "changed": [ "api" ] } }
Вернуться к оглавлению
13 del — Удалить приватный оффер
Удаляет ранее добавленный приватный оффер и всю историю его проверки.
Параметры
| Поле | Описание |
|---|---|
offer* | Идентификатор оффера на стороне WatchCat (обязательный). |
Коды ошибок: bad-id — не указан offer; access — оффер не ваш.
{ "status": "ok", "data": { "id": 1234 } }
Вернуться к оглавлению
14 sub — Подписаться на оффер
Добавляет подписку на публичный оффер. Функция идемпотентна: повторный вызов не создаёт дубль, но позволяет переключить флаг мгновенного уведомления.
Параметры
| Поле | Описание |
|---|---|
offer* | Идентификатор публичного оффера (обязательный). |
now | Мгновенное уведомление: 1 — сообщать сразу, 0 — включать в дайджест. Если не передан: на новой подписке — 0, на существующей — без изменений. |
При успехе data содержит id и актуальное значение флага now.
Коды ошибок: bad-id — не указан offer; access — оффер приватный или сеть недоступна.
{ "status": "ok", "data": { "id": 1234, "now": 1 } }
Вернуться к оглавлению
15 unsub — Отписаться от оффера
Удаляет подписку на публичный оффер.
Параметры
| Поле | Описание |
|---|---|
offer* | Идентификатор оффера (обязательный). |
Коды ошибок: bad-id — не указан offer; access — оффер приватный или сеть недоступна.
{ "status": "ok", "data": { "id": 1234 } }
Вернуться к оглавлению
16 nwsub — Подписаться на сеть
Добавляет подписку на партнёрскую сеть целиком. Функция идемпотентна: повторный вызов не создаёт дубль, но позволяет сменить уровень подписки.
Параметры
| Поле | Описание |
|---|---|
network* | Идентификатор сети (обязательный). |
level | Уровень подписки: 1 — только новые офферы, 2 — любые изменения. По умолчанию 1. |
При успехе data содержит id сети и актуальный level.
Коды ошибок: bad-id — не указан network; access — сеть недоступна (приватная сеть для не-VIP).
{ "status": "ok", "data": { "id": 2, "level": 2 } }
Вернуться к оглавлению
17 nwunsub — Отписаться от сети
Удаляет подписку на сеть. Разрешена всегда (в том числе если сеть стала приватной).
Параметры
| Поле | Описание |
|---|---|
network* | Идентификатор сети (обязательный). |
Коды ошибок: bad-id — не указан network.
{ "status": "ok", "data": { "id": 2 } }
Вернуться к оглавлению