パートナー センター アクティビティのレコードを取得する

適用対象: パートナー センター | Microsoft Cloud for US Government のパートナー センター

この記事では、パートナー ユーザーまたはアプリケーションによって一定期間にわたって実行された操作のレコードを取得する方法について説明します。

この API を使用して、現在の日付から過去 30 日間、または開始日や終了日を含めて指定した日付範囲の監査レコードを取得します。 ただし、パフォーマンス上の理由から、アクティビティ ログ データの可用性は過去 90 日間に制限されることに注意してください。 現在の日付の 90 日より前の開始日を持つ要求は、不適切な要求例外 (エラー コード: 400) と適切なメッセージを受け取ります。

前提条件

  • パートナー センターの認証に関するページで説明している資格情報。 このシナリオでは、スタンドアロンの App と App+User の両方の資格情報を使用した認証がサポートされています。

C#

パートナー センターの操作のレコードを取得するには、まず、取得するレコードの日付範囲を設定します。 次のコード例では開始日のみを使用しますが、終了日を含めることもできます。 詳細については、Query メソッドを参照してください。 次に、適用するフィルターの種類に必要な変数を作成し、適切な値を割り当てます。 たとえば、会社名の部分文字列でフィルター処理するには、部分文字列を保持する変数を作成します。 顧客 ID でフィルター処理するには、ID を保持する変数を作成します。

次の例では、会社名の部分文字列、顧客 ID、またはリソースの種類でフィルター処理するサンプル コードが提供されています。 1 つを選択し、他のユーザーをコメント アウトします。 いずれの場合も、最初に既定のコンストラクター使用して 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();
}

サンプル: コンソール テスト アプリプロジェクト: パートナー センター SDK サンプル フォルダー: 監査

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
フィールド フィルター処理するフィールド。 サポートされている値は、要求構文確認できます。
Value フィルター処理される値。 値の大文字と小文字は無視されます。 要求構文に示すように、次の値パラメーターがサポートされています。

searchSubstring - 会社の名前に置き換えます。 会社名の一部と一致する部分文字列を入力できます (たとえば、 bri 一致 Fabrikam, Incします)。
例:"Value":"bri"

customerId - 顧客識別子を表す GUID 形式の文字列に置き換えます。
例:"Value":"0c39d6d5-c70d-4c55-bc02-f620844f3fd1"

resourceType - 監査レコードを取得するリソースの種類 (サブスクリプションなど) に置き換えます。 使用可能なリソースの種類は ResourceType定義されています。
例:"Value":"Subscription"
演算子 適用する演算子。 サポートされている演算子は、要求構文にあります

要求ヘッダー

要求本文

なし。

要求の例

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