Condividi tramite


Ottenere i record delle attività nel Centro per i partner

Si applica a: Centro per i partner | Centro per i partner per Microsoft Cloud per il governo degli Stati Uniti

Questo articolo descrive come recuperare un record di operazioni eseguite da un utente partner o da un'applicazione in un determinato periodo di tempo.

Usare questa API per recuperare i record di controllo per i 30 giorni precedenti dalla data corrente o per un intervallo di date specificato includendo la data di inizio e/o la data di fine. Si noti, tuttavia, che per motivi di prestazioni la disponibilità dei dati del log attività è limitata ai 90 giorni precedenti. Le richieste con una data di inizio maggiore di 90 giorni prima della data corrente riceveranno un'eccezione di richiesta non valida (codice errore: 400) e un messaggio appropriato.

Prerequisiti

C#

Per recuperare un record delle operazioni del Centro per i partner, stabilire prima di tutto l'intervallo di date per i record da recuperare. L'esempio di codice seguente usa solo una data di inizio, ma è anche possibile includere una data di fine. Per altre informazioni, vedere il metodo Query. Creare quindi le variabili necessarie per il tipo di filtro da applicare e assegnare i valori appropriati. Ad esempio, per filtrare in base alla sottostringa del nome della società, creare una variabile per contenere la sottostringa. Per filtrare in base all'ID cliente, creare una variabile per contenere l'ID.

Nell'esempio seguente viene fornito il codice di esempio per filtrare in base alla sottostringa del nome della società, all'ID cliente o al tipo di risorsa. Scegliere uno e impostare come commento gli altri. In ogni caso, si crea prima un'istanza di un oggetto SimpleFieldFilter usando il relativo costruttore predefinito per creare il filtro. Sarà necessario passare una stringa contenente il campo da cercare e l'operatore appropriato da applicare, come illustrato. È inoltre necessario specificare la stringa in base a cui filtrare.

Usare quindi la proprietà AuditRecords per ottenere un'interfaccia per controllare le operazioni sui record e chiamare il metodo Query o QueryAsync per eseguire il filtro e ottenere la raccolta di AuditRecord che rappresentano la prima pagina del risultato. Passare il metodo la data di inizio, una data di fine facoltativa non usata nell'esempio qui e un oggetto IQuery che rappresenta una query su un'entità. L'oggetto IQuery viene creato passando il filtro creato in precedenza al metodo BuildSimpleQuery di QueryFactory.

Dopo aver creato la pagina iniziale degli elementi, usare il metodo Enumerators.AuditRecords.Create per creare un enumeratore che è possibile usare per scorrere le pagine rimanenti.

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

Esempio: App di test della console. Progetto: Cartella degli esempi dell'SDK del Centro per i partner: controllo

Richiesta REST

Sintassi della richiesta

metodo URI della richiesta
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

Parametro URI

Usare i parametri di query seguenti durante la creazione della richiesta.

Nome Digita Obbligatorio Descrizione
startDate data No Data di inizio in formato aaaa-mm-gg. Se non viene specificato nessuno, il set di risultati verrà impostato per impostazione predefinita su 30 giorni prima della data della richiesta. Questo parametro è facoltativo quando viene fornito un filtro.
endDate data No Data di fine in formato aaaa-mm-gg. Questo parametro è facoltativo quando viene fornito un filtro. Quando la data di fine viene omessa o impostata su Null, la richiesta restituisce la finestra massima o usa oggi come data di fine, a meno.
filter string No Filtro da applicare. Questo parametro deve essere una stringa codificata. Questo parametro è facoltativo quando viene specificata la data di inizio o di fine.

Sintassi dei filtri

È necessario comporre il parametro di filtro come una serie di coppie chiave-valore separate da virgole. È necessario racchiudere singolarmente tra virgolette ogni chiave e ogni valore e separarli con i due punti. L'intero filtro deve essere codificato.

Un esempio non codificato è simile al seguente:

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

Nella tabella seguente vengono descritte le coppie chiave-valore necessarie:

Chiave valore
Campo Campo da filtrare. I valori supportati sono disponibili nella sintassi della richiesta.
Valore Valore in base a cui filtrare. La distinzione tra maiuscole e minuscole del valore viene ignorata. I parametri di valore seguenti sono supportati come illustrato nella sintassi della richiesta:

searchSubstring : sostituire con il nome della società. È possibile immettere una sottostringa in modo che corrisponda a una parte del nome della società ( ad esempio, bri corrisponderà Fabrikam, Inca ).
Esempio: "Value":"bri"

customerId : sostituire con una stringa formattata GUID che rappresenta l'identificatore del cliente.
Esempio: "Value":"0c39d6d5-c70d-4c55-bc02-f620844f3fd1"

resourceType : sostituire con il tipo di risorsa per cui recuperare i record di controllo, ad esempio Sottoscrizione. I tipi di risorse disponibili sono definiti in ResourceType.
Esempio: "Value":"Subscription"
Operatore Operatore da applicare. Gli operatori supportati sono disponibili nella sintassi della richiesta.

Intestazioni delle richieste

  • Per altre informazioni, vedere Intestazioni REST di Parter Center.

Testo della richiesta

Nessuno.

Esempio di richiesta

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

Risposta REST

In caso di esito positivo, questo metodo restituisce un set di attività che soddisfano i filtri.

Codici di errore e di esito della risposta

Ogni risposta viene fornita con un codice di stato HTTP che ne indica l'esito e con informazioni di debug aggiuntive. Usa uno strumento di traccia di rete per leggere il codice, il tipo di errore e parametri aggiuntivi. Per l'elenco completo, vedi Codici di errore REST del Centro per i partner.

Risposta di esempio

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