Skip to main content

Comments

Comments provide a threaded discussion system attached to cases, alerts, and checks. They support @mentions, emoji reactions, threading, and system-generated comments for audit compliance.

Resource fields

FieldTypeDescription
idstringUnique comment identifier
bodystringComment text content
typestringComment type. See comment types
authorobjectComment author (see Author object below)
case_tokenstringParent case token (if attached to a case)
alert_tokenstringParent alert token (if attached to an alert)
check_tokenstringParent check token (if attached to a check)
parent_comment_idstringParent comment ID for threaded replies
reply_countnumberNumber of direct replies to this comment
reactionsarrayEmoji reactions (see Reaction object below)
mentioned_usersarrayUsers @mentioned in this comment
is_systembooleanWhether this is a system-generated comment
created_atstringISO 8601 timestamp of creation

Nested objects

Author object

FieldTypeDescription
idstringUser identifier
namestringDisplay name
emailstringEmail address
photo_urlstringProfile photo URL
initialsstringInitials derived from name

Reaction object

FieldTypeDescription
emojistringEmoji character
countnumberTotal reactions with this emoji
user_reactedbooleanWhether the current user reacted with this
user_namesarrayNames of users who reacted

Comment types

TypeDescription
CommentStandard user comment
DecisionCompliance decision recorded as a comment
NoteInternal note (not visible to external reviewers)
SystemSystem-generated comment (status changes, automation)

Example

{
  "id": "cmt_001",
  "body": "Reviewed the PEP match. John Doe was a local councillor from 2010-2014. No current political exposure. @sarah.johnson can you confirm the SOW documentation?",
  "type": "Comment",
  "author": {
    "id": "user_analyst01",
    "name": "Alex Thompson",
    "email": "alex@example.com",
    "photo_url": "https://example.com/photos/alex.jpg",
    "initials": "AT"
  },
  "case_token": "cas_xyz789",
  "alert_token": "alt_001",
  "check_token": null,
  "parent_comment_id": null,
  "reply_count": 2,
  "reactions": [
    {
      "emoji": "👍",
      "count": 2,
      "user_reacted": false,
      "user_names": ["Sarah Johnson", "Mike Chen"]
    }
  ],
  "mentioned_users": [{ "id": "user_sarah01", "name": "Sarah Johnson" }],
  "is_system": false,
  "created_at": "2026-02-16T11:00:00Z"
}

System comment example

{
  "id": "cmt_sys_001",
  "body": "Alert status changed from Open to Resolved. Action: Approve.",
  "type": "System",
  "author": {
    "id": "system",
    "name": "System",
    "initials": "SY"
  },
  "alert_token": "alt_001",
  "parent_comment_id": null,
  "reply_count": 0,
  "reactions": [],
  "is_system": true,
  "created_at": "2026-02-16T11:30:00Z"
}

Threading

Comments support one level of nesting. Replies reference the parent comment via parent_comment_id. Retrieve replies for a comment:
curl -X GET "https://api.zenoo.com/v1/comments/cmt_001/replies" \
  -H "Authorization: Bearer your-api-key"

Notifications

The comment system sends notifications for:
EventNotification typeRecipients
@mentionPush notificationMentioned users
Reply to commentPush notificationParent comment author
Comment createdPlatform EventAll subscribers (real-time)
EndpointMethodDescription
GET /v1/cases/{token}/commentsGETList comments for a case
GET /v1/alerts/{token}/commentsGETList comments for an alert
POST /v1/cases/{token}/commentsPOSTAdd a comment to a case
POST /v1/alerts/{token}/commentsPOSTAdd a comment to an alert
GET /v1/comments/{id}/repliesGETGet replies for a comment
POST /v1/comments/{id}/reactionsPOSTAdd a reaction to a comment
DELETE /v1/comments/{id}/reactionsDELETERemove a reaction from a comment

See also