Skip to main content
Version: Enterprise (1.2.0)

Community API

Endpoints for the built-in issue tracker — create issues, post fixes, and vote on solutions. Available in all editions.

Issues

POST /api/community/issues

Create a new issue.

Headers:

Authorization: Bearer YOUR_JWT_TOKEN

Request Body:

{
"title": "Nginx not starting after reboot",
"description": "After last system update, nginx fails to start with error: bind() to 0.0.0.0:80 failed",
"machine_id": "abc123def456",
"tags": ["nginx", "systemd"]
}

Response 201 Created:

{
"issue": {
"id": "issue_123",
"title": "Nginx not starting after reboot",
"description": "After last system update...",
"machine_id": "abc123def456",
"tags": ["nginx", "systemd"],
"author_id": "user_456",
"author_username": "johndoe",
"status": "open",
"created_at": "2026-02-06T12:00:00Z"
}
}

GET /api/community/issues

List all issues visible to the current user.

Response:

{
"issues": [
{
"id": "issue_123",
"title": "Nginx not starting after reboot",
"status": "open",
"author_username": "johndoe",
"fix_count": 2,
"created_at": "2026-02-06T12:00:00Z"
}
]
}

GET /api/community/issues/:id

Get a specific issue with full details.

Response:

{
"issue": {
"id": "issue_123",
"title": "Nginx not starting after reboot",
"description": "After last system update...",
"machine_id": "abc123def456",
"tags": ["nginx", "systemd"],
"author_id": "user_456",
"author_username": "johndoe",
"status": "open",
"created_at": "2026-02-06T12:00:00Z",
"updated_at": "2026-02-06T14:00:00Z"
}
}

PUT /api/community/issues/:id

Update an existing issue (author or admin only).

Request Body: Any subset of issue fields to update:

{
"title": "Updated title",
"description": "Updated description",
"status": "resolved"
}

Response:

{
"issue": { ... }
}

DELETE /api/community/issues/:id

Delete an issue (author or admin only).

Response:

{
"message": "Issue deleted"
}

Fixes

GET /api/community/issues/:id/fixes

List all proposed fixes for an issue.

Response:

{
"fixes": [
{
"fix_id": "fix_789",
"issue_id": "issue_123",
"content": "Run `sudo systemctl daemon-reload && sudo systemctl start nginx`",
"author_username": "janedoe",
"likes": 5,
"liked_by_me": false,
"accepted": false,
"created_at": "2026-02-06T13:00:00Z"
}
]
}

POST /api/community/issues/:id/fixes

Post a fix for an issue.

Request Body:

{
"content": "Run `sudo systemctl daemon-reload && sudo systemctl start nginx`"
}

Response 201 Created:

{
"fix": {
"fix_id": "fix_789",
"issue_id": "issue_123",
"content": "Run `sudo systemctl daemon-reload...`",
"author_username": "janedoe",
"likes": 0,
"accepted": false,
"created_at": "2026-02-06T13:00:00Z"
}
}

POST /api/community/issues/:id/fixes/:fix_id/like

Like a fix (upvote it as helpful).

Response:

{
"message": "Fix liked"
}

DELETE /api/community/issues/:id/fixes/:fix_id/like

Remove your like from a fix.

Response:

{
"message": "Like removed"
}

POST /api/community/issues/:id/fixes/:fix_id/accept

Mark a fix as the accepted solution (issue author or admin only). This also updates the issue status to resolved.

Response:

{
"message": "Fix accepted"
}

Image Upload

POST /api/community/upload

Upload an image to attach to an issue or fix description.

Request: multipart/form-data with a file field.

Response:

{
"url": "https://your-webxterm-instance.com/uploads/image_abc123.png"
}

Use the returned URL in your issue/fix content with standard Markdown:

![Error screenshot](https://your-webxterm-instance.com/uploads/image_abc123.png)