Dela via


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, clientSecretoch 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.