Gör ditt första API-anrop för att få åtkomst till analysdata på den kommersiella marknadsplatsen
En lista över API:er för åtkomst till analysdata på den kommersiella marknadsplatsen finns i API:er för åtkomst till analysdata på den kommersiella marknadsplatsen. Innan du gör ditt första API-anrop kontrollerar du att du uppfyller kraven för programmatisk åtkomst till analysdata på den kommersiella marknadsplatsen.
Tokengenerering
Innan du anropar någon av metoderna måste du först skaffa en Microsoft Entra-åtkomsttoken. Du måste skicka Microsoft Entra-åtkomsttoken till auktoriseringshuvudet för varje metod i API:et. När du har hämtat en åtkomsttoken har du 60 minuter på dig att använda den innan den upphör att gälla. När token upphör att gälla kan du uppdatera token och fortsätta att använda den för ytterligare anrop till API:et.
Varning
Resource='https://graph.microsoft.com' kommer att bli inaktuell efter den 30 augusti 2024. Planera migreringen till Resource='https://api.partnercenter.microsoft.com' i enlighet med detta.
Se en exempelbegäran nedan för att generera en token. De tre värden som krävs för att generera token är clientId
, clientSecret
och tenantId
. Parametern resource
ska vara inställd på https://api.partnercenter.microsoft.com
.
Exempel på begäran:
curl --location --request POST 'https://login.microsoftonline.com/{TenantId}/oauth2/token' \
--header 'return-client-request-id: true' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'resource=https://api.partnercenter.microsoft.com' \
--data-urlencode 'client_id={client_id}' \
--data-urlencode 'client_secret={client_secret}' \
--data-urlencode 'grant_type=client_credentials'
Svarsexempel:
{
"token_type": "Bearer",
"expires_in": "3599",
"ext_expires_in": "3599",
"expires_on": "1612794445",
"not_before": "1612790545",
"resource": "https://api.partnercenter.microsoft.com",
"access_token": {Token}
}
Mer information om hur du hämtar en Microsoft Entra-token för ditt program finns i Tjänst till tjänst-anrop med klientautentiseringsuppgifter (delad hemlighet eller certifikat).
Programmatiskt API-anrop
När du har hämtat Microsoft Entra-token enligt beskrivningen i föregående avsnitt följer du de här stegen för att skapa din första programmatiska åtkomstrapport.
Data kan laddas ned från följande datauppsättningar (datasetName):
Rapportnamn | Datamängdsnamn i API |
---|---|
Order | ISVOrder |
Användning | ISVUsage |
Kund | ISVCustomer |
Marketplace Insights | ISVMarketplaceInsights |
Intäkter | ISVRevenue |
Kundkvarhållning | ISVOfferRetention |
Tjänstkvalitet | ISVQualityOfService |
Licens | ISVLicense |
Vm-avbildningsversion | ISVVMImageVersion |
I följande avsnitt visas exempel på hur du programmatiskt kommer åt OrderId
från ISVOrder-datauppsättningen.
Steg 1: Gör ett REST-anrop med api:et Hämta datauppsättningar
API-svaret innehåller datamängdens namn där du kan ladda ned rapporten. För den specifika datamängden innehåller API-svaret även en lista över valbara kolumner som kan användas för din anpassade rapportmall.
Exempel på begäran:
curl
--location
--request GET 'https://api.partnercenter.microsoft.com/insights/v1.1/cmp/ScheduledDataset ' \
--header 'Authorization: Bearer <AzureADToken>'
Svarsexempel:
{
"value": [
{
"datasetName": "ISVOrder",
"selectableColumns": [
"MarketplaceSubscriptionId",
"MonthStartDate",
"OfferType",
"AzureLicenseType",
"MarketplaceLicenseType",
"SKU",
"CustomerCountry",
"IsPreviewSKU",
"AssetId",
"Quantity",
"CloudInstanceName",
"IsNewCustomer",
"OrderStatus",
"OrderCancelDate",
"CustomerCompanyName",
"OrderPurchaseDate",
"OfferName",
"IsPrivateOffer",
"TermStartDate",
"TermEndDate",
"PurchaseRecordId",
"PurchaseRecordLineItemId",
"BilledRevenue",
"Currency",
"HasTrial",
"IsTrial",
"TrialEndDate",
"OrderAction",
"QuantityChanged",
"EventTimestamp",
"CustomerId",
"BillingAccountId",
"PlanId",
"BillingTerm",
"BillingPlan",
"ReferenceId",
"AutoRenew",
"OrderVersion",
"ListPriceUSD",
"DiscountPriceUSD",
"IsPrivatePlan",
"OfferId",
"PrivateOfferId",
"PrivateOfferName",
"BillingId",
"Version",
"CustomerAdjustmentUSD",
"MultiParty",
"PartnerInfo"
],
"availableMetrics": [],
"availableDateRanges": [
"LAST_MONTH",
"LAST_3_MONTHS",
"LAST_6_MONTHS",
"LAST_1_YEAR",
"LIFETIME"
],
"minimumRecurrenceInterval": 1
},
],
"totalCount": 1,
"message": "Dataset fetched successfully",
"statusCode": 200
}
Steg 2: Skapa den anpassade frågan
I det här steget använder vi order-ID:t från orderrapporten för att skapa en anpassad fråga för den rapport vi vill ha. Standardvärdet timespan
om det inte anges i frågan är sex månader.
Exempel på begäran:
curl
--location
--request POST ' https://api.partnercenter.microsoft.com/insights/v1.1/cmp/ScheduledQueries' \
--header ' Authorization: Bearer <AzureAD_Token>' \
--header 'Content-Type: application/json' \
--data-raw
'{
"Query": "SELECT OrderId from ISVOrder",
"Name": "ISVOrderQuery1",
"Description": "Get a list of all Order IDs"
}'
Svarsexempel:
{
"value": [
{
"queryId": "78be43f2-e35f-491a-8cd5-78fe14194f9c",
"name": "ISVOrderQuery1",
"description": "Get a list of all Order IDs",
"query": "SELECT OrderId from ISVOrder",
"type": "userDefined",
"user": "142344300",
"createdTime": "2024-01-06T05:38:34",
"modifiedTime": null
}
],
"totalCount": 1,
"message": "Query created successfully",
"statusCode": 200
}
Vid lyckad körning av frågan genereras en queryId
som måste användas för att generera rapporten.
Steg 3: Köra testfrågas-API
I det här steget använder vi testfråge-API:et för att hämta de 100 översta raderna för frågan som skapades.
Exempel på begäran:
curl
--location
--request GET 'https://api.partnercenter.microsoft.com/insights/v1.1/cmp/ScheduledQueries/testQueryResult?exportQuery=SELECT%20OrderId%20from%20ISVOrder' \
--header ' Authorization: Bearer <AzureADToken>'
Svarsexempel:
{
"value": [
{
"OrderId": "086365c6-9c38-4fba-904a-6228f6cb2ba8"
},
{
"OrderId": "086365c6-9c38-4fba-904a-6228f6cb2bb8"
},
{
"OrderId": "086365c6-9c38-4fba-904a-6228f6cb2bc8"
},
{
"OrderId": "086365c6-9c38-4fba-904a-6228f6cb2bd8"
},
{
"OrderId": "086365c6-9c38-4fba-904a-6228f6cb2be8"
},
.
.
.
{
"OrderId": "086365c6-9c38-4fba-904a-6228f6cb2bf0"
},
{
"OrderId": "086365c6-9c38-4fba-904a-6228f6cb2bf1"
},
{
"OrderId": "086365c6-9c38-4fba-904a-6228f6cb2bf2"
},
{
"OrderId": "086365c6-9c38-4fba-904a-6228f6cb2bf3"
},
{
"OrderId": "086365c6-9c38-4fba-904a-6228f6cb2bf4"
}
],
"totalCount": 100,
"message": null,
"statusCode": 200
}
Steg 4: Skapa rapporten
I det här steget använder vi den tidigare genererade QueryId
för att skapa rapporten.
Exempel på begäran:
curl
--location
--request POST 'https://api.partnercenter.microsoft.com/insights/v1.1/cmp/ScheduledReport' \
--header ' Authorization: Bearer <AzureADToken>' \
--header 'Content-Type: application/json' \
--data-raw
'{
"ReportName": "ISVReport1",
"Description": "Report for getting list of Order Ids",
"QueryId": "78be43f2-e35f-491a-8cd5-78fe14194f9c",
"StartTime": "2024-01-06T19:00:00Z",
"RecurrenceInterval": 48,
"RecurrenceCount": 20,
"Format": "csv"
}'
Svarsexempel:
{
"value": [
{
"reportId": "72fa95ab-35f5-4d44-a1ee-503abbc88003",
"reportName": "ISVReport1",
"description": "Report for getting list of Order Ids",
"queryId": "78be43f2-e35f-491a-8cd5-78fe14194f9c",
"query": "SELECT OrderId from ISVOrder",
"user": "142344300",
"createdTime": "2024-01-06T05:46:00Z",
"modifiedTime": null,
"startTime": "2024-01-06T19:00:00Z",
"reportStatus": "Active",
"recurrenceInterval": 48,
"recurrenceCount": 20,
"callbackUrl": null,
"format": "csv"
}
],
"totalCount": 1,
"message": "Report created successfully",
"statusCode": 200
}
Vid lyckad körning genereras en reportId
som måste användas för att schemalägga en nedladdning av rapporten.
Steg 5: Köra API för rapportkörningar
För att hämta rapportens säkra plats (URL) kör vi nu API:et för rapportkörningar.
Exempel på begäran:
Curl
--location
--request GET 'https://api.partnercenter.microsoft.com/insights/v1.1/cmp/ScheduledReport/execution/72fa95ab-35f5-4d44-a1ee-503abbc88003' \
--header ' Authorization: Bearer <AzureADToken>' \
Svarsexempel:
{
"value": [
{
"executionId": "1f18b53b-df30-4d98-85ee-e6c7e687aeed",
"reportId": "72fa95ab-35f5-4d44-a1ee-503abbc88003",
"recurrenceInterval": 48,
"recurrenceCount": 20,
"callbackUrl": null,
"format": "csv",
"executionStatus": "Pending",
"reportAccessSecureLink": null,
"reportExpiryTime": null,
"reportGeneratedTime": null
}
],
"totalCount": 1,
"message": null,
"statusCode": 200
}
Du kan prova API:erna via Swagger API-URL:en.