Chilkat Online Tools

DataFlex / Creatio API / $expand parameter

Back to Collection Items

Use ChilkatAx-win32.pkg

Procedure Test
    Handle hoHttp
    Boolean iSuccess
    Variant vQueryParams
    Handle hoQueryParams
    Variant vResp
    Handle hoResp
    Variant vSbResponseBody
    Handle hoSbResponseBody
    Handle hoJResp
    Integer iRespStatusCode
    String sOdata_context
    String sId
    String sCreatedOn
    String sCreatedById
    String sModifiedOn
    String sModifiedById
    Integer iProcessListeners
    String sContactId
    String sName
    String sOrgStructureUnitId
    String sNotes
    String sJobId
    String sFullJobTitle
    String sOwnerId
    String sCareerStartDate
    String sCareerDueDate
    String sProbationDueDate
    String sReasonForDismissalId
    String sAccountId
    String sManagerId
    String sAccountName
    String sAccountOwnerId
    String sAccountCreatedOn
    String sAccountCreatedById
    String sAccountModifiedOn
    String sAccountModifiedById
    Integer iAccountProcessListeners
    String sOwnershipId
    String sPrimaryContactId
    String sParentId
    String sIndustryId
    String sCode
    String sTypeId
    String sPhone
    String sAdditionalPhone
    String sFax
    String sWeb
    String sAddressTypeId
    String sAddress
    String sCityId
    String sRegionId
    String sV_Zip
    String sCountryId
    String sAccountCategoryId
    String sEmployeesNumberId
    String sAnnualRevenueId
    String sAccountNotes
    String sAlternativeName
    String sGPSN
    String sGPSE
    Integer iCompleteness
    String sPriceListId
    String sAccountLogoId
    String sTemp1
    Boolean bTemp1

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

    Get Create (RefClass(cComChilkatHttp)) To hoHttp
    If (Not(IsComObjectCreated(hoHttp))) Begin
        Send CreateComObject of hoHttp
    End

    Get Create (RefClass(cComChilkatJsonObject)) To hoQueryParams
    If (Not(IsComObjectCreated(hoQueryParams))) Begin
        Send CreateComObject of hoQueryParams
    End
    Get ComUpdateString Of hoQueryParams "$expand" "Collection2" To iSuccess

    Send ComSetRequestHeader To hoHttp "ForceUseSession" "true"
    Send ComSetRequestHeader To hoHttp "BPMCSRF" "{{BPMCSRF}}"

    Get pvComObject of hoQueryParams to vQueryParams
    Get ComQuickRequestParams Of hoHttp "GET" "https://myserver.com/0/odata/Collection1(Id)" vQueryParams To vResp
    If (IsComObject(vResp)) Begin
        Get Create (RefClass(cComChilkatHttpResponse)) To hoResp
        Set pvComObject Of hoResp To vResp
    End
    Get ComLastMethodSuccess Of hoHttp To bTemp1
    If (bTemp1 = False) Begin
        Get ComLastErrorText Of hoHttp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbResponseBody
    If (Not(IsComObjectCreated(hoSbResponseBody))) Begin
        Send CreateComObject of hoSbResponseBody
    End
    Get pvComObject of hoSbResponseBody to vSbResponseBody
    Get ComGetBodySb Of hoResp vSbResponseBody To iSuccess

    Get Create (RefClass(cComChilkatJsonObject)) To hoJResp
    If (Not(IsComObjectCreated(hoJResp))) Begin
        Send CreateComObject of hoJResp
    End
    Get pvComObject of hoSbResponseBody to vSbResponseBody
    Get ComLoadSb Of hoJResp vSbResponseBody To iSuccess
    Set ComEmitCompact Of hoJResp To False

    Showln "Response Body:"
    Get ComEmit Of hoJResp To sTemp1
    Showln sTemp1

    Get ComStatusCode Of hoResp To iRespStatusCode
    Showln "Response Status Code = " iRespStatusCode
    If (iRespStatusCode >= 400) Begin
        Showln "Response Header:"
        Get ComHeader Of hoResp To sTemp1
        Showln sTemp1
        Showln "Failed."
        Send Destroy of hoResp
        Procedure_Return
    End

    Send Destroy of hoResp

    // 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

    Get ComStringOf Of hoJResp '"@odata.context"' To sOdata_context
    Get ComStringOf Of hoJResp "Id" To sId
    Get ComStringOf Of hoJResp "CreatedOn" To sCreatedOn
    Get ComStringOf Of hoJResp "CreatedById" To sCreatedById
    Get ComStringOf Of hoJResp "ModifiedOn" To sModifiedOn
    Get ComStringOf Of hoJResp "ModifiedById" To sModifiedById
    Get ComIntOf Of hoJResp "ProcessListeners" To iProcessListeners
    Get ComStringOf Of hoJResp "ContactId" To sContactId
    Get ComStringOf Of hoJResp "Name" To sName
    Get ComStringOf Of hoJResp "OrgStructureUnitId" To sOrgStructureUnitId
    Get ComStringOf Of hoJResp "Notes" To sNotes
    Get ComStringOf Of hoJResp "JobId" To sJobId
    Get ComStringOf Of hoJResp "FullJobTitle" To sFullJobTitle
    Get ComStringOf Of hoJResp "OwnerId" To sOwnerId
    Get ComStringOf Of hoJResp "CareerStartDate" To sCareerStartDate
    Get ComStringOf Of hoJResp "CareerDueDate" To sCareerDueDate
    Get ComStringOf Of hoJResp "ProbationDueDate" To sProbationDueDate
    Get ComStringOf Of hoJResp "ReasonForDismissalId" To sReasonForDismissalId
    Get ComStringOf Of hoJResp "AccountId" To sAccountId
    Get ComStringOf Of hoJResp "ManagerId" To sManagerId
    Get ComStringOf Of hoJResp "Account.Id" To sAccountId
    Get ComStringOf Of hoJResp "Account.Name" To sAccountName
    Get ComStringOf Of hoJResp "Account.OwnerId" To sAccountOwnerId
    Get ComStringOf Of hoJResp "Account.CreatedOn" To sAccountCreatedOn
    Get ComStringOf Of hoJResp "Account.CreatedById" To sAccountCreatedById
    Get ComStringOf Of hoJResp "Account.ModifiedOn" To sAccountModifiedOn
    Get ComStringOf Of hoJResp "Account.ModifiedById" To sAccountModifiedById
    Get ComIntOf Of hoJResp "Account.ProcessListeners" To iAccountProcessListeners
    Get ComStringOf Of hoJResp "Account.OwnershipId" To sOwnershipId
    Get ComStringOf Of hoJResp "Account.PrimaryContactId" To sPrimaryContactId
    Get ComStringOf Of hoJResp "Account.ParentId" To sParentId
    Get ComStringOf Of hoJResp "Account.IndustryId" To sIndustryId
    Get ComStringOf Of hoJResp "Account.Code" To sCode
    Get ComStringOf Of hoJResp "Account.TypeId" To sTypeId
    Get ComStringOf Of hoJResp "Account.Phone" To sPhone
    Get ComStringOf Of hoJResp "Account.AdditionalPhone" To sAdditionalPhone
    Get ComStringOf Of hoJResp "Account.Fax" To sFax
    Get ComStringOf Of hoJResp "Account.Web" To sWeb
    Get ComStringOf Of hoJResp "Account.AddressTypeId" To sAddressTypeId
    Get ComStringOf Of hoJResp "Account.Address" To sAddress
    Get ComStringOf Of hoJResp "Account.CityId" To sCityId
    Get ComStringOf Of hoJResp "Account.RegionId" To sRegionId
    Get ComStringOf Of hoJResp "Account.Zip" To sV_Zip
    Get ComStringOf Of hoJResp "Account.CountryId" To sCountryId
    Get ComStringOf Of hoJResp "Account.AccountCategoryId" To sAccountCategoryId
    Get ComStringOf Of hoJResp "Account.EmployeesNumberId" To sEmployeesNumberId
    Get ComStringOf Of hoJResp "Account.AnnualRevenueId" To sAnnualRevenueId
    Get ComStringOf Of hoJResp "Account.Notes" To sAccountNotes
    Get ComStringOf Of hoJResp "Account.AlternativeName" To sAlternativeName
    Get ComStringOf Of hoJResp "Account.GPSN" To sGPSN
    Get ComStringOf Of hoJResp "Account.GPSE" To sGPSE
    Get ComIntOf Of hoJResp "Account.Completeness" To iCompleteness
    Get ComStringOf Of hoJResp "Account.PriceListId" To sPriceListId
    Get ComStringOf Of hoJResp "Account.AccountLogoId" To sAccountLogoId


End_Procedure

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