Chilkat Online Tools

Foxpro / Salesforce Platform APIs / Get Child Records

Back to Collection Items

LOCAL loHttp
LOCAL lnSuccess
LOCAL loSbResponseBody
LOCAL loJResp
LOCAL lnRespStatusCode
LOCAL lcApiName
LOCAL lcETag
LOCAL lcDisplayValue
LOCAL lcValue
LOCAL lcIdDisplayValue
LOCAL lcIdValue
LOCAL lcNameDisplayValue
LOCAL lcNameValue
LOCAL lcId
LOCAL lcLastModifiedById
LOCAL lcLastModifiedDate
LOCAL lcRecordTypeId
LOCAL lcRecordTypeInfo
LOCAL lcSystemModstamp
LOCAL lnWeakEtag
LOCAL lnCount
LOCAL lcCurrentPageToken
LOCAL lcCurrentPageUrl
LOCAL lcNextPageToken
LOCAL lcNextPageUrl
LOCAL lcPreviousPageToken
LOCAL lcPreviousPageUrl
LOCAL i
LOCAL lnCount_i

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

* For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Http')
loHttp = CreateObject('Chilkat.Http')

* Adds the "Authorization: Bearer <access_token>" header.
loHttp.AuthToken = "<access_token>"

* For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.StringBuilder')
loSbResponseBody = CreateObject('Chilkat.StringBuilder')
lnSuccess = loHttp.QuickGetSb("https://domain.com/services/data/v{{version}}/ui-api/records/:RECORD_ID/child-relationships/:RELATIONSHIP_NAME",loSbResponseBody)
IF (lnSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loHttp
    RELEASE loSbResponseBody
    CANCEL
ENDIF

* For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.JsonObject')
loJResp = CreateObject('Chilkat.JsonObject')
loJResp.LoadSb(loSbResponseBody)
loJResp.EmitCompact = 0

? "Response Body:"
? loJResp.Emit()

lnRespStatusCode = loHttp.LastStatus
? "Response Status Code = " + STR(lnRespStatusCode)
IF (lnRespStatusCode >= 400) THEN
    ? "Response Header:"
    ? loHttp.LastHeader
    ? "Failed."
    RELEASE loHttp
    RELEASE loSbResponseBody
    RELEASE loJResp
    CANCEL
ENDIF

* 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

lnCount = loJResp.IntOf("count")
lcCurrentPageToken = loJResp.StringOf("currentPageToken")
lcCurrentPageUrl = loJResp.StringOf("currentPageUrl")
lcNextPageToken = loJResp.StringOf("nextPageToken")
lcNextPageUrl = loJResp.StringOf("nextPageUrl")
lcPreviousPageToken = loJResp.StringOf("previousPageToken")
lcPreviousPageUrl = loJResp.StringOf("previousPageUrl")
i = 0
lnCount_i = loJResp.SizeOfArray("records")
DO WHILE i < lnCount_i
    loJResp.I = i
    lcApiName = loJResp.StringOf("records[i].apiName")
    lcETag = loJResp.StringOf("records[i].eTag")
    lcDisplayValue = loJResp.StringOf("records[i].fields.AccountId.displayValue")
    lcValue = loJResp.StringOf("records[i].fields.AccountId.value")
    lcIdDisplayValue = loJResp.StringOf("records[i].fields.Id.displayValue")
    lcIdValue = loJResp.StringOf("records[i].fields.Id.value")
    lcNameDisplayValue = loJResp.StringOf("records[i].fields.Name.displayValue")
    lcNameValue = loJResp.StringOf("records[i].fields.Name.value")
    lcId = loJResp.StringOf("records[i].id")
    lcLastModifiedById = loJResp.StringOf("records[i].lastModifiedById")
    lcLastModifiedDate = loJResp.StringOf("records[i].lastModifiedDate")
    lcRecordTypeId = loJResp.StringOf("records[i].recordTypeId")
    lcRecordTypeInfo = loJResp.StringOf("records[i].recordTypeInfo")
    lcSystemModstamp = loJResp.StringOf("records[i].systemModstamp")
    lnWeakEtag = loJResp.IntOf("records[i].weakEtag")
    i = i + 1
ENDDO

RELEASE loHttp
RELEASE loSbResponseBody
RELEASE loJResp

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}"
    }
  ]
}