Bagikan melalui


Mendapatkan catatan aktivitas Pusat Mitra

Berlaku untuk: Pusat Mitra | Pusat Mitra untuk Microsoft Cloud untuk Pemerintah AS

Artikel ini menjelaskan cara mengambil catatan operasi yang dilakukan oleh pengguna atau aplikasi mitra selama jangka waktu tertentu.

Gunakan API ini untuk mengambil catatan audit selama 30 hari sebelumnya dari tanggal saat ini, atau untuk rentang tanggal yang ditentukan dengan menyertakan tanggal mulai dan/atau tanggal akhir. Namun, perhatikan bahwa untuk alasan performa, ketersediaan data log aktivitas dibatasi hingga 90 hari sebelumnya. Permintaan dengan tanggal mulai yang lebih besar dari 90 hari sebelum tanggal saat ini akan menerima pengecualian permintaan yang buruk (kode kesalahan: 400) dan pesan yang sesuai.

Prasyarat

  • Kredensial seperti yang dijelaskan dalam autentikasi Pusat Mitra. Skenario ini mendukung autentikasi dengan kredensial Aplikasi mandiri dan Aplikasi+Pengguna.

C#

Untuk mengambil catatan operasi Pusat Mitra, pertama-tama tetapkan rentang tanggal untuk rekaman yang ingin Anda ambil. Contoh kode berikut hanya menggunakan tanggal mulai, tetapi Anda juga dapat menyertakan tanggal selesai. Untuk informasi selengkapnya, lihat metode Kueri. Selanjutnya, buat variabel yang Anda butuhkan untuk jenis filter yang ingin Anda terapkan, dan tetapkan nilai yang sesuai. Misalnya, untuk memfilter menurut substring nama perusahaan, buat variabel untuk menahan substring. Untuk memfilter menurut ID pelanggan, buat variabel untuk menahan ID.

Dalam contoh berikut, kode sampel disediakan untuk memfilter menurut substring nama perusahaan, ID pelanggan, atau jenis sumber daya. Pilih satu dan komentari yang lain. Dalam setiap kasus, Anda terlebih dahulu membuat instans objek SimpleFieldFilter menggunakan konstruktor defaultnya untuk membuat filter. Anda harus meneruskan string yang berisi bidang untuk dicari, dan operator yang sesuai untuk diterapkan, seperti yang ditunjukkan. Anda juga harus menyediakan string untuk difilter.

Selanjutnya, gunakan properti AuditRecords untuk mendapatkan antarmuka untuk mengaudit operasi rekaman, dan memanggil metode Query atau QueryAsync untuk menjalankan filter dan mendapatkan kumpulan AuditRecord yang mewakili halaman pertama hasil. Berikan metode tanggal mulai, tanggal akhir opsional yang tidak digunakan dalam contoh di sini, dan objek IQuery yang mewakili kueri pada entitas. Objek IQuery dibuat dengan meneruskan filter yang dibuat di atas ke metode BuildSimpleQuery QueryFactory.

Setelah Anda memiliki halaman awal item, gunakan metode Enumerators.AuditRecords.Create untuk membuat enumerator yang dapat Anda gunakan untuk melakukan iterasi melalui halaman yang tersisa.

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

Sampel: Aplikasi pengujian konsol. Proyek: Folder Sampel SDK Pusat Mitra: Audit

Permintaan REST

Minta sintaks

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

Parameter URI

Gunakan parameter kueri berikut saat membuat permintaan.

Nama Tipe Wajib Deskripsi
startDate date No Tanggal mulai dalam format yyyy-mm-dd. Jika tidak ada yang disediakan, tataan hasil akan default ke 30 hari sebelum tanggal permintaan. Parameter ini bersifat opsional ketika filter disediakan.
endDate date No Tanggal akhir dalam format yyyy-mm-dd. Parameter ini bersifat opsional ketika filter disediakan. Ketika tanggal akhir dihilangkan atau diatur ke null, permintaan mengembalikan jendela maks atau menggunakan hari ini sebagai tanggal akhir, mana yang kurang.
filter string No Filter yang akan diterapkan. Parameter ini harus berupa string yang dikodekan. Parameter ini bersifat opsional ketika tanggal mulai atau tanggal akhir disediakan.

Sintaksis filter

Anda harus menyusun parameter filter sebagai serangkaian pasangan nilai kunci yang dipisahkan koma. Setiap kunci dan nilai harus dikutip secara individual dan dipisahkan oleh titik dua. Seluruh filter harus dikodekan.

Contoh yang tidak dikodekan terlihat seperti ini:

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

Tabel berikut ini menjelaskan pasangan kunci-nilai yang diperlukan:

Tombol Nilai
Bidang Bidang yang akan difilter. Nilai yang didukung dapat ditemukan dalam Sintaks permintaan.
Nilai Nilai yang akan difilter. Kasus nilai diabaikan. Parameter nilai berikut didukung seperti yang ditunjukkan dalam Sintaks permintaan:

searchSubstring - Ganti dengan nama perusahaan. Anda dapat memasukkan substring untuk mencocokkan bagian dari nama perusahaan (misalnya, bri akan cocok Fabrikam, Inc).
Contoh: "Value":"bri"

customerId - Ganti dengan string berformat GUID yang mewakili pengidentifikasi pelanggan.
Contoh: "Value":"0c39d6d5-c70d-4c55-bc02-f620844f3fd1"

resourceType - Ganti dengan jenis sumber daya untuk mengambil catatan audit (misalnya, Langganan). Jenis sumber daya yang tersedia ditentukan dalam ResourceType.
Contoh: "Value":"Subscription"
Operator Operator yang akan diterapkan. Operator yang didukung dapat ditemukan dalam Sintaks permintaan.

Header permintaan

  • Untuk informasi selengkapnya, lihat Header REST Pusat Parter.

Isi permintaan

Tidak ada.

Contoh permintaan

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

Respons REST

Jika berhasil, metode ini mengembalikan serangkaian aktivitas yang memenuhi filter.

Kode kesalahan dan keberhasilan respons

Setiap respons dilengkapi dengan kode status HTTP yang menunjukkan keberhasilan atau kegagalan dan informasi penelusuran kesalahan tambahan. Gunakan alat pelacakan jaringan untuk membaca kode ini, jenis kesalahan, dan parameter tambahan. Untuk daftar lengkapnya, lihat Kode kesalahan REST Pusat Mitra.

Contoh tanggapan

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