Chilkat Online Tools

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

Back to Collection Items

Use ChilkatAx-win32.pkg

Procedure Test
    Handle hoHttp
    Boolean iSuccess
    Variant vResp
    Handle hoResp
    Variant vSbResponseBody
    Handle hoSbResponseBody
    Handle hoJResp
    Integer iRespStatusCode
    String sText
    Boolean iIsRichText
    String sText
    Boolean iIsEditRestricted
    String sIsEditableByMeUrl
    String sLastEditedBy
    String sLastEditedDate
    Integer iLatestRevision
    String sRelativeLastEditedDate
    String sFeedEntityStatus
    Boolean iIsApprovableByMe
    Integer iDownVoteCount
    String sMyVote
    Integer iUpVoteCount
    Boolean iIsVerifiableByMe
    Boolean iIsVerified
    String sIsVerifiedByAnonymized
    String sLastVerifiedByUser
    String sLastVerifiedDate
    String sApplicationName
    String sApplicationUrl
    String sCreatedDate
    String sId
    String sV_Url
    String sId
    Boolean iIsDeleteRestricted
    String sCurrentPageToken
    String sCurrentPageUrl
    String sNextPageToken
    String sNextPageUrl
    String sPreviousPageToken
    String sPreviousPageUrl
    Integer iTotal
    String sLikesMessage
    String sModerationFlags
    String sMyLike
    String sParentId
    String sParentUrl
    String sRelativeCreatedDate
    Integer iThreadLevel
    String sThreadParentId
    String sV_type
    String sUrl
    String sAdditionalLabel
    String sCommunityNickname
    String sCompanyName
    String sDisplayName
    String sFirstName
    String sUserId
    Boolean iIsActive
    Boolean iIsInThisCommunity
    String sLastName
    String sColor
    String sLargeIconUrl
    String sMediumIconUrl
    String sSmallIconUrl
    String sSvgIconUrl
    String sMySubscription
    String sName
    String sMessage
    String sFullEmailPhotoUrl
    String sLargePhotoUrl
    String sMediumPhotoUrl
    String sPhotoVersionId
    String sSmallPhotoUrl
    String sStandardEmailPhotoUrl
    String sPhotoUrl
    String sReputation
    String sTitle
    String sV_Type
    String sUserUrl
    String sUserType
    Integer i
    Integer iCount_i
    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

    // Adds the "Authorization: Bearer <access_token>" header.
    Set ComAuthToken Of hoHttp To "<access_token>"

    Get ComQuickRequest Of hoHttp "POST" "Comment" 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)

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

    Get ComBoolOf Of hoJResp "body.isRichText" To iIsRichText
    Get ComStringOf Of hoJResp "body.text" To sText
    Get ComBoolOf Of hoJResp "capabilities.edit.isEditRestricted" To iIsEditRestricted
    Get ComStringOf Of hoJResp "capabilities.edit.isEditableByMeUrl" To sIsEditableByMeUrl
    Get ComStringOf Of hoJResp "capabilities.edit.lastEditedBy" To sLastEditedBy
    Get ComStringOf Of hoJResp "capabilities.edit.lastEditedDate" To sLastEditedDate
    Get ComIntOf Of hoJResp "capabilities.edit.latestRevision" To iLatestRevision
    Get ComStringOf Of hoJResp "capabilities.edit.relativeLastEditedDate" To sRelativeLastEditedDate
    Get ComStringOf Of hoJResp "capabilities.status.feedEntityStatus" To sFeedEntityStatus
    Get ComBoolOf Of hoJResp "capabilities.status.isApprovableByMe" To iIsApprovableByMe
    Get ComIntOf Of hoJResp "capabilities.upDownVote.downVoteCount" To iDownVoteCount
    Get ComStringOf Of hoJResp "capabilities.upDownVote.myVote" To sMyVote
    Get ComIntOf Of hoJResp "capabilities.upDownVote.upVoteCount" To iUpVoteCount
    Get ComBoolOf Of hoJResp "capabilities.verified.isVerifiableByMe" To iIsVerifiableByMe
    Get ComBoolOf Of hoJResp "capabilities.verified.isVerified" To iIsVerified
    Get ComStringOf Of hoJResp "capabilities.verified.isVerifiedByAnonymized" To sIsVerifiedByAnonymized
    Get ComStringOf Of hoJResp "capabilities.verified.lastVerifiedByUser" To sLastVerifiedByUser
    Get ComStringOf Of hoJResp "capabilities.verified.lastVerifiedDate" To sLastVerifiedDate
    Get ComStringOf Of hoJResp "clientInfo.applicationName" To sApplicationName
    Get ComStringOf Of hoJResp "clientInfo.applicationUrl" To sApplicationUrl
    Get ComStringOf Of hoJResp "createdDate" To sCreatedDate
    Get ComStringOf Of hoJResp "feedElement.id" To sId
    Get ComStringOf Of hoJResp "feedElement.url" To sV_Url
    Get ComStringOf Of hoJResp "id" To sId
    Get ComBoolOf Of hoJResp "isDeleteRestricted" To iIsDeleteRestricted
    Get ComStringOf Of hoJResp "likes.currentPageToken" To sCurrentPageToken
    Get ComStringOf Of hoJResp "likes.currentPageUrl" To sCurrentPageUrl
    Get ComStringOf Of hoJResp "likes.nextPageToken" To sNextPageToken
    Get ComStringOf Of hoJResp "likes.nextPageUrl" To sNextPageUrl
    Get ComStringOf Of hoJResp "likes.previousPageToken" To sPreviousPageToken
    Get ComStringOf Of hoJResp "likes.previousPageUrl" To sPreviousPageUrl
    Get ComIntOf Of hoJResp "likes.total" To iTotal
    Get ComStringOf Of hoJResp "likesMessage" To sLikesMessage
    Get ComStringOf Of hoJResp "moderationFlags" To sModerationFlags
    Get ComStringOf Of hoJResp "myLike" To sMyLike
    Get ComStringOf Of hoJResp "parent.id" To sParentId
    Get ComStringOf Of hoJResp "parent.url" To sParentUrl
    Get ComStringOf Of hoJResp "relativeCreatedDate" To sRelativeCreatedDate
    Get ComIntOf Of hoJResp "threadLevel" To iThreadLevel
    Get ComStringOf Of hoJResp "threadParentId" To sThreadParentId
    Get ComStringOf Of hoJResp "type" To sV_type
    Get ComStringOf Of hoJResp "url" To sUrl
    Get ComStringOf Of hoJResp "user.additionalLabel" To sAdditionalLabel
    Get ComStringOf Of hoJResp "user.communityNickname" To sCommunityNickname
    Get ComStringOf Of hoJResp "user.companyName" To sCompanyName
    Get ComStringOf Of hoJResp "user.displayName" To sDisplayName
    Get ComStringOf Of hoJResp "user.firstName" To sFirstName
    Get ComStringOf Of hoJResp "user.id" To sUserId
    Get ComBoolOf Of hoJResp "user.isActive" To iIsActive
    Get ComBoolOf Of hoJResp "user.isInThisCommunity" To iIsInThisCommunity
    Get ComStringOf Of hoJResp "user.lastName" To sLastName
    Get ComStringOf Of hoJResp "user.motif.color" To sColor
    Get ComStringOf Of hoJResp "user.motif.largeIconUrl" To sLargeIconUrl
    Get ComStringOf Of hoJResp "user.motif.mediumIconUrl" To sMediumIconUrl
    Get ComStringOf Of hoJResp "user.motif.smallIconUrl" To sSmallIconUrl
    Get ComStringOf Of hoJResp "user.motif.svgIconUrl" To sSvgIconUrl
    Get ComStringOf Of hoJResp "user.mySubscription" To sMySubscription
    Get ComStringOf Of hoJResp "user.name" To sName
    Get ComStringOf Of hoJResp "user.outOfOffice.message" To sMessage
    Get ComStringOf Of hoJResp "user.photo.fullEmailPhotoUrl" To sFullEmailPhotoUrl
    Get ComStringOf Of hoJResp "user.photo.largePhotoUrl" To sLargePhotoUrl
    Get ComStringOf Of hoJResp "user.photo.mediumPhotoUrl" To sMediumPhotoUrl
    Get ComStringOf Of hoJResp "user.photo.photoVersionId" To sPhotoVersionId
    Get ComStringOf Of hoJResp "user.photo.smallPhotoUrl" To sSmallPhotoUrl
    Get ComStringOf Of hoJResp "user.photo.standardEmailPhotoUrl" To sStandardEmailPhotoUrl
    Get ComStringOf Of hoJResp "user.photo.url" To sPhotoUrl
    Get ComStringOf Of hoJResp "user.reputation" To sReputation
    Get ComStringOf Of hoJResp "user.title" To sTitle
    Get ComStringOf Of hoJResp "user.type" To sV_Type
    Get ComStringOf Of hoJResp "user.url" To sUserUrl
    Get ComStringOf Of hoJResp "user.userType" To sUserType
    Move 0 To i
    Get ComSizeOfArray Of hoJResp "body.messageSegments" To iCount_i
    While (i < iCount_i)
        Set ComI Of hoJResp To i
        Get ComStringOf Of hoJResp "body.messageSegments[i].text" To sText
        Get ComStringOf Of hoJResp "body.messageSegments[i].type" To sV_type
        Move (i + 1) To i
    Loop

    Move 0 To i
    Get ComSizeOfArray Of hoJResp "likes.items" To iCount_i
    While (i < iCount_i)
        Set ComI Of hoJResp To i
        Move (i + 1) To i
    Loop



End_Procedure

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