API поставщика

Чтобы начать работу с API-интерфейсом, необходимо получить ID и ключ. Они доступны в разделе «Профиль». Далее по тексту пользовательский ID будет обозначаться {user}, а ключ доступа - {key}. Важно! В строке запроса фигурные скобки указывать не нужно!

Взаимодействие с сервисом осуществляется по протоколу HTTP. Формат запроса - чистый POST. Формат результата - JSON. Ограничений на количество запросов нет. Если вам требуется отправить запрос в виде JSON POST, не забудьте указать заголовок Content-type: application/json

Добавление заказа

URL: https://api.cpa.moe/comp/add.json?id={user}-{key}

Функция позволяет добавить новый лид от имени компании, без указания источника поступления лида. Данные нового лида передаются в POST-запросе.

На входе функция принимает следующие основные данные о лиде:

Поле Описание
offer* Идентификатор оффера (обязательный параметр)
name ФИО заказчика
phone* Телефон заказчика в формате 79876543210 (обязательный параметр)
email Электронная почта заказчика
ip* IP-адрес заказчика (обязательный параметр)
ua User-Agent браузера заказчика
country Двухбуквенный код страны заказчика, вычисляется на основании IP-адреса

Дополнительные параметры для создания лида:

Поле Описание
us UTM-метка utm_source
uc UTM-метка utm_campaign
un UTM-метка utm_content
ut UTM-метка utm_term
um UTM-метка utm_medium
currency Трёхбуквенный код валюты заказчика, например RUB или BYN, по умолчанию вычисляется на основании страны заказчика
index Почтовый индекс адреса доставки в формате 127000
addr Адрес доставки. Может содержать в себе полный адрес без индекса, если не используются поля ниже. В противном случае содержит только номер дома, корпуса, квартиры или офиса.
area Регион доставки, например, Московская обл.
city Город доставки, например Москва
street Улица по адресу доставки, например ул. Мира
base Цена единицы товара в валюте заказа.
count Количество товара.
discount Скидка на товар в процентах.
more Сумма добавочной стоимости заказа, например, наценки за экспресс-доставку.
comm Дополнительный комментарий по заказу.
item Идентификатор вложенного товара, который необходимо добавить в заказ. Если товаров несколько, перечисляется через запятую.
items Массив вложенных товаров для добавления в заказ с указанием их цены. Каждый товар должен быть представлен ассоциативным массивом с полями:
  • id - идентификатор вложенного товара
  • price - цена за единицу товара
  • count - количество товара
params Ассоциативный массив со значениями произвольных полей заказа.

Пример простого запроса на создание лида (показан в JSON для удобства):

{
    "offer": 217,
    "ip": "12.34.56.78",
    "name": "John Doe",
    "phone": "77000000000",
    "country": "kz",
}

Пример создания лида с указанием массива товаров (показан в JSON для удобства):

{
    "offer": 217,
    "ip": "12.34.56.78",
    "name": "Jane Doe",
    "phone": "79000000000",
    "country": "ru",
    "items": [
        {
            "id": 135,
            "price": 9900,
            "count": 1
        }
    ]
}

Пример создания лида с произвольными полями (показан в JSON для удобства)

{
    "offer": 217,
    "ip": "12.34.56.78",
    "name": "John",
    "phone": "77000000000",
    "country": "kz",
    "params": {
        "sirname": "Doe",
        "phonecc": "+7"		
    }
}

Результатом выполнения функции является ассоциативный массив:

Поле Описание
status Результат выполнения операции: ok в случае успешного выполнения, error в случае ошибки
id Идентификатор добавленного заказа (в случае успеха)
error Идентификатор ошибки: nooffer при отсутствии идентификатора оффера, noid при отсутствии идентификатора заказа на стороне агентства, nophone при отсутствии номера телефона, duplicate при наличии заказа с таким же телефоном, именем и оффером в обработке, offer если не найден указанный оффер, traffic если оффер заблокирован и трафик на него запрещён, security при бане пользователя, ban при бане телефона или IP-адреса заказчика, db в случае внутренней ошибки добавления данных.

Пример ответа функции:

{ "status": "ok", "id": 1234 }

Список заказов

URL: https://api.cpa.moe/comp/list.json?id={user}-{key}&oid=1,2,3

Функция позволяет получить список заказов. Параметры отбора могут передаваться в GET или POST-запросе.

На входе функция может использовать следующие параметры для отбора заказов:

Поле Описание
oid Внутренний идентификатор заказа AlterCPA Moe или список идентификаторов через запятую
ids[] Массив внутренних идентификатор заказа AlterCPA Moe.
eid Внешний идентификатор заказа в интерфейсе поставщика или список идентификаторов через запятую
eids[] Массив внешних идентификатор заказа из интерфейса поставщика.
status Статус заказа:
  • 1 - заказ в обработке
  • 2 - холд
  • 3 - заказ принят
  • 4 - заказ отменён
  • 5 - треш
from
to
Отбор заказов по времени с from до to. Время указывается в формате UNIX-timestamp. Могут использоваться как оба параметра одновременно, так и один из параметров по отдельности. Полезно для формирования выгрузки заказов в свой интерфейс, но для этой задачи рекомендуется использовать поле ниже.
after Идентификатор последнего полученного заказа, после которого начинать выдачу. Полезно для выгрузки заказов в свой интерфейс - список заказов запрашивается каждый раз с указанием ID последнего полученного заказа, и в результате выводятся только новые заказы, пришедшие после указанного.

Результатом выполнения функции является массив элементов со следующими полями:

Поле Описание
id Идентификатор заказа в рамках AlterCPA Moe
offer Идентификатор оффера
wm Идентификатор вебмастера
stage Символьный статус заказа для вебмастера:
  • wait - заказ в обработке
  • hold - холд
  • approve - заказ принят
  • cancel - заказ отменён
  • trash - треш
phase Числовой статус заказа для вебмастера:
  • 1 - заказ в обработке
  • 2 - холд
  • 3 - заказ принят
  • 4 - заказ отменён
  • 5 - треш
status Статус заказа в CRM. Принимает одно из следующих значений:
  • 1 – Новый заказ
  • 2 – В обработке
  • 3 – Перезвонить
  • 4 – Холд
  • 5 – Отменён
  • 6 – На упаковке
  • 7 – Отправка
  • 8 – В пути
  • 9 – Доставлен
  • 10 – Оплачен
  • 11 – Возврат
  • 12 – Удалён
reason Код причины отказа. Принимает одно из следующих значений:
  • 1 – Некорректный номер (треш)
  • 2 – Передумал
  • 3 – Не заказывал (треш)
  • 4 – Требует сертификат
  • 5 – Неверное ГЕО (треш)
  • 6 – Ошибки или фэйк (треш)
  • 7 – Дублированный заказ (треш)
  • 8 – Заказал в другом месте (треш)
  • 9 – Дорого
  • 10 – Не устраивает доставка
  • 11 – Не удалось дозвониться (треш)
  • 12 – Подозрения на фрод (треш)
  • 13 – Не говорит на языке колл-центра (треш)
  • 14 – Товар не подошел (треш)
  • 15 – Оффер отключен
ip IP-адрес заказчика
time Время получения заказа в формате UNIX-timestamp
name ФИО заказчика
gender Пол заказчика. 1 - мужчина, 2 - женщина. Определяется автоматически.
phone Телефон заказчика в формате 79876543210
country Двухбуквенный код страны заказчика, вычисляется на основании IP-адреса
index Почтовый индекс адреса доставки в формате 127000
addr Адрес доставки. Может содержать в себе полный адрес без индекса, если не используются поля ниже. В противном случае содержит только номер дома, корпуса, квартиры или офиса.
area Регион доставки, например, Московская обл.
city Город доставки, например Москва
street Улица по адресу доставки, например ул. Мира
count Количество товара.
items Состав заказа, количество тех или иных вариантов товара. Массив, в котором ключ - идентификатор варианта, значение - количество товара данного вида и цена за единицу товара.
delivery Идентификатор службы доставки
discount Скидка на товар в процентах.
currency ISO-код валюты товара
base Цена за единицу товара в валюте заказа
delpr Цена за доставку в валюте заказа
more Сумма добавочной стоимости заказа, например, наценки за экспресс-доставку.
price Общая стоимость заказа.
comment Дополнительный комментарий по заказу.

Пример ответа функции:

[
    {
        "id": 13131,
        "offer": 15,
        "offername": "Shiny test offer",
        "wm": 59,
        "stage": "approve",
        "phase": 3,
        "status": 8,
        "reason": 0,
        "ip": "12.34.56.78",
        "time": 1234567890,
        "name": "John Doe",
        "gender": 0,
        "phone": "123456789000",
        "country": "ru",
        "index": "100000",
        "area": "",
        "city": "Moscow",
        "street": "Lenina street",
        "addr": "1",
        "comment": "Заберет у курьера в течение 2-5  дней",
        "count": 6,
        "items": {
            "12": [ 3, 665 ],
            "23": [ 1, 665 ],
            "34": [ 2, 665 ]
        },
        "delivery": 1,
        "discount": 0,
        "currency": "rub",
        "base": "0.00",
        "more": "0.00",
        "delpr": "350.00",
        "price": "4340.00"
    }
]

Смена статуса заказа

URL: https://api.cpa.moe/comp/status.json?id={user}-{key}&oid=123&status=approve

Функция позволяет обновить статус существующего заказа и изменить некоторые его поля. Все параметры могут передаваться как в POST, так и в GET-части запроса. Функция оптимальна для использования в PostBack-запросах.

На входе функция получает следующие параметры:

Поле Описание
oid
eid
Идентификатор заказа, над которым ведётся работа. Поле oid используется для указания внутреннего идентификатора заказа в рамках AlterCPA Moe, поле eid используется для работы с идентификатором заказа на стороне поставщика. Обязательное поле запроса. Может передаваться в GET.
status Текстовое поле со статусом заказа, привязанное к параметрам st* или распознаваемое автоматически по списку:
  • Принят: a, accept, accepted, approve, approved, confirm, confirmed, 1
  • Холд: h, hold, holding
  • Отмена: c, d, decline, declined, cancel, cancelled, canceled, reject, rejected, -1
  • Треш: t, trash, error, wrong, bad
sta Значение статуса, которое будет распознано как аппрув
stc Значение статуса, которое будет распознано как отмена
stt Значение статуса, которое будет распознано как треш
sth Значение статуса, которое будет распознано как холд
stw Значение статуса, которое будет распознано как заказ в обработке
name ФИО заказчика
phone Телефон заказчика в формате 79876543210 (только цифры)
email Адрес электронной почты заказчика
comment Дополнительный комментарий по заказу.
country Двухбуквенный ISO-код страны
currency Трёхбуквенный ISO-код валюты
base Цена за единицу товара или стоимость конверсии в валюте заказа
count Количество товара в заказе
delpr Стоимость доставки товара в валюте заказа

Обязательным являются только идентификатор заказа и статус, остальные поля используются по мере надобности. Результатом выполнения функции является ассоциативный массив:

Поле Описание
status Результат выполнения операции: ok в случае успешного выполнения, error в случае ошибки
error Идентификатор ошибки: orderid при отсутствии идентификатора заказа, edit в случае отсутствия полей для обновления (например, если информация не изменялась), access-denied при работе с недоступным заказом, request-error в случае внутренней ошибки системы.

Пример успешного ответа функции:

{ "status" : "ok" }

Пример ответа функции при возникновении ошибки:

{ "status" : "error", "error" : "access-denied" }

Редактирование заказа

URL: https://api.cpa.moe/comp/edit.json?id={user}-{key}

Функция позволяет отредактировать поля существующего заказа, обновить его статус. Часть параметров может передаваться в GET-части запроса.

На входе функция получает следующие параметры:

Поле Описание
oid
eid
Идентификатор заказа, над которым ведётся работа. Поле oid используется для указания внутреннего идентификатора заказа в рамках AlterCPA Moe, поле eid используется для работы с идентификатором заказа на стороне поставщика. Обязательное поле запроса. Может передаваться в GET.
accept Флаг приёма заказа. Устанавливается в 1 если заказ в данный момент одобряется на стороне поставщика. Может передаваться в GET.
status Идентификатор нового статуса заказа. Может передаваться в GET. Принимает одно из следующих значений:
  • 1 – Новый заказ
  • 2 – В обработке
  • 3 – Перезвонить
  • 4 – Холд
  • 5 – Отменён
  • 6 – На упаковке
  • 7 – Отправка
  • 8 – В пути
  • 9 – Доставлен
  • 10 – Оплачен
  • 11 – Возврат
  • 12 – Удалён
Для отмены заказа передайте статус 5 и поле reason.
Важно! Для подтверждения заказа используйте поле accept=1, а не смену статуса заказа!
reason Код причины отказа, обязателен для указания при установке статуса status=5. Может передаваться в GET. Принимает одно из следующих значений:
  • 1 – Некорректный номер (треш)
  • 2 – Передумал
  • 3 – Не заказывал (треш)
  • 4 – Требует сертификат
  • 5 – Неверное ГЕО (треш)
  • 6 – Ошибки или фэйк (треш)
  • 7 – Дублированный заказ (треш)
  • 8 – Заказал в другом месте (треш)
  • 9 – Дорого
  • 10 – Не устраивает доставка
  • 11 – Не удалось дозвониться (треш)
  • 12 – Подозрения на фрод (треш)
  • 13 – Не говорит на языке колл-центра (треш)
  • 14 – Товар не подошел (треш)
  • 15 – Оффер отключен
track Трек-код отправленной посылки. Может передаваться в GET.
name ФИО заказчика
phone Телефон заказчика в формате 79876543210 (только цифры)
email E-mail заказчика
index Почтовый индекс адреса доставки в формате 127000 (только цифры)
addr Адрес доставки. Может содержать в себе полный адрес без индекса, если не используются поля ниже. В противном случае должен содержать только номер дома, корпуса, квартиры или офиса.
area Регион доставки, например, Московская обл.
city Город доставки, например Москва
street Улица по адресу доставки, например ул. Мира
delivery Используемая идентификатор службы доставки
base Стоимость единицы товара в валюте заказа
delpr Стоимость доставки в валюте заказа
discount Скидка на товар в процентах. Целое число от 0 до 99.
count Количество товара, используется для товаров без дополнительных вариантов оформления, размера, цвета и пр.
items Массив вложенных товаров заказа с указанием их цены. Каждый товар должен быть представлен ассоциативным массивом с полями:
  • id - идентификатор вложенного товара
  • price - цена за единицу товара
  • count - количество товара
more Сумма добавочной стоимости заказа, например, наценки за экспресс-доставку. Прибавляется к основной сумме заказа после учёта всех скидок.
comment Дополнительный комментарий по заказу.

Обязательным является только поле идентификатора заказа, остальные поля используются по мере надобности. Результатом выполнения функции является ассоциативный массив:

Поле Описание
status Результат выполнения операции: ok в случае успешного выполнения, error в случае ошибки
error Идентификатор ошибки: orderid при отсутствии идентификатора заказа, edit в случае отсутствия полей для обновления (например, если информация не изменялась), access-denied при работе с недоступным заказом, request-error в случае внутренней ошибки системы.

Пример успешного ответа функции:

{ "status" : "ok" }

Пример ответа функции при возникновении ошибки:

{ "status" : "error", "error" : "access-denied" }

Аналитика заказов

URL: https://api.cpa.moe/comp/stats.json?id={user}-{key}&item=date

Функция предоставляет статистику по заказам, сгруппированную по выбранному параметру. Данная функция даёт подробную статистику по количеству заказов в каждом из статусов.

На входе функция получает следующие параметры:

Поле Описание
item* Обязательный параметр. Поле, по которому производится группировка статистики:
  • offer - идентификатор оффера
  • date - дата поступления заказа
  • hour - час поступления заказа
  • stage - стадия обработки заказа
  • geo - код страны
from Дата начала статистики в формате ГГГГ-ММ-ДД. По умолчанию используется дата неделю назад.
to Дата окончания статистики в формате ГГГГ-ММ-ДД. По умолчанию используется сегодняшний день.
offer Фильтрация по ID оффера.
stage Фильтрация по идентификатору (не названию!) стадии.
status Фильтрация по статусу заказа.
hour Фильтрация по часу поступления лида.
geo Фильтрация по ISO-коду страны.

Результатом выполнения функции является ассоциативный массив. Идентификатором каждого элемента служит идентификатор выбранного элемента группировки. Каждый элемент включает в себя следующие поля:

Поле Описание
id Идентификатор элемента группировки
name Название элемента группировки, если применимо
count Общее количество заказов
app Процент аппрува без учёта заказов в треше
apps Процент аппрува с учётом заказов в треше
cash Распределение количества заказов и общей суммы чека по валютам. Массив, в котором ключ - ISO-код валюты, а значение - пара [ количество лидов, сумма ].
status Распределение заказов по статусам. Массив, в котором ключ - код статуса, а значение содержит следующие поля:
  • count - количество заказов в этом статусе
  • cash - распределение количества заказов и общей суммы чека, аналогично предыдущему полю.

Пример ответа функции:

{
    "20190801": {
        "id": 20190801, // ИД элемента
        "name": "2019-08-01" // Название элемента
        "count": 24, // Количество
        "app": 100, // Процент аппрува
        "apps": 100, // Процент аппрува при учёте треша
        "cash": { // Распределение по валютам
            "usd": [ // ISO-код валюты
                23, // Количество заказов
                40477 // Сумма по заказам
            ],
            "rub": [ 1, 13990 ]
        },
        "status": { // Распределение по статусам
            "6": { // ИД статуса
                "count": 24, // Количество заказов в этом статусе
                "cash": { // Распределение по валютам
                    "usd": [ 23, 40477 ],
                    "rub": [ 1, 13990 ]
                }
            }
        },
    },
}

Добавление аудио записи звонка

URL: https://api.cpa.moe/comp/audio.json?id={user}-{key}

Чтобы прикрепить запись звонка к заказу, обязательно потребуется URL самой записи и номер телефона, на который осуществлялся звонок. Номер телефона должен совпадать с указанным в самом заказе. Крайне желательно также указывать время совершения звонка и исходящий номер звонящего, указанный у него в профиле. Конкретные ИД заказа и ИД изменения система постарается определить автоматически. Если есть возможность указать ИД заказа - будет только лучше.

Параметры могут передаваться как в GET, так и в POST.

Поле Описание
phone Номер, указанный в карточке заказа. Обязательный параметр.
operator Номер телефона оператора, указанный у него в профиле
src mp3 ogg wav Ссылка на аудио-файл соответствующего формата. Если формат аудио-файла неизвестен, применяется src, в противном случае лучше указывать конкретный формат. Указание одного из этих полей является обязательным.
time Время совершения вызова в формате Unix Timestamp. По умолчанию подставляется время вызова функции.
length Длительность вызова в секундах.
user ID пользователя, который совершил вызов. По умолчанию ID определяется по номеру оператора из параметра operator.
order ID заказа, по которому был совершен вызов. По умолчанию определяется автоматически через 10-15 минут после добавления.
call ID звонка, к которому прикреплён вызов. По умолчанию определяется автоматически через 10-15 минут после добавления.

Результатом выполнения функции является ассоциативный массив:

Поле Описание
status Результат выполнения операции: ok в случае успешного выполнения, error в случае ошибки
id Идентификатор добавленного аудио-файла.

Пример успешного ответа функции:

{ "status" : "ok", "id": 1234 }

Пример ответа функции при возникновении ошибки:

{ "status" : "error", "error" : "access-denied" }