Обзор

Интеграции

Руководство пользователя

Справочник API

Вебхуки

Вебхуки

Вебхук — URL, на который Haskimail отправляет события писем канала: доставку, возвраты, жалобы, открытия, клики и изменения стоп-листа. Формат событий описан в разделе «Вебхуки». Серверный ключ работает только с вебхуками каналов своего сервера.

Список вебхуков #

get

/webhooks

Возвращает вебхуки каналов сервера ключа; с ключом аккаунта — вебхуки всех каналов.

Заголовки запроса

Accept обязательный

application/json

X-Haskimail-Server-Token обязательный

Серверный API-ключ. Он есть в настройках сервера на вкладке «API-ключи».

Ответ

Webhooks array

Вебхуки.

Webhooks[].ID integer

ID вебхука.

Webhooks[].Url string

URL, на который отправляются события.

Webhooks[].MessageStream string

ID канала, события которого приходят на вебхук.

Webhooks[].Triggers object

События, на которые срабатывает вебхук.

Webhooks[].Triggers.Delivery.Enabled boolean

Включено ли событие «доставка письма».

Webhooks[].Triggers.Bounce.Enabled boolean

Включено ли событие «возврат».

Webhooks[].Triggers.SpamComplaint.Enabled boolean

Включено ли событие «жалоба на спам».

Webhooks[].Triggers.Open.Enabled boolean

Включено ли событие «открытие».

Webhooks[].Triggers.Click.Enabled boolean

Включено ли событие «клик по ссылке».

Webhooks[].Triggers.SubscriptionChange.Enabled boolean

Включено ли событие «изменение стоп-листа».

Пример запроса с curl

curl "https://api.haskimail.ru/webhooks" \
  -X GET \
  -H "Accept: application/json" \
  -H "X-Haskimail-Server-Token: server token"

Пример ответа

HTTP/1.1 200 OK
Content-Type: application/json

{
  "Webhooks": [
    {
      "ID": 905,
      "Url": "https://example.com/haski-events",
      "MessageStream": "2081",
      "Triggers": {
        "Delivery": {
          "Enabled": true
        },
        "Bounce": {
          "Enabled": true
        },
        "SpamComplaint": {
          "Enabled": true
        },
        "Open": {
          "Enabled": false
        },
        "Click": {
          "Enabled": false
        },
        "SubscriptionChange": {
          "Enabled": false
        }
      }
    },
    {
      "ID": 906,
      "Url": "https://example.com/haski-opens",
      "MessageStream": "2082",
      "Triggers": {
        "Delivery": {
          "Enabled": false
        },
        "Bounce": {
          "Enabled": false
        },
        "SpamComplaint": {
          "Enabled": false
        },
        "Open": {
          "Enabled": true
        },
        "Click": {
          "Enabled": true
        },
        "SubscriptionChange": {
          "Enabled": false
        }
      }
    }
  ]
}

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

get

/webhooks/{webhookid}

Возвращает один вебхук. Если вебхука нет — ответ 404 с кодом 12.

Заголовки запроса

Accept обязательный

application/json

X-Haskimail-Server-Token обязательный

Серверный API-ключ. Он есть в настройках сервера на вкладке «API-ключи».

Параметры пути

webhookid обязательный

ID вебхука.

Ответ

ID integer

ID вебхука.

Url string

URL, на который отправляются события.

MessageStream string

ID канала, события которого приходят на вебхук.

Triggers object

События, на которые срабатывает вебхук.

Triggers.Delivery.Enabled boolean

Включено ли событие «доставка письма».

Triggers.Bounce.Enabled boolean

Включено ли событие «возврат».

Triggers.SpamComplaint.Enabled boolean

Включено ли событие «жалоба на спам».

Triggers.Open.Enabled boolean

Включено ли событие «открытие».

Triggers.Click.Enabled boolean

Включено ли событие «клик по ссылке».

Triggers.SubscriptionChange.Enabled boolean

Включено ли событие «изменение стоп-листа».

Пример запроса с curl

curl "https://api.haskimail.ru/webhooks/{webhookid}" \
  -X GET \
  -H "Accept: application/json" \
  -H "X-Haskimail-Server-Token: server token"

Пример ответа

HTTP/1.1 200 OK
Content-Type: application/json

{
  "ID": 905,
  "Url": "https://example.com/haski-events",
  "MessageStream": "2081",
  "Triggers": {
    "Delivery": {
      "Enabled": true
    },
    "Bounce": {
      "Enabled": true
    },
    "SpamComplaint": {
      "Enabled": true
    },
    "Open": {
      "Enabled": false
    },
    "Click": {
      "Enabled": false
    },
    "SubscriptionChange": {
      "Enabled": false
    }
  }
}

Создание вебхука #

post

/webhooks

Создает вебхук для канала. Он срабатывает на события писем, отправленных через этот канал, в том числе писем без MessageStream, если это канал сервера по умолчанию.

Заголовки запроса

Accept обязательный

application/json

Content-Type обязательный

application/json

X-Haskimail-Server-Token обязательный

Серверный API-ключ. Он есть в настройках сервера на вкладке «API-ключи».

Параметры тела запроса

Url string обязательный

URL, на который будут приходить POST-запросы с событиями.

MessageStream string

ID канала сервера ключа. Если не указан — транзакционный канал сервера по умолчанию, тот же, через который уходят письма без MessageStream. С ключом аккаунта лучше указывать явно: иначе берется канал по умолчанию одного из серверов.

Triggers object

События, на которые срабатывает вебхук. Не включенные события выключены.

Triggers.Delivery.Enabled boolean

Событие «доставка письма».

Triggers.Bounce.Enabled boolean

Событие «возврат».

Triggers.SpamComplaint.Enabled boolean

Событие «жалоба на спам».

Triggers.Open.Enabled boolean

Событие «открытие».

Triggers.Click.Enabled boolean

Событие «клик по ссылке».

Triggers.SubscriptionChange.Enabled boolean

Событие «изменение стоп-листа».

Ответ

ID integer

ID вебхука.

Url string

URL, на который отправляются события.

MessageStream string

ID канала, события которого приходят на вебхук.

Triggers object

События, на которые срабатывает вебхук.

Triggers.Delivery.Enabled boolean

Включено ли событие «доставка письма».

Triggers.Bounce.Enabled boolean

Включено ли событие «возврат».

Triggers.SpamComplaint.Enabled boolean

Включено ли событие «жалоба на спам».

Triggers.Open.Enabled boolean

Включено ли событие «открытие».

Triggers.Click.Enabled boolean

Включено ли событие «клик по ссылке».

Triggers.SubscriptionChange.Enabled boolean

Включено ли событие «изменение стоп-листа».

Пример запроса с curl

curl "https://api.haskimail.ru/webhooks" \
  -X POST \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-Haskimail-Server-Token: server token" \
  -d '{
  "Url": "https://example.com/haski-events",
  "MessageStream": "2081",
  "Triggers": {
    "Delivery": {
      "Enabled": true
    },
    "Bounce": {
      "Enabled": true
    },
    "SpamComplaint": {
      "Enabled": true
    }
  }
}'

Пример ответа

HTTP/1.1 200 OK
Content-Type: application/json

{
  "ID": 905,
  "Url": "https://example.com/haski-events",
  "MessageStream": "2081",
  "Triggers": {
    "Delivery": {
      "Enabled": true
    },
    "Bounce": {
      "Enabled": true
    },
    "SpamComplaint": {
      "Enabled": true
    },
    "Open": {
      "Enabled": false
    },
    "Click": {
      "Enabled": false
    },
    "SubscriptionChange": {
      "Enabled": false
    }
  }
}

Редактирование вебхука #

put

/webhooks/{webhookid}

Меняет URL и события вебхука. Передавайте только то, что нужно изменить: события, которых нет в запросе, остаются как были. Канал вебхука не меняется.

Заголовки запроса

Accept обязательный

application/json

Content-Type обязательный

application/json

X-Haskimail-Server-Token обязательный

Серверный API-ключ. Он есть в настройках сервера на вкладке «API-ключи».

Параметры пути

webhookid обязательный

ID вебхука.

Параметры тела запроса

Url string

Новый URL.

Triggers object

События, которые нужно включить или выключить.

Triggers.Delivery.Enabled boolean

Событие «доставка письма».

Triggers.Bounce.Enabled boolean

Событие «возврат».

Triggers.SpamComplaint.Enabled boolean

Событие «жалоба на спам».

Triggers.Open.Enabled boolean

Событие «открытие».

Triggers.Click.Enabled boolean

Событие «клик по ссылке».

Triggers.SubscriptionChange.Enabled boolean

Событие «изменение стоп-листа».

Ответ

ID integer

ID вебхука.

Url string

URL, на который отправляются события.

MessageStream string

ID канала, события которого приходят на вебхук.

Triggers object

События, на которые срабатывает вебхук.

Triggers.Delivery.Enabled boolean

Включено ли событие «доставка письма».

Triggers.Bounce.Enabled boolean

Включено ли событие «возврат».

Triggers.SpamComplaint.Enabled boolean

Включено ли событие «жалоба на спам».

Triggers.Open.Enabled boolean

Включено ли событие «открытие».

Triggers.Click.Enabled boolean

Включено ли событие «клик по ссылке».

Triggers.SubscriptionChange.Enabled boolean

Включено ли событие «изменение стоп-листа».

Пример запроса с curl

curl "https://api.haskimail.ru/webhooks/{webhookid}" \
  -X PUT \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-Haskimail-Server-Token: server token" \
  -d '{
  "Triggers": {
    "Open": {
      "Enabled": true
    },
    "Click": {
      "Enabled": true
    }
  }
}'

Пример ответа

HTTP/1.1 200 OK
Content-Type: application/json

{
  "ID": 905,
  "Url": "https://example.com/haski-events",
  "MessageStream": "2081",
  "Triggers": {
    "Delivery": {
      "Enabled": true
    },
    "Bounce": {
      "Enabled": true
    },
    "SpamComplaint": {
      "Enabled": true
    },
    "Open": {
      "Enabled": true
    },
    "Click": {
      "Enabled": true
    },
    "SubscriptionChange": {
      "Enabled": false
    }
  }
}

Удаление вебхука #

delete

/webhooks/{webhookid}

Удаляет вебхук.

Заголовки запроса

Accept обязательный

application/json

X-Haskimail-Server-Token обязательный

Серверный API-ключ. Он есть в настройках сервера на вкладке «API-ключи».

Параметры пути

webhookid обязательный

ID вебхука.

Ответ

ErrorCode integer

0 — вебхук удален.

Message string

Описание результата.

Пример запроса с curl

curl "https://api.haskimail.ru/webhooks/{webhookid}" \
  -X DELETE \
  -H "Accept: application/json" \
  -H "X-Haskimail-Server-Token: server token"

Пример ответа

HTTP/1.1 200 OK
Content-Type: application/json

{
  "ErrorCode": 0,
  "Message": "Webhook 905 removed."
}