İş Ortağı Merkezi etkinliğinin kaydını alma
Şunlar için geçerlidir: İş Ortağı Merkezi | ABD Kamu için Microsoft Bulut İş Ortağı Merkezi
Bu makalede, bir iş ortağı kullanıcı veya uygulama tarafından belirli bir süre boyunca gerçekleştirilen işlemlerin kaydının nasıl alındığı açıklanmaktadır.
Geçerli tarihten önceki 30 güne ait denetim kayıtlarını veya başlangıç tarihi ve/veya bitiş tarihi dahil ederek belirtilen bir tarih aralığı için bu API'yi kullanın. Ancak, performans nedeniyle etkinlik günlüğü verilerinin kullanılabilirliğinin önceki 90 günle sınırlı olduğunu unutmayın. Başlangıç tarihi geçerli tarihten 90 günden uzun olan istekler hatalı bir istek özel durumu (hata kodu: 400) ve uygun bir ileti alır.
Önkoşullar
- İş Ortağı Merkezi kimlik doğrulamasında açıklandığı gibi kimlik bilgileri. Bu senaryo hem tek başına Uygulama hem de Uygulama+Kullanıcı kimlik bilgileriyle kimlik doğrulamayı destekler.
C#
İş Ortağı Merkezi işlemlerinin kaydını almak için, önce almak istediğiniz kayıtların tarih aralığını oluşturun. Aşağıdaki kod örneğinde yalnızca başlangıç tarihi kullanılır, ancak bitiş tarihi de ekleyebilirsiniz. Daha fazla bilgi için bkz . Query yöntemi. Ardından, uygulamak istediğiniz filtre türü için ihtiyacınız olan değişkenleri oluşturun ve uygun değerleri atayın. Örneğin, şirket adı alt dizesine göre filtrelemek için, alt dizeyi tutacak bir değişken oluşturun. Müşteri kimliğine göre filtrelemek için kimliği tutacak bir değişken oluşturun.
Aşağıdaki örnekte, bir şirket adı alt dizesine, müşteri kimliğine veya kaynak türüne göre filtrelemek için örnek kod sağlanmıştır. Birini seçin ve diğerlerini açıklama satırı yapın. Her durumda, önce filtreyi oluşturmak için varsayılan oluşturucusunu kullanarak bir SimpleFieldFilter nesnesi örneği oluşturursunuz. Aranacak alanı ve gösterildiği gibi uygulanacak uygun işleci içeren bir dize geçirmeniz gerekir. Filtre ölçütü olarak dizeyi de sağlamanız gerekir.
Ardından, kayıt işlemlerini denetlemek için bir arabirim almak için AuditRecords özelliğini kullanın ve filtreyi yürütmek ve sonucun ilk sayfasını temsil eden AuditRecord koleksiyonunu almak için Query veya QueryAsync yöntemini çağırın. yöntemini başlangıç tarihini, buradaki örnekte kullanılmayan isteğe bağlı bitiş tarihini ve bir varlıktaki sorguyu temsil eden bir IQuery nesnesini geçirin. IQuery nesnesi, yukarıda oluşturulan filtre QueryFactory'nin BuildSimpleQuery yöntemine geçirilerek oluşturulur.
Öğelerin ilk sayfasını aldıktan sonra, kalan sayfalarda yinelemek için kullanabileceğiniz bir numaralandırıcı oluşturmak için Enumerators.AuditRecords.Create yöntemini kullanın.
// 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();
}
Örnek: Konsol test uygulaması. Proje: İş Ortağı Merkezi SDK Örnekleri Klasörü: Denetim
REST isteği
İstek söz dizimi
Metot | İstek URI'si |
---|---|
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 parametresi
İsteği oluştururken aşağıdaki sorgu parametrelerini kullanın.
Adı | Tür | Zorunlu | Açıklama |
---|---|---|---|
startDate | tarih | Hayır | Başlangıç tarihi yyyy-aa-gg biçimindedir. Hiçbiri sağlanmazsa, sonuç kümesi varsayılan olarak istek tarihinden 30 gün önceye ayarlanır. Bu parametre, bir filtre sağlandığında isteğe bağlıdır. |
endDate | tarih | Hayır | Bitiş tarihi yy-aa-gg biçimindedir. Bu parametre, bir filtre sağlandığında isteğe bağlıdır. Bitiş tarihi atlandığında veya null olarak ayarlandığında, istek en büyük pencereyi döndürür veya bitiş tarihi (hangisi daha azsa) olarak bugün değerini kullanır. |
filtrele | Dize | Hayır | Uygulanacak filtre. Bu parametre kodlanmış bir dize olmalıdır. Başlangıç tarihi veya bitiş tarihi sağlandığında bu parametre isteğe bağlıdır. |
Filtre söz dizimi
Filtre parametresini virgülle ayrılmış bir dizi anahtar-değer çifti olarak oluşturmanız gerekir. Her anahtar ve değer ayrı ayrı tırnak içine alınıp iki nokta üst üste ile ayrılmalıdır. Filtrenin tamamı kodlanmalıdır.
Kodlanmamış bir örnek şöyle görünür:
?filter{"Field":"CompanyName","Value":"bri","Operator":"substring"}
Aşağıdaki tabloda gerekli anahtar-değer çiftleri açıklanmaktadır:
Anahtar | Değer |
---|---|
Alan | Filtre uygulama alanı. Desteklenen değerler İstek söz diziminde bulunabilir. |
Değer | Filtre ölçütü olarak değer. Değerin büyük/küçük harf durumu yoksayılır. İstek söz diziminde gösterildiği gibi aşağıdaki değer parametreleri desteklenir: searchSubstring - değerini şirketin adıyla değiştirin. Şirket adının bir bölümüyle eşleşecek bir alt dize girebilirsiniz (örneğin, bri eşleşecektir Fabrikam, Inc ).Örnek: "Value":"bri" customerId - değerini müşteri tanımlayıcısını temsil eden GUID biçimli bir dizeyle değiştirin. Örnek: "Value":"0c39d6d5-c70d-4c55-bc02-f620844f3fd1" resourceType - değerini denetim kayıtlarının alındığı kaynak türüyle (örneğin, Abonelik) değiştirin. Kullanılabilir kaynak türleri ResourceType içinde tanımlanır. Örnek: "Value":"Subscription" |
Operatör | Uygulanacak işleç. Desteklenen işleçler İstek söz diziminde bulunabilir. |
İstek üst bilgileri
- Daha fazla bilgi için bkz . Parter Center REST üst bilgileri.
Request body
Yok.
İstek örneği
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 yanıtı
Başarılı olursa, bu yöntem filtreleri karşılayan bir etkinlik kümesi döndürür.
Yanıt başarısı ve hata kodları
Her yanıt, başarılı veya başarısız olduğunu belirten bir HTTP durum kodu ve ek hata ayıklama bilgileriyle birlikte gelir. Bu kodu, hata türünü ve ek parametreleri okumak için bir ağ izleme aracı kullanın. Tam liste için bkz . İş Ortağı Merkezi REST hata kodları.
Yanıt örneği
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"
}
}