@devpad/api 1.0.1

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/README.md ADDED
@@ -0,0 +1,149 @@
1
+ # @devpad/api
2
+
3
+ TypeScript client library for the Devpad API - project and task management made simple.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @devpad/api
9
+ # or
10
+ yarn add @devpad/api
11
+ # or
12
+ bun add @devpad/api
13
+ ```
14
+
15
+ ## Quick Start
16
+
17
+ ```typescript
18
+ import DevpadApiClient from '@devpad/api';
19
+
20
+ const client = new DevpadApiClient({
21
+ api_key: 'your-api-key-here',
22
+ base_url: 'https://devpad.tools/api/v0' // optional, defaults to localhost:4321
23
+ });
24
+
25
+ // Create a project
26
+ const project = await client.projects.create({
27
+ name: 'My New Project',
28
+ description: 'A project created via API',
29
+ visibility: 'private'
30
+ });
31
+
32
+ // Create a task
33
+ const task = await client.tasks.create({
34
+ project_id: project.data.project_id,
35
+ title: 'Implement new feature',
36
+ description: 'Add user authentication',
37
+ status: 'pending',
38
+ priority: 'high',
39
+ tags: ['feature', 'auth']
40
+ });
41
+ ```
42
+
43
+ ## API Reference
44
+
45
+ ### DevpadApiClient
46
+
47
+ Main client class that provides access to all API endpoints.
48
+
49
+ ```typescript
50
+ const client = new DevpadApiClient({
51
+ api_key: string; // Required: Your Devpad API key
52
+ base_url?: string; // Optional: API base URL (defaults to localhost:4321/api/v0)
53
+ });
54
+ ```
55
+
56
+ ### Projects API
57
+
58
+ #### `client.projects.list()`
59
+ Get all projects for the authenticated user.
60
+
61
+ #### `client.projects.get(id: string)`
62
+ Get a specific project by ID.
63
+
64
+ #### `client.projects.getByName(name: string)`
65
+ Get a project by name.
66
+
67
+ #### `client.projects.create(data: ProjectCreate)`
68
+ Create a new project.
69
+
70
+ #### `client.projects.update(project_id: string, data: Partial<ProjectUpdate>)`
71
+ Update an existing project.
72
+
73
+ #### `client.projects.upsert(data: ProjectUpsert)`
74
+ Create or update a project (unified endpoint).
75
+
76
+ ### Tasks API
77
+
78
+ #### `client.tasks.list(options?: { project_id?: string; tag_id?: string })`
79
+ Get tasks, optionally filtered by project or tag.
80
+
81
+ #### `client.tasks.get(id: string)`
82
+ Get a specific task by ID.
83
+
84
+ #### `client.tasks.getByProject(project_id: string)`
85
+ Get all tasks for a specific project.
86
+
87
+ #### `client.tasks.create(data: TaskCreate)`
88
+ Create a new task.
89
+
90
+ #### `client.tasks.update(task_id: string, data: Partial<TaskUpdate>)`
91
+ Update an existing task.
92
+
93
+ #### `client.tasks.upsert(data: TaskUpsert)`
94
+ Create or update a task (unified endpoint).
95
+
96
+ ### Types
97
+
98
+ The library exports TypeScript types for all API operations:
99
+
100
+ ```typescript
101
+ import {
102
+ ProjectType,
103
+ TaskType,
104
+ TagType,
105
+ ProjectCreate,
106
+ ProjectUpdate,
107
+ ProjectUpsert,
108
+ TaskCreate,
109
+ TaskUpdate,
110
+ TaskUpsert,
111
+ ApiResponse
112
+ } from '@devpad/api';
113
+ ```
114
+
115
+ ### Error Handling
116
+
117
+ The client throws typed errors for different failure scenarios:
118
+
119
+ ```typescript
120
+ import { ApiError, AuthenticationError, NetworkError } from '@devpad/api';
121
+
122
+ try {
123
+ await client.projects.create({ name: 'Test Project' });
124
+ } catch (error) {
125
+ if (error instanceof AuthenticationError) {
126
+ console.error('Invalid API key');
127
+ } else if (error instanceof ApiError) {
128
+ console.error('API Error:', error.message, error.statusCode);
129
+ } else if (error instanceof NetworkError) {
130
+ console.error('Network Error:', error.message);
131
+ }
132
+ }
133
+ ```
134
+
135
+ ## Authentication
136
+
137
+ To use this API client, you need a Devpad API key. You can generate one through the Devpad web interface at your account settings.
138
+
139
+ ## Development
140
+
141
+ This package is built with TypeScript and uses Bun for development. The source code is available at [github.com/f0rbit/devpad](https://github.com/f0rbit/devpad).
142
+
143
+ ## License
144
+
145
+ MIT
146
+
147
+ ## Support
148
+
149
+ For issues and feature requests, please visit the [GitHub repository](https://github.com/f0rbit/devpad/issues).
@@ -0,0 +1,337 @@
1
+ import type { Project, ProjectConfig, SaveConfigRequest, TaskWithDetails, UpsertProject, UpsertTag, UpsertTodo, Milestone, Goal, HistoryAction, TagWithTypedColor, ApiKey } from "@devpad/schema";
2
+ import { type Result } from "./result";
3
+ /**
4
+ * Authentication mode for the API client
5
+ */
6
+ export type AuthMode = "session" | "key";
7
+ /**
8
+ * API client with Result-wrapped operations for clean error handling
9
+ * All methods return Result<T, name> types with context-aware property names
10
+ */
11
+ export declare class ApiClient {
12
+ private readonly clients;
13
+ private _api_key;
14
+ private _auth_mode;
15
+ constructor(options: {
16
+ base_url?: string;
17
+ api_key: string;
18
+ auth_mode?: AuthMode;
19
+ max_history_size?: number;
20
+ });
21
+ /**
22
+ * Auth namespace with Result-wrapped operations
23
+ */
24
+ readonly auth: {
25
+ /**
26
+ * Get current session information
27
+ */
28
+ session: () => Promise<Result<{
29
+ authenticated: boolean;
30
+ user: any;
31
+ session: any;
32
+ }, "session">>;
33
+ /**
34
+ * Login (redirect to OAuth)
35
+ */
36
+ login: () => Promise<Result<void, "result">>;
37
+ /**
38
+ * Logout
39
+ */
40
+ logout: () => Promise<Result<void, "result">>;
41
+ /**
42
+ * API key management
43
+ */
44
+ keys: {
45
+ /**
46
+ * List all API keys
47
+ */
48
+ list: () => Promise<Result<ApiKey[], "keys">>;
49
+ /**
50
+ * Generate a new API key
51
+ */
52
+ create: (name?: string) => Promise<Result<{
53
+ message: string;
54
+ key: string;
55
+ }, "key">>;
56
+ /**
57
+ * Revoke an API key
58
+ */
59
+ revoke: (key_id: string) => Promise<Result<{
60
+ message: string;
61
+ success: boolean;
62
+ }, "result">>;
63
+ /**
64
+ * Remove an API key (alias for revoke)
65
+ */
66
+ remove: (key_id: string) => Promise<Result<{
67
+ message: string;
68
+ success: boolean;
69
+ }, "result">>;
70
+ };
71
+ };
72
+ /**
73
+ * Projects namespace with Result-wrapped operations
74
+ */
75
+ readonly projects: {
76
+ /**
77
+ * List projects with optional filtering
78
+ */
79
+ list: (filters?: {
80
+ private?: boolean;
81
+ }) => Promise<Result<Project[], "projects">>;
82
+ /**
83
+ * Get project map
84
+ */
85
+ map: (filters?: {
86
+ private?: boolean;
87
+ }) => Promise<Result<Record<string, Project>, "project_map">>;
88
+ /**
89
+ * Get project by ID
90
+ */
91
+ find: (id: string) => Promise<Result<Project | null, "project">>;
92
+ /**
93
+ * Get project by name
94
+ */
95
+ getByName: (name: string) => Promise<Result<Project, "project">>;
96
+ /**
97
+ * Get project by ID (throws if not found)
98
+ */
99
+ getById: (id: string) => Promise<Result<Project, "project">>;
100
+ /**
101
+ * Create a new project
102
+ */
103
+ create: (data: Omit<UpsertProject, "id">) => Promise<Result<Project, "project">>;
104
+ /**
105
+ * Update an existing project
106
+ */
107
+ update: (idOrData: string | UpsertProject, changes?: Partial<Omit<UpsertProject, "id" | "project_id">>) => Promise<Result<Project, "project">>;
108
+ /**
109
+ * Project configuration operations
110
+ */
111
+ config: {
112
+ /**
113
+ * Get project configuration
114
+ */
115
+ load: (project_id: string) => Promise<Result<ProjectConfig | null, "config">>;
116
+ /**
117
+ * Save project configuration
118
+ */
119
+ save: (request: SaveConfigRequest) => Promise<Result<void, "result">>;
120
+ };
121
+ /**
122
+ * Scanning operations
123
+ */
124
+ scan: {
125
+ /**
126
+ * Update scan status
127
+ */
128
+ updateStatus: (project_id: string, data: any) => Promise<Result<void, "result">>;
129
+ };
130
+ /**
131
+ * Get project history
132
+ */
133
+ history: (project_id: string) => Promise<Result<any[], "history">>;
134
+ /**
135
+ * Legacy methods (keeping for compatibility)
136
+ */
137
+ upsert: (data: UpsertProject) => Promise<Result<Project, "project">>;
138
+ /**
139
+ * Fetch project specification from GitHub
140
+ */
141
+ specification: (project_id: string) => Promise<Result<string, "specification">>;
142
+ /**
143
+ * Delete project (soft delete)
144
+ */
145
+ deleteProject: (project: Project) => Promise<Result<void, "result">>;
146
+ };
147
+ /**
148
+ * Milestones namespace with Result-wrapped operations
149
+ */
150
+ readonly milestones: {
151
+ /**
152
+ * List milestones for authenticated user
153
+ */
154
+ list: () => Promise<Result<Milestone[], "milestones">>;
155
+ /**
156
+ * Get milestones by project ID
157
+ */
158
+ getByProject: (project_id: string) => Promise<Result<Milestone[], "milestones">>;
159
+ /**
160
+ * Get milestone by ID
161
+ */
162
+ find: (id: string) => Promise<Result<Milestone | null, "milestone">>;
163
+ /**
164
+ * Create new milestone
165
+ */
166
+ create: (data: {
167
+ project_id: string;
168
+ name: string;
169
+ description?: string;
170
+ target_time?: string;
171
+ target_version?: string;
172
+ }) => Promise<Result<Milestone, "milestone">>;
173
+ /**
174
+ * Update milestone
175
+ */
176
+ update: (id: string, data: {
177
+ name?: string;
178
+ description?: string;
179
+ target_time?: string;
180
+ target_version?: string;
181
+ }) => Promise<Result<Milestone, "milestone">>;
182
+ /**
183
+ * Delete milestone (soft delete)
184
+ */
185
+ delete: (id: string) => Promise<Result<{
186
+ success: boolean;
187
+ message: string;
188
+ }, "result">>;
189
+ /**
190
+ * Get goals for a milestone
191
+ */
192
+ goals: (id: string) => Promise<Result<Goal[], "goals">>;
193
+ };
194
+ /**
195
+ * Goals namespace with Result-wrapped operations
196
+ */
197
+ readonly goals: {
198
+ /**
199
+ * List goals for authenticated user
200
+ */
201
+ list: () => Promise<Result<Goal[], "goals">>;
202
+ /**
203
+ * Get goal by ID
204
+ */
205
+ find: (id: string) => Promise<Result<Goal | null, "goal">>;
206
+ /**
207
+ * Create new goal
208
+ */
209
+ create: (data: {
210
+ milestone_id: string;
211
+ name: string;
212
+ description?: string;
213
+ target_time?: string;
214
+ }) => Promise<Result<Goal, "goal">>;
215
+ /**
216
+ * Update goal
217
+ */
218
+ update: (id: string, data: {
219
+ name?: string;
220
+ description?: string;
221
+ target_time?: string;
222
+ }) => Promise<Result<Goal, "goal">>;
223
+ /**
224
+ * Delete goal (soft delete)
225
+ */
226
+ delete: (id: string) => Promise<Result<{
227
+ success: boolean;
228
+ message: string;
229
+ }, "result">>;
230
+ };
231
+ /**
232
+ * Tasks namespace with Result-wrapped operations
233
+ */
234
+ readonly tasks: {
235
+ /**
236
+ * List tasks with optional filtering
237
+ */
238
+ list: (filters?: {
239
+ project_id?: string;
240
+ tag_id?: string;
241
+ }) => Promise<Result<TaskWithDetails[], "tasks">>;
242
+ /**
243
+ * Get task by ID
244
+ */
245
+ find: (id: string) => Promise<Result<TaskWithDetails | null, "task">>;
246
+ /**
247
+ * Get tasks by project ID
248
+ */
249
+ getByProject: (project_id: string) => Promise<Result<TaskWithDetails[], "tasks">>;
250
+ /**
251
+ * Create a new task
252
+ */
253
+ create: (data: Omit<UpsertTodo, "id"> & {
254
+ tags?: UpsertTag[];
255
+ }) => Promise<Result<TaskWithDetails, "task">>;
256
+ /**
257
+ * Update an existing task
258
+ */
259
+ update: (id: string, changes: Partial<Omit<UpsertTodo, "id">> & {
260
+ tags?: UpsertTag[];
261
+ }) => Promise<Result<TaskWithDetails, "task">>;
262
+ /**
263
+ * Upsert task (create or update)
264
+ */
265
+ upsert: (data: UpsertTodo & {
266
+ tags?: UpsertTag[];
267
+ }) => Promise<Result<TaskWithDetails, "task">>;
268
+ /**
269
+ * Save tags for tasks
270
+ */
271
+ saveTags: (data: any) => Promise<Result<void, "result">>;
272
+ /**
273
+ * Delete task (soft delete)
274
+ */
275
+ deleteTask: (task: TaskWithDetails) => Promise<Result<void, "result">>;
276
+ /**
277
+ * Task history operations
278
+ */
279
+ history: {
280
+ /**
281
+ * Get task history by task ID
282
+ */
283
+ get: (task_id: string) => Promise<Result<HistoryAction[], "history">>;
284
+ };
285
+ };
286
+ /**
287
+ * Tags namespace with Result-wrapped operations
288
+ */
289
+ readonly tags: {
290
+ /**
291
+ * List tags for authenticated user
292
+ */
293
+ list: () => Promise<Result<TagWithTypedColor[], "tags">>;
294
+ };
295
+ /**
296
+ * GitHub namespace with Result-wrapped operations
297
+ */
298
+ readonly github: {
299
+ /**
300
+ * List repositories for authenticated user
301
+ */
302
+ repos: () => Promise<Result<any[], "repos">>;
303
+ /**
304
+ * List branches for a GitHub repository
305
+ */
306
+ branches: (owner: string, repo: string) => Promise<Result<any[], "branches">>;
307
+ };
308
+ /**
309
+ * User namespace with Result-wrapped operations
310
+ */
311
+ readonly user: {
312
+ /**
313
+ * Get user activity history
314
+ */
315
+ history: () => Promise<Result<any[], "history">>;
316
+ /**
317
+ * Update user preferences
318
+ */
319
+ preferences: (data: {
320
+ id: string;
321
+ task_view: string;
322
+ }) => Promise<Result<any, "result">>;
323
+ };
324
+ /**
325
+ * Get request history for debugging
326
+ */
327
+ history(): import("@devpad/schema").BufferedQueue<import("./request").RequestHistoryEntry>;
328
+ /**
329
+ * Get the API key
330
+ */
331
+ getApiKey(): string;
332
+ /**
333
+ * Get the authentication mode
334
+ */
335
+ getAuthMode(): AuthMode;
336
+ }
337
+ //# sourceMappingURL=api-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}