Cистема вдохновлена OAuth2.0, но формально ей не является. Этот способ подключения должен использовать каждый партнер, который хочет опубликовать в нашем маркетплейсе свою интеграцию.
WAuth нужен, чтобы пользователь мог подключить интеграцию «по кнопке», а не возился с ключом API.
Как пользователь подключает интеграцию из нашего маркетплейса:
1. Пользователь выбирает CRM в маркетплейсе интеграций Wazzup.
2. Кликает «Подключить».
3. Пользователя редиректит в CRM.
4. Он авторизуется в CRM и подтверждает, что хочет подключить интеграцию.
Готово — пользователь подключил интеграцию между Wazzup и CRM.
Настройка WAuth
Когда все шаги по созданию интеграции выполнены, можно приступать к WAuth.
Этап 1. Вызовите POST v3/marketplace, чтобы передать значения полей:
Параметр | Тип | Описание |
crmCode | String | Служит для внутренней идентификации CRM. Строка из латинских букв, цифр. Можно использовать дефис и нижнее подчеркивание. Уникальное в рамках Wazzup |
authRedirectUri | String | Ссылка на аккаунт CRM. Адрес, на который будем редиректить клиента для подтверждения авторизации.
Если у каждого клиента уникальный адрес и редиректить на одну страницу нельзя — оставьте этот параметр пустым. Тогда, когда клиент выберет CRM в Wazzup, мы попросим его указать ссылку самостоятельно |
secret | String | Ключ (токен), который нужен при подтверждении установки интеграции. Участвует только в запросах «сервер — сервер», клиенту никогда не отсылается |
Эти параметры будут использованы, когда ваш клиент выберет в маркетплейсе Wazzup CRM и нажмет «Подключить». В этот момент:
- сгенерируется state, в котором будут закодированы crmCode и accountId;
- в query string authRedirectUri, добавляем state и переводим пользователя по этой ссылке. Если в параметре authRedirectUri пусто, попросим клиента самостоятельно указать его уникальную ссылку в CRM и перенаправим по указанной ссылке.
По ссылке клиент пройдет авторизацию на стороне CRM.
Этап 2. Если клиент смог авторизоваться, CRM должна сделать запрос:
POST https://api.wazzup24.com/v3/connect/
В теле запроса должен быть 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 для вебхуков.
Готово — интеграция успешно подключена.
Как протестировать WAuth
Чтобы имитировать установку интеграции клиентом, вызовите:
POST https://api.wazzup24.com/v3/wauth
В теле запроса должен содержаться JSON со значениями следующих параметров:
Параметр
Обязательные отмечены * |
Тип | Описание |
type* | String | crmCode, указанный в момент вызова POST /v3/marketplace |
domain | String | Нужен, если параметр authRedirectUri оставили пустым, потому что у каждого клиента уникальная ссылка.
В параметр domain добавьте полную ссылку на аккаунт CRM: с протоколом и доменом. Например, https://accountcrm.ru/ Мы перенаправим на этот адрес, чтобы подтвердить авторизацию. Так же, как когда ваш клиент укажет уникальную ссылку при подключении. |
Публикация в маркетплейсе интеграций Wazzup
Когда настроите авторизацию с помощью WAuth, можно публиковать ее в маркетплейсе Wazzup.
1. Чтобы установить название CRM и логотип, вызовите:
PATCH https://api.wazzup24.com/v3/marketplace
В теле запроса должен содержаться JSON со значениями следующих параметров:
Параметр | Тип | Описание |
crmName | String | Публичное название CRM на английском языке, которое будет отображаться в ЛК Wazzup |
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", } } });
2. Напишите в партнерку с просьбой опубликовать интеграцию. Контакты:
Мы проверим, что интеграция работает и подходит под наши требования. Если все ок — опубликуем. Если что-то не так — попросим доработать.
Загрузка новых параметров WAuth
Если надо обновить 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" }'