Cистема вдохновлена OAuth2.0, но формально ей не является. Этот способ подключения должен использовать каждый партнер, который хочет опубликовать в нашем маркетплейсе свою интеграцию.
WAuth нужен, чтобы пользователь мог подключить интеграцию «по кнопке», а не возился с ключом API.
Как пользователь подключает интеграцию из нашего маркетплейса:
1. Пользователь выбирает CRM в маркетплейсе интеграций Wazzup.
2. Кликает «Подключить».
3. Пользователя редиректит в CRM.
4. Он авторизуется в CRM и подтверждает, что хочет подключить интеграцию.
5. Готово — пользователь подключил интеграцию между Wazzup и CRM.
Когда все шаги по созданию интеграции выполнены, можно приступать к WAuth.
Этап 1. Вызовите POST v3/marketplace, чтобы передать значения полей:
| Параметр | Тип | Описание |
| crmCode | String | Служит для внутренней идентификации CRM. Строка из латинских букв, цифр. Можно использовать дефис и нижнее подчеркивание. Уникальное в рамках Wazzup |
| authRedirectUri | String | Ссылка на аккаунт CRM. Адрес, на который будем редиректить клиента для подтверждения авторизации.
Если у каждого клиента уникальный адрес и редиректить на одну страницу нельзя — оставьте этот параметр пустым. Тогда, когда клиент выберет CRM в Wazzup, мы попросим его указать ссылку самостоятельно |
| secret | String | Ключ (токен), который нужен при подтверждении установки интеграции. Участвует только в запросах «сервер — сервер», клиенту никогда не отсылается |
Эти параметры будут использованы, когда ваш клиент выберет в маркетплейсе Wazzup CRM и нажмет «Подключить». В этот момент:
По ссылке клиент пройдет авторизацию на стороне CRM.
Этап 2. Если клиент смог авторизоваться, CRM должна сделать запрос:
POST https://api.wazzup24.com/v3/connect/
Метод имеет нестандартную авторизацию: определяем пользователя по свойству secret в теле запроса
В теле запроса должен быть JSON со значениями параметров:
| Параметр | Тип | Описание |
| state | String | Сгенерированный и подписанный на стороне Wazzup ключ. Генерируем, когда пользователь выбрал CRM в маркетплейсе и жамкнул «Подключить» |
| secret | String | Ключ, введённый администратором маркетплейсной CRM |
| crmKey | String | Сгенерированный партнером ключ, по которому можно определить, к какому клиенту относятся вебхуки. Ключ будет приходить в заголовке { Authorization: «Bearer {wazzupKey}» } при отправке вебхуков |
| name | String | Название интеграции. Например, домен клиента в CRM. Будет указан в личном кабинете, когда клиент подключит интеграцию |
curl --location --request POST 'https://api.wazzup24.com/v3/connect' \
--header 'Content-Type: application/json' \
--data-raw '
{
"state": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2Vy....",
"secret": "61e5a375-1760-452f-ad73-5318844ffc4f",
"crmKey": "e0629e11-0f67-4567-92a9-2237e91ec1b9",
"name": "Any integration name"
}
'
HTTP/1.1 200 OK
{
"data": "1365e2e9119c4d889ca467cc4a9e6a48"
}
Если все настроено как надо, Wazzup получит запрос → сохранит crmKey → сгенерирует apiKey и отдает его в теле ответа.
После этого CRM загружает информацию о пользователях, сделках, контактах, воронках с этапами и устанавливает URL для вебхуков.
Готово — интеграция успешно подключена.
Чтобы имитировать установку интеграции клиентом, вызовите:
POST https://api.wazzup24.com/v3/wauth
В теле запроса должен содержаться JSON со значениями следующих параметров:
| Параметр
Обязательные отмечены * |
Тип | Описание |
| type* | String | crmCode, указанный в момент вызова POST /v3/marketplace |
| domain | String | Нужен, если параметр authRedirectUri оставили пустым, потому что у каждого клиента уникальная ссылка.
В параметр domain добавьте полную ссылку на аккаунт CRM: с протоколом и доменом. Например, https://accountcrm.ru Мы перенаправим на этот адрес, чтобы подтвердить авторизацию. Так же, как когда ваш клиент укажет уникальную ссылку при подключении. |
Когда настроите авторизацию с помощью WAuth, можно публиковать ее в маркетплейсе Wazzup.
1. Чтобы установить название CRM и логотип, вызовите:
PATCH https://api.wazzup24.com/v3/marketplace
В теле запроса должен содержаться JSON со значениями следующих параметров:
| Параметр | Тип | Описание |
| crmName | String | Публичное название CRM, которое будет отображаться в ЛК Wazzup. Может содержать буквы, цифры и дефис.
Максимальная длина — 50 символов |
| logo | Object | Объект с данными логотипа.
Требования к лого:
Пример подходящего логотипа |
| logo.name | String | Название файла с логотипом |
| logo.content | String | base64-кодированный файл с логотипом |
fetch("https://api.wazzup24.com/v3/marketplace", {
method: "PATCH",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer {apiKey}",
},
body: {
crmName: "The Cool CRM",
logo: {
name: "the-cool-crm.svg",
content: "YmFzZTY0LWVuY29kZWQtbG9nby1maWxlLWNvbnRlbnQK",
}
}
});
Метод может быть вызван, только когда интеграция еще не опубликована в маркетплейсе Wazzup. Если захотите изменить название CRM или логотип после публикации, то обратитесь в партнерский отдел: в WhatsApp или Telegram
2. Напишите в партнерку с просьбой опубликовать интеграцию. Контакты:
Мы проверим, что интеграция работает и подходит под наши требования. Если все ок — опубликуем. Если что-то не так — попросим доработать.
Если надо обновить crmCode, authRedirectUri, secret, необходимо вызвать
POST https://api.wazzup24.com/v3/marketplace
В теле запроса должен быть JSON со значениями следующих параметров:
| Параметр | Тип | Описание |
| crmCode | String | Строка из латинских букв, цифр (можно использовать дефис и нижнее подчеркивание). Служит для внутренней идентификации CRM. Уникальное в рамках Wazzup |
| authRedirectUri | String | Адрес страницы, на которую будет редиректить клиента для подтверждения авторизации |
| secret | String | Ключ (токен), который нужен при подтверждении установки интеграции. Участвует только в запросах «сервер — сервер», клиенту никогда не отсылается |
curl --location --request POST 'https://api.wazzup24.com/v3/marketplace' \
--header 'Authorization: Bearer 4a0с541451244aa9a281fba4716da40d' \
--header 'Content-Type: application/json' \
--data-raw '{
"crmCode": "BestCrmInTheWorld",
"secret": "our-secret",
"authRedirectUri": "http://redirect.uri"
}'