パートナー センター アクティビティのレコードを取得する
適用対象: パートナー センター | Microsoft Cloud for US Government のパートナー センター
この記事では、パートナー ユーザーまたはアプリケーションによって一定期間にわたって実行された操作のレコードを取得する方法について説明します。
この API を使用して、現在の日付から過去 30 日間、または開始日や終了日を含めて指定した日付範囲の監査レコードを取得します。 ただし、パフォーマンス上の理由から、アクティビティ ログ データの可用性は過去 90 日間に制限されることに注意してください。 現在の日付の 90 日より前の開始日を持つ要求は、不適切な要求例外 (エラー コード: 400) と適切なメッセージを受け取ります。
前提条件
- パートナー センターの認証に関するページで説明している資格情報。 このシナリオでは、スタンドアロン アプリとアプリ + ユーザーの両方の資格情報を使った認証がサポートされています。
C#
パートナー センターの操作のレコードを取得するには、まず、取得するレコードの日付範囲を設定します。 次のコード例では開始日のみを使用しますが、終了日を含めることもできます。 詳細については、 Query メソッドを参照してください。 次に、適用するフィルターの種類に必要な変数を作成し、適切な値を割り当てます。 たとえば、会社名の部分文字列でフィルター処理するには、部分文字列を保持する変数を作成します。 顧客 ID でフィルター処理するには、ID を保持する変数を作成します。
次の例では、会社名の部分文字列、顧客 ID、またはリソースの種類でフィルター処理するサンプル コードが提供されています。 1 つを選択し、他のユーザーをコメント アウトします。 いずれの場合も、最初に既定の constructor を使用して SimpleFieldFilter オブジェクトをインスタンス化してフィルターを作成します。 次に示すように、検索するフィールドと適用する適切な演算子を含む文字列を渡す必要があります。 また、フィルター処理する文字列も指定する必要があります。
次に、 AuditRecords プロパティを使用してレコード操作を監査するインターフェイスを取得し、 Query または QueryAsync メソッドを呼び出してフィルターを実行し、結果の最初のページを表す AuditRecord のコレクションを取得します。 メソッドに、開始日、この例では使用されていない省略可能な終了日、エンティティのクエリを表す IQuery オブジェクトを渡します。 IQuery オブジェクトは、上記で作成したフィルターを QueryFactory のBuildSimpleQuery メソッドに渡すことによって作成されます 。
項目の最初のページを取得したら、 Enumerators.AuditRecords.Create メソッドを使用して、残りのページを反復処理するために使用できる列挙子を作成します。
// 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();
}
サンプル: Console テスト アプリ。 Project: パートナー センター SDK サンプル Folder: 監査
REST 要求
要求の構文
認証方法 | 要求 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 パラメーター
要求を作成するときは、次のクエリ パラメーターを使用します。
名前 | タイプ | Required | 説明 |
---|---|---|---|
startDate | 日付 | いいえ | yyyy-mm-dd 形式の開始日。 何も指定されていない場合、結果セットの既定値は要求日の 30 日前になります。 フィルターが指定されている場合、このパラメーターは省略可能です。 |
endDate | 日付 | いいえ | yyyy-mm-dd 形式の終了日。 フィルターが指定されている場合、このパラメーターは省略可能です。 終了日を省略するか null に設定すると、要求は最大ウィンドウを返すか、終了日のいずれか小さい方の日付として今日を使用します。 |
フィルター | string | いいえ | 適用するフィルター。 このパラメーターはエンコードされた文字列である必要があります。 開始日または終了日を指定する場合、このパラメーターは省略可能です。 |
フィルターの構文
フィルター パラメーターは、一連のコンマ区切りのキーと値のペアとして構成する必要があります。 各キーと値は、個別に引用符で囲まれ、コロンで区切られている必要があります。 フィルター全体はエンコードされている必要があります。
エンコードされていない例は次のようになります。
?filter{"Field":"CompanyName","Value":"bri","Operator":"substring"}
次の表では、必要なキーと値のペアについて説明します。
Key | Value |
---|---|
フィールド | フィルター処理するフィールド。 サポートされている値は、 Request 構文にあります。 |
Value | フィルター処理される値。 値の大文字と小文字は無視されます。 Request 構文に示すように、次の値パラメーターがサポートされています。 searchSubstring - 会社の名前に置き換えます。 会社名の一部に一致する部分文字列を入力できます (たとえば、 bri は Fabrikam, Inc と一致します)。例: "Value":"bri" customerId - 顧客識別子を表す GUID 形式の文字列に置き換えます。 例: "Value":"0c39d6d5-c70d-4c55-bc02-f620844f3fd1" resourceType - 監査レコードを取得するリソースの種類 (サブスクリプションなど) に置き換えます。 使用可能なリソースの種類は、 ResourceType で定義されます。 例: "Value":"Subscription" |
Operator | 適用する演算子。 サポートされている演算子は、 Request 構文にあります。 |
要求ヘッダー
- 詳細については、「 Parter Center REST ヘッダーを参照してください。
要求本文
なし。
要求の例
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 応答
成功した場合、このメソッドはフィルターを満たす一連のアクティビティを返します。
応答の成功とエラーのコード
各応答には、成功または失敗を示す HTTP ステータス コードと、追加のデバッグ情報が付属しています。 このコード、エラーの種類、追加のパラメーターを読み取るには、ネットワーク トレース ツールを使用します。 完全な一覧については、パートナー センターの REST エラーコードに関する記事を参照してください。
応答の例
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"
}
}