Teilen über


Abrufen von nicht in Rechnung gestellten kommerziellen Verbrauchspositionen

Hinweis

Wichtige Migrationstermine und Szenarien

Die Strategie für die API-Versionsübergang wurde entwickelt, um eine reibungslose Migration von API v1 zu API v2 sicherzustellen, wobei der Schwerpunkt auf der Aufrechterhaltung von Funktionalität und Datenintegrität liegt. Hier ist ein Leitfaden, der Ihnen bei der Auswahl der geeigneten API-Version für Ihre Anforderungen hilft:

Szenario A: Aktuelle oder vorherige Abrechnungszeiträume (vor dem 21. April 2025):

  • Weiterhin diese API bis zum 21. April 2025 verwenden, es sei denn, Sie haben bereits auf API v2 GA umgestellt.

Szenario B: Aktuelle oder vorherige Abrechnungszeiträume (nach dem 21. April 2025):

  • Wechseln zu API v2 GA- für alle zukünftigen Abrechnungszeitraum-Datenabrufe.

Der Übergang von API v1 zu API v2 umfasst eine detaillierte Planung und präzise Ausführung. Um einen reibungslosen Übergang zur neuen API zu gewährleisten, besuchen Sie: API für die abgerechnete und nicht abgerechnete täglich bewertete Nutzungsabstimmung v2 (GA).

Wir schätzen Ihre Aufmerksamkeit und setzen uns dafür ein, Ihren fortgesetzten Erfolg mit unseren Abrechnungs-APIs zu unterstützen.

So erhalten Sie eine Sammlung nicht berechneter Handelsverbrauchsartikeldetails.

Sie können die folgenden Methoden verwenden, um programmgesteuert eine Sammlung von Details zu unbilligten Handelsverbrauchspositionen (auch als offene Verwendungszeilenelemente bezeichnet) abzurufen.

Wichtig

Die täglich bewerteten Nutzungsdaten enthalten keine Gebühren für diese Produkte:

  • Azure-Reservierung
  • Azure-Sparplan
  • Office
  • Dynamics
  • Microsoft Power Apps
  • Unbefristete Software
  • Softwareabonnement
  • SaaS-Produkt ohne Microsoft oder Marketplace

Hinweis

Sie können über das API- oder Partner Center-Portal auf Ihre nicht abgerechneten täglich bewerteten Nutzungspositionen zugreifen. Um die Datengenauigkeit sicherzustellen, kann es bis zu 24 Stunden dauern, bis die Daten verfügbar sind. Je nach Standort und dem Zeitpunkt, an dem die Zähler die Nutzung melden, kann es weitere Verzögerungen geben.

Wir priorisieren zuerst die Rechtzeitige Lieferung von in Rechnung gestellten täglich bewerteten Nutzungsdaten. Gelegentlich werden die neuesten nicht berechneten täglich bewerteten Nutzungsdaten möglicherweise erst angezeigt, wenn die in Rechnung gestellten Daten des vorherigen Monats verfügbar sind. Nachdem Sie die in Rechnung gestellten Daten erhalten haben, können Sie ab Beginn des Monats auf alle aktualisierten nicht abgerechneten Nutzungsdaten zugreifen.

Wichtige Punkte:

  • Es kann bis zu 24 Stunden dauern, bis die Daten verfügbar sind.
  • Je nach Standort und Berichterstellungszeiten der Verbrauchseinheit kann es weitere Verzögerungen geben.
  • Die täglich berechneten bewerteten Nutzungsdaten werden über nicht berechnete Daten priorisiert.

Ihr Verständnis und Ihre Geduld werden geschätzt, da wir uns bemühen, möglichst genaue und zeitnahe Informationen bereitzustellen.

Voraussetzungen

  • Anmeldeinformationen, wie unter Partner Center-Authentifizierung beschrieben. Dieses Szenario unterstützt die Authentifizierung mit eigenständigen App- und App+Benutzeranmeldeinformationen.

C#

So rufen Sie die Positionen für die angegebene Rechnung ab:

  1. Rufen Sie die ById-Methode auf, um eine Schnittstelle zu Rechnungsvorgängen für die angegebene Rechnung abzurufen.
  2. Rufen Sie die Get- oder GetAsync-Methode auf, um das Rechnungsobjekt abzurufen.

Das Rechnungsobjekt enthält alle Informationen für die angegebene Rechnung. Der Anbieter identifiziert die Quelle der unbilligten Detailinformationen (z . B. OneTime). Der InvoiceLineItemType gibt den Typ an (z. B . UsageLineItem).

Im folgenden Beispielcode wird eine Foreachschleife verwendet, um die InvoiceLineItems-Auflistung zu verarbeiten. Für jeden InvoiceLineItemType wird eine separate Sammlung von Zeilenelementen abgerufen.

So rufen Sie eine Sammlung von Positionen ab, die einer InvoiceDetail-Instanz entsprechen:

  1. Übergeben Sie den BillingProvider und InvoiceLineItemType der Instanz an die By-Methode.
  2. Rufen Sie die Get- oder GetAsync-Methode auf, um die zugehörigen Zeilenelemente abzurufen.
  3. Erstellen Sie einen Enumerator, um die Auflistung zu durchlaufen, wie im folgenden Beispiel gezeigt.
// IAggregatePartner partnerOperations;
// string curencyCode;
// string period;
// int pageMaxSizeReconLineItems = 2000;

// all the operations executed on this partner operation instance will share the same correlation Id but will differ in request Id
IPartner scopedPartnerOperations = partnerOperations.With(RequestContextFactory.Instance.Create(Guid.NewGuid()));

var seekBasedResourceCollection = scopedPartnerOperations.Invoices.ById("unbilled").By("onetime", "usagelineitems", curencyCode, period, pageMaxSizeReconLineItems).Get();

var fetchNext = true;

ConsoleKeyInfo keyInfo;

var itemNumber = 1;
while (fetchNext)
{
    Console.Out.WriteLine("\tLine items count: " + seekBasedResourceCollection.Items.Count());

    seekBasedResourceCollection.Items.ToList().ForEach(item =>
    {
        // Instance of type DailyRatedUsageLineItem
        if (item is DailyRatedUsageLineItem)
        {
            Type t = typeof(DailyRatedUsageLineItem);
            PropertyInfo[] properties = t.GetProperties();

            foreach (PropertyInfo property in properties)
            {
                // Insert code here to work with the line item properties
            }
        }
        itemNumber++;
    });

    Console.Out.WriteLine("\tPress any key to fetch next data. Press the Escape (Esc) key to quit: \n");
    keyInfo = Console.ReadKey();

    if (keyInfo.Key == ConsoleKey.Escape)
    {
        break;
    }

    fetchNext = !string.IsNullOrWhiteSpace(seekBasedResourceCollection.ContinuationToken);

    if (fetchNext)
    {
        if (seekBasedResourceCollection.Links.Next.Headers != null && seekBasedResourceCollection.Links.Next.Headers.Any())
        {
            seekBasedResourceCollection = scopedPartnerOperations.Invoices.ById("unbilled").By("onetime", "usagelineitems", curencyCode, period, pageMaxSizeReconLineItems).Seek(seekBasedResourceCollection.ContinuationToken, SeekOperation.Next);
        }
    }
}

Ein ähnliches Beispiel finden Sie unter:

  • Beispiel: Konsolentest-App
  • Projekt: Partner Center SDK-Beispiele
  • Klasse: GetUnBilledConsumptionReconLineItemsPaging.cs

REST-Anforderung

Anforderungssyntax

Je nach Anwendungsfall können Sie die folgenden Syntaxen für Ihre REST-Anforderung verwenden. Weitere Informationen finden Sie in den Beschreibungen für jede Syntax.

Methode Anforderungs-URI Beschreibung des Syntaxanwendungsfalls
GET {baseURL}/v1/invoices/unbilled/lineitems?provider=onetime&invoicelineitemtype=usagelineitems¤cycode={currencycode}&period={period} HTTP/1.1 Verwenden Sie diese Syntax, um eine vollständige Liste aller Artikel für die angegebene Rechnung zurückzugeben.
GET {baseURL}/v1/invoices/unbilled/lineitems?provider=onetime&invoicelineitemtype=usagelineitems¤cycode={currencycode}&period={period}&size={size} HTTP/1.1 Verwenden Sie diese Syntax für große Rechnungen. Verwenden Sie diese Syntax mit einer angegebenen Größe und einem 0-basierten Offset, um eine ausgelagerte Liste von Zeilenelementen zurückzugeben.
GET {baseURL}/v1/invoices/unbilled/lineitems?provider=onetime&invoicelineitemtype=usagelineitems¤cycode={currencycode}&period={period}&size={size}&seekOperation=Next Verwenden Sie diese Syntax, um die nächste Seite der Abstimmungszeilenelemente mithilfe seekOperation = "Next"von .

URI-Parameter

Verwenden Sie beim Erstellen der Anforderung die folgenden URI- und Abfrageparameter.

Name Type Erforderlich Beschreibung
provider Zeichenfolge Ja Der Anbieter: "OneTime".
invoice-line-item-type Zeichenfolge Ja Der Typ der Rechnungsdetails: "UsageLineItems", "UsageLineItems".
currencyCode Zeichenfolge Ja Der Währungscode für die nicht abgerechneten Positionen.
period (Zeitraum) Zeichenfolge Ja Der Zeitraum für nicht abgerechnete Neuaufklärung (z. B. aktuell, vorheriger). Angenommen, Sie müssen Ihre nicht berechneten Nutzungsdaten der Abrechnungszeitraum (01.01.2020 – 01.31.2020) im Januar abfragen, wählen Sie den Zeitraum "Aktuell" aus, sonst "Zurück".
size Zahl No Die maximale Anzahl der zurückzugebenden Elemente. Die Standardgröße ist 2000.
seekOperation Zeichenfolge No Legen Sie fest seekOperation=Next , dass die nächste Seite der Abstimmungspositionen abgerufen wird.

Anforderungsheader

Weitere Informationen finden Sie unter Partner Center-REST-Header.

Anforderungstext

Keine.

REST-Antwort

Wenn die Antwort erfolgreich verläuft, enthält die Antwort die Auflistung der Zeilenelementdetails.

Für den Artikel "ChargeType" wird der Wert "Purchase" "Neu" zugeordnet, und der Wert "Rückerstattung" wird "Cancel" zugeordnet.

Erfolgs- und Fehlercodes der Antwort

Jede Antwort enthält einen HTTP-Statuscode, der Erfolg oder Fehler und andere Debuginformationen angibt. Verwenden Sie ein Netzwerkablaufverfolgungstool, um diesen Code, fehlertyp und weitere Parameter zu lesen. Die vollständige Liste finden Sie unter Partner Center-REST-Fehlercodes.

Beispiele für Anforderungsantworten

Anforderungsantwort (Beispiel 1)

Die folgenden Details gelten für dieses Beispiel:

  • Anbieter: OneTime
  • InvoiceLineItemType: UsageLineItems
  • Zeitraum: Vorheriger

Anforderungsbeispiel 1

GET https://api.partnercenter.microsoft.com/v1//invoices/unbilled/lineitems?provider=onetime&invoicelineitemtype=usagelineitems&currencycode=usd&period=previous&size=2000 HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: 1234ecb8-37af-45f4-a1a1-358de3ca2b9e
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
X-Locale: en-US
MS-PartnerCenter-Application: Partner Center .NET SDK Samples
Host: api.partnercenter.microsoft.com

Wichtig

Ab Juni 2023 ist jetzt die neueste Partner Center .NET SDK-Version 3.4.0 archiviert. Sie können das SDK-Release von GitHub zusammen mit einer Infodatei herunterladen, die nützliche Informationen enthält.

Partner werden ermutigt, weiterhin Partner Center-REST-APIs zu verwenden.

Antwortbeispiel 1

HTTP/1.1 200 OK
Content-Length: 2484
Content-Type: application/json; charset=utf-8
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
MS-RequestId: 1234ecb8-37af-45f4-a1a1-358de3ca2b9e
MS-CV: bpqyomePDUqrSSYC.0
MS-ServerId: 202010406
Date: Wed, 20 Feb 2019 19:59:27 GMT

{
    "totalCount": 2,
    "items": [
        {
            "partnerId": "00083575-bbd0-54de-b2ad-0f5b0e927d71",
            "partnerName": "MTBC",
            "customerId": "",
            "customerName": "",
            "customerDomainName": "",
            "invoiceNumber": "",
            "productId": "",
            "skuId": "",
            "availabilityId": "",
            "skuName": "VM-Series Next-Generation Firewall (Bundle 2 PAYG)",
            "productName": "VM-Series Next Generation Firewall",
            "publisherName": "Test Alto Networks, Inc.",
            "publisherId": "",
            "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
            "subscriptionDescription": "Pay-As-You-Go",
            "chargeStartDate": "2019-01-01T00:00:00Z",
            "chargeEndDate": "2019-02-01T00:00:00Z",
            "usageDate": "2019-01-01T00:00:00Z",
            "meterType": "1 Compute Hour - 4core",
            "meterCategory": "Virtual Machine Licenses",
            "meterId": "4core",
            "meterSubCategory": "VM-Series Next Generation Firewall",
            "meterName": "VM-Series Next Generation Firewall - VM-Series Next-Generation Firewall (Bundle 2 PAYG) - 4 Core Hours",
            "meterRegion": "",
            "unitOfMeasure": "1 Hour",
            "resourceLocation": "EASTUS",
            "consumedService": "Microsoft.Compute",
            "resourceGroup": "ECH-PAN-RG",
            "resourceUri": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ECH-PAN-RG/providers/Microsoft.Compute/virtualMachines/echpanfw",
            "tags": "",
            "additionalInfo": "{  \"ImageType\": null,  \"ServiceType\": \"Standard_D3_v2\",  \"VMName\": null,  \"VMProperties\": null,  \"UsageType\": \"ComputeHR_SW\"}",
            "serviceInfo1": "",
            "serviceInfo2": "",
            "customerCountry": "",
            "mpnId": "1234567",
            "resellerMpnId": "",
            "chargeType": "",
            "unitPrice": 1.2799888920023,
            "quantity": 24.0,
            "unitType": "",
            "billingPreTaxTotal": 30.7197334080551,
            "billingCurrency": "USD",
            "pricingPreTaxTotal": 30.7197334080551,
            "pricingCurrency": "USD",
            "entitlementId": "3f47bcf1-965d-40a1-a2bc-3d5db3653250",
            "entitlementDescription": "Partner Subscription",
            "pcToBCExchangeRate": 1,
            "pcToBCExchangeRateDate": "2019-08-01T00:00:00Z",
            "effectiveUnitPrice": 0,
            "rateOfPartnerEarnedCredit": 0,
            "rateOfCredit": 0,
            "creditType": "Credit Not Applied",
            "invoiceLineItemType": "usage_line_items",
            "billingProvider": "marketplace",
        "benefitOrderId": "5ea053d6-4a0d-46ef-bc82-15065b475d01",
        "benefitId": "28ddab06-2c5b-479e-88bb-7b7bfda4e7fd",
        "benefitType": "SavingsPlan",
            "attributes": {
                "objectType": "DailyRatedUsageLineItem"
            }
         },
         {
            "partnerId": "00083575-bbd0-54de-b2ad-0f5b0e927d71",
            "partnerName": "MTBC",
            "customerId": "",
            "customerName": "",
            "customerDomainName": "",
            "invoiceNumber": "",
            "productId": "",
            "skuId": "",
            "availabilityId": "",
            "skuName": "VM-Series Next-Generation Firewall (Bundle 2 PAYG)",
            "productName": "VM-Series Next Generation Firewall",
            "publisherName": "Test Alto Networks, Inc.",
            "publisherId": "",
            "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
            "subscriptionDescription": "Pay-As-You-Go",
            "chargeStartDate": "2019-01-01T00:00:00Z",
            "chargeEndDate": "2019-02-01T00:00:00Z",
            "usageDate": "2019-01-02T00:00:00Z",
            "meterType": "1 Compute Hour - 4core",
            "meterCategory": "Virtual Machine Licenses",
            "meterId": "4core",
            "meterSubCategory": "VM-Series Next Generation Firewall",
            "meterName": "VM-Series Next Generation Firewall - VM-Series Next-Generation Firewall (Bundle 2 PAYG) - 4 Core Hours",
            "meterRegion": "",
            "unitOfMeasure": "1 Hour",
            "resourceLocation": "EASTUS",
            "consumedService": "Microsoft.Compute",
            "resourceGroup": "ECH-PAN-RG",
            "resourceUri": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ECH-PAN-RG/providers/Microsoft.Compute/virtualMachines/echpanfw",
            "tags": "",
            "additionalInfo": "{  \"ImageType\": null,  \"ServiceType\": \"Standard_D3_v2\",  \"VMName\": null,  \"VMProperties\": null,  \"UsageType\": \"ComputeHR_SW\"}",
            "serviceInfo1": "",
            "serviceInfo2": "",
            "customerCountry": "",
            "mpnId": "1234567",
            "resellerMpnId": "",
            "chargeType": "",
            "unitPrice": 1.2799888920023,
            "quantity": 24.0,
            "unitType": "",
            "billingPreTaxTotal": 30.7197334080551,
            "billingCurrency": "USD",
            "pricingPreTaxTotal": 30.7197334080551,
            "pricingCurrency": "USD",
            "entitlementId": "31cdf47f-b249-4edd-9319-637862d12345",
            "entitlementDescription": "Partner Subscription",
            "pcToBCExchangeRate": 1,
            "pcToBCExchangeRateDate": "2019-08-01T00:00:00Z",
            "effectiveUnitPrice": 0,
            "rateOfPartnerEarnedCredit": 0,
            "rateOfCredit": 1,
            "creditType": "Azure Credit Applied",
            "invoiceLineItemTypce": "usage_line_items",
            "billingProvider": "marketplace",
        "benefitOrderId": "",
            "benefitId": "",
            "benefitType": "Charge",
            "attributes": {
                "objectType": "DailyRatedUsageLineItem"
            }
        }
    ],
    "links": {
        "self": {
            "uri": "/invoices/unbilled/lineitems?provider=onetime&invoicelineitemtype=usagelineitems&currencycode=usd&period=previous&size=2000",
            "method": "GET",
            "headers": []
        },
        "next": {
            "uri": "/invoices/unbilled/lineitems?provider=onetime&invoicelineitemtype=usagelineitems&currencycode=usd&period=previous&size=2000&seekOperation=Next",
            "method": "GET",
            "headers": [
                {
                    "key": "MS-ContinuationToken",
                    "value": "AQAAAA=="
                }
            ]
        }
    },
    "attributes": {
        "objectType": "Collection"
    }
}

Anforderungsantwort (Beispiel 2)

Die folgenden Details gelten für dieses Beispiel:

  • Anbieter: OneTime
  • InvoiceLineItemType: UsageLineItems
  • Zeitraum: Vorheriger
  • SeekOperation: Next

Anforderungsbeispiel 2

GET https://api.partnercenter.microsoft.com/v1/invoices/unbilled/lineitems?provider=onetime&invoiceLineItemType=usagelineitems&currencyCode=usd&period=previous&size=2000&seekoperation=next HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-ContinuationToken: d19617b8-fbe5-4684-a5d8-0230972fb0cf,0705c4a9-39f7-4261-ba6d-53e24a9ce47d_a4ayc/80/OGda4BO/1o/V0etpOqiLx1JwB5S3beHW0s=,0d81c700-98b4-4b13-9129-ffd5620f72e7
MS-RequestId: 1234ecb8-37af-45f4-a1a1-358de3ca2b9e
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
X-Locale: en-US
MS-PartnerCenter-Application: Partner Center .NET SDK Samples
Host: api.partnercenter.microsoft.com

Antwortbeispiel 2

HTTP/1.1 200 OK
Content-Length: 2484
Content-Type: application/json; charset=utf-8
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
MS-RequestId: 1234ecb8-37af-45f4-a1a1-358de3ca2b9e
MS-CV: bpqyomePDUqrSSYC.0
MS-ServerId: 202010406
Date: Wed, 20 Feb 2019 19:59:27 GMT

{
    "totalCount": 1,
    "items": [
        {
            "partnerId": "00083575-bbd0-54de-b2ad-0f5b0e927d71",
            "partnerName": "MTBC",
            "customerId": "",
            "customerName": "",
            "customerDomainName": "",
            "invoiceNumber": "",
            "productId": "",
            "skuId": "",
            "availabilityId": "",
            "skuName": "VM-Series Next-Generation Firewall (Bundle 2 PAYG)",
            "productName": "VM-Series Next Generation Firewall",
            "publisherName": "Test Alto Networks, Inc.",
            "publisherId": "",
            "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
            "subscriptionDescription": "Pay-As-You-Go",
            "chargeStartDate": "2019-01-01T00:00:00Z",
            "chargeEndDate": "2019-02-01T00:00:00Z",
            "usageDate": "2019-01-02T00:00:00Z",
            "meterType": "1 Compute Hour - 4core",
            "meterCategory": "Virtual Machine Licenses",
            "meterId": "4core",
            "meterSubCategory": "VM-Series Next Generation Firewall",
            "meterName": "VM-Series Next Generation Firewall - VM-Series Next-Generation Firewall (Bundle 2 PAYG) - 4 Core Hours",
            "meterRegion": "",
            "unitOfMeasure": "1 Hour",
            "resourceLocation": "EASTUS",
            "consumedService": "Microsoft.Compute",
            "resourceGroup": "ECH-PAN-RG",
            "resourceUri": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ECH-PAN-RG/providers/Microsoft.Compute/virtualMachines/echpanfw",
            "tags": "",
            "additionalInfo": "{  \"ImageType\": null,  \"ServiceType\": \"Standard_D3_v2\",  \"VMName\": null,  \"VMProperties\": null,  \"UsageType\": \"ComputeHR_SW\"}",
            "serviceInfo1": "",
            "serviceInfo2": "",
            "customerCountry": "",
            "mpnId": "1234567",
            "resellerMpnId": "",
            "chargeType": "",
            "unitPrice": 1.2799888920023,
            "quantity": 24.0,
            "unitType": "",
            "billingPreTaxTotal": 30.7197334080551,
            "billingCurrency": "USD",
            "pricingPreTaxTotal": 30.7197334080551,
            "pricingCurrency": "USD",
            "entitlementId": "31cdf47f-b249-4edd-9319-637862d8c0b4",
            "entitlementDescription": "Partner Subscription",
            "pcToBCExchangeRate": 1,
            "pcToBCExchangeRateDate": "2019-08-01T00:00:00Z",
            "effectiveUnitPrice": 0,
            "rateOfPartnerEarnedCredit": 0.15,
            "rateOfCredit": 0.15,
            "creditType": "Partner Earned Credit Applied",
            "invoiceLineItemType": "usage_line_items",
            "billingProvider": "marketplace",
        "benefitOrderId": "",
            "benefitId": "",
            "benefitType": "Charge",
            "attributes": {
                "objectType": "DailyRatedUsageLineItem"
            }
        }
    ],
    "links": {
        "self": {
             "uri": "/invoices/unbilled/lineitems?provider=onetime&invoicelineitemtype=usagelineitems&currencycode=usd&period=previous&size=2000",
            "method": "GET",
            "headers": []
        }
    },
    "attributes": {
        "objectType": "Collection"
    }
}