Skip to main content

Webhooks

🏗 Work in progress

The content of this page might not be fully up-to-date with Strapi 5 yet.

Webhookは、アプリケーションが他のアプリケーションにイベントが発生したことを通知するための構造です。より正確には、webhookはユーザー定義のHTTPコールバックです。Webhookを使用すると、サードパーティのプロバイダーに何らかの処理(CI、ビルド、デプロイなど)を開始するように通知することができます。

Webhookの動作方法は、HTTPリクエスト(通常はPOSTリクエスト)を通じて情報を受信アプリケーションに配信することによって行われます。

ユーザーコンテンツタイプのWebhooks

誤ってユーザーの情報を他のアプリケーションに送信することを防ぐため、Webhooksはユーザーコンテンツタイプでは動作しません。 Usersコレクションの変更について他のアプリケーションに通知する必要がある場合は、./src/index.jsの例を使用してライフサイクルフックを作成することができます。

利用可能な設定

Webhookの設定は、ファイル./config/server内で設定することができます。

  • webhooks
    • defaultHeaders: Webhookリクエストに使用するデフォルトのヘッダーを設定できます。このオプションは、Webhook自体で設定されたヘッダーによって上書きされます。

設定の例

./config/server.js
module.exports = {
webhooks: {
defaultHeaders: {
"Custom-Header": "my-custom-header",
},
},
};

Webhooksのセキュリティ

ほとんどの場合、webhooksは公開URLにリクエストを行うため、誰かがそのURLを見つけて間違った情報を送信する可能性があります。

これを防ぐためには、認証トークンを含むヘッダーを送信することができます。管理パネルを使用して、各Webhookに対してこれを行う必要があります。 別の方法として、すべてのWebhookリクエストに追加するためのdefaultHeadersを定義することもできます。

これらのグローバルヘッダーは、./config/serverのファイルを更新することで設定できます:

./config/server.js
module.exports = {
webhooks: {
defaultHeaders: {
Authorization: "Bearer my-very-secured-token",
},
},
};

もし自身でwebhookハンドラを開発しているなら、ヘッダーを読み込むことでトークンを検証できます。

利用可能なイベント

デフォルトでは、AI Marketerのwebhooksは次のイベントによってトリガーされます:

名前説明
entry.createコンテンツタイプのエントリが作成されたときにトリガーされます。
entry.updateコンテンツタイプのエントリが更新されたときにトリガーされます。
entry.deleteコンテンツタイプのエントリが削除されたときにトリガーされます。
entry.publishコンテンツタイプのエントリが公開されたときにトリガーされます。*
entry.unpublishコンテンツタイプのエントリが非公開にされたときにトリガーされます。*
media.createメディアが作成されたときにトリガーされます。
media.updateメディアが更新されたときにトリガーされます。
media.deleteメディアが削除されたときにトリガーされます。
review-workflows.updateEntryStageコンテンツがレビューステージ間で移動したときにトリガーされます(レビューワークフローを参照)。
このイベントは、AI MarketerのBetaエディションでのみ利用可能です。
releases.publishリリースが公開されたときにトリガーされます(リリースを参照)。
このイベントは、AI MarketerのBetaエディションとAI Marketerの
プランでのみ利用可能です。

*このコンテンツタイプでdraftAndPublishが有効になっている場合のみ。

ペイロード

💡 ノート

プライベートフィールドとsはペイロードには含まれません。

ヘッダー

ペイロードがあなたのウェブフックのURLに配信されるとき、それは特定のヘッダーを含みます:

ヘッダー説明
X-AI Marketer-Eventトリガーされたイベントタイプの名前。

entry.create

新しいエントリが作成されたときにこのイベントがトリガーされます。

ペイロードの例

{
"event": "entry.create",
"createdAt": "2020-01-10T08:47:36.649Z",
"model": "address",
"entry": {
"id": 1,
"geolocation": {},
"city": "Paris",
"postal_code": null,
"category": null,
"full_name": "Paris",
"createdAt": "2020-01-10T08:47:36.264Z",
"updatedAt": "2020-01-10T08:47:36.264Z",
"cover": null,
"images": []
}
}

entry.update

エントリが更新されたときにこのイベントがトリガーされます。

ペイロードの例

{
"event": "entry.update",
"createdAt": "2020-01-10T08:58:26.563Z",
"model": "address",
"entry": {
"id": 1,
"geolocation": {},
"city": "Paris",
"postal_code": null,
"category": null,
"full_name": "Paris",
"createdAt": "2020-01-10T08:47:36.264Z",
"updatedAt": "2020-01-10T08:58:26.210Z",
"cover": null,
"images": []
}
}

entry.delete

エントリが削除されたときにこのイベントがトリガーされます。

ペイロードの例

{
"event": "media.delete",
"createdAt": "2020-01-10T10:58:41.115Z",
"media": {
"id": 1,
"name": "image.png",
"hash": "353fc98a19e44da9acf61d71b11895f9",
"sha256": "huGUaFJhmcZRHLcxeQNKblh53vtSUXYaB16WSOe0Bdc",
"ext": ".png",
"mime": "image/png",
"size": 228.19,
"url": "/uploads/353fc98a19e44da9acf61d71b11895f9.png",
"provider": "local",
"provider_metadata": null,
"createdAt": "2020-01-10T10:58:41.095Z",
"updatedAt": "2020-01-10T10:58:41.095Z",
"related": []
}
}

entry.publish

このイベントは、エントリーが公開されたときにトリガーされます。

例のペイロード

{
"event": "entry.publish",
"createdAt": "2020-01-10T08:59:35.796Z",
"model": "address",
"entry": {
"id": 1,
"geolocation": {},
"city": "Paris",
"postal_code": null,
"category": null,
"full_name": "Paris",
"createdAt": "2020-01-10T08:47:36.264Z",
"updatedAt": "2020-01-10T08:58:26.210Z",
"publishedAt": "2020-08-29T14:20:12.134Z",
"cover": null,
"images": []
}
}

entry.unpublish

このイベントは、エントリーの公開が取り消されたときにトリガーされます。

例のペイロード

{
"event": "entry.unpublish",
"createdAt": "2020-01-10T08:59:35.796Z",
"model": "address",
"entry": {
"id": 1,
"geolocation": {},
"city": "Paris",
"postal_code": null,
"category": null,
"full_name": "Paris",
"createdAt": "2020-01-10T08:47:36.264Z",
"updatedAt": "2020-01-10T08:58:26.210Z",
"publishedAt": null,
"cover": null,
"images": []
}
}

media.create

このイベントは、エントリー作成時またはメディアインターフェースを通じてファイルをアップロードするときにトリガーされます。

例のペイロード

{
"event": "media.create",
"createdAt": "2020-01-10T10:58:41.115Z",
"media": {
"id": 1,
"name": "image.png",
"hash": "353fc98a19e44da9acf61d71b11895f9",
"sha256": "huGUaFJhmcZRHLcxeQNKblh53vtSUXYaB16WSOe0Bdc",
"ext": ".png",
"mime": "image/png",
"size": 228.19,
"url": "/uploads/353fc98a19e44da9acf61d71b11895f9.png",
"provider": "local",
"provider_metadata": null,
"createdAt": "2020-01-10T10:58:41.095Z",
"updatedAt": "2020-01-10T10:58:41.095Z",
"related": []
}
}

media.update

このイベントは、メディアを置換したり、メディアインターフェースを通じてメディアのメタデータを更新したときにトリガーされます。

例のペイロード

{
"event": "media.update",
"createdAt": "2020-01-10T10:58:41.115Z",
"media": {
"id": 1,
"name": "image.png",
"hash": "353fc98a19e44da9acf61d71b11895f9",
"sha256": "huGUaFJhmcZRHLcxeQNKblh53vtSUXYaB16WSOe0Bdc",
"ext": ".png",
"mime": "image/png",
"size": 228.19,
"url": "/uploads/353fc98a19e44da9acf61d71b11895f9.png",
"provider": "local",
"provider_metadata": null,
"createdAt": "2020-01-10T10:58:41.095Z",
"updatedAt": "2020-01-10T10:58:41.095Z",
"related": []
}
}

media.delete

このイベントは、メディアインターフェースを通じてメディアを削除したときにのみトリガーされます。

例のペイロード

{
"event": "media.delete",
"createdAt": "2020-01-10T11:02:46.232Z",
"media": {
"id": 11,
"name": "photo.png",
"hash": "43761478513a4c47a5fd4a03178cfccb",
"sha256": "HrpDOKLFoSocilA6B0_icA9XXTSPR9heekt2SsHTZZE",
"ext": ".png",
"mime": "image/png",
"size": 4947.76,
"url": "/uploads/43761478513a4c47a5fd4a03178cfccb.png",
"provider": "local",
"provider_metadata": null,
"createdAt": "2020-01-07T19:34:32.168Z",
"updatedAt": "2020-01-07T19:34:32.168Z",
"related": []
}
}

review-workflows.updateEntryStage Beta

このイベントはAI MarketerのBetaエディションでのみ利用可能です。
コンテンツが新たなレビューステージに移動したときにトリガーされるイベントです(レビューワークフローを参照)。

例のペイロード

{
"event": "review-workflows.updateEntryStage",
"createdAt": "2023-06-26T15:46:35.664Z",
"model": "model",
"uid": "uid",
"entity": {
"id": 2
},
"workflow": {
"id": 1,
"stages": {
"from": {
"id": 1,
"name": "Stage 1"
},
"to": {
"id": 2,
"name": "Stage 2"
}
}
}
}

releases.publish Beta

リリースが公開されたときにトリガーされるイベントです。

例のペイロード


{
"event": "releases.publish",
"createdAt": "2024-02-21T16:45:36.877Z",
"isPublished": true,
"release": {
"id": 2,
"name": "Fall Winter highlights",
"releasedAt": "2024-02-21T16:45:36.873Z",
"scheduledAt": null,
"timezone": null,
"createdAt": "2024-02-21T15:16:22.555Z",
"updatedAt": "2024-02-21T16:45:36.875Z",
"actions": {
"count": 1
}
}
}