Redmine
@webframp/redminev2026.04.30.2
01README
Redmine issue tracker integration — workflow-agnostic CRUD model.
Provides 26 model methods covering issues, projects, statuses, trackers, users, custom fields, relations, versions, time entries, watchers, search, issue categories, journal editing, and file uploads. Designed as composable primitives for building any workflow on top of Redmine.
For opinionated Kanban workflows, flow metrics, and sprint reports, see @webframp/redmine-kanban.
Quick Start
swamp extension pull @webframp/redmine
swamp model create @webframp/redmine tracker \
--global-arg host=https://your-redmine.example.org \
--global-arg apiKey=YOUR_API_KEY \
--global-arg project=your-project02Models
@webframp/redminev2026.04.30.1redmine/redmine.ts
Global Arguments
| Argument | Type | Description |
|---|---|---|
| host | string | Redmine instance URL (e.g. https://redmine.example.com) |
| apiKey | string | Redmine API key (40-character hex string) |
| project | string | Default project identifier |
| username? | string | Redmine username for X-Redmine-Username header (required by some ingress configurations) |
fn list_statuses()
List all issue statuses
fn list_trackers()
List all trackers
fn list_projects()
List all accessible projects
fn list_users(project?: string)
List project memberships (users and groups with their roles)
| Argument | Type | Description |
|---|---|---|
| project? | string | Project identifier (defaults to global project arg) |
fn list_custom_fields()
List all custom field definitions
fn list_issues(project?: string, trackerId?: number, statusId?: union, assignedToId?: union, parentId?: number, limit?: number, sort?: string)
List issues matching filters
| Argument | Type | Description |
|---|---|---|
| project? | string | Project identifier |
| trackerId? | number | Filter by tracker ID |
| statusId? | union | Filter by status ID or open/closed/* |
| assignedToId? | union | Filter by assignee ID or 'me' |
| parentId? | number | Filter by parent issue ID |
| limit? | number | Max results (default 25, max 100) |
| sort? | string | Sort field (e.g., 'updated_on:desc') |
fn get_issue(issueId: number)
Get a single issue with journals and children
| Argument | Type | Description |
|---|---|---|
| issueId | number | Issue ID |
fn create_issue(subject: string, project?: string, trackerId?: number, statusId?: number, priorityId?: number, assignedToId?: number, description?: string, parentIssueId?: number, estimatedHours?: number, customFields?: array)
Create a new issue
| Argument | Type | Description |
|---|---|---|
| subject | string | Issue subject |
| project? | string | Project identifier |
| trackerId? | number | Tracker ID |
| statusId? | number | Status ID |
| priorityId? | number | Priority ID |
| assignedToId? | number | Assignee user ID |
| description? | string | Issue description |
| parentIssueId? | number | Parent issue ID |
| estimatedHours? | number | Estimated hours |
| customFields? | array | Custom field values |
fn update_issue(issueId: number, subject?: string, trackerId?: number, statusId?: number, priorityId?: number, assignedToId?: number, description?: string, parentIssueId?: number, estimatedHours?: number, doneRatio?: number, dueDate?: string, notes?: string, customFields?: array)
Update an existing issue
| Argument | Type | Description |
|---|---|---|
| issueId | number | Issue ID to update |
| subject? | string | New subject |
| trackerId? | number | New tracker ID |
| statusId? | number | New status ID |
| priorityId? | number | New priority ID |
| assignedToId? | number | New assignee user ID |
| description? | string | New description |
| parentIssueId? | number | New parent issue ID |
| estimatedHours? | number | New estimated hours |
| doneRatio? | number | Percent done (0-100) |
| dueDate? | string | Updated due date (YYYY-MM-DD) |
| notes? | string | Journal note to add |
| customFields? | array | Custom field values to update |
fn delete_issue(issueId: number)
Delete an issue
| Argument | Type | Description |
|---|---|---|
| issueId | number | Issue ID to delete |
fn list_relations(issueId: number)
List relations for an issue
| Argument | Type | Description |
|---|---|---|
| issueId | number | Issue ID |
fn create_relation(issueId: number, issueToId: number, relationType: enum, delay?: number)
Create a relation between two issues
| Argument | Type | Description |
|---|---|---|
| issueId | number | Source issue ID |
| issueToId | number | Target issue ID |
| relationType | enum | Relation type |
| delay? | number | Delay in days (for precedes/follows) |
fn delete_relation(relationId: number)
Delete a relation
| Argument | Type | Description |
|---|---|---|
| relationId | number | Relation ID to delete |
fn list_versions(project?: string)
List project versions (milestones/sprints)
| Argument | Type | Description |
|---|---|---|
| project? | string | Project identifier (defaults to global project arg) |
fn list_time_entries(issueId?: number, project?: string, userId?: number, from?: string, to?: string, limit?: number)
List time entries, optionally filtered by issue or project
| Argument | Type | Description |
|---|---|---|
| issueId? | number | Filter by issue ID |
| project? | string | Filter by project identifier |
| userId? | number | Filter by user ID |
| from? | string | Start date (YYYY-MM-DD) |
| to? | string | End date (YYYY-MM-DD) |
| limit? | number | Max results (default 25) |
fn log_time(issueId: number, hours: number, activityId?: number, comments?: string, spentOn?: string)
Log time spent on an issue
| Argument | Type | Description |
|---|---|---|
| issueId | number | Issue ID |
| hours | number | Hours spent |
| activityId? | number | Activity ID |
| comments? | string | Comment |
| spentOn? | string | Date spent (YYYY-MM-DD, defaults to today) |
fn add_watcher(issueId: number, userId: number)
Add a watcher to an issue
| Argument | Type | Description |
|---|---|---|
| issueId | number | Issue ID |
| userId | number | User ID to add as watcher |
fn remove_watcher(issueId: number, userId: number)
Remove a watcher from an issue
| Argument | Type | Description |
|---|---|---|
| issueId | number | Issue ID |
| userId | number | User ID to remove as watcher |
fn search(query: string, project?: string, limit?: number)
Search across issues, projects, and wiki pages
| Argument | Type | Description |
|---|---|---|
| query | string | Search query |
| project? | string | Scope search to project identifier |
| limit? | number | Max results (default 25) |
fn get_version(versionId: number)
Get a single version by ID
| Argument | Type | Description |
|---|---|---|
| versionId | number | Version ID |
fn create_version(project?: string, name: string, description?: string, status?: enum, dueDate?: string, sharing?: enum, wikiPageTitle?: string)
Create a project version (milestone/sprint)
| Argument | Type | Description |
|---|---|---|
| project? | string | Project identifier (defaults to global project arg) |
| name | string | Version name |
| description? | string | Description |
| status? | enum | Version status |
| dueDate? | string | Due date (YYYY-MM-DD) |
| sharing? | enum | Sharing scope |
| wikiPageTitle? | string | Wiki page title |
fn update_version(versionId: number, name?: string, description?: string, status?: enum, dueDate?: string, sharing?: enum, wikiPageTitle?: string)
Update a version
| Argument | Type | Description |
|---|---|---|
| versionId | number | Version ID |
| name? | string | New name |
| description? | string | New description |
| status? | enum | New status |
| dueDate? | string | New due date (YYYY-MM-DD) |
| sharing? | enum | New sharing scope |
| wikiPageTitle? | string | New wiki page title |
fn delete_version(versionId: number)
Delete a version
| Argument | Type | Description |
|---|---|---|
| versionId | number | Version ID to delete |
fn update_journal(journalId: number, notes: string, privateNotes?: boolean)
Update a journal entry's notes
| Argument | Type | Description |
|---|---|---|
| journalId | number | Journal ID |
| notes | string | Updated notes content |
| privateNotes? | boolean | Mark notes as private |
fn list_issue_categories(project?: string)
List issue categories for a project
| Argument | Type | Description |
|---|---|---|
| project? | string | Project identifier (defaults to global project arg) |
fn upload_file(issueId: number, filePath: string, filename?: string, description?: string, contentType?: string)
Upload a file and attach it to an issue (two-step: upload binary, then attach token)
| Argument | Type | Description |
|---|---|---|
| issueId | number | Issue ID to attach the file to |
| filePath | string | Local file path to upload (relative to working directory) |
| filename? | string | Filename for the attachment (defaults to basename of filePath) |
| description? | string | Attachment description |
| contentType? | string | MIME type (auto-detected from filename if omitted) |
Resources
issues(30m)— List of issues matching query filters
issue_detail(30m)— Single issue with journals and children
projects(1h)— List of accessible projects
statuses(infinite)— Issue statuses (id, name, isClosed)
trackers(infinite)— Trackers (id, name, defaultStatus, description)
users(1h)— Project memberships (users and groups with roles)
custom_fields(infinite)— Custom field definitions (id, name, fieldFormat, possibleValues, ...)
relations(30m)— Issue relations (blocks, precedes, relates, etc.)
versions(1h)— Project versions (milestones/sprints)
time_entries(30m)— Time entries for issues or projects
search_results(15m)— Search results across issues, projects, and wiki
issue_categories(1h)— Issue categories for a project
03Previous Versions
2026.04.30.1May 1, 2026
Modified 1 models
2026.04.22.3Apr 23, 2026
2026.04.22.2Apr 23, 2026
2026.04.22.1Apr 22, 2026
2026.04.14.1Apr 14, 2026
04Stats
A
100 / 100
Downloads
5
Archive size
22.1 KB
- Has README or module doc2/2earned
- README has a code example1/1earned
- README is substantive1/1earned
- Most symbols documented1/1earned
- No slow types1/1earned
- Has description1/1earned
- Platform support declared (or universal)2/2earned
- License declared1/1earned
- Verified public repository2/2earned
05Platforms
06Labels