この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

フレンドリー URL を使用したリレーションのトラバース

標準およびカスタムオブジェクトのリレーション項目をトラバースするには、sObject Relationship リソースを使用して、フレンドリー URL を作成します。この方法では、リレーションによって関連付けられたレコードに直接アクセスできます。フレンドリー URL を使用する方が、リレーション項目からオブジェクト ID を取得し、関連付けられたオブジェクト ID レコードを調べて、レコードにアクセスするよりも簡単です。

可能な場合は、Equality の会社の値に一致するように、含めない用語を変更しました。顧客の実装に対する影響を回避するために、一部の用語は変更されていません。

重要

リレーション名は、リレーションの方向 (親から子または子から親) と関連オブジェクトの名前によって決まる特定の規則に従います。規則については、『SOQL および SOSL リファレンス』「リレーション名について」を参照してください。

1 つの REST API コールで行うことができるリレーションのトラバース数には制限があります。これらの制限は、『SOQL および SOSL リファレンス』「リレーションクエリ制限について」に記載されている SOQL の制限と同じです。リレーションをトラバースする場合は、次の制限に注意してください。
  • 子-親リレーションを指定する場合、5 つ以下のレベルをトラバースできます。次の例では、2 つの子-親リレーションをトラバースします。
    1https://MyDomainName.my.salesforce.com/services/data/v57.0/sobjects/ChildOfChild__c/record id/Child__r/ParentOfChild__r
  • 親-子リレーションを指定する場合、1 つ以下のレベルをトラバースできます。次の例では、1 つの親-子リレーションをトラバースします。
    1https://MyDomainName.my.salesforce.com/services/data/v57.0/sobjects/ParentOfChild__c/record id/Child__r

標準オブジェクトのトラバース

標準オブジェクト Contact には、標準オブジェクト Account に対するリレーション項目が含まれています。次の例では、Contact レコードに関連する Account レコードを取得します。

1curl https://MyDomainName.my.salesforce.com/services/data/v57.0/sobjects/Contact/0035e00000PiemmAAB/Account -H "Authorization: Bearer token"
標準オブジェクトのリレーションをトラバースする場合のリクエストボディの例
不要
標準オブジェクトの単純なリレーションをトラバースする場合のレスポンスボディの例
1{
2    "attributes": {
3        "type": "Account",
4        "url": "/services/data/v57.0/sobjects/Account/0015e00000TwULCAA3"
5    },
6    "Id": "0015e00000TwULCAA3",
7    "IsDeleted": false,
8    "Name": "relationshipAccountName",
9    "PhotoUrl": "/services/images/photo/0015e00000TwULCAA3",
10    "OwnerId": "0055e000003E8ooAAC",
11    "CreatedDate": "2021-11-06T17:38:40.000+0000",
12    "CreatedById": "0055e000003E8ooAAC",
13    "LastModifiedDate": "2021-11-06T17:38:40.000+0000",
14    "LastModifiedById": "0055e000003E8ooAAC",
15    "SystemModstamp": "2021-11-06T17:38:40.000+0000",
16    "LastActivityDate": null,
17    "LastViewedDate": "2021-11-06T17:40:50.000+0000",
18    "LastReferencedDate": "2021-11-06T17:40:50.000+0000"
19}
単純なリレーションをトラバースする場合の例
Merchandise__c という名前のこのカスタムオブジェクトには、子 Distributor__c カスタムオブジェクトへの参照関係項目が含まれています。次の例では、Merchandise__c レコードに関連する Distributor__c レコードを取得します。
1curl https://MyDomainName.my.salesforce.com/services/data/v57.0/sobjects/Merchandise__c/a01D000000INjVe/Distributor__r -H "Authorization: Bearer token"
単純なリレーションをトラバースする場合のリクエストボディの例
不要
単純なリレーションをトラバースする場合のレスポンスボディの例
1{
2    "attributes" : 
3    { 
4        "type" : "Distributor__c",
5        "url" : "/services/data/v57.0/sobjects/Distributor__c/a03D0000003DUhcIAG"
6    },
7    "Id" : "a03D0000003DUhcIAG",
8    "OwnerId" : "005D0000001KyEIIA0",
9    "IsDeleted" : false,
10    "Name" : "Distributor1",
11    "CreatedDate" : "2011-12-16T17:43:01.000+0000",
12    "CreatedById" : "005D0000001KyEIIA0",
13    "LastModifiedDate" : "2011-12-16T17:43:01.000+0000",
14    "LastModifiedById" : "005D0000001KyEIIA0",
15    "SystemModstamp" : "2011-12-16T17:43:01.000+0000",
16    "Location__c" : "San Francisco"
17}

リレーション名に関連付けられている関連レコードがない場合、リレーションをトラバースできないため、REST API コールは失敗します。Merchandise__c レコードの Distributor__c 項目が null に設定されている場合、前の例を使用すると、GET コールで 404 エラー応答が返されます。

リレーションクエリの制限を超えない限り、1 つの REST API コールで同じリレーション階層内の複数のリレーションをトラバースできます。Line_Item__c カスタムオブジェクトに Merchandise__c カスタムオブジェクトに対する子リレーションがあり、Merchandise__c に子 Distributor__c カスタムオブジェクトもある場合、次のように Line_Item__c レコードから Distributor__c レコードにアクセスできます。
1curl https://MyDomainName.my.salesforce.com/services/data/v57.0/sobjects/Line_Item__c/a02D0000006YL7XIAW/Merchandise__r/Distributor__r -H "Authorization: Bearer token"

1 つのレコードに解決されるリレーションをトラバースする場合、PATCH および DELETE メソッドもサポートされます。PATCH メソッドを使用して、関連レコードを更新できます。

PATCH を使用してリレーションレコードを更新する場合の例
1curl https://MyDomainName.my.salesforce.com/services/data/v57.0/sobjects/Merchandise__c/a01D000000INjVe/Distributor__r -H "Authorization: Bearer token"  -d @update_info.json -X PATCH
update_info.json に含まれているリレーションレコードを更新する場合の JSON リクエストボディの例
1{
2    "Location__c" : "New York"
3}
リレーションレコードを更新する場合のレスポンスボディの例
戻り値なし

DELETE メソッドを使用して、関連レコードを削除できます。

DELETE を使用してリレーションレコードを削除する場合の例
1curl https://MyDomainName.my.salesforce.com/services/data/v57.0/sobjects/Merchandise__c/a01D000000INjVe/Distributor__r -H "Authorization: Bearer token" -X DELETE
リレーションレコードを削除する場合のレスポンスボディの例
不要
リレーションレコードを更新する場合のレスポンスボディの例
戻り値なし

複数のレコードのあるリレーションのトラバース

複数のレコードのあるリレーションをトラバースして、一連のレコードを含む応答を取得できます。複数の���コードに解決されるリレーションの場合、GET メソッドのみがサポートされます。

複数のレコードのあるリレーションをトラバースする場合の例
Merchandise__c という名前のカスタムオブジェクトに Line_Item__c カスタムオブジェクトに対する主従関係項目が含まれている場合、次の例では Merchandise__c レコードに関連する一連の Line_Item__c レコードが取得されます。
1curl https://MyDomainName.my.salesforce.com/services/data/v57.0/sobjects/Merchandise__c/a01D000000INjVe/Line_Items__r -H "Authorization: Bearer token"
複数のレコードのあるリレーションをトラバースする場合のリクエストボディの例
不要
複数のレコードのあるリレーションをトラバースする場合のレスポンスボディの例
この例の場合、2 つの Line_Item__c レコードが取得されています。
1{
2    "done" : true,
3    "totalSize" : 2,
4    "records" :
5    [
6        {
7            "attributes" :
8            {
9                "type" : "Line_Item__c",
10                "url" : "/services/data/v57.0/sobjects/Line_Item__c/a02D0000006YL7XIAW"
11            },
12            "Id" : "a02D0000006YL7XIAW",
13            "IsDeleted" : false,
14            "Name" : "LineItem1",
15            "CreatedDate" : "2011-12-16T17:44:07.000+0000",
16            "CreatedById" : "005D0000001KyEIIA0",
17            "LastModifiedDate" : "2011-12-16T17:44:07.000+0000",
18            "LastModifiedById" : "005D0000001KyEIIA0",
19            "SystemModstamp" : "2011-12-16T17:44:07.000+0000",
20            "Unit_Price__c" : 9.75,
21            "Units_Sold__c" : 10.0,
22            "Merchandise__c" : "a00D0000008oLnXIAU",
23            "Invoice_Statement__c" : "a01D000000D85hkIAB"
24        },
25        {
26            "attributes" :
27            {
28                "type" : "Line_Item__c",
29                "url" : "/services/data/v57.0/sobjects/Line_Item__c/a02D0000006YL7YIAW"
30            },
31            "Id" : "a02D0000006YL7YIAW",
32            "IsDeleted" : false,
33            "Name" : "LineItem2",
34            "CreatedDate" : "2011-12-16T18:53:59.000+0000",
35            "CreatedById" : "005D0000001KyEIIA0",
36            "LastModifiedDate" : "2011-12-16T18:53:59.000+0000",
37            "LastModifiedById" : "005D0000001KyEIIA0",
38            "SystemModstamp" : "2011-12-16T18:54:00.000+0000",
39            "Unit_Price__c" : 8.5,
40            "Units_Sold__c" : 8.0,
41            "Merchandise__c" : "a00D0000008oLnXIAU",
42            "Invoice_Statement__c" : "a01D000000D85hkIAB"
43        }
44    ]
45}
結果データの逐次化された構造は、REST API を使用して SOQL クエリを実行した結果データと同じ形式です。REST API を使用した SOQL クエリの実行についての詳細は、「Query」を参照してください。

リレーション名に関連付けられている関連レコードがない場合、REST API コールで 200 応答が返され、レスポンスボディにレコードデータはありません。この結果は、1 つのレコードに対する空のリレーションをトラバースした場合の結果 (404 エラー応答が返される) とは異なります。1 つのレコードの場合、PATCH または DELETE メソッドで使用できる REST リソースに解決されるため、この動作が発生します。一方、複数のレコードの場合は照会することしかできません。

複数のレコードのある��レーションの最初の GET 要求クエリで結果の一部のみが返される場合、応答の最後に nextRecordsUrl という項目が含まれます。たとえば、応答の最後で次のような項目が取得されます。
1"nextRecordsUrl" : "/services/data/v57.0/query/01gD0000002HU6KIAW-2000"

インスタンスおよびセッション情報と共に提供された URL を使用してレコードの次のバッチを要求し、すべてのレコードが取得されるまでこの操作を繰り返すことができます。これらの要求では nextRecordsUrl が使用され、パラメータは含まれません。レコードの最後のバッチには nextRecordsUrl 項目が含まれます。

残りの結果を取得する場合の使用例
1curl https://MyDomainName.my.salesforce.com/services/data/v57.0/query/01gD0000002HU6KIAW-2000 -H "Authorization: Bearer token"
残りの結果を取得する場合のリクエストボディの例
不要
残りの結果を取得する場合のレスポンスボディの例
1{
2    "done" : true,
3    "totalSize" : 3200,
4    "records" : [...]
5}

結果項目の絞り込み

リレーションのトラバースでレコードを取得する場合、必要に応じて fields パラメータを使用して、レコード項目のサブセットのみが返されるように指定できます。複数の項目はカンマで区切られます。次の例では、Merchandise__c レコードに関連付けられた Distributor__c レコードから Location__c 項目のみを取得します。
1curl https://MyDomainName.my.salesforce.com/services/data/v57.0/sobjects/Merchandise__c/a01D000000INjVe/Distributor__r?fields=Location__c -H "Authorization: Bearer token"
JSON 応答データは、次のようになります。
1{
2    "attributes" :
3    {
4        "type" : "Distributor__c",
5        "url" : "/services/data/v57.0/sobjects/Distributor__c/a03D0000003DUhhIAG"
6    },
7    "Location__c" : "Chicago",
8}
同様に、複数のレコードになる要求の場合、項目のリストを使用して、レコードセットで返される項目を指定できます。たとえば、2 つの Line_Item__c レコードに関連付けられたリレーションがあるとします。これらのレコードから Name 項目と Units_Sold__c 項目のみを取得する場合、次のコールを使用できます。
1curl https://MyDomainName.my.salesforce.com/services/data/v57.0/sobjects/Merchandise__c/a01D000000INjVe/Line_Items__r?fields=Name,Units_Sold__c -H "Authorization: Bearer token"
応答データは、次のようになります。
1{
2    "done" : true,
3    "totalSize" : 2,
4    "records" : 
5    [
6        {
7            "attributes" :
8            {
9                "type" : "Line_Item__c",
10                "url" : "/services/data/v57.0/sobjects/Line_Item__c/a02D0000006YL7XIAW"
11            },
12            "Name" : "LineItem1",
13            "Units_Sold__c" : 10.0
14        },
15        {
16            "attributes" :
17            {
18                "type" : "Line_Item__c",
19                "url" : "/services/data/v57.0/sobjects/Line_Item__c/a02D0000006YL7YIAW"
20            },
21            "Name" : "LineItem2",
22            "Units_Sold__c" : 8.0
23        }
24    ]
25}

項目パラメータセットにリストされている項目が有効なユーザに表示されない場合、REST API コールは失敗します。前の例では、Units_Sold_c 項目が項目レベルセキュリティで有効なユーザに表示されない場合、コールで 400 エラー応答が返されます。