Chilkat Online Tools

Node.js / Salesforce Platform APIs / Get Child Records

Back to Collection Items

var os = require('os');
if (os.platform() == 'win32') {  
    if (os.arch() == 'ia32') {
        var chilkat = require('@chilkat/ck-node21-win-ia32');
    } else {
        var chilkat = require('@chilkat/ck-node21-win64'); 
    }
} else if (os.platform() == 'linux') {
    if (os.arch() == 'arm') {
        var chilkat = require('@chilkat/ck-node21-arm');
    } else if (os.arch() == 'x86') {
        var chilkat = require('@chilkat/ck-node21-linux32');
    } else {
        var chilkat = require('@chilkat/ck-node21-linux64');
    }
} else if (os.platform() == 'darwin') {
    if (os.arch() == 'arm64') {
        var chilkat = require('@chilkat/ck-node21-mac-m1');
    } else {
        var chilkat = require('@chilkat/ck-node21-macosx');
    }
}


function chilkatExample() {

    // This example assumes the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    var http = new chilkat.Http();
    var success;

    // Adds the "Authorization: Bearer <access_token>" header.
    http.AuthToken = "<access_token>";

    var sbResponseBody = new chilkat.StringBuilder();
    success = http.QuickGetSb("https://domain.com/services/data/v{{version}}/ui-api/records/:RECORD_ID/child-relationships/:RELATIONSHIP_NAME",sbResponseBody);
    if (success == false) {
        console.log(http.LastErrorText);
        return;
    }

    var jResp = new chilkat.JsonObject();
    jResp.LoadSb(sbResponseBody);
    jResp.EmitCompact = false;

    console.log("Response Body:");
    console.log(jResp.Emit());

    var respStatusCode = http.LastStatus;
    console.log("Response Status Code = " + respStatusCode);
    if (respStatusCode >= 400) {
        console.log("Response Header:");
        console.log(http.LastHeader);
        console.log("Failed.");
        return;
    }

    // Sample JSON response:
    // (Sample code for parsing the JSON response is shown below)

    // {
    //   "count": 1,
    //   "currentPageToken": "1;5;001B000000UnQ2wIAF;Contacts;Contact.Id,Contact.Name;",
    //   "currentPageUrl": "/services/data/v58.0/ui-api/records/001B000000UnQ2wIAF/child-relationships/Contacts?fields=Contact.Id%2CContact.Name&page=1&pageSize=5",
    //   "nextPageToken": null,
    //   "nextPageUrl": null,
    //   "previousPageToken": null,
    //   "previousPageUrl": null,
    //   "records": [
    //     {
    //       "apiName": "Contact",
    //       "childRelationships": {},
    //       "eTag": "c3d33add9008aed557a1efa68173aa9b",
    //       "fields": {
    //         "AccountId": {
    //           "displayValue": null,
    //           "value": "001B000000UnQ2wIAF"
    //         },
    //         "Id": {
    //           "displayValue": null,
    //           "value": "003B00000097MToIAM"
    //         },
    //         "Name": {
    //           "displayValue": null,
    //           "value": "Jack Rogers"
    //         }
    //       },
    //       "id": "003B00000097MToIAM",
    //       "lastModifiedById": "005B0000003TOI6IAO",
    //       "lastModifiedDate": "2017-08-18T14:46:22.000Z",
    //       "recordTypeId": "012000000000000AAA",
    //       "recordTypeInfo": null,
    //       "systemModstamp": "2017-08-18T14:46:22.000Z",
    //       "weakEtag": 1503067582000
    //     }
    //   ]
    // }

    // Sample code for parsing the JSON response...
    // Use this online tool to generate parsing code from sample JSON: Generate JSON Parsing Code

    var apiName;
    var eTag;
    var DisplayValue;
    var Value;
    var IdDisplayValue;
    var IdValue;
    var NameDisplayValue;
    var NameValue;
    var id;
    var lastModifiedById;
    var lastModifiedDate;
    var recordTypeId;
    var recordTypeInfo;
    var systemModstamp;
    var weakEtag;

    var count = jResp.IntOf("count");
    var currentPageToken = jResp.StringOf("currentPageToken");
    var currentPageUrl = jResp.StringOf("currentPageUrl");
    var nextPageToken = jResp.StringOf("nextPageToken");
    var nextPageUrl = jResp.StringOf("nextPageUrl");
    var previousPageToken = jResp.StringOf("previousPageToken");
    var previousPageUrl = jResp.StringOf("previousPageUrl");
    var i = 0;
    var count_i = jResp.SizeOfArray("records");
    while (i < count_i) {
        jResp.I = i;
        apiName = jResp.StringOf("records[i].apiName");
        eTag = jResp.StringOf("records[i].eTag");
        DisplayValue = jResp.StringOf("records[i].fields.AccountId.displayValue");
        Value = jResp.StringOf("records[i].fields.AccountId.value");
        IdDisplayValue = jResp.StringOf("records[i].fields.Id.displayValue");
        IdValue = jResp.StringOf("records[i].fields.Id.value");
        NameDisplayValue = jResp.StringOf("records[i].fields.Name.displayValue");
        NameValue = jResp.StringOf("records[i].fields.Name.value");
        id = jResp.StringOf("records[i].id");
        lastModifiedById = jResp.StringOf("records[i].lastModifiedById");
        lastModifiedDate = jResp.StringOf("records[i].lastModifiedDate");
        recordTypeId = jResp.StringOf("records[i].recordTypeId");
        recordTypeInfo = jResp.StringOf("records[i].recordTypeInfo");
        systemModstamp = jResp.StringOf("records[i].systemModstamp");
        weakEtag = jResp.IntOf("records[i].weakEtag");
        i = i+1;
    }


}

chilkatExample();

Curl Command

curl -X GET
	-H "Authorization: Bearer <access_token>"
https://domain.com/services/data/v{{version}}/ui-api/records/:RECORD_ID/child-relationships/:RELATIONSHIP_NAME

Postman Collection Item JSON

{
  "name": "Get Child Records",
  "request": {
    "method": "GET",
    "header": [
    ],
    "url": {
      "raw": "{{_endpoint}}/services/data/v{{version}}/ui-api/records/:RECORD_ID/child-relationships/:RELATIONSHIP_NAME\n",
      "host": [
        "{{_endpoint}}"
      ],
      "path": [
        "services",
        "data",
        "v{{version}}",
        "ui-api",
        "records",
        ":RECORD_ID",
        "child-relationships",
        ":RELATIONSHIP_NAME\n"
      ],
      "query": [
        {
          "key": "fields",
          "value": "",
          "description": "Specifies the fields to return. If this property is specified, the response is a union of fields and optionalFields.\nIf the context user doesn’t have access to a field, an error is returned.\n\nIf you’re not sure whether the context user has access to a field and you don’t want the request to fail if they don’t, use the optionalFields parameter.\n\nSpecify names in the format ObjectApiName.FieldName. You can get any field that has a named relationship to this record. There is no limit to the number of fields you can specify.",
          "disabled": true
        },
        {
          "key": "optionalFields",
          "value": "",
          "description": "A collection of optional field names. If a field is accessible to the context user, it’s included in the response. If a field isn’t accessible to the context user, it isn’t included in the response, but it doesn’t cause an error.\nSpecify names in the format ObjectApiName.FieldName. You can get any field that has a named relationship to this record. There is no limit to the number of fields you can specify.",
          "disabled": true
        },
        {
          "key": "page",
          "value": "",
          "description": "The page offset from which to begin returning records. The default value is 0, which returns records from the first page. For example, for page=2 and pageSize=10, the first record returned is the 21st record in the list.",
          "disabled": true
        },
        {
          "key": "pageSize",
          "value": "",
          "description": "The maximum number of child records to return on a page. The default value is 5.",
          "disabled": true
        },
        {
          "key": "pageToken",
          "value": "",
          "description": "A token that represents the page offset.",
          "disabled": true
        }
      ],
      "variable": [
        {
          "key": "RECORD_ID",
          "value": "",
          "description": "Record ID"
        },
        {
          "key": "RELATIONSHIP_NAME\n",
          "value": "",
          "description": "API name of the relationship"
        }
      ]
    },
    "description": "Get child records for a specified record and child relationship name. Relationships are connections between records. On a record detail page, each record in a related list has a child relationship to the parent record."
  },
  "response": [
    {
      "name": "Get Child Records",
      "originalRequest": {
        "method": "GET",
        "header": [
        ],
        "url": {
          "raw": "{{_endpoint}}/services/data/v{{version}}/ui-api/records/:RECORD_ID/child-relationships/:RELATIONSHIP_NAME\n",
          "host": [
            "{{_endpoint}}"
          ],
          "path": [
            "services",
            "data",
            "v{{version}}",
            "ui-api",
            "records",
            ":RECORD_ID",
            "child-relationships",
            ":RELATIONSHIP_NAME\n"
          ],
          "query": [
            {
              "key": "fields",
              "value": "",
              "description": "Specifies the fields to return. If this property is specified, the response is a union of fields and optionalFields.\nIf the context user doesn’t have access to a field, an error is returned.\n\nIf you’re not sure whether the context user has access to a field and you don’t want the request to fail if they don’t, use the optionalFields parameter.\n\nSpecify names in the format ObjectApiName.FieldName. You can get any field that has a named relationship to this record. There is no limit to the number of fields you can specify.",
              "disabled": true
            },
            {
              "key": "optionalFields",
              "value": "",
              "description": "A collection of optional field names. If a field is accessible to the context user, it’s included in the response. If a field isn’t accessible to the context user, it isn’t included in the response, but it doesn’t cause an error.\nSpecify names in the format ObjectApiName.FieldName. You can get any field that has a named relationship to this record. There is no limit to the number of fields you can specify.",
              "disabled": true
            },
            {
              "key": "page",
              "value": "",
              "description": "The page offset from which to begin returning records. The default value is 0, which returns records from the first page. For example, for page=2 and pageSize=10, the first record returned is the 21st record in the list.",
              "disabled": true
            },
            {
              "key": "pageSize",
              "value": "",
              "description": "The maximum number of child records to return on a page. The default value is 5.",
              "disabled": true
            },
            {
              "key": "pageToken",
              "value": "",
              "description": "A token that represents the page offset.",
              "disabled": true
            }
          ],
          "variable": [
            {
              "key": "RECORD_ID",
              "value": "001B000000UnQ2wIAF",
              "description": "Record ID"
            },
            {
              "key": "RELATIONSHIP_NAME\n",
              "value": "Contacts",
              "description": "API name of the relationship"
            }
          ]
        }
      },
      "status": "OK",
      "code": 200,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "Date",
          "value": "Wed, 27 Sep 2023 15:57:35 GMT"
        },
        {
          "key": "Strict-Transport-Security",
          "value": "max-age=63072000; includeSubDomains"
        },
        {
          "key": "X-Content-Type-Options",
          "value": "nosniff"
        },
        {
          "key": "X-XSS-Protection",
          "value": "1; mode=block"
        },
        {
          "key": "X-Robots-Tag",
          "value": "none"
        },
        {
          "key": "Cache-Control",
          "value": "no-cache,must-revalidate,max-age=0,no-store,private"
        },
        {
          "key": "Content-Type",
          "value": "application/json;charset=UTF-8"
        },
        {
          "key": "Vary",
          "value": "Accept-Encoding"
        },
        {
          "key": "Content-Encoding",
          "value": "gzip"
        },
        {
          "key": "Transfer-Encoding",
          "value": "chunked"
        }
      ],
      "cookie": [
      ],
      "body": "{\n    \"count\": 1,\n    \"currentPageToken\": \"1;5;001B000000UnQ2wIAF;Contacts;Contact.Id,Contact.Name;\",\n    \"currentPageUrl\": \"/services/data/v58.0/ui-api/records/001B000000UnQ2wIAF/child-relationships/Contacts?fields=Contact.Id%2CContact.Name&page=1&pageSize=5\",\n    \"nextPageToken\": null,\n    \"nextPageUrl\": null,\n    \"previousPageToken\": null,\n    \"previousPageUrl\": null,\n    \"records\": [\n        {\n            \"apiName\": \"Contact\",\n            \"childRelationships\": {},\n            \"eTag\": \"c3d33add9008aed557a1efa68173aa9b\",\n            \"fields\": {\n                \"AccountId\": {\n                    \"displayValue\": null,\n                    \"value\": \"001B000000UnQ2wIAF\"\n                },\n                \"Id\": {\n                    \"displayValue\": null,\n                    \"value\": \"003B00000097MToIAM\"\n                },\n                \"Name\": {\n                    \"displayValue\": null,\n                    \"value\": \"Jack Rogers\"\n                }\n            },\n            \"id\": \"003B00000097MToIAM\",\n            \"lastModifiedById\": \"005B0000003TOI6IAO\",\n            \"lastModifiedDate\": \"2017-08-18T14:46:22.000Z\",\n            \"recordTypeId\": \"012000000000000AAA\",\n            \"recordTypeInfo\": null,\n            \"systemModstamp\": \"2017-08-18T14:46:22.000Z\",\n            \"weakEtag\": 1503067582000\n        }\n    ]\n}"
    }
  ]
}