この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

データアクセスに影響する要素

API を使用する際、次の要素は組織データへのアクセスに影響を与えます。

アクセス
組織で API アクセスが有効になっている必要があります。
オブジェクトは、Salesforce に連絡してアクセスを要求するまで使用できない場合があります。たとえば、Territory が表示されるのは、テリトリー管理がアプリケーションで有効になっている場合のみです。オブジェクトのアクセスに関する情報は、各オブジェクトの「使用方法」セクションに記述されます。
場合によっては、機能に関連するオブジェクトに API でアクセスできるようにするには、機能を 1 回は使用する必要があります。たとえば、recordTypeIds を使用できるのは、ユーザインターフェースで組織に少なくとも 1 つのレコードタイプが組織に作成された後です。
データアクセスの問題を調査するには、最初に WSDL を調査します。
  • Enterprise WSDL: 生成された Enterprise WSDL ファイルには、組織で利用可能なすべてのオブジェクトが含まれています。API を使用して、クライアントアプリケーションは Enterprise WSDL ファイルで定義されているオブジェクトにアクセスできます。
  • Partner WSDL: 生成された Partner WSDL ファイルを使用する際、クライアントアプリケーションは describeGlobal() コールで返されたオブジェクトにアクセスできます。
オブジェクトレベルおよび項目レベルのセキュリティ
API はユーザインターフェースで設定したオブジェクトレベルおよび項目レベルのセキュリティを優先します。ログインユーザの権限およびアクセス設定で許可されている場合のみ、オブジェクトや項目にアクセスできます。たとえば、ユーザに表示されない項目は、query() または describeSObjects() コールでも返されません。同様に、参照のみ項目は更新できません。
ユーザ権限
API へのアクセスを試みるユーザは、「API 対応」権限が選択されている必要があります。デフォルトでは選択されています。
クライアントアプリケーションは、ログインユーザと呼ばれるユーザとしてログインします。ログインユーザの権限によって、組織の特定のオブジェクトおよび項目への次のようなアクセスが許可または拒否されます。
  • 参照 — ユーザは、このタイプのオブジェクトを参照のみできます。
  • 作成 — ユーザは、このタイプのオブジェクトを参照し、作成できます。
  • 編集 — ユーザは、このタイプのオブジェクトを参照し、更新できます。
  • 削除 — ユーザは、このタイプのオブジェクトを参照し、編集、削除できます。
ユーザ権限は項目レベルのセキュリティには影響を与えません。項目レベルのセキュリティが、項目を非表示に指定している場合、そのオブジェクトへの「参照」権限のあるユーザは、レコードの非表示でない項目のみを参照できます。さらに、オブジェクトへの「参照」権限のあるユーザは共有設定が許可されているレコードのみを参照できます。唯一の例外は「参照のみ項目の編集」権限です。この権限は項目レベルのセキュリティにより、参照のみに設定されている項目の編集権限をユーザに付与します。
共有
ほとんどの API コールでは、ログインユーザの共有モデル外のデータは返されません。アプリケーションの場合と同様に、ユーザには、組織のデフォルトと手動によるレコード共有の指定のうち、最も権限の大きいアクセス権が付与されます。
共有を無効にするユーザ権限
  • すべての参照 — ユーザは共有設定に関係なく、このオブジェクトに関連付けられたすべてのレコードを表示できます。
  • すべての編集 — ユーザは共有設定に関係なく、このオブジェクトに関連付けられたすべてのレコードの参照、編集、削除、移行、承認を実行できます。
  • すべてのデータの編集 — ユーザは共有設定に関係なく、すべてのレコードの参照、編集、削除、移行、承認を実行できます。この権限は、「すべての参照」および「すべての編集」と異なり、オブジェクトレベルの権限ではありません。
データのセキュリティを保護するには、ログインユーザにはアプリケーションから行われたすべてのコールを正常に実行するために必要な権限だけを割り当てます。大きなインテグレーションアプリケーションでは、コールの応答時間を高速化するために「すべてのデータの編集」が必要な場合があります。大量のレコードを読み込む場合は、代わりに Bulk API を使用します。
関連オブジェクト
オブジェクトによっては、他のオブジェクトに権限を依存する場合があります。たとえば、AccountTeamMember は、共有の権限は Account レコードなど、権限が割り当てられている関連オブジェクトに従います。同様に、Partner は関連する取引先の権限に依存します。
あるレコードの所有者を変更しても、他の関連レコードには自動的にカスケードされません。たとえば、Account の所有者が変更された場合、その Account に関連付けられた Contract の所有者が自動的に変更されることはありません。クライアントアプリケーションでそれぞれの所有者を別個に、明示的に変更する必要があります。
オブジェクトプロパティ
create() コールでオブジェクトを作成する場合、オブジェクトの createable 属性を true に設定する必要があります。オブジェクトに許可されている操作を判断するために、クライアントアプリケーションでオブジェクトに対して describeSObjects() コールを実行し、DescribeSObjectResult のプロパティを調べることができます。

replicatable の場合、getUpdated() および getDeleted() コールが許可されます。

メモ

ページレイアウトとレコードタイプ
ページレイアウトとレコードタイプについて Salesforce ユーザインターフェースで定義した要件は、API では適用されません。
  • 特定の項目が必須であるかどうかはページレイアウトで指定できますが、API は、そのようなレイアウト固有の項目制限や入力規則を create() および update() コールで適用しません。制限を適用するかどうかはクライアントアプリケーションが決定します。
  • 指定されたレコードで選択する選択リスト値や、異なるプロファイルを持つユーザが参照するページレイアウトは、レコード型で制御できます。ただし、ユーザインターフェースで設定され、適用されるルールは API では適用されません。たとえば、API は、選択リスト項目の値がログインユーザのプロファイルに関連付けられたレコードタイプ制限で許可されるかどうかを確認しません。同様に、ログインユーザのプロファイルに関連付けられたレイアウトに項目がないという理由で、クライアントアプリケーションが特定の項目にデータを追加するのを API で拒否することはありません。
参照整合性
参照整合性を確保するために、API は特定の動作を適用または防止します。
  • reference データ型ID 値は create() および update() コールで検証されます。
  • クライアントアプリケーションがレコードを削除した場合、その子の ChildRelationshipcascadeDelete プロパティの値が true であれば、その子もコールの一部として自動的に削除されます。たとえば、クライアントアプリケーションが Opportunity を削除すると、関連付けられた OpportunityLineItem レコードもまた削除されます。ただし、OpportunityLineItem が削除できない、または使用中の場合、親の Opportunity の削除は失敗します。たとえば、クライアントアプリケーションが Invoice_Statement を削除すると、関連付けられた Line_Item レコードも削除されます。ただし、Line_Item が削除できない、または使用中の場合、親の Invoice_Statement の削除は失敗します。何が削除されるかを確認するには、DescribeSObjectResult を使用し、ChildRelationship 値を確認します。

    cascadeDelete の実行を阻止するいくつかの例外があります。たとえば、取引先にケースが関連付けられている場合、他のユーザが所有する関連商談がある場合、または関連付けられた取引先責任者がカスタマーポータルで有効になっている場合、その取引先は削除できません。さらに、現在のユーザによる成立した商談がある場合、または有効な契約のある場合、レコードの削除要求は失敗します。