WebhookのGenericについて

Webhook について

Webhookでは、サービス上で特定のイベント(コメント投稿とか削除など)が発生した際、外部サービスにHTTPで通知を送る設定を可能にします。通知を送信するトリガーのイベントが実行されると、Webhookで設定済みのURLにHTTP リクエストにてパラメータがPOSTで送信されます。
こちらのページでは、トリガーとなるイベントの種類とパラメータの詳細についてご説明いたします。

Webhook Generic

Trigger

以下のトリガーでパラメータが送られます。

Trigger name
When...
Description
the latest version is delivered 新しいアプリケーションを配布したとき
a feedback is sent フィードバックを投稿したとき
a feedback is edited フィードバックの内容を更新したとき
a feedback is deleted フィードバックを削除したとき
the status of a feedback is updated フィードバックのステータスを更新したとき
a comment is sent コメントを投稿したとき
a comment is edited
コメントの内容を更新したとき
a comment is deleted コメントを削除したとき

Content Type

Content Type が JSON だった場合、パラメータは JSON String でリクエストを送ります。
Form だった場合、 payload={JSON String}のように Payload が付いた状態で送られます。

Secretによる検証

Secretを設定していた場合、HTTP Header にHTTP_X_BALTO_SIGNATUREというキーで、Secret の値を用いて HMAC + sha1 でパラメータをハッシュ化した文字列が入ります。
Content Type が Form だった場合は  payload=除いた部分のみがハッシュ化された値が入ります。
この値を使って Webhook を受け取る側で値の検証を行ってください。

Ruby on Railsのサンプルコード(xxx_controller.rb)

require "openssl"

class XxxController < ApplicationController
  def webhook
    secret = "my_secret_str"

    request_header_signature = request.headers[:HTTP_X_BALTO_SIGNATURE]
    signature = OpenSSL::HMAC.hexdigest("sha1", secret, request.body.read)

    if signature != request_header_signature
      puts "incorrect signature..."
    else
      puts "correct signature!!"
    end
  end
end

Parameters

The latest version is delivered

  • file_byte_size はプロジェクトのプラットフォームが Mobile web のときはnullになります
  • has_sdkはプロジェクトのプラットフォームが Mobile web のときは必ずfalseになります
{
  "action": "uploaded",
  "build": {
    "id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    "icon_url": "https://xxx.xxx.xxx/AppIcon.png",
    "version_name": "3.1.1",
    "numbering": 2,
    "file_byte_size": 7005208,
    "release_note": "Release note",
    "has_sdk": true,
    "uploader": {
      "id": 12,
      "name": "Balto User Name",
      "avatar_url": "https://xxx.xxx.xxx/Avatar.png"
    }
  },
  "project": {
    "id": 32,
    "name": "Balto Project Name",
    "platform": "Mobile Web or iOS or Android"
  }
}
TOP

Feedback is sent

  • movie_url はフィードバックがスクリーンショットのみだった場合は null になります
  • gif_url はフィードバックがスクリーンショットのみだった場合は null になります。
  • また2017/9/22以前に投稿したfeedbackに関しては必ず null が入ります。
  • cpu_usage memory_usage disk_usage battery はフィードバックが動画だった場合、全て null になります
  • file_byte_size はプロジェクトのプラットフォームが Mobile web のときは null になります
  • has_sdk はプロジェクトのプラットフォームが Mobile web のときは必ず false になります
{
  "action": "created",
  "feedback": {
    "id": 12,
    "body": "Feedback body",
    "image_url": "https://xxx.xxx.xxx/FeedbackImage.png",
    "thumbnail_url": "https://xxx.xxx.xxx/FeedbackThumbnailImage.png",
    "device_os_version": "10.3.3",
    "device_model": "iPhone7",
    "device_size": "5.5 Inches",
    "device_region": "JP",
    "inserted_at": "2017-07-31T00:00:00.000000Z",
    "updated_at": "2017-07-31T00:00:00.000000Z",
    "movie_url": "https://xxx.xxx.xxx/Movie.mp4",
    "gif_url": "https://xxx.xxx.xxx/Feedback.gif",
    "status": "ToDo or In Progress or Done",
    "cpu_usage": "4.4",
    "memory_usage": "53MB",
    "disk_usage": "83.02/119.20(GB)",
    "battery": "74.0 Unplugged",
    "category": "Feedback or Design or Idea or Bug or Other",
    "user": {
      "id": 12,
      "name": "Balto User Name",
      "avatar_url": "https://xxx.xxx.xxx/Avatar.png"
    }
  },
  "build": {
    "id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    "icon_url": "https://xxx.xxx.xxx/AppIcon.png",
    "version_name": "3.1.1",
    "numbering": 2,
    "file_byte_size": 7005208,
    "release_note": "Release note",
    "has_sdk": true,
    "uploader": {
      "id": 12,
      "name": "Balto User Name",
      "avatar_url": "https://xxx.xxx.xxx/Avatar.png"
    }
  },
  "project": {
    "id": 32,
    "name": "Balto Project Name",
    "platform": "Mobile Web or iOS or Android"
  }
}
TOP

Feedback is edited

  • movie_url はフィードバックがスクリーンショットのみだった場合は null になります
  • gif_url はフィードバックがスクリーンショットのみだった場合は null になります。
  • また2017/9/22以前に投稿したfeedbackに関しては必ず null が入ります。
  • cpu_usage memory_usage disk_usage battery はフィードバックが動画だった場合、全て null になります
  • file_byte_size はプロジェクトのプラットフォームが Mobile web のときは null になります
  • has_sdk はプロジェクトのプラットフォームが Mobile web のときは必ず false になります
{
  "action": "changed",
  "feedback": {
    "id": 12,
    "body": "Feedback body",
    "image_url": "https://xxx.xxx.xxx/FeedbackImage.png",
    "thumbnail_url": "https://xxx.xxx.xxx/FeedbackThumbnailImage.png",
    "device_os_version": "10.3.3",
    "device_model": "iPhone7",
    "device_size": "5.5 Inches",
    "device_region": "JP",
    "inserted_at": "2017-07-31T00:00:00.000000Z",
    "updated_at": "2017-07-31T00:00:00.000000Z",
    "movie_url": "https://xxx.xxx.xxx/Movie.mp4",
    "gif_url": "https://xxx.xxx.xxx/Feedback.gif",
    "status": "ToDo or In Progress or Done",
    "cpu_usage": "4.4",
    "memory_usage": "53MB",
    "disk_usage": "83.02/119.20(GB)",
    "battery": "74.0 Unplugged",
    "category": "Feedback or Design or Idea or Bug or Other",
    "user": {
      "id": 12,
      "name": "Balto User Name",
      "avatar_url": "https://xxx.xxx.xxx/Avatar.png"
    }
  },
  "build": {
    "id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    "icon_url": "https://xxx.xxx.xxx/AppIcon.png",
    "version_name": "3.1.1",
    "numbering": 2,
    "file_byte_size": 7005208,
    "release_note": "Release note",
    "has_sdk": true,
    "uploader": {
      "id": 12,
      "name": "Balto User Name",
      "avatar_url": "https://xxx.xxx.xxx/Avatar.png"
    }
  },
  "project": {
    "id": 32,
    "name": "Balto Project Name",
    "platform": "Mobile Web or iOS or Android"
  }
}
TOP

Feedback is deleted

  • movie_url はフィードバックがスクリーンショットのみだった場合は null になります
  • gif_url はフィードバックがスクリーンショットのみだった場合は null になります。
  • また2017/9/22以前に投稿したfeedbackに関しては必ず null が入ります。
  • cpu_usage memory_usage disk_usage battery はフィードバックが動画だった場合、全て null になります
  • file_byte_size はプロジェクトのプラットフォームが Mobile web のときは null になります
  • has_sdk はプロジェクトのプラットフォームが Mobile web のときは必ず false になります
{
  "action": "changed",
  "feedback": {
    "id": 12,
    "body": "Feedback body",
    "image_url": "https://xxx.xxx.xxx/FeedbackImage.png",
    "thumbnail_url": "https://xxx.xxx.xxx/FeedbackThumbnailImage.png",
    "device_os_version": "10.3.3",
    "device_model": "iPhone7",
    "device_size": "5.5 Inches",
    "device_region": "JP",
    "inserted_at": "2017-07-31T00:00:00.000000Z",
    "updated_at": "2017-07-31T00:00:00.000000Z",
    "movie_url": "https://xxx.xxx.xxx/Movie.mp4",
    "gif_url": "https://xxx.xxx.xxx/Feedback.gif",
    "status": "ToDo or In Progress or Done",
    "cpu_usage": "4.4",
    "memory_usage": "53MB",
    "disk_usage": "83.02/119.20(GB)",
    "battery": "74.0 Unplugged",
    "category": "Feedback or Design or Idea or Bug or Other",
    "user": {
      "id": 12,
      "name": "Balto User Name",
      "avatar_url": "https://xxx.xxx.xxx/Avatar.png"
    }
  },
  "build": {
    "id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    "icon_url": "https://xxx.xxx.xxx/AppIcon.png",
    "version_name": "3.1.1",
    "numbering": 2,
    "file_byte_size": 7005208,
    "release_note": "Release note",
    "has_sdk": true,
    "uploader": {
      "id": 12,
      "name": "Balto User Name",
      "avatar_url": "https://xxx.xxx.xxx/Avatar.png"
    }
  },
  "project": {
    "id": 32,
    "name": "Balto Project Name",
    "platform": "Mobile Web or iOS or Android"
  }
}
TOP

The status of the feedback is updated

  • movie_url はフィードバックがスクリーンショットのみだった場合は null になります
  • gif_url はフィードバックがスクリーンショットのみだった場合は null になります。
  • また2017/9/22以前に投稿したfeedbackに関しては必ず null が入ります。
  • cpu_usage memory_usage disk_usage battery はフィードバックが動画だった場合、全て null になります
  • file_byte_size はプロジェクトのプラットフォームが Mobile web のときは null になります
  • has_sdk はプロジェクトのプラットフォームが Mobile web のときは必ず false になります
{
  "action": "changed",
  "feedback": {
    "id": 12,
    "body": "Feedback body",
    "image_url": "https://xxx.xxx.xxx/FeedbackImage.png",
    "thumbnail_url": "https://xxx.xxx.xxx/FeedbackThumbnailImage.png",
    "device_os_version": "10.3.3",
    "device_model": "iPhone7",
    "device_size": "5.5 Inches",
    "device_region": "JP",
    "inserted_at": "2017-07-31T00:00:00.000000Z",
    "updated_at": "2017-07-31T00:00:00.000000Z",
    "movie_url": "https://xxx.xxx.xxx/Movie.mp4",
    "gif_url": "https://xxx.xxx.xxx/Feedback.gif",
    "status": "ToDo or In Progress or Done",
    "cpu_usage": "4.4",
    "memory_usage": "53MB",
    "disk_usage": "83.02/119.20(GB)",
    "battery": "74.0 Unplugged",
    "category": "Feedback or Design or Idea or Bug or Other",
    "user": {
      "id": 12,
      "name": "Balto User Name",
      "avatar_url": "https://xxx.xxx.xxx/Avatar.png"
    }
  },
  "build": {
    "id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    "icon_url": "https://xxx.xxx.xxx/AppIcon.png",
    "version_name": "3.1.1",
    "numbering": 2,
    "file_byte_size": 7005208,
    "release_note": "Release note",
    "has_sdk": true,
    "uploader": {
      "id": 12,
      "name": "Balto User Name",
      "avatar_url": "https://xxx.xxx.xxx/Avatar.png"
    }
  },
  "project": {
    "id": 32,
    "name": "Balto Project Name",
    "platform": "Mobile Web or iOS or Android"
  },
  "user": {
    "id": 14,
    "name": "User changed status",
    "avatar_url": "https://xxx.xxx.xxx/Avatar.png"
  }
}
TOP

A comment is sent

  • attachment_url はコメントの内容がテキストだった場合は null になります
  • mime_type はコメントの内容がテキストだった場合は必ず text/plain になり、attachment_url があった場合はファイルに合わせた MIME_TYPE が入ります
  • movie_url はフィードバックがスクリーンショットのみだった場合は null になります
  • gif_url はフィードバックがスクリーンショットのみだった場合は null になります。
  • また2017/9/22以前に投稿したfeedbackに関しては必ず null が入ります。
  • cpu_usage memory_usage disk_usage battery はフィードバックが動画だった場合、全て null になります
  • file_byte_size はプロジェクトのプラットフォームが Mobile web のときは null になります
  • has_sdk はプロジェクトのプラットフォームが Mobile web のときは必ず false になります
{
  "action": "created",
  "comment": {
    "id": 65,
    "comment": "Comment body",
    "attachment_url": "https://xxx.xxx.xxx/Comment.png",
    "mime_type": "image/png"
  },
  "feedback": {
    "id": 12,
    "body": "Feedback body",
    "image_url": "https://xxx.xxx.xxx/FeedbackImage.png",
    "thumbnail_url": "https://xxx.xxx.xxx/FeedbackThumbnailImage.png",
    "device_os_version": "10.3.3",
    "device_model": "iPhone7",
    "device_size": "5.5 Inches",
    "device_region": "JP",
    "inserted_at": "2017-07-31T00:00:00.000000Z",
    "updated_at": "2017-07-31T00:00:00.000000Z",
    "movie_url": "https://xxx.xxx.xxx/Movie.mp4",
    "gif_url": "https://xxx.xxx.xxx/Feedback.gif",
    "status": "ToDo or In Progress or Done",
    "cpu_usage": "4.4",
    "memory_usage": "53MB",
    "disk_usage": "83.02/119.20(GB)",
    "battery": "74.0 Unplugged",
    "category": "Feedback or Design or Idea or Bug or Other",
    "user": {
      "id": 12,
      "name": "Balto User Name",
      "avatar_url": "https://xxx.xxx.xxx/Avatar.png"
    }
  },
  "build": {
    "id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    "icon_url": "https://xxx.xxx.xxx/AppIcon.png",
    "version_name": "3.1.1",
    "numbering": 2,
    "file_byte_size": 7005208,
    "release_note": "Release note",
    "has_sdk": true,
    "uploader": {
      "id": 12,
      "name": "Balto User Name",
      "avatar_url": "https://xxx.xxx.xxx/Avatar.png"
    }
  },
  "project": {
    "id": 32,
    "name": "Balto Project Name",
    "platform": "Mobile Web or iOS or Android"
  }
}
TOP

A comment is updated

  • attachment_url はコメントの内容がテキストだった場合は null になります
  • mime_type はコメントの内容がテキストだった場合は必ず text/plain になり、attachment_url があった場合はファイルに合わせた MIME_TYPE が入ります
  • movie_url はフィードバックがスクリーンショットのみだった場合は null になります
  • gif_url はフィードバックがスクリーンショットのみだった場合は null になります。
  • また2017/9/22以前に投稿したfeedbackに関しては必ず null が入ります。
  • cpu_usage memory_usage disk_usage battery はフィードバックが動画だった場合、全て null になります
  • file_byte_size はプロジェクトのプラットフォームが Mobile web のときは null になります
  • has_sdk はプロジェクトのプラットフォームが Mobile web のときは必ず false になります
{
  "action": "changed",
  "comment": {
    "id": 65,
    "comment": "Comment body",
    "attachment_url": "https://xxx.xxx.xxx/Comment.png",
    "mime_type": "image/png"
  },
  "feedback": {
    "id": 12,
    "body": "Feedback body",
    "image_url": "https://xxx.xxx.xxx/FeedbackImage.png",
    "thumbnail_url": "https://xxx.xxx.xxx/FeedbackThumbnailImage.png",
    "device_os_version": "10.3.3",
    "device_model": "iPhone7",
    "device_size": "5.5 Inches",
    "device_region": "JP",
    "inserted_at": "2017-07-31T00:00:00.000000Z",
    "updated_at": "2017-07-31T00:00:00.000000Z",
    "movie_url": "https://xxx.xxx.xxx/Movie.mp4",
    "gif_url": "https://xxx.xxx.xxx/Feedback.gif",
    "status": "ToDo or In Progress or Done",
    "cpu_usage": "4.4",
    "memory_usage": "53MB",
    "disk_usage": "83.02/119.20(GB)",
    "battery": "74.0 Unplugged",
    "category": "Feedback or Design or Idea or Bug or Other",
    "user": {
      "id": 12,
      "name": "Balto User Name",
      "avatar_url": "https://xxx.xxx.xxx/Avatar.png"
    }
  },
  "build": {
    "id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    "icon_url": "https://xxx.xxx.xxx/AppIcon.png",
    "version_name": "3.1.1",
    "numbering": 2,
    "file_byte_size": 7005208,
    "release_note": "Release note",
    "has_sdk": true,
    "uploader": {
      "id": 12,
      "name": "Balto User Name",
      "avatar_url": "https://xxx.xxx.xxx/Avatar.png"
    }
  },
  "project": {
    "id": 32,
    "name": "Balto Project Name",
    "platform": "Mobile Web or iOS or Android"
  }
}
TOP

A comment is deleted

  • attachment_url はコメントの内容がテキストだった場合は null になります
  • mime_type はコメントの内容がテキストだった場合は必ず text/plain になり、attachment_url があった場合はファイルに合わせた MIME_TYPE が入ります
  • movie_url はフィードバックがスクリーンショットのみだった場合は null になります
  • gif_url はフィードバックがスクリーンショットのみだった場合は null になります。
  • また2017/9/22以前に投稿したfeedbackに関しては必ず null が入ります。
  • cpu_usage memory_usage disk_usage battery はフィードバックが動画だった場合、全て null になります
  • file_byte_size はプロジェクトのプラットフォームが Mobile web のときは null になります
  • has_sdk はプロジェクトのプラットフォームが Mobile web のときは必ず false になります
{
  "action": "deleted",
  "comment": {
    "id": 65,
    "comment": "Comment body",
    "attachment_url": "https://xxx.xxx.xxx/Comment.png",
    "mime_type": "image/png"
  },
  "feedback": {
    "id": 12,
    "body": "Feedback body",
    "image_url": "https://xxx.xxx.xxx/FeedbackImage.png",
    "thumbnail_url": "https://xxx.xxx.xxx/FeedbackThumbnailImage.png",
    "device_os_version": "10.3.3",
    "device_model": "iPhone7",
    "device_size": "5.5 Inches",
    "device_region": "JP",
    "inserted_at": "2017-07-31T00:00:00.000000Z",
    "updated_at": "2017-07-31T00:00:00.000000Z",
    "movie_url": "https://xxx.xxx.xxx/Movie.mp4",
    "gif_url": "https://xxx.xxx.xxx/Feedback.gif",
    "status": "ToDo or In Progress or Done",
    "cpu_usage": "4.4",
    "memory_usage": "53MB",
    "disk_usage": "83.02/119.20(GB)",
    "battery": "74.0 Unplugged",
    "category": "Feedback or Design or Idea or Bug or Other",
    "user": {
      "id": 12,
      "name": "Balto User Name",
      "avatar_url": "https://xxx.xxx.xxx/Avatar.png"
    }
  },
  "build": {
    "id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    "icon_url": "https://xxx.xxx.xxx/AppIcon.png",
    "version_name": "3.1.1",
    "numbering": 2,
    "file_byte_size": 7005208,
    "release_note": "Release note",
    "has_sdk": true,
    "uploader": {
      "id": 12,
      "name": "Balto User Name",
      "avatar_url": "https://xxx.xxx.xxx/Avatar.png"
    }
  },
  "project": {
    "id": 32,
    "name": "Balto Project Name",
    "platform": "Mobile Web or iOS or Android"
  }
}

英語版の記事はこちらからご覧ください https://balto.helpscoutdocs.com/article/153-generic-webhook

もし解決しない場合 お問い合わせ お問い合わせ