Webhookを利用すると、Qiita Teamで発生する様々なイベントを外部のサービスと連携できます。Qiita Teamで記事が作成されたり、記事にコメントが付けられたりすると、設定されたURLに対してHTTP経由でPOSTリクエストが送信されます。
自分の所属しているチームにWebhookを設定するには、チーム設定画面からWebhooksの画面に遷移し、設定を行います。1つのチームで複数のURLを設定でき、それぞれのURLに対して受信するイベントの種類を指定できます。なお、Webhookの設定を変更できるのはチームの管理者のみとなります。
Webhookの機能から送られるすべてのHTTPリクエストはPOSTリクエストで送信されます。リクエストボディにはJSON形式でエンコードされた文字列(以下これをPayloadと呼びます)が含まれます。共通のリクエストヘッダとして、X-Qiita-Event-Model
にPayloadのmodelプロパティと同様の値が含まれます。また、Qiita Teamから送信されたリクエストであることを保証するため、X-Qiita-Token
にWebhookに割り当てられたトークンが与えられます。トークンはチーム設定画面から確認できます。
Payloadには、必ずactionプロパティとmodelプロパティが含まれます。actionプロパティは「どのイベントが発生したか」を表す文字列で、modelプロパティは「何に対してイベントが発生したか」を表す文字列です。他に、イベントごとに関連するデータが幾つか含まれます。
記事が作成されたときに送信されます。
プロパティ名 | 型 | 説明 |
---|---|---|
action | String | "created" |
model | String | "item" |
item | Item | 作成された記事 |
user | User | 作成したユーザー |
{"action":"created","item":{"body":"<p>test</p>\n","coediting":false,"comment_count":0,"created_at_as_seconds":1438855324,"created_at_in_words":"1分未満","created_at":"2015-08-06 19:02:04 +0900","id":421379,"lgtm_count":0,"raw_body":"test\n","stock_count":0,"stock_users":[],"tags":[{"name":"test","url_name":"test","versions":[]}],"title":"Test","updated_at":"2015-08-06 19:02:04 +0900","updated_at_in_words":"1分未満","url":"https://example.qiita.com/r7kamura/items/a09e2f506c04aca3397a","user":{"id":4365,"profile_image_url":"https://secure.gravatar.com/avatar/089127ffb92a19d3d37815673cca06dc?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url_name":"r7kamura"},"uuid":"a09e2f506c04aca3397a"},"model":"item","user":{"id":4365,"profile_image_url":"https://secure.gravatar.com/avatar/089127ffb92a19d3d37815673cca06dc?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url_name":"r7kamura"}}
記事が削除されたときに送信されます。
プロパティ名 | 型 | 説明 |
---|---|---|
action | String | "destroyed" |
model | String | "item" |
item | Item | 削除された記事 |
記事が更新されたときに送信されます。
プロパティ名 | 型 | 説明 |
---|---|---|
action | String | "updated" |
message | String | ユーザーが入力した変更内容の概要 |
model | String | "item" |
item | Item | 更新された記事 |
user | User | 更新したユーザー |
コメントが作成されたときに送信されます。
プロパティ名 | 型 | 説明 |
---|---|---|
action | String | "created" |
model | String | "comment" |
comment | Comment | 作成されたコメント |
item | Item | コメントの紐付いている記事 |
{"action":"created","comment":{"body":"<p>test</p>\n","created_at":"2015-08-06 19:04:06 +0900","id":305242,"raw_body":"test\n","updated_at":"2015-08-06 19:04:06 +0900","url":"https://example.qiita.com/r7kamura/items/a09e2f506c04aca3397a#comment-c47ccda86aca8d03c5d8","user":{"id":4365,"profile_image_url":"https://secure.gravatar.com/avatar/089127ffb92a19d3d37815673cca06dc?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url_name":"r7kamura"},"uuid":"c47ccda86aca8d03c5d8"},"item":{"body":"<p>test</p>\n","coediting":false,"comment_count":1,"created_at_as_seconds":1438855324,"created_at_in_words":"2分","created_at":"2015-08-06 19:02:04 +0900","id":421379,"lgtm_count":0,"raw_body":"test\n","stock_count":0,"stock_users":[],"tags":[{"name":"test","url_name":"test","versions":[]}],"title":"Test","updated_at":"2015-08-06 19:02:04 +0900","updated_at_in_words":"2分","url":"https://example.qiita.com/r7kamura/items/a09e2f506c04aca3397a","user":{"id":4365,"profile_image_url":"https://secure.gravatar.com/avatar/089127ffb92a19d3d37815673cca06dc?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url_name":"r7kamura"},"uuid":"a09e2f506c04aca3397a"},"model":"comment"}
コメントが削除されたときに送信されます。
プロパティ名 | 型 | 説明 |
---|---|---|
action | String | "destroyed" |
model | String | "comment" |
comment | Comment | 削除されたコメント |
item | Item | コメントの紐付いている記事 |
コメントが更新されたときに送信されます。
プロパティ名 | 型 | 説明 |
---|---|---|
action | String | "updated" |
model | String | "comment" |
comment | Comment | 更新されたコメント |
item | Item | コメントの紐付いている記事 |
チームメンバーが追加されたときに送信されます。
プロパティ名 | 型 | 説明 |
---|---|---|
action | String | "added" |
model | String | "member" |
user | User | 追加されたユーザー |
{"action":"added","model":"member","user":{"id":4365,"profile_image_url":"https://secure.gravatar.com/avatar/089127ffb92a19d3d37815673cca06dc?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","url_name":"r7kamura"}}
チームメンバーが離脱したときに送信されます。
プロパティ名 | 型 | 説明 |
---|---|---|
action | String | "removed" |
model | String | "member" |
user | User | 離脱したユーザー |
Webhookの設定画面からテストを行ったときに送信されます。
プロパティ名 | 型 | 説明 |
---|---|---|
action | String | "requested" |
model | String | "ping" |
message | String | "ping" |
{"action":"requested","message":"ping","model":"ping"}
Payloadの項目で利用した型の内容について説明します。
記事やプロジェクトに付けられたコメントを表します。
プロパティ名 | 型 | 説明 |
---|---|---|
body | String | コメント本文のHTML表現 |
created_at | String | コメントの作成日時 |
id | Integer | コメントの整数のID |
raw_body | String | コメント本文 |
updated_at | String | コメントの更新日時 |
url | String | コメントのURL |
user | User | コメントの作成者 |
uuid | String | コメントのID |
Qiita Teamの記事とコメントが付けられたプロジェクトの内容を表します。
プロパティ名 | 型 | 説明 |
---|---|---|
body | String | 記事本文のHTML表現 |
coediting | Boolean | 共同編集かどうか |
comment_count | Integer | コメント数 |
created_at_as_seconds | Integer | 記事作成日時のUNIX時間 |
created_at_in_words | String | 記事作成日時の簡易表記 |
created_at | String | 記事作成日時 |
id | Integer | 記事のID |
lgtm_count | IntegerまたはNull | いいね数 |
raw_body | String | 記事本文 |
stock_count | IntegerまたはNull | ストック数 |
stock_users | Array(User)またはNull | ストックしているユーザ一覧 |
tags | Array(Tag) | タグ一覧 |
title | String | 記事タイトル |
updated_at | String | 更新日時 |
updated_at_in_words | String | 更新日時の簡易表記 |
url | String | 記事のURL |
user | User | 記事の作成者 |
uuid | StringまたはNull | 記事のURLに利用されるID |
記事に付けられるタグを表します。
プロパティ名 | 型 | 説明 |
---|---|---|
name | String | タグの名前 |
url_name | String | タグのURL上での名前 |
versions | Array(String) | タグに付けられたバージョン一覧 |
ユーザーを表します。
プロパティ名 | 型 | 説明 |
---|---|---|
id | Integer | ユーザーの整数のID |
profile_image_url | String | ユーザーのアイコン画像のURL |
url_name | String | ユーザー名 |