Skip to main content

Automatisation des rapports d’utilisation avec l’API REST

Apprenez à automatiser la création de rapports sur votre utilisation des fonctionnalités payantes à l'aide de l'API REST.

Qui peut utiliser cette fonctionnalité ?

Enterprise owners and billing managers

The enhanced billing platform is available to:

  • All enterprise accounts, and their organizations, created after June 2, 2024
  • Enterprises that participated in the public preview program

Beginning in September 2024, GitHub will migrate remaining enterprises to the new billing platform. Enterprises will receive a notice 30 days before their migration. See the GitHub blog.

Vous pouvez extraire automatiquement des de GitHub pour remplir les systèmes métier que vous utilisez pour surveiller les coûts et l’utilisation à l’aide de l’API REST. Si vous n'avez pas encore utilisé l'API REST GitHub REST API, les articles suivants sont un bon point de départ, consultez Utilisation de l’API REST.

Utilisation de la plateforme de facturation /usage point de terminaison pour récupérer les détails de l’utilisation limitée pour une entreprise

La plateforme de facturation améliorée fournit un seul point de terminaison d’API REST /usage que vous pouvez utiliser pour signaler l’utilisation de tous les produits mesurés. Les données d’utilisation fournies par ce point de terminaison sont disponibles uniquement pour les propriétaires d’entreprise et les gestionnaires de facturation d’entreprise. Vous devez donc vous authentifier auprès de GitHub.

  • Si vous utilisez l’interface CLI GitHub, utilisez la commande gh auth login pour vous authentifier.
  • Sinon, vous devrez créer un personal access token (classic), consultez Créer un personal access token (classic) .

Lorsque vous appelez le point de terminaison /usage , vous devez spécifier l’entreprise pour laquelle vous souhaitez des données et, par défaut, l’utilisation de l’année en cours qui n’appartient pas à un centre de coûts est signalée. Vous pouvez réduire l’étendue des données retournées par le point de terminaison à l’aide de paramètres de requête.

  • Définissez une période spécifique en définissant un ou plusieurs des paramètres suivants : year, month, dayet hour.
  • Définissez un centre de coûts à signaler par identificateur à l’aide du paramètre de requête cost_center_id .

Pour plus d’informations et un exemple d’appel et de réponse, consultez Obtenir le rapport d’utilisation de la facturation pour une entreprise.

Migration à partir des points de terminaison utilisés pour la plateforme de facturation précédente

La plateforme de facturation précédente a fourni trois points de terminaison différents pour les données d’utilisation :

Lorsque vous passez à la plateforme de facturation améliorée, ces points de terminaison ne retournent plus d’informations d’utilisation précises. Vous devez mettre à niveau toute automatisation qui utilise ces points de terminaison pour utiliser le nouveau point de terminaison GET /enterprises/{enterprise}/settings/billing/usage. Les tableaux ci-dessous fournissent une explication détaillée sur l’utilisation de la plateforme de facturation pour récupérer des informations équivalentes.

Modifications apportées à la définition d’appel

Si vous avez utilisé un fine-grained personal access token pour vous authentifier avec les points de terminaison précédents, vous devrez créer un personal access token (classic) pour vous authentifier avec le nouveau point de terminaison.

En outre, vous pouvez utiliser les nouveaux paramètres de requête pour spécifier une période ou un centre de coûts.

Obtention des données de facturation GitHub Actions à partir des nouvelles données de réponse

Exemple de réponse précédente

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

Exemple de nouvelle réponse

{ "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"} ] }

Pour obtenir les mêmes valeurs à partir des nouvelles données de réponse :

Propriété précédenteCalcul à partir d'une nouvelle réponse de l'API
total_minutes_used
  • Filtrer les résultats par "product": "Actions" et "unitType": "minutes"
  • Somme quantity
total_paid_minutes_usedCeci est maintenant représenté sous la forme d’un montant de $ via netAmount.
  • Filtrer les résultats par "product": "Actions" et "unitType": "minutes"
  • Somme netAmount
included_minutesCeci est maintenant représenté sous la forme d’un montant de $ via discountAmount.
  • Filtrer les résultats par "product": "Actions" et "unitType": "minutes"
  • Somme discountAmount
minutes_used_breakdown
  • Filtrer les résultats par "product": "Actions" et "unitType": "minutes"
  • Somme quantity groupée par sku

Obtention des données de facturation GitHub Actions à partir des nouvelles données de réponse

Exemple de réponse précédente

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

Exemple de nouvelle réponse

{ "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" } ] }
Propriété précédenteCalcul à partir d'une nouvelle réponse de l'API
total_gigabytes_bandwidth_used
  • Filtrer les résultats par "product": "Packages" et "unitType": "gigabytes"
  • Somme quantity
total_paid_gigabytes_bandwidth_usedCeci est maintenant représenté sous la forme d’un montant de $ via netAmount.
  • Filtrer les résultats par "product": "Packages" et "unitType": "gigabytes"
  • Somme netAmount
included_gigabytes_bandwidthCeci est maintenant représenté sous la forme d’un montant de $ via discountAmount.
  • Filtrer les résultats par "product": "Packages" et "unitType": "gigabytes"
  • Somme discountAmount

Obtenir la facturation du stockage partagé à partir des nouvelles données de réponse

Exemple de réponse précédente

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

Exemple de nouvelle réponse

{ "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" } ] }
Propriété précédenteCalcul à partir d'une nouvelle réponse de l'API
days_left_in_billing_cycleNon disponible. Cette information peut être déduite en soustrayant le jour du mois en cours du nombre de jours du mois en cours.
estimated_paid_storage_for_monthCeci est maintenant représenté sous la forme d’un montant de $ via netAmount.

Prérequis : transmettez les paramètres de requête month et year .

Pour le stockage des actions
  • Filtrer les résultats par "product": "Actions" et "unitType": "GigabyteHours"
  • Somme netAmount
Pour le stockage des emballages
  • Filtrer les résultats par "product": "Packages" et "unitType": "GigabyteHours"
  • Somme netAmount
estimated_storage_for_monthPrérequis : transmettez les paramètres de requête month et year .

Pour le stockage des actions
  • Filtrer les résultats par "product": "Actions" et "unitType": "GigabyteHours"
  • Somme quantity
Pour le stockage des emballages
  • Filtrer les résultats par "product": "Packages" et "unitType": "GigabyteHours"
  • Somme quantity