レコードの更新/挿入
- 外部 ID が一致しない場合は、リクエストボディに従って新規レコードが作成されます。
- 外部 ID が一度だけ一致する場合は、リクエストボディに従ってレコードが更新されます。
- 外部 ID が複数回一致する場合は、300 エラーが報告され、レコードは作成も更新もされません。
以降のセクションでは、外部 ID リソースを使用して外部 ID でレコードを取得する方法とレコードを Upsert する方法を説明します。
外部 ID を使用した新規レコードの更新/挿入
この例では、PATCH メソッドを使用して新規レコードを挿入します。外部 ID 項目「customExtIdField__c」がすでに Account に追加されていると想定します。また、customExtIdField 値が 11999 の Account レコードがまだ存在していないと想定します。
この例では、ジョブの作成とレコードデータのアップロードを 1 回のコールで実行できます。
- まだ存在していないレコードを Upsert する例
-
1curl https://MyDomainName.my.salesforce.com/services/data/v59.0/sobjects/Account/customExtIdField__c/11999 -H 'Authorization: Bearer 00DE0X0A0M0PeLE!AQcAQH0dMHEXAMPLEzmpkb58urFRkgeBGsxL_QJWwYMfAbUeeG7c1EXAMPLEDUkWe6H34r1AAwOR8B8fLEz6nEXAMPLE' -H "Content-Type: application/json" -H "X-PrettyPrint:1" -d @newrecord.json -X POST - JSON リクエストボディ newrecord.json ファイルの例
-
1{ 2 "Name" : "California Wheat Corporation", 3 "Type" : "New Customer" 4} - JSON 応答の例
- 成功を示す応答を次に示します。
1{ 2 "id":"0018a00001rBqb8AAC", 3 "success":true, 4 "errors":[], 5 "created":true 6 }HTTP 状況コードは 201 (Created) です。
- エラー応答
- 外部 ID 項目が不正な場合は、次のような応答が返されます。
1{ 2 "message" : "The requested resource does not exist", 3 "errorCode" : "NOT_FOUND" 4}
外部 ID を使用した既存のレコードの更新/挿入
この例では、PATCH メソッドを使用して既存のレコードを更新します。外部 ID 項目「customExtIdField__c」がすでに Account に追加されていて、customExtIdField 値が 11999 の Account レコードがすでに存在すると想定します。要求では updates.json を使用して更新する項目値を指定します。
- 既存のレコードを Upsert する例
-
1curl https://MyDomainName.my.salesforce.com/services/data/v59.0/sobjects/Account/customExtIdField__c/11999 -H "Authorization: Bearer token" -H "Content-Type: application/json" -d @updates.json -X PATCH - JSON リクエストボディ updates.json ファイルの例
-
1{ 2 "BillingCity" : "San Francisco" 3} - JSON 応答の例
- API バージョン 46.0 以降では、HTTP 状況コードは 200 (OK) で、成功を示す応答は次のとおりです。
1{ 2 "id" : "001D000000Kv3g5IAB", 3 "success" : true, 4 "errors" : [ ], 5 "created": false 6}API バージョン 45.0 以前では、HTTP 状況コードは 204 (No Content) で、レスポンスボディはありません。
- エラー応答
- 外部 ID 値が一意でない場合、HTTP 状況コード 300 が返され、さらにクエリに一致したレコードのリストが返されます。
- 外部 ID 項目が存在しない場合、エラー���ッセージとコードが返されます。
1{ 2 "message" : "The requested resource does not exist", 3 "errorCode" : "NOT_FOUND" 4}
Id を外部 ID として使用した新規レコードの挿入
この例では、特殊なケースとして POST メソッドを使用し、Id 項目が外部 ID として処理されるレコードを挿入します。Id の値は null であるため、要求から除外されます。このパターンは、異なる外部 ID によって複数のレコードを Upsert するコードを記述していて、個別のリソースを要求したくない場合に役立ちます。Id を使用する POST は、API バージョン 37.0 以降で使用できます。
- まだ存在していないレコードを挿入する例
-
1curl https://MyDomainName.my.salesforce.com/services/data/v59.0/sobjects/Account/Id -H "Authorization: Bearer token" -H "Content-Type: application/json" -d @newrecord.json -X POST - JSON リクエストボディ newrecord.json ファイルの例
-
1{ 2 "Name" : "California Wheat Corporation", 3 "Industry" : "Agriculture" 4} - JSON 応答の例
- 成功を示す応答を次に示します。
1{ 2 "id" : "001D000000Kv3g5IAB", 3 "success" : true, 4 "errors" : [ ], 5 "created": true 6}HTTP 状況コードは 201 (Created) です。