Skip to content
This page was generated and translated with the assistance of AI. If you spot any inaccuracies, feel free to help improve it. Edit on GitHub

Issues & Tracking

Issues (also called work items) are the core work unit in OpenPR. They represent tasks, bugs, features, or any trackable piece of work within a project.

Issue Fields

FieldTypeRequiredDescription
TitlestringYesShort description of the work
DescriptionmarkdownNoDetailed description with formatting
StateenumYesWorkflow state (see Workflow)
PriorityenumNolow, medium, high, urgent
AssigneeuserNoTeam member responsible for the issue
LabelslistNoCategorization tags (see Labels)
SprintsprintNoSprint cycle the issue belongs to
Due DatedatetimeNoTarget completion date
AttachmentsfilesNoAttached files (images, docs, logs)

Issue Identifiers

Each issue has a human-readable identifier composed of the project key and a sequential number:

API-1, API-2, API-3, ...
FRONT-1, FRONT-2, ...

You can look up any issue by its identifier across all projects in the workspace.

Creating Issues

Via the Web UI

  1. Navigate to your project.
  2. Click New Issue.
  3. Fill in the title, description, and optional fields.
  4. Click Create.

Via the REST API

bash
curl -X POST http://localhost:8080/api/projects/<project_id>/issues \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <token>" \
  -d '{
    "title": "Implement user settings page",
    "description": "Add a settings page where users can update their profile.",
    "state": "todo",
    "priority": "medium",
    "assignee_id": "<user_uuid>"
  }'

Via MCP

json
{
  "method": "tools/call",
  "params": {
    "name": "work_items.create",
    "arguments": {
      "project_id": "<project_uuid>",
      "title": "Implement user settings page",
      "state": "todo",
      "priority": "medium"
    }
  }
}

Comments

Issues support threaded comments with markdown formatting and file attachments:

bash
# Add a comment
curl -X POST http://localhost:8080/api/issues/<issue_id>/comments \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <token>" \
  -d '{"content": "Fixed in commit abc123. Ready for review."}'

Comments are also available via MCP tools: comments.create, comments.list, comments.delete.

Activity Feed

Every change to an issue is recorded in the activity feed:

  • State changes
  • Assignee changes
  • Label additions/removals
  • Comments
  • Priority updates

The activity feed provides a complete audit trail for each issue.

File Attachments

Issues and comments support file attachments including images, documents, logs, and archives. Upload via the API:

bash
curl -X POST http://localhost:8080/api/v1/upload \
  -H "Authorization: Bearer <token>" \
  -F "[email protected]"

Or via MCP:

json
{
  "method": "tools/call",
  "params": {
    "name": "files.upload",
    "arguments": {
      "filename": "screenshot.png",
      "content_base64": "<base64_encoded_content>"
    }
  }
}

Supported file types: images (PNG, JPG, GIF, WebP), documents (PDF, TXT), data (JSON, CSV, XML), archives (ZIP, GZ), and logs.

OpenPR provides full-text search across all issues, comments, and proposals using PostgreSQL FTS:

bash
# Search via API
curl -H "Authorization: Bearer <token>" \
  "http://localhost:8080/api/search?q=authentication+bug"

# Search via MCP
# work_items.search: search within a project
# search.all: global search across all projects

MCP Tools

ToolParamsDescription
work_items.listproject_idList issues in a project
work_items.getwork_item_idGet issue by UUID
work_items.get_by_identifieridentifierGet by human ID (e.g., API-42)
work_items.createproject_id, titleCreate an issue
work_items.updatework_item_idUpdate any field
work_items.deletework_item_idDelete an issue
work_items.searchqueryFull-text search
comments.creatework_item_id, contentAdd a comment
comments.listwork_item_idList comments
comments.deletecomment_idDelete a comment
files.uploadfilename, content_base64Upload a file

Next Steps

Released under the Apache-2.0 License.