【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.