Общее описание механизма

Механизм вебхуков позволяет сторонним сервисам подписываться на определенные события. После регистрации сервиса через техподдержку, ему станет доступна возможность получать события (принимать запросы с вебхуками) по указанному URL адресу.

Если по каким-то причинам требуется отписаться от получения событий, то такая возможность предусмотрена.

События разделены на два типа: события приема/отправки сообщения и события команд. Подробный список событий приведен ниже.

Список отсылаемых событий

Table 1. События
Наименование события Описание

new_message

Получено входящее сообщение или отправлено исходящее сообщение

ChannelConnected

Канал подключен и работает

ChannelCreateQrCodeChallenge

Пришел QR код, который надо отсканировать. Является частью процесса подключения Whatsapp

ChannelCreationCommand

Канал создан

ChannelDisconnected

Канал не работает

ChannelMessageReadCommand

Сообщение прочитано получателем

ConversationStartContextUpdateCommand

Посетитель сайта нажал в виджете кнопку канала для начала беседы в чате

ChatsMergedCommand

Чаты были объединены

ChatMemoChanged

Изменились примечания к чату

DhSendFailed

Ошибка рассылки Delivery Hero

DhSendSuccess

Успешная рассылка Delivery Hero

EndUserActionCommand

Была нажата интерактивная кнопка

EndUserActivatedNotificationDeepLink

Посетитель сайта перешел по диплинку, то есть хочет подписаться или начать чат

EndUserSubscribedOnNotification

Пользователем осуществлена подписка

EndUserUnsubscribedFromNotification

Пользователем осуществлена отписка

MessageDeliveryCommand

Сообщение доставлено/недоставлено

NewChatCreatedCommand

Создан новый чат

OperatorReadChatCommand

Сообщение прочитано

OperatorUnReadChatCommand

Сообщение отмечено непрочитанным

PaymentProcessedCommand

Платеж осуществлен и получен

RecurrentPaymentFailed

Ошибка при выполнении запроса на повторяющийся платеж, когда было вызывано внешнее API. Повторная попытка будет осуществлена через сутки

RecurrentPaymentSuccess

Успешно списан повторяющийся платеж, без участия юзера

SubscriptionActivated

Активирована новая подписка

SubscriptionClosed

Закончился срок жизни подписки. Если новая подписка стартует вместо старой, будет инициировано данное событие про закрытие старой

SubscriptionCreated

Подписка создана, но не оплачена

SubscriptionSuspended

Подписка приостановлена. Закончился срок оплаты подписки, но срок жизни подписки не закончился

SubscriptionUsageAuthorized

Инициируется после активации подписки со списком появившихся опций

SubscriptionUsageDeauthorized

Были выключены какие-либо опции подписки. Если старая подписка превратилась в новую - не инициируется

TagAssignedOnChatCommand

Чату присвоен тег

TagRemovedFromChatCommand

Тег снят с чата

WidgetCreateCommand

Виджет создан

WidgetDeleteCommand

Виджет удален

WidgetDisableCommand

Виджет отключен

WidgetEnableCommand

Виджет подключен

WidgetUpdateCommand

Виджет обновлен

Подключение вебхука

Инструменты
  • curl (инструкция написана под bash)

Входные данные
  • Идентификатор аккаунта - accountId

  • URL приемника вебхуков

  • Список событий

Действия:

  1. Подготовить токен зайдя в ЛК аккаунта, затем в интеграцию: https://my.textback.io/messaging.html#!/integration

  2. Нажать "Сгенерировать API токен" и сохранить в переменную bash-терминала:

token=eyJ0eXA…
  1. Сохранить базовый URL в переменную bash-терминала:

base_url=http://tb-notificationsrv-prod.textback.io/notification
  1. Установить URL приемника вебхука в переменную:

webhook_url=http://somedomain.ru/webhooks
  1. Установить список событий в переменную (переменная содержит json-массив имен событий)

events=[\"EndUserSubscribedOnNotification\"]

Не забывайте про двойные кавычки вокруг имен событий - это должен быть валидный JSON.

  1. Подключить вебхук, выполнив запрос:

curl -v $base_url/webhooks -X POST --data "{\"url\":\"$webhook_url\",\"events\":$events}" -H "Authorization: Bearer $token"

В теле ответа придет JSON объект, содержащий параметр "id" и являющийся идентификатором вебхука. Он требуется для отключения вебхука.

Отключение вебхука

Полученный ранее идентификатор вебхука необходимо использовать в запросе на отключение

  1. Установить идентификатор вебхука в переменную:

id=23...
  1. Отключить вебхук, выполнив запрос:

curl -X DELETE $base_url/webhooks/$id -H "Authorization: Bearer $token"

Описание модели данных вебхуков

NewMessageEvent

Событие "Получено новое сообщение"

Polymorphism : Composition

Name Description Schema

accountId
required

Идентификатор аккаунта

string (uuid)

id
optional

Уникальный идентификатор

string

message
optional

Сообщение между оператором и клиентом. Представляет как исходящее, так и входящее сообщения

name
required

Наименование события

string

substitutions
optional

Дополнительные значения подстановки для процессора шаблонов

object

userId
optional

Идентификатор пользователя

string

CommandEvent

Событие "Получена команда"

Polymorphism : Composition

Name Description Schema

accountId
required

Идентификатор аккаунта

string (uuid)

command
optional

Команда, инициировавшая вебхук

object

id
optional

Уникальный идентификатор

string

name
required

Наименование события

string

substitutions
optional

Дополнительные значения подстановки для процессора шаблонов

object

userId
optional

Идентификатор пользователя

string

EndUserNotificationSubscriptionEvent

Пользователь подписался на рассылку

Polymorphism : Composition

Name Description Schema

accountId
required

Идентификатор аккаунта

string (uuid)

id
optional

Уникальный идентификатор

string

name
required

Наименование события

string

subscription
optional

Подписка пользователя на события через мессенджеры

substitutions
optional

Дополнительные значения подстановки для процессора шаблонов

object

userId
optional

Идентификатор пользователя

string

OperatorReadChatCommand

Сообщение/чат прочитано оператором

Name Description Schema

accountId
optional

Идентификатор аккаунта

string (uuid)

channel
optional

Тип канала

channelId
optional

Идентификатор канала в транспорте

integer (int64)

chatId
optional

Идентификатор сессии чата при условии поддержки каналом

string

exactMessageId
optional

Идентификатор одиночного прочитанного сообщения

string (uuid)

id
optional

Уникальный идентификатор

string

remoteAddress
optional

Адрес другой стороны, специфичный для канала

string

sessionId
optional

Сессия, в которой была инициирована команда или идентификатор токена

string

tbChatId
optional

Уникальный идентификатор чата в TextBack

integer (int64)

timestamp
optional

Дата события

integer (int64)

upToChannelMessageId
optional

Идентификатор сообщения, до которого были прочитаны предыдущие сообщения. Нельзя использовать совместно с параметром upToTimestamp

string

upToTimestamp
optional

Дата, до которой были прочитаны предыдущие сообщения. Нельзя использовать совместно с параметром upToChannelMessageId

integer (int64)

userId
optional

Идентификатор пользователя, прочитавшего сообщение/сообщения

string

OperatorUnReadChatCommand

Сообщение или чат отмечено непрочитанным

Name Description Schema

accountId
optional

Идентификатор аккаунта

string (uuid)

channel
optional

Тип канала

channelId
optional

Идентификатор канала в транспорте

integer (int64)

chatId
optional

Идентификатор сессии чата при условии поддержки каналом

string

id
optional

Уникальный идентификатор

string

remoteAddress
optional

Адрес другой стороны, специфичный для канала

string

sessionId
optional

Сессия, в которой была инициирована команда или JTI токен

string

tbChatId
optional

Уникальный идентификатор чата в TextBack

integer (int64)

timestamp
optional

Дата события

integer (int64)

upFromTimestamp
optional

Дата, с которой предыдущие сообщения были отмечены непрочитанными. Нельзя использовать совместно с параметром upToChannelMessageId

integer (int64)

upToChannelMessageId
optional

Идентификатор сообщения, до которого предыдущие сообщения были отмечены непрочитанными. Нельзя использовать совместно с параметром upFromTimestamp

string

userId
optional

Идентификатор пользователя, отметившего сообщения непрочитанными

string

MessageDeliveryCommand

Сообщение доставлено/не доставлено

Name Description Schema

accountId
optional

Идентификатор аккаунта

string (uuid)

address
optional

Содержит информацию об адресе доставки

channel
optional

Тип канала

channelDeliveryStatus
optional

Статус доставки конкретного канала

string

channelId
optional

Идентификатор канала в транспорте

integer (int64)

channelJobId
optional

Временный идентификатор, необходимый для соответствия статусам сообщения

string

channelMessageId
optional

Идентификатор сообщения в канале

string

chatId
optional

Идентификатор сессии чата при условии поддержки каналом

string

compositeMessageType
optional

Тип сообщения

deliveryStatus
optional

Расширенный статус

id
optional

Уникальный идентификатор

string

isDelivered
optional

Базовый статус, доставлено ли сообщение

boolean

isFinal
optional

Является ли это изменение статуса окончательным и не предвидится повторных попыток отправки сообщения
Default : true

boolean

masterMessageId
optional

Идентификатор мастер-сообщения, содержащего вложенные сообщения. Может быть пустым, если сообщение не является частью мастер-сообщения

string (uuid)

message
optional

Доставленное сообщение

messageId
optional

Идентификатор TextBack сообщения

string (uuid)

notificationId
optional

Идентификатор рассылки, если сообщение является частью массовой рассылки

string (uuid)

remoteAddress
optional

Адрес другой стороны, специфичный для канала

string

tbChatId
optional

Уникальный идентификатор чата в TextBack

integer (int64)

timestamp
optional

Дата события

integer (int64)

ChannelConnected

Канал подключен и работает

Name Description Schema

accountId
optional

Идентификатор аккаунта

string (uuid)

fullChannel
optional

Канал

id
optional

Уникальный идентификатор

string

reason
optional

Причина, по которой канал работает

enum (new_channel_configured, phone_gone_online, token_refreshed, token_updated)

userId
optional

Идентификатор пользователя, прочитавшего чат

string

ChannelCreateQrCodeChallenge

Пришел QR код, который надо отсканировать. Является частью процесса подключения Whatsapp

Name Description Schema

accountId
optional

Идентификатор аккаунта

string (uuid)

channel
optional

Тип канала

channelId
optional

Идентификатор канала в транспорте

integer (int64)

id
optional

Уникальный идентификатор

string

qrCodeChallengeUrl
optional

Ссылка на изображение с кодом

string (uri)

userId
optional

Идентификатор пользователя, прочитавшего чат

string

ChannelCreationCommand

Канал создан

Name Description Schema

accountId
optional

Идентификатор аккаунта

string (uuid)

channel
optional

Тип канала

channelId
optional

Идентификатор канала в транспорте

integer (int64)

id
optional

Уникальный идентификатор

string

userId
optional

Идентификатор пользователя, прочитавшего чат

string

ChannelDisconnected

Канал не работает

Name Description Schema

accountId
optional

Идентификатор аккаунта

string (uuid)

fullChannel
optional

Канал

id
optional

Уникальный идентификатор

string

reason
optional

Причина, по которой канал не работает

enum (phone_gone_offline, token_expired, token_revoked, channel_deleted)

userId
optional

Идентификатор пользователя, прочитавшего чат

string

ChannelMessageReadCommand

Сообщение прочитано получателем

Name Description Schema

accountId
optional

Идентификатор аккаунта

string (uuid)

channel
optional

Тип канала

channelId
optional

Идентификатор канала в транспорте

integer (int64)

channelMessageIdExact
optional

Конкретное сообщение, которое было прочитано

string

channelMessageIdNumericFrom
optional

Все сообщения прочитаны, начиная с данного идентификатора сообщения и ранее

integer (int64)

id
optional

Уникальный идентификатор

string

messageId
optional

Идентификатор TextBack сообщения

string (uuid)

readKind
optional

Тип параметра сообщения, на основе которого определяется

remoteAddress
optional

Адрес другой стороны, специфичный для канала

string

tbChatId
optional

Уникальный идентификатор чата в TextBack

integer (int64)

timestamp
optional

Дата события

integer (int64)

timestampFrom
optional

Все сообщения прочитаны до этой отметки времени

string (date-time)

userId
optional

Идентификатор пользователя, прочитавшего сообщение с messageId

string

MessageDeliveryCommand
Канал типа whatsapp отдает статусы доставки нестабильно, поэтому опираться на них не желательно.
Канал типа instagram статус доставки не отдает.

ChannelMessageReadCommand
Каналы типа tg, whatsapp, instagram и sms статус прочитываемости не отдают.

ConversationStartContextUpdateCommand

Посетитель сайта нажал в виджете кнопку канала для начала беседы в чате

Name Description Schema

chatAddress
required

Ссылка на чат

conversationStartContext
required

Информация о месте и условиях когда началась беседа (адрес страницы, данные браузера, cookies, и т.д.)

id
optional

Уникальный идентификатор

string

ChatsMergedCommand

Чаты были объединены

Name Description Schema

id
optional

Уникальный идентификатор

string

mergedChatIds
optional

Список идентификаторов объединенных чатов

< integer (int64) > array

mergedTs
optional

Дата объединения чатов

string (date-time)

resultingChat
optional

Чат, полученный в результате объединения

tbChatId
optional

Идентификатор сессии чата при условии поддержки каналом

integer (int64)

ChatMemoChanged

Изменились примечания к чату

Name Description Schema

accountId
optional

Идентификатор аккаунта

string (uuid)

chatAddress
optional

Подробный адрес чата

id
optional

Уникальный идентификатор

string

memo
optional

Примечание

tbChatId
optional

Идентификатор сессии чата при условии поддержки каналом

integer (int64)

memo

Name Description Schema

changedTs
optional

Дата последней модификации

string (date-time)

memo
optional

Текст примечания

string

tbUserId
optional

Идентификатор крайнего пользователя, изменившего примечание

string (uuid)

DhSendFailed

Ошибка рассылки Delivery Hero

Name Description Schema

accountId
optional

Идентификатор аккаунта

string (uuid)

clientDetails
optional

Информация о пользователе, которому отылается событие

deliveryChain
optional

Список настроек для конкретного сообщения конкретного канала, содержащие шаблон сообщения, статус и таймауты

envelopeId
optional

Идентификатор каскада

string (uuid)

id
optional

Уникальный идентификатор

string

timestamp
optional

Дата события

integer (int64)

DhSendSuccess

Успешная рассылка Delivery Hero

Name Description Schema

accountId
optional

Идентификатор аккаунта

string (uuid)

channel
optional

Тип канала

channelId
optional

Идентификатор канала в транспорте

integer (int64)

clientDetails
optional

Информация о пользователе, которому отылается событие

deliveryChain
optional

Список настроек для конкретного сообщения конкретного канала, содержащие шаблон сообщения, статус и таймауты

deliveryStatus
optional

Подробный статус доставки

envelopeId
optional

Идентификатор каскада

string (uuid)

id
optional

Уникальный идентификатор

string

messageId
optional

Идентификатор TextBack сообщения

string (uuid)

tbChatId
optional

Идентификатор сессии чата при условии поддержки каналом

integer (int64)

timestamp
optional

Дата события

integer (int64)

EndUserActionCommand

Была нажата интерактивная кнопка

Name Description Schema

accountId
optional

Идентификатор аккаунта

string (uuid)

channel
optional

Тип канала

channelId
optional

Идентификатор канала в транспорте

integer (int64)

id
optional

Уникальный идентификатор

string

payload
optional

Идентификатор действия, которое вызывается в ответ на действие из мессенджера пользователя

string (uuid)

remoteAddress
optional

Адрес другой стороны, специфичный для канала

string

remoteContact
optional

Информация об участнике диалога

tbChatId
optional

Идентификатор сессии чата при условии поддержки каналом

integer (int64)

timestamp
optional

Дата события

integer (int64)

Посетитель сайта перешел по диплинку, то есть хочет подписаться или начать чат

Name Description Schema

address
optional

Адрес чата

commandName
optional

Какой тип команды активирован

enum (subscribe, start_chat)

deepLinkId
optional

Идентификатор диплинка

string (uuid)

id
optional

Идентификатор

string (uuid)

messageId
optional

Идентификатор сообщения

string (uuid)

parameters
optional

URL параметры диплинка

object

remoteContaсt
optional

Информация об участнике диалога

EndUserSubscribedOnNotification

Пользователем осуществлена подписка

Name Description Schema

id
optional

Индентификатор

string (uuid)

subscription
optional

Подписка на рассылку

EndUserUnsubscribedFromNotification

Пользователем осуществлена отписка

Name Description Schema

id
optional

Идентификатор

string (uuid)

initiator
optional

Информация об инициаторе данного события

enum (USER_ACTION, OPERATOR)

remoteContact
optional

Информация об участнике диалога

subscription
optional

Подписка

unsubscribedFromAllSubscriptions
optional

Отписан ли пользователь от всех подписок

boolean

NewChatCreatedCommand

Создан новый чат

Name Description Schema

accountId
optional

Идентификатор аккаунта

string (uuid)

channel
optional

Тип канала

channelId
optional

Идентификатор канала

integer (int64)

chat
optional

Созданный чат

chatId
optional

Идентификатор чата

string

compositeMessageType
optional

Тип составного сообщения

createdTs
optional

Дата создания

string (date-time)

firstMessage
optional

Первое сообщение в чате

id
optional

Идентификатор

string

notificationId
optional

Идентификатор рассылки, если сообщение является частью массовой рассылки

string (uuid)

remoteAddress
optional

Адрес другой стороны, специфичный для канала

string

tbChatId
optional

Уникальный идентификатор чата в TextBack

integer (int64)

PaymentProcessedCommand

Платеж осуществлен и получен

Name Description Schema

id
optional

Идентификатор

string

payment
optional

Платеж

payment

Name Description Schema

acceptedDate
optional

Дата принятия суммы

string (date-time)

acceptedSum
optional

Принятая сумма

number (float)

accountId
optional

Идентификатор аккаунта

string (uuid)

currency
optional

Код валюты по стандарту ISO 4217

string

id
optional

Идентификатор платежа

string

invoiceId
optional

Идентификатор счета на оплату

string (uuid)

paymentMethod
optional

Способ оплаты

string

paymentSystemId
optional

Идентификатор платежной системы

string

paymentSystemTransactionId
optional

Идентификатор транзакции платежной системы

string

processedDate
optional

Дата обработки суммы

string (date-time)

processedSum
optional

Обработанная сумма

number (float)

sourceAccountId
optional

Идентификатор аккаунта

string (uuid)

status
optional

Статус оплаты

targetAccountId
optional

Идентификатор целевого аккаунта

string (uuid)

type
optional

Тип оплаты

enum (normal_payment, gift_payment, corrective_action, test_payment)

status

Name Description Schema

reason
optional

Причина статуса

enum (not_specified, payment_gateway_callback_received, invoice_set_as_paid)

status
optional

Тип статуса оплаты

enum (accepted, processed)

RecurrentPaymentSuccess

Успешно выполнен повторяющийся платеж, без участия пользователя

Name Description Schema

id
optional

Идентификатор

string (uuid)

invoice
optional

Счет на оплату

offer
optional

Предложение

subscription
optional

Подписка

timestamp
optional

Время

string (date-time)

SubscriptionActivated

Активирована новая подписка

Name Description Schema

id
optional

Идентификатор

string (uuid)

subscription
optional

Подписка

SubscriptionClosed

Закончился срок жизни подписки. Если новая подписка стартует вместо старой, будет инициировано данное событие про закрытие старой

Name Description Schema

id
optional

Идентификатор

string (uuid)

subscription
optional

Подписка

SubscriptionCreated

Подписка создана, но не оплачена

Name Description Schema

id
optional

Идентификатор

string (uuid)

subscription
optional

Подписка

SubscriptionSuspended

Подписка приостановлена. Закончился срок оплаты подписки, но срок жизни подписки не закончился

Name Description Schema

id
optional

Идентификатор

string (uuid)

subscription
optional

Подписка

SubscriptionUsageAuthorized

Инициируется после активации подписки со списком появившихся опций

Name Description Schema

id
optional

Идентификатор

string (uuid)

subscription
optional

Подписка

SubscriptionUsageDeauthorized

Были выключены какие-либо опции подписки. Если старая подписка превратилась в новую - не инициируется

Name Description Schema

id
optional

Идентификатор

string (uuid)

subscription
optional

Подписка

TagAssignedOnChatCommand

Чату присвоен тег

Name Description Schema

id
optional

Идентификатор

string

isNewTag
optional

Является ли тег новым

boolean

tag
optional

Тег

wasActuallyChanged
optional

Равен true, если на момент назначения тега он был, и false - иначе

boolean

TagRemovedFromChatCommand

Тег снят с чата

Name Description Schema

chat
optional

Чат

id
optional

Идентификатор

string

reason
optional

Причина, по которой произошло событие

enum (operator_removed, user_activated_response)

tag
optional

Тег

wasActuallyChanged
optional

Равен true, если на момент удаления тега он был, и false - иначе

boolean

WidgetCreateCommand

Виджет создан

Name Description Schema

accountId
optional

Идентификатор аккаунта

string (uuid)

id
optional

Идентификатор

string

userId
optional

Идентификатор пользователя

string

widget
optional

Виджет

widgetCode
optional

Javascript код виджета

string

WidgetDeleteCommand

Виджет удален

Name Description Schema

accountId
optional

Идентификатор аккаунта

string (uuid)

id
optional

Идентификатор

string

userId
optional

Идентификатор пользователя

string

widget
optional

Виджет

WidgetDisableCommand

Виджет отключен

Name Description Schema

accountId
optional

Идентификатор аккаунта

string (uuid)

id
optional

Идентификатор

string

userId
optional

Идентификатор пользователя

string

widget
optional

Виджет

WidgetEnableCommand

Виджет подключен

Name Description Schema

accountId
optional

Идентификатор аккаунта

string (uuid)

id
optional

Идентификатор

string

userId
optional

Идентификатор пользователя

string

widget
optional

Виджет

WidgetUpdateCommand

Виджет обновлен

Name Description Schema

accountId
optional

Идентификатор аккаунта

string (uuid)

id
optional

Идентификатор

string

userId
optional

Идентификатор пользователя

string

widget
optional

Виджет

widgetCode
optional

Javascript код виджета

string

EndUserNotificationSubscription

Подписка на события через мессенджеры

Name Description Schema

accountId
required

Идентификатор аккаунта

string (uuid)

address
optional

Адрес чата

id
optional

Идентификатор

string (uuid)

insecureContext
optional

Незащищенный контекст подписки

object

messagingStats
optional

Статистика отправленных в чат сообщений

remoteContact
optional

Информация об участнике диалога

secureContext
optional

Защищенный контекст подписки

object

secureContextToken
optional

Защищенный токен контекста

string

sourceOptions
optional

Причина создания подписки

subject
optional

Тема события
Maximal length : 2000

string

subscribedTs
optional

Дата подписки

string (date-time)

unsubscribedTs
optional

Дата отписки

string (date-time)

user
optional

Кто подписан

widgetId
optional

Идентификатор виджета

string (uuid)

user

Name Description Schema

accountId
optional

Идентификатор аккаунта

string (uuid)

externalId
optional

Идентификатор пользователя во внешней системе
Maximal length : 2000

string

id
optional

Идентификатор

string (uuid)

Widget

Виджет чата

Name Description Schema

accountId
optional

Идентификатор аккаунта

string (uuid)

channels
optional

Список виджет каналов

id
optional

Идентификатор

string (uuid)

userId
optional

Идентфиикатор пользователя

string

channels

Name Description Schema

channel
optional

Тип канала

enabled
optional

Включен ли

boolean

id
optional

Идентификатор

string

slug
optional

Пользовательская ссылка в мессенджерах

string

TagAssignedOnChat

Тег присвоен чату

Name Description Schema

accountId
optional

Идентификатор аккаунта

string (uuid)

chatId
optional

Идентификатор чата

string

id
optional

Идентификатор

integer (int64)

name
optional

Наименование тега

string

reason
optional

Причина возникновения события

enum (operator_assigned, user_activated_response, user_subscribed_on_widget)

tagId
optional

Внешний ключ для тега, созданного учетной записью

integer (int64)

SubscriptionSourceOptions

Причина создания подписки

Name Description Schema

channelChat
optional

Чат, импортированный из истории сообщений

boolean

createdByOperator
optional

Если требуется преобразовать существующий tbChat в subscription

boolean

subscription
optional

Пользователь использовал виджет уведомления / deeplink / подписан администратором

boolean

tbChat
optional

Подписка была автоматически создана пользователем, начавшим чат. Будет утановлен в false, если будет создан OptOut.

boolean

Chat

Чат между оператором и клиентом

Name Description Schema

accountId
optional

Идентификатор аккаунта

string (uuid)

address
optional

Подробный адрес чата

id
optional

Идентификатор чата

string

lastConversationStartContext
optional

Информация о месте и условиях когда началась беседа (адрес страницы, данные браузера, cookies, и т.д.)

lastMessage
optional

Посследнее сообщение

messagingStats
optional

Статистика отправленных в чат сообщений

remoteAddresses
optional

Список адресов другой стороны, специфичный для канала

< string > array

remoteContaсt
optional

Информация об участнике диалога

tags
optional

Список тегов

< string > array

tbChatId
optional

Уникальный идентификатор чата в TextBack

integer (int64)

unreadCount
optional

Количество непрочитанных сообщений в чате для аккаунта

integer (int32)

DeliveryStatus

Расширенный статус сообщения

Type : enum (DELIVERED, SENT, ACCEPTED_BY_PARTNER, QUEUED, ERROR, API_TIMEOUT, CONNECTION_TIMEOUT, WRONG_ACCOUNT_ID, SERVER_UNAVAILABLE, INVALID_API_TOKEN, INVALID_SENDER, API_REQUEST_LIMIT, BOT_NOT_PUBLISHED, MESSAGE_OUTSIDE_OF_ALLOWED_WINDOW, BLOCKED, INSUFFICIENT_API_PERMISSIONS, USER_DIALOG_NOT_INITIATED, FILE_SEND_LIMITATION, ATTACHMENT_TYPE_NOT_SUPPORTED_BY_CHANNEL, MAXIMUM_CHARACTERS_EXCEEDED, NO_MATCHING_USER_FOUND, INVALID_ADDRESS_FORMAT, PHONE_OFFLINE, PARTIALLY_SENT, PARTIALLY_SENT_WITH_ERROR, ALL_CHILD_SENT_WITH_ERROR, PAYMENT_REQUIRED, BAD_WORDS_FOUND, SPAM, UNSUPPORTED_DEVICE, EXTERNAL_MESSAGE_TIMEOUT, TB_MESSAGE_TIMEOUT, UNKNOWN)

Subscription

Подписка на продукт

Name Description Schema

accountId
optional

Идентификатор аккаунта, владеющий подпиской

string (uuid)

activationInvoice
optional

Счет активации

amount
optional

Количество

number

autoRecurringPayment
optional

Подключен ли автоматический регулярный платеж

boolean

endDate
optional

Дата окончания подписки

string (date-time)

extendedStatus
optional

Расширенный статус

string

id
optional

Уникальный идентификатор

string (uuid)

invoiceId
optional

Идентификатор счета

string (uuid)

nextPeriodInvoice
optional

Счет на следующий период

offer
optional

Предложение

onetimePrice
optional

Цена, которая взимается когда активирована подписка

number

onetimeTotal
optional

Сумма, которая взимается когда активирована подписка

number

optionSubscriptions
optional

Список опций подписки

< OptionSubscription > array

parentSubscriptionId
optional

Идентификатор родительской подписки

string (uuid)

payedTillDate
optional

Дата, до которой оплачена подписка

string (date-time)

period
optional

Повторяющийся или рабочий период в формате ISO-8601

string

product
optional

Продукт

recurringDay
optional

День регулярного платежа

integer

recurringMonth
optional

Месяц регулярного платежа

integer

recurringPeriod
optional

Период, в течение которого будет действовать подписка

recurringPrice
optional

Цена, которая взимается регулярно в период действия подписки

number

recurringTotal
optional

Сумма регулярных оплат подписки

number

startDate
optional

Дата начала подписки

string (date-time)

status
optional

Статус

status

Name Description Schema

reason
optional

Причина

enum (not_specified, paid_period_reached, user_registered_on_site, user_self_subscribed, user_registered_on_marketplace, next_period_payment_processed, end_date_reached, new_subscription_registered)

status
optional

Статус

enum (active, closed, suspended, not_opened, deferred_active)

transitionDate
optional

Время смены статуса

string (date-time)

OptionSubscription

Опция, связанная с подпиской

Name Description Schema

amount
optional

Количество опций

number (float)

offer
optional

Предложение

onetimePrice
optional

Цена, которая взимается когда активирована подписка
Default : 0.0

number (float)

parentSubscriptionId
optional

Идентификатор родительской подписки

string (uuid)

productOption
optional

Ссылка на опцию продукта

recurringPrice
optional

Цена, которая взимается регулярно в период действия подписки
Default : 0.0

number (float)

subscribedOnEntityId
optional

Идентификатор сущности, на которую осуществлена подписка, например, идентификатор канала whatsapp

string

Invoice

Счет

Name Description Schema

accountId
optional

Идентификатор аккаунта

string (uuid)

cancelledDate
optional

Дата отмены

string (date-time)

createdDate
optional

Дата создания

string (date-time)

currency
optional

Код валюты по стандарту ISO 4217

string

id
optional

Идентификатор

string (uuid)

invoiceNumId
optional

Идентификатор счета для интеграции с внешними системами

integer (int64)

items
optional

Список оплат за подписку или разовый продукт

< InvoiceItem > array

payed
optional

Оплаченная сумма на текущий момент

number (float)

payedDate
optional

Дата оплаты

string (date-time)

recurNextTryTs
optional

Дата следующего платежа

string (date-time)

recurTries
optional

Количество

integer (int32)

status
optional

Статус счета

totalTaxes
optional

Налоги

number (float)

totalWithTaxes
optional

Сумма с учетном налогов

number (float)

totalWithoutTaxes
optional

Сумма без учета налогов

number (float)

status

Name Description Schema

reason
optional

Причина

enum (not_specified, recurring_payment_processed, recurring_payment_failed)

status
optional

Статус счета

enum (created, payed, cancelled, waiting_for_recur)

transitionDate
optional

Время изменения статуса

string (date-time)

InvoiceItem

Счет на оплату

Name Description Schema

accountId
optional

Идентификатор аккаунта

string (uuid)

id
optional

Идентификатор

string (uuid)

invoiceId
optional

Идентификатор счета на оплату

string (uuid)

invoiceItemType
optional

Тип счета на оплату

enum (SUBSCRIPTION_ACTIVATION_FEE, SUBSCRIPTION_RECURRING_PERIOD_FEE, ONETIME_PURCHASE_FEE)

period
optional

На какой период будет оплачена подписка

subscription
optional

Оплачиваемая подписка

sumWithTaxes
optional

Суммарная цена с учетом налогов

number (float)

sumWithoutTaxes
optional

Суммарная цена без налогов

number (float)

taxes
optional

Налог

number (float)

Event

Отсылается по адресу подписки на вебхук

Name Description Schema

accountId
required

Идентификатор аккаунта

string (uuid)

id
optional

Уникальный идентификатор

string

name
required

Наименование события

string

substitutions
optional

Дополнительные значения подстановки для процессора шаблонов

object

userId
optional

Идентификатор пользователя

string

MessagingStats

Статистика отправленных в чат сообщений

Name Description Schema

lastInboundMessageTimestamp
optional

Дата крайнего входящего сообщения

string (date-time)

received
optional

Количество входящих сообщений
Default : 0

integer (int32)

receivedUserSentMessages
optional

Количество входящих сообщений (user_sent_message)
Default : 0

integer (int32)

sent
optional

Количество исходящих сообщений
Default : 0

integer (int32)

total
optional

Количество входящих и исходящих сообщений
Default : 0

integer (int32)

totalNotificationsSent
optional

Количество исходящих сообщений (tb_sent_end_user_notification)
Default : 0

integer (int32)

unread
optional

Количество непрочитанных сообщений (user_sent_message)
Default : 0

integer (int32)

Offer

Что-то предлагаемое клиенту. Содержит полные условия выставления счетов

Name Description Schema

activationByManagerAllowed
optional

Разрешена ли менеджеру TextBack активация подписки

boolean

activationByUserAllowed
optional

Разрешена ли пользователю активация подписки

boolean

autoProlongationEnabled
optional

Включено ли автоматическое продление по подписке

boolean

currency
required

Код валюты в ISO 4217

string

endDate
optional

Дата окончания

string (date-time)

id
required

Уникальный идентификатор

string (uuid)

localizedDisplayNames
required

Локализованные наименования продуктов

object

onetimePrice
required

Цена, которая взимается когда активирована подписка
Default : 0.0

number (float)

period
optional

Период в формате ISO-8601

string (date-time)

product
required

Продукт

productOptionOffers
optional

Список предложений продуктов

< ProductOptionOffer > array

productParameterOverrides
required

Переопределенные параметры продукта

object

prolongationByManagerAllowed
optional

Разрешено ли менеджеру TextBack ручное продление подписки

boolean

prolongationByUserAllowed
optional

Разрешено ли пользователю ручное продление подписки

boolean

recurringPeriod
required

Период, в течение которого будет действовать подписка

skuName
required

Наименование товарной позиции
Length : 1 - 1000

string

startDate
optional

Дата начала

string (date-time)

trial
optional

Пробный срок

boolean

RecurringPeriod

Период, в течение которого будет действовать подписка

Type : enum (onetime, daily, monthly, annual, inherit, custom)

ProductOptionOffer

Предложение

Name Description Schema

defaultAmount
optional

Количество по умолчанию
Default : 1.0

number (float)

localizedDisplayNames
required

Локализованные наименования продуктов

object

maxAmount
optional

Максимальное количество
Default : 1.0

number (float)

minAmount
optional

Минимальное количество
Default : 0.0

number (float)

offerId
required

Идентификатор предложения

string (uuid)

onetimePrice
required

Цена, которая взимается когда активирована подписка
Default : 0.0

number (float)

productOption
required

Опция продукта

recurringPeriod
required

Период, в течение которого будет действовать подписка

recurringPrice
optional

Цена, которая взимается регулярно в период действия подписки
Default : 0.0

number (float)

skuName
required

Наименование товарной позиции
Length : 1 - 1000

string

Product

Информация о продукте

Name Description Schema

id
required

Идентификатор

string (uuid)

localizedDisplayNames
required

Локализованные наименования продуктов

object

productOptions
required

Список опций продукта

< ProductOption > array

skuName
required

Наименование товарной позиции

string

ConversationStartContext

Информация о месте и условиях когда началась беседа (адрес страницы, данные браузера, cookies, и т.д.)

Name Description Schema

cookies
optional

Хранит cookies из HTTP запроса

object

insecureContext
optional

Передаваемый с клиента незащищенный контекст подписки, содержащий, например, номер заказа

object

pageTitle
optional

Заголовок окна

string

pageUrl
optional

URL адрес страницы

string

referer
optional

URL источника запроса

string

secureContext
optional

Защищенный средствами JWT контекст подписки, содержащий, например, номер заказа

object

secureContextToken
optional

Токен

string

timezoneOffset
optional

Смещение часового пояса

integer

urlParameters
optional

Параметры в URL адресе

object

userAgentString
optional

User-Agent браузера

string

viewerId
optional

Идентификатор пользователя текущей страницы

string (uuid)

visitDate
optional

Время посещения

string (date-time)

visitsCount
optional

Число посещений

integer

widgetId
optional

Идентификатор виджета

string (uuid)

ProductOption

Содержит локализованное ниманование продукта и товарной позиции

Name Description Schema

id
required

Уникальный идентификатор

string (uuid)

localizedDisplayNames
required

Локализованные наименования продуктов

string

skuName
required

Наименование товарной позиции

string

SendClientDetails

Информация о пользователе, которому отылается событие

Name Description Schema

remoteAddress
optional

Адрес другой стороны, специфичный для канала

string

substitutions
optional

Дополнительные значения подстановки для процессора шаблонов

object

Registration

Содержит информацию о регистрации

Name Description Schema

createChannels
optional

Список каналов

< Channel > array

options
optional

Объект, содержащий опции

object

owner
required

Информация о пользователе

products
optional

Объект, содержащий конфигурацию продуктов

object

User

Информация о пользователе

Name Description Schema

displayName
optional

Отображаемое имя

string

email
required

Адрес электронной почты

string (email)

login
optional

Логин

string

options
optional

Дополнительные опции

object

password
optional

Пароль

string

phone
optional

Номер телефона в формате E.164 (+7…) или местном для набора (8…)

string

Channel

Канал

Name Description Schema

accountId
optional

Идентификатор аккаунта

string (uuid)

channel
optional

Тип канала

channelId
optional

Идентификатор канала в транспорте

integer (int64)

id
optional

Уникальный идентификатор

string

tbUserId
optional

Идентификатор пользователя, который подключился к каналу или обновил его

integer (int64)

ProductConfiguration

Конфигурация продукта

Name Description Schema

offerId
optional

Идентификатор предложения

string

options
optional

Дополнительные опции

object

viewerUserCount
optional

Количество пользователей с ролью OPERATOR

integer

DeliveryAttemptInstance

Настройки для конкретного сообщения конкретного канала, содержащие шаблон сообщения, статус и таймауты

Name Description Schema

message
optional

Сообщение

messageDeliveryStatus
optional

Статус доставки сообщения

sentToWireTs
optional

Время отправки исходящего сообщения Delivery Hero

string (date-time)

status
optional

Статус сообщения

enum (SENDING, DEFERRED, FAILED, DELIVERED, CANCELED)

tbChatId
optional

Уникальный идентификатор чата в TextBack

integer (int64)

timeout
optional

Период переключения на следующий канал в каскаде по стандарту ISO-8601

string (date-time)

CompositeMessageType

Типы сообщений. Полезно в том случае, когда канал не поддерживает более одного прикрепления к сообщению

Type : enum (MASTER_MESSAGE, CHILD_MESSAGE, REGULAR_MESSAGE)

ChatAddress

Подробные данные о чате

Name Description Schema

accountId
required

Идентификатор аккаунта

string (uuid)

channel
required

Тип канала

channelId
required

Идентификатор канала в транспорте

integer (int64)

chatId
required

Идентификатор сессии чата при условии поддержки каналом

string

remoteAddress
optional

Адрес другой стороны, специфичный для канала

string

tbChatId
optional

Уникальный идентификатор чата в TextBack

integer (int64)

TbUniMessage

Сообщение между оператором и клиентом. Представляет как исходящее, так и входящее сообщения

Name Description Schema

accountId
optional

Идентификатор аккаунта

string (uuid)

actionNumbers
optional

Для каналов, не поддерживающих кнопки

object

attachments
optional

Информация об отправленных или принятых файлах в зависимости от направления сообщения

< Attachment > array

channel
required

Тип канала

channelId
required

Идентификатор канала в транспорте

integer (int64)

channelRead
optional

Информация о сообщении, прочитанном участником диалога. Заполняется для исходящих сообщений, если они прочитаны

chatId
optional

Идентификатор сессии чата, в котором сообщение было отправлено

string

chatTitle
optional

Название чата

string

childMessages
optional

Если данное сообщение велико для отправки, то оно разбивается на дочерние сообщения. В таком случае, данному сообщению выставляется тип MASTER_MESSAGE, оно не отправляется в канал, но отправляются дочерние сообщения.

< TbUniMessage > array

compositeMessageType
optional

Типы сообщений. Полезно в том случае, когда канал не поддерживает более одного прикрепления к сообщению

contact
optional

Переадресованный контакт в качестве номера телефона с именем

deliveryStatuses
optional

Список статусов доставки

deliveryTimeout
optional

Период доставки в формате ISO-8601

string (date-time)

direction
optional

Входящее или исходящее сообщение

enum (inbound, outbound)

id
optional

Уникальный идентификатор сообщения. Назначается TextBack

string (uuid)

location
optional

Данные о местоположении

masterMessageId
optional

Идентификатор мастер-сообщения. Указывается в том случае, если присутствуют дочерние сообщения

string (uuid)

notificationId
optional

Идентификатор рассылки, если сообщение является частью массовой рассылки

string (uuid)

pushType
optional

Способ оповещения пользователя о новом сообщении. Поддерживается только Facebook

enum (REGULAR, SILENT_PUSH, NO_PUSH)

reads
optional

Список прочтений сообщений операторами

< reads > array

reason
optional

Причина, по которой данное сообщение было отправлено
Default : "undefined"

enum (undefined, operator_sent_message, operator_sent_reply_from_messenger, user_sent_message, user_activated_interactive_menu_option, messenger_sent_deep_link_message, tb_sent_end_user_notification, tb_sent_subscription_welcome_message, tb_sent_auto_reply_message, tb_sent_interactive_action_response, tb_sent_operator_notification)

remoteAddress
optional

Адрес другой стороны, специфичный для канала

string

remoteContact
optional

Информация об участнике диалога

remoteFirstName
optional

Имя собеседника

string

remoteLastName
optional

Фамилия собеседника

string

replyToChannelMessageId
optional

Идентификатор сообщения, на которое текущее отвечает

string

replyToMessage
optional

Сообщение, на которое данное сообщение является ответом

senderInfo
optional

Информация об отправителе сообщения. Заполняется для исходящих (outbound) сообщений

sentTimestamp
optional

Дата, когда сообщение было отправлено

string (date-time)

subject
optional

Тема сообщения

string

substitutions
optional

Дополнительные значения подстановки для процессора шаблонов

object

tbChatId
optional

Уникальный идентификатор чата в TextBack

integer (int64)

templateId
optional

Идентификатор шаблона сообщения

string

text
optional

Текст сообщения

string

textMarkup
optional

Разметка сообщения
Default : "PLAIN"

enum (PLAIN, HTML, MARKDOWN)

channelRead

Name Description Schema

channelMessageIdExact
optional

Идентификатор конкретного прочитанного сообщения

string

channelMessageIdNumericFrom
optional

Все сообщения прочитаны, начиная с данного идентификатора сообщения и ранее

integer (int64)

id
optional

Уникальный идентификатор

string (uuid)

readKind
optional

Тип параметра сообщения, на основе которого определяется прочитанность сообщения

timestampFrom
optional

Все сообщения прочитаны до этой отметки времени

string (date-time)

reads

Name Description Schema

readTimestamp
optional

Время, когда сообщение было прочитано

integer (int64)

sessionId
optional

Идентификатор сессии, во время котором было прочитано сообщение

string

userId
optional

Идентификатор пользователя, прочитавшего сообщение

string

senderInfo

Name Description Schema

channelUserId
optional

Идентификатор для типа эндпоинта FROM_CHANNEL

string

endpointType
required

Источник отправки сообщения

enum (UNKNOWN, REST_API, TEXT_BACK_WEB, FROM_CHANNEL, END_USER_NOTIFICATION_API, CHANNEL_NOTIFICATION, BOT_API)

tbUserId
optional

Идентификатор крайнего пользователя, изменившего примечание

string (uuid)

userAgent
optional

User-Agent браузера

string

MessageDeliveryStatus

Статус доставки сообщения

Name Description Schema

channelDeliveryStatus
optional

Статус доставки сообщения конкретного канала

string

deliveryStatus
optional

Расширенный статус

id
optional

Идентификатор, присвоенный команде MessageDeliveryCommand

string (uuid)

isDelivered
optional

Общий признак, доставлено ли сообщение или нет

boolean

isFinal
optional

Статус доставки сообщения окончательный и не предвидится повторных попыток доставки
Default : true

boolean

timestamp
optional

Время доставки сообщения

integer (int64)

Contact

Информация об участнике диалога

Name Description Schema

birthday
optional

Дата рождения

channel
optional

Тип канала

channelUserId
optional

Идентификатор пользователя в канале

string

channelUsername
optional

Имя пользователя в канале (если доступно)

string

city
optional

Город

country
optional

Страна

email
optional

Основная электронная почта

string (email)

gender
optional

Пол

enum (male, female)

id
optional

Идентификатор контакта TextBack

string (uuid)

internationalName
optional

Имя в EN-локали

nationalName
optional

Имя в пользовательской локали

parentContactId
optional

Идентификатор TextBack объединенного контакта

string (uuid)

phoneNumbers
optional

Список телефонных номеров

< PhoneNumber > array

preferredLanguage
optional

Предпочитаемая локаль

string

timezone
optional

Cмещение относительно UTC (пользовательская временная зона)

string

userPicUrl
optional

URL аватара пользователя в чате

string

userProfileUrl
optional

URL на профиль пользователя

string

city

Name Description Schema

internationalName
optional

Международное наименование

string

nationalName
optional

Национальное наименование

string

country

Name Description Schema

internationalName
optional

Международное наименование

string

isoCode
optional

Код страны в ISO-формате

string

nationalName
optional

Национальное наименование

string

PhoneNumber

Телефонный номер

Name Description Schema

number
optional

Телефонный номер в стандарте E.164 или национальном формате

string

verifiedByChannel
optional

Подтвержден ли номер каналом

boolean

verifiedByTextBack
optional

Подтвержден ли номер TextBack

boolean

PartialDate

Дата, которая может быть лишь частично указана (например, только год)

Name Description Schema

day
optional

День

integer (int32)

month
optional

Месяц

integer (int32)

year
optional

Год

integer (int32)

PersonalName

Содержит имя и фамилию пользователя

Name Description Schema

displayName
optional

Отображаемое имя

string

firstName
optional

Имя

string

lastName
optional

Фамилия

string

ReadNotificationKind

Типы параметров сообщений, на основе которых определяется

Type : enum (BY_TIMESTAMP, BY_NUMERIC_MESSAGE_ID, BY_EXACT_MESSAGE_ID, BY_TEXTBACK_MESSAGE_ID)

Location

Данные о местоположении

Name Description Schema

latitude
required

Широта в градусах

number (float)

longitude
required

Долгота в градусах

number (float)

Attachment

Информация об отправленном или принятом файле. Для отправки необходимо минимально заполнить поле channelFileId ссылкой на закачанный файл

Name Description Schema

channelFileId
required

При отправке файла содержит ссылку на закачанный при помощи сервиса /uploads файл

string

fileName
optional

Имя файла в локальной файловой системе отправителя (мессенджеры передают не всегда)

string

fileSize
optional

Размер файла в байтах

number (integer)

kind
optional

Тип вложения. Некоторые мессенджеры по разному могут отображать принятый пользоваетелем файл. Для более user-friendly отображения файла испоьзуйте правильный kind
Default : "document"

enum (document, image, audio, video, thumb, sticker, voice)

mediaDuration
optional

Длительность файла, если вложение является видео или аудиозаписью

number (integer)

mediaHeight
optional

Высота кадра, если вложение является фото или видео

number (integer)

mediaWidth
optional

Ширина кадра, если вложение является фото или видео

number (integer)

mimeType
optional

MIME-type файла, если мессенджер пользователя его указал. При отправке из TB не имеет значения

string

publicUrl
optional

Ссылка для скачивания файла оператором TB. Слово public означает не то, что файл доступен без авторизации, а указывает возможность скачивания по API в принципе

string

thumbnails
optional

Массив превью-изображений для данного файла. Наличие превью зависит от мессенджера и kind отправляемого файла

< Attachment > array

Channels

Типы каналов

Type : enum (tg, sms, vk, facebook, skype, viber, vibersm, whatsapp, instagram)

Описание заголовка Authorization

При отправке вебхуков в запросах к сторонним сервисам, в качестве заголовка авторизации используется JWT токен. Мы передаем авторизационный токен, чтобы принимающая сторона могла убедиться в том, что вебхук был передан действительно от TextBack и для вашего аккаунта.

Authorization: JWT eyJhbGciO...

Токен состоит из двух base64 кодированных json объектов:

  • заголовок (Header)

  • полезные данные (Payload)

и сигнатуры (Signature), разделенных точками

xxxxx.yyyyy.zzzzz

Более подробно описано в спецификации RFC 7519 JSON Web Token (JWT)

Заголовок

Содержит параметры:

  • alg - алгоритм шифрования. Применяется ассиметричный RS512

  • typ - тип, значение которого указывает, что это JWT

  • x5u - URI на сертификат X.509, который используется для подписи данного токена (X.509 URL)

Полезные данные

  • iss - уникальный идентификатор стороны, генерирующей токен: TextBack

  • sub - уникальный идентификатор стороны, о которой содержится информация в данном токене: идентификатор аккаунта

  • aud - получатель данного токена: доменное имя сервиса, подписанного на вебхук

  • exp - время в секундах в формате Unix Time, определяющее момент, когда токен станет не валидным

  • iat - время в секундах в формате Unix Time, в которое был выпущен JWT. Используется для определения возраста JWT

Верификация

Ниже описаны шаги для валидации JWT токена.

  1. Получение JWT токена из заголовка Authorization

Authorization: Bearer [token]
  1. Проверка подписи при помощи публичного ключа

Перед тем как начать проверку, следует получить json-объекты заголовка и полезных данных токена. Для этого необходимо разделить токен на заголовок и полезные данные (разделителем является точка) и base64 декодировать полученные строки (не затрагивать сигнатуру).

Для начала, следует проверить, что алгоритм соответствует RS512: у объекта заголовка значение параметра alg должно равняться RS512.

Для проверки токена на валидность, нужно получить публичный ключ по URL, который хранится в параметре x5u заголовка. После этого необходимо воспользоваться готовой библиотекой верификации. Объемный список библиотек представлен на сайте JWT.io.

Если проверка подтвердила подпись, то следующим шагом нужно проверить значения параметров из полезных данных.

  1. Проверка значений параметров полезных данных

Для проверки следует использовать полученный ранее на 2 этапе json-объект полезных данных.

  • Проверка времени жизни токена

Текущие дата и время должны быть:

 — меньше значения параметра exp

 — больше значения параметра iat

  • Проверка стороны, выпустившей JWT

 — значение параметра iss должно соответствовать значению TextBack

  • Проверка получателей данного токена

 — значение параметра aud должно содержать доменное имя API, подписанного на вебхук