Condividi tramite


Ottenere un record di attività del 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

  • Credenziali come descritto in l'autenticazione del Partner Center. Questo scenario supporta l'autenticazione sia con le credenziali di App autonoma sia con quelle di App+Utente.

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 ulteriori 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 memorizzare 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. Scegli uno e commenta gli altri. In ogni caso, si crea prima un'istanza di un oggetto SimpleFieldFilter usando il 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 le operazioni di audit sui record e chiamare il metodo Query o QueryAsync per eseguire il filtro e ottenere la raccolta degli AuditRecord che rappresentano la prima pagina del risultato. Passa al metodo la data di inizio, una data di fine facoltativa, non utilizzata in questo esempio, 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="bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f";
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 console. project: esempi di SDK del Centro per i partner cartella: controllo

Richiesta REST

Sintassi della richiesta

Metodo URI della richiesta
GET {baseURL}/v1/auditrecords?startDate={startDate} HTTP/1.1
OTTIENI {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 Tipo Obbligatorio Descrizione
data di inizio dattero No Data di inizio in formato aaaa-mm-dd. Se non viene specificato niente, il set di risultati verrà impostato per default su 30 giorni prima della data della richiesta. Questo parametro è facoltativo quando viene fornito un filtro.
data di fine dattero No Data di fine nel formato aaaa-mm-dd. 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 utilizza la data odierna come data di fine, a seconda di quale sia minore.
filtro corda 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 del filtro

È necessario comporre il parametro di filtro come una serie di coppie chiave-valore separate da virgole. Ogni chiave e valore devono essere racchiusi singolarmente tra virgolette e separati da 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 al quale filtrare. La distinzione tra maiuscole e minuscole del valore viene ignorata. I parametri di valore seguenti sono supportati come illustrato in 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, Inc.
Esempio di :"Value":"bri"

customerId: sostituire con una stringa formattata GUID che rappresenta l'identificatore del cliente.
Esempio di :"Value":"bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f"

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

Intestazioni della richiesta

Corpo 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: aaaa0000-bb11-2222-33cc-444444dddddd
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 esito positivo della risposta

Ogni risposta viene fornita con un codice di stato HTTP che indica l'esito positivo o negativo e altre informazioni di debug. Usare uno strumento di traccia di rete per leggere il codice, il tipo di errore e i parametri aggiuntivi. Per l'elenco completo, vedere codici di errore REST del Centro per i partner.

Esempio di risposta

HTTP/1.1 200 OK
Content-Length: 2859
Content-Type: application/json; charset=utf-8
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
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": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
            "customerId": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
            "customerName": "Relecloud",
            "userPrincipalName": "admin@domain.onmicrosoft.com",
            "resourceType": "order",
            "resourceNewValue": "{\"Id\":\"cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a\",\"ReferenceCustomerId\":\"bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f\",\"BillingCycle\":\"none\",\"LineItems\":[{\"LineItemNumber\":0,\"OfferId\":\"C0BD2E08-11AC-4836-BDC7-3712E744922F\",\"SubscriptionId\":\"aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e\",\"ParentSubscriptionId\":null,\"FriendlyName\":\"Office 365 Business Premium Trial\",\"Quantity\":25,\"PartnerIdOnRecord\":null,\"Links\":{\"Subscription\":{\"Uri\":\"/customers/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e\",\"Method\":\"GET\",\"Headers\":[]}}}],\"CreationDate\":\"2017-06-15T15:56:04.077-07:00\",\"Links\":{\"Self\":{\"Uri\":\"/customers/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/orders/cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a\",\"Method\":\"GET\",\"Headers\":[]}},\"Attributes\":{\"Etag\":\"eyJpZCI6ImQ1MWEwNTJlLTA0M2MtNGEyYS1hYTM3LTJiYjkzOGNlZjZjMSIsInZlcnNpb24iOjF9\",\"ObjectType\":\"Order\"}}",
            "operationType": "create_order",
            "operationDate": "2017-06-15T22:56:05.0589308Z",
            "operationStatus": "succeeded",
            "customizedData": [{
                    "key": "OrderId",
                    "value": "cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a"
                }, {
                    "key": "BillingCycle",
                    "value": "None"
                }, {
                    "key": "OfferId-0",
                    "value": "C0BD2E08-11AC-4836-BDC7-3712E744922F"
                }, {
                    "key": "SubscriptionId-0",
                    "value": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
                }, {
                    "key": "SubscriptionName-0",
                    "value": "Office 365 Business Premium Trial"
                }, {
                    "key": "Quantity-0",
                    "value": "25"
                }, {
                    "key": "PartnerOnRecord-0",
                    "value": null
                }
            ],
            "attributes": {
                "objectType": "AuditRecord"
            }
        }, {
            "partnerId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
            "customerId": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
            "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"
    }
}