Obtenga los artículos de la línea de consumo comercial facturados
Nota:
Después del 21 de enero de 2025, puede seguir usando esta API, pero no para cada período de facturación. Aquí se muestra cómo elegir la versión adecuada en función de sus necesidades:
Objetivo: recuperar elementos de línea de uso clasificados diariamente para períodos de facturación de septiembre de 2022 a diciembre de 2024.
Acción: use esta API hasta el 21 de enero de 2025, a menos que ya haya cambiado a api v2 GA.
Objetivo: recuperar elementos de línea de uso clasificados diariamente para los períodos de facturación antes de septiembre de 2022.
Acción: use esta API exclusivamente.
Objetivo: recupere los elementos de línea de uso clasificados diariamente para los períodos de facturación desde septiembre de 2022 en adelante, pero solo después del 21 de enero de 2025.
Acción: use solo api v2 GA.
Para una transición sin problemas a las nuevas API, siga este vínculo: API de conciliación de uso facturada y no facturada diaria v2 (GA).
Gracias por su atención y esperamos su éxito continuo con nuestras API de facturación.
Puede usar los métodos siguientes para obtener una colección de detalles para los elementos de línea de factura de consumo comercial (también conocidos como elementos de línea de uso diario cerrados clasificados diariamente) para una factura especificada.
Importante
Los datos de uso clasificados diariamente no incluyen los cargos por estos productos:
- Reserva de Azure
- Plan de ahorro de Azure
- Office
- Dynamics
- Microsoft Power Apps
- Software perpetuo
- Suscripción de software
- Producto SaaS que no es de Microsoft o Marketplace
Requisitos previos
Credenciales tal como se describen en el artículo Autenticación del Centro de partners. Este escenario admite la autenticación con credenciales de aplicación independiente y app+usuario.
Identificador de factura para el que se van a obtener los elementos de línea.
C#
Para obtener los elementos de línea comercial de la factura especificada, debe recuperar el objeto invoice:
Llame al método ById para obtener una interfaz para las operaciones de factura de la factura especificada.
Llame al método Get o GetAsync para recuperar el objeto invoice. El objeto invoice contiene toda la información de la factura especificada.
El proveedor identifica el origen de la información detallada facturada (por ejemplo, una vez). InvoiceLineItemType especifica el tipo (por ejemplo, UsageLineItem).
En el código de ejemplo siguiente se usa un bucle foreach para procesar la colección de elementos de línea. Se recupera una colección independiente de elementos de línea para cada InvoiceLineItemType.
Para obtener una colección de elementos de línea que corresponden a una instancia de InvoiceDetail :
Pase billingProvider y InvoiceLineItemType de la instancia al método By.
Llame al método Get o GetAsync para recuperar los elementos de línea asociados.
Cree un enumerador para recorrer la colección como se muestra en el ejemplo siguiente.
// 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);
}
}
}
Vea un ejemplo:
- Ejemplo: Aplicación de prueba de consola
- Proyecto: Ejemplos del SDK del Centro de partners
- Clase: GetBilledConsumptionReconLineItemsPaging.cs
Solicitud REST
Sintaxis de la solicitud
Use la primera sintaxis para devolver una lista completa de cada elemento de línea de la factura especificada. Para facturas amplias, use la segunda sintaxis con un tamaño específico y un desplazamiento con valor 0 para así devolver una lista paginada de elementos de línea. Use la tercera sintaxis para obtener la siguiente página de elementos de línea de conciliación mediante seekOperation = "Next"
.
Método | URI de solicitud |
---|---|
GET | {baseURL}/v1/invoices/{invoice-id}/lineitems?provider=onetime&invoicelineitemtype=usagelineitems¤cycode={currencycode} HTTP/1.1 |
GET | {baseURL}/v1/invoices/{invoice-id}/lineitems?provider=onetime&invoicelineitemtype=usagelineitems¤cycode={currencycode}&size={size} HTTP/1.1 |
GET | {baseURL}/v1/invoices/{invoice-id}/lineitems?provider=onetime&invoicelineitemtype=usagelineitems¤cycode={currencycode}&size={size}&seekOperation=Next |
Parámetros de URI
Use los siguientes parámetros de consulta y URI al crear la solicitud.
Nombre | Type | Obligatorio | Descripción |
---|---|---|---|
invoice-id | string | Sí | Cadena que identifica la factura. |
provider | string | Sí | El proveedor: "OneTime". |
invoice-line-item-type | string | Sí | Tipo de detalle de factura: "UsageLineItems". |
currencyCode | string | Sí | Código de moneda para los elementos de línea facturados. |
period | string | Sí | Período de conciliación facturado. ejemplo: actual, anterior. |
size | number | No | Número máximo de elementos que se van a devolver. El tamaño predeterminado es 2000 |
seekOperation | string | No | Establezca seekOperation=Next para obtener la página siguiente de elementos de línea de conciliación. |
Encabezados de solicitud
Para obtener más información, consulta Encabezados REST del Centro de partners.
Cuerpo de la solicitud
Ninguno.
Respuesta REST
Si se ejecuta correctamente, la respuesta contiene la colección de detalles del elemento de línea.
Para el elemento de línea ChargeType, el valor Comprar se asigna a Nuevo. El valor Reembolso se asigna a Cancelar.
Códigos de error y de respuesta correctos
Cada respuesta incluye un código de estado HTTP que indica éxito o error y otra información de depuración. Use una herramienta de seguimiento de red para leer este código, tipo de error y más parámetros. Para obtener la lista completa, consulta Códigos de error de REST del Centro de partners.
Ejemplos de REST
Ejemplo de solicitud-respuesta 1
Los detalles de esta solicitud y respuesta REST de ejemplo son los siguientes:
- Proveedor: OneTime
- InvoiceLineItemType: UsageLineItems
- Período: Anterior
Ejemplo de solicitud 1
GET https://api.partnercenter.microsoft.com/v1/invoices/T000001234/lineitems?provider=onetime&invoicelineitemtype=usagelineitems¤cycode=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
Importante
A partir de junio de 2023, la versión 3.4.0 más reciente del SDK de .NET del Centro de partners ahora está archivada. Puede descargar esta versión del SDK de GitHub, junto con un archivo Léame que contiene información útil.
Se recomienda a los partners seguir usando las API REST del Centro de partners.
Ejemplo de respuesta 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¤cycode=usd&period=previous&size=2000",
"method": "GET",
"headers": []
},
"next": {
"uri": "/invoices/T000001234/lineitems?provider=onetime&invoicelineitemtype=usagelineitems¤cycode=usd&period=previous&size=2000&seekOperation=Next",
"method": "GET",
"headers": [
{
"key": "MS-ContinuationToken",
"value": "AQAAAA=="
}
]
}
},
"attributes": {
"objectType": "Collection"
}
}
Ejemplo de solicitud-respuesta 2
Los detalles de esta solicitud y respuesta REST de ejemplo son los siguientes:
- Proveedor: OneTime
- InvoiceLineItemType: UsageLineItems
- Período: Anterior
- SeekOperation: Next
Ejemplo de solicitud 2
GET https://api.partnercenter.microsoft.com/v1/invoices/T000001234/lineitems?provider=onetime&invoiceLineItemType=usagelineitems¤cyCode=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
Ejemplo de respuesta 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¤cycode=usd&period=previous&size=2000",
"method": "GET",
"headers": []
}
},
"attributes": {
"objectType": "Collection"
}
}