API di riconciliazione dell'utilizzo con fatturazione e non fatturata giornaliera v2 (GA)
Si applica a: Centro per i partner (non disponibile in Azure per enti pubblici o Azure Cina 21Vianet).
La nuova API asincrona offre un modo più rapido ed efficiente per accedere ai dati di fatturazione e riconciliazione tramite BLOB di Azure. Anziché mantenere aperta una connessione per ore o elaborare batch di 2.000 voci, è ora possibile semplificare il flusso di lavoro.
Le nuove API di riconciliazione dell'utilizzo giornaliero quotidiano usano tecniche avanzate come la chiave di controllo e i modelli asincroni di richiesta-risposta . Queste API forniscono un token di firma di accesso condiviso (SAS) che è possibile usare per accedere a tutti gli attributi o a un subset dei dati di riconciliazione dell'utilizzo valutato giornaliero.
Le API usano tecniche ottimizzate per migliorare l'efficienza, in modo da ottenere risultati più veloci con meno sforzo. Adottare queste API per semplificare l'accesso ai dati e migliorare l'efficienza complessiva.
Nota
Le nuove API non sono ospitate nell'host API del Centro per i partner. Al contrario, è possibile trovarli in MS Graph in Usare l'API Microsoft Graph per esportare i dati di fatturazione dei partner - Microsoft Graph v1.0 | Microsoft Learn. Per accedere a queste API, fare riferimento ai dettagli seguenti.
È possibile usare queste API solo per il cloud pubblico/globale MS Graph. Non sono ancora disponibili per Azure per enti pubblici o Azure Cina 21Vianet.
Importante
Per consentire all'app di accedere ai dati di fatturazione dei partner, seguire questo collegamento e acquisire familiarità con le nozioni di base sull'autenticazione e sull'autorizzazione per Microsoft Graph.
È possibile assegnare l'autorizzazione "PartnerBilling.Read.All" usando il portale di Azure o l'interfaccia di amministrazione di Entra. Ecco come fare:
- Registrare l'app nella home page di Microsoft Entra nella sezione Registrazioni app.
- Per concedere l'autorizzazione necessaria, passare alla pagina Microsoft Entra App nella sezione Autorizzazioni API. Selezionare "Aggiungi un'autorizzazione" e scegliere l'ambito "PartnerBilling.Read.All".
Completando questi passaggi, assicurarsi che l'app abbia l'accesso necessario ai dati di fatturazione dei partner.
Nota
Se si usa la versione beta, è probabile che si trovi la transizione alla versione di disponibilità generale (GA) senza problemi e intuitivi. Per comprendere gli aggiornamenti e i miglioramenti, è consigliabile confrontare le versioni beta e ga.
Importante
Il nuovo utilizzo giornaliero del commercio non include gli addebiti per questi prodotti:
- Prenotazione di Azure
- Piano di risparmio di Azure
- Office
- Dynamics
- Microsoft Power Apps
- Software perpetuo
- Sottoscrizione software
- Prodotto SaaS non Microsoft o marketplace
Panoramica delle API
Per aiutarti a recuperare in modo asincrono i nuovi elementi di utilizzo fatturati ogni giorno, offriamo due endpoint API chiave. Ecco una guida semplificata per iniziare:
Endpoint dell'elemento di riga di utilizzo
Prima di tutto, usare questa API per recuperare le voci di utilizzo giornaliere valutate per il commercio . Quando si effettua una richiesta, si riceve uno stato HTTP 202 e un'intestazione di posizione con un URL. Eseguire regolarmente il polling di questo URL fino a ottenere lo stato di esito positivo e l'URL del manifesto.
Endpoint dello stato dell'operazione
Continuare quindi a controllare lo stato dell'operazione chiamando questa API a intervalli regolari. Se i dati non sono pronti, la risposta include un'intestazione Retry-After che indica quanto tempo attendere prima di riprovare. Al termine dell'operazione, si riceve una risorsa manifesto con un collegamento alla cartella di archiviazione per scaricare i dati di utilizzo. La risposta segmenta i file per migliorare la velocità effettiva e consentire il parallelismo di I/O.
Seguendo questa procedura, è possibile gestire in modo efficiente il processo di riconciliazione della fattura.
Diagramma sequenza
Ecco un diagramma di sequenza che mostra i passaggi per scaricare i dati di riconciliazione.
Sequenza di azioni utente
Per recuperare i nuovi elementi di riconciliazione dell'utilizzo giornaliero, seguire questa procedura:
Passaggio 1: Inviare una richiesta
Inviare una richiesta POST all'endpoint API.
Ottenere voci di utilizzo giornaliero non fatturate
Ottieni nuove voci di utilizzo giornaliere non fatturate giornaliere per il mese corrente o l'ultimo mese di calendario o periodo di fatturazione.
Nota
È possibile accedere alle voci di utilizzo giornaliere non fatturate tramite l'API o il portale del Centro per i partner. Per garantire dati accurati, attendere fino a 24 ore per la disponibilità. A seconda della posizione e quando i contatori segnalano l'utilizzo, potrebbero verificarsi ulteriori ritardi.
Prima di tutto viene assegnata la priorità al recapito in base al tempo dei dati di utilizzo fatturati giornalieri. In alcuni casi, è possibile che non vengano visualizzati i dati di utilizzo giornalieri non fatturati più recenti fino a quando non sono disponibili i dati di utilizzo fatturati del mese precedente. Dopo aver ricevuto i dati di utilizzo fatturati, è possibile recuperare tutti i dati di utilizzo non fatturati aggiornati dall'inizio del mese.
La comprensione e la pazienza sono apprezzate come ci sforziamo di fornire le informazioni più accurate e tempestive possibili.
Richiesta 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"
}
Testo della richiesta
Attributo | Richiesto | Type | Descrizione |
---|---|---|---|
attributeSet | Falso | String | Scegliere "full" per tutti gli attributi o "basic" per un set limitato. Se non specificato, "full" è il valore predefinito. Controllare l'elenco degli attributi in questa sezione. Facoltativo. |
billingPeriod | Vero | String | Per ottenere un utilizzo valutato giornaliero per il mese corrente o ultimo mese di calendario o periodo di fatturazione, usare "current" o "last" (uguale a "previous" nell'API v1). Obbligatorio. |
currencyCode | Vero | String | Codice valuta di fatturazione partner. Obbligatorio. |
Intestazioni delle richieste
Per richiedere intestazioni per l'API, vedere Affidabilità e supporto.
Risposta dell'API
HTTP/1.1 202 Accepted
Location: https://graph.microsoft.com/v1.0/reports/partners/billing/operations/9ab9cb54-d07f-4f52-9ea6-a09d7de52c14
L'API risponde in genere con uno stato HTTP 202. È anche possibile riscontrare altri stati a seconda delle richieste. Questi stati sono elencati nella sezione Stati di risposta API Standard.
Codice | Descrizione |
---|---|
202 – Accettato | La richiesta è stata accettata. Per controllare lo stato della richiesta, eseguire una query sull'URL fornito nell'intestazione del percorso. |
Ottenere le voci di utilizzo valutate giornaliere fatturate
Ottenere le nuove voci di utilizzo fatturate giornaliere fatturate per una fattura per il periodo di fatturazione chiuso.
Richiesta API
POST https://graph.microsoft.com/v1.0/reports/partners/billing/usage/billed/export
{
"invoiceId": "G00012345",
"attributeSet": "full"
}
Parametri di query
N/D
Testo della richiesta
Attributo | Richiesto | Type | Descrizione |
---|---|---|---|
invoiceId | Vero | String | Identificatore univoco per ogni fattura. Obbligatorio. |
attributeSet | Falso | String | Scegliere "full" per tutti gli attributi o "basic" per un set limitato. Se non specificato, "full" è il valore predefinito. Controllare l'elenco degli attributi in questa sezione. Facoltativo. |
Intestazione della richiesta
Intestazioni di richiesta per l'API. Per altre informazioni, vedere l'affidabilità e il supporto.
Risposta dell'API
HTTP/1.1 202 Accettato
Posizione: https://graph.microsoft.com/v1.0/reports/partners/billing/operations/9ab9cb54-d07f-4f52-9ea6-a09d7de52c14
Quando si usa l'API, in genere restituisce uno stato HTTP 202. Per altri possibili stati in base alle richieste, vedere Stati.
Codice | Descrizione |
---|---|
202 – Accettato | La richiesta è stata accettata. Per controllare lo stato della richiesta, eseguire una query sull'URL fornito nell'intestazione del percorso. |
Passaggio 2: Controllare lo stato della richiesta
Per tenere traccia dello stato di una richiesta, assicurarsi di ricevere una risposta HTTP 200 che indica "succeeded" o "failed". In caso di esito positivo, l'URL del manifesto viene trovato nell'attributo "resourceLocation". Questo attributo fornisce un endpoint per l'accesso alle informazioni necessarie.
Ottenere lo stato dell'operazione
Recupera lo stato di una richiesta.
Richiesta API
Parametri della richiesta
Nome | Includi in | Richiesto | Type | Descrizione |
---|---|---|---|---|
operationId | URI delle richiesta | Vero | String | Identificatore univoco per controllare lo stato della richiesta. Obbligatorio. |
Intestazione della richiesta
Per richiedere intestazioni per l'API, vedere Affidabilità e supporto.
Testo della richiesta
N/D.
Stato della risposta
Oltre agli stati HTTP standard elencati negli stati di risposta api standard, l'API può restituire anche lo stato HTTP seguente:
Codice | Descrizione |
---|---|
410 - Via | Il collegamento al manifesto scade dopo un periodo di tempo impostato. Per ottenere di nuovo il collegamento al manifesto, inviare una nuova richiesta. |
Payload della risposta
Il payload della risposta API include gli attributi seguenti:
Attributo | Obbligatorio | Descrizione |
---|---|---|
id | Vero | Identificatore univoco per ogni risposta. Obbligatorio. |
stato | Vero | Valori e azioni: obbligatorio: notstarted: attendere l'ora specificata nell'intestazione "Retry-After", quindi effettuare un'altra chiamata per controllare lo stato. running: attendere il tempo specificato nell'intestazione "Retry-After", quindi effettuare un'altra chiamata per controllare lo stato. succeeded: i dati sono pronti. Recuperare il payload del manifesto usando l'URI specificato in resourceLocation. failed: l'operazione non è riuscita in modo permanente. Riavviarlo. |
createdDateTime | Vero | Ora in cui è stata effettuata la richiesta. Obbligatorio. |
lastActionDateTime | Vero | Ora dell'ultima modifica dello stato. Obbligatorio. |
resourceLocation | Falso | URI per il payload del manifesto. Facoltativo. |
Errore | Falso | Informazioni dettagliate su eventuali errori, forniti in formato JSON. Facoltativo. Attributi inclusi: message: Descrizione dell'errore. code: tipo di errore. |
Oggetto percorso risorsa
Attributo | Descrizione |
---|---|
id | Identificatore univoco per il manifesto. |
schemaVersion | Versione dello schema del manifesto. |
dataFormat | Formato del file di dati di fatturazione. compressedJSON: formato di dati in cui ogni BLOB è un file compresso che contiene dati in formato righe JSON . Per recuperare i dati da ogni BLOB, decomprimerli. |
createdDateTime | Data e ora di creazione del file manifesto. |
eTag | Versione dei dati del manifesto. Una modifica nelle informazioni di fatturazione genera un nuovo valore. |
partnerTenantId | ID Microsoft Entra del tenant del partner. |
rootDirectory | Directory radice del file. |
sasToken | Token di firma di accesso condiviso (firma di accesso condiviso) che consente di leggere tutti i file nella directory. |
partitionType | Divide i dati in più BLOB in base all'attributo "partitionValue". Il sistema suddivide le partizioni che superano il numero supportato. Per impostazione predefinita, i dati vengono partizionati in base al numero di elementi di riga nel file. Non impostare un numero fisso di elementi di riga o dimensioni del file nel codice, perché questi valori potrebbero cambiare. |
blobCount | Numero totale di file per questo ID tenant partner. |
blob | Matrice JSON di oggetti "BLOB" che contengono i dettagli del file per l'ID tenant del partner. |
oggetto BLOB | Oggetto contenente i dettagli seguenti: nome e partitionValue |
name | Nome del BLOB. |
partitionValue | Partizione che contiene il file. La partizione di grandi dimensioni è suddivisa in più file, con ogni file contenente lo stesso "partitionValue". |
Richiesta API
GET <https://graph.microsoft.com/v1.0/reports/partners/billing/operations/9ab9cb54-d07f-4f52-9ea6-a09d7de52c14>
Risposta dell'API
La risposta consiglia di attendere 10 secondi prima di riprovare durante l'elaborazione dei dati.
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"
}
Richiesta API
(10 secondi dopo la richiesta precedente...)
GET <https://graph.microsoft.com/v1.0/reports/partners/billing/operations/9ab9cb54-d07f-4f52-9ea6-a09d7de52c14>
Risposta dell'API
L'API restituisce lo stato "succeeded" e l'URI per "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"
}
\]
}
}
Passaggio 3: Scaricare gli elementi della riga di riconciliazione dell'utilizzo valutato giornaliero dall'archiviazione BLOB di Azure
Prima di tutto, è necessario ottenere il token di firma di accesso condiviso e il percorso di archiviazione BLOB. Questi dettagli sono disponibili nelle proprietà "sasToken" e "rootDirectory" della risposta dell'API del payload del manifesto. Quindi, per scaricare e decomprimere il file BLOB, usare lo strumento/SDK Archiviazione di Azure. È nel formato JSONLines .
Suggerimento
Assicurarsi di controllare il codice di esempio. Illustra come scaricare e decomprimere il file BLOB di Azure nel database locale.
Stati di risposta API standard
È possibile ricevere questi stati HTTP dalla risposta dell'API:
Codice | Descrizione |
---|---|
400 - Richiesta non valida | La richiesta è mancante o contiene dati non corretti. Controllare il corpo della risposta per i dettagli dell'errore. |
401 - Non autorizzato | L'autenticazione è necessaria prima di effettuare la prima chiamata. Eseguire l'autenticazione con il servizio API partner. |
403 - Accesso negato | Non si dispone dell'autorizzazione necessaria per effettuare la richiesta. |
404 - Non trovato | Le risorse richieste non sono disponibili con i parametri di input forniti. |
410 - Via | Il collegamento al manifesto non è più valido o attivo. Inviare una nuova richiesta. |
500 - Errore interno del server | L'API o le relative dipendenze non possono soddisfare la richiesta al momento. Riprovare. |
5000 - Nessun dato disponibile | Il sistema non dispone di dati per i parametri di input forniti. |
Confrontare le versioni beta e ga
Vedere la tabella di confronto per visualizzare le differenze tra le versioni beta e le versioni disponibili a livello generale. Se attualmente si usa la versione beta, la transizione alla versione ga è semplice e semplice.
Informazioni importanti | Beta | Generalmente disponibile |
---|---|---|
Endpoint host API | https://ep-billingreconservice-prod-d5bfczcnfvbqbdhx.z01.azurefd.net/ |
https://graph.microsoft.com/v1.0/reports/partners/billing/usage/ |
Metodo HTTP | POST | POST |
Endpoint dell'API di utilizzo valutato giornaliero non fatturato | https://ep-billingreconservice-prod-d5bfczcnfvbqbdhx.z01.azurefd.net/v1/unbilledusage |
https://graph.microsoft.com/v1.0/reports/partners/billing/usage/unbilled/export |
Parametri di input per l'API di utilizzo giornaliero non fatturata | Per specificare i parametri nella richiesta API, includerli nella stringa di query dell'URL della richiesta. Ad esempio, per specificare i parametri period e currencyCode, aggiungere ?period=current¤cyCode=usd all'URL della richiesta. |
Per fornire input, includere un oggetto JSON nel corpo della richiesta. Il codice JSON deve avere le proprietà seguenti: * currencyCode: valuta di fatturazione. Ad esempio, USD. * billingPeriod: periodo di fatturazione per la fattura. Ad esempio, corrente. Ecco un oggetto JSON di esempio che include le proprietà currencyCode e billingPeriod: <br>{<br> "currencyCode": "USD",<br> "billingPeriod": "current"<br>} |
Endpoint dell'API per l'utilizzo fatturato giornaliero | https://ep-billingreconservice-prod-d5bfczcnfvbqbdhx.z01.azurefd.net/v1/billedusage/invoices/{InvoiceId} |
https://graph.microsoft.com/v1.0/reports/partners/billing/usage/billed/export |
Parametri di input per l'API di utilizzo valutato giornaliera fatturata | Per specificare i parametri nella richiesta API, includere invoiceId nell'URL della richiesta. Inoltre, è possibile includere un parametro di frammento facoltativo nella stringa di query per recuperare il set completo di attributi. Ad esempio, per recuperare il set completo di attributi, aggiungere ?fragment=full all'URL della richiesta. |
Per fornire input, includere un oggetto JSON nel corpo della richiesta. Il codice JSON deve avere le proprietà seguenti: * invoiceId: identificatore univoco della fattura. Ad esempio, G00012345. * attributeSet: attributi che devono trovarsi nella risposta, ad esempio full. Ecco un oggetto JSON di esempio che include le proprietà invoiceId e attributeSet: {<br> "invoiceId": "G00012345",<br> "attributeSet": "full"<br>} |
Risorsa manifesto | Usare un metodo GET /manifests/{id} separato per recuperare la risorsa manifesto. | Usare il metodo GET /operations/{Id} per accedere alla risorsa manifesto in resourceLocation. Questo metodo consente di risparmiare tempo eliminando la necessità di una chiamata separata a GET /manifests/{id}. |
Modifiche allo schema del manifesto | ||
"id": non disponibile | "id": identificatore univoco per la risorsa manifesto. | |
"version": Disponibile | "version": modificato in "schemaversion". | |
"dataFormat": disponibile | "dataFormat": disponibile. | |
"utcCretedDateTime": disponibile | "utcCretedDateTime": modificato in "createdDateTime". | |
"eTag": disponibile | "eTag": disponibile. | |
"partnerTenantId": disponibile | "partnerTenantId": disponibile | |
"rootFolder": disponibile | "rootFolder": modificato in "rootDirectory". | |
"rootFolderSAS": disponibile | "rootFolderSAS": modificato in "sasToken". Questo aggiornamento fornisce solo il token senza il percorso della directory radice. Per individuare la directory, utilizzare invece la proprietà "rootDirectory". | |
"partitionType": disponibile | "partitionType": disponibile. | |
"blobCount": disponibile | "blobCount": disponibile. | |
"sizeInBytes": disponibile | "sizeInBytes": non disponibile. | |
"BLOB": disponibile | "BLOB": disponibile. | |
"oggetto BLOB": disponibile | "oggetto BLOB": disponibile. | |
"name": Disponibile | "name": disponibile. | |
"partitionValue": disponibile | "partitionValue": disponibile. |
Attributi dell'elemento della riga di riconciliazione dell'utilizzo valutato giornaliero
Per confrontare gli attributi restituiti dall'API di riconciliazione fatturata per i set di attributi "full" o "basic", vedere la tabella seguente. Per altre informazioni su questi attributi, vedere questa documentazione.
Attributo | Completo | Di base |
---|---|---|
PartnerId | yes | yes |
PartnerName | yes | yes |
CustomerId | yes | yes |
CustomerName | yes | Sì |
CustomerDomainName | yes | no |
CustomerCountry | yes | no |
MpnId | yes | no |
Tier2MpnId | yes | no |
InvoiceNumber | yes | yes |
ProductId | yes | yes |
SkuId | yes | yes |
AvailabilityId | yes | no |
SkuName | yes | yes |
ProductName | yes | no |
PublisherName | yes | yes |
PublisherId | yes | no |
SubscriptionDescription | yes | no |
SubscriptionId | yes | yes |
ChargeStartDate | yes | yes |
ChargeEndDate | yes | yes |
UsageDate | yes | yes |
MeterType | yes | no |
MeterCategory | yes | no |
ID contatore | yes | no |
MeterSubCategory | yes | no |
MeterName | yes | no |
MeterRegion | yes | no |
Unità | yes | yes |
ResourceLocation | yes | no |
ConsumedService | yes | no |
ResourceGroup | yes | no |
ResourceURI | yes | yes |
ChargeType | yes | yes |
UnitPrice | yes | yes |
Quantità | yes | yes |
UnitType | yes | no |
BillingPreTaxTotal | yes | yes |
BillingCurrency | yes | yes |
PricingPreTaxTotal | yes | yes |
PricingCurrency | yes | yes |
ServiceInfo1 | yes | no |
ServiceInfo2 | yes | no |
Tag | yes | no |
AdditionalInfo | yes | no |
EffectiveUnitPrice | yes | yes |
PCToBCExchangeRate | yes | yes |
PCToBCExchangeRateDate | yes | no |
EntitlementId | yes | yes |
EntitlementDescription | yes | no |
PartnerEarnedCreditPercentage | yes | no |
CreditPercentage | yes | yes |
CreditType | yes | yes |
BenefitOrderID | yes | yes |
BenefitID | yes | no |
BenefitType | yes | yes |
Importante
Prendere nota di queste modifiche quando si passa dall'API v1 dalla versione 2.
Ogni nome di attributo inizia ora con una lettera maiuscola .
unitOfMeasure viene aggiornato a Unit. Il significato e il valore rimangono invariati.
resellerMpnId è ora Tier2MpnId. Il significato e il valore sono uguali.
rateOfPartnerEarnedCredit viene aggiornato a PartnerEarnedCreditPercentage. Il nuovo nome e il nuovo valore riflettono ora la percentuale anziché la frazione. Ad esempio, 0,15 è ora del 15%.
rateOfCredit è ora CreditPercentage. Sia il nome che il valore sono stati modificati. Ad esempio, 1,00 è ora 100%.
Queste modifiche rendono le API più intuitive e facili da usare.
Codice di esempio
Per usare questa API, vedere il collegamento seguente, che include il codice di esempio C#.
Esempi di API del Centro per i partner: ottenere i dati di riconciliazione della fatturazione.