Chilkat Online Tools

VB.NET / Salesforce Platform APIs / Get Lookup Field Suggestions for a Specified Object

Back to Collection Items

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

Dim http As New Chilkat.Http
Dim success As Boolean

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

Dim sbResponseBody As New Chilkat.StringBuilder
success = http.QuickGetSb("https://domain.com/services/data/v{{version}}/ui-api/lookups/:SOBJECT_API_NAME/:FIELD_API_NAME/:TARGET_API_NAME",sbResponseBody)
If (success = False) Then
    Debug.WriteLine(http.LastErrorText)
    Exit Sub
End If


Dim jResp As New Chilkat.JsonObject
jResp.LoadSb(sbResponseBody)
jResp.EmitCompact = False

Debug.WriteLine("Response Body:")
Debug.WriteLine(jResp.Emit())

Dim respStatusCode As Integer = http.LastStatus
Debug.WriteLine("Response Status Code = " & respStatusCode)
If (respStatusCode >= 400) Then
    Debug.WriteLine("Response Header:")
    Debug.WriteLine(http.LastHeader)
    Debug.WriteLine("Failed.")
    Exit Sub
End If


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

' {
'   "count": 2,
'   "currentPageToken": null,
'   "currentPageUrl": "/services/data/v58.0/ui-api/lookups/Contact/AccountId/Account?searchType=Recent&page=1&pageSize=25",
'   "nextPageToken": null,
'   "nextPageUrl": null,
'   "previousPageToken": null,
'   "previousPageUrl": null,
'   "records": [
'     {
'       "apiName": "Account",
'       "childRelationships": {},
'       "eTag": "2316c5f4a27ac31b407d91aab610b281",
'       "fields": {
'         "DisambiguationField": {
'           "displayValue": null,
'           "value": null
'         },
'         "Id": {
'           "displayValue": null,
'           "value": "001B000000UnQ2yIAF"
'         },
'         "Name": {
'           "displayValue": null,
'           "value": "Dickenson plc"
'         },
'         "Site": {
'           "displayValue": null,
'           "value": null
'         }
'       },
'       "id": "001B000000UnQ2yIAF",
'       "lastModifiedById": "005B0000003TOI6IAO",
'       "lastModifiedDate": "2017-08-18T14:46:22.000Z",
'       "recordTypeId": "012000000000000AAA",
'       "recordTypeInfo": null,
'       "systemModstamp": "2017-08-18T14:46:22.000Z",
'       "weakEtag": 1503067582000
'     },
'     {
'       "apiName": "Account",
'       "childRelationships": {},
'       "eTag": "cb5afb4494d9c9f6f81ab0e5f214585c",
'       "fields": {
'         "DisambiguationField": {
'           "displayValue": null,
'           "value": null
'         },
'         "Id": {
'           "displayValue": null,
'           "value": "001B000000UnQ2wIAF"
'         },
'         "Name": {
'           "displayValue": null,
'           "value": "Burlington Textiles Corp of America"
'         },
'         "Site": {
'           "displayValue": null,
'           "value": null
'         }
'       },
'       "id": "001B000000UnQ2wIAF",
'       "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



Dim apiName As String
Dim eTag As String
Dim DisplayValue As String
Dim Value As String
Dim IdDisplayValue As String
Dim IdValue As String
Dim NameDisplayValue As String
Dim NameValue As String
Dim SiteDisplayValue As String
Dim SiteValue As String
Dim id As String
Dim lastModifiedById As String
Dim lastModifiedDate As String
Dim recordTypeId As String
Dim recordTypeInfo As String
Dim systemModstamp As String
Dim weakEtag As Integer

Dim count As Integer = jResp.IntOf("count")
Dim currentPageToken As String = jResp.StringOf("currentPageToken")
Dim currentPageUrl As String = jResp.StringOf("currentPageUrl")
Dim nextPageToken As String = jResp.StringOf("nextPageToken")
Dim nextPageUrl As String = jResp.StringOf("nextPageUrl")
Dim previousPageToken As String = jResp.StringOf("previousPageToken")
Dim previousPageUrl As String = jResp.StringOf("previousPageUrl")
Dim i As Integer = 0
Dim count_i As Integer = 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.DisambiguationField.displayValue")
    Value = jResp.StringOf("records[i].fields.DisambiguationField.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")
    SiteDisplayValue = jResp.StringOf("records[i].fields.Site.displayValue")
    SiteValue = jResp.StringOf("records[i].fields.Site.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
End While

Curl Command

curl -X GET
	-H "Authorization: Bearer <access_token>"
https://domain.com/services/data/v{{version}}/ui-api/lookups/:SOBJECT_API_NAME/:FIELD_API_NAME/:TARGET_API_NAME

Postman Collection Item JSON

{
  "name": "Get Lookup Field Suggestions for a Specified Object",
  "event": [
    {
      "listen": "prerequest",
      "script": {
        "exec": [
          ""
        ],
        "type": "text/javascript"
      }
    }
  ],
  "protocolProfileBehavior": {
    "disableBodyPruning": true
  },
  "request": {
    "method": "GET",
    "header": [
    ],
    "body": {
      "mode": "raw",
      "raw": ""
    },
    "url": {
      "raw": "{{_endpoint}}/services/data/v{{version}}/ui-api/lookups/:SOBJECT_API_NAME/:FIELD_API_NAME/:TARGET_API_NAME",
      "host": [
        "{{_endpoint}}"
      ],
      "path": [
        "services",
        "data",
        "v{{version}}",
        "ui-api",
        "lookups",
        ":SOBJECT_API_NAME",
        ":FIELD_API_NAME",
        ":TARGET_API_NAME"
      ],
      "query": [
        {
          "key": "dependentFieldBindings",
          "value": "",
          "description": "The dependent field bindings for dependent lookups. These field bindings represent the lookup filter that restricts the valid values for the field.\nSpecify field bindings in a comma-separated list in the format dependentFieldBindings=<FIELD_API_NAME1>​=[FIELD_VALUE1],<FIELD_API_NAME2>=[FIELD_VALUE2].\n\nTo know whether a field is a dependent lookup, check the Object Info response body for a non-null filteredLookupInfo property. Specify the name and a value for each field in the controllingFields property. Get the field values from the Record response body. Both responses are returned from the /ui-api/record-ui/<RECORD_IDS> resource.",
          "disabled": true
        },
        {
          "key": "page",
          "value": "",
          "description": "The page number. The default value is 1.",
          "disabled": true
        },
        {
          "key": "pageSize",
          "value": "",
          "description": "The number of items per page. The default value is 25.\n",
          "disabled": true
        },
        {
          "key": "q",
          "value": "",
          "description": "The term the user is searching for.\nWhen searchType=Search, specify at least 2 characters. A wildcard at the end of the search term is implied. For example, q=ca returns Cat and Cats.\n\nWhen searchType=TypeAhead, specify at least 3 characters. A wildcard at the end of the search term is implied. You can’t use a ?.",
          "disabled": true
        },
        {
          "key": "searchType",
          "value": "",
          "description": "The type of search to perform. One of these values:\nRecent—Return most recently used matches.\nSearch—Search for records with searchable fields that match the query term.\nTypeAhead—Search for records whose names start with the query term.\nThe default value is Recent.",
          "disabled": true
        }
      ],
      "variable": [
        {
          "key": "SOBJECT_API_NAME",
          "value": "",
          "description": "The API name of a source object."
        },
        {
          "key": "FIELD_API_NAME",
          "value": "",
          "description": "The API name of a lookup field on the source object."
        },
        {
          "key": "TARGET_API_NAME",
          "value": "",
          "description": "The API name of the target (lookup) object."
        }
      ]
    },
    "description": "When a user edits a lookup field, use this resource to search for and display suggestions for a specified object. You can search for most recently used matches, for matching names, or for any match in a searchable field. You can also specify lookup filter bindings for dependent lookups."
  },
  "response": [
    {
      "name": "Get Lookup Field Suggestions for a Specified Object",
      "originalRequest": {
        "method": "GET",
        "header": [
        ],
        "body": {
          "mode": "raw",
          "raw": ""
        },
        "url": {
          "raw": "{{_endpoint}}/services/data/v{{version}}/ui-api/lookups/:SOBJECT_API_NAME/:FIELD_API_NAME/:TARGET_API_NAME",
          "host": [
            "{{_endpoint}}"
          ],
          "path": [
            "services",
            "data",
            "v{{version}}",
            "ui-api",
            "lookups",
            ":SOBJECT_API_NAME",
            ":FIELD_API_NAME",
            ":TARGET_API_NAME"
          ],
          "query": [
            {
              "key": "dependentFieldBindings",
              "value": "",
              "description": "The dependent field bindings for dependent lookups. These field bindings represent the lookup filter that restricts the valid values for the field.\nSpecify field bindings in a comma-separated list in the format dependentFieldBindings=<FIELD_API_NAME1>​=[FIELD_VALUE1],<FIELD_API_NAME2>=[FIELD_VALUE2].\n\nTo know whether a field is a dependent lookup, check the Object Info response body for a non-null filteredLookupInfo property. Specify the name and a value for each field in the controllingFields property. Get the field values from the Record response body. Both responses are returned from the /ui-api/record-ui/<RECORD_IDS> resource.",
              "disabled": true
            },
            {
              "key": "page",
              "value": "",
              "description": "The page number. The default value is 1.",
              "disabled": true
            },
            {
              "key": "pageSize",
              "value": "",
              "description": "The number of items per page. The default value is 25.\n",
              "disabled": true
            },
            {
              "key": "q",
              "value": "",
              "description": "The term the user is searching for.\nWhen searchType=Search, specify at least 2 characters. A wildcard at the end of the search term is implied. For example, q=ca returns Cat and Cats.\n\nWhen searchType=TypeAhead, specify at least 3 characters. A wildcard at the end of the search term is implied. You can’t use a ?.",
              "disabled": true
            },
            {
              "key": "searchType",
              "value": "",
              "description": "The type of search to perform. One of these values:\nRecent—Return most recently used matches.\nSearch—Search for records with searchable fields that match the query term.\nTypeAhead—Search for records whose names start with the query term.\nThe default value is Recent.",
              "disabled": true
            }
          ],
          "variable": [
            {
              "key": "SOBJECT_API_NAME",
              "value": "Contact",
              "description": "The API name of a source object."
            },
            {
              "key": "FIELD_API_NAME",
              "value": "AccountId",
              "description": "The API name of a lookup field on the source object."
            },
            {
              "key": "TARGET_API_NAME",
              "value": "Account",
              "description": "The API name of the target (lookup) object."
            }
          ]
        }
      },
      "status": "OK",
      "code": 200,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "Date",
          "value": "Wed, 27 Sep 2023 16:10:07 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\": 2,\n    \"currentPageToken\": null,\n    \"currentPageUrl\": \"/services/data/v58.0/ui-api/lookups/Contact/AccountId/Account?searchType=Recent&page=1&pageSize=25\",\n    \"nextPageToken\": null,\n    \"nextPageUrl\": null,\n    \"previousPageToken\": null,\n    \"previousPageUrl\": null,\n    \"records\": [\n        {\n            \"apiName\": \"Account\",\n            \"childRelationships\": {},\n            \"eTag\": \"2316c5f4a27ac31b407d91aab610b281\",\n            \"fields\": {\n                \"DisambiguationField\": {\n                    \"displayValue\": null,\n                    \"value\": null\n                },\n                \"Id\": {\n                    \"displayValue\": null,\n                    \"value\": \"001B000000UnQ2yIAF\"\n                },\n                \"Name\": {\n                    \"displayValue\": null,\n                    \"value\": \"Dickenson plc\"\n                },\n                \"Site\": {\n                    \"displayValue\": null,\n                    \"value\": null\n                }\n            },\n            \"id\": \"001B000000UnQ2yIAF\",\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            \"apiName\": \"Account\",\n            \"childRelationships\": {},\n            \"eTag\": \"cb5afb4494d9c9f6f81ab0e5f214585c\",\n            \"fields\": {\n                \"DisambiguationField\": {\n                    \"displayValue\": null,\n                    \"value\": null\n                },\n                \"Id\": {\n                    \"displayValue\": null,\n                    \"value\": \"001B000000UnQ2wIAF\"\n                },\n                \"Name\": {\n                    \"displayValue\": null,\n                    \"value\": \"Burlington Textiles Corp of America\"\n                },\n                \"Site\": {\n                    \"displayValue\": null,\n                    \"value\": null\n                }\n            },\n            \"id\": \"001B000000UnQ2wIAF\",\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}"
    }
  ]
}