Skip to main content

Automatizando relatórios de uso com a API REST

Saiba como automatizar relatórios sobre o uso de recursos pagos usando a API REST.

Quem pode usar esse recurso?

Enterprise owners and billing managers

A plataforma de faturamento aprimorada está disponível para:

  • Todas as contas corporativas e suas organizações criadas após 2 de junho de 2024
  • As empresas que participaram do programa versão prévia pública

A partir de setembro de 2024, a GitHub migrará as empresas restantes para a nova plataforma de cobrança. As empresas receberão um aviso 30 dias antes de sua migração. Veja o blog do GitHub.

Você pode efetuar pull automaticamente de dados do GitHub para preencher os sistemas de negócios que usa para monitorar os custos e o uso com a API REST. Se você nunca usou a API REST do GitHub, os artigos a seguir são um bom ponto de partida; confira Usando a API REST.

Usando o ponto de extremidade /usage da plataforma de cobrança para recuperar detalhes do uso limitado para uma empresa

A plataforma de cobrança aprimorada fornece um só ponto de extremidade /usage da API REST que você pode usar para relatar o uso de todos os produtos medidos. Os dados de uso fornecidos por esse ponto de extremidade estão disponíveis apenas para proprietários corporativos e gerentes de cobrança corporativos, de modo que você precisará se autenticar com o GitHub.

Ao chamar o ponto de extremidade /usage, você precisa especificar a empresa cujos dados deseja e, por padrão, o uso do ano atual que não pertence a um centro de custo é relatado. Você pode reduzir o escopo dos dados retornados pelo ponto de extremidade usando parâmetros de consulta.

  • Defina um período específico definindo um ou mais dos seguintes parâmetros: year, month, day e hour.
  • Defina um centro de custo para relatar por identificador usando o parâmetro de consulta cost_center_id.

Para obter informações mais detalhadas e um exemplo de chamada e resposta, consulte Obter relatório de uso de cobrança para uma empresa.

Migrando dos pontos de extremidade usados para a plataforma de cobrança anterior

A plataforma de cobrança anterior fornecia três pontos de extremidade para dados de uso:

Quando você fizer a transição para a plataforma de cobrança aprimorada, esses pontos de extremidade não retornarão mais informações precisas de uso. Você deve atualizar qualquer automação que use esses pontos de extremidade para usar o novo ponto de extremidade GET /enterprises/{enterprise}/settings/billing/usage. As tabelas abaixo fornecem uma explicação detalhada de como usar a plataforma de cobrança para recuperar informações equivalentes.

Alterações na definição de chamada

Se você usou um fine-grained personal access token para autenticar com os pontos de extremidade anteriores, precisará criar um personal access token (classic) para autenticar com o novo ponto de extremidade.

Além disso, talvez você queira usar os novos parâmetros de consulta para especificar um período ou um centro de custo.

Obtendo dados de cobrança do GitHub Actions com base nos novos dados de resposta

Exemplo da resposta anterior

{"total_minutes_used": 305, "total_paid_minutes_used": 0, "included_minutes": 3000, "minutes_used_breakdown": { "UBUNTU": 205, "MACOS": 10, "WINDOWS": 90 }  }

Exemplo da nova resposta

{ "usageItems": [ { "date": "2023-08-01", "product": "Actions", "sku": "Actions Linux", "quantity": 100, "unitType": "minutes", "pricePerUnit": 0.008, "grossAmount": 0.8, "discountAmount": 0, "netAmount": 0.8, "organizationName": "GitHub", "repositoryName": "github/example"} ] }

Para obter os mesmos valores dos novos dados de resposta:

Propriedade anteriorCalcular com base na nova resposta à API
total_minutes_used
  • Filtre os resultados por "product": "Actions" e "unitType": "minutes"
  • Some quantity
total_paid_minutes_usedAgora, isso é representado como um valor de $ via netAmount.
  • Filtre os resultados por "product": "Actions" e "unitType": "minutes"
  • Some netAmount
included_minutesAgora, isso é representado como um valor de $ via discountAmount.
  • Filtre os resultados por "product": "Actions" e "unitType": "minutes"
  • Some discountAmount
minutes_used_breakdown
  • Filtre os resultados por "product": "Actions" e "unitType": "minutes"
  • Some quantity agrupado por sku

Obtendo dados de cobrança do GitHub Packages com base nos novos dados de resposta

Exemplo da resposta anterior

{ "total_gigabytes_bandwidth_used": 50, "total_paid_gigabytes_bandwidth_used": 40, "included_gigabytes_bandwidth": 10 }

Exemplo da nova resposta

{ "usageItems": [ { "date": "2023-08-01", "product": "Packages", "sku": "Packages data transfer", "quantity": 100, "unitType": "gigabytes", "pricePerUnit": 0.008, "grossAmount": 0.8, "discountAmount": 0, "netAmount": 0.8, "organizationName": "GitHub", "repositoryName": "github/example" } ] }
Propriedade anteriorCalcular com base na nova resposta à API
total_gigabytes_bandwidth_used
  • Filtre os resultados por "product": "Packages" e "unitType": "gigabytes"
  • Some quantity
total_paid_gigabytes_bandwidth_usedAgora, isso é representado como um valor de $ via netAmount.
  • Filtre os resultados por "product": "Packages" e "unitType": "gigabytes"
  • Some netAmount
included_gigabytes_bandwidthAgora, isso é representado como um valor de $ via discountAmount.
  • Filtre os resultados por "product": "Packages" e "unitType": "gigabytes"
  • Some discountAmount

Obtendo a cobrança do armazenamento compartilhado com base nos novos dados de resposta

Exemplo da resposta anterior

{ "days_left_in_billing_cycle": 20, "estimated_paid_storage_for_month": 15, "estimated_storage_for_month": 40 }

Exemplo da nova resposta

{ "usageItems": [ { "date": "2023-08-01", "product": "Packages", "sku": "Packages storage", "quantity": 100, "unitType": "GigabyteHours", "pricePerUnit": 0.008, "grossAmount": 0.8, "discountAmount": 0, "netAmount": 0.8, "organizationName": "GitHub", "repositoryName": "github/example" } ] }
Propriedade anteriorCalcular com base na nova resposta à API
days_left_in_billing_cycleNão disponível. Essas informações podem ser inferidas subtraindo o dia atual do mês do número de dias no mês atual.
estimated_paid_storage_for_monthAgora, isso é representado como um valor de $ via netAmount.

Pré-requisito: passe os parâmetros de consulta month e year.

para armazenamento do Actions
  • Filtre os resultados por "product": "Actions" e "unitType": "GigabyteHours"
  • Some netAmount
para armazenamento do Packages
  • Filtre os resultados por "product": "Packages" e "unitType": "GigabyteHours"
  • Some netAmount
estimated_storage_for_monthPré-requisito: passe os parâmetros de consulta month e year.

para armazenamento do Actions
  • Filtre os resultados por "product": "Actions" e "unitType": "GigabyteHours"
  • Some quantity
para armazenamento do Packages
  • Filtre os resultados por "product": "Packages" e "unitType": "GigabyteHours"
  • Some quantity