Composite サブ要求の結果
Composite サブ要求の結果では、サブ要求の結果を記述します。
プロパティ
| 名前 | 型 | 説明 |
|---|---|---|
| body | データ型は、サブ要求の応答種別によって異なります。 |
このサブ要求のレスポンスボディ。詳細は、サブ要求リソースのドキュメントを参照してください。 サブ要求がエラーを返す場合、ボディにはエラーコードとエラーメッセージが含まれます。エラー応答についての詳細は「状況コードとエラー応答」を参照してください。 |
| httpHeaders | Map<String, String> | このサブ要求のレポートヘッダーとその値。Composite リソースは Content-Length ヘッダーをサポートしないため、サブ要求のレスポンスにも最上位レベルのレスポンスにもこのヘッダーは含まれません。 |
| httpStatusCode | Integer | このサブ要求の HTTP 状況コード。Composite 要求で allOrNone が true に設定されていて、サブ要求がエラーを返す場合、他のすべてのサブ要求は 400 HTTP 状況コードを返します。 |
| referenceId | String | サブ要求で指定された参照 ID。このプロパティにより、サブ要求をその結果に容易に関連付けることができます。 |
例
1{
2 "body": {
3 "id": "001R00000064wdtIAA",
4 "success": true,
5 "errors": []
6 },
7 "httpHeaders": {
8 "Location": "/services/data/v52.0/sobjects/Account/001R00000064wdtIAA"
9 },
10 "httpStatusCode": 201,
11 "referenceId": "refAccount"
12}次の例は、Contact の作成中にエラー���発生したサブ要求への応答を示します。
1{
2 "body" : [ {
3 "message" : "Email: invalid email address: Not a real email address",
4 "errorCode" : "INVALID_EMAIL_ADDRESS",
5 "fields" : [ "Email" ]
6 } ],
7 "httpHeaders" : { },
8 "httpStatusCode" : 400,
9 "referenceId" : "badContact"
10}参照 ID に無効な文字が含まれていた場合の動作および応答
referenceId には、文字、数字、アンダースコア (「_」) のみを使用する必要があります。
無効な文字があった場合の API の動作は、API バージョンとリリースによって異なります。(Composite 要求の作成に使用された API バージョンが関係しますが、このバージョンは url パラメータに指定された API バージョンと必ずしも同じではありません)。
たとえば、以下の要求を検討します。この要求では、次の操作が試みられます。
- 「Cloudy Consulting」という新しい取引先を作成する。
- 新しい取引先「Mary Smith」を作成して、取引先 Cloudy Consulting にリンクする。
- さらに、「Easy Spaces」という新しい取引先を作成する。
1{
2 "allOrNone": false,
3 "compositeRequest": [
4 {
5 "method": "POST",
6 "body": {
7 "name": "Cloudy Consulting"
8 },
9 "url": "/services/data/vXX.X/sobjects/Account/",
10 "referenceId": "refNewAccount[1]"
11 },
12 {
13 "method": "POST",
14 "body": {
15 "AccountId": "@{refNewAccount[1].id}",
16 "FirstName": "Mary",
17 "LastName": "Smith”
18 },
19 "url": "/services/data/vXX.X/sobjects/Contact",
20 "referenceId": "refNewContact"
21 },
22 {
23 "method": "POST",
24 "body": {
25 "name": "Easy Spaces"
26 },
27 "url": "/services/data/vXX.X/sobjects/Account/",
28 "referenceId": "refNewAccount2"
29 }
30 ]
31}
32バージョン 51.0 以前
API バージョン 51.0 以前の場合、参照 ID に無効な文字が含まれていると、その参照 ID を使用するすべてのサブ要求が失敗します。この例の場合の応答を次に示します。
1HTTP/1.1 200 OK
2{
3 "compositeResponse" : [
4 {
5 "body" : {
6 "id" : "001R0000006hfeZIAQ",
7 "success" : true,
8 "errors" : [ ]
9 },
10 "httpHeaders" : {
11 "Location" : "/services/data/v51.0/sobjects/Account/001R0000006hfeZIAQ"
12 },
13 "httpStatusCode" : 201,
14 "referenceId" : "refNewAccount[1]"
15 },
16 {
17 "body" : [
18 {
19 "errorCode" : "PROCESSING_HALTED",
20 "message" : "Invalid reference specified. No value for refNewAccount[1].id found in refNewAccount.
21 }
22 ],
23 "httpHeaders" : { },
24 "httpStatusCode" : 400,
25 "referenceId" : "refNewContact"
26 },
27 {
28 "body" : {
29 "id" : "001R0000006hfeeIAA",
30 "success" : true,
31 "errors" : [ ]
32 },
33 "httpHeaders" : {
34 "Location" : "/services/data/v51.0/sobjects/Account/001R0000006hfeeIAA"
35 },
36 "httpStatusCode" : 201,
37 "referenceId" : "refNewAccount2"
38 }
39 ]
40}2 つの取引先が作成されます (最初の取引先が参照 ID 内の無効な文字を使用していても)。ただし、(無効な文字を含む参照 ID を使用して) 取引先を作成する試みは失敗します。
以前のリリースでのバージョン 51.0 以前の応答
上記の応答は、Summer ’21 以降のリリースのものです。Summer ’21 より前のリリースの場合、応答内の「(」または「[」を含む問題のある参照 ID は、切り捨てられました。したがって、応答は次のようになりました。
1{
2 "compositeResponse" : [
3 {
4 "body" : {
5 "id" : "001R0000006hfeZIAQ",
6 "success" : true,
7 "errors" : [ ]
8 },
9 "httpHeaders" : {
10 "Location" : "/services/data/v51.0/sobjects/Account/001R0000006hfeZIAQ"
11 },
12 "httpStatusCode" : 201,
13 "referenceId" : "refNewAccount"
14 },
15 ...
16}Summer ’21 リリース以降、参照 ID は、問題があっても切り捨てられなくなりました。この変更により、応答と要求の各部をより簡単に突き合わせることができます。
バージョン 52.0 以降
API バージョン 52.0 以降の場合、参照 ID に無効な文字が含まれていると、要求全体が失敗します。上記の例に対する応答を次に示します。
1HTTP/1.1 400 Bad Request
2[
3 {
4 "message" : "Provided referenceId ('refNewAccount[1]') must start with a letter or a number, and it can contain only letters, numbers and underscores ('_').",
5 "errorCode" : "JSON_PARSER_ERROR"
6 }
7]まとめ
