Delen via


Een record van Partnercentrum-activiteiten ophalen

Van toepassing op: Partnercentrum | Partnercentrum voor Microsoft Cloud voor de Amerikaanse overheid

In dit artikel wordt beschreven hoe u een record kunt ophalen van bewerkingen die zijn uitgevoerd door een partnergebruiker of -toepassing gedurende een bepaalde periode.

Gebruik deze API om controlerecords op te halen voor de afgelopen 30 dagen vanaf de huidige datum, of voor een datumbereik dat is opgegeven door de begindatum en/of de einddatum op te tellen. Houd er echter rekening mee dat om prestatieredenen de beschikbaarheid van activiteitenlogboekgegevens is beperkt tot de afgelopen 90 dagen. Aanvragen met een begindatum die groter is dan 90 dagen vóór de huidige datum, ontvangen een uitzondering met een ongeldige aanvraag (foutcode: 400) en een geschikt bericht.

Vereisten

  • Referenties zoals beschreven in verificatie in partnercentrum. Dit scenario ondersteunt verificatie met zowel zelfstandige app- als app+gebruikersreferenties.

C#

Als u een record van partnercentrumbewerkingen wilt ophalen, moet u eerst het datumbereik instellen voor de records die u wilt ophalen. In het volgende codevoorbeeld wordt alleen een begindatum gebruikt, maar u kunt ook een einddatum opnemen. Zie de querymethode voor meer informatie. Maak vervolgens de variabelen die u nodig hebt voor het type filter dat u wilt toepassen en wijs de juiste waarden toe. Als u bijvoorbeeld wilt filteren op de subtekenreeks bedrijfsnaam, maakt u een variabele voor het opslaan van de subtekenreeks. Als u wilt filteren op klant-id, maakt u een variabele voor het opslaan van de id.

In het volgende voorbeeld wordt voorbeeldcode opgegeven om te filteren op een subtekenreeks van een bedrijfsnaam, klant-id of resourcetype. Kies een en markeer de anderen als commentaar. In elk geval instantieert u eerst een SimpleFieldFilter-object met behulp van de standaardconstructor om het filter te maken. U moet een tekenreeks doorgeven die het veld bevat om te zoeken en de juiste operator die moet worden toegepast, zoals wordt weergegeven. U moet ook de tekenreeks opgeven waarop u wilt filteren.

Gebruik vervolgens de eigenschap AuditRecords om een interface op te halen voor het controleren van recordbewerkingen en roep de methode Query of QueryAsync aan om het filter uit te voeren en de verzameling auditrecords op te halen die de eerste pagina van het resultaat vertegenwoordigen. Geef de methode door aan de begindatum, een optionele einddatum die hier niet wordt gebruikt in het voorbeeld en een IQuery-object dat een query op een entiteit vertegenwoordigt. Het IQuery-object wordt gemaakt door het filter dat hierboven is gemaakt door te geven aan de BuildSimpleQuery-methode van QueryFactory.

Zodra u de eerste pagina met items hebt, gebruikt u de methode Enumerators.AuditRecords.Create om een opsomming te maken die u kunt gebruiken om de resterende pagina's te doorlopen.

// IAggregatePartner partnerOperations;

var startDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 01);

// First perform the query, then get the enumerator. Choose one of the following and comment out the other two.

// To retrieve audit records by company name substring (for example "bri" matches "Fabrikam, Inc.").
var searchSubstring="bri";
var filter = new SimpleFieldFilter(AuditRecordSearchField.CompanyName.ToString(), FieldFilterOperation.Substring, searchSubstring);
var auditRecordsPage = partnerOperations.AuditRecords.Query(startDate.Date, query: QueryFactory.Instance.BuildSimpleQuery(filter));

// To retrieve audit records by customer ID.
var customerId="0c39d6d5-c70d-4c55-bc02-f620844f3fd1";
var filter = new SimpleFieldFilter(AuditRecordSearchField.CustomerId.ToString(), FieldFilterOperation.Equals, customerId);
var auditRecordsPage = partnerOperations.AuditRecords.Query(startDate.Date, query: QueryFactory.Instance.BuildSimpleQuery(filter));

// To retrieve audit records by resource type.
int resourceTypeInt = 3; // Subscription Resource.
string searchField = Enum.GetName(typeof(ResourceType), resourceTypeInt);
var filter = new SimpleFieldFilter(AuditRecordSearchField.ResourceType.ToString(), FieldFilterOperation.Equals, searchField);
var auditRecordsPage = partnerOperations.AuditRecords.Query(startDate.Date, query: QueryFactory.Instance.BuildSimpleQuery(filter));

var auditRecordEnumerator = partnerOperations.Enumerators.AuditRecords.Create(auditRecordsPage);

int pageNumber = 1;
while (auditRecordEnumerator.HasValue)
{
    // Work with the current page.
    foreach (var c in auditRecordEnumerator.Current.Items)
    {
        // Display some info, such as operation type, operation date, and operation status.
        Console.WriteLine(string.Format("{0} {1} {2}.", c.OperationType, c.OperationDate, c.OperationStatus));
    }

    // Get the next page of audit records.
    auditRecordEnumerator.Next();
}

Voorbeeld: consoletest-app. Project: Map met voorbeelden van partnercentrum-SDK: controle

REST-aanvraag

Aanvraagsyntaxis

Wijze Aanvraag-URI
GET {baseURL}/v1/auditrecords?startDate={startDate} HTTP/1.1
GET {baseURL}/v1/auditrecords?startDate={startDate}&endDate={endDate} HTTP/1.1
GET {baseURL}/v1/auditrecords?startDate={startDate}&endDate={endDate}&filter={"Field":"CompanyName","Value":"{searchSubstring}","Operator":"substring"} HTTP/1.1
GET {baseURL}/v1/auditrecords?startDate={startDate}&endDate={endDate}&filter={"Field":"CustomerId","Value":"{customerId}","Operator":"equals"} HTTP/1.1
GET {baseURL}/v1/auditrecords?startDate={startDate}&endDate={endDate}&filter={"Field":"ResourceType","Value":"{resourceType}","Operator":"equals"} HTTP/1.1

URI-parameter

Gebruik de volgende queryparameters bij het maken van de aanvraag.

Name Type Vereist Beschrijving
startDate datum Nee De begindatum in de notatie jjjj-mm-dd. Als er geen gegevens worden opgegeven, wordt de resultatenset standaard ingesteld op 30 dagen vóór de aanvraagdatum. Deze parameter is optioneel wanneer een filter wordt opgegeven.
endDate datum Nee De einddatum in de notatie jjjj-mm-dd. Deze parameter is optioneel wanneer een filter wordt opgegeven. Wanneer de einddatum wordt weggelaten of ingesteld op null, retourneert de aanvraag het maximumvenster of gebruikt deze vandaag als de einddatum, afhankelijk van wat kleiner is.
filter tekenreeks Nee Het filter dat moet worden toegepast. Deze parameter moet een gecodeerde tekenreeks zijn. Deze parameter is optioneel wanneer de begin- of einddatum wordt opgegeven.

Filtersyntaxis

U moet de filterparameter opstellen als een reeks door komma's gescheiden sleutel-waardeparen. Elke sleutel en waarde moeten afzonderlijk worden aanhalingeerd en gescheiden door een dubbele punt. Het hele filter moet worden gecodeerd.

Een niet-gecodeerd voorbeeld ziet er als volgt uit:

?filter{"Field":"CompanyName","Value":"bri","Operator":"substring"}

In de volgende tabel worden de vereiste sleutel-waardeparen beschreven:

Sleutel Weergegeven als
Veld Het veld dat moet worden gefilterd. De ondersteunde waarden vindt u in de aanvraagsyntaxis.
Weergegeven als De waarde die moet worden gefilterd. Het geval van de waarde wordt genegeerd. De volgende waardeparameters worden ondersteund zoals weergegeven in de aanvraagsyntaxis:

searchSubstring - Vervang door de naam van het bedrijf. U kunt een subtekenreeks invoeren die overeenkomt met een deel van de bedrijfsnaam (bijvoorbeeld bri komt overeen Fabrikam, Inc).
Voorbeeld:"Value":"bri"

customerId : vervang door een tekenreeks met GUID-indeling die de klant-id vertegenwoordigt.
Voorbeeld:"Value":"0c39d6d5-c70d-4c55-bc02-f620844f3fd1"

resourceType : vervang door het type resource waarvoor auditrecords moeten worden opgehaald (bijvoorbeeld Abonnement). De beschikbare resourcetypen worden gedefinieerd in ResourceType.
Voorbeeld:"Value":"Subscription"
Operator De operator die moet worden toegepast. De ondersteunde operators vindt u in de aanvraagsyntaxis.

Aanvraagheaders

Aanvraagtekst

Geen.

Aanvraagvoorbeeld

GET https://api.partnercenter.microsoft.com/v1/auditrecords?startDate=6/1/2017%2012:00:00%20AM&filter=%7B%22Field%22:%22CustomerId%22,%22Value%22:%220c39d6d5-c70d-4c55-bc02-f620844f3fd1%22,%22Operator%22:%22equals%22%7D HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: 127facaa-e389-41f8-8bb7-1d1af99db893
MS-CorrelationId: de9c2ccc-40dd-4186-9660-65b9b64c3d14
X-Locale: en-US
Host: api.partnercenter.microsoft.com
Connection: Keep-Alive

REST-antwoord

Als dit lukt, retourneert deze methode een set activiteiten die voldoen aan de filters.

Geslaagde antwoorden en foutcodes

Elk antwoord wordt geleverd met een HTTP-statuscode die aangeeft dat de fout is geslaagd of mislukt en aanvullende informatie over foutopsporing. Gebruik een hulpprogramma voor netwerktracering om deze code, het fouttype en aanvullende parameters te lezen. Zie rest-foutcodes in Partnercentrum voor de volledige lijst.

Responsvoorbeeld

HTTP/1.1 200 OK
Content-Length: 2859
Content-Type: application/json; charset=utf-8
MS-CorrelationId: de9c2ccc-40dd-4186-9660-65b9b64c3d14
MS-RequestId: 127facaa-e389-41f8-8bb7-1d1af99db893
MS-CV: 4xDKynq/zE2im0wj.0
MS-ServerId: 030011719
Date: Tue, 27 Jun 2017 22:19:46 GMT

{
    "totalCount": 2,
    "items": [{
            "partnerId": "3b33e682-00c3-41ee-9dd2-a548adf56438",
            "customerId": "0c39d6d5-c70d-4c55-bc02-f620844f3fd1",
            "customerName": "Relecloud",
            "userPrincipalName": "admin@domain.onmicrosoft.com",
            "resourceType": "order",
            "resourceNewValue": "{\"Id\":\"d51a052e-043c-4a2a-aa37-2bb938cef6c1\",\"ReferenceCustomerId\":\"0c39d6d5-c70d-4c55-bc02-f620844f3fd1\",\"BillingCycle\":\"none\",\"LineItems\":[{\"LineItemNumber\":0,\"OfferId\":\"C0BD2E08-11AC-4836-BDC7-3712E744922F\",\"SubscriptionId\":\"488745B5-2086-4912-802C-6ABB9F7C3638\",\"ParentSubscriptionId\":null,\"FriendlyName\":\"Office 365 Business Premium Trial\",\"Quantity\":25,\"PartnerIdOnRecord\":null,\"Links\":{\"Subscription\":{\"Uri\":\"/customers/0c39d6d5-c70d-4c55-bc02-f620844f3fd1/subscriptions/488745B5-2086-4912-802C-6ABB9F7C3638\",\"Method\":\"GET\",\"Headers\":[]}}}],\"CreationDate\":\"2017-06-15T15:56:04.077-07:00\",\"Links\":{\"Self\":{\"Uri\":\"/customers/0c39d6d5-c70d-4c55-bc02-f620844f3fd1/orders/d51a052e-043c-4a2a-aa37-2bb938cef6c1\",\"Method\":\"GET\",\"Headers\":[]}},\"Attributes\":{\"Etag\":\"eyJpZCI6ImQ1MWEwNTJlLTA0M2MtNGEyYS1hYTM3LTJiYjkzOGNlZjZjMSIsInZlcnNpb24iOjF9\",\"ObjectType\":\"Order\"}}",
            "operationType": "create_order",
            "operationDate": "2017-06-15T22:56:05.0589308Z",
            "operationStatus": "succeeded",
            "customizedData": [{
                    "key": "OrderId",
                    "value": "d51a052e-043c-4a2a-aa37-2bb938cef6c1"
                }, {
                    "key": "BillingCycle",
                    "value": "None"
                }, {
                    "key": "OfferId-0",
                    "value": "C0BD2E08-11AC-4836-BDC7-3712E744922F"
                }, {
                    "key": "SubscriptionId-0",
                    "value": "488745B5-2086-4912-802C-6ABB9F7C3638"
                }, {
                    "key": "SubscriptionName-0",
                    "value": "Office 365 Business Premium Trial"
                }, {
                    "key": "Quantity-0",
                    "value": "25"
                }, {
                    "key": "PartnerOnRecord-0",
                    "value": null
                }
            ],
            "attributes": {
                "objectType": "AuditRecord"
            }
        }, {
            "partnerId": "3b33e682-00c3-41ee-9dd2-a548adf56438",
            "customerId": "0c39d6d5-c70d-4c55-bc02-f620844f3fd1",
            "customerName": "Relecloud",
            "userPrincipalName": "admin@domain.onmicrosoft.com",
            "applicationId": "Partner Center Native App",
            "resourceType": "license",
            "resourceNewValue": "{\"LicensesToAssign\":[{\"ExcludedPlans\":null,\"SkuId\":\"efccb6f7-5641-4e0e-bd10-b4976e1bf68e\"}],\"LicensesToRemove\":null,\"LicenseWarnings\":[],\"Attributes\":{\"ObjectType\":\"LicenseUpdate\"}}",
            "operationType": "update_customer_user_licenses",
            "operationDate": "2017-06-01T20:09:07.0450483Z",
            "operationStatus": "succeeded",
            "customizedData": [{
                    "key": "CustomerUserId",
                    "value": "482e2152-4b49-48ec-b715-823365ce3d4c"
                }, {
                    "key": "AddedLicenseSkuId",
                    "value": "efccb6f7-5641-4e0e-bd10-b4976e1bf68e"
                }
            ],
            "attributes": {
                "objectType": "AuditRecord"
            }
        }
    ],
    "links": {
        "self": {
            "uri": "/auditrecords?startDate=2017-06-01&size=500&filter=%7B%22Field%22%3A%22CustomerId%22%2C%22Value%22%3A%220c39d6d5-c70d-4c55-bc02-f620844f3fd1%22%2C%22Operator%22%3A%22equals%22%7D",
            "method": "GET",
            "headers": []
        }
    },
    "attributes": {
        "objectType": "Collection"
    }
}