Skip to main content

使用 REST API 自动报告使用情况

了解如何使用 REST API 自动报告付费功能使用情况。

谁可以使用此功能?

Enterprise owners and billing managers

增强型计费平台适用于:

  • 2024 年 6 月 2 日之后创建的所有企业帐户及其组织
  • 参与 公共预览版 计划的企业

从 2024 年 9 月开始,GitHub 会将剩余企业迁移到新的计费平台。 企业会在迁移前 30 天收到通知。 请参阅 GitHub 博客

你可以使用 REST API 从 GitHub 自动拉取数据,以填充用于监视成本和使用情况的业务系统。 如果你之前未曾使用过 GitHub REST API,以下文章是不错的切入点,请参阅“使用 REST API”。

使用计费平台 /usage 终结点来检索企业的计量使用详细信息

增强型计费平台提供了一个单一的 REST API /usage 终结点,你可以使用它来报告所有计量产品的使用情况。 此终结点提供的使用情况数据仅供企业所有者和企业计费管理员使用,因此你需要对 GitHub 进行身份验证。

  • 如果使用 GitHub CLI,请使用 gh auth login 命令进行身份验证。
  • 否则,你将需要创建 personal access token (classic),请参阅“创建 personal access token (classic)”。

当你调用 /usage 终结点时,必须指定你想要获取其数据的企业,并且默认情况下,会报告当前年度不属于成本中心的使用情况。 你可以使用查询参数来缩小终结点返回的数据范围。

  • 通过设置以下一个或多个参数来定义一个特定的时间段:yearmonthdayhour
  • 使用 cost_center_id 查询参数定义按标识符报告的成本中心。

如需了解更多详细信息以及示例调用和响应,请参阅获取企业的计费使用情况报告

从用于之前计费平台的终结点进行迁移

之前的计费平台为使用数据提供了三个不同的终结点:

当你过渡到增强型计费平台时,这些终结点将不再返回准确的使用情况信息。 你应该对任何使用这些终结点的自动化操作进行升级,以使用新的终结点 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" 筛选结果
  • sku 分组的 quantity 总和

从新的响应数据获取 GitHub Packages 计费数据

上一个响应的示例

{ "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 查询参数。

对于 Actions 存储
  • "product": "Actions""unitType": "GigabyteHours" 筛选结果
  • netAmount 求和
对于 Packages 存储
  • "product": "Packages""unitType": "GigabyteHours" 筛选结果
  • netAmount 求和
estimated_storage_for_month先决条件:传递 monthyear 查询参数。

对于 Actions 存储
  • "product": "Actions""unitType": "GigabyteHours" 筛选结果
  • quantity 求和
对于 Packages 存储
  • "product": "Packages""unitType": "GigabyteHours" 筛选结果
  • quantity 求和