Ducat Wallets. Webhooks Events API (0.1.0)

Download OpenAPI specification:Download

Wallet Webhook Events API

Данная спецификация определяет протокол доставки оповещений о возникновении новых событий по кошелькам в рамках вашей организации, которые система доставляет в виде HTTP-запросов на URL-адреса созданных вами webhook'ов. Обработчики для подобного рода запросов необходимо реализовать на стороне вашего серверного кода согласно данной спецификации.

Webhook — это подписка на определенный тип события либо их группу, касающихся различных объектов в рамках вашей организации. Для управления webhook'ами используются методы API, описанные в данной спецификации. Когда наступает одно из событий в рамках определенного кошелька (например, изменение статуса кошелька), система выбирает webhook, подходящий под этот тип события, и отправляет HTTP-запрос, содержащий сообщение в формате JSON на указанный в этом webhook'е URL. Если вы создали несколько webhook'ов, подходящих под этот тип события, то событие доставляется одновременно на все заданные в них URL в неопределённом порядке.

Стратегия доставки

Система гарантирует порядок доставки событий в рамках определенного предмета оповещения (кошелек, пополнение, выплата и т.п.). Система поддерживает очередь сообщений для каждого предмета оповещения, чтобы соблюсти очередность и гарантированную доставку.

Запрос на доставку считается успешным только при получении ответа со статусом 200. Система будет ожидать успешного ответа на отправленный запрос в течение 10 секунд. В случае ответа любым другим статусом или по истечении указанного времени, отведённого на обработку оповещения, система будет пытаться повторно доставить оповещения до получения успешного ответа, либо до принятия решения о невозможности доставить информацию. Попытки доставки будут производиться со следующими временными интервалами между запросами:

  • 30 секунд,
  • 5 минут,
  • 15 минут,
  • 1 час.
  • каждый час в течение суток (24 часа)

Если последняя попытка доставить оповещение оканчивается неудачей, все события, которые накопились в очереди этого кошелька, отбрасываются.

Авторизация полученных сообщений

Система подтверждает подлинность оповещений, подписывая сообщения приватным ключом, уникальным для каждого webhook'а, парный публичный ключ к которому содержится в данных этого webhook'а. Подпись передается в HTTP-заголовке Content-Signature. В заголовке в виде различных атрибутов содержится информация об использованном при формировании подписи алгоритме и значение подписи в формате URL-safe base-64.

Content-Signature: alg=RS256; digest=zFuf7bRH4RHwyktaqHQwmX5rn3LfSb4dKo...

На данный момент возможно использование единственного алоритма формирования подписи.

RS256

Подпись формируется согласно алгоритму RSASSA-PKCS1-v1_5, на вход которому подаётся результат вычисления хэша сообщения по алгоритму SHA-256.

Набор атрибутов заголовка и список возможных алгоритмов формирования подписи в дальнейшем могут быть расширены.

Оповещения

Доставка оповещений о событиях системы.

Оповестить о событии

header Parameters
Content-Signature
required
string

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

Request Body schema: application/json

Данные произошедшего в платформе события

eventID
string

Идентификатор события в системе

occuredAt
required
string <date-time>

Дата и время возникновения события

topic
required
string
Enum: "WithdrawalTopic" "DestinationTopic"

Предмет оповещения

eventType
required
string

Тип произошедшего с предметом оповещения события

required
object (Withdrawal)

Данные вывода денежных средств

Responses

Request samples

Content type
application/json
Example
{
  • "eventID": "string",
  • "occuredAt": "2019-08-24T14:15:22Z",
  • "topic": "WithdrawalTopic",
  • "eventType": "WithdrawalStarted",
  • "withdrawal": {
    }
}