Partager via


Obtenir les éléments de ligne de la consommation commerciale facturée d’une facture

Remarque

Dates et scénarios de migration clés

La stratégie de transition de version d’API est conçue pour garantir une migration fluide de l’API v1 vers l’API v2, avec un focus sur la maintenance des fonctionnalités et de l’intégrité des données. Voici un guide pour vous aider à sélectionner la version d’API appropriée pour vos besoins :

Scénario A : Données historiques (avant la période de facturation de septembre 2022) :

  • Utilisez cette API exclusivement pour tous vos besoins.

Scénario B : Périodes de facturation récentes (septembre 2022 - mars 2025) :

  • Continuez à utiliser cette API jusqu’au 21 avril 2025, sauf si vous avez déjà passé à l’API v2 GA.

Scénario C : périodes de facturation futures après mars 2025 (après le 21 avril 2025) :

  • Passez à l’API v2 en disponibilité générale pour toutes les futures récupérations de données de période de facturation.

La transition de l’API v1 à l’API v2 implique une planification détaillée et une exécution précise. Pour garantir une transition fluide vers la nouvelle API, visitez : API de rapprochement d’utilisation facturée et non facturée par jour v2 (GA).

Nous apprécions votre attention et nous nous engageons à soutenir votre réussite continue avec nos API de facturation.

Scénario D : Données commerciales héritées (toutes les périodes de facturation) : utilisez cette API exclusivement pour tous vos besoins.

Vous pouvez utiliser les méthodes suivantes pour obtenir un ensemble de détails sur les lignes de facture de consommation commerciale (également appelées lignes d'utilisation quotidienne fermées) pour une facture spécifiée.

Important

Les données d’utilisation évaluées quotidiennement n’incluent pas les frais pour ces produits :

  • Réservation Azure
  • Plan d’épargne Azure
  • Bureau
  • Dynamique
  • Microsoft Power Apps
  • Logiciels perpétuels
  • Abonnement logiciel
  • Produit SaaS non Microsoft ou Microsoft Marketplace

Prérequis

  • Informations d’identification décrites dans l’authentification de l’Espace partenaires. Ce scénario prend en charge l'authentification avec des identifiants d'application autonomes ainsi que des identifiants combinés application+utilisateur.

  • L'ID de facture pour lequel obtenir les éléments de ligne.

C#

Pour obtenir les éléments de ligne commerciale de la facture spécifiée, vous devez récupérer l’objet de facture :

  1. Appelez la méthode ById pour utiliser une interface pour effectuer des opérations sur la facture spécifiée.

  2. Appelez la méthode Get ou GetAsync pour récupérer l’objet de facture. L’objet de facture contient toutes les informations de la facture spécifiée.

Le fournisseur identifie la source des informations détaillées facturées (par exemple, onetime). InvoiceLineItemType spécifie le type (par exemple, UsageLineItem).

L’exemple de code suivant utilise une boucle foreach pour traiter la collection d’éléments de ligne. Une collection distincte d’éléments de ligne est récupérée pour chaque InvoiceLineItemType.

Pour obtenir une collection d’éléments de ligne qui correspondent à une instance InvoiceDetail :

  1. Transmettez billingProvider et InvoiceLineItemType de l’instance à la méthode By .

  2. Appelez la méthode Get ou GetAsync pour récupérer les éléments de ligne associés.

  3. Créez un énumérateur pour parcourir la collection, comme illustré dans l’exemple suivant.

// IAggregatePartner partnerOperations;
// string invoiceId;
// 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(invoiceId).By("onetime", "usagelineitems", curencyCode, period, pageMaxSizeReconLineItems).Get();

var fetchNext = true;

ConsoleKeyInfo keyInfo;

var itemNumber = 1;
while (fetchNext)
{
    Console.Out.WriteLine("\tLine line 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(invoiceId).By("onetime", "usagelineitems", curencyCode, period, pageMaxSizeReconLineItems).Seek(seekBasedResourceCollection.ContinuationToken, SeekOperation.Next);
        }
    }
}

Consultez un exemple :

  • Exemple : Application de test console
  • Projet : Exemples du Kit de développement logiciel (SDK) de l’Espace partenaires
  • Classe : GetBilledConsumptionReconLineItemsPaging.cs

Demande REST

Syntaxe de la requête

Utilisez la première syntaxe pour renvoyer une liste complète de chaque élément de ligne pour la facture donnée. Pour les factures de grande taille, utilisez la deuxième syntaxe avec une taille spécifiée et un décalage basé sur 0 pour renvoyer une liste paginée des éléments de ligne. Utilisez la troisième syntaxe pour obtenir la page suivante des éléments de ligne de rapprochement à l'aide de seekOperation = "Next".

Méthode URI de requête
AVOIR {baseURL}/v1/invoices/{invoice-id}/lineitems ?provider=onetime&invoicelineitemtype=usagelineitems¤cycode={currencycode} HTTP/1.1
AVOIR {baseURL}/v1/invoices/{invoice-id}/lineitems ?provider=onetime&invoicelineitemtype=usagelineitems¤cycode={currencycode}&size={size} HTTP/1.1
AVOIR {baseURL}/v1/invoices/{invoice-id}/lineitems ?provider=onetime&invoicelineitemtype=usagelineitems¤cycode={currencycode}&size={size}&seekOperation=Next

Paramètres d’URI

Utilisez l’URI et les paramètres de requête suivants lors de la création de la requête.

Nom Catégorie Obligatoire Descriptif
identifiant de facture chaîne Oui Chaîne qui identifie la facture.
fournisseur chaîne Oui Le fournisseur : « OneTime ».
type-article-de-facture-de-facture chaîne Oui Le type de détail de la facture : « UsageLineItems ».
code de devise chaîne Oui Code monétaire des éléments de ligne facturés.
période chaîne Oui La période de facturation de la reconstitution. exemple : actuel, précédent.
taille nombre Non Nombre maximal d’éléments à retourner. La taille par défaut est 2000
seekOperation chaîne Non Définissez seekOperation=Next pour obtenir la page suivante des éléments de ligne de reconnaissance.

En-têtes de requête

Pour plus d’informations, consultez les en-têtes REST de l’Espace partenaires.

Corps de la demande

Aucune.

Réponse REST

Si elle réussit, la réponse contient la collection de détails d’articles.

Pour la ligne d'élément ChargeType, la valeur Achat correspond à Nouveau. La valeur Remboursement est mappée à Annuler.

Codes d’erreur et de réussite de la réponse

Chaque réponse est fournie avec un code d’état HTTP qui indique la réussite ou l’échec et d’autres informations de débogage. Utilisez un outil de suivi réseau pour lire ce code, le type d’erreur et d’autres paramètres. Pour obtenir la liste complète, consultez les codes d’erreur REST de l’Espace partenaires.

Exemples REST

Exemple de demande-réponse 1

Les détails de cet exemple de requête et de réponse REST sont les suivants :

  • Fournisseur : OneTime
  • InvoiceLineItemType : UsageLineItems
  • Période : précédent

Exemple de requête 1

GET https://api.partnercenter.microsoft.com/v1/invoices/T000001234/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

Important

Depuis juin 2023, la dernière version du Kit de développement logiciel (SDK) .NET de l’Espace partenaires version 3.4.0 est désormais archivée. Vous pouvez télécharger la version de la release du SDK à partir de GitHub, ainsi qu'un fichier README contenant des informations utiles.

Les partenaires sont encouragés à continuer à utiliser les API REST du Partner Center.

Exemple de réponse 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": "2b8940db-5089-539c-e757-520ed1d1bc88",
            "partnerName": "",
            "customerId": "",
            "customerName": "",
            "customerDomainName": "",
            "invoiceNumber": "T000001234",
            "productId": "",
            "skuId": "",
            "availabilityId": "",
            "skuName": "Test Test on Windows 2012 R2 (WebHost)",
            "productName": "Test Test on Windows",
            "publisherName": "Test",
            "publisherId": "28503520",
            "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
            "subscriptionDescription": "Subscription 10",
            "chargeStartDate": "2018-11-01T00:00:00Z",
            "chargeEndDate": "2018-12-01T00:00:00Z",
            "usageDate": "2018-11-13T00:00:00Z",
            "meterType": "1 Compute Hour - 1core",
            "meterCategory": "Virtual Machine Licenses",
            "meterId": "1core",
            "meterSubCategory": "Test Test on Windows",
            "meterName": "Test Test on Windows - Test Test on Windows 2012 R2 (WebHost) - 1 Core Hours",
            "meterRegion": "",
            "unitOfMeasure": "1 Hour",
            "resourceLocation": "EASTUS2",
            "consumedService": "Microsoft.Compute",
            "resourceGroup": "TestWINRG",
            "resourceUri": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/TestWINRG/providers/Microsoft.Compute/virtualMachines/testWinTest",
            "tags": "",
            "additionalInfo": "{  \"ImageType\": null,  \"ServiceType\": \"Standard_B1s\",  \"VMName\": null,  \"VMProperties\": null,  \"UsageType\": \"ComputeHR_SW\"}",
            "serviceInfo1": "",
            "serviceInfo2": "",
            "customerCountry": "",
            "mpnId": "1234567",
            "resellerMpnId": "",
            "chargeType": "new",
            "unitPrice": 0.0209496384791679,
            "quantity": 23.200004,
            "unitType": "1 Hour",
            "billingPreTaxTotal": 0.486031696515249,
            "billingCurrency": "USD",
            "pricingPreTaxTotal": 0.486031696515249,
            "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": "2b8940db-5089-539c-e757-520ed1d1bc88",
            "partnerName": "",
            "customerId": "",
            "customerName": "",
            "customerDomainName": "",
            "invoiceNumber": "T000001234",
            "productId": "",
            "skuId": "",
            "availabilityId": "",
            "skuName": "Test Test on Ubuntu 16.04 (WebHost)",
            "productName": "Test Test on Linux",
            "publisherName": "Test",
            "publisherId": "28503520",
            "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
            "subscriptionDescription": "Subscription 10",
            "chargeStartDate": "2018-11-01T00:00:00Z",
            "chargeEndDate": "2018-12-01T00:00:00Z",
            "usageDate": "2018-11-13T00:00:00Z",
            "meterType": "1 Compute Hour - 1core",
            "meterCategory": "Virtual Machine Licenses",
            "meterId": "1core",
            "meterSubCategory": "Test Test on Linux",
            "meterName": "Test Test on Linux - Test Test on Ubuntu 16.04 (WebHost) - 1 Core Hours",
            "meterRegion": "",
            "unitOfMeasure": "1 Hour",
            "resourceLocation": "EASTUS",
            "consumedService": "Microsoft.Compute",
            "resourceGroup": "TESTRG",
            "resourceUri": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/TestRG/providers/Microsoft.Compute/virtualMachines/testUbuntuTest",
            "tags": "",
            "additionalInfo": "{  \"ImageType\": null,  \"ServiceType\": \"Standard_B1s\",  \"VMName\": null,  \"VMProperties\": null,  \"UsageType\": \"ComputeHR_SW\"}",
            "serviceInfo1": "",
            "serviceInfo2": "",
            "customerCountry": "",
            "mpnId": "1234567",
            "resellerMpnId": "",
            "chargeType": "new",
            "unitPrice": 0.0209951014286867,
            "quantity": 23.350007,
            "unitType": "1 Hour",
            "billingPreTaxTotal": 0.490235765325545,
            "billingCurrency": "USD",
            "pricingPreTaxTotal": 0.490235765325545,
            "pricingCurrency": "USD",
            "entitlementId": "66bada28-271e-4b7a-aaf5-c0ead6312345",
            "entitlementDescription": "Partner Subscription",
            "pcToBCExchangeRate": 1,
            "pcToBCExchangeRateDate": "2019-08-01T00:00:00Z",
            "effectiveUnitPrice": 0.1999968000511991808131,
            "rateOfPartnerEarnedCredit": 0,
            "rateOfCredit": 1,
            "creditType": "Azure Credit Applied",
            "invoiceLineItemType": "usage_line_items",
            "billingProvider": "marketplace",
	    "benefitOrderId": "",
            "benefitId": "",
            "benefitType": "Charge",
            "attributes": {
                "objectType": "DailyRatedUsageLineItem"
            }
        }
    ],
    "links": {
        "self": {
            "uri": "/invoices/T000001234/lineitems?provider=onetime&invoicelineitemtype=usagelineitems&currencycode=usd&period=previous&size=2000",
            "method": "GET",
            "headers": []
        },
        "next": {
            "uri": "/invoices/T000001234/lineitems?provider=onetime&invoicelineitemtype=usagelineitems&currencycode=usd&period=previous&size=2000&seekOperation=Next",
            "method": "GET",
            "headers": [
                {
                    "key": "MS-ContinuationToken",
                    "value": "AQAAAA=="
                }
            ]
        }
    },
    "attributes": {
        "objectType": "Collection"
    }
}

Exemple de demande-réponse 2

Les détails de cet exemple de requête et de réponse REST sont les suivants :

  • Fournisseur : OneTime
  • InvoiceLineItemType : UsageLineItems
  • Période : précédent
  • SeekOperation : Suivant

Exemple de requête 2

GET https://api.partnercenter.microsoft.com/v1/invoices/T000001234/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

Exemple de réponse 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": "2b8940db-5089-539c-e757-520ed1d1bc88",
            "partnerName": "",
            "customerId": "",
            "customerName": "",
            "customerDomainName": "",
            "invoiceNumber": "T000001234",
            "productId": "",
            "skuId": "",
            "availabilityId": "",
            "skuName": "Test Test on Windows 2012 R2 (WebHost)",
            "productName": "Test Test on Windows",
            "publisherName": "Test",
            "publisherId": "28503520",
            "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
            "subscriptionDescription": "Subscription 10",
            "chargeStartDate": "2018-11-01T00:00:00Z",
            "chargeEndDate": "2018-12-01T00:00:00Z",
            "usageDate": "2018-11-13T00:00:00Z",
            "meterType": "1 Compute Hour - 1core",
            "meterCategory": "Virtual Machine Licenses",
            "meterId": "1core",
            "meterSubCategory": "Test Test on Windows",
            "meterName": "Test Test on Windows - Test Test on Windows 2012 R2 (WebHost) - 1 Core Hours",
            "meterRegion": "",
            "unitOfMeasure": "1 Hour",
            "resourceLocation": "EASTUS2",
            "consumedService": "Microsoft.Compute",
            "resourceGroup": "TestWINRG",
            "resourceUri": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/TestWINRG/providers/Microsoft.Compute/virtualMachines/testWinTest",
            "tags": "",
            "additionalInfo": "{  \"ImageType\": null,  \"ServiceType\": \"Standard_B1s\",  \"VMName\": null,  \"VMProperties\": null,  \"UsageType\": \"ComputeHR_SW\"}",
            "serviceInfo1": "",
            "serviceInfo2": "",
            "customerCountry": "",
            "mpnId": "1234567",
            "resellerMpnId": "",
            "chargeType": "new",
            "unitPrice": 0.0209496384791679,
            "quantity": 23.200004,
            "unitType": "1 Hour",
            "billingPreTaxTotal": 0.486031696515249,
            "billingCurrency": "USD",
            "pricingPreTaxTotal": 0.486031696515249,
            "pricingCurrency": "USD",
            "entitlementId": "66bada28-271e-4b7a-aaf5-c0ead6312345",
            "entitlementDescription": "Partner Subscription",
            "pcToBCExchangeRate": 1,
            "pcToBCExchangeRateDate": "2019-08-01T00:00:00Z",
            "effectiveUnitPrice": 0.1835431430074643112595,
            "rateOfPartnerEarnedCredit": 0.15,
            "rateOfCredit": 0.15,
            "creditType": "Partner Earned Credit Applied",
            "benefitOrderId": "",
            "benefitId": "",
            "benefitType": "Charge",
            "attributes": {
                "objectType": "DailyRatedUsageLineItem"
            }
        }
    ],
    "links": {
        "self": {
             "uri": "/invoices/T000001234/lineitems?provider=onetime&invoicelineitemtype=usagelineitems&currencycode=usd&period=previous&size=2000",
            "method": "GET",
            "headers": []
        }
    },
    "attributes": {
        "objectType": "Collection"
    }
}