Skip to main content

REST API を使用した使用状況レポート作成の自動化

REST API を使用して有料機能の使用に関するレポート作成を自動化する方法について説明します。

この機能を使用できるユーザーについて

Enterprise owners and billing managers

以下は拡張課金プラットフォームを利用できます。

  • 2024 年 6 月 2 日より後に作成されたすべての Enterprise アカウントとその organization
  • パブリック プレビュー プログラムに参加した Enterprise

2024 年 9 月以降、GitHub は、残りの Enterprise を新しい請求プラットフォームに移行します。 Enterprise は、移行の 30 日前に通知を受け取ります。 「GitHub ブログ」を参照してください。

GitHub からデータを自動的にプルし、REST API を使用してコストと使用状況を監視するために使用するビジネス システムを設定できます。 これまで GitHub REST API を使用したことがない場合は、出発点としてこちらの記事「REST API の使用」を参照することをお勧めします。

課金プラットフォーム /usage エンドポイントを使用して Enterprise の従量課金制の使用状況の詳細を取得する

拡張課金プラットフォームには、すべての従量課金制製品の使用状況を報告するために使用できる 1 つの REST API /usage エンドポイントが用意されています。 このエンドポイントによって提供される使用状況データは、Enterprise 所有者と Enterprise 支払いマネージャーのみが使用できるため、GitHub で認証する必要があります。

  • GitHub CLI を使用する場合は、gh auth login コマンドを使用して認証します。
  • それ以外の場合は、personal access token (classic) を作成する必要があります。「personal access token (classic) の作成」を参照してください。

/usage エンドポイントを呼び出すときは、データを必要とする Enterprise を指定する必要があります。既定では、コスト センターに属さない今年の使用量が報告されます。 クエリ パラメーターを使用して、エンドポイントから返されるデータの範囲を絞り込むことができます。

  • yearmonthdayhour のパラメーターの 1 つ以上を設定して、特定の期間を定義します。
  • cost_center_id クエリ パラメーターを使用して、識別子を指定することで、報告するコスト センターを定義します。

詳細情報、呼び出しと応答の例については、Enterprise の課金使用状況レポートの取得に関する記事を参照してください。

以前の課金プラットフォームに使用していたエンドポイントからの移行

以前の課金プラットフォームでは、使用状況データに対して 3 種類のエンドポイントが用意されていました。

拡張課金プラットフォームに移行すると、これらのエンドポイントから正確な使用状況情報が返されなくなります。 これらのエンドポイントを使う自動化がある場合は、新しいエンドポイント GET/enterprises/{enterprise}/settings/billing/usage を使うようにアップグレードする必要があります。 以下の表は、課金プラットフォームを使用して同等の情報を取得する方法の詳細な説明です。

呼び出し定義の変更

以前のエンドポイントで認証するために fine-grained personal access token を使用した場合は、新しいエンドポイントで認証するために personal access token (classic) を作成する必要があります。

さらに、新しいクエリ パラメーターを使用して、期間またはコスト センターを指定することもできます。

新しい応答データから GitHub Actions の課金情報データを取得する

以前の応答の例

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

新しい応答の例

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

新しい応答データから同じ値を取得するには:

以前のプロパティ新しい API 応答から計算する
total_minutes_used
  • "product": "Actions""unitType": "minutes" で結果をフィルター処理する
  • quantity を合計する
total_paid_minutes_usedこれは、netAmount を介して $ 金額と表されるようになりました。
  • "product": "Actions""unitType": "minutes" で結果をフィルター処理する
  • netAmount を合計する
included_minutesこれは、discountAmount を介して $ 金額と表されるようになりました。
  • "product": "Actions""unitType": "minutes" で結果をフィルター処理する
  • discountAmount を合計する
minutes_used_breakdown
  • "product": "Actions""unitType": "minutes" で結果をフィルター処理する
  • quantitysku でグループ化した合計

新しい応答データから GitHub パッケージの課金情報データを取得する

以前の応答の例

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

新しい応答の例

{ "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" } ] }
以前のプロパティ新しい API 応答から計算する
total_gigabytes_bandwidth_used
  • "product": "Packages""unitType": "gigabytes" で結果をフィルター処理する
  • quantity を合計する
total_paid_gigabytes_bandwidth_usedこれは、netAmount を介して $ 金額と表されるようになりました。
  • "product": "Packages""unitType": "gigabytes" で結果をフィルター処理する
  • netAmount を合計する
included_gigabytes_bandwidthこれは、discountAmount を介して $ 金額と表されるようになりました。
  • "product": "Packages""unitType": "gigabytes" で結果をフィルター処理する
  • discountAmount を合計する

新しい応答データから共有ストレージの課金情報を取得する

以前の応答の例

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

新しい応答の例

{ "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" } ] }
以前のプロパティ新しい API 応答から計算する
days_left_in_billing_cycle使用できません。 この情報を推測するには、現在の月の日数からその月の現在の日付を減算します。
estimated_paid_storage_for_monthこれは、netAmount を介して $ 金額と表されるようになりました。

前提条件: monthyear のクエリ パラメーターを渡します。

アクション ストレージの場合
  • "product": "Actions""unitType": "GigabyteHours" で結果をフィルター処理する
  • netAmount を合計する
パッケージ ストレージの場合
  • "product": "Packages""unitType": "GigabyteHours" で結果をフィルター処理する
  • netAmount を合計する
estimated_storage_for_month前提条件: monthyear のクエリ パラメーターを渡します。

アクション ストレージの場合
  • "product": "Actions""unitType": "GigabyteHours" で結果をフィルター処理する
  • quantity を合計する
パッケージ ストレージの場合
  • "product": "Packages""unitType": "GigabyteHours" で結果をフィルター処理する
  • quantity を合計する