Carga do webhook de compra no GitHub Marketplace
As solicitações de POST
têm cabeçalhos especiais. Consulte "Cabeçalhos de entrega de Webhook" para obter mais informações. O GitHub não reenvia tentativas falhas de entrega. Certifique-se de que seu aplicativo possa receber todas as cargas do webhook enviadas pelo GitHub.
Os cancelamentos e downgrades entram em vigor no primeiro dia do próximo ciclo de cobrança. Os eventos para downgrades e cancelamentos são enviados quando o novo plano entra em vigor no início do próximo ciclo de cobrança. Os eventos referentes às novas compras e atualizações entram em vigor imediatamente. Use effective_date
na carga do webhook para determinar quando uma alteração terá início.
Nota: Se você notar compras de spammy GitHub Marketplace ou outro comportamento malicioso, preencha o formulário relatar abuso com mais informações sobre o usuário.
Cada carga útil do webhook de marketplace_purchase
terá as seguintes informações:
Tecla | Tipo | Descrição |
---|---|---|
Ação | string | A ação realizada para gerar o webhook. Pode ser comprado , cancelado , pending_change , pending_change_cancelled , ou alterado . Para obter mais informações, consulte o exemplo de cargas de webhook abaixo. Observação: As cargas pending_change e pending_change_cancelled contêm as mesmas chaves mostradas no exemplo na carga alterado da carga. |
effective_date | string | A data da ação entra em vigor. |
remetente | objeto | A pessoa que realizou a ação que acionou o webhook. |
marketplace_purchase | objeto | Informações de compra do GitHub Marketplace. |
O objeto marketplace_purchase
tem as seguintes chaves:
Tecla | Tipo | Descrição |
---|---|---|
conta | objeto | A conta da organização ou do usuário associada à assinatura. As contas da organização incluirão organization_billing_email , que é o endereço de e-mail administrativo da organização. Para encontrar endereços de e-mail para contas pessoais, você pode usar o ponto de extremidade Obter o usuário autenticado. |
billing_cycle | string | Pode ser anual ou mensal . Quando a o proprietário da conta tem um plano grátis do GitHub e comprou um plano grátis do GitHub Marketplace, o billing_cycle será nulo . |
unit_count | inteiro | Número de unidades compradas. |
on_free_trial | boolean | verdadeiro quando a conta está em um teste grátis. |
free_trial_ends_on | string | A data em que o teste grátis expirará. |
next_billing_date | string | A data em que começará o próximo ciclo de faturamento. Quando o proprietário da conta tem um plano grátis do GitHub.com e comprou um plano grátis do GitHub Marketplace, o next_billing_date será nulo . |
plano | objeto | O plano comprado pelo usuário `ou organização`. |
O objeto plano
tem as chaves a seguir:
Tecla | Tipo | Descrição |
---|---|---|
id | inteiro | O identificador exclusivo para este plano. |
name | string | O nome do plano. |
descrição | string | Descrição deste plano. |
monthly_price_in_cents | inteiro | O preço mensal deste plano em centavos (moeda americana). Por exemplo, uma listagem que custa 10 dólares por mês será 1000 centavos. |
yearly_price_in_cents | inteiro | O preço anual deste plano em centavos (moeda americana). Por exemplo, uma listagem que custa 100 dólares por mês será 120000 centavos. |
price_model | string | O modelo de preço para esta listagem. Pode ser uma das tarifas fixas , por unidade , ou grátis . |
has_free_trial | boolean | verdadeiro quando esta listagem oferece um teste grátis. |
unit_name | string | O nome da unidade. Se o modelo de preços não é por unidade , será nulo . |
marcador | array de strigns | Os nomes dos marcadores estabelecidos no plano de preços. |
Exemplo de carga de webhook para um evento comprado
Este exemplo fornece a carga do evento comprado
.
{
"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 "
]
}
}
}
Exemplo de carga de webhook para um evento alterado
As alterações em um plano incluem atualizações e downgrades. Este exemplo representa as cargas de eventos alterados
,pending_change
e pending_change_cancelled
. A ação identifica qual destes três acontecimentos ocorreu.
{
"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 "
]
}
}
}
Exemplo de carga de webhook para um evento cancelado
{
"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"
]
}
}
}