Comparteix a través de


API de conciliación de uso facturada y no facturada diaria v2 (GA)

Se aplica a: Centro de partners (no disponible en Azure Government o Azure China 21Vianet).

Nuestra nueva API asincrónica ofrece una manera más rápida y eficaz de acceder a los datos de facturación y conciliación a través de blobs de Azure. En lugar de mantener abierta una conexión durante horas o procesar lotes de 2000 elementos de línea, ahora puede simplificar el flujo de trabajo.

Las nuevas API de conciliación de uso calificadas diariamente de comercio usan técnicas avanzadas como la clave de valet y los patrones asincrónicos de solicitud-respuesta . Estas API proporcionan un token de firma de acceso compartido (SAS) que puede usar para acceder a todos los atributos o a un subconjunto de los datos de conciliación de uso clasificados diariamente.

Nuestras API usan técnicas optimizadas para aumentar su eficiencia, por lo que puede lograr resultados más rápidos con menos esfuerzo. Adopte estas API para simplificar el acceso a los datos y mejorar la eficacia general.

Nota:

Las nuevas API no se hospedan en el host de api del Centro de partners. En su lugar, puede encontrarlos en MS Graph en Uso de Microsoft Graph API para exportar datos de facturación de asociados: Microsoft Graph v1.0 | Microsoft Learn. Para acceder a estas API, consulte los detalles siguientes.

Ahora solo puede usar estas API para la nube pública o global de MS Graph. Aún no están disponibles para Azure Government o Azure China 21Vianet.

Importante

Para permitir que la aplicación acceda a los datos de facturación de asociados, siga este vínculo y familiarícese con los conceptos básicos de autenticación y autorización de Microsoft Graph.

Puede asignar el permiso "PartnerBilling.Read.All" mediante Azure Portal o el Centro de administración de Entra. A continuación, se indica cómo puede hacerlo.

  • Registre la aplicación en la página principal de Microsoft Entra en la sección Registros de aplicaciones.
  • Para conceder el permiso necesario, vaya a la página Aplicación de Microsoft Entra en la sección Permisos de API. Seleccione "Agregar un permiso" y elija el ámbito "PartnerBilling.Read.All".

Al completar estos pasos, asegúrese de que la aplicación tiene el acceso necesario a los datos de facturación de asociados.

Nota:

Si ha estado usando nuestra versión beta, es probable que encuentre la transición a la versión de disponibilidad general (GA) fluida e intuitiva. Para ayudarle a comprender las actualizaciones y mejoras, se recomienda comparar las versiones beta y GA.

Importante

El nuevo uso diario del comercio no incluye 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

Introducción a la API

Para ayudarle a recuperar los nuevos artículos de línea de uso diario facturados diariamente de forma asincrónica, ofrecemos dos puntos de conexión clave de API. Esta es una guía simplificada para empezar a trabajar:

Punto de conexión de elemento de línea de uso

En primer lugar, use esta API para capturar nuevos elementos de línea de uso clasificados diariamente por el comercio . Al realizar una solicitud, recibirá un estado HTTP 202 y un encabezado de ubicación con una dirección URL. Sondee esta dirección URL con regularidad hasta que obtenga un estado correcto y una dirección URL de manifiesto.

Punto de conexión de estado de la operación

A continuación, siga comprobando el estado de la operación llamando a esta API a intervalos regulares. Si los datos no están listos, la respuesta incluye un encabezado Retry-After que indica cuánto tiempo debe esperar antes de volver a intentarlo. Una vez completada la operación, recibirá un recurso de manifiesto con un vínculo de carpeta de almacenamiento para descargar los datos de uso. La respuesta segmenta los archivos para mejorar el rendimiento y permitir el paralelismo de E/S.

Siguiendo estos pasos, puede administrar eficazmente el proceso de conciliación de facturas.

Diagrama de secuencia

Este es un diagrama de secuencia que muestra los pasos para descargar los datos de conciliación.

Diagrama que muestra los pasos para descargar la conciliación.

Secuencia de acciones del usuario

Para recuperar nuevos artículos de línea de conciliación de uso con clasificación diaria comercial, siga estos pasos:

Paso 1: Enviar solicitud

Envíe una solicitud POST al punto de conexión de API.

Obtención de elementos de línea de uso no facturados diarios

Obtenga nuevos artículos de línea de uso no facturados diariamente para el mes actual o el último mes natural o período de facturación.

Nota:

Puede acceder a los elementos de línea de uso no facturados diariamente a través de la API o el portal del Centro de partners. Para garantizar la precisión de los datos, permita hasta 24 horas para la disponibilidad. Dependiendo de su ubicación y cuando los medidores notifiquen el uso, puede haber más retrasos.

Priorizamos la entrega del tiempo de los datos de uso valorados diariamente en primer lugar. En ocasiones, es posible que no vea los datos de uso no facturados diarios más recientes hasta que estén disponibles los datos de uso facturados del mes anterior. Una vez que reciba los datos de uso facturados, podrá recuperar todos los datos de uso no facturados actualizados desde el inicio del mes.

Su comprensión y paciencia se aprecian a medida que nos esforzamos por proporcionar la información más precisa y oportuna posible.

Solicitud a la 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"

}
Cuerpo de la solicitud
Atributo Obligatorio Type Descripción
attributeSet False Cadena Elija "full" para todos los atributos o "básico" para un conjunto limitado. Si no se especifica, "full" es el valor predeterminado. Compruebe la lista de atributos de esta sección). Opcional.
billingPeriod True String Para obtener el uso diario clasificado para el mes actual o el último mes natural o período de facturación, use "current" o "last" (igual que "anterior" en la API v1). Necesario.
currencyCode True String Código de moneda de facturación de partners. Necesario.
Encabezados de solicitud

Para solicitar encabezados para la API, consulte Confiabilidad y soporte técnico.

Respuesta de la API
HTTP/1.1 202 Accepted  
Location: https://graph.microsoft.com/v1.0/reports/partners/billing/operations/9ab9cb54-d07f-4f52-9ea6-a09d7de52c14

Normalmente, la API responde con un estado HTTP 202. También puede encontrar otros estados en función de las solicitudes. Estos estados se enumeran en la sección Estados de respuesta de api estándar .

Código Descripción
202 – Aceptado Se aceptó la solicitud. Para comprobar el estado de la solicitud, consulte la dirección URL proporcionada en el encabezado de ubicación.

Obtención de elementos de línea de uso valorados diariamente facturados

Obtenga nuevos artículos de línea de uso facturados diariamente para una factura para el período de facturación cerrado.

Solicitud a la API
POST https://graph.microsoft.com/v1.0/reports/partners/billing/usage/billed/export

{  
"invoiceId": "G00012345",  
"attributeSet": "full"  
}

Parámetros de consulta

N/D

Cuerpo de la solicitud
Atributo Obligatorio Type Descripción
invoiceId True String Un identificador único para cada factura. Necesario.
attributeSet False Cadena Elija "full" para todos los atributos o "básico" para un conjunto limitado. Si no se especifica, "full" es el valor predeterminado. Compruebe la lista de atributos de esta sección. Opcional.
Encabezado de solicitud

Encabezados de solicitud para la API. Para más información, consulte la confiabilidad y la compatibilidad.

Respuesta de la API

HTTP/1.1 202 Aceptado
Ubicación: https://graph.microsoft.com/v1.0/reports/partners/billing/operations/9ab9cb54-d07f-4f52-9ea6-a09d7de52c14

Cuando se usa la API, normalmente devuelve un estado HTTP 202. Para ver otros estados posibles en función de las solicitudes, consulte Estados.

Código Descripción
202 – Aceptado Se aceptó la solicitud. Para comprobar el estado de la solicitud, consulte la dirección URL proporcionada en el encabezado de ubicación.

Paso 2: Comprobar el estado de la solicitud

Para realizar un seguimiento del estado de una solicitud, asegúrese de recibir una respuesta HTTP 200 que indica "correcto" o "error". Si se ejecuta correctamente, encontrará la dirección URL del manifiesto en el atributo "resourceLocation". Este atributo proporciona un punto de conexión para acceder a la información necesaria.

Obtener el estado de la operación

Recupera el estado de una solicitud.

Solicitud a la API

GET https://graph.microsoft.com/v1.0/reports/partners/billing/operations/9ab9cb54-d07f-4f52-9ea6-a09d7de52c14

Parámetros de solicitud
Nombre Incluir en Obligatorio Type Descripción
operationId URI de solicitud True String Identificador único para comprobar el estado de la solicitud. Necesario.
Encabezado de solicitud

Para solicitar encabezados para la API, consulte Confiabilidad y soporte técnico.

Cuerpo de la solicitud

N/A.

Estado de respuesta

Además de los estados HTTP estándar enumerados en los estados de respuesta de la API estándar, la API también puede devolver el siguiente estado HTTP:

Código Descripción
410 – Desaparecido El vínculo de manifiesto expira después de una hora establecida. Para obtener de nuevo el vínculo del manifiesto, envíe una nueva solicitud.
Carga de respuesta

La carga de respuesta de la API incluye los siguientes atributos:

Atributo Obligatorio Descripción
id True Identificador único para cada respuesta. Necesario.
status True Valores y acciones: Obligatorio:

notstarted: espere el tiempo especificado en el encabezado "Retry-After" y, a continuación, realice otra llamada para comprobar el estado.

running: espere el tiempo especificado en el encabezado "Retry-After" y, a continuación, realice otra llamada para comprobar el estado.

correcto: los datos están listos. Recupere la carga del manifiesto mediante el URI especificado en resourceLocation.

failed: la operación no se pudo realizar de forma permanente. Reinícielo.
createdDateTime True Hora a la que se realizó la solicitud. Necesario.
lastActionDateTime True La última vez que cambió el estado. Necesario.
resourceLocation False Identificador URI de la carga del manifiesto. Opcional.
error False Detalles sobre los errores, proporcionados en formato JSON.
Opcional.
Atributos incluidos:
message: Descripción del error.
code: el tipo de error.
Objeto de ubicación de recursos
Atributo Descripción
id Identificador único del manifiesto.
schemaVersion Versión del esquema del manifiesto.
dataFormat Formato del archivo de datos de facturación.

compressedJSON: formato de datos donde cada blob es un archivo comprimido que contiene datos en formato de líneas JSON . Para recuperar los datos de cada blob, descomprima.
createdDateTime Fecha y hora en que se creó el archivo de manifiesto.
eTag Versión de los datos del manifiesto. Un cambio en la información de facturación genera un nuevo valor.
partnerTenantId Id. de Microsoft Entra del inquilino del asociado.
rootDirectory Directorio raíz del archivo.
sasToken Token de SAS (firma de acceso compartido) que le permite leer todos los archivos del directorio.
partitionType Divide los datos en varios blobs en función del atributo "partitionValue". El sistema divide las particiones que superan el número admitido. De forma predeterminada, los datos se particionan en función del número de elementos de línea del archivo. No establezca un número fijo de elementos de línea o tamaño de archivo en el código, ya que estos valores pueden cambiar.
blobCount Número total de archivos para este identificador de inquilino del asociado.
blobs Matriz JSON de objetos "blob" que contienen los detalles del archivo para el identificador de inquilino del asociado.
objeto de blob Objeto que contiene los siguientes detalles: name y partitionValue
nombre Nombre del blob.
partitionValue Partición que contiene el archivo. La partición grande se divide en varios archivos, con cada archivo que contiene el mismo "partitionValue".
Solicitud a la API
GET <https://graph.microsoft.com/v1.0/reports/partners/billing/operations/9ab9cb54-d07f-4f52-9ea6-a09d7de52c14>
Respuesta de la API

La respuesta recomienda esperar 10 segundos antes de intentarlo de nuevo al procesar datos.

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"  
}
Solicitud a la API

(10 segundos después de la solicitud anterior...)

GET <https://graph.microsoft.com/v1.0/reports/partners/billing/operations/9ab9cb54-d07f-4f52-9ea6-a09d7de52c14>
Respuesta de la API

La API devuelve el estado "correcto" y el URI de "resourceLocation".

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": "0e195b37-4574-4539-bc42-0e539b9684c0",

        "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"

            }

        \]

    }

}

Paso 3: Descarga de elementos de línea de conciliación de uso clasificados diariamente de Azure Blob Storage

En primer lugar, debe obtener el token de firma de acceso compartido (SAS) y la ubicación de Blob Storage. Puede encontrar estos detalles en las propiedades "sasToken" y "rootDirectory" de la respuesta de la API de carga de manifiesto. Después, para descargar y descomprimir el archivo de blob, use el SDK o la herramienta de Azure Storage. Está en el formato JSONLines .

Sugerencia

Asegúrese de consultar nuestro código de ejemplo. Muestra cómo descargar y descomprimir el archivo de blob de Azure en la base de datos local.

Estados de respuesta de API estándar

Es posible que reciba estos estados HTTP de la respuesta de la API:

Código Descripción
400: Solicitud incorrecta Falta la solicitud o contiene datos incorrectos. Compruebe el cuerpo de la respuesta para obtener los detalles del error.
401 - No autorizado Se requiere autenticación antes de realizar la primera llamada. Autentíquese con el servicio de API del asociado.
403 - Prohibido No tiene la autorización necesaria para realizar la solicitud.
404 – Not Found Los recursos solicitados no están disponibles con los parámetros de entrada proporcionados.
410 – Desaparecido El vínculo del manifiesto ya no es válido ni activo. Envíe una nueva solicitud.
500: Error interno del servidor La API o sus dependencias no pueden cumplir la solicitud en este momento. Vuelva a intentarlo más tarde.
5000: no hay datos disponibles El sistema no tiene datos para los parámetros de entrada proporcionados.

Comparación de versiones beta y de disponibilidad general

Consulte la tabla de comparación para ver las diferencias entre las versiones beta y las versiones de disponibilidad general (GA). Si actualmente usa la versión beta, la transición a la versión de disponibilidad general es sencilla y sencilla.

Información importante Beta Disponible en general
Punto de conexión de host de API https://ep-billingreconservice-prod-d5bfczcnfvbqbdhx.z01.azurefd.net/ https://graph.microsoft.com/v1.0/reports/partners/billing/usage/
HTTP method POST PUBLICAR
Punto de conexión de API de uso no facturado diario https://ep-billingreconservice-prod-d5bfczcnfvbqbdhx.z01.azurefd.net/v1/unbilledusage https://graph.microsoft.com/v1.0/reports/partners/billing/usage/unbilled/export
Parámetros de entrada para la API de uso diaria no facturada Para especificar parámetros en la solicitud de API, inclúyelos en la cadena de consulta de la dirección URL de la solicitud.
Por ejemplo, para especificar los parámetros period y currencyCode, anexe ?period=current&currencyCode=usd a la dirección URL de la solicitud.
Para proporcionar entradas, incluya un objeto JSON en el cuerpo de la solicitud. El json debe tener las siguientes propiedades:
* currencyCode: su moneda de facturación. Por ejemplo, USD.
* billingPeriod: período de facturación de la factura. Por ejemplo, actual.
Este es un objeto JSON de ejemplo que incluye las propiedades currencyCode y billingPeriod:<br>{<br> "currencyCode": "USD",<br> "billingPeriod": "current"<br>}
Punto de conexión de API de uso diario facturado https://ep-billingreconservice-prod-d5bfczcnfvbqbdhx.z01.azurefd.net/v1/billedusage/invoices/{InvoiceId} https://graph.microsoft.com/v1.0/reports/partners/billing/usage/billed/export
Parámetros de entrada para la API de uso diaria facturada Para especificar parámetros en la solicitud de API, incluya invoiceId en la dirección URL de la solicitud. Además, puede incluir un parámetro de fragmento opcional en la cadena de consulta para recuperar el conjunto completo de atributos.
Por ejemplo, para recuperar el conjunto completo de atributos, anexe ?fragment=full a la dirección URL de la solicitud.
Para proporcionar entradas, incluya un objeto JSON en el cuerpo de la solicitud. El json debe tener las siguientes propiedades:
* invoiceId: identificador único de la factura. Por ejemplo, G00012345.
* attributeSet: los atributos que deben estar en la respuesta, como full.
Este es un objeto JSON de ejemplo que incluye las propiedades invoiceId y attributeSet:
{<br> "invoiceId": "G00012345",<br> "attributeSet": "full"<br>}
Recurso de manifiesto Use un método GET /manifests/{id} independiente para recuperar el recurso de manifiesto. Use el método GET /operations/{Id} para acceder al recurso de manifiesto en resourceLocation. Este método ahorra tiempo eliminando la necesidad de una llamada independiente a GET /manifests/{id}.
Cambios en el esquema del manifiesto
"id": No disponible "id": identificador único para el recurso de manifiesto.
"version": Disponible "version": cambiado a "schemaversion".
"dataFormat": Disponible "dataFormat": disponible.
"utcCretedDateTime": disponible "utcCretedDateTime": se cambió a "createdDateTime".
"eTag": Disponible "eTag": Disponible.
"partnerTenantId": disponible "partnerTenantId": disponible
"rootFolder": Disponible "rootFolder": cambiado a "rootDirectory".
"rootFolderSAS": disponible "rootFolderSAS": cambiado a "sasToken". Esta actualización proporciona solo el token sin la ruta de acceso del directorio raíz. Para buscar el directorio, use la propiedad "rootDirectory" en su lugar.
"partitionType": Disponible "partitionType": disponible.
"blobCount": disponible "blobCount": disponible.
"sizeInBytes": Disponible "sizeInBytes": no disponible.
"blobs": disponible "blobs": disponible.
"blob object": disponible "blob object": disponible.
"name": Disponible "name": Disponible.
"partitionValue": Disponible "partitionValue": disponible.

Atributos de elemento de línea de conciliación de uso clasificados diariamente

Para comparar los atributos devueltos por la API de conciliación de facturas facturadas para los conjuntos de atributos "completos" o "básicos", consulte la tabla siguiente. Para más información sobre estos atributos, consulte esta documentación.

Attribute Completo Básico
PartnerId
PartnerName
CustomerId
CustomerName
CustomerDomainName no
CustomerCountry no
MpnId no
Tier2MpnId no
InvoiceNumber
ProductId
SkuId
AvailabilityId no
SkuName
ProductName no
PublisherName
PublisherId no
SubscriptionDescription no
SubscriptionId
ChargeStartDate
ChargeEndDate
UsageDate
MeterType no
MeterCategory no
MeterId no
MeterSubCategory no
MeterName no
MeterRegion no
Unidad
ResourceLocation no
ConsumedService no
ResourceGroup no
ResourceURI
ChargeType
UnitPrice
Cantidad
UnitType no
BillingPreTaxTotal
BillingCurrency
PricingPreTaxTotal
PricingCurrency
ServiceInfo1 no
ServiceInfo2 no
Etiquetas no
AdditionalInfo no
EffectiveUnitPrice
PCToBCExchangeRate
PCToBCExchangeRateDate no
EntitlementId
EntitlementDescription no
PartnerEarnedCreditPercentage no
CreditPercentage
CreditType
BenefitOrderID
BenefitID no
BenefitType

Importante

Tome nota de estos cambios al migrar de la API v1 de la versión 2.

  • Cada nombre de atributo comienza ahora con una letra mayúscula .

  • unitOfMeasure se actualiza a Unit. Su significado y valor permanecen sin cambios.

  • resellerMpnId ahora es Tier2MpnId. El significado y el valor son los mismos.

  • rateOfPartnerEarnedCredit se actualiza a PartnerEarnedCreditPercentage. El nuevo nombre y el valor ahora reflejan el porcentaje en lugar de la fracción. Por ejemplo, el 0,15 es ahora el 15 %.

  • rateOfCredit es ahora CreditPercentage. El nombre y el valor han cambiado. Por ejemplo, el 1,00 ahora es del 100 %.

Creemos que estos cambios hacen que las API sean más intuitivas y fáciles de usar.

Código de ejemplo

Para usar esta API, consulte el vínculo siguiente, que incluye código de ejemplo de C#.

Ejemplos de API del Centro de partners: obtener datos de conciliación de facturación.