【Salesforce】The requested resource does not exist
REST APIで一度の呼び出しで複数の命令を送る際に、compositeというものを使います。
しかし、Salesforceのアップデートがあったタイミングでエラーを返すようになりました。
その際のJSONはこんな感じです。
{
"errorCode":"NOT_FOUND",
"message":"The requested resource does not exist"
}
そんな命令は存在しませんって感じですね。
つい先日まで動いていたというのに、無慈悲なメッセージです。
ソースと送信していた命令を見比べていて気が付きました。
compositeのエンドポイントに設定していたAPIバージョンと、compositeRequest内で指定していたURLのAPIバージョンが異なるのです。
JSONの中身はこんな感じです。
{
"compositeRequest" :
[
{
"method" : "POST",
"url" : "/services/data/v42.0/sobjects/Account",
"referenceId" : "refAccount",
"body" :
{
"Name" : "Sample Account"
}
},
{
"method" : "POST",
"url" : "/services/data/v42.0/sobjects/Contact",
"referenceId" : "refContact",
"body" :
{
"LastName" : "Sample Contact",
"AccountId" : "@{refAccount.id}"
}
}
]
}
compositeRequestのURLはv42.0が指定されています。
しかし、compositeのエンドポイントには「/services/data/v41.0/composite/」を指定していました。
compositeのエンドポイントのAPIバージョンは固定の文字列を設定しており、compositeRequestのAPIバージョンは取得したレコードのAPIバージョンを使っていました。
そのため、APIバージョンが食い違ってしまったわけですね。
古いAPIバージョンでも動くようですから、どちらも固定のバージョンにするか、compositeのバージョンをレコードに合わせる必要があります。
固定のバージョンにしてしまえば簡単でしょうかね。
No comments.