salesforceにて、CompositeAPIのサブ要求にsobject Collectionを含めて削除・更新・追加を行った際に、どのレコードが成功したのかを判断する方法をご教示願います。
解決したいこと・発生している問題
salesforceで発行された、IDをローカルDBの対応するレコードに保存したい
また、どのレコードが失敗したのかを判断する方法を知りたい
以下理由
新規追加の場合
salesforceで発行された、IDをローカルDBの対応するレコードに保存し、次回以降更新や削除をスムーズに行うため
更新・削除
どのレコードが成功・失敗したのかを判別し、成功したレコードはフラグをfalseにし判断をしたいため
手順
1.ローカルDBからsalesforceへリクエストを送る
2.成功したリクエストに関しては、salesforce側のレコードのIDがレスポンスで返却される
→(2) で返却された、IDをローカルDBの対応するレコードに保存したい
以下のような、CompositeAPIのサブ要求にsobject Collectionを含めて削除・更新・追加を行おうと思っています。
{
// トランザクション化はしない
"allOrNone": false,
"compositeRequest": [
{
"method": "DELETE",
"url": "/services/data/v59.0/composite/sobjects?ids={カスタムオブジェクトID}",
"referenceId": "deleteRef"
},
{
"method": "PATCH",
"url": "/services/data/v59.0/composite/sobjects",
"referenceId": "updateRef",
"body": {
"records": [
{
"attributes": { "type": "Contact" },
"Id": "12345asdfg",
"LastName" : "hoge"
}
]
}
},
{
"method": "POST",
"url": "/services/data/v59.0/composite/sobjects",
"referenceId": "insertRef",
"body": {
"records": [
{
"attributes": { "type": "Contact" },
"LastName" : "hoge"
},
{
"attributes": { "type": "Contact" },
"LastName" : "hoge"
},
{
"attributes": { "type": "Contact" },
"LastName" : "hoge"
}
]
}
}
]
}
現状考えられている手段
1.ドキュメントを読んだところ、リクエストとレスポンスの順番は、基本的に同じである。と記載があったので、順番で判断する
2.insertするリクエストの内容で、salesforceへ情報を取得しに行く
2の方法が新規追加を行った場合には整合性を保つことができて間違いがないのではないかと現状は思っているのですが、何かほかに良い方法はありますでしょうか。
わかりにくい内容で申し訳ございません、知見をお貸しください、、