Comments API
Unified comment system for discussions across products, issues, and access requests.
Endpoints Overview
| Method | Endpoint | Description |
|---|---|---|
| GET | /catalog/spaces/{slug}/products/{product_id}/comments | List product comments |
| POST | /catalog/spaces/{slug}/products/{product_id}/comments | Create product comment |
| PUT | /catalog/spaces/{slug}/products/{product_id}/comments/{id} | Update product comment |
| DELETE | /catalog/spaces/{slug}/products/{product_id}/comments/{id} | Delete product comment |
| GET | /requests/{request_id}/comments | List request comments |
| POST | /requests/{request_id}/comments | Create request comment |
| POST | /issues/tickets/{ticket_id}/comments | Create ticket comment |
| PATCH | /issues/comments/{comment_id} | Update ticket comment |
| DELETE | /issues/comments/{comment_id} | Delete ticket comment |
Product Comments
List Comments
GET /catalog/spaces/{slug}/products/{product_id}/comments
Query Parameters
| Parameter | Type | Description |
|---|---|---|
page | integer | Page number (default: 1) |
size | integer | Items per page (default: 20) |
search | string | Search in comment content |
Response
[
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"content_markdown": "This table is great for tracking user events!",
"user": {
"id": "...",
"full_name": "Alice Johnson",
"avatar_url": "..."
},
"parent_id": null,
"replies": [
{
"id": "...",
"content_markdown": "@bob.smith agreed, we use it daily.",
"user": {...},
"parent_id": "550e8400-e29b-41d4-a716-446655440000",
"replies": [],
"created_at": "2026-01-15T11:00:00Z"
}
],
"created_at": "2026-01-15T10:30:00Z",
"updated_at": "2026-01-15T10:30:00Z"
}
]
Create Comment
POST /catalog/spaces/{slug}/products/{product_id}/comments
Request Body
{
"content_markdown": "Great documentation! @jane.doe can you review?",
"parent_id": null
}
| Field | Type | Required | Description |
|---|---|---|---|
content_markdown | string | Yes | Markdown content with @mention support |
parent_id | uuid | No | Parent comment ID for replies |
@Mentions
Use @username format in content to mention users. Mentioned users receive notifications.
{
"content_markdown": "Hey @alice.johnson, this needs your attention."
}
Update Comment
PUT /catalog/spaces/{slug}/products/{product_id}/comments/{comment_id}
Only the comment author can update their comment.
Request Body
{
"content_markdown": "Updated content here"
}
Delete Comment
DELETE /catalog/spaces/{slug}/products/{product_id}/comments/{comment_id}
Only the author or space admins can delete comments.
Response
{
"message": "Comment deleted successfully"
}
Issue Comments
Create Ticket Comment
POST /issues/tickets/{ticket_id}/comments
Request Body
{
"content_markdown": "Investigating issue now. @bob.smith found the root cause.",
"reply_to_id": null
}
| Field | Type | Required | Description |
|---|---|---|---|
content_markdown | string | Yes | Comment content |
reply_to_id | uuid | No | Parent comment for threaded replies |
Update Ticket Comment
PATCH /issues/comments/{comment_id}
{
"content_markdown": "Updated investigation findings."
}
Delete Ticket Comment
DELETE /issues/comments/{comment_id}
Returns 204 No Content on success.
Access Request Comments
List Request Comments
GET /requests/{request_id}/comments
Response
Returns a list of comments on the access request with user details.
Create Request Comment
POST /requests/{request_id}/comments
Request Body
{
"content_markdown": "Approved. @manager.name please confirm."
}
Error Responses
| Status | Description |
|---|---|
400 | Invalid comment content or parent ID |
403 | Not authorized to edit/delete comment |
404 | Comment or parent entity not found |