ステップ 2: サンプルコードを説明する
これらの例は、コピー/貼り付けして cURL で送信できます。ただし、ベース URI の MyDomainName は、Salesforce 組織のドメインに置き換える必要があります。REST 要求の仕組みに詳しくない場合は、「REST リソースと要求」を参照してください。
この例では、一連の REST 要求が次のシナリオで使用されます。
- Salesforce バージョンを取得する。
- Salesforce バージョンを使用して、使用可能なリソースのリストを取得する。
- リソースの 1 つを使用して、使用可能なオブジェクトのリストを取得する。
- オブジェクトの 1 つを選択して、そのメタデータの説明を取得する。
- その同じオブジェクトの項目のリストを取得する。
- SOQL クエリを実行して、Account レコードのすべての name 項目の値を取得する。
- Account オブジェクトの 1 つで請求先市区郡の情報 (BillingCity) を更新する。
Salesforce バージョンを取得する
はじめに、使用可能な各 Salesforce バージョンに関する情報を取得します。Versions 要求を送信します。この場合、要求に認証は必要ありません。
1curl https://MyDomainName.my.salesforce.com/services/data/応答ヘッダーを含む、この要求の出力は次のとおりです。出力には、すべての有効なバージョンが示されます (結果には複数の値が含まれる場合があります)。
1Content-Length: 88
2Content-Type: application/json;
3charset=UTF-8 Server:
4[
5 {
6 "label":"Spring '11",
7 "url":"/services/data/v21.0",
8 "version":"21.0"
9 }
10 ...
11]次に、これらのバージョンの 1 つを使用して、それに含まれるリソースを検出します。
リソースのリストを取得する
Salesforce (この例ではバージョン 55.0) で使用可能なリソースのリストを取得します。Resources by Version 要求を送信します。
1curl https://MyDomainName.my.salesforce.com/services/data/v55.0/ -H "Authorization: Bearer access_token" -H "X-PrettyPrint:1"この要求からの出力は次のとおりです。sobjects が、Salesforce バージョン 55.0 で使用可能なリソースの 1 つであることがわかります。
1{
2 "sobjects" : "/services/data/v55.0/sobjects",
3 "search" : "/services/data/v55.0/search",
4 "query" : "/services/data/v55.0/query",
5 "recent" : "/services/data/v55.0/recent"
6}このリソースを次の要求で使用し、使用可能なオブジェクトを取得します。
使用可能なオブジェクトのリストを取得する
使用可能なリソースのリストを取得したので、使用可能なオブジェクトのリストを要求できます。Describe Global 要求を送信します。
1curl https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/ -H "Authorization: Bearer access_token" -H "X-PrettyPrint:1"この要求からの出力は次のとおりです。Account オブジェクトが使用可能であることがわかります。
1Transfer-Encoding: chunked
2Content-Type: application/json;
3charset=UTF-8 Server:
4{
5 "encoding" : "UTF-8",
6 "maxBatchSize" : 200,
7 "sobjects" : [ {
8 "name" : "Account",
9 "label" : "Account",
10 "custom" : false,
11 "keyPrefix" : "001",
12 "updateable" : true,
13 "searchable" : true,
14 "labelPlural" : "Accounts",
15 "layoutable" : true,
16 "activateable" : false,
17 "urls" : { "sobject" : "/services/data/v55.0/sobjects/Account",
18 "describe" : "/services/data/v55.0/sobjects/Account/describe",
19 "rowTemplate" : "/services/data/v55.0/sobjects/Account/{ID}" },
20 "createable" : true,
21 "customSetting" : false,
22 "deletable" : true,
23 "deprecatedAndHidden" : false,
24 "feedEnabled" : false,
25 "mergeable" : true,
26 "queryable" : true,
27 "replicateable" : true,
28 "retrieveable" : true,
29 "undeletable" : true,
30 "triggerable" : true },
31 },
32...Account オブジェクトに関する詳細情報の取得については、次のステップで説明します。
オブジェクトの基本情報を取得する
Account オブジェクトを使用可能なリソースとして特定したため、そのメタデータに関するいくつかの基本情報を取得できます。sObject Basic Information 要求を送信します。
1curl https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Account/ -H "Authorization: Bearer access_token" -H "X-PrettyPrint:1"この要求からの出力は次のとおりです。名前や表示ラベルなど、Account オブジェクトのいくつかの基本属性と、最近使用された取引先のリストを確認できます。
1{
2 "objectDescribe" :
3 {
4 "name" : "Account",
5 "updateable" : true,
6 "label" : "Account",
7 "keyPrefix" : "001",
8
9 ...
10
11 "replicateable" : true,
12 "retrieveable" : true,
13 "undeletable" : true,
14 "triggerable" : true
15 },
16 "recentItems" :
17 [
18 {
19 "attributes" :
20 {
21 "type" : "Account",
22 "url" : "/services/data/v55.0/sobjects/Account/001D000000INjVeIAL"
23 },
24 "Id" : "001D000000INjVeIAL",
25 "Name" : "asdasdasd"
26 },
27
28 ...
29
30 ]
31}次のステップで、項目の長さやデフォルト値など、Account オブジェクトの項目に関する詳細情報を取得します。
項目のリストを取得する
sObject Describe 要求を送信することにより詳細情報を取得します。
1curl https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Account/describe/ -H "Authorization: Bearer access_token" -H "X-PrettyPrint:1"この要求からの出力は次のとおりです。その項目の属性や子リレーションなど、Account オブジェクトのさらに詳細な情報を確認できます。
1{
2 "name" : "Account",
3 "fields" :
4 [
5 {
6 "length" : 18,
7 "name" : "Id",
8 "type" : "id",
9 "defaultValue" : { "value" : null },
10 "updateable" : false,
11 "label" : "Account ID",
12 ...
13 },
14 ...
15 ],
16 "updateable" : true,
17 "label" : "Account",
18 ...
19 "urls" :
20 {
21 "uiEditTemplate" : "https://MyDomainName.my.salesforce.com/{ID}/e",
22 "sobject" : "/services/data/v55.0/sobjects/Account",
23 "uiDetailTemplate" : "https://MyDomainName.my.salesforce.com/{ID}",
24 "describe" : "/services/data/v55.0/sobjects/Account/describe",
25 "rowTemplate" : "/services/data/v55.0/sobjects/Account/{ID}",
26 "uiNewRecord" : "https://MyDomainName.my.salesforce.com/001/e"
27 },
28 "childRelationships" :
29 [
30 {
31 "field" : "ParentId",
32 "deprecatedAndHidden" : false,
33 ...
34 },
35 ...
36 ],
37
38 "createable" : true,
39 "customSetting" : false,
40 ...
41}これで、組織の Account オブジェクトに対する便利なクエリと更新を作成するのに必要な情報を取得できました。次のステップでは、実際にクエリと更新を実行します。
SOQL クエリを実行する
Account オブジェクトの項目名がわかったので、SOQL クエリを実行できます。例として、今回は、すべての取引先名の値のリストを取得します。Query 要求を送信します。
1curl https://MyDomainName.my.salesforce.com/services/data/v55.0/query?q=SELECT+name+from+Account -H "Authorization: Bearer access_token" -H "X-PrettyPrint:1"出力で、使用可能な取引先名がリストされます。それぞれの名前の前にある属性には取引先の ID が含まれます。
1{
2 "done" : true,
3 "totalSize" : 14,
4 "records" :
5 [
6 {
7 "attributes" :
8 {
9 "type" : "Account",
10 "url" : "/services/data/v55.0/sobjects/Account/001D000000IRFmaIAH"
11 },
12 "Name" : "Test 1"
13 },
14 {
15 "attributes" :
16 {
17 "type" : "Account",
18 "url" : "/services/data/v55.0/sobjects/Account/001D000000IomazIAB"
19 },
20 "Name" : "Test 2"
21 },
22 ...
23 ]
24}次のステップでは、この情報をあなた自身使用して、取引先の 1 つを更新します。
レコードの項目を更新する
取引先の 1 つを取得し、sObject Rows 要求を送信して、市区郡 (請求先) を更新します。オブジェクトを更新するには、新しい市区郡 (請求先) の情報を含む patchaccount.json というテキストファイルを作成します。
1{
2 "BillingCity" : "Fremont"
3}REST 要求に、この JSON ファイルを指定します。cURL 表記には、データを指定する場合、—d オプションが必要です。詳細は、http://curl.haxx.se/docs/manpage.html を参照してください。
また、REST リソースを更新するために使用される PATCH メソッドを指定します。次の cURL コマンドは、ID 項目を使用して指定された Account オブジェクトを取得し、その市区郡 (請求先) を更新します。
1curl https://MyDomainName.my.salesforce.com/services/data/v55.0/sobjects/Account/001D000000IroHJ -H "Authorization: Bearer access_token" -H "X-PrettyPrint:1" -H "Content-Type: application/json" --data-binary @patchaccount.json -X PATCHレスポンスボディはなく、ヘッダーのみが返されます。
1HTTP/1.1 204 No Content
2Server:
3Content-Length: 0その取引先のページを更新すると、請求先住所の市区郡が「Fremont」に変更されていることを確認できます。