Skip to main content

GitHub Marketplace APIのためのwebhookイベント

GitHub Marketplaceアプリケーションは、ユーザのプランに対する変更に関する情報を、Marketplaceの購入イベントwebhookから受け取ります。 Marketplaceの購入イベントは、ユーザが支払いプランの購入、キャンセル、変更をした場合にトリガーされます。

GitHub Marketplace購入webhookのペイロード

Webhook の POST 要求には特別なヘッダーがあります。 詳細については、Webhook の配信ヘッダーを参照してください。 GitHubは、失敗した配信の試行を再送信しません。 GitHubが送信したすべてのwebhookのペイロードを、アプリケーションが確実に受信できるようにしてください。

キャンセル及びダウングレードは、次の支払いサイクルの初日に有効になります。 ダウングレードとキャンセルのイベントは、次の支払いサイクルの開始時に新しいプランが有効になったときに送信されます。 新規の購入とアップグレードのイベントは、すぐに開始されます。 Webhook ペイロードで effective_date を使用して、変更が開始されるタイミングを決定します。

注: スパムのような GitHub Marketplace の購入やその他の悪意のある動作に気付いた場合は、[不正使用を報告] フォームにそのユーザーに関する詳細情報を記入してください。

marketplace_purchase Webhook ペイロードには、次の情報が含まれます。

キーType説明
actionstringwebhookを生成するために行われたアクション。 purchasedcancelledpending_changepending_change_cancelled、または changed を指定できます。 詳しい情報については、以下のwebhookペイロードの例を参照してください。 注: pending_changepending_change_cancelled の各ペイロードには、changed ペイロードの例に示されているのと同じキーが含まれています。
effective_datestringaction が有効になる日付。
senderobjectWebhook をトリガーした action を実行した人。
marketplace_purchaseobjectGitHub Marketplaceの購入情報。

marketplace_purchase オブジェクトには、次のキーがあります。

キーType説明
accountobjectサブスクリプションに関連付けられている organization または user のアカウント。 Organization アカウントには、Organization の管理用メール アドレスである organization_billing_email が含まれます。 個人用アカウントのメール アドレスを検索するには、認証されたユーザー エンドポイントの取得を使用できます。
billing_cyclestringyearly または monthly を指定できます。 account の所有者が無料の GitHub プランを持っていて、無料の GitHub Marketplace プランを購入した場合、billing_cyclenil になります。
unit_countinteger購入したユーザ数。
on_free_trialbooleantrue が無料試用版の場合は account
free_trial_ends_onstring無料トライアルが期限切れになる日付。
next_billing_datestring次の支払いサイクルが始まる日付。 account の所有者が無料の GitHub.com プランを持っていて、無料の GitHub Marketplace プランを購入した場合、next_billing_datenil になります。
planobjectuser または organization によって購入されたプラン。

plan オブジェクトには、次のキーがあります。

キーType説明
idintegerこのプランの一意の識別子。
namestringプラン名。
descriptionstringプランの説明。
monthly_price_in_centsintegerこのプランのセント (米国の通貨) 単位の月額。 たとえば、月額10米ドルのリストは1000セントです。
yearly_price_in_centsintegerこのプランのセント (米国の通貨) 単位の年額。 たとえば、月額 100 米ドルのリストは 120000 セントになりす。
price_modelstringこのリストの価格モデル。 flat-rateper-unitfree のいずれかを指定できます。
has_free_trialbooleanこのリストが無料試用版を提供している場合は true
unit_namestringユニットの名前。 価格モデルが per-unit でない場合、これは nil になります。
bulletarray of strings価格プランに設定されている箇条書きの名前。

purchased イベントの Webhook ペイロードの例

この例では、purchased イベント ペイロードを提供します。

{
  "action": "purchased",
  "effective_date": "2017-10-25T00:00:00+00:00",
  "sender": {
    "login": "username",
    "id": 3877742,
    "avatar_url": "https://avatars2.githubusercontent.com/u/3877742?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/username",
    "html_url": "https://github.com/username",
    "followers_url": "https://api.github.com/users/username/followers",
    "following_url": "https://api.github.com/users/username/following{/other_user}",
    "gists_url": "https://api.github.com/users/username/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/username/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/username/subscriptions",
    "organizations_url": "https://api.github.com/users/username/orgs",
    "repos_url": "https://api.github.com/users/username/repos",
    "events_url": "https://api.github.com/users/username/events{/privacy}",
    "received_events_url": "https://api.github.com/users/username/received_events",
    "type": "User",
    "site_admin": true,
    "email": "username@email.com"
  },
  "marketplace_purchase": {
    "account": {
      "type": "Organization",
      "id": 18404719,
      "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=",
      "login": "username",
      "organization_billing_email": "username@email.com"
    },
    "billing_cycle": "monthly",
    "unit_count": 1,
    "on_free_trial": false,
    "free_trial_ends_on": null,
    "next_billing_date": "2017-11-05T00:00:00+00:00",
    "plan": {
      "id": 435,
      "name": "Basic Plan",
      "description": "Basic Plan",
      "monthly_price_in_cents": 1000,
      "yearly_price_in_cents": 10000,
      "price_model": "per-unit",
      "has_free_trial": true,
      "unit_name": "seat",
      "bullets": [
        "Is Basic",
        "Because Basic "
      ]
    }
  }
}

changed イベントの Webhook ペイロードの例

プランの変更には、アップグレードとダウンロードがあります。 この例は、changedpending_changepending_change_cancelled の各イベント ペイロードを表しています。 このアクションは、これら3つのイベントのうちどれが発生したかを示します。

{
  "action": "changed",
  "effective_date": "2017-10-25T00:00:00+00:00",
  "sender": {
    "login": "username",
    "id": 3877742,
    "avatar_url": "https://avatars2.githubusercontent.com/u/3877742?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/username",
    "html_url": "https://github.com/username",
    "followers_url": "https://api.github.com/users/username/followers",
    "following_url": "https://api.github.com/users/username/following{/other_user}",
    "gists_url": "https://api.github.com/users/username/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/username/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/username/subscriptions",
    "organizations_url": "https://api.github.com/users/username/orgs",
    "repos_url": "https://api.github.com/users/username/repos",
    "events_url": "https://api.github.com/users/username/events{/privacy}",
    "received_events_url": "https://api.github.com/users/username/received_events",
    "type": "User",
    "site_admin": true,
    "email": "username@email.com"
  },
  "marketplace_purchase": {
    "account": {
      "type": "Organization",
      "id": 18404719,
      "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=",
      "login": "username",
      "organization_billing_email": "username@email.com"
    },
    "billing_cycle": "monthly",
    "unit_count": 10,
    "on_free_trial": false,
    "free_trial_ends_on": null,
    "next_billing_date": "2017-11-05T00:00:00+00:00",
    "plan": {
      "id": 435,
      "name": "Basic Plan",
      "description": "Basic Plan",
      "monthly_price_in_cents": 1000,
      "yearly_price_in_cents": 10000,
      "price_model": "per-unit",
      "has_free_trial": true,
      "unit_name": "seat",
      "bullets": [
        "Is Basic",
        "Because Basic "
      ]
    }
  },
  "previous_marketplace_purchase": {
    "account": {
      "type": "Organization",
      "id": 18404719,
      "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=",
      "login": "username",
      "organization_billing_email": "username@email.com"
    },
    "billing_cycle": "monthly",
    "on_free_trial": false,
    "free_trial_ends_on": null,
    "unit_count": 1,
    "plan": {
      "id": 435,
      "name": "Basic Plan",
      "description": "Basic Plan",
      "monthly_price_in_cents": 1000,
      "yearly_price_in_cents": 10000,
      "price_model": "per-unit",
      "has_free_trial": true,
      "unit_name": "seat",
      "bullets": [
        "Is Basic",
        "Because Basic "
      ]
    }
  }
}

cancelled イベントの Webhook ペイロードの例

{
  "action": "cancelled",
  "effective_date": "2017-10-25T00:00:00+00:00",
  "sender": {
    "login": "username",
    "id": 3877742,
    "avatar_url": "https://avatars2.githubusercontent.com/u/3877742?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/username",
    "html_url": "https://github.com/username",
    "followers_url": "https://api.github.com/users/username/followers",
    "following_url": "https://api.github.com/users/username/following{/other_user}",
    "gists_url": "https://api.github.com/users/username/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/username/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/username/subscriptions",
    "organizations_url": "https://api.github.com/users/username/orgs",
    "repos_url": "https://api.github.com/users/username/repos",
    "events_url": "https://api.github.com/users/username/events{/privacy}",
    "received_events_url": "https://api.github.com/users/username/received_events",
    "type": "User",
    "site_admin": true,
    "email": "username@email.com"
  },
  "marketplace_purchase": {
    "account": {
      "type": "Organization",
      "id": 28536653,
      "node_id": "MDEyOk9yZ2FuaXphdGlvbjE=",
      "login": "organizationUsername",
      "organization_billing_email": "organizationusername@gmail.com"
    },
    "billing_cycle": "monthly",
    "unit_count": 0,
    "on_free_trial": false,
    "free_trial_ends_on": null,
    "next_billing_date": "2017-11-08T00:00:00+00:00",
    "plan": {
      "id": 686,
      "name": "Premium Plan",
      "description": "Premium Plan",
      "monthly_price_in_cents": 10000,
      "yearly_price_in_cents": 100000,
      "price_model": "flat-rate",
      "has_free_trial": true,
      "unit_name": null,
      "bullets": [
        "Is Expensive",
        "And Flat Rate"
      ]
    }
  }
}