Freigeben über


Abrufen einer Aufzeichnung der Partner Center-Aktivität

Gilt für: Partner Center | Partner Center für Microsoft Cloud for US Government

In diesem Artikel wird beschrieben, wie Sie einen Datensatz von Vorgängen abrufen, die von einem Partnerbenutzer oder einer Anwendung über einen bestimmten Zeitraum ausgeführt wurden.

Verwenden Sie diese API, um Überwachungsdatensätze für die vorherigen 30 Tage ab dem aktuellen Datum oder für einen Datumsbereich abzurufen, der durch einschließen des Startdatums und/oder des Enddatums angegeben ist. Beachten Sie jedoch, dass die Verfügbarkeit von Aktivitätsprotokolldaten aus Leistungsgründen auf die vorherigen 90 Tage beschränkt ist. Anforderungen mit einem Startdatum, das größer als 90 Tage vor dem aktuellen Datum ist, erhalten eine ungültige Anforderungs ausnahme (Fehlercode: 400) und eine entsprechende Nachricht.

Voraussetzungen

  • Anmeldeinformationen, wie unter Partner Center-Authentifizierung beschrieben. Dieses Szenario unterstützt die Authentifizierung mit eigenständigen App- und App+Benutzeranmeldeinformationen.

C#

Um einen Datensatz von Partner Center-Vorgängen abzurufen, richten Sie zuerst den Datumsbereich für die Datensätze ein, die Sie abrufen möchten. Im folgenden Codebeispiel wird nur ein Startdatum verwendet, Sie können aber auch ein Enddatum einschließen. Weitere Informationen finden Sie in der Query-Methode. Erstellen Sie als Nächstes die Variablen, die Sie für den Filtertyp benötigen, den Sie anwenden möchten, und weisen Sie die entsprechenden Werte zu. Um z. B. nach Teilzeichenfolge des Firmennamens zu filtern, erstellen Sie eine Variable, die die Teilzeichenfolge enthält. Um nach Kunden-ID zu filtern, erstellen Sie eine Variable, die die ID enthalten soll.

Im folgenden Beispiel wird Beispielcode bereitgestellt, um nach einer Teilzeichenfolge des Firmennamens, einer Kunden-ID oder einem Ressourcentyp zu filtern. Wählen Sie einen aus, und kommentieren Sie die anderen aus. In jedem Fall instanziieren Sie zunächst ein SimpleFieldFilter-Objekt mithilfe des Standardkonstruktors, um den Filter zu erstellen. Sie müssen eine Zeichenfolge übergeben, die das zu durchsuchende Feld enthält, und den entsprechenden Operator, der angewendet werden soll, wie gezeigt. Sie müssen auch die Zeichenfolge angeben, nach der gefiltert werden soll.

Verwenden Sie als Nächstes die AuditRecords-Eigenschaft, um eine Schnittstelle zum Überwachen von Datensatzvorgängen abzurufen, und rufen Sie die Query- oder QueryAsync-Methode auf, um den Filter auszuführen und die Sammlung der AuditRecords abzurufen, die die erste Seite des Ergebnisses darstellt. Übergeben Sie die Methode an das Startdatum, ein optionales Enddatum, das im Beispiel hier nicht verwendet wird, und ein IQuery-Objekt , das eine Abfrage für eine Entität darstellt. Das IQuery-Objekt wird erstellt, indem der oben erstellte Filter an die BuildSimpleQuery-Methode von QueryFactory übergeben wird.

Nachdem Sie die erste Seite mit Elementen erstellt haben, verwenden Sie die Enumerators.AuditRecords.Create-Methode , um einen Enumerator zu erstellen, mit dem Sie die verbleibenden Seiten durchlaufen können.

// 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();
}

Beispiel: Konsolentest-App. Projekt: Partner Center SDK-Beispielordner: Überwachung

REST-Anforderung

Anforderungssyntax

Methode Anforderungs-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

Verwenden Sie beim Erstellen der Anforderung die folgenden Abfrageparameter.

Name Type Erforderlich Beschreibung
startDate date No Das Startdatum im Format jjjj-mm-tt. Wenn keines angegeben wird, wird das Resultset standardmäßig 30 Tage vor dem Anforderungsdatum festgelegt. Dieser Parameter ist optional, wenn ein Filter bereitgestellt wird.
endDate date No Das Enddatum im Format jjjj-mm-tt. Dieser Parameter ist optional, wenn ein Filter bereitgestellt wird. Wenn das Enddatum ausgelassen oder auf NULL festgelegt wird, gibt die Anforderung das maximale Fenster zurück oder verwendet heute als Enddatum, je nachdem, was kleiner ist.
filter Zeichenfolge No Der anzuwendende Filter. Dieser Parameter muss eine codierte Zeichenfolge sein. Dieser Parameter ist optional, wenn das Start- oder Enddatum angegeben wird.

Filtersyntax

Sie müssen den Filterparameter als eine Reihe von durch Kommas getrennten Schlüsselwertpaaren verfassen. Jeder Schlüssel und Wert muss einzeln in Anführungszeichen eingeschlossen und durch einen Doppelpunkt getrennt sein. Der gesamte Filter muss codiert sein.

Ein nicht codiertes Beispiel sieht wie folgt aus:

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

In der folgenden Tabelle werden die erforderlichen Schlüsselwertpaare beschrieben:

Schlüssel Wert
Feld Das zu filternde Feld. Die unterstützten Werte finden Sie in der Anforderungssyntax.
Wert Der Wert, nach dem gefiltert wird. Der Wert wird ignoriert. Die folgenden Wertparameter werden unterstützt, wie in der Anforderungssyntax gezeigt:

searchSubstring - Ersetzen Sie den Namen des Unternehmens. Sie können eine Teilzeichenfolge eingeben, um einen Teil des Firmennamens abzugleichen (z bri . B. übereinstimmungen Fabrikam, Inc).
Beispiel: "Value":"bri"

customerId – Ersetzen Sie durch eine guiD formatierte Zeichenfolge, die den Kundenbezeichner darstellt.
Beispiel: "Value":"0c39d6d5-c70d-4c55-bc02-f620844f3fd1"

resourceType – Ersetzen Sie durch den Typ der Ressource, für die Überwachungsdatensätze abgerufen werden sollen (z. B. Subscription). Die verfügbaren Ressourcentypen werden in ResourceType definiert.
Beispiel: "Value":"Subscription"
Operator Der anzuwendende Operator. Die unterstützten Operatoren finden Sie in der Anforderungssyntax.

Anforderungsheader

Anforderungstext

Keine.

Anforderungsbeispiel

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-Antwort

Wenn die Methode erfolgreich verläuft, werden eine Reihe von Aktivitäten zurückgegeben, die den Filtern entsprechen.

Erfolgs- und Fehlercodes der Antwort

Jede Antwort enthält einen HTTP-Statuscode, der Aufschluss darüber gibt, ob der Vorgang erfolgreich war, sowie ggf. zusätzliche Debuginformationen. Verwende ein Tool für die Netzwerkablaufverfolgung, um diesen Code, den Fehlertyp und zusätzliche Parameter zu lesen. Die vollständige Liste finden Sie unter Partner Center-REST-Fehlercodes.

Beispielantwort

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"
    }
}