bugherd-mcp 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dockerignore +8 -0
- package/Dockerfile +22 -0
- package/README.md +100 -49
- package/TRANSPORT.md +97 -0
- package/dist/api/client.d.ts +214 -2
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +387 -3
- package/dist/api/client.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1433 -62
- package/dist/index.js.map +1 -1
- package/dist/stdio.d.ts +16 -0
- package/dist/stdio.d.ts.map +1 -0
- package/dist/stdio.js +17 -0
- package/dist/stdio.js.map +1 -0
- package/dist/types/bugherd.d.ts +77 -0
- package/dist/types/bugherd.d.ts.map +1 -1
- package/dist/types/bugherd.js.map +1 -1
- package/package.json +5 -3
- package/server.json +3 -3
package/.dockerignore
ADDED
package/Dockerfile
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
FROM node:22-alpine AS builder
|
|
2
|
+
|
|
3
|
+
WORKDIR /app
|
|
4
|
+
|
|
5
|
+
COPY package.json bun.lock ./
|
|
6
|
+
RUN npm install --frozen-lockfile 2>/dev/null || npm install
|
|
7
|
+
|
|
8
|
+
COPY tsconfig.json ./
|
|
9
|
+
COPY src ./src
|
|
10
|
+
|
|
11
|
+
RUN npm run build
|
|
12
|
+
|
|
13
|
+
FROM node:22-alpine
|
|
14
|
+
|
|
15
|
+
WORKDIR /app
|
|
16
|
+
|
|
17
|
+
COPY package.json ./
|
|
18
|
+
RUN npm install --omit=dev
|
|
19
|
+
|
|
20
|
+
COPY --from=builder /app/dist ./dist
|
|
21
|
+
|
|
22
|
+
ENTRYPOINT ["node", "dist/index.js"]
|
package/README.md
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
# BugHerd MCP Server
|
|
2
2
|
|
|
3
|
-
An [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) server that integrates [BugHerd](https://bugherd.com) bug tracking with AI assistants
|
|
3
|
+
An [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) server that integrates [BugHerd](https://bugherd.com) bug tracking with AI assistants.
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
- **
|
|
10
|
-
- **
|
|
7
|
+
**Complete BugHerd API v2 coverage** with 38 tools across all resource types:
|
|
8
|
+
|
|
9
|
+
- **Organization** - Get account details
|
|
10
|
+
- **Users** - List members, guests, user tasks and projects
|
|
11
|
+
- **Projects** - CRUD operations, manage members and guests
|
|
12
|
+
- **Tasks** - Full task management including feedback, archived, and taskboard views
|
|
13
|
+
- **Columns** - Custom Kanban board management
|
|
14
|
+
- **Comments** - Read and create comments
|
|
15
|
+
- **Attachments** - Manage file attachments
|
|
16
|
+
- **Webhooks** - Configure event notifications
|
|
11
17
|
|
|
12
18
|
## Installation
|
|
13
19
|
|
|
@@ -50,9 +56,9 @@ export BUGHERD_API_KEY=your-api-key-here
|
|
|
50
56
|
|
|
51
57
|
## Configuration
|
|
52
58
|
|
|
53
|
-
###
|
|
59
|
+
### CLI Configuration
|
|
54
60
|
|
|
55
|
-
Add to your
|
|
61
|
+
Add to your MCP client config:
|
|
56
62
|
|
|
57
63
|
```json
|
|
58
64
|
{
|
|
@@ -69,9 +75,9 @@ Add to your `~/.claude.json`:
|
|
|
69
75
|
}
|
|
70
76
|
```
|
|
71
77
|
|
|
72
|
-
###
|
|
78
|
+
### Desktop Apps
|
|
73
79
|
|
|
74
|
-
Add to your
|
|
80
|
+
Add to your MCP desktop app config:
|
|
75
81
|
|
|
76
82
|
```json
|
|
77
83
|
{
|
|
@@ -87,69 +93,114 @@ Add to your Claude Desktop config:
|
|
|
87
93
|
}
|
|
88
94
|
```
|
|
89
95
|
|
|
90
|
-
## Available Tools
|
|
96
|
+
## Available Tools (37)
|
|
91
97
|
|
|
92
|
-
###
|
|
98
|
+
### Organization
|
|
93
99
|
|
|
94
|
-
|
|
100
|
+
| Tool | Description |
|
|
101
|
+
| -------------------------- | -------------------------------- |
|
|
102
|
+
| `bugherd_get_organization` | Get organization/account details |
|
|
95
103
|
|
|
96
|
-
|
|
104
|
+
### Users
|
|
97
105
|
|
|
98
|
-
|
|
106
|
+
| Tool | Description |
|
|
107
|
+
| --------------------------- | --------------------------------- |
|
|
108
|
+
| `bugherd_list_users` | List all users (members + guests) |
|
|
109
|
+
| `bugherd_list_members` | List only team members |
|
|
110
|
+
| `bugherd_list_guests` | List only guests/clients |
|
|
111
|
+
| `bugherd_get_user_tasks` | Get tasks assigned to a user |
|
|
112
|
+
| `bugherd_get_user_projects` | Get projects for a user |
|
|
99
113
|
|
|
100
|
-
|
|
101
|
-
List my BugHerd projects
|
|
102
|
-
```
|
|
114
|
+
### Projects
|
|
103
115
|
|
|
104
|
-
|
|
116
|
+
| Tool | Description |
|
|
117
|
+
| ------------------------------ | ------------------------------- |
|
|
118
|
+
| `bugherd_list_projects` | List all projects |
|
|
119
|
+
| `bugherd_list_active_projects` | List only active projects |
|
|
120
|
+
| `bugherd_get_project` | Get project details |
|
|
121
|
+
| `bugherd_create_project` | Create a new project |
|
|
122
|
+
| `bugherd_update_project` | Update project settings |
|
|
123
|
+
| `bugherd_delete_project` | ⚠️ Delete a project permanently |
|
|
124
|
+
| `bugherd_add_member` | Add a member to a project |
|
|
125
|
+
| `bugherd_add_guest` | Add a guest to a project |
|
|
105
126
|
|
|
106
|
-
|
|
127
|
+
### Tasks
|
|
107
128
|
|
|
108
|
-
|
|
109
|
-
|
|
|
110
|
-
|
|
111
|
-
| `
|
|
112
|
-
| `
|
|
113
|
-
| `
|
|
114
|
-
| `
|
|
115
|
-
| `
|
|
129
|
+
| Tool | Description |
|
|
130
|
+
| ------------------------------ | ----------------------------------------------- |
|
|
131
|
+
| `bugherd_list_tasks` | List tasks with filters (status, priority, tag) |
|
|
132
|
+
| `bugherd_list_feedback_tasks` | List unprocessed feedback tasks |
|
|
133
|
+
| `bugherd_list_archived_tasks` | List archived tasks |
|
|
134
|
+
| `bugherd_list_taskboard_tasks` | List taskboard tasks |
|
|
135
|
+
| `bugherd_get_task` | Get task details with metadata |
|
|
136
|
+
| `bugherd_get_task_global` | Get task by global ID |
|
|
137
|
+
| `bugherd_get_task_by_local_id` | Get task by local ID (#123) |
|
|
138
|
+
| `bugherd_create_task` | Create a new task |
|
|
139
|
+
| `bugherd_move_tasks` | Move tasks between projects |
|
|
140
|
+
| `bugherd_update_task` | Update task status/priority/description |
|
|
116
141
|
|
|
117
|
-
|
|
142
|
+
### Columns
|
|
118
143
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
144
|
+
| Tool | Description |
|
|
145
|
+
| ----------------------- | -------------------------------------- |
|
|
146
|
+
| `bugherd_list_columns` | List project columns (Kanban statuses) |
|
|
147
|
+
| `bugherd_get_column` | Get column details |
|
|
148
|
+
| `bugherd_create_column` | Create a new column |
|
|
149
|
+
| `bugherd_update_column` | Update column name/position |
|
|
150
|
+
|
|
151
|
+
### Comments
|
|
152
|
+
|
|
153
|
+
| Tool | Description |
|
|
154
|
+
| ------------------------ | ----------------------- |
|
|
155
|
+
| `bugherd_list_comments` | List comments on a task |
|
|
156
|
+
| `bugherd_create_comment` | Add a comment to a task |
|
|
157
|
+
|
|
158
|
+
### Attachments
|
|
122
159
|
|
|
123
|
-
|
|
160
|
+
| Tool | Description |
|
|
161
|
+
| --------------------------- | -------------------------- |
|
|
162
|
+
| `bugherd_list_attachments` | List task attachments |
|
|
163
|
+
| `bugherd_get_attachment` | Get attachment details |
|
|
164
|
+
| `bugherd_create_attachment` | Create attachment from URL |
|
|
165
|
+
| `bugherd_delete_attachment` | ⚠️ Delete an attachment |
|
|
124
166
|
|
|
125
|
-
|
|
167
|
+
### Webhooks
|
|
126
168
|
|
|
127
|
-
|
|
128
|
-
|
|
|
129
|
-
|
|
130
|
-
| `
|
|
131
|
-
| `
|
|
169
|
+
| Tool | Description |
|
|
170
|
+
| ------------------------ | ------------------------ |
|
|
171
|
+
| `bugherd_list_webhooks` | List configured webhooks |
|
|
172
|
+
| `bugherd_create_webhook` | Create a webhook |
|
|
173
|
+
| `bugherd_delete_webhook` | ⚠️ Delete a webhook |
|
|
132
174
|
|
|
133
|
-
|
|
175
|
+
## Usage Examples
|
|
176
|
+
|
|
177
|
+
### List projects and tasks
|
|
134
178
|
|
|
135
179
|
```
|
|
136
|
-
|
|
180
|
+
List my BugHerd projects
|
|
181
|
+
Show me all critical bugs in project 12345
|
|
137
182
|
```
|
|
138
183
|
|
|
139
|
-
###
|
|
184
|
+
### Create and manage tasks
|
|
140
185
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
| `project_id` | number | Yes | The BugHerd project ID |
|
|
147
|
-
| `task_id` | number | Yes | The task ID |
|
|
186
|
+
```
|
|
187
|
+
Create a task in project 12345: "Fix the login button alignment"
|
|
188
|
+
Move task 678 from project 12345 to project 67890
|
|
189
|
+
Update task 678 status to "done"
|
|
190
|
+
```
|
|
148
191
|
|
|
149
|
-
|
|
192
|
+
### Work with comments
|
|
150
193
|
|
|
151
194
|
```
|
|
152
195
|
Show comments on task 678 in project 12345
|
|
196
|
+
Add a comment to task 678: "Fixed in latest deploy"
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### Manage webhooks
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
List all webhooks
|
|
203
|
+
Create a webhook for task_create events pointing to https://example.com/webhook
|
|
153
204
|
```
|
|
154
205
|
|
|
155
206
|
## Development
|
package/TRANSPORT.md
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Transport Configuration
|
|
2
|
+
|
|
3
|
+
## Current: Dual Mode (HTTP + stdio)
|
|
4
|
+
|
|
5
|
+
The BugHerd MCP server supports two transport modes:
|
|
6
|
+
|
|
7
|
+
### HTTP Mode (Shared - Recommended)
|
|
8
|
+
|
|
9
|
+
One server instance serves multiple Claude Code sessions.
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Start HTTP server on port 3003
|
|
13
|
+
PORT=3003 BUGHERD_API_KEY=your_key node dist/index.js
|
|
14
|
+
|
|
15
|
+
# Or use the startup script
|
|
16
|
+
~/.claude/scripts/start-shared-mcps.sh
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
**Endpoints:**
|
|
20
|
+
|
|
21
|
+
- `http://localhost:3003/sse` - SSE connection for MCP
|
|
22
|
+
- `http://localhost:3003/health` - Health check (returns session count)
|
|
23
|
+
|
|
24
|
+
**Claude Code config (~/.claude.json):**
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
{
|
|
28
|
+
"mcpServers": {
|
|
29
|
+
"bugherd": {
|
|
30
|
+
"type": "sse",
|
|
31
|
+
"url": "http://localhost:3003/sse"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### stdio Mode (Default)
|
|
38
|
+
|
|
39
|
+
One process per Claude Code session (original behavior).
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# Run in stdio mode (no PORT env var)
|
|
43
|
+
BUGHERD_API_KEY=your_key node dist/index.js
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Claude Code config (~/.claude.json):**
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"mcpServers": {
|
|
51
|
+
"bugherd": {
|
|
52
|
+
"type": "stdio",
|
|
53
|
+
"command": "node",
|
|
54
|
+
"args": ["/path/to/dist/index.js"],
|
|
55
|
+
"env": {
|
|
56
|
+
"BUGHERD_API_KEY": "your_key"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Why HTTP Mode?
|
|
64
|
+
|
|
65
|
+
- **Reduces processes:** 11 Claude sessions = 1 BugHerd process (vs 11)
|
|
66
|
+
- **Same security:** localhost only, no external access
|
|
67
|
+
- **Same functionality:** All tools work identically (stateless API calls)
|
|
68
|
+
- **Better resource usage:** Less CPU/RAM overhead
|
|
69
|
+
|
|
70
|
+
## Rollback to stdio-only
|
|
71
|
+
|
|
72
|
+
If you need to revert to stdio-only mode:
|
|
73
|
+
|
|
74
|
+
1. Remove the `PORT` environment variable
|
|
75
|
+
2. Update Claude Code config to use stdio:
|
|
76
|
+
```json
|
|
77
|
+
"bugherd": {
|
|
78
|
+
"type": "stdio",
|
|
79
|
+
"command": "node",
|
|
80
|
+
"args": ["/Users/berckan/Dev/Personal/bugherd-mcp/dist/index.js"],
|
|
81
|
+
"env": {
|
|
82
|
+
"BUGHERD_API_KEY": "hvb7fsgautxrgaai3ccwrg"
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Session Isolation
|
|
88
|
+
|
|
89
|
+
HTTP mode maintains **complete session isolation**:
|
|
90
|
+
|
|
91
|
+
- Each SSE connection gets a unique session ID
|
|
92
|
+
- Sessions don't share state
|
|
93
|
+
- All tools are stateless (API calls to BugHerd)
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
**Last Updated:** 2026-01-28
|
package/dist/api/client.d.ts
CHANGED
|
@@ -5,34 +5,246 @@
|
|
|
5
5
|
* Authentication: Basic HTTP Auth with API key as user, 'x' as password
|
|
6
6
|
* Rate Limit: 60 requests/minute average, bursts of 10
|
|
7
7
|
*/
|
|
8
|
-
import type { BugherdProjectsResponse, BugherdProjectResponse, BugherdTasksResponse, BugherdTaskResponse, BugherdCommentsResponse } from "../types/bugherd.js";
|
|
8
|
+
import type { BugherdOrganizationResponse, BugherdUsersResponse, BugherdMembersResponse, BugherdGuestsResponse, BugherdProjectsResponse, BugherdProjectResponse, BugherdTasksResponse, BugherdTaskResponse, BugherdCommentsResponse, BugherdAttachmentsResponse, BugherdAttachmentResponse, BugherdWebhooksResponse, BugherdWebhookResponse, BugherdColumnResponse, BugherdColumnsResponse, BugherdWebhookEvent } from "../types/bugherd.js";
|
|
9
|
+
/**
|
|
10
|
+
* Get organization/account details
|
|
11
|
+
*/
|
|
12
|
+
export declare function getOrganization(): Promise<BugherdOrganizationResponse>;
|
|
13
|
+
/**
|
|
14
|
+
* List all users (members + guests)
|
|
15
|
+
*/
|
|
16
|
+
export declare function listUsers(): Promise<BugherdUsersResponse>;
|
|
17
|
+
/**
|
|
18
|
+
* List only team members
|
|
19
|
+
*/
|
|
20
|
+
export declare function listMembers(): Promise<BugherdMembersResponse>;
|
|
21
|
+
/**
|
|
22
|
+
* List only guests/clients
|
|
23
|
+
*/
|
|
24
|
+
export declare function listGuests(): Promise<BugherdGuestsResponse>;
|
|
25
|
+
export interface ListUserTasksOptions {
|
|
26
|
+
status?: string;
|
|
27
|
+
priority?: "critical" | "important" | "normal" | "minor";
|
|
28
|
+
page?: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get tasks assigned to a specific user
|
|
32
|
+
*/
|
|
33
|
+
export declare function getUserTasks(userId: number, options?: ListUserTasksOptions): Promise<BugherdTasksResponse>;
|
|
34
|
+
/**
|
|
35
|
+
* Get projects for a specific user
|
|
36
|
+
*/
|
|
37
|
+
export declare function getUserProjects(userId: number): Promise<BugherdProjectsResponse>;
|
|
9
38
|
/**
|
|
10
39
|
* List all projects accessible to the authenticated user
|
|
11
40
|
*/
|
|
12
41
|
export declare function listProjects(): Promise<BugherdProjectsResponse>;
|
|
42
|
+
/**
|
|
43
|
+
* List only active projects
|
|
44
|
+
*/
|
|
45
|
+
export declare function listActiveProjects(): Promise<BugherdProjectsResponse>;
|
|
13
46
|
/**
|
|
14
47
|
* Get a single project by ID
|
|
15
48
|
*/
|
|
16
49
|
export declare function getProject(projectId: number): Promise<BugherdProjectResponse>;
|
|
50
|
+
export interface CreateProjectData {
|
|
51
|
+
name: string;
|
|
52
|
+
devurl: string;
|
|
53
|
+
is_active?: boolean;
|
|
54
|
+
is_public?: boolean;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Create a new project
|
|
58
|
+
*/
|
|
59
|
+
export declare function createProject(data: CreateProjectData): Promise<BugherdProjectResponse>;
|
|
60
|
+
export interface UpdateProjectData {
|
|
61
|
+
name?: string;
|
|
62
|
+
devurl?: string;
|
|
63
|
+
is_active?: boolean;
|
|
64
|
+
is_public?: boolean;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Update a project
|
|
68
|
+
*/
|
|
69
|
+
export declare function updateProject(projectId: number, data: UpdateProjectData): Promise<BugherdProjectResponse>;
|
|
70
|
+
/**
|
|
71
|
+
* Delete a project (DESTRUCTIVE)
|
|
72
|
+
*/
|
|
73
|
+
export declare function deleteProject(projectId: number): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* Add a member to a project
|
|
76
|
+
*/
|
|
77
|
+
export declare function addMember(projectId: number, userId: number): Promise<void>;
|
|
78
|
+
/**
|
|
79
|
+
* Add a guest/client to a project
|
|
80
|
+
*/
|
|
81
|
+
export declare function addGuest(projectId: number, userIdOrEmail: number | string): Promise<void>;
|
|
17
82
|
export interface ListTasksOptions {
|
|
18
|
-
status?:
|
|
83
|
+
status?: string;
|
|
19
84
|
priority?: "critical" | "important" | "normal" | "minor";
|
|
20
85
|
tag?: string;
|
|
21
86
|
assignedTo?: number;
|
|
22
87
|
page?: number;
|
|
23
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Get column mappings for a project (cached)
|
|
91
|
+
*/
|
|
92
|
+
export declare function getColumnMappings(projectId: number): Promise<{
|
|
93
|
+
idToName: Map<number, string>;
|
|
94
|
+
nameToId: Map<string, number>;
|
|
95
|
+
}>;
|
|
96
|
+
/**
|
|
97
|
+
* Get status name from status_id using project columns
|
|
98
|
+
*/
|
|
99
|
+
export declare function getStatusNameForProject(projectId: number, statusId: number): Promise<string>;
|
|
24
100
|
/**
|
|
25
101
|
* List tasks for a project with optional filters
|
|
102
|
+
* Filters are applied client-side because BugHerd API doesn't reliably filter by custom column names
|
|
26
103
|
*/
|
|
27
104
|
export declare function listTasks(projectId: number, options?: ListTasksOptions): Promise<BugherdTasksResponse>;
|
|
28
105
|
/**
|
|
29
106
|
* Get a single task by ID
|
|
30
107
|
*/
|
|
31
108
|
export declare function getTask(projectId: number, taskId: number): Promise<BugherdTaskResponse>;
|
|
109
|
+
/**
|
|
110
|
+
* Get a task globally (without project_id)
|
|
111
|
+
*/
|
|
112
|
+
export declare function getTaskGlobal(taskId: number): Promise<BugherdTaskResponse>;
|
|
113
|
+
/**
|
|
114
|
+
* Get a task by local ID (#123)
|
|
115
|
+
*/
|
|
116
|
+
export declare function getTaskByLocalId(projectId: number, localTaskId: number): Promise<BugherdTaskResponse>;
|
|
117
|
+
/**
|
|
118
|
+
* List feedback tasks (unprocessed/new)
|
|
119
|
+
*/
|
|
120
|
+
export declare function listFeedbackTasks(projectId: number, page?: number): Promise<BugherdTasksResponse>;
|
|
121
|
+
/**
|
|
122
|
+
* List archived tasks
|
|
123
|
+
*/
|
|
124
|
+
export declare function listArchivedTasks(projectId: number, page?: number): Promise<BugherdTasksResponse>;
|
|
125
|
+
/**
|
|
126
|
+
* List taskboard tasks (not feedback, not archived)
|
|
127
|
+
*/
|
|
128
|
+
export declare function listTaskboardTasks(projectId: number, page?: number): Promise<BugherdTasksResponse>;
|
|
129
|
+
export interface CreateTaskData {
|
|
130
|
+
description: string;
|
|
131
|
+
priority?: "critical" | "important" | "normal" | "minor";
|
|
132
|
+
status?: string;
|
|
133
|
+
tag_names?: string[];
|
|
134
|
+
assigned_to_id?: number;
|
|
135
|
+
requester_email?: string;
|
|
136
|
+
external_id?: string;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Create a new task
|
|
140
|
+
*/
|
|
141
|
+
export declare function createTask(projectId: number, data: CreateTaskData): Promise<BugherdTaskResponse>;
|
|
142
|
+
/**
|
|
143
|
+
* Move tasks between projects
|
|
144
|
+
*/
|
|
145
|
+
export declare function moveTasks(projectId: number, taskIds: number[], destinationProjectId: number): Promise<void>;
|
|
146
|
+
export interface UpdateTaskOptions {
|
|
147
|
+
status?: string;
|
|
148
|
+
priority?: "critical" | "important" | "normal" | "minor";
|
|
149
|
+
description?: string;
|
|
150
|
+
assigned_to_id?: number | null;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Update a task's status, priority, description, or assignee
|
|
154
|
+
* BugHerd API expects status/priority as strings, not IDs
|
|
155
|
+
*/
|
|
156
|
+
export declare function updateTask(projectId: number, taskId: number, options: UpdateTaskOptions): Promise<BugherdTaskResponse & {
|
|
157
|
+
_debug?: {
|
|
158
|
+
request: unknown;
|
|
159
|
+
rawResponse?: string;
|
|
160
|
+
};
|
|
161
|
+
}>;
|
|
162
|
+
/**
|
|
163
|
+
* List all columns (statuses) for a project
|
|
164
|
+
* Projects with custom Kanban boards have custom column IDs
|
|
165
|
+
*/
|
|
166
|
+
export declare function listColumns(projectId: number): Promise<BugherdColumnsResponse>;
|
|
167
|
+
/**
|
|
168
|
+
* Get a single column by ID
|
|
169
|
+
*/
|
|
170
|
+
export declare function getColumn(projectId: number, columnId: number): Promise<BugherdColumnResponse>;
|
|
171
|
+
export interface CreateColumnData {
|
|
172
|
+
name: string;
|
|
173
|
+
position?: number;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Create a new column
|
|
177
|
+
*/
|
|
178
|
+
export declare function createColumn(projectId: number, data: CreateColumnData): Promise<BugherdColumnResponse>;
|
|
179
|
+
export interface UpdateColumnData {
|
|
180
|
+
name?: string;
|
|
181
|
+
position?: number;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Update a column
|
|
185
|
+
*/
|
|
186
|
+
export declare function updateColumn(projectId: number, columnId: number, data: UpdateColumnData): Promise<BugherdColumnResponse>;
|
|
32
187
|
/**
|
|
33
188
|
* List comments for a task
|
|
34
189
|
*/
|
|
35
190
|
export declare function listComments(projectId: number, taskId: number): Promise<BugherdCommentsResponse>;
|
|
191
|
+
export interface CreateCommentData {
|
|
192
|
+
text: string;
|
|
193
|
+
user_id?: number;
|
|
194
|
+
email?: string;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Create a comment on a task
|
|
198
|
+
*/
|
|
199
|
+
export declare function createComment(projectId: number, taskId: number, data: CreateCommentData): Promise<{
|
|
200
|
+
comment: {
|
|
201
|
+
id: number;
|
|
202
|
+
text: string;
|
|
203
|
+
created_at: string;
|
|
204
|
+
};
|
|
205
|
+
}>;
|
|
206
|
+
/**
|
|
207
|
+
* List attachments for a task
|
|
208
|
+
*/
|
|
209
|
+
export declare function listAttachments(projectId: number, taskId: number): Promise<BugherdAttachmentsResponse>;
|
|
210
|
+
/**
|
|
211
|
+
* Get a single attachment
|
|
212
|
+
*/
|
|
213
|
+
export declare function getAttachment(projectId: number, taskId: number, attachmentId: number): Promise<BugherdAttachmentResponse>;
|
|
214
|
+
export interface CreateAttachmentData {
|
|
215
|
+
file_name: string;
|
|
216
|
+
url: string;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Create an attachment from a URL
|
|
220
|
+
*/
|
|
221
|
+
export declare function createAttachment(projectId: number, taskId: number, data: CreateAttachmentData): Promise<BugherdAttachmentResponse>;
|
|
222
|
+
/**
|
|
223
|
+
* Upload a file as attachment (multipart/form-data)
|
|
224
|
+
* Note: Requires special handling for file upload
|
|
225
|
+
*/
|
|
226
|
+
export declare function uploadAttachment(projectId: number, taskId: number, fileName: string, fileContent: ArrayBuffer | Uint8Array, mimeType?: string): Promise<BugherdAttachmentResponse>;
|
|
227
|
+
/**
|
|
228
|
+
* Delete an attachment (DESTRUCTIVE)
|
|
229
|
+
*/
|
|
230
|
+
export declare function deleteAttachment(projectId: number, taskId: number, attachmentId: number): Promise<void>;
|
|
231
|
+
/**
|
|
232
|
+
* List all webhooks
|
|
233
|
+
*/
|
|
234
|
+
export declare function listWebhooks(): Promise<BugherdWebhooksResponse>;
|
|
235
|
+
export interface CreateWebhookData {
|
|
236
|
+
event: BugherdWebhookEvent;
|
|
237
|
+
target_url: string;
|
|
238
|
+
project_id?: number;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Create a webhook
|
|
242
|
+
*/
|
|
243
|
+
export declare function createWebhook(data: CreateWebhookData): Promise<BugherdWebhookResponse>;
|
|
244
|
+
/**
|
|
245
|
+
* Delete a webhook (DESTRUCTIVE)
|
|
246
|
+
*/
|
|
247
|
+
export declare function deleteWebhook(webhookId: number): Promise<void>;
|
|
36
248
|
/**
|
|
37
249
|
* Verify API connection by fetching organization info
|
|
38
250
|
*/
|
package/dist/api/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
|