Веб-перехватчики в версии V4
Веб-перехватчики в версии V4
Что такое веб-перехватчик?
Веб-перехватчик — это обратный вызов HTTP типа push, который Frame.io отправляет сразу же, как только в вашей учетной записи ** происходит важное событие** (например, завершается перекодирование нового файла, добавляется комментарий или создается проект).
Вместо того чтобы опрашивать API-интерфейс, вы указываете публичный URL-адрес HTTPS. Frame.io в реальном времени отправляет на него полезную нагрузку JSON, что позволяет вам выполнять следующие действия.
Подробнее о том, что такое веб-перехватчик и как он работает — на сайте https://docs.webhook.site/.
Обзор конечных точек
Аутентификация — все конечные точки V4 требуют токен доступа OAuth 2.0, полученный через Adobe Developer Console. Устаревшие токены разработчика и JWT не принимаются.
Изменения и обновления в Frame V4
Веб-перехватчики, созданные в устаревшей версии, переносятся в V4 со следующими изменениями.
- Структура полезной нагрузки. Добавлен идентификатор учетной записи в полезную нагрузку.
- Изменения в конечных точках. Идентификатор
team_idбольше не передается в полезной нагрузке JSON. Вместо этого он указывается в параметре пути в URL-адресе:https://api.frame.io/v4/accounts/:account_id/workspaces/:workspace_id/webhooks. - Интеграция с API-интерфейсом. В связи с изменениями в структуре API-интерфейса, конечных точках и методах аутентификации, любой существующий код для входящих веб-перехватчиков, который выполняет последующие вызовы к API-интерфейсу Frame.io для обогащения данных и поиска ресурсов, потребует обновления.
- Типы событий. Веб-перехватчики для ресурсов были разделены на отдельные события для файлов и папок. Любые веб-перехватчики, перенесенные из предыдущей версии с событиями для ресурсов, необходимо обновить, указав соответствующие события для файлов и папок.
Статус веб-перехватчиков после миграции. При переходе вашей учетной записи на Frame.io V4 существующие веб-перехватчики предыдущих версий автоматически отключаются. Это позволяет изменить конечные точки веб-перехватчиков и логику интеграции для работы с обновлениями V4 перед их повторной активацией. Веб-перехватчики, не обновленные для совместимости с V4, при включении без надлежащих изменений будут работать с ошибками. Можно проверить, какие веб-перехватчики неактивны, просмотрев поле is_active через API-интерфейс или проверив настройки веб-перехватчиков перед их повторным включением.
Подписки на события веб-перехватчиков
При создании и обновлении веб-перехватчиков указывайте, какие именно события вас интересуют. Можно выбрать любое количество событий. Однако обратите внимание, что система работает эффективнее, если вы подписываетесь на меньшее число событий. Логически разделяйте веб-перехватчики, используя разные схемы именования и разные конечные точки. Это позволит вам выстроить бизнес-логику на принимающей стороне так, чтобы тратить меньше ресурсов на фильтрацию и маршрутизацию данных в общих функциях.
Область действия событий. Все события ограничены областью действия рабочей среды, указанной при создании веб-перехватчика. Это означает, что уведомления будут отправляться для действий, совершенных во всех проектах в данной рабочей среде.
Проекты
Файлы
Папки
Комментарии
Метаданные
Коллекции
Пользовательские поля
Общие ресурсы
Полезная нагрузка сообщения веб-перехватчика
Полезная нагрузка веб-перехватчиков всегда содержит поле type, указывающее на произошедшее событие, и объект resource. Объект resource содержит тип (type) и идентификатор (ID) ресурса Frame.io, связанного с событием.
Пример полезной нагрузки
В приведенном выше примере события file.created поле resource.id указывает на ID созданного файла. Кроме того, в полезную нагрузку включены объекты workspace, project и user, которые содержат связанные идентификаторы workspace.id, project.id и user.id. Их можно использовать для сокращения количества вызовов API-интерфейса путем фильтрации входящих событий или поиска кэшированных данных на вашей стороне.
Мы не предоставляем никакой дополнительной информации о ресурсе, на который оформлена подписка, помимо его идентификатора.
Если вашему приложению требуются дополнительные сведения или контекст, мы рекомендуем выполнить вызов API-интерфейса для поиска подробной информации о запрашиваемых ресурсах.
Безопасность
По умолчанию все веб-перехватчики имеют неизменяемый секретный ключ подписи, который можно использовать для проверки того, действительно ли запрос исходит от Frame.io.
Полезная нагрузка ответа для настроенного вами веб-перехватчика содержит секретный ключ подписи, уникальный для этого конкретного веб-перехватчика. Он предоставляется только в первоначальном ответе на создание веб-перехватчика, поэтому сохраните его в надежном месте — в хранилище секретных ключей или в переменных среды. Используйте его в дальнейшем для проверки того, что веб-перехватчик поступает непосредственно с наших серверов и не был перехвачен или каким-либо образом изменен.
Проверка подписей веб-перехватчиков
Чтобы защитить интеграцию от атак типа «человек посередине» и атак повторного воспроизведения, важно проверять подпись полезной нагрузки веб-перехватчика. Проверка гарантирует, что полезная нагрузка веб-перехватчика действительно была отправлена платформой Frame.io, а ее содержимое не было изменено при передаче.
В запрос POST включаются следующие заголовки HTTP.
Временная метка — это системное время Frame.io на момент отправки исходящего веб-перехватчика. Его можно использовать для предотвращения атак повторного воспроизведения. Мы рекомендуем проверять, чтобы это время отличалось от локального времени не более чем на 5 минут. Подпись — это хеш HMAC SHA256, использующий ключ подписи, предоставленный при первоначальном создании веб-перехватчика. Выполните следующие шаги для проверки подписи.
Предоставленная подпись имеет префикс v0=. В настоящее время в Frame.io существует только одна версия для подписания запросов. Убедитесь, что этот префикс добавлен к вычисленной вами подписи.
Повторные попытки и ведение журналов
-
В общей сложности пять попыток (первоначальная + 4 повторных).
-
Экспоненциальная задержка, начинающаяся с 15 с (+ случайное отклонение).
-
Статус, отличный от
2xx, или превышение времени ожидания >5 секунд вызывают повторную попытку.
Frame.io ведет журнал сбоев, содержащий следующие данные: webhook_id, account_id, event_type, resource_id, user_id.
Руководство по веб-перехватчикам
Шаг 1. Настройка принимающей стороны (выполняется в первую очередь, чтобы узнать свой URL-адрес)
В этом руководстве мы используем сервис webhook.site, который позволяет легко и быстро развернуть одноразовый приемник веб-перехватчиков. Его можно использовать для проверки полезной нагрузки и отправки базовых ответов без какой-либо реальной бизнес-логики. При первом переходе на сайт https://webhook.site для вас создается уникальная конечная точка веб-перехватчика, которую можно сразу скопировать и использовать.
Этот URL-адрес уникален для вашего сеанса.

Шаг 2. Выбор событий, на которые нужно подписаться
В этом руководстве мы не будем усложнять задачу и настроим подлписку веб-перехватчика только на события file.created. Полезная нагрузка JSON, которую мы будем использовать для создания веб-перехватчика, выглядит следующим образом.
Шаг 3. Создание ресурса веб-перехватчика с помощью Postman
Выполните вызов API-интерфейса с помощью Postman для создания ресурса веб-перехватчика, указав в полезной нагрузке конечную точку с сайта webhook.site.
Шаг 4. Тестирование
Теперь, когда вы создали подписку веб-перехватчика и настроили конечные точки для его получения, пришло время протестировать систему. Для этого запустите первый веб-перехватчик, выполнив соответствующее действие, которое заставит его сработать.
Поскольку в нашем примере была настроена реакция на триггер file.created, мы загрузим новый ресурс в любой проект в пределах той учетной записи и рабочей среды, для которых был создан этот веб-перехватчик.

Дополнительные ресурсы
Ngrok — это прекрасный инструмент для разработчиков, работающих с веб-перехватчиками, которым требуется доступный из интернета публичный URL-адрес. Он создает безопасные туннели из вашей локальной среды в интернет, позволяя локальному серверу принимать полезную нагрузку веб-перехватчиков в реальном времени.
Hookdeck — это платформа, разработанная для надежного управления веб-перехватчиками с помощью надежного шлюза событий. Она централизует обработку веб-перехватчиков, гарантируя, что ни одно событие не будет пропущено, а также предлагает такие функции, как фильтрация, организация очереди и выполнение повторных попыток при сбое веб-перехватчиков.
Webhook.site — это превосходный инструмент для прототипирования и тестирования веб-перехватчиков, который предлагает простую, но мощную платформу для перехвата и анализа запросов HTTP, отправляемых на уникальные, автоматически генерируемые URL-адреса.
Val.town — это отличный инструмент для быстрого прототипирования обработчиков веб-перехватчиков, поскольку он упрощает процесс написания, тестирования и развертывания небольших функций на JavaScript и Python прямо из браузера.