Chilkat Online Tools

Foxpro / Salesforce Platform APIs / Feed Elements Capability, Comments Items

Back to Collection Items

LOCAL loHttp
LOCAL lnSuccess
LOCAL loResp
LOCAL loSbResponseBody
LOCAL loJResp
LOCAL lnRespStatusCode
LOCAL lcText
LOCAL lnIsRichText
LOCAL lcText
LOCAL lnIsEditRestricted
LOCAL lcIsEditableByMeUrl
LOCAL lcLastEditedBy
LOCAL lcLastEditedDate
LOCAL lnLatestRevision
LOCAL lcRelativeLastEditedDate
LOCAL lcFeedEntityStatus
LOCAL lnIsApprovableByMe
LOCAL lnDownVoteCount
LOCAL lcMyVote
LOCAL lnUpVoteCount
LOCAL lnIsVerifiableByMe
LOCAL lnIsVerified
LOCAL lcIsVerifiedByAnonymized
LOCAL lcLastVerifiedByUser
LOCAL lcLastVerifiedDate
LOCAL lcApplicationName
LOCAL lcApplicationUrl
LOCAL lcCreatedDate
LOCAL lcId
LOCAL lcV_Url
LOCAL lcId
LOCAL lnIsDeleteRestricted
LOCAL lcCurrentPageToken
LOCAL lcCurrentPageUrl
LOCAL lcNextPageToken
LOCAL lcNextPageUrl
LOCAL lcPreviousPageToken
LOCAL lcPreviousPageUrl
LOCAL lnTotal
LOCAL lcLikesMessage
LOCAL lcModerationFlags
LOCAL lcMyLike
LOCAL lcParentId
LOCAL lcParentUrl
LOCAL lcRelativeCreatedDate
LOCAL lnThreadLevel
LOCAL lcThreadParentId
LOCAL lcV_type
LOCAL lcUrl
LOCAL lcAdditionalLabel
LOCAL lcCommunityNickname
LOCAL lcCompanyName
LOCAL lcDisplayName
LOCAL lcFirstName
LOCAL lcUserId
LOCAL lnIsActive
LOCAL lnIsInThisCommunity
LOCAL lcLastName
LOCAL lcColor
LOCAL lcLargeIconUrl
LOCAL lcMediumIconUrl
LOCAL lcSmallIconUrl
LOCAL lcSvgIconUrl
LOCAL lcMySubscription
LOCAL lcName
LOCAL lcMessage
LOCAL lcFullEmailPhotoUrl
LOCAL lcLargePhotoUrl
LOCAL lcMediumPhotoUrl
LOCAL lcPhotoVersionId
LOCAL lcSmallPhotoUrl
LOCAL lcStandardEmailPhotoUrl
LOCAL lcPhotoUrl
LOCAL lcReputation
LOCAL lcTitle
LOCAL lcV_Type
LOCAL lcUserUrl
LOCAL lcUserType
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>"

loResp = loHttp.QuickRequest("POST","Comment")
IF (loHttp.LastMethodSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loHttp
    CANCEL
ENDIF

* For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.StringBuilder')
loSbResponseBody = CreateObject('Chilkat.StringBuilder')
loResp.GetBodySb(loSbResponseBody)

* 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 = loResp.StatusCode
? "Response Status Code = " + STR(lnRespStatusCode)
IF (lnRespStatusCode >= 400) THEN
    ? "Response Header:"
    ? loResp.Header
    ? "Failed."
    RELEASE loResp
    RELEASE loHttp
    RELEASE loSbResponseBody
    RELEASE loJResp
    CANCEL
ENDIF

RELEASE loResp

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

* {
*   "body": {
*     "isRichText": false,
*     "messageSegments": [
*       {
*         "text": "New Comment",
*         "type": "Text"
*       }
*     ],
*     "text": "New Comment"
*   },
*   "capabilities": {
*     "edit": {
*       "isEditRestricted": false,
*       "isEditableByMeUrl": "/services/data/v58.0/chatter/comments/0D7.../capabilities/edit/is-editable-by-me",
*       "lastEditedBy": null,
*       "lastEditedDate": null,
*       "latestRevision": 1,
*       "relativeLastEditedDate": null
*     },
*     "status": {
*       "feedEntityStatus": "Published",
*       "isApprovableByMe": true
*     },
*     "upDownVote": {
*       "downVoteCount": 0,
*       "myVote": "None",
*       "upVoteCount": 0
*     },
*     "verified": {
*       "isVerifiableByMe": false,
*       "isVerified": false,
*       "isVerifiedByAnonymized": null,
*       "lastVerifiedByUser": null,
*       "lastVerifiedDate": null
*     }
*   },
*   "clientInfo": {
*     "applicationName": "Postman Playground",
*     "applicationUrl": null
*   },
*   "createdDate": "2023-11-22T11:14:33.000Z",
*   "feedElement": {
*     "id": "0D5...",
*     "url": "/services/data/v58.0/chatter/feed-elements/0D5..."
*   },
*   "id": "0D7...",
*   "isDeleteRestricted": false,
*   "likes": {
*     "currentPageToken": null,
*     "currentPageUrl": "/services/data/v58.0/chatter/comments/0D7.../likes",
*     "items": [
*     ],
*     "nextPageToken": null,
*     "nextPageUrl": null,
*     "previousPageToken": null,
*     "previousPageUrl": null,
*     "total": 0
*   },
*   "likesMessage": null,
*   "moderationFlags": null,
*   "myLike": null,
*   "parent": {
*     "id": "001...",
*     "url": "/services/data/v58.0/chatter/records/001..."
*   },
*   "relativeCreatedDate": "Just now",
*   "threadLevel": 0,
*   "threadParentId": null,
*   "type": "TextComment",
*   "url": "/services/data/v58.0/chatter/comments/0D7...",
*   "user": {
*     "additionalLabel": null,
*     "communityNickname": "User1696423780773910041",
*     "companyName": "Salesforce",
*     "displayName": "Name",
*     "firstName": "Firstname",
*     "id": "005...",
*     "isActive": true,
*     "isInThisCommunity": true,
*     "lastName": "Name",
*     "motif": {
*       "color": "1B96FF",
*       "largeIconUrl": "/img/icon/profile64.png",
*       "mediumIconUrl": "/img/icon/profile32.png",
*       "smallIconUrl": "/img/icon/profile16.png",
*       "svgIconUrl": null
*     },
*     "mySubscription": null,
*     "name": "Name",
*     "outOfOffice": {
*       "message": ""
*     },
*     "photo": {
*       "fullEmailPhotoUrl": "https://<my_domain>/ncsphoto/1wsMlOd3tVC7boygqBO8wMT9KzA0D6tqzpbs-Uw0IogXzXAXaYKJnuWCNQmXymRq?fromEmail=1",
*       "largePhotoUrl": "https://<my_domain>/profilephoto/729.../F",
*       "mediumPhotoUrl": "https://<my_domain>/profilephoto/729.../M",
*       "photoVersionId": "729...",
*       "smallPhotoUrl": "https://<my_domain>/profilephoto/729.../T",
*       "standardEmailPhotoUrl": "https://<my_domain>/ncsphoto/1wsMlOd3tVC7boygqBO8wMT9KzA0D6tqzpbs-Uw0Ioi-dtynkoFWsl46as__TDFU?fromEmail=1",
*       "url": "/services/data/v58.0/connect/user-profiles/005.../photo"
*     },
*     "reputation": null,
*     "title": null,
*     "type": "User",
*     "url": "/services/data/v58.0/chatter/users/005...",
*     "userType": "Internal"
*   }
* }

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

lnIsRichText = loJResp.BoolOf("body.isRichText")
lcText = loJResp.StringOf("body.text")
lnIsEditRestricted = loJResp.BoolOf("capabilities.edit.isEditRestricted")
lcIsEditableByMeUrl = loJResp.StringOf("capabilities.edit.isEditableByMeUrl")
lcLastEditedBy = loJResp.StringOf("capabilities.edit.lastEditedBy")
lcLastEditedDate = loJResp.StringOf("capabilities.edit.lastEditedDate")
lnLatestRevision = loJResp.IntOf("capabilities.edit.latestRevision")
lcRelativeLastEditedDate = loJResp.StringOf("capabilities.edit.relativeLastEditedDate")
lcFeedEntityStatus = loJResp.StringOf("capabilities.status.feedEntityStatus")
lnIsApprovableByMe = loJResp.BoolOf("capabilities.status.isApprovableByMe")
lnDownVoteCount = loJResp.IntOf("capabilities.upDownVote.downVoteCount")
lcMyVote = loJResp.StringOf("capabilities.upDownVote.myVote")
lnUpVoteCount = loJResp.IntOf("capabilities.upDownVote.upVoteCount")
lnIsVerifiableByMe = loJResp.BoolOf("capabilities.verified.isVerifiableByMe")
lnIsVerified = loJResp.BoolOf("capabilities.verified.isVerified")
lcIsVerifiedByAnonymized = loJResp.StringOf("capabilities.verified.isVerifiedByAnonymized")
lcLastVerifiedByUser = loJResp.StringOf("capabilities.verified.lastVerifiedByUser")
lcLastVerifiedDate = loJResp.StringOf("capabilities.verified.lastVerifiedDate")
lcApplicationName = loJResp.StringOf("clientInfo.applicationName")
lcApplicationUrl = loJResp.StringOf("clientInfo.applicationUrl")
lcCreatedDate = loJResp.StringOf("createdDate")
lcId = loJResp.StringOf("feedElement.id")
lcV_Url = loJResp.StringOf("feedElement.url")
lcId = loJResp.StringOf("id")
lnIsDeleteRestricted = loJResp.BoolOf("isDeleteRestricted")
lcCurrentPageToken = loJResp.StringOf("likes.currentPageToken")
lcCurrentPageUrl = loJResp.StringOf("likes.currentPageUrl")
lcNextPageToken = loJResp.StringOf("likes.nextPageToken")
lcNextPageUrl = loJResp.StringOf("likes.nextPageUrl")
lcPreviousPageToken = loJResp.StringOf("likes.previousPageToken")
lcPreviousPageUrl = loJResp.StringOf("likes.previousPageUrl")
lnTotal = loJResp.IntOf("likes.total")
lcLikesMessage = loJResp.StringOf("likesMessage")
lcModerationFlags = loJResp.StringOf("moderationFlags")
lcMyLike = loJResp.StringOf("myLike")
lcParentId = loJResp.StringOf("parent.id")
lcParentUrl = loJResp.StringOf("parent.url")
lcRelativeCreatedDate = loJResp.StringOf("relativeCreatedDate")
lnThreadLevel = loJResp.IntOf("threadLevel")
lcThreadParentId = loJResp.StringOf("threadParentId")
lcV_type = loJResp.StringOf("type")
lcUrl = loJResp.StringOf("url")
lcAdditionalLabel = loJResp.StringOf("user.additionalLabel")
lcCommunityNickname = loJResp.StringOf("user.communityNickname")
lcCompanyName = loJResp.StringOf("user.companyName")
lcDisplayName = loJResp.StringOf("user.displayName")
lcFirstName = loJResp.StringOf("user.firstName")
lcUserId = loJResp.StringOf("user.id")
lnIsActive = loJResp.BoolOf("user.isActive")
lnIsInThisCommunity = loJResp.BoolOf("user.isInThisCommunity")
lcLastName = loJResp.StringOf("user.lastName")
lcColor = loJResp.StringOf("user.motif.color")
lcLargeIconUrl = loJResp.StringOf("user.motif.largeIconUrl")
lcMediumIconUrl = loJResp.StringOf("user.motif.mediumIconUrl")
lcSmallIconUrl = loJResp.StringOf("user.motif.smallIconUrl")
lcSvgIconUrl = loJResp.StringOf("user.motif.svgIconUrl")
lcMySubscription = loJResp.StringOf("user.mySubscription")
lcName = loJResp.StringOf("user.name")
lcMessage = loJResp.StringOf("user.outOfOffice.message")
lcFullEmailPhotoUrl = loJResp.StringOf("user.photo.fullEmailPhotoUrl")
lcLargePhotoUrl = loJResp.StringOf("user.photo.largePhotoUrl")
lcMediumPhotoUrl = loJResp.StringOf("user.photo.mediumPhotoUrl")
lcPhotoVersionId = loJResp.StringOf("user.photo.photoVersionId")
lcSmallPhotoUrl = loJResp.StringOf("user.photo.smallPhotoUrl")
lcStandardEmailPhotoUrl = loJResp.StringOf("user.photo.standardEmailPhotoUrl")
lcPhotoUrl = loJResp.StringOf("user.photo.url")
lcReputation = loJResp.StringOf("user.reputation")
lcTitle = loJResp.StringOf("user.title")
lcV_Type = loJResp.StringOf("user.type")
lcUserUrl = loJResp.StringOf("user.url")
lcUserType = loJResp.StringOf("user.userType")
i = 0
lnCount_i = loJResp.SizeOfArray("body.messageSegments")
DO WHILE i < lnCount_i
    loJResp.I = i
    lcText = loJResp.StringOf("body.messageSegments[i].text")
    lcV_type = loJResp.StringOf("body.messageSegments[i].type")
    i = i + 1
ENDDO
i = 0
lnCount_i = loJResp.SizeOfArray("likes.items")
DO WHILE i < lnCount_i
    loJResp.I = i
    i = i + 1
ENDDO

RELEASE loHttp
RELEASE loSbResponseBody
RELEASE loJResp

Curl Command

curl -X POST
	-H "Authorization: Bearer <access_token>"
https://domain.com/services/data/v{{version}}/chatter/feed-elements/:FEED_ELEMENT_ID/capabilities/comments/items?text=New Comment

Postman Collection Item JSON

{
  "name": "Feed Elements Capability, Comments Items",
  "event": [
    {
      "listen": "prerequest",
      "script": {
        "exec": [
          ""
        ],
        "type": "text/javascript"
      }
    },
    {
      "listen": "test",
      "script": {
        "exec": [
          ""
        ],
        "type": "text/javascript"
      }
    }
  ],
  "request": {
    "method": "POST",
    "header": [
    ],
    "url": {
      "raw": "{{_endpoint}}/services/data/v{{version}}/chatter/feed-elements/:FEED_ELEMENT_ID/capabilities/comments/items?text=New Comment",
      "host": [
        "{{_endpoint}}"
      ],
      "path": [
        "services",
        "data",
        "v{{version}}",
        "chatter",
        "feed-elements",
        ":FEED_ELEMENT_ID",
        "capabilities",
        "comments",
        "items"
      ],
      "query": [
        {
          "key": "text",
          "value": "New Comment"
        }
      ],
      "variable": [
        {
          "key": "FEED_ELEMENT_ID",
          "value": ""
        }
      ]
    },
    "description": "Access comments for a feed element, or add a comment to a feed element.\nTo upload a binary file to attach to a comment, you must send it in a multipart/form-data request. To send the text of the comment, you can choose to include a JSON or XML rich input body part in the multipart/form-data request. Alternately, you can choose to pass the information in request parameter parts. For information about how to create the multipart/form-data message, see Uploading Binary Files.\n\nhttps://developer.salesforce.com/docs/atlas.en-us.chatterapi.meta/chatterapi/connect_resources_feed_element_capability_comments_items.htm#connect_resources_feed_element_capability_comments_items"
  },
  "response": [
    {
      "name": "Feed Elements Capability, Comments Items",
      "originalRequest": {
        "method": "POST",
        "header": [
        ],
        "url": {
          "raw": "{{_endpoint}}/services/data/v{{version}}/chatter/feed-elements/:FEED_ELEMENT_ID/capabilities/comments/items?text=New Comment",
          "host": [
            "{{_endpoint}}"
          ],
          "path": [
            "services",
            "data",
            "v{{version}}",
            "chatter",
            "feed-elements",
            ":FEED_ELEMENT_ID",
            "capabilities",
            "comments",
            "items"
          ],
          "query": [
            {
              "key": "text",
              "value": "New Comment"
            }
          ],
          "variable": [
            {
              "key": "FEED_ELEMENT_ID",
              "value": "0D5..."
            }
          ]
        }
      },
      "status": "Created",
      "code": 201,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "Date",
          "value": "Wed, 22 Nov 2023 11:14:33 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    \"body\": {\n        \"isRichText\": false,\n        \"messageSegments\": [\n            {\n                \"text\": \"New Comment\",\n                \"type\": \"Text\"\n            }\n        ],\n        \"text\": \"New Comment\"\n    },\n    \"capabilities\": {\n        \"edit\": {\n            \"isEditRestricted\": false,\n            \"isEditableByMeUrl\": \"/services/data/v58.0/chatter/comments/0D7.../capabilities/edit/is-editable-by-me\",\n            \"lastEditedBy\": null,\n            \"lastEditedDate\": null,\n            \"latestRevision\": 1,\n            \"relativeLastEditedDate\": null\n        },\n        \"status\": {\n            \"feedEntityStatus\": \"Published\",\n            \"isApprovableByMe\": true\n        },\n        \"upDownVote\": {\n            \"downVoteCount\": 0,\n            \"myVote\": \"None\",\n            \"upVoteCount\": 0\n        },\n        \"verified\": {\n            \"isVerifiableByMe\": false,\n            \"isVerified\": false,\n            \"isVerifiedByAnonymized\": null,\n            \"lastVerifiedByUser\": null,\n            \"lastVerifiedDate\": null\n        }\n    },\n    \"clientInfo\": {\n        \"applicationName\": \"Postman Playground\",\n        \"applicationUrl\": null\n    },\n    \"createdDate\": \"2023-11-22T11:14:33.000Z\",\n    \"feedElement\": {\n        \"id\": \"0D5...\",\n        \"url\": \"/services/data/v58.0/chatter/feed-elements/0D5...\"\n    },\n    \"id\": \"0D7...\",\n    \"isDeleteRestricted\": false,\n    \"likes\": {\n        \"currentPageToken\": null,\n        \"currentPageUrl\": \"/services/data/v58.0/chatter/comments/0D7.../likes\",\n        \"items\": [],\n        \"nextPageToken\": null,\n        \"nextPageUrl\": null,\n        \"previousPageToken\": null,\n        \"previousPageUrl\": null,\n        \"total\": 0\n    },\n    \"likesMessage\": null,\n    \"moderationFlags\": null,\n    \"myLike\": null,\n    \"parent\": {\n        \"id\": \"001...\",\n        \"url\": \"/services/data/v58.0/chatter/records/001...\"\n    },\n    \"relativeCreatedDate\": \"Just now\",\n    \"threadLevel\": 0,\n    \"threadParentId\": null,\n    \"type\": \"TextComment\",\n    \"url\": \"/services/data/v58.0/chatter/comments/0D7...\",\n    \"user\": {\n        \"additionalLabel\": null,\n        \"communityNickname\": \"User1696423780773910041\",\n        \"companyName\": \"Salesforce\",\n        \"displayName\": \"Name\",\n        \"firstName\": \"Firstname\",\n        \"id\": \"005...\",\n        \"isActive\": true,\n        \"isInThisCommunity\": true,\n        \"lastName\": \"Name\",\n        \"motif\": {\n            \"color\": \"1B96FF\",\n            \"largeIconUrl\": \"/img/icon/profile64.png\",\n            \"mediumIconUrl\": \"/img/icon/profile32.png\",\n            \"smallIconUrl\": \"/img/icon/profile16.png\",\n            \"svgIconUrl\": null\n        },\n        \"mySubscription\": null,\n        \"name\": \"Name\",\n        \"outOfOffice\": {\n            \"message\": \"\"\n        },\n        \"photo\": {\n            \"fullEmailPhotoUrl\": \"https://<my_domain>/ncsphoto/1wsMlOd3tVC7boygqBO8wMT9KzA0D6tqzpbs-Uw0IogXzXAXaYKJnuWCNQmXymRq?fromEmail=1\",\n            \"largePhotoUrl\": \"https://<my_domain>/profilephoto/729.../F\",\n            \"mediumPhotoUrl\": \"https://<my_domain>/profilephoto/729.../M\",\n            \"photoVersionId\": \"729...\",\n            \"smallPhotoUrl\": \"https://<my_domain>/profilephoto/729.../T\",\n            \"standardEmailPhotoUrl\": \"https://<my_domain>/ncsphoto/1wsMlOd3tVC7boygqBO8wMT9KzA0D6tqzpbs-Uw0Ioi-dtynkoFWsl46as__TDFU?fromEmail=1\",\n            \"url\": \"/services/data/v58.0/connect/user-profiles/005.../photo\"\n        },\n        \"reputation\": null,\n        \"title\": null,\n        \"type\": \"User\",\n        \"url\": \"/services/data/v58.0/chatter/users/005...\",\n        \"userType\": \"Internal\"\n    }\n}"
    }
  ]
}