Chilkat Online Tools

TCL / Salesforce Platform APIs / Platform Event Schema by Event Name

Back to Collection Items

load ./chilkat.dll

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

set http [new_CkHttp]

# Adds the "Authorization: Bearer <access_token>" header.
CkHttp_put_AuthToken $http "<access_token>"
CkHttp_SetRequestHeader $http "Content-Type" "application/json"

set sbResponseBody [new_CkStringBuilder]

set success [CkHttp_QuickGetSb $http "https://domain.com/services/data/v{{version}}/sobjects/:EVENT_NAME/eventSchema" $sbResponseBody]
if {$success == 0} then {
    puts [CkHttp_lastErrorText $http]
    delete_CkHttp $http
    delete_CkStringBuilder $sbResponseBody
    exit
}

set jResp [new_CkJsonObject]

CkJsonObject_LoadSb $jResp $sbResponseBody
CkJsonObject_put_EmitCompact $jResp 0

puts "Response Body:"
puts [CkJsonObject_emit $jResp]

set respStatusCode [CkHttp_get_LastStatus $http]
puts "Response Status Code = $respStatusCode"
if {$respStatusCode >= 400} then {
    puts "Response Header:"
    puts [CkHttp_lastHeader $http]
    puts "Failed."
    delete_CkHttp $http
    delete_CkStringBuilder $sbResponseBody
    delete_CkJsonObject $jResp
    exit
}

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

# {
#   "name": "Sample__e",
#   "namespace": "com.sforce.eventbus",
#   "type": "expanded-record",
#   "fields": [
#     {
#       "name": "data",
#       "type": {
#         "type": "record",
#         "name": "Data",
#         "namespace": "",
#         "fields": [
#           {
#             "name": "schema",
#             "type": "string"
#           },
#           {
#             "name": "payload",
#             "type": {
#               "type": "record",
#               "name": "Payload",
#               "doc": "",
#               "fields": [
#                 {
#                   "name": "CreatedDate",
#                   "type": "string",
#                   "doc": "CreatedDate:DateTime"
#                 },
#                 {
#                   "name": "CreatedById",
#                   "type": "string",
#                   "doc": "CreatedBy:EntityId"
#                 },
#                 {
#                   "name": "Message__c",
#                   "type": [
#                     "null",
#                     "string"
#                   ],
#                   "doc": "Data:Text:00N4H00000Ecs0G",
#                   "default": null
#                 }
#               ]
#             }
#           },
#           {
#             "name": "event",
#             "type": {
#               "type": "record",
#               "name": "Event",
#               "fields": [
#                 {
#                   "name": "replayId",
#                   "type": "long"
#                 }
#               ]
#             }
#           }
#         ]
#       }
#     },
#     {
#       "name": "channel",
#       "type": "string"
#     }
#   ]
# }

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

set json1 [new_CkJsonObject]

set name [CkJsonObject_stringOf $jResp "name"]
set namespace [CkJsonObject_stringOf $jResp "namespace"]
set v_type [CkJsonObject_stringOf $jResp "type"]
set i 0
set count_i [CkJsonObject_SizeOfArray $jResp "fields"]
while {$i < $count_i} {
    CkJsonObject_put_I $jResp $i
    set name [CkJsonObject_stringOf $jResp "fields[i].name"]
    set v_Type [CkJsonObject_stringOf $jResp "fields[i].type.type"]
    set Name [CkJsonObject_stringOf $jResp "fields[i].type.name"]
    set Namespace [CkJsonObject_stringOf $jResp "fields[i].type.namespace"]
    set v_type [CkJsonObject_stringOf $jResp "fields[i].type"]
    set j 0
    set count_j [CkJsonObject_SizeOfArray $jResp "fields[i].type.fields"]
    while {$j < $count_j} {
        CkJsonObject_put_J $jResp $j
        set name [CkJsonObject_stringOf $jResp "fields[i].type.fields[j].name"]
        set v_type [CkJsonObject_stringOf $jResp "fields[i].type.fields[j].type"]
        set typeType [CkJsonObject_stringOf $jResp "fields[i].type.fields[j].type.type"]
        set typeName [CkJsonObject_stringOf $jResp "fields[i].type.fields[j].type.name"]
        set Doc [CkJsonObject_stringOf $jResp "fields[i].type.fields[j].type.doc"]
        set k 0
        set count_k [CkJsonObject_SizeOfArray $jResp "fields[i].type.fields[j].type.fields"]
        while {$k < $count_k} {
            CkJsonObject_put_K $jResp $k
            set name [CkJsonObject_stringOf $jResp "fields[i].type.fields[j].type.fields[k].name"]
            set v_type [CkJsonObject_stringOf $jResp "fields[i].type.fields[j].type.fields[k].type"]
            set doc [CkJsonObject_stringOf $jResp "fields[i].type.fields[j].type.fields[k].doc"]
            set default [CkJsonObject_stringOf $jResp "fields[i].type.fields[j].type.fields[k].default"]

            CkJsonObject_ObjectOf2 $jResp "fields[i].type.fields[j].type.fields[k]" $json1
            set i1 0
            set count_i1 [CkJsonObject_SizeOfArray $json1 "type"]
            while {$i1 < $count_i1} {
                CkJsonObject_put_I $json1 $i1
                set strVal [CkJsonObject_stringOf $json1 "type[i]"]
                set i1 [expr $i1 + 1]
            }
            set k [expr $k + 1]
        }
        set j [expr $j + 1]
    }
    set i [expr $i + 1]
}

delete_CkHttp $http
delete_CkStringBuilder $sbResponseBody
delete_CkJsonObject $jResp
delete_CkJsonObject $json1

Curl Command

curl -X GET
	-H "Authorization: Bearer <access_token>"
	-H "Content-Type: application/json"
https://domain.com/services/data/v{{version}}/sobjects/:EVENT_NAME/eventSchema

Postman Collection Item JSON

{
  "name": "Platform Event Schema by Event Name",
  "request": {
    "method": "GET",
    "header": [
      {
        "key": "Content-Type",
        "value": "application/json"
      }
    ],
    "url": {
      "raw": "{{_endpoint}}/services/data/v{{version}}/sobjects/:EVENT_NAME/eventSchema",
      "host": [
        "{{_endpoint}}"
      ],
      "path": [
        "services",
        "data",
        "v{{version}}",
        "sobjects",
        ":EVENT_NAME",
        "eventSchema"
      ],
      "query": [
        {
          "key": "payloadFormat",
          "value": "",
          "description": "(Optional query parameter. Available in API version 43.0 and later.) The format of the returned event schema. This parameter can take one of the following values.\nEXPANDED—The JSON representation of the event schema, which is the default format when payloadFormat is not specified in API version 43.0 and later.\nCOMPACT—A format that adheres to the open-source Apache Avro specification for the record complex type (see Apache Avro Format). Subscribers use the compact schema format to deserialize compact events received in binary form.",
          "disabled": true
        }
      ],
      "variable": [
        {
          "key": "EVENT_NAME",
          "value": "",
          "description": "API Name of the event"
        }
      ]
    },
    "description": "Set, reset, or get information about a user password. This resource is available in REST API version 24.0 and later."
  },
  "response": [
    {
      "name": "Platform Event Schema by Event Name",
      "originalRequest": {
        "method": "GET",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{_endpoint}}/services/data/v{{version}}/sobjects/:EVENT_NAME/eventSchema",
          "host": [
            "{{_endpoint}}"
          ],
          "path": [
            "services",
            "data",
            "v{{version}}",
            "sobjects",
            ":EVENT_NAME",
            "eventSchema"
          ],
          "query": [
            {
              "key": "payloadFormat",
              "value": "",
              "description": "(Optional query parameter. Available in API version 43.0 and later.) The format of the returned event schema. This parameter can take one of the following values.\nEXPANDED—The JSON representation of the event schema, which is the default format when payloadFormat is not specified in API version 43.0 and later.\nCOMPACT—A format that adheres to the open-source Apache Avro specification for the record complex type (see Apache Avro Format). Subscribers use the compact schema format to deserialize compact events received in binary form.",
              "disabled": true
            }
          ],
          "variable": [
            {
              "key": "EVENT_NAME",
              "value": "Sample__e",
              "description": "API Name of the event"
            }
          ]
        }
      },
      "status": "OK",
      "code": 200,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "Date",
          "value": "Mon, 03 Jul 2023 13:06:08 GMT"
        },
        {
          "key": "Strict-Transport-Security",
          "value": "max-age=63072000; includeSubDomains"
        },
        {
          "key": "X-Content-Type-Options",
          "value": "nosniff"
        },
        {
          "key": "X-Robots-Tag",
          "value": "none"
        },
        {
          "key": "Cache-Control",
          "value": "no-cache,must-revalidate,max-age=0,no-store,private"
        },
        {
          "key": "Sforce-Limit-Info",
          "value": "api-usage=2/15000"
        },
        {
          "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    \"name\": \"Sample__e\",\n    \"namespace\": \"com.sforce.eventbus\",\n    \"type\": \"expanded-record\",\n    \"fields\": [\n        {\n            \"name\": \"data\",\n            \"type\": {\n                \"type\": \"record\",\n                \"name\": \"Data\",\n                \"namespace\": \"\",\n                \"fields\": [\n                    {\n                        \"name\": \"schema\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"name\": \"payload\",\n                        \"type\": {\n                            \"type\": \"record\",\n                            \"name\": \"Payload\",\n                            \"doc\": \"\",\n                            \"fields\": [\n                                {\n                                    \"name\": \"CreatedDate\",\n                                    \"type\": \"string\",\n                                    \"doc\": \"CreatedDate:DateTime\"\n                                },\n                                {\n                                    \"name\": \"CreatedById\",\n                                    \"type\": \"string\",\n                                    \"doc\": \"CreatedBy:EntityId\"\n                                },\n                                {\n                                    \"name\": \"Message__c\",\n                                    \"type\": [\n                                        \"null\",\n                                        \"string\"\n                                    ],\n                                    \"doc\": \"Data:Text:00N4H00000Ecs0G\",\n                                    \"default\": null\n                                }\n                            ]\n                        }\n                    },\n                    {\n                        \"name\": \"event\",\n                        \"type\": {\n                            \"type\": \"record\",\n                            \"name\": \"Event\",\n                            \"fields\": [\n                                {\n                                    \"name\": \"replayId\",\n                                    \"type\": \"long\"\n                                }\n                            ]\n                        }\n                    }\n                ]\n            }\n        },\n        {\n            \"name\": \"channel\",\n            \"type\": \"string\"\n        }\n    ]\n}"
    }
  ]
}