新商业每日评级使用情况 v2 API (beta)

适用于:合作伙伴中心 | 由世纪互联运营的合作伙伴中心 | Microsoft Cloud for US Government 合作伙伴中心

使用这些 API 以异步方式获取每日计费和未计费的计费使用情况数据。

注意

此 API 即将弃用。 为了确保无缝操作,我们建议迁移到 GA 版本。 下面是提前计划所需的详细信息:

  • 目标:从 2025 年 1 月 21 日之前检索计费周期的每日分级使用情况行项。

  • 操作:使用此 API,但尽快迁移到 v2 GA。

  • 目标:从 2025 年 9 月 21 日起检索计费周期的每日分级使用情况行项。

  • 操作:仅使用 API v2 GA。

  • 目标:在 2025 年 1 月 21 日之前检索当前和以前的计费周期的每日分级使用情况行项。

  • 操作:使用此 API,但尽快迁移到 v2 GA。

  • 目标:从 2025 年 1 月 21 日起检索当前和以前的计费周期的每日分级使用情况行项。

  • 操作:仅使用 API v2 GA。

若要无缝过渡到新 API,请遵循以下链接:计费和未计费的每日分级使用情况对帐 API v2 (GA)。

感谢你的注意,我们期待着你继续成功使用我们的计费 API。

注意

可以通过 API 或合作伙伴中心门户访问 未计费 的每日分级使用情况行项。 为了确保准确的数据,最多允许 24 小时的可用性。 根据你的位置以及计量报告使用情况的时间,可能会有进一步的延迟。

我们首先确定每日按计费使用情况数据的时间交付的优先级。 有时,在前一个月的计费使用情况数据可用之前,可能不会看到最近 未计费 的每日使用量数据。 收到计费使用情况数据后,可以从本月初检索所有更新的未计费使用情况数据。

由于我们努力提供最准确、最及时的信息,你对你的理解和耐心是值得赞赏的。

重要

每日分级使用情况数据不包括这些产品的费用:

  • Azure 预留
  • Azure 节省计划
  • Office
  • Dynamics
  • Microsoft Power Apps
  • 永久性软件
  • 软件订阅
  • 非Microsoft或市场 SaaS 产品

API 概述

异步 API 是一种新方法,用于快速访问可管理区块中的计费和对帐数据。 它无需在数小时内保持开放连接,并循环访问数百万个事务。

我们使用 辅助密钥异步请求-回复 模式来优化发票和对帐 API,以异步方式交付结果。 API 响应提供一个令牌,用于访问具有所有属性或子集的对帐数据。

可以使用三个新步骤(API 终结点)异步下载使用情况数据。 若要了解详细信息,请阅读以下部分:

使用行项终结点

使用此 API 访问计费或未计费的消耗行项。 它返回一个 202 HTTP 状态和一个带有 URL 的位置标头,你必须定期轮询该 URL,直到收到带有清单 URL 的成功状态。

操作状态终结点

在收到成功状态之前,请定期轮询此 API。 如果请求的数据不可用,API 响应将包含一个重试后标头,指示在发送另一个请求之前应等待多长时间。

清单终结点

此终结点提供一个存储文件夹,可从中下载实际计费数据。 响应拆分或分区文件以优化吞吐量和 I/O 并行度。

序列图

此图描述了下载对帐数据所需的步骤。

此图显示了下载对帐数据所需的步骤。

用户操作序列

按照以下步骤检索对帐数据。

步骤 1:提交请求

将 POST 请求提交到 API 终结点。

获取未计费的使用情况行项

获取当前或上一个日历月的未计费使用行项。

API 请求

POST https://ep-billingreconservice-prod-d5bfczcnfvbqbdhx.z01.azurefd.net/v1/unbilledusage?fragment={fragment}&period={period}?currencyCode={currencyCode}

请求参数

Name 位于 必需 类型 描述
片段 查询 False 字符串 为完整响应选择“full”,或为属性子集选择“basic”。 默认值为“full”。 请参阅本文中的属性 列表。
period 查询 正确 字符串 使用“current”或“last”获取当前或最后一个日历月的使用情况。 值“last”与现有 V1 API 中的“previous”相同。
currencyCode 查询 正确 字符串 合作伙伴计费货币代码。

已弃用的请求参数

较新的 API 版本不需要以下 URI 参数:

Name 描述
提供程序 不适用。 (它返回所有 Azure 计划使用情况,相当于现有 V1 API 的“一次性”。
hasPartnerEarnedCredit 不适用。 (返回所有数据,而不考虑 PEC。
大小 不适用。
Offset 不适用。
seekOperation 不适用。

请求头文件

请参阅本文中 API 的请求标头列表。

请求正文

不适用。

API 响应

HTTP/1.1 202 Accepted Operation-Location: https://ep-billingreconservice-prod-d5bfczcnfvbqbdhx.z01.azurefd.net/v1/billingoperations/811bb8f0-8aca-4807-897c-c15ce50820d6

API 返回 HTTP 状态 202。 根据请求,API 可以返回其他 标准状态

Name 描述
202 已接受 接受请求。 查询请求状态的操作位置标头 URL。

获取计费的使用情况行项

获取已关闭计费周期的已计费使用情况行项。

API 请求

POST https://ep-billingreconservice-prod-d5bfczcnfvbqbdhx.z01.azurefd.net/v1/billedusage/invoices/{invoiceId}?fragment={fragment}

请求参数

Name 位于 必需 类型 描述
invoiceId 路径 正确 字符串 合作伙伴中心发票编号。
Fragment 查询 False 字符串 为完整响应选择“full”,或为属性子集选择“basic”。 默认值为“full”。 请参阅本文中的属性 列表。

已弃用的请求参数

较新的 API 版本不需要以下 URI 参数:

Name 描述
提供程序 不适用。 (它返回所有 Azure 计划使用情况,相当于现有 V1 API 的“一次性”。
hasPartnerEarnedCredit 不适用。 (返回所有数据,而不考虑 PEC。
大小 不适用。
Offset 不适用。
seekOperation 不适用。

请求头文件

请参阅本文中 API 的请求标头列表。

请求正文

不适用。

API 响应

HTTP/1.1 202 Accepted Operation-Location: https://ep-billingreconservice-prod-d5bfczcnfvbqbdhx.z01.azurefd.net/v1/billingoperations/06d01983-07bf-4448-83b4-1e83ab1d4640

API 返回“HTTP 202 已接受”。根据请求 API 可以返回其他 标准状态

Name 描述
202 已接受 接受请求。 通过轮询操作位置标头 URL 来检查请求状态。

步骤 2:检查请求状态

等待终端状态为“成功”或“失败”的 HTTP 200。 清单 URL 是成功状态中的“resourceLocation”。

获取操作状态

获取对帐数据请求的状态。

API 请求

GET https://ep-billingreconservice-prod-d5bfczcnfvbqbdhx.z01.azurefd.net/v1/billingoperations/06d01983-07bf-4448-83b4-1e63ab1d3640

请求参数

Name 位于 必需 类型 描述
operationId 路径 正确 字符串 操作 ID。

请求头文件

请参阅本文中 API 的请求标头列表。

请求正文

不适用。

响应状态

除了 本文中的标准 HTTP 状态 之外,API 还可以返回此 HTTP 状态:

Name 描述
410 不存在 每个操作链接在指定的服务器控制时间内处于活动状态。 经过时间后,客户端必须提交新请求。

响应有效负载

API 响应有效负载返回以下属性:

名称 可选 说明
createdDateTime false 请求时间。
lastActionDateTime false 状态更改时间。
resourceLocation 清单有效负载 URI。
status false 可能的值和操作。
客户端操作
notstarted 在等待“Retry-After”标头中指定的时间后,再次调用以检查状态。
“正在运行” 在等待“Retry-After”标头中指定的时间后,再次调用以检查状态。
succeeded 操作的最终状态,指示数据已就绪。 使用 resourceLocation 中指定的 URI 检索清单有效负载。
失败 终端状态,表示永久性故障。 重启操作。

对于错误属性:

名称 可选 说明
error 如果操作状态失败,则以 json 格式提供的错误详细信息。
名称 可选 说明
message false 详细描述错误
code false 指示发生的错误类型

API 请求

GET https://ep-billingreconservice-prod-d5bfczcnfvbqbdhx.z01.azurefd.net/v1/billingoperations/06d01983-07bf-4447-83b4-1e83ab1d3640

API 响应

响应建议在处理数据之前等待 10 秒。

HTTP/1.1 200 OK  
Retry-After: 10  
{  
"createdDateTime": "2022-06-1T10-01-03.4Z",  
"lastActionDateTime":" 2022-06-1T10-01-05Z",  
"status": "running"  
}

API 请求

(上述请求后的 10 秒)

GET https://ep-billingreconservice-prod-d5bfczcnfvbqbdhx.z01.azurefd.net/v1/billingoperations/06d01983-07bf-4447-83b4-1e83ab1d3640

API 响应

API 返回“成功”状态和“resourceLocation”URI。

HTTP/1.1 200 OK  
Content-Type: application/json  
{  
"createdDateTime": "2022-06-1T10-01-03.4Z",  
"lastActionDateTime": "2022-06-1T10-01-13Z",  
"status": "succeeded",  
"resourceLocation": "https://ep-billingreconservice-prod-d5bfczcnfvbqbdhx.z01.azurefd.net/v1/billingmanifests/e03e1882-ff59-4c09-882f-74e60b4d7743"  
}

步骤 3:获取清单有效负载

调用方向清单 URL 发出 GET 请求,详细了解对帐数据存储在 Azure Blob 中的位置。

获取清单

检索清单,该清单包含有关对帐数据的 Azure 存储位置的信息。

API 请求

GET https://ep-billingreconservice-prod-d5bfczcnfvbqbdhx.z01.azurefd.net/v1/billingmanifests/{manifestId}

请求参数

Name 位于 必需 类型 描述
manifestId 路径 正确 字符串 清单 ID。

请求头文件

请参阅本文中的 [API 请求标头列表]。

请求正文

不适用。

响应状态

除了 标准 HTTP 状态之外,API 还可以返回此 HTTP 状态:

Name 描述
410 不存在 每个清单链接在指定的服务器控制时间内处于活动状态。 经过时间后,客户端必须提交新请求。

响应有效负载

API 响应返回以下属性:

Name 描述
版本 清单架构版本。
dataFormat 计费数据文件格式。 可能的值压缩JSONLines:每个 Blob 都是压缩的文件,文件中的数据采用 JSON 行 格式。 若要访问数据,请解压缩文件。
utcCreatedDateTime 清单文件创建时间。
eTag 清单数据版本。 计费信息更改会生成新的 eTag 值。
partnerTenantId 合作伙伴租户 ID。
rootFolder 文件的根目录。
rootFolderSAS 用于访问文件的 SAS 令牌。
partitionType 此属性将划分数据。 如果给定的分区数超过受支持的数字,则数据将拆分为对应于“partitionValue”的多个文件。默认情况下,系统根据文件中的行项数对数据进行分区。 不要在代码中设置固定数量的行项或文件大小,因为分区原则可能会更改。
blobCount 此合作伙伴租户 ID 的文件总数。
sizeInBytes 所有文件中的总字节数。
blobs 包含合作伙伴租户 ID 的所有文件的详细信息的“blob”对象的 JSON 数组。
Blob 对象
名称 Blob 的名称。
sizeInBytes Blob 大小(以字节为单位)。
partitionValue 包含文件的分区。 大型分区将拆分为多个文件,每个文件具有相同的“partitionValue”。

示例清单有效负载

{
"version": "1",
"dataFormat": "compressedJSONLines",
"utcCretedDateTime": "2022-04-29T22:40:57.1853571Z",
"eTag": "0x5B168C7B6E589D2",
"partnerTenantId": "14f593ad-1edc-474d-aaa0-83abbf9638da",
"rootFolder": "https://{billing.blob.core.windows.net}/{folder_path}",
"rootFolderSAS": "\*\*\*",
"partitionType": "ItemCount",
"blobCount": 3,
"sizeInBytes": 2000,
"blobs": [
  {
  "name": "{blobName1.json.gz}",
  "sizeinBytes": 500,
  "partitionValue": "1"
  },
  {
  "name": "{blobName2.json.gz}",
  "sizeinBytes": 1000,
  "partitionValue": "2"
  },
  {
  "name": "{blobName3.json.gz}",
  "sizeinBytes": 500,
  "partitionValue": "3"
  }
  ]
}

步骤 4:从存储位置下载使用情况对帐数据

从清单有效负载 API 响应获取“rootFolderSAS”和“rootFolder”属性中的 SAS 令牌和 Blob 存储位置。 使用 Azure 存储 SDK/tool 下载和解压缩 blob 文件。 它采用 JSON 行格式。

标准 API 请求标头

所有 API 都接受以下标头:

Name 必需 类型 描述
授权 True 字符串 授权持有者令牌。
ms-correlationid False 字符串 内部请求跟踪器。 每个请求都会生成一个新的跟踪器(GUID)。
ms-cv False 字符串 内部请求跟踪器。
ms-requestid False 字符串 请求幂等 ID。

标准 API 响应状态

下面是 API 响应中的 HTTP 状态:

Name 描述
400 错误请求 数据缺失或不正确。 错误详细信息包含在响应正文中。
401 未授权 调用方未进行身份验证,必须在进行第一次调用之前向合作伙伴 API 服务进行身份验证。
403 禁止访问 调用方无权发出请求。
500 内部服务器错误 API 或其依赖项之一无法满足请求。 请稍后重试。
404 未找到 输入参数不可用的资源。
410 不存在 清单链接超时或已用。 提交新请求。

使用情况数据属性

带有“full”或“basic”请求参数的计费或未计费使用情况 API 响应返回以下属性:

属性 “full” “basic”
PartnerId
PartnerName
CustomerId
CustomerName
CustomerDomainName
CustomerCountry
MpnId
Tier2MpnId
InvoiceNumber
ProductId
SkuId
AvailabilityId
SkuName
ProductName
PublisherName
PublisherId
SubscriptionDescription
SubscriptionId
ChargeStartDate
ChargeEndDate
UsageDate
MeterType
MeterCategory
MeterId
MeterSubCategory
MeterName
MeterRegion
单位
ResourceLocation
ConsumedService
ResourceGroup
ResourceURI
ChargeType
UnitPrice
数量
UnitType
BillingPreTaxTotal
BillingCurrency
PricingPreTaxTotal
PricingCurrency
ServiceInfo1
ServiceInfo2
Tags
AdditionalInfo
EffectiveUnitPrice
PCToBCExchangeRate
EntitlementId
EntitlementDescription
PartnerEarnedCreditPercentage
CreditPercentage
CreditType
BenefitOrderID
BenefitID
BenefitType