Chilkat Online Tools

Foxpro / Creatio API / $expand parameter

Back to Collection Items

LOCAL loHttp
LOCAL lnSuccess
LOCAL loQueryParams
LOCAL loResp
LOCAL loSbResponseBody
LOCAL loJResp
LOCAL lnRespStatusCode
LOCAL lcOdata_context
LOCAL lcId
LOCAL lcCreatedOn
LOCAL lcCreatedById
LOCAL lcModifiedOn
LOCAL lcModifiedById
LOCAL lnProcessListeners
LOCAL lcContactId
LOCAL lcName
LOCAL lcOrgStructureUnitId
LOCAL lcNotes
LOCAL lcJobId
LOCAL lcFullJobTitle
LOCAL lcOwnerId
LOCAL lcCareerStartDate
LOCAL lcCareerDueDate
LOCAL lcProbationDueDate
LOCAL lcReasonForDismissalId
LOCAL lcAccountId
LOCAL lcManagerId
LOCAL lcAccountName
LOCAL lcAccountOwnerId
LOCAL lcAccountCreatedOn
LOCAL lcAccountCreatedById
LOCAL lcAccountModifiedOn
LOCAL lcAccountModifiedById
LOCAL lnAccountProcessListeners
LOCAL lcOwnershipId
LOCAL lcPrimaryContactId
LOCAL lcParentId
LOCAL lcIndustryId
LOCAL lcCode
LOCAL lcTypeId
LOCAL lcPhone
LOCAL lcAdditionalPhone
LOCAL lcFax
LOCAL lcWeb
LOCAL lcAddressTypeId
LOCAL lcAddress
LOCAL lcCityId
LOCAL lcRegionId
LOCAL lcV_Zip
LOCAL lcCountryId
LOCAL lcAccountCategoryId
LOCAL lcEmployeesNumberId
LOCAL lcAnnualRevenueId
LOCAL lcAccountNotes
LOCAL lcAlternativeName
LOCAL lcGPSN
LOCAL lcGPSE
LOCAL lnCompleteness
LOCAL lcPriceListId
LOCAL lcAccountLogoId

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

loHttp = CreateObject('Chilkat_9_5_0.Http')

loQueryParams = CreateObject('Chilkat_9_5_0.JsonObject')
loQueryParams.UpdateString("$expand","Collection2")

loHttp.SetRequestHeader("ForceUseSession","true")
loHttp.SetRequestHeader("BPMCSRF","{{BPMCSRF}}")

loResp = loHttp.QuickRequestParams("GET","https://myserver.com/0/odata/Collection1(Id)",loQueryParams)
IF (loHttp.LastMethodSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loHttp
    RELEASE loQueryParams
    CANCEL
ENDIF

loSbResponseBody = CreateObject('Chilkat_9_5_0.StringBuilder')
loResp.GetBodySb(loSbResponseBody)

loJResp = CreateObject('Chilkat_9_5_0.JsonObject')
loJResp.LoadSb(loSbResponseBody)
loJResp.EmitCompact = 0

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

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

RELEASE loResp

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

* {
*   "@odata.context": "https://myserver.com/0/odata/$metadata#Employee(Account())/$entity",
*   "Id": "c31c7862-fe33-4a13-9bbc-0943fa08fd02",
*   "CreatedOn": "2017-03-30T14:50:04Z",
*   "CreatedById": "76929f8c-7e15-4c64-bdb0-adc62d383727",
*   "ModifiedOn": "2020-02-14T06:30:46.234Z",
*   "ModifiedById": "410006e1-ca4e-4502-a9ec-e54d922d2c00",
*   "ProcessListeners": 0,
*   "ContactId": "227aab3b-7c0c-4181-abf9-81585563ab23",
*   "Name": "William Walker",
*   "OrgStructureUnitId": "d436a9ce-9690-4415-9e03-e8061d7cabb5",
*   "Notes": "",
*   "JobId": "11d68189-ced6-df11-9b2a-001d60e938c6",
*   "FullJobTitle": "Developer",
*   "OwnerId": "76929f8c-7e15-4c64-bdb0-adc62d383727",
*   "CareerStartDate": "2019-09-08T00:00:00Z",
*   "CareerDueDate": "0001-01-01T00:00:00Z",
*   "ProbationDueDate": "2020-01-09T00:00:00Z",
*   "ReasonForDismissalId": "00000000-0000-0000-0000-000000000000",
*   "AccountId": "a0bf3e92-f36b-1410-0499-00155d043204",
*   "ManagerId": "3e5bd47e-1ebd-41db-a9a6-a3560dcee3cb",
*   "Account": {
*     "Id": "a0bf3e92-f36b-1410-0499-00155d043204",
*     "Name": "XT Group",
*     "OwnerId": "cad50d15-f28d-49fc-aa79-21615ac35b86",
*     "CreatedOn": "2020-01-27T08:00:14Z",
*     "CreatedById": "76929f8c-7e15-4c64-bdb0-adc62d383727",
*     "ModifiedOn": "2020-01-10T10:12:35Z",
*     "ModifiedById": "76929f8c-7e15-4c64-bdb0-adc62d383727",
*     "ProcessListeners": 0,
*     "OwnershipId": "e0ae3e02-f46b-1410-fb98-00155d043204",
*     "PrimaryContactId": "017df77c-b01c-4554-b7eb-760ac91cd0d7",
*     "ParentId": "00000000-0000-0000-0000-000000000000",
*     "IndustryId": "bd7f1e4a-f36b-1410-c493-00155d043205",
*     "Code": "60",
*     "TypeId": "03a75490-53e6-df11-971b-001d60e938c6",
*     "Phone": "+1 212 753 2819",
*     "AdditionalPhone": "+1 212 753 2845",
*     "Fax": "",
*     "Web": "www.xtg.com",
*     "AddressTypeId": "780bf68c-4b6e-df11-b988-001d60e938c6",
*     "Address": "17 Road Street",
*     "CityId": "c0af42ea-f36b-1410-0299-00155d043204",
*     "RegionId": "00b03270-f36b-1410-fd98-00155d043204",
*     "Zip": "10351",
*     "CountryId": "e0be1264-f36b-1410-fa98-00155d043204",
*     "AccountCategoryId": "37ea507c-55e6-df11-971b-001d60e938c6",
*     "EmployeesNumberId": "2c344115-55e6-df11-971b-001d60e938c6",
*     "AnnualRevenueId": "498aceb9-55e6-df11-971b-001d60e938c6",
*     "Notes": "",
*     "AlternativeName": "",
*     "GPSN": "42.6558932018082",
*     "GPSE": "-73.7562183364144",
*     "Completeness": 100,
*     "PriceListId": "00000000-0000-0000-0000-000000000000",
*     "AccountLogoId": "69517c67-e5de-47db-ae50-df69447a12cf"
*   }
* }

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

lcOdata_context = loJResp.StringOf('"@odata.context"')
lcId = loJResp.StringOf("Id")
lcCreatedOn = loJResp.StringOf("CreatedOn")
lcCreatedById = loJResp.StringOf("CreatedById")
lcModifiedOn = loJResp.StringOf("ModifiedOn")
lcModifiedById = loJResp.StringOf("ModifiedById")
lnProcessListeners = loJResp.IntOf("ProcessListeners")
lcContactId = loJResp.StringOf("ContactId")
lcName = loJResp.StringOf("Name")
lcOrgStructureUnitId = loJResp.StringOf("OrgStructureUnitId")
lcNotes = loJResp.StringOf("Notes")
lcJobId = loJResp.StringOf("JobId")
lcFullJobTitle = loJResp.StringOf("FullJobTitle")
lcOwnerId = loJResp.StringOf("OwnerId")
lcCareerStartDate = loJResp.StringOf("CareerStartDate")
lcCareerDueDate = loJResp.StringOf("CareerDueDate")
lcProbationDueDate = loJResp.StringOf("ProbationDueDate")
lcReasonForDismissalId = loJResp.StringOf("ReasonForDismissalId")
lcAccountId = loJResp.StringOf("AccountId")
lcManagerId = loJResp.StringOf("ManagerId")
lcAccountId = loJResp.StringOf("Account.Id")
lcAccountName = loJResp.StringOf("Account.Name")
lcAccountOwnerId = loJResp.StringOf("Account.OwnerId")
lcAccountCreatedOn = loJResp.StringOf("Account.CreatedOn")
lcAccountCreatedById = loJResp.StringOf("Account.CreatedById")
lcAccountModifiedOn = loJResp.StringOf("Account.ModifiedOn")
lcAccountModifiedById = loJResp.StringOf("Account.ModifiedById")
lnAccountProcessListeners = loJResp.IntOf("Account.ProcessListeners")
lcOwnershipId = loJResp.StringOf("Account.OwnershipId")
lcPrimaryContactId = loJResp.StringOf("Account.PrimaryContactId")
lcParentId = loJResp.StringOf("Account.ParentId")
lcIndustryId = loJResp.StringOf("Account.IndustryId")
lcCode = loJResp.StringOf("Account.Code")
lcTypeId = loJResp.StringOf("Account.TypeId")
lcPhone = loJResp.StringOf("Account.Phone")
lcAdditionalPhone = loJResp.StringOf("Account.AdditionalPhone")
lcFax = loJResp.StringOf("Account.Fax")
lcWeb = loJResp.StringOf("Account.Web")
lcAddressTypeId = loJResp.StringOf("Account.AddressTypeId")
lcAddress = loJResp.StringOf("Account.Address")
lcCityId = loJResp.StringOf("Account.CityId")
lcRegionId = loJResp.StringOf("Account.RegionId")
lcV_Zip = loJResp.StringOf("Account.Zip")
lcCountryId = loJResp.StringOf("Account.CountryId")
lcAccountCategoryId = loJResp.StringOf("Account.AccountCategoryId")
lcEmployeesNumberId = loJResp.StringOf("Account.EmployeesNumberId")
lcAnnualRevenueId = loJResp.StringOf("Account.AnnualRevenueId")
lcAccountNotes = loJResp.StringOf("Account.Notes")
lcAlternativeName = loJResp.StringOf("Account.AlternativeName")
lcGPSN = loJResp.StringOf("Account.GPSN")
lcGPSE = loJResp.StringOf("Account.GPSE")
lnCompleteness = loJResp.IntOf("Account.Completeness")
lcPriceListId = loJResp.StringOf("Account.PriceListId")
lcAccountLogoId = loJResp.StringOf("Account.AccountLogoId")

RELEASE loHttp
RELEASE loQueryParams
RELEASE loSbResponseBody
RELEASE loJResp

Curl Command

curl -G -d "$expand=Collection2"
	-H "ForceUseSession: true"
	-H "BPMCSRF: {{BPMCSRF}}"
https://myserver.com/0/odata/Collection1(Id)

Postman Collection Item JSON

{
  "name": "$expand parameter",
  "request": {
    "method": "GET",
    "header": [
      {
        "key": "ForceUseSession",
        "type": "text",
        "value": "true"
      },
      {
        "key": "BPMCSRF",
        "type": "text",
        "value": "{{BPMCSRF}}"
      }
    ],
    "url": {
      "raw": "{{BaseURI}}/0/odata/{{CollectionName1}}({{ObjectId1}})?$expand={{CollectionName2}}",
      "host": [
        "{{BaseURI}}"
      ],
      "path": [
        "0",
        "odata",
        "{{CollectionName1}}({{ObjectId1}})"
      ],
      "query": [
        {
          "key": "$expand",
          "value": "{{CollectionName2}}"
        }
      ]
    },
    "description": "Request for getting an object collection instance by instance Id of another object collection via the [$expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#sec_SystemQueryOptionexpand) parameter."
  },
  "response": [
    {
      "name": "[200] Gets an objects collection instances by another object collection",
      "originalRequest": {
        "method": "GET",
        "header": [
          {
            "key": "Accept",
            "type": "text",
            "value": "application/json"
          },
          {
            "key": "Content-Type",
            "type": "text",
            "value": "application/json; charset=utf-8"
          },
          {
            "key": "ForceUseSession",
            "type": "text",
            "value": "true"
          },
          {
            "key": "BPMCSRF",
            "type": "text",
            "value": "{{BPMCSRF}}"
          }
        ],
        "url": {
          "raw": "https://myserver.com/0/odata/Employee(c31c7862-fe33-4a13-9bbc-0943fa08fd02)?$expand=Account",
          "protocol": "https",
          "host": [
            "myserver",
            "com"
          ],
          "path": [
            "0",
            "odata",
            "Employee(c31c7862-fe33-4a13-9bbc-0943fa08fd02)"
          ],
          "query": [
            {
              "key": "$expand",
              "value": "Account"
            }
          ]
        }
      },
      "status": "OK",
      "code": 200,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "Cache-Control",
          "value": "no-cache"
        },
        {
          "key": "Pragma",
          "value": "no-cache"
        },
        {
          "key": "Content-Type",
          "value": "application/json; odata.metadata=minimal"
        },
        {
          "key": "Expires",
          "value": "-1"
        },
        {
          "key": "Server",
          "value": "Microsoft-IIS/10.0"
        },
        {
          "key": "OData-Version",
          "value": "4.0"
        },
        {
          "key": "X-AspNet-Version",
          "value": "4.0.30319"
        },
        {
          "key": "X-Powered-By",
          "value": "ASP.NET"
        },
        {
          "key": "X-Frame-Options",
          "value": "SAMEORIGIN"
        },
        {
          "key": "X-Content-Type-Options",
          "value": "nosniff"
        },
        {
          "key": "Date",
          "value": "Wed, 26 Feb 2020 14:52:02 GMT"
        },
        {
          "key": "Content-Length",
          "value": "2206"
        }
      ],
      "cookie": [
      ],
      "body": "{\n    \"@odata.context\": \"https://myserver.com/0/odata/$metadata#Employee(Account())/$entity\",\n    \"Id\": \"c31c7862-fe33-4a13-9bbc-0943fa08fd02\",\n    \"CreatedOn\": \"2017-03-30T14:50:04Z\",\n    \"CreatedById\": \"76929f8c-7e15-4c64-bdb0-adc62d383727\",\n    \"ModifiedOn\": \"2020-02-14T06:30:46.234Z\",\n    \"ModifiedById\": \"410006e1-ca4e-4502-a9ec-e54d922d2c00\",\n    \"ProcessListeners\": 0,\n    \"ContactId\": \"227aab3b-7c0c-4181-abf9-81585563ab23\",\n    \"Name\": \"William Walker\",\n    \"OrgStructureUnitId\": \"d436a9ce-9690-4415-9e03-e8061d7cabb5\",\n    \"Notes\": \"\",\n    \"JobId\": \"11d68189-ced6-df11-9b2a-001d60e938c6\",\n    \"FullJobTitle\": \"Developer\",\n    \"OwnerId\": \"76929f8c-7e15-4c64-bdb0-adc62d383727\",\n    \"CareerStartDate\": \"2019-09-08T00:00:00Z\",\n    \"CareerDueDate\": \"0001-01-01T00:00:00Z\",\n    \"ProbationDueDate\": \"2020-01-09T00:00:00Z\",\n    \"ReasonForDismissalId\": \"00000000-0000-0000-0000-000000000000\",\n    \"AccountId\": \"a0bf3e92-f36b-1410-0499-00155d043204\",\n    \"ManagerId\": \"3e5bd47e-1ebd-41db-a9a6-a3560dcee3cb\",\n    \"Account\": {\n        \"Id\": \"a0bf3e92-f36b-1410-0499-00155d043204\",\n        \"Name\": \"XT Group\",\n        \"OwnerId\": \"cad50d15-f28d-49fc-aa79-21615ac35b86\",\n        \"CreatedOn\": \"2020-01-27T08:00:14Z\",\n        \"CreatedById\": \"76929f8c-7e15-4c64-bdb0-adc62d383727\",\n        \"ModifiedOn\": \"2020-01-10T10:12:35Z\",\n        \"ModifiedById\": \"76929f8c-7e15-4c64-bdb0-adc62d383727\",\n        \"ProcessListeners\": 0,\n        \"OwnershipId\": \"e0ae3e02-f46b-1410-fb98-00155d043204\",\n        \"PrimaryContactId\": \"017df77c-b01c-4554-b7eb-760ac91cd0d7\",\n        \"ParentId\": \"00000000-0000-0000-0000-000000000000\",\n        \"IndustryId\": \"bd7f1e4a-f36b-1410-c493-00155d043205\",\n        \"Code\": \"60\",\n        \"TypeId\": \"03a75490-53e6-df11-971b-001d60e938c6\",\n        \"Phone\": \"+1 212 753 2819\",\n        \"AdditionalPhone\": \"+1 212 753 2845\",\n        \"Fax\": \"\",\n        \"Web\": \"www.xtg.com\",\n        \"AddressTypeId\": \"780bf68c-4b6e-df11-b988-001d60e938c6\",\n        \"Address\": \"17 Road Street\",\n        \"CityId\": \"c0af42ea-f36b-1410-0299-00155d043204\",\n        \"RegionId\": \"00b03270-f36b-1410-fd98-00155d043204\",\n        \"Zip\": \"10351\",\n        \"CountryId\": \"e0be1264-f36b-1410-fa98-00155d043204\",\n        \"AccountCategoryId\": \"37ea507c-55e6-df11-971b-001d60e938c6\",\n        \"EmployeesNumberId\": \"2c344115-55e6-df11-971b-001d60e938c6\",\n        \"AnnualRevenueId\": \"498aceb9-55e6-df11-971b-001d60e938c6\",\n        \"Notes\": \"\",\n        \"AlternativeName\": \"\",\n        \"GPSN\": \"42.6558932018082\",\n        \"GPSE\": \"-73.7562183364144\",\n        \"Completeness\": 100,\n        \"PriceListId\": \"00000000-0000-0000-0000-000000000000\",\n        \"AccountLogoId\": \"69517c67-e5de-47db-ae50-df69447a12cf\"\n    }\n}"
    }
  ]
}