API's voor gebruiksmeting in de Marketplace
De API's voor facturering naar gebruik moeten worden gebruikt wanneer de uitgever aangepaste meterdimensies maakt voor een aanbieding die in Partnercentrum gepubliceerd moet worden. Integratie met de API's voor verbruik-gebaseerde facturering is vereist voor elke aangeschafte aanbieding met een of meer abonnementen met aangepaste dimensies om gebruiksgebeurtenissen te genereren.
Belangrijk
U moet het gebruik in uw code bijhouden en alleen gebruiksgebeurtenissen naar Microsoft verzenden voor het gebruik dat hoger is dan de basiskosten.
Zie SaaS-verbruiksafrekeningvoor meer informatie over het maken van aangepaste verbruiksdimensies voor SaaS.
Zie De configuratiegegevens van uw Azure-toepassing configurerenvoor meer informatie over het maken van aangepaste meetdimensies voor een Azure-toepassingsaanbieding met een beheerd app-plan.
TLS 1.2-notitie afdwingen
TLS-versie 1.2 wordt afgedwongen als minimale versie voor HTTPS-communicatie. Zorg ervoor dat u deze TLS-versie in uw code gebruikt. TLS-versie 1.0 en 1.1 zijn afgeschaft en verbindingspogingen worden geweigerd.
Afrekening voor eenmalig verbruik
De API voor gebruiksgebeurtenissen moet worden aangeroepen door de uitgever om gebruiksgebeurtenissen te verzenden op basis van een actieve resource (geabonneerd) voor het abonnement dat is gekocht door de specifieke klant. De gebruiks gebeurtenis wordt afzonderlijk verzonden voor elke aangepaste dimensie van het plan dat door de uitgever is gedefinieerd bij het publiceren van de aanbieding.
Er kan slechts één gebruiksgebeurtenis worden verzonden voor elk uur van een kalenderdag per resource en dimensie. Als er meer dan één eenheid in een uur wordt verbruikt, verzamelt u alle eenheden die in het uur worden verbruikt en verzendt u deze vervolgens in één gebeurtenis. Gebruiksevenementen kunnen alleen worden uitgezonden voor de afgelopen 24 uur. Als u een gebruiksevenement op elk gewenst moment verzendt tussen 8:00 en 8:59:59 (en deze wordt geaccepteerd) en een extra gebeurtenis verzendt voor dezelfde dag tussen 8:00 en 8:59:59, wordt deze geweigerd als een duplicaat.
POST-: https://marketplaceapi.microsoft.com/api/usageEvent?api-version=<ApiVersion>
Query parameters:
Parameter | Aanbeveling |
---|---|
ApiVersion |
Gebruik 2018-08-31. |
verzoekheaders:
Inhoudstype | Gebruik application/json |
---|---|
x-ms-requestid |
Unieke tekenreekswaarde voor het volgen van de aanvraag van de client, bij voorkeur een GUID. Als deze waarde niet is opgegeven, wordt er een gegenereerd en opgegeven in de antwoordheaders. |
x-ms-correlationid |
Unieke tekenreekswaarde voor bewerking op de client. Deze parameter correleert alle gebeurtenissen van de clientbewerking met gebeurtenissen aan de serverzijde. Als deze waarde niet is opgegeven, wordt er een gegenereerd en opgegeven in de antwoordheaders. |
authorization |
Een uniek toegangstoken dat de ISV identificeert die deze API-aanroep maakt. Het formaat is "Bearer <access_token>" wanneer de tokenwaarde wordt opgehaald door de uitgever, zoals eerder uitgelegd.
|
voorbeeld van aanvraagtekst:
{
"resourceId": <guid>, // unique identifier of the resource against which usage is emitted.
"quantity": 5.0, // how many units were consumed for the date and hour specified in effectiveStartTime, must be greater than 0 or a double integer
"dimension": "dim1", // custom dimension identifier
"effectiveStartTime": "2018-12-01T08:30:14", // time in UTC when the usage event occurred, from now and until 24 hours back
"planId": "plan1", // id of the plan purchased for the offer
}
Voor Azure Application Managed Apps-abonnementen is het resourceId
de beheerde app-resource group Id
. Een voorbeeldscript voor het ophalen ervan vindt u in met behulp van het door Azure beheerde identiteitentoken.
Voor SaaS-aanbiedingen is de resourceId
de Id van het SaaS-abonnement. Zie lijst met abonnementenvoor meer informatie over SaaS-abonnementen.
Reacties
Code: 200
OK. De gebruiksemissie is geaccepteerd en geregistreerd aan de zijde van Microsoft voor verdere verwerking en facturering.
Voorbeeld van antwoord payload:
{
"usageEventId": <guid>, // unique identifier associated with the usage event in Microsoft records
"status": "Accepted" // this is the only value in case of single usage event
"messageTime": "2020-01-12T13:19:35.3458658Z", // time in UTC this event was accepted
"resourceId": <guid>, // unique identifier of the resource against which usage is emitted. For SaaS it's the subscriptionId.
"quantity": 5.0, // amount of emitted units as recorded by Microsoft
"dimension": "dim1", // custom dimension identifier
"effectiveStartTime": "2018-12-01T08:30:14", // time in UTC when the usage event occurred, as sent by the ISV
"planId": "plan1", // id of the plan purchased for the offer
}
Code: 400
Onjuist verzoek.
- Ontbrekende of ongeldige aanvraaggegevens opgegeven.
-
effectiveStartTime
ligt meer dan 24 uur in het verleden. Het evenement is verlopen. - Het SaaS-abonnement heeft niet de status 'Geabonneerd'.
Voorbeeld van payload van antwoord:
{
"message": "One or more errors have occurred.",
"target": "usageEventRequest",
"details": [
{
"message": "The resourceId is required.",
"target": "ResourceId",
"code": "BadArgument"
}
],
"code": "BadArgument"
}
Code: 401 Niet geautoriseerd. Het autorisatietoken is ongeldig of verlopen. De aanvraag probeert toegang te krijgen tot een SaaS-abonnement voor een aanbieding die is gepubliceerd met een ander Microsoft Entra-app-ID dan het ID dat gebruikt is om het verificatietoken aan te maken.
Code: 403 Verboden. Het autorisatietoken is ongeldig, is niet opgegeven of is voorzien van onvoldoende machtigingen. Zorg ervoor dat u een geldig autorisatietoken opgeeft.
Code: 409
Conflict. Er is al een gebruiksgebeurtenis gerapporteerd voor de opgegeven resource-id, de ingangsdatum en het uur.
Voorbeeld van nettolading van antwoord:
{
"additionalInfo": {
"acceptedMessage": {
"usageEventId": "<guid>", //unique identifier associated with the usage event in Microsoft records
"status": "Duplicate",
"messageTime": "2020-01-12T13:19:35.3458658Z",
"resourceId": "<guid>", //unique identifier of the resource against which usage is emitted.
"quantity": 1.0,
"dimension": "dim1",
"effectiveStartTime": "2020-01-12T11:03:28.14Z",
"planId": "plan1"
}
},
"message": "This usage event already exist.",
"code": "Conflict"
}
Gebeurtenis voor batchgebruik met een datalimiet
Met de gebeurtenis-API voor batchgebruik kunt u gebruiksgebeurtenissen verzenden voor meer dan één aangeschafte resource tegelijk. Hiermee kunt u ook verschillende gebruiksgebeurtenissen verzenden voor dezelfde resource, zolang ze voor verschillende kalenderuren zijn. Het maximale aantal gebeurtenissen in één batch is 25.
POST:https://marketplaceapi.microsoft.com/api/batchUsageEvent?api-version=<ApiVersion>
Queryparameters:
Parameter | Aanbeveling |
---|---|
ApiVersion |
Gebruik 2018-08-31. |
Verzoekheaders:
Inhoudstype | Gebruik application/json |
---|---|
x-ms-requestid |
Unieke tekenreekswaarde voor het bijhouden van het verzoek van de client, bij voorkeur een GUID. Als deze waarde niet is opgegeven, wordt er een gegenereerd en opgegeven in de antwoordheaders. |
x-ms-correlationid |
Unieke tekenreekswaarde voor bewerking op de client. Deze parameter correleert alle gebeurtenissen van de clientbewerking met gebeurtenissen aan de serverzijde. Als deze waarde niet is opgegeven, wordt er een gegenereerd en opgegeven in de antwoordheaders. |
authorization |
Een uniek toegangstoken dat de ISV identificeert die deze API-aanroep maakt. Het formaat is Bearer <access_token> wanneer de tokenwaarde wordt opgehaald door de uitgever, zoals uitgelegd voor
|
Notitie
In de aanvraagbody heeft de resource-id verschillende betekenissen voor de SaaS-app en voor de beheerde Azure-app die een aangepaste meter verzendt. De resource-id voor SaaS-app is resourceID
. De resource-id voor Azure Application Managed Apps-abonnementen is resourceUri
. Zie voor meer informatie over resource-identifiers het gedeelte Azure Marketplace-facturering naar gebruik: de juiste id kiezen bij het verzenden van gebruiksgebeurtenissen.
Voor SaaS-aanbiedingen is de resourceId
de Id van het SaaS-abonnement. Zie lijst met abonnementenvoor meer informatie over SaaS-abonnementen.
voorbeeld van aanvraagtekst voor SaaS-apps:
{
"request": [ // list of usage events for the same or different resources of the publisher
{ // first event
"resourceId": "<guid1>", // Unique identifier of the resource against which usage is emitted.
"quantity": 5.0, // how many units were consumed for the date and hour specified in effectiveStartTime, must be greater than 0 or a double integer
"dimension": "dim1", //Custom dimension identifier
"effectiveStartTime": "2018-12-01T08:30:14",//Time in UTC when the usage event occurred, from now and until 24 hours back
"planId": "plan1", // id of the plan purchased for the offer
},
{ // next event
"resourceId": "<guid2>",
"quantity": 39.0,
"dimension": "email",
"effectiveStartTime": "2018-11-01T23:33:10
"planId": "gold", // id of the plan purchased for the offer
}
]
}
Voor Azure Application Managed Apps-plannen is de resourceUri
de beheerde toepassing resourceUsageId
. Een voorbeeldscript voor het ophalen ervan vindt u in met behulp van het door Azure beheerde identiteitentoken.
voorbeeld van aanvraagbody voor door Azure-toepassingen beheerde apps:
{
"request": [ // list of usage events for the same or different resources of the publisher
{ // first event
"resourceUri": "<fullyqualifiedname>", // Unique identifier of the resource against which usage is emitted.
"quantity": 5.0, // how many units were consumed for the date and hour specified in effectiveStartTime, must be greater than 0 or a double integer
"dimension": "dim1", //Custom dimension identifier
"effectiveStartTime": "2018-12-01T08:30:14",//Time in UTC when the usage event occurred, from now and until 24 hours back
"planId": "plan1", // id of the plan purchased for the offer
}
]
}
Reacties
Code: 200
OK. De emissie van batchgebruik is geaccepteerd en geregistreerd door Microsoft voor verdere verwerking en facturering. De antwoordlijst wordt geretourneerd met de status voor elke afzonderlijke gebeurtenis in de batch. U moet door de antwoordpayload itereren om inzicht te krijgen in de reacties voor elke afzonderlijke gebruiksgebeurtenis die verzonden wordt als onderdeel van de batchgebeurtenis.
Voorbeeld van antwoordpayload:
{
"count": 2, // number of records in the response
"result": [
{ // first response
"usageEventId": "<guid>", // unique identifier associated with the usage event in Microsoft records
"status": "Accepted" // see list of possible statuses below,
"messageTime": "2020-01-12T13:19:35.3458658Z", // Time in UTC this event was accepted by Microsoft,
"resourceId": "<guid1>", // unique identifier of the resource against which usage is emitted.
"quantity": 5.0, // amount of emitted units as recorded by Microsoft
"dimension": "dim1", // custom dimension identifier
"effectiveStartTime": "2018-12-01T08:30:14",// time in UTC when the usage event occurred, as sent by the ISV
"planId": "plan1", // id of the plan purchased for the offer
},
{ // second response
"status": "Duplicate",
"messageTime": "0001-01-01T00:00:00",
"error": {
"additionalInfo": {
"acceptedMessage": {
"usageEventId": "<guid>",
"status": "Duplicate",
"messageTime": "2020-01-12T13:19:35.3458658Z",
"resourceId": "<guid2>",
"quantity": 1.0,
"dimension": "email",
"effectiveStartTime": "2020-01-12T11:03:28.14Z",
"planId": "gold"
}
},
"message": "This usage event already exist.",
"code": "Conflict"
},
"resourceId": "<guid2>",
"quantity": 1.0,
"dimension": "email",
"effectiveStartTime": "2020-01-12T11:03:28.14Z",
"planId": "gold"
}
]
}
Beschrijving van de statuscode waarnaar wordt verwezen in BatchUsageEvent
API-antwoord:
Statuscode | Beschrijving |
---|---|
Accepted |
Geaccepteerd. |
Expired |
Verlopen gebruik. |
Duplicate |
Er is een dubbel gebruik opgegeven. |
Error |
Foutcode. |
ResourceNotFound |
De opgegeven gebruiksresource is ongeldig. |
ResourceNotAuthorized |
U bent niet gemachtigd om het gebruik van deze bron aan te geven. |
ResourceNotActive |
De hulpbron is opgeschort of was nooit geactiveerd. |
InvalidDimension |
De dimensie waarvoor het gebruik wordt doorgegeven, is ongeldig voor deze aanbieding/plan. |
InvalidQuantity |
De doorgegeven hoeveelheid is lager of gelijk aan 0. |
BadArgument |
De invoer ontbreekt of is onjuist. |
Code: 400
Ongeldig verzoek. De batch bevat meer dan 25 gebruiksgebeurtenissen.
Code: 401 Niet geautoriseerd. Het autorisatietoken is ongeldig of verlopen. De aanvraag probeert toegang te krijgen tot een SaaS-abonnement voor een aanbod dat met een andere Microsoft Entra-app-ID is gepubliceerd dan degene die is gebruikt om het authenticatietoken te maken.
Code: 403 Verboden. Het autorisatietoken is ongeldig, is niet opgegeven of is voorzien van onvoldoende machtigingen. Zorg ervoor dat u een geldig autorisatietoken opgeeft.
Gebruiksgebeurtenissen ophalen met een datalimiet
U kunt de API voor gebruiksevenementen aanroepen om de lijst met gebruiksevenementen op te halen. ISV's kunnen deze API gebruiken om de gebruiksgebeurtenissen te zien die gedurende een bepaalde configureerbare tijdsduur zijn gepost en welke status deze gebeurtenissen zijn op het moment dat de API wordt aangeroepen.
GET: https://marketplaceapi.microsoft.com/api/usageEvents
query parameters:
Parameter | Aanbeveling |
---|---|
ApiVersion | Gebruik 2018-08-31. |
gebruiksstartdatum | Datum en tijd in ISO8601-formaat. Bijvoorbeeld: 2020-12-03T15:00 of 2020-12-03 |
UsageEndDate (optioneel) | Datum en tijd in ISO8601-indeling. Standaard = huidige datum |
offerId (optioneel) | Standaard = alle beschikbare |
planId (optioneel) | Standaard = alle beschikbare opties |
dimensie (optioneel) | Standaard = alle beschikbare |
azureSubscriptionId (optioneel) | Standaard: alle beschikbare opties |
reconStatus (optioneel) | Standaard = alle beschikbare |
Mogelijke waarden van reconStatus:
ReconStatus | Beschrijving |
---|---|
Ingediend | Nog niet verwerkt door PC Analytics |
Geaccepteerd | Overeenkomend met PC Analytics |
Afgekeurd | Geweigerd in de pijplijn. Neem contact op met Microsoft Ondersteuning om de oorzaak te onderzoeken. |
Wanverhouding | MarketplaceAPI- en Partner Center Analytics-hoeveelheden zijn beide niet-nul, maar niet overeenkomend |
request-headers:
Inhoudstype | Toepassing/json gebruiken |
---|---|
x-ms-requestid | Unieke tekenreekswaarde (bij voorkeur een GUID) voor het bijhouden van de aanvraag van de client. Als deze waarde niet is opgegeven, wordt er een gegenereerd en opgegeven in de antwoordheaders. |
x-ms-correlationid | Unieke tekenreekswaarde voor bewerking op de client. Deze parameter correleert alle gebeurtenissen van de clientbewerking met gebeurtenissen aan de serverzijde. Als deze waarde niet is opgegeven, wordt er een gegenereerd en opgegeven in de antwoordheaders. |
machtiging | Een uniek toegangstoken dat de ISV identificeert die deze API-aanroep maakt. Het formaat is Bearer <access_token> wanneer de tokenwaarde door de uitgever wordt opgehaald. Zie voor meer informatie:
|
Reacties
Voorbeelden van nettoladingen van antwoorden:
geaccepteerde*
[
{
"usageDate": "2020-11-30T00:00:00Z",
"usageResourceId": "11111111-2222-3333-4444-555555555555",
"dimension": "tokens",
"planId": "silver",
"planName": "Silver",
"offerId": "mycooloffer",
"offerName": "My Cool Offer",
"offerType": "SaaS",
"azureSubscriptionId": "12345678-9012-3456-7890-123456789012",
"reconStatus": "Accepted",
"submittedQuantity": 17.0,
"processedQuantity": 17.0,
"submittedCount": 17
}
]
verzonden
[
{
"usageDate": "2020-11-30T00:00:00Z",
"usageResourceId": "11111111-2222-3333-4444-555555555555",
"dimension": "tokens",
"planId": "silver",
"planName": "",
"offerId": "mycooloffer",
"offerName": "",
"offerType": "SaaS",
"azureSubscriptionId": "12345678-9012-3456-7890-123456789012",
"reconStatus": "Submitted",
"submittedQuantity": 17.0,
"processedQuantity": 0.0,
"submittedCount": 17
}
]
niet-overeenkomende
[
{
"usageDate": "2020-11-30T00:00:00Z",
"usageResourceId": "11111111-2222-3333-4444-555555555555",
"dimension": "tokens",
"planId": "silver",
"planName": "Silver",
"offerId": "mycooloffer",
"offerName": "My Cool Offer",
"offerType": "SaaS",
"azureSubscriptionId": "12345678-9012-3456-7890-123456789012",
"reconStatus": "Mismatch",
"submittedQuantity": 17.0,
"processedQuantity": 16.0,
"submittedCount": 17
}
]
Geweigerd
[
{
"usageDate": "2020-11-30T00:00:00Z",
"usageResourceId": "11111111-2222-3333-4444-555555555555",
"dimension": "tokens",
"planId": "silver",
"planName": "",
"offerId": "mycooloffer",
"offerName": "",
"offerType": "SaaS",
"azureSubscriptionId": "12345678-9012-3456-7890-123456789012",
"reconStatus": "Rejected",
"submittedQuantity": 17.0,
"processedQuantity": 0.0,
"submittedCount": 17
}
]
Statuscodes
Code: 401 Niet geautoriseerd. Het autorisatietoken is ongeldig of verlopen. De aanvraag probeert toegang te krijgen tot een SaaS-abonnement voor een aanbieding die is gepubliceerd met een andere Microsoft Entra-app-id dan degene die wordt gebruikt om het authenticatietoken te maken.
Code: 403 Verboden. Het autorisatietoken is ongeldig, is niet opgegeven of is voorzien van onvoldoende machtigingen. Zorg ervoor dat u een geldig autorisatietoken opgeeft.
Best practices voor ontwikkelings- en testprocessen
Als u de emissie van de aangepaste meter wilt testen, implementeert u de integratie met de metering-API, maakt u een plan voor uw gepubliceerde SaaS-aanbieding met aangepaste dimensies die erin zijn gedefinieerd met nulprijs per eenheid. En publiceer deze aanbieding als preview zodat alleen beperkte gebruikers de integratie kunnen openen en testen.
U kunt ook een privéabonnement gebruiken voor een bestaande live-aanbieding om de toegang tot dit plan tijdens het testen te beperken tot een beperkt publiek.
Ondersteuning krijgen
Volg de instructies in Ondersteuning voor het commerciële marketplace-programma in Partnercentrum om inzicht te krijgen in ondersteuningsopties voor uitgevers en een ondersteuningsticket te openen bij Microsoft.
Verwante inhoud
Zie voor meer informatie over meteredienst-API's de FAQ over Marketplace-meterdienst-API's .