WAuth

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/

Метод имеет нестандартную авторизацию: определяем пользователя по свойству 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 для вебхуков.

Готово — интеграция успешно подключена.

Как протестировать 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 Объект с данными логотипа.

Требования к лого: 

  • прозрачный или белый фон,
  • формат svg,
  • без внутренних отступов в логотипе,
  • название компании на логотипе на английском языке.

Пример подходящего логотипа

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 или логотип после публикации, то обратитесь в нашу поддержку.

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"
}'