計費和未計費的每日評等使用量對帳 API v2 (GA)
適用於: 合作夥伴中心(Azure Government 或 Azure China 21Vianet 中無法使用)。
我們的新異步 API 提供更快速且更有效率的方式,可讓您透過 Azure Blob 存取帳單和對帳數據。 與其保持連線開啟數小時或處理 2,000 行項目的批次,您現在可以簡化工作流程、減少伺服器負載,並改善數據處理時間。
新的 商務每日評等使用量對帳 API 會使用進階技術,例如 代客密鑰 和 異步要求-回復 模式。 代客密鑰模式允許在不共用憑證的情況下安全地存取資源,而異步請求-回應模式使系統之間的通信更高效。
這些 API 提供您共用存取簽章 (SAS) 令牌,可讓您用來存取所有屬性或每日評等使用量對帳數據的子集。 此令牌藉由授與有限的時間存取權來增強安全性,並提供管理數據訪問許可權的彈性。
藉由採用優化的 API,您可以透過較少的工作來達成更快的結果、簡化數據存取,並提升整體效率。 採用這些工具,以更有效率地簡化工作流程及管理許可權。
注意
新的 API 不會裝載在合作夥伴中心 API 主機上。 相反地,您可以在 MS Graph 上找到它們:使用 Microsoft Graph API 導出合作夥伴帳單數據 - Microsoft Graph v1.0 |Microsoft Learn。 若要存取這些 API,請參閱下列詳細數據。
您現在只能將這些 API 用於 MS Graph 公用/全域雲端。 它們尚不適用於 Azure Government 或 Azure China 21Vianet。
重要
若要允許您的應用程式存取合作夥伴帳單數據,請遵循此連結並熟悉 Microsoft Graph 的驗證和授權基本概念。 此步驟非常重要,因為它可確保您的應用程式可以安全地存取必要的數據。
您可以使用 Azure 入口網站 或 Entra 系統管理中心來指派 “PartnerBilling.Read.All” 許可權。 方法如下:
- 在 [應用程式註冊] 區段底下的 [Microsoft Entra 首頁上註冊您的應用程式。
- 若要授與必要的許可權,請移至 [Microsoft Entra App] 頁面。 在 [API 許可權] 區段下,選取 [新增許可權],然後選擇 [PartnerBilling.Read.All] 範圍。
藉由完成這些步驟,您可以確定您的應用程式具有合作夥伴帳單數據的必要存取權。
注意
如果您一直在使用我們的 Beta 版本,您可能會發現轉換至正式運作 (GA) 版本順暢且直覺。 為了協助您瞭解更新和改善,建議您 比較 Beta 和 GA 版本。 了解這些更新可協助您最大化 GA 版本中可用的新功能和改進功能。
重要
新的商務每日評等使用量不包含這些產品的費用:
- Azure 保留
- Azure 節省方案
- Office
- Dynamics
- Microsoft Power Apps
- 永久軟體
- 軟體訂閱
- 非Microsoft或市集 SaaS 產品
API 概觀
為了協助您以異步方式擷取 每日計費的新商務 使用量明細專案,我們提供兩個主要 API 端點。 請遵循此簡化的指南,快速且有效率地開始使用!
使用明細專案端點
首先,使用此 API 來擷取 新的商務 每日評等使用量明細專案。 當您提出要求時,您會收到 202 HTTP 狀態和具有 URL 的位置標頭。 定期輪詢此 URL,直到您取得成功狀態和指令清單 URL 為止。
作業狀態端點
接下來,定期呼叫此 API 來繼續檢查作業狀態。 如果數據尚未就緒,回應會包含 Retry-After 標頭,指出在再次嘗試之前要等候的時間。 作業完成後,您會收到具有記憶體資料夾連結的指令清單資源,以下載使用量數據。 回應會將檔案區隔以增強輸送量,並允許I/O平行處理原則。
遵循這些步驟,您可以有效率地管理發票對帳程式。
順序圖表
以下順序圖表顯示下載對帳數據的步驟。
用戶動作順序
若要擷取 新的商務 每日評等使用量對帳明細專案,請遵循下列步驟:
步驟 1:提交要求
將 POST 要求提交至 API 端點。
取得每日未計費的評分使用量明細專案
取得 目前或上一個行事曆月份或計費週期中每日未計費的新商務 評分使用量明細專案。
注意
您可以透過 API 或合作夥伴中心入口網站存取 未計費的 每日評分使用量明細專案。 為了確保數據正確性,最多允許 24 小時的可用性。 視您的位置及計量報告使用量而定,可能會有進一步的延遲。
我們會先排定每日已計費使用量數據的時間傳遞的優先順序。 有時候,最新的 尚未計費的 每日評等使用量數據可能要等到上個月的計費數據可用後才會顯示。 收到計費數據之後,您就可以從本月初存取所有更新的未計費使用量數據。
關鍵點:
- 最多允許 24 小時的數據可用性。
- 視您的位置和計量報告時間而定,可能會有進一步的延遲。
- 每日計費的使用率數據會優先於未計費的數據。
由於我們努力盡可能提供最準確且最及時的資訊,您的理解和耐心是值得讚賞的。
API 要求
POST https://graph.microsoft.com/v1.0/reports/partners/billing/usage/unbilled/export
Accept: application/json
Content-Type: application/json
{
"currencyCode": "USD",
"billingPeriod": "current",
"attributeSet": "basic"
}
要求本文
屬性 | 必要 | 類型 | 描述 |
---|---|---|---|
attributeSet | False | String | 針對有限的集合,選擇所有屬性的 [完整] 或 [基本]。 如果未指定,“full” 是預設值。 請檢查本節中的 屬性清單,。 選擇性。 |
billingPeriod | True | String | 若要取得未計費的每日使用量統計,請在目前的計費期間使用「目前」,或針對上一個計費期間使用「上次」(與 v1 API 中的「上一個」相同)。 必要。 |
currencyCode | True | String | 合作夥伴計費貨幣代碼。 必要。 |
要求標頭
若要要求 API 的標頭,請參閱 可靠性和支援。
API 回應
HTTP/1.1 202 Accepted
Location: https://graph.microsoft.com/v1.0/reports/partners/billing/operations/9ab9cb54-d07f-4f52-9ea6-a09d7de52c14
API 通常會以 HTTP 202 狀態回應。 視您的要求而定,您也可能遇到其他狀態。 這些狀態會列在 [標準 API 回應狀態 ] 區段中。
代碼 | 描述 |
---|---|
202 – 已接受 | 您的要求已接受。 若要檢查要求的狀態,請查詢位置標頭中提供的URL。 |
取得每日評等使用量明細專案的計費
取得 已關閉計費期間發票的每日計費使用量明細專案的新商務 。
API 要求
POST https://graph.microsoft.com/v1.0/reports/partners/billing/usage/billed/export
{
"invoiceId": "G00012345",
"attributeSet": "full"
}
查詢參數
N/A
要求本文
屬性 | 必要 | 類型 | 描述 |
---|---|---|---|
invoiceId | True | String | 每個發票的唯一標識碼。 必要。 |
attributeSet | False | String | 針對有限的集合,選擇所有屬性的 [完整] 或 [基本]。 如果未指定,“full” 是預設值。 請檢查本節中的 |
要求標頭
要求 API 的標頭。 若要深入瞭解,請參閱 可靠性和支援。
API 回應
HTTP/1.1 202 已接受
位置:https://graph.microsoft.com/v1.0/reports/partners/billing/operations/9ab9cb54-d07f-4f52-9ea6-a09d7de52c14
當您使用 API 時,通常會傳回 HTTP 202 狀態。 如需以您的要求為基礎的其他可能狀態,請參閱 狀態。
代碼 | 描述 |
---|---|
202 – 已接受 | 您的要求已接受。 若要檢查要求的狀態,請查詢位置標頭中提供的URL。 |
步驟 2:檢查要求狀態
若要追蹤要求的狀態,請確定您會收到 HTTP 200 回應,這是指出「成功」或「失敗」的標準狀態代碼。如果成功,您可以在 「resourceLocation」 屬性中找到指令清單 URL。 這個屬性提供存取必要資訊的端點。
取得作業狀態
擷取要求的狀態。
API 要求
要求參數
名稱 | 包含於 | 必要 | 類型 | 描述 |
---|---|---|---|---|
operationId | 要求 URI | True | String | 檢查要求狀態的唯一標識碼。 必要。 |
要求標頭
若要要求 API 的標頭,請參閱 可靠性和支援。
要求本文
N/A。
回應狀態
除了標準 API 回應狀態中列出的 標準 HTTP 狀態之外,API 也可以傳回下列 HTTP 狀態:
代碼 | 描述 |
---|---|
410 – 消失 | 指令清單連結會在設定時間之後到期。 若要再次取得指令清單連結,請傳送新的要求。 |
回應承載
API 回應承載包含下列屬性:
屬性 | 必要 | 描述 |
---|---|---|
id | True | 每個回應的唯一標識碼。 必要。 |
status | True |
值和動作: 必要: notstarted:等候 “Retry-After” 標頭中指定的持續時間,然後進行另一個呼叫來檢查狀態。 執行:等候 “Retry-After” 標頭中指定的持續時間,然後進行另一個呼叫來檢查狀態。 成功:數據已就緒。 使用 resourceLocation 中指定的 URI 擷取指令清單承載。 failed:作業永久失敗。 重新啟動它。 |
createdDateTime | True | 提出要求的時間。 必要。 |
lastActionDateTime | True | 上次狀態變更的時間。 必要。 |
resourceLocation | False | 指令清單承載的 URI。 選擇性。 |
error | False | JSON 格式提供之任何錯誤的詳細數據。 選擇性。 包含的屬性: 訊息:錯誤的描述。 code:錯誤的類型。 |
資源位置物件
屬性 | 描述 |
---|---|
id | 指令清單的唯一標識碼。 |
schemaVersion | 指令清單架構的版本。 |
dataFormat | 計費數據檔的格式。 compressedJSON:數據格式,其中每個 Blob 都是包含 JSON 行格式數據的壓縮檔。 若要從每個 Blob 擷取數據,請將其解壓縮。 |
createdDateTime | 建立指令清單檔的日期和時間。 |
eTag | 指令清單數據的版本。 帳單資訊中的變更會產生新的值。 |
partnerTenantId | Microsoft合作夥伴租使用者的 Entra 識別符。 |
rootDirectory | 檔案的根目錄。 |
sasToken | SAS(共用存取簽章)令牌,可讓您讀取目錄下的所有檔案。 |
partitionType | 根據 「partitionValue」 屬性將數據分割成多個 Blob。 系統會分割超過支援數目的分割區。 根據預設,數據會根據檔案中的明細項目數目進行分割。 避免硬編碼項目計數或檔案大小,因為它們可能會改變。 |
blobCount | 此合作夥伴租用戶標識碼的檔案總數。 |
Blob | “blob” 物件的 JSON 陣列,其中包含合作夥伴租使用者標識碼的檔案詳細數據。 |
blob 物件 | 物件,包含下列詳細數據: name 和 partitionValue |
NAME | Blob 的名稱。 |
partitionValue | 包含檔案的分割區。 大型分割區會根據特定準則分割成多個檔案,例如檔案大小或記錄數目,每個檔案都包含相同的 “partitionValue”。 |
API 要求
GET <https://graph.microsoft.com/v1.0/reports/partners/billing/operations/9ab9cb54-d07f-4f52-9ea6-a09d7de52c14>
API 回應
回應建議在處理數據之前等候 10 秒,然後再試一次。
HTTP/1.1 200 OK
Retry-After: 10
{
"id": "9ab9cb54-d07f-4f52-9ea6-a09d7de52c14",
"createdDateTime": "2022-06-1T10-01-03.4Z",
"lastActionDateTime": "2022-06-1T10-01-05Z",
"status": "running"
}
API 要求
(前一個要求后 10 秒...)
GET <https://graph.microsoft.com/v1.0/reports/partners/billing/operations/9ab9cb54-d07f-4f52-9ea6-a09d7de52c14>
API 回應
API 會傳回 “resourceLocation” 的「成功」狀態和 URI。
HTTP/1.1 200 OK
Content-Type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/\$metadata#reports/partners/billing/operations/\$entity",
"@odata.type": "#microsoft.graph.partners.billing.exportSuccessOperation",
"id": "f2170b13-6a8e-47d6-b481-6988490dc0cb",
"createdDateTime": "2023-12-05T21:17:29Z",
"lastActionDateTime": "2023-12-05T21:18:00.8897902Z",
"status": "succeeded",
"resourceLocation": {
"id": "44e8500b-ab92-490e-8ac3-90500a1d3427",
"createdDateTime": "2023-11-06T19:58:47.513Z",
"schemaVersion": "2",
"dataFormat": "compressedJSON",
"partitionType": "default",
"eTag": "RwDrn7fbiTXy6UULE",
"partnerTenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"rootDirectory": "https://adlsreconbuprodeastus201.blob.core.windows.net/path_id",
"sasToken": "{token}",
"blobCount": 1,
"blobs": \[
{
"name": "part-00123-5a93fa5d-749f-48bc-a372-9b021d93c3fa.c000.json.gz",
"partitionValue": "default"
}
\]
}
}
步驟 3:從 Azure Blob 記憶體下載每日評等使用量對帳明細專案
首先,您必須取得共用存取簽章 (SAS) 令牌和 Blob 記憶體位置。 您可以在指令清單承載 API 回應的 「sasToken」 和 「rootDirectory」 屬性中找到這些詳細數據。 然後,若要下載並解壓縮 Blob 檔案,請使用 Azure 儲存體 SDK/tool。 其格式為 JSONLines 。
提示
請務必查看我們的 範例程序代碼。 它示範如何將 Azure Blob 檔案下載並解壓縮至本機資料庫。
標準 API 回應狀態
您可能會從 API 回應收到這些 HTTP 狀態:
代碼 | 說明 |
---|---|
400 – 不正確的要求 | 要求遺失或包含不正確的數據。 請檢查回應本文以取得錯誤詳細數據。 |
401 - 未經授權 | 進行第一次呼叫之前,必須先進行驗證。 使用合作夥伴 API 服務進行驗證。 |
403 - 禁止 | 您沒有提出要求的必要授權。 |
404 – 找不到 | 所提供的輸入參數無法使用所要求的資源。 |
410 – 消失 | 指令清單連結不再有效或作用中。 提交新的要求。 |
500 – 內部伺服器錯誤 | API 或其相依性目前無法滿足要求。 請稍後再試一次。 |
5000 – 沒有可用的數據 | 系統沒有所提供輸入參數的數據。 |
比較 Beta 和 GA 版本
請查看比較數據表,以查看 Beta 和正式推出 (GA) 版本之間的差異。 如果您目前使用 Beta 版本,轉換至 GA 版本很簡單且容易。
重要資訊 | Beta | 正式推出 |
---|---|---|
API 主機端點 | https://ep-billingreconservice-prod-d5bfczcnfvbqbdhx.z01.azurefd.net/ |
https://graph.microsoft.com/v1.0/reports/partners/billing/usage/ |
HTTP 方法 | POST | POST |
每日評等使用量 API 端點未計費 | https://ep-billingreconservice-prod-d5bfczcnfvbqbdhx.z01.azurefd.net/v1/unbilledusage |
https://graph.microsoft.com/v1.0/reports/partners/billing/usage/unbilled/export |
未計費每日評等使用量 API 的輸入參數 | 若要在 API 要求中指定參數,請在要求 URL 的查詢字串中包含這些參數。 例如,若要指定 period 和 currencyCode 參數,請將 附加 ?period=current¤cyCode=usd 至要求 URL。 |
若要提供輸入,請在要求本文中包含 JSON 物件。 您的 JSON 應該具有下列屬性: * currencyCode:您的計費貨幣。 例如,美元。 * billingPeriod:發票的計費週期。 例如,目前。 以下是包含 currencyCode 和 billingPeriod 屬性的範例 JSON 物件: <br>{<br> "currencyCode": "USD",<br> "billingPeriod": "current"<br>} |
每日評等使用量 API 端點計費 | https://ep-billingreconservice-prod-d5bfczcnfvbqbdhx.z01.azurefd.net/v1/billedusage/invoices/{InvoiceId} |
https://graph.microsoft.com/v1.0/reports/partners/billing/usage/billed/export |
計費每日評等使用量 API 的輸入參數 | 若要在 API 要求中指定參數,請在要求 URL 中包含 invoiceId。 此外,您可以在查詢字串中包含選擇性片段參數,以擷取完整的屬性集。 例如,若要擷取完整的屬性集,請將 附加 ?fragment=full 至要求URL。 |
若要提供輸入,請在要求本文中包含 JSON 物件。 您的 JSON 應該具有下列屬性: * invoiceId:發票的唯一標識符。 例如,G00012345。 * attributeSet:應該在回應中的屬性,例如 full。 以下是包含 invoiceId 和 attributeSet 屬性的範例 JSON 物件: {<br> "invoiceId": "G00012345",<br> "attributeSet": "full"<br>} |
指令清單資源 | 使用個別的 GET /manifests/{id} 方法來擷取指令清單資源。 | 使用 GET /operations/{Id} 方法來存取 resourceLocation 中的指令清單資源。 此方法可藉由不需要個別呼叫 GET /manifests/{id}來節省時間。 |
指令清單架構的變更 | ||
“id”: 無法使用 | “id”:指令清單資源的唯一標識符。 | |
“version”: Available | “version”: 已變更為 “schemaversion”。 | |
“dataFormat”: 可用 | “dataFormat”:可用。 | |
“utcCretedDateTime”: Available | “utcCretedDateTime”: 已變更為 “createdDateTime”。 | |
“eTag”: 可用 | “eTag”:可用。 | |
“partnerTenantId”: Available | “partnerTenantId”: Available | |
“rootFolder”: 可用 | “rootFolder”: 已變更為 “rootDirectory”。 | |
“rootFolderSAS”: 可用 | “rootFolderSAS”:已變更為 “sasToken”。此更新只提供沒有根目錄路徑的令牌。 若要尋找目錄,請改用 「rootDirectory」 屬性。 | |
“partitionType”: 可用 | “partitionType”:可用。 | |
“blobCount”: 可用 | “blobCount”:可用。 | |
“sizeInBytes”: 可用 | “sizeInBytes”:無法使用。 | |
“blobs”: 可用 | “blobs”:可用。 | |
“blob 物件”: 可用 | “blob 物件”:可用。 | |
“name”: Available | “name”:可用。 | |
“partitionValue”: 可用 | “partitionValue”:可用。 |
每日評分使用量對帳明細項目屬性
若要比較計費或未計費使用量對帳 API 針對「完整」或「基本」屬性集所傳回的屬性,請參閱下表。 若要深入瞭解這些屬性及其意義,請參閱此 檔。
屬性 | 完整 | 基本 |
---|---|---|
PartnerId | 是 | 是 |
PartnerName | 是 | 是 |
CustomerId | 是 | 是 |
CustomerName | 是 | Yes |
CustomerDomainName | 是 | 否 |
CustomerCountry | 是 | 否 |
MpnId | 是 | 否 |
Tier2MpnId | 是 | 否 |
InvoiceNumber | 是 | 是 |
ProductId | 是 | 是 |
SkuId | 是 | 是 |
AvailabilityId | 是 | 否 |
SkuName | 是 | 是 |
ProductName | 是 | 否 |
PublisherName | 是 | 是 |
PublisherId | 是 | 否 |
SubscriptionDescription | 是 | 否 |
SubscriptionId | 是 | 是 |
ChargeStartDate | 是 | 是 |
ChargeEndDate | 是 | 是 |
UsageDate | 是 | 是 |
MeterType | 是 | 否 |
計量類別目錄 | 是 | 否 |
MeterId | 是 | 否 |
MeterSubCategory | 是 | 否 |
MeterName | 是 | 否 |
MeterRegion | 是 | 否 |
單位 | 是 | 是 |
資源位置 | 是 | 否 |
ConsumedService | 是 | 否 |
ResourceGroup | 是 | 否 |
ResourceURI | 是 | 是 |
ChargeType | 是 | 是 |
UnitPrice | 是 | 是 |
數量 | 是 | 是 |
UnitType | 是 | 否 |
BillingPreTaxTotal | 是 | 是 |
BillingCurrency | 是 | 是 |
PricingPreTaxTotal | 是 | 是 |
PricingCurrency | 是 | 是 |
ServiceInfo1 | 是 | 否 |
ServiceInfo2 | 是 | 否 |
標籤 | 是 | 否 |
AdditionalInfo | 是 | 否 |
EffectiveUnitPrice | 是 | 是 |
PCToBCExchangeRate | 是 | 是 |
PCToBCExchangeRateDate | 是 | 否 |
EntitlementId | 是 | 是 |
EntitlementDescription | 是 | 否 |
PartnerEarnedCreditPercentage | 是 | 否 |
CreditPercentage | 是 | 是 |
CreditType | 是 | 是 |
BenefitOrderID | 是 | 是 |
BenefitID | 是 | 否 |
BenefitType | 是 | 是 |
重要
從 API v1 移至 v2 時,請記下這些變更。
每個屬性名稱現在都會以 大寫 字母開頭,以維持檔案的一致性,並改善可讀性。
unitOfMeasure 已更新為 Unit。 其意義和值保持不變,可簡化屬性名稱。
resellerMpnId 現在是 Tier2MpnId。 意義和值相同。
rateOfPartnerEarnedCredit 會更新為 PartnerEarnedCreditPercentage。 新的名稱和值現在會反映百分比,而不是分數,讓您更容易瞭解。 例如,0.15 現在是15%。
rateOfCredit 現在是 CreditPercentage。 名稱和值都已變更,以提供更清楚的瞭解。 例如,1.00 現在是100%。
我們相信這些變更可讓 API 更直覺且更容易使用。
範例指令碼
若要使用此 API,請參閱下列連結,其中包含 C# 範例程式代碼。