ApiEvent
query()、queryMore()、および count() のユーザが開始した読み取り専用 API 呼び出しを追跡します。Enterprise WSDL および Partner WSDL の場合、SOAP API、REST API、および Bulk API によって API 要求をキャプチャします。Salesforce モバイルアプリケーションから開始された Tooling API コールおよび API コールはキャプチャされません。ApiEvent は、トランザクションセキュリティポリシーで使用できます。ApiEvent は、ApiEventStream のイベントデータを格納する Big Object です。このオブジェクトは API バージョン 46.0 以降で使用できます。
サポートされているコール
describeSObjects()、query()
特別なアクセスルール
このオブジェクトにアクセスするには、Salesforce Shield または Salesforce Event Monitoring アドオンサブスクリプションと、「データ漏洩検出イベントを表示」ユーザ権限が必要です。
項目
| 項目 | 詳細 |
|---|---|
| AdditionalInfo |
|
| ApiType |
|
| ApiVersion |
|
| Application |
|
| Client |
|
| ConnectedAppId |
|
| ElapsedTime |
|
| EvaluationTime |
|
| EventDate |
|
| EventIdentifier |
|
| LoginHistoryId |
|
| LoginKey |
|
| Operation |
|
| Platform |
|
| PolicyId |
|
| PolicyOutcome |
|
| QueriedEntities |
|
| Query |
|
| Records |
|
| RelatedEventIdentifier |
|
| RowsProcessed |
|
| SessionKey |
|
| SessionLevel |
|
| SourceIp |
|
| UserAgent |
|
| UserId |
|
| Username |
|
AdditionalInfo の使用
AdditionalInfo を使用すると、API イベントを拡張してカスタムデータを含めることができます。このデータは後で照会できます。たとえば、一意の相関 ID を共有する外部システムからユーザが SOQL クエリを実行したときに、その ID を取得できます。このプロセスにより、システム間で API コールを追跡できます。ApiEvent を使用してデータを保存するには、すべての AdditionalInfo 項目名の先頭を x-sfdc-addinfo-{field name} にします。たとえば、有効な項目割り当ては、x-sfdc-addinfo-correlation_id = ABC123 です。ここで、x-sfdc-addinfo-correlation_id は項目名、ABC123 は項目値です。
項目名を定義するときには、次の点に注意してください。
- x-sfdc-addinfo- では大文字と小文字が区別されません。x-sfdc-addinfo-{field name} と X-SFDC-ADDINFO-{field name} および x-SfDc-AdDiNfO-{field name} は等価です。
- 項目には、英数字と「_」 (アンダースコア) 文字のみを使用できます。
- 項目名は、x-sfdc-addinfo-{field name} を含めずに 2 ~ 29 文字にする必要があります。
- 先頭が x-sfdc-addinfo- でない項目名は無視されます。
- x-sfdc-addinfo- より後に無効な文字が含まれる名前は無視され、何も保存されません。たとえば、x-sfdc-addinfo-correlation_id は有効な項目名ですが、x-sfdc-addinfo-correlation->id は有効ではありません。
- 最初の有効な 30 個の項目名のみが AdditionalInfo に保存されます。たとえば x-sfdc-addinfo-correlation_id と x-sfdc-addinfo-correlation_number など、有効な 2 つの項目名を保存している場合、他に 28 個の項目名を保存できます。項目名は、認証に渡されたのと同じ順序で保存されるとは限りません。
- 既存の API 項目名は HTTP ヘッダー内の AdditionalInfo 名に使用できません。AdditionalInfo 名がオブジェクトの API 参照名と競合した場合、項目値は保存されません。たとえば、X-SFDC-ADDINFO-UserId='abc123' という HTTP ヘッダーは AdditionalInfo に保存されません。
- 追加項目値には、英数字、「_」、「-」文字のみを使用できます。
- 項目値は 255 文字以下にする必要があります。項目値が 255 文字を超えた場合、最初の 255 文字のみが保存され、残りは切り捨てられます。
- 無効な文字を含む項目値は保存されますが、項目ヘッダーが空の文字列 ("") になります。
- 最初の有効な 30 個の項目名のみが AdditionalInfo 項目に保存されます。項目名は、認証に渡されたのと同じ順序で保存されるとは限りません。
- AggregationFieldName または PlatformEventMetrics が SourceIp の場合、値が Salesforce.com IP だと AggregationFieldValue で絞り込めません。
HTTP と cURL を使用して追加情報を渡す方法
1curl https://yourInstance.salesforce.com/services/data/v34.0/query?q=SELECT+Name+From+Account -H "X-PrettyPrint:1" -H "x-sfdc-addinfo-correlationid:
2d18c5a3f-4fba-47bd-bbf8-6bb9a1786624"Java の使用例
1//adding additional info headers ..
2Map<String, String> httpHeaders = new HashMap<String,String>();
3httpHeaders.put("x-sfdc-addinfo-fieldname1" /* additional info field*/ , "d18c5a3f-4fba-47bd-bbf8-6bb9a1786624" /* value*/);
4httpHeaders.put("x-sfdc-addinfo-fieldname2" /* additional info field*/ , "d18c5a3f-4fba-47bd-bbf8-6bb9a1786624" /* value*/);
5
6ConnectorConfig config = new ConnectorConfig();
7config.setUsername(userId);
8config.setPassword(passwd);
9config.setAuthEndpoint(authEndPoint);
10config.setProxy(proxyHost, proxyPort);
11
12//setting additional info headers
13for (Map.Entry<String, String> entry : httpHeaders.entrySet()) {
14 config.setRequestHeader(entry.getKey(), entry.getValue());
15}
16// Set the username and password if your proxy must be authenticated
17 config.setProxyUsername(proxyUsername);
18 config.setProxyPassword(proxyPassword);
19 try {
20 QueryResult queryResult = connection.query("SELECT Id, Name FROM Account");
21 // etc.
22 } catch (ConnectionException ce) {
23 ce.printStackTrace();
24 }標準 SOQL 使用状況
ApiEvent では、2 つの項目 (EventDate と EventIdentifier) で絞り込みができます。ApiEvent オブジェクトでサポートされている SOQL 関数は、WHERE、ORDER BY、および LIMIT のみです。WHERE 句では、比較演算子 (<、>、<=、および >=) のみを使用できます。!= 演算子はサポートされていません。ORDER BY 句 では、EventDate DESC のみを使用できます。EventDate では昇順はサポートされておらず、EventIdentifier では並べ替えはサポートされていません。
次のリストで、有効なクエリと無効なクエリの例を確認してください。
-
絞り込みなし
-
有効 — WHERE 句が含まれないため、特殊なルールは適用されません。
1SELECT ApiType, Client, ElapsedTime, QueriedEntities, Username 2FROM ApiEvent
-
有効 — WHERE 句が含まれないため、特殊なルールは適用されません。
-
EventDate で絞り込み — EventDate のみで絞り込みできますが、他の項目で絞り込むと失敗します。このクエリ種別では比較演算子も使用できます。
-
有効 — EventDate のみで絞り込みできますが、他の項目で絞り込むと失敗します。このクエリ種別では比較演算子も使用できます。
1SELECT ApiType, Client, ElapsedTime, QueriedEntities, Username 2FROM ApiEvent 3WHERE EventDate>=2014-11-27T14:54:16.000Z
-
有効 — EventDate のみで絞り込みできますが、他の項目で絞り込むと失敗します。このクエリ種別では比較演算子も使用できます。
非同期 SOQL 使用状況
非同期 SOQL の場合は、ApiEvent の項目を絞り込み、クエリに任意の比較演算子を使用できます。
例: ユーザが Patent__c に対して実行したすべてのクエリを検索する
SELECT EventDate, EventIdentifier, PolicyOutcome, EvaluationTime, Query FROM ApiEvent WHERE QueriedEntities='Patent_c'