@loculabs/api-client 1.1.0 → 1.3.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/dist/index.d.mts CHANGED
@@ -1,73 +1,3312 @@
1
- interface components {
2
- schemas: {
3
- /** @description Task description in multiple formats */
4
- TaskDescription: {
5
- /** @description Description content as Markdown */
6
- markdown: string;
7
- /** @description Description content as HTML (only included when includeHtml=true) */
8
- html?: string;
9
- /**
10
- * @description ProseMirror JSON document. Root node always has type "doc" with a content array of child nodes.
11
- * @example {
12
- * "type": "doc",
13
- * "content": [
14
- * {
15
- * "type": "paragraph",
16
- * "content": [
17
- * {
18
- * "type": "text",
19
- * "text": "Hello "
20
- * },
21
- * {
22
- * "type": "text",
23
- * "text": "world",
24
- * "marks": [
25
- * {
26
- * "type": "bold"
27
- * }
28
- * ]
29
- * }
30
- * ]
31
- * }
32
- * ]
33
- * }
34
- */
35
- json?: {
36
- /**
37
- * @description Document root type, always "doc"
38
- * @enum {string}
39
- */
40
- type: "doc";
41
- /** @description Array of child document nodes */
1
+ /**
2
+ * This file was auto-generated by openapi-typescript.
3
+ * Do not make direct changes to the file.
4
+ */
5
+ interface paths {
6
+ "/me": {
7
+ parameters: {
8
+ query?: never;
9
+ header?: never;
10
+ path?: never;
11
+ cookie?: never;
12
+ };
13
+ /**
14
+ * Get current user
15
+ * @description Returns information about the authenticated user and workspace associated with the API token.
16
+ */
17
+ get: {
18
+ parameters: {
19
+ query?: never;
20
+ header?: never;
21
+ path?: never;
22
+ cookie?: never;
23
+ };
24
+ requestBody?: never;
25
+ responses: {
26
+ /** @description Successful response */
27
+ 200: {
28
+ headers: {
29
+ [name: string]: unknown;
30
+ };
31
+ content: {
32
+ "application/json": components["schemas"]["MeResponse"];
33
+ };
34
+ };
35
+ /** @description Bad request - validation error */
36
+ 400: {
37
+ headers: {
38
+ [name: string]: unknown;
39
+ };
40
+ content: {
41
+ "application/json": components["schemas"]["ErrorResponse"];
42
+ };
43
+ };
44
+ /** @description Unauthorized - invalid or missing API key */
45
+ 401: {
46
+ headers: {
47
+ [name: string]: unknown;
48
+ };
49
+ content: {
50
+ "application/json": components["schemas"]["ErrorResponse"];
51
+ };
52
+ };
53
+ /** @description Resource not found */
54
+ 404: {
55
+ headers: {
56
+ [name: string]: unknown;
57
+ };
58
+ content: {
59
+ "application/json": components["schemas"]["ErrorResponse"];
60
+ };
61
+ };
62
+ /** @description Rate limit exceeded */
63
+ 429: {
64
+ headers: {
65
+ [name: string]: unknown;
66
+ };
67
+ content: {
68
+ "application/json": components["schemas"]["ErrorResponse"];
69
+ };
70
+ };
71
+ /** @description Internal server error */
72
+ 500: {
73
+ headers: {
74
+ [name: string]: unknown;
75
+ };
76
+ content: {
77
+ "application/json": components["schemas"]["ErrorResponse"];
78
+ };
79
+ };
80
+ };
81
+ };
82
+ put?: never;
83
+ post?: never;
84
+ delete?: never;
85
+ options?: never;
86
+ head?: never;
87
+ patch?: never;
88
+ trace?: never;
89
+ };
90
+ "/notes": {
91
+ parameters: {
92
+ query?: never;
93
+ header?: never;
94
+ path?: never;
95
+ cookie?: never;
96
+ };
97
+ /**
98
+ * List notes
99
+ * @description Retrieve a paginated list of notes. Supports filtering by folder.
100
+ */
101
+ get: {
102
+ parameters: {
103
+ query?: {
104
+ /** @description Number of notes to return */
105
+ limit?: number;
106
+ /** @description Cursor for pagination */
107
+ cursor?: string;
108
+ /** @description Filter by parent folder ID */
109
+ folderId?: string;
110
+ /** @description Include HTML representation of the note content */
111
+ includeHtml?: boolean | null;
112
+ };
113
+ header?: never;
114
+ path?: never;
115
+ cookie?: never;
116
+ };
117
+ requestBody?: never;
118
+ responses: {
119
+ /** @description Successful response */
120
+ 200: {
121
+ headers: {
122
+ [name: string]: unknown;
123
+ };
124
+ content: {
125
+ "application/json": components["schemas"]["NoteListResponse"];
126
+ };
127
+ };
128
+ /** @description Bad request - validation error */
129
+ 400: {
130
+ headers: {
131
+ [name: string]: unknown;
132
+ };
133
+ content: {
134
+ "application/json": components["schemas"]["ErrorResponse"];
135
+ };
136
+ };
137
+ /** @description Unauthorized - invalid or missing API key */
138
+ 401: {
139
+ headers: {
140
+ [name: string]: unknown;
141
+ };
142
+ content: {
143
+ "application/json": components["schemas"]["ErrorResponse"];
144
+ };
145
+ };
146
+ /** @description Resource not found */
147
+ 404: {
148
+ headers: {
149
+ [name: string]: unknown;
150
+ };
151
+ content: {
152
+ "application/json": components["schemas"]["ErrorResponse"];
153
+ };
154
+ };
155
+ /** @description Rate limit exceeded */
156
+ 429: {
157
+ headers: {
158
+ [name: string]: unknown;
159
+ };
160
+ content: {
161
+ "application/json": components["schemas"]["ErrorResponse"];
162
+ };
163
+ };
164
+ /** @description Internal server error */
165
+ 500: {
166
+ headers: {
167
+ [name: string]: unknown;
168
+ };
169
+ content: {
170
+ "application/json": components["schemas"]["ErrorResponse"];
171
+ };
172
+ };
173
+ };
174
+ };
175
+ put?: never;
176
+ /**
177
+ * Create note
178
+ * @description Create a new note.
179
+ */
180
+ post: {
181
+ parameters: {
182
+ query?: {
183
+ /** @description Include HTML representation of the note content */
184
+ includeHtml?: boolean | null;
185
+ };
186
+ header?: never;
187
+ path?: never;
188
+ cookie?: never;
189
+ };
190
+ requestBody: {
191
+ content: {
192
+ "application/json": components["schemas"]["CreateNoteRequest"];
193
+ };
194
+ };
195
+ responses: {
196
+ /** @description Successful response */
197
+ 200: {
198
+ headers: {
199
+ [name: string]: unknown;
200
+ };
201
+ content: {
202
+ "application/json": components["schemas"]["Note"];
203
+ };
204
+ };
205
+ /** @description Bad request - validation error */
206
+ 400: {
207
+ headers: {
208
+ [name: string]: unknown;
209
+ };
210
+ content: {
211
+ "application/json": components["schemas"]["ErrorResponse"];
212
+ };
213
+ };
214
+ /** @description Unauthorized - invalid or missing API key */
215
+ 401: {
216
+ headers: {
217
+ [name: string]: unknown;
218
+ };
219
+ content: {
220
+ "application/json": components["schemas"]["ErrorResponse"];
221
+ };
222
+ };
223
+ /** @description Resource not found */
224
+ 404: {
225
+ headers: {
226
+ [name: string]: unknown;
227
+ };
228
+ content: {
229
+ "application/json": components["schemas"]["ErrorResponse"];
230
+ };
231
+ };
232
+ /** @description Rate limit exceeded */
233
+ 429: {
234
+ headers: {
235
+ [name: string]: unknown;
236
+ };
237
+ content: {
238
+ "application/json": components["schemas"]["ErrorResponse"];
239
+ };
240
+ };
241
+ /** @description Internal server error */
242
+ 500: {
243
+ headers: {
244
+ [name: string]: unknown;
245
+ };
246
+ content: {
247
+ "application/json": components["schemas"]["ErrorResponse"];
248
+ };
249
+ };
250
+ };
251
+ };
252
+ delete?: never;
253
+ options?: never;
254
+ head?: never;
255
+ patch?: never;
256
+ trace?: never;
257
+ };
258
+ "/notes/{id}": {
259
+ parameters: {
260
+ query?: never;
261
+ header?: never;
262
+ path?: never;
263
+ cookie?: never;
264
+ };
265
+ /**
266
+ * Get note
267
+ * @description Retrieve a single note by ID.
268
+ */
269
+ get: {
270
+ parameters: {
271
+ query?: {
272
+ /** @description Include HTML representation of the note content */
273
+ includeHtml?: boolean | null;
274
+ };
275
+ header?: never;
276
+ path: {
277
+ /** @description Note ID */
278
+ id: string;
279
+ };
280
+ cookie?: never;
281
+ };
282
+ requestBody?: never;
283
+ responses: {
284
+ /** @description Successful response */
285
+ 200: {
286
+ headers: {
287
+ [name: string]: unknown;
288
+ };
289
+ content: {
290
+ "application/json": components["schemas"]["Note"];
291
+ };
292
+ };
293
+ /** @description Bad request - validation error */
294
+ 400: {
295
+ headers: {
296
+ [name: string]: unknown;
297
+ };
298
+ content: {
299
+ "application/json": components["schemas"]["ErrorResponse"];
300
+ };
301
+ };
302
+ /** @description Unauthorized - invalid or missing API key */
303
+ 401: {
304
+ headers: {
305
+ [name: string]: unknown;
306
+ };
307
+ content: {
308
+ "application/json": components["schemas"]["ErrorResponse"];
309
+ };
310
+ };
311
+ /** @description Resource not found */
312
+ 404: {
313
+ headers: {
314
+ [name: string]: unknown;
315
+ };
316
+ content: {
317
+ "application/json": components["schemas"]["ErrorResponse"];
318
+ };
319
+ };
320
+ /** @description Rate limit exceeded */
321
+ 429: {
322
+ headers: {
323
+ [name: string]: unknown;
324
+ };
325
+ content: {
326
+ "application/json": components["schemas"]["ErrorResponse"];
327
+ };
328
+ };
329
+ /** @description Internal server error */
330
+ 500: {
331
+ headers: {
332
+ [name: string]: unknown;
333
+ };
334
+ content: {
335
+ "application/json": components["schemas"]["ErrorResponse"];
336
+ };
337
+ };
338
+ };
339
+ };
340
+ put?: never;
341
+ post?: never;
342
+ /**
343
+ * Delete note
344
+ * @description Delete a note.
345
+ */
346
+ delete: {
347
+ parameters: {
348
+ query?: never;
349
+ header?: never;
350
+ path: {
351
+ /** @description Note ID */
352
+ id: string;
353
+ };
354
+ cookie?: never;
355
+ };
356
+ requestBody?: never;
357
+ responses: {
358
+ /** @description Successful response */
359
+ 200: {
360
+ headers: {
361
+ [name: string]: unknown;
362
+ };
363
+ content: {
364
+ "application/json": components["schemas"]["DeleteNoteResponse"];
365
+ };
366
+ };
367
+ /** @description Bad request - validation error */
368
+ 400: {
369
+ headers: {
370
+ [name: string]: unknown;
371
+ };
372
+ content: {
373
+ "application/json": components["schemas"]["ErrorResponse"];
374
+ };
375
+ };
376
+ /** @description Unauthorized - invalid or missing API key */
377
+ 401: {
378
+ headers: {
379
+ [name: string]: unknown;
380
+ };
381
+ content: {
382
+ "application/json": components["schemas"]["ErrorResponse"];
383
+ };
384
+ };
385
+ /** @description Resource not found */
386
+ 404: {
387
+ headers: {
388
+ [name: string]: unknown;
389
+ };
390
+ content: {
391
+ "application/json": components["schemas"]["ErrorResponse"];
392
+ };
393
+ };
394
+ /** @description Rate limit exceeded */
395
+ 429: {
396
+ headers: {
397
+ [name: string]: unknown;
398
+ };
399
+ content: {
400
+ "application/json": components["schemas"]["ErrorResponse"];
401
+ };
402
+ };
403
+ /** @description Internal server error */
404
+ 500: {
405
+ headers: {
406
+ [name: string]: unknown;
407
+ };
408
+ content: {
409
+ "application/json": components["schemas"]["ErrorResponse"];
410
+ };
411
+ };
412
+ };
413
+ };
414
+ options?: never;
415
+ head?: never;
416
+ /**
417
+ * Update note
418
+ * @description Update an existing note. Only provided fields will be modified.
419
+ */
420
+ patch: {
421
+ parameters: {
422
+ query?: {
423
+ /** @description Include HTML representation of the note content */
424
+ includeHtml?: boolean | null;
425
+ };
426
+ header?: never;
427
+ path: {
428
+ /** @description Note ID */
429
+ id: string;
430
+ };
431
+ cookie?: never;
432
+ };
433
+ requestBody: {
434
+ content: {
435
+ "application/json": components["schemas"]["UpdateNoteRequest"];
436
+ };
437
+ };
438
+ responses: {
439
+ /** @description Successful response */
440
+ 200: {
441
+ headers: {
442
+ [name: string]: unknown;
443
+ };
444
+ content: {
445
+ "application/json": components["schemas"]["Note"];
446
+ };
447
+ };
448
+ /** @description Bad request - validation error */
449
+ 400: {
450
+ headers: {
451
+ [name: string]: unknown;
452
+ };
453
+ content: {
454
+ "application/json": components["schemas"]["ErrorResponse"];
455
+ };
456
+ };
457
+ /** @description Unauthorized - invalid or missing API key */
458
+ 401: {
459
+ headers: {
460
+ [name: string]: unknown;
461
+ };
462
+ content: {
463
+ "application/json": components["schemas"]["ErrorResponse"];
464
+ };
465
+ };
466
+ /** @description Resource not found */
467
+ 404: {
468
+ headers: {
469
+ [name: string]: unknown;
470
+ };
471
+ content: {
472
+ "application/json": components["schemas"]["ErrorResponse"];
473
+ };
474
+ };
475
+ /** @description Rate limit exceeded */
476
+ 429: {
477
+ headers: {
478
+ [name: string]: unknown;
479
+ };
480
+ content: {
481
+ "application/json": components["schemas"]["ErrorResponse"];
482
+ };
483
+ };
484
+ /** @description Internal server error */
485
+ 500: {
486
+ headers: {
487
+ [name: string]: unknown;
488
+ };
489
+ content: {
490
+ "application/json": components["schemas"]["ErrorResponse"];
491
+ };
492
+ };
493
+ };
494
+ };
495
+ trace?: never;
496
+ };
497
+ "/projects": {
498
+ parameters: {
499
+ query?: never;
500
+ header?: never;
501
+ path?: never;
502
+ cookie?: never;
503
+ };
504
+ /**
505
+ * List projects
506
+ * @description Retrieve a paginated list of projects. Supports filtering by state.
507
+ */
508
+ get: {
509
+ parameters: {
510
+ query?: {
511
+ /** @description Number of projects to return */
512
+ limit?: number;
513
+ /** @description Cursor for pagination */
514
+ cursor?: string;
515
+ /** @description Filter by project state */
516
+ state?: "planned" | "completed";
517
+ /** @description Include HTML representation of the project description */
518
+ includeHtml?: boolean | null;
519
+ };
520
+ header?: never;
521
+ path?: never;
522
+ cookie?: never;
523
+ };
524
+ requestBody?: never;
525
+ responses: {
526
+ /** @description Successful response */
527
+ 200: {
528
+ headers: {
529
+ [name: string]: unknown;
530
+ };
531
+ content: {
532
+ "application/json": components["schemas"]["ProjectListResponse"];
533
+ };
534
+ };
535
+ /** @description Bad request - validation error */
536
+ 400: {
537
+ headers: {
538
+ [name: string]: unknown;
539
+ };
540
+ content: {
541
+ "application/json": components["schemas"]["ErrorResponse"];
542
+ };
543
+ };
544
+ /** @description Unauthorized - invalid or missing API key */
545
+ 401: {
546
+ headers: {
547
+ [name: string]: unknown;
548
+ };
549
+ content: {
550
+ "application/json": components["schemas"]["ErrorResponse"];
551
+ };
552
+ };
553
+ /** @description Resource not found */
554
+ 404: {
555
+ headers: {
556
+ [name: string]: unknown;
557
+ };
558
+ content: {
559
+ "application/json": components["schemas"]["ErrorResponse"];
560
+ };
561
+ };
562
+ /** @description Rate limit exceeded */
563
+ 429: {
564
+ headers: {
565
+ [name: string]: unknown;
566
+ };
567
+ content: {
568
+ "application/json": components["schemas"]["ErrorResponse"];
569
+ };
570
+ };
571
+ /** @description Internal server error */
572
+ 500: {
573
+ headers: {
574
+ [name: string]: unknown;
575
+ };
576
+ content: {
577
+ "application/json": components["schemas"]["ErrorResponse"];
578
+ };
579
+ };
580
+ };
581
+ };
582
+ put?: never;
583
+ /**
584
+ * Create project
585
+ * @description Create a new project.
586
+ */
587
+ post: {
588
+ parameters: {
589
+ query?: {
590
+ /** @description Include HTML representation of the project description */
591
+ includeHtml?: boolean | null;
592
+ };
593
+ header?: never;
594
+ path?: never;
595
+ cookie?: never;
596
+ };
597
+ requestBody: {
598
+ content: {
599
+ "application/json": components["schemas"]["CreateProjectRequest"];
600
+ };
601
+ };
602
+ responses: {
603
+ /** @description Successful response */
604
+ 200: {
605
+ headers: {
606
+ [name: string]: unknown;
607
+ };
608
+ content: {
609
+ "application/json": components["schemas"]["Project"];
610
+ };
611
+ };
612
+ /** @description Bad request - validation error */
613
+ 400: {
614
+ headers: {
615
+ [name: string]: unknown;
616
+ };
617
+ content: {
618
+ "application/json": components["schemas"]["ErrorResponse"];
619
+ };
620
+ };
621
+ /** @description Unauthorized - invalid or missing API key */
622
+ 401: {
623
+ headers: {
624
+ [name: string]: unknown;
625
+ };
626
+ content: {
627
+ "application/json": components["schemas"]["ErrorResponse"];
628
+ };
629
+ };
630
+ /** @description Resource not found */
631
+ 404: {
632
+ headers: {
633
+ [name: string]: unknown;
634
+ };
635
+ content: {
636
+ "application/json": components["schemas"]["ErrorResponse"];
637
+ };
638
+ };
639
+ /** @description Rate limit exceeded */
640
+ 429: {
641
+ headers: {
642
+ [name: string]: unknown;
643
+ };
644
+ content: {
645
+ "application/json": components["schemas"]["ErrorResponse"];
646
+ };
647
+ };
648
+ /** @description Internal server error */
649
+ 500: {
650
+ headers: {
651
+ [name: string]: unknown;
652
+ };
653
+ content: {
654
+ "application/json": components["schemas"]["ErrorResponse"];
655
+ };
656
+ };
657
+ };
658
+ };
659
+ delete?: never;
660
+ options?: never;
661
+ head?: never;
662
+ patch?: never;
663
+ trace?: never;
664
+ };
665
+ "/projects/{id}": {
666
+ parameters: {
667
+ query?: never;
668
+ header?: never;
669
+ path?: never;
670
+ cookie?: never;
671
+ };
672
+ /**
673
+ * Get project
674
+ * @description Retrieve a single project by ID.
675
+ */
676
+ get: {
677
+ parameters: {
678
+ query?: {
679
+ /** @description Include HTML representation of the project description */
680
+ includeHtml?: boolean | null;
681
+ };
682
+ header?: never;
683
+ path: {
684
+ /** @description Project ID */
685
+ id: string;
686
+ };
687
+ cookie?: never;
688
+ };
689
+ requestBody?: never;
690
+ responses: {
691
+ /** @description Successful response */
692
+ 200: {
693
+ headers: {
694
+ [name: string]: unknown;
695
+ };
696
+ content: {
697
+ "application/json": components["schemas"]["Project"];
698
+ };
699
+ };
700
+ /** @description Bad request - validation error */
701
+ 400: {
702
+ headers: {
703
+ [name: string]: unknown;
704
+ };
705
+ content: {
706
+ "application/json": components["schemas"]["ErrorResponse"];
707
+ };
708
+ };
709
+ /** @description Unauthorized - invalid or missing API key */
710
+ 401: {
711
+ headers: {
712
+ [name: string]: unknown;
713
+ };
714
+ content: {
715
+ "application/json": components["schemas"]["ErrorResponse"];
716
+ };
717
+ };
718
+ /** @description Resource not found */
719
+ 404: {
720
+ headers: {
721
+ [name: string]: unknown;
722
+ };
723
+ content: {
724
+ "application/json": components["schemas"]["ErrorResponse"];
725
+ };
726
+ };
727
+ /** @description Rate limit exceeded */
728
+ 429: {
729
+ headers: {
730
+ [name: string]: unknown;
731
+ };
732
+ content: {
733
+ "application/json": components["schemas"]["ErrorResponse"];
734
+ };
735
+ };
736
+ /** @description Internal server error */
737
+ 500: {
738
+ headers: {
739
+ [name: string]: unknown;
740
+ };
741
+ content: {
742
+ "application/json": components["schemas"]["ErrorResponse"];
743
+ };
744
+ };
745
+ };
746
+ };
747
+ put?: never;
748
+ post?: never;
749
+ /**
750
+ * Delete project
751
+ * @description Delete a project. This will also clear project references from associated tasks.
752
+ */
753
+ delete: {
754
+ parameters: {
755
+ query?: never;
756
+ header?: never;
757
+ path: {
758
+ /** @description Project ID */
759
+ id: string;
760
+ };
761
+ cookie?: never;
762
+ };
763
+ requestBody?: never;
764
+ responses: {
765
+ /** @description Successful response */
766
+ 200: {
767
+ headers: {
768
+ [name: string]: unknown;
769
+ };
770
+ content: {
771
+ "application/json": components["schemas"]["DeleteProjectResponse"];
772
+ };
773
+ };
774
+ /** @description Bad request - validation error */
775
+ 400: {
776
+ headers: {
777
+ [name: string]: unknown;
778
+ };
779
+ content: {
780
+ "application/json": components["schemas"]["ErrorResponse"];
781
+ };
782
+ };
783
+ /** @description Unauthorized - invalid or missing API key */
784
+ 401: {
785
+ headers: {
786
+ [name: string]: unknown;
787
+ };
788
+ content: {
789
+ "application/json": components["schemas"]["ErrorResponse"];
790
+ };
791
+ };
792
+ /** @description Resource not found */
793
+ 404: {
794
+ headers: {
795
+ [name: string]: unknown;
796
+ };
797
+ content: {
798
+ "application/json": components["schemas"]["ErrorResponse"];
799
+ };
800
+ };
801
+ /** @description Rate limit exceeded */
802
+ 429: {
803
+ headers: {
804
+ [name: string]: unknown;
805
+ };
806
+ content: {
807
+ "application/json": components["schemas"]["ErrorResponse"];
808
+ };
809
+ };
810
+ /** @description Internal server error */
811
+ 500: {
812
+ headers: {
813
+ [name: string]: unknown;
814
+ };
815
+ content: {
816
+ "application/json": components["schemas"]["ErrorResponse"];
817
+ };
818
+ };
819
+ };
820
+ };
821
+ options?: never;
822
+ head?: never;
823
+ /**
824
+ * Update project
825
+ * @description Update an existing project. Only provided fields will be modified.
826
+ */
827
+ patch: {
828
+ parameters: {
829
+ query?: {
830
+ /** @description Include HTML representation of the project description */
831
+ includeHtml?: boolean | null;
832
+ };
833
+ header?: never;
834
+ path: {
835
+ /** @description Project ID */
836
+ id: string;
837
+ };
838
+ cookie?: never;
839
+ };
840
+ requestBody: {
841
+ content: {
842
+ "application/json": components["schemas"]["UpdateProjectRequest"];
843
+ };
844
+ };
845
+ responses: {
846
+ /** @description Successful response */
847
+ 200: {
848
+ headers: {
849
+ [name: string]: unknown;
850
+ };
851
+ content: {
852
+ "application/json": components["schemas"]["Project"];
853
+ };
854
+ };
855
+ /** @description Bad request - validation error */
856
+ 400: {
857
+ headers: {
858
+ [name: string]: unknown;
859
+ };
860
+ content: {
861
+ "application/json": components["schemas"]["ErrorResponse"];
862
+ };
863
+ };
864
+ /** @description Unauthorized - invalid or missing API key */
865
+ 401: {
866
+ headers: {
867
+ [name: string]: unknown;
868
+ };
869
+ content: {
870
+ "application/json": components["schemas"]["ErrorResponse"];
871
+ };
872
+ };
873
+ /** @description Resource not found */
874
+ 404: {
875
+ headers: {
876
+ [name: string]: unknown;
877
+ };
878
+ content: {
879
+ "application/json": components["schemas"]["ErrorResponse"];
880
+ };
881
+ };
882
+ /** @description Rate limit exceeded */
883
+ 429: {
884
+ headers: {
885
+ [name: string]: unknown;
886
+ };
887
+ content: {
888
+ "application/json": components["schemas"]["ErrorResponse"];
889
+ };
890
+ };
891
+ /** @description Internal server error */
892
+ 500: {
893
+ headers: {
894
+ [name: string]: unknown;
895
+ };
896
+ content: {
897
+ "application/json": components["schemas"]["ErrorResponse"];
898
+ };
899
+ };
900
+ };
901
+ };
902
+ trace?: never;
903
+ };
904
+ "/sessions": {
905
+ parameters: {
906
+ query?: never;
907
+ header?: never;
908
+ path?: never;
909
+ cookie?: never;
910
+ };
911
+ /**
912
+ * List sessions
913
+ * @description Retrieve a paginated list of sessions. Supports filtering by date range.
914
+ */
915
+ get: {
916
+ parameters: {
917
+ query?: {
918
+ /** @description Number of sessions to return */
919
+ limit?: number;
920
+ /** @description Cursor for pagination */
921
+ cursor?: string;
922
+ /** @description Filter sessions starting after this date (Unix seconds or ISO 8601) */
923
+ startAfter?: string;
924
+ /** @description Filter sessions starting before this date (Unix seconds or ISO 8601) */
925
+ startBefore?: string;
926
+ /** @description Include activities in response */
927
+ includeActivities?: boolean | null;
928
+ };
929
+ header?: never;
930
+ path?: never;
931
+ cookie?: never;
932
+ };
933
+ requestBody?: never;
934
+ responses: {
935
+ /** @description Successful response */
936
+ 200: {
937
+ headers: {
938
+ [name: string]: unknown;
939
+ };
940
+ content: {
941
+ "application/json": components["schemas"]["SessionListResponse"];
942
+ };
943
+ };
944
+ /** @description Bad request - validation error */
945
+ 400: {
946
+ headers: {
947
+ [name: string]: unknown;
948
+ };
949
+ content: {
950
+ "application/json": components["schemas"]["ErrorResponse"];
951
+ };
952
+ };
953
+ /** @description Unauthorized - invalid or missing API key */
954
+ 401: {
955
+ headers: {
956
+ [name: string]: unknown;
957
+ };
958
+ content: {
959
+ "application/json": components["schemas"]["ErrorResponse"];
960
+ };
961
+ };
962
+ /** @description Resource not found */
963
+ 404: {
964
+ headers: {
965
+ [name: string]: unknown;
966
+ };
967
+ content: {
968
+ "application/json": components["schemas"]["ErrorResponse"];
969
+ };
970
+ };
971
+ /** @description Rate limit exceeded */
972
+ 429: {
973
+ headers: {
974
+ [name: string]: unknown;
975
+ };
976
+ content: {
977
+ "application/json": components["schemas"]["ErrorResponse"];
978
+ };
979
+ };
980
+ /** @description Internal server error */
981
+ 500: {
982
+ headers: {
983
+ [name: string]: unknown;
984
+ };
985
+ content: {
986
+ "application/json": components["schemas"]["ErrorResponse"];
987
+ };
988
+ };
989
+ };
990
+ };
991
+ put?: never;
992
+ /**
993
+ * Create session
994
+ * @description Create a new work session.
995
+ */
996
+ post: {
997
+ parameters: {
998
+ query?: never;
999
+ header?: never;
1000
+ path?: never;
1001
+ cookie?: never;
1002
+ };
1003
+ requestBody: {
1004
+ content: {
1005
+ "application/json": components["schemas"]["CreateSessionRequest"];
1006
+ };
1007
+ };
1008
+ responses: {
1009
+ /** @description Successful response */
1010
+ 200: {
1011
+ headers: {
1012
+ [name: string]: unknown;
1013
+ };
1014
+ content: {
1015
+ "application/json": components["schemas"]["SessionWithActivities"];
1016
+ };
1017
+ };
1018
+ /** @description Bad request - validation error */
1019
+ 400: {
1020
+ headers: {
1021
+ [name: string]: unknown;
1022
+ };
1023
+ content: {
1024
+ "application/json": components["schemas"]["ErrorResponse"];
1025
+ };
1026
+ };
1027
+ /** @description Unauthorized - invalid or missing API key */
1028
+ 401: {
1029
+ headers: {
1030
+ [name: string]: unknown;
1031
+ };
1032
+ content: {
1033
+ "application/json": components["schemas"]["ErrorResponse"];
1034
+ };
1035
+ };
1036
+ /** @description Resource not found */
1037
+ 404: {
1038
+ headers: {
1039
+ [name: string]: unknown;
1040
+ };
1041
+ content: {
1042
+ "application/json": components["schemas"]["ErrorResponse"];
1043
+ };
1044
+ };
1045
+ /** @description Rate limit exceeded */
1046
+ 429: {
1047
+ headers: {
1048
+ [name: string]: unknown;
1049
+ };
1050
+ content: {
1051
+ "application/json": components["schemas"]["ErrorResponse"];
1052
+ };
1053
+ };
1054
+ /** @description Internal server error */
1055
+ 500: {
1056
+ headers: {
1057
+ [name: string]: unknown;
1058
+ };
1059
+ content: {
1060
+ "application/json": components["schemas"]["ErrorResponse"];
1061
+ };
1062
+ };
1063
+ };
1064
+ };
1065
+ delete?: never;
1066
+ options?: never;
1067
+ head?: never;
1068
+ patch?: never;
1069
+ trace?: never;
1070
+ };
1071
+ "/sessions/{id}": {
1072
+ parameters: {
1073
+ query?: never;
1074
+ header?: never;
1075
+ path?: never;
1076
+ cookie?: never;
1077
+ };
1078
+ /**
1079
+ * Get session
1080
+ * @description Retrieve a single session by ID, including all activities.
1081
+ */
1082
+ get: {
1083
+ parameters: {
1084
+ query?: never;
1085
+ header?: never;
1086
+ path: {
1087
+ /** @description Session ID */
1088
+ id: string;
1089
+ };
1090
+ cookie?: never;
1091
+ };
1092
+ requestBody?: never;
1093
+ responses: {
1094
+ /** @description Successful response */
1095
+ 200: {
1096
+ headers: {
1097
+ [name: string]: unknown;
1098
+ };
1099
+ content: {
1100
+ "application/json": components["schemas"]["SessionWithActivities"];
1101
+ };
1102
+ };
1103
+ /** @description Bad request - validation error */
1104
+ 400: {
1105
+ headers: {
1106
+ [name: string]: unknown;
1107
+ };
1108
+ content: {
1109
+ "application/json": components["schemas"]["ErrorResponse"];
1110
+ };
1111
+ };
1112
+ /** @description Unauthorized - invalid or missing API key */
1113
+ 401: {
1114
+ headers: {
1115
+ [name: string]: unknown;
1116
+ };
1117
+ content: {
1118
+ "application/json": components["schemas"]["ErrorResponse"];
1119
+ };
1120
+ };
1121
+ /** @description Resource not found */
1122
+ 404: {
1123
+ headers: {
1124
+ [name: string]: unknown;
1125
+ };
1126
+ content: {
1127
+ "application/json": components["schemas"]["ErrorResponse"];
1128
+ };
1129
+ };
1130
+ /** @description Rate limit exceeded */
1131
+ 429: {
1132
+ headers: {
1133
+ [name: string]: unknown;
1134
+ };
1135
+ content: {
1136
+ "application/json": components["schemas"]["ErrorResponse"];
1137
+ };
1138
+ };
1139
+ /** @description Internal server error */
1140
+ 500: {
1141
+ headers: {
1142
+ [name: string]: unknown;
1143
+ };
1144
+ content: {
1145
+ "application/json": components["schemas"]["ErrorResponse"];
1146
+ };
1147
+ };
1148
+ };
1149
+ };
1150
+ put?: never;
1151
+ post?: never;
1152
+ /**
1153
+ * Delete session
1154
+ * @description Delete a session. This will also delete all associated activities.
1155
+ */
1156
+ delete: {
1157
+ parameters: {
1158
+ query?: never;
1159
+ header?: never;
1160
+ path: {
1161
+ /** @description Session ID */
1162
+ id: string;
1163
+ };
1164
+ cookie?: never;
1165
+ };
1166
+ requestBody?: never;
1167
+ responses: {
1168
+ /** @description Successful response */
1169
+ 200: {
1170
+ headers: {
1171
+ [name: string]: unknown;
1172
+ };
1173
+ content: {
1174
+ "application/json": components["schemas"]["DeleteSessionResponse"];
1175
+ };
1176
+ };
1177
+ /** @description Bad request - validation error */
1178
+ 400: {
1179
+ headers: {
1180
+ [name: string]: unknown;
1181
+ };
1182
+ content: {
1183
+ "application/json": components["schemas"]["ErrorResponse"];
1184
+ };
1185
+ };
1186
+ /** @description Unauthorized - invalid or missing API key */
1187
+ 401: {
1188
+ headers: {
1189
+ [name: string]: unknown;
1190
+ };
1191
+ content: {
1192
+ "application/json": components["schemas"]["ErrorResponse"];
1193
+ };
1194
+ };
1195
+ /** @description Resource not found */
1196
+ 404: {
1197
+ headers: {
1198
+ [name: string]: unknown;
1199
+ };
1200
+ content: {
1201
+ "application/json": components["schemas"]["ErrorResponse"];
1202
+ };
1203
+ };
1204
+ /** @description Rate limit exceeded */
1205
+ 429: {
1206
+ headers: {
1207
+ [name: string]: unknown;
1208
+ };
1209
+ content: {
1210
+ "application/json": components["schemas"]["ErrorResponse"];
1211
+ };
1212
+ };
1213
+ /** @description Internal server error */
1214
+ 500: {
1215
+ headers: {
1216
+ [name: string]: unknown;
1217
+ };
1218
+ content: {
1219
+ "application/json": components["schemas"]["ErrorResponse"];
1220
+ };
1221
+ };
1222
+ };
1223
+ };
1224
+ options?: never;
1225
+ head?: never;
1226
+ /**
1227
+ * Update session
1228
+ * @description Update an existing session. Only provided fields will be modified.
1229
+ */
1230
+ patch: {
1231
+ parameters: {
1232
+ query?: never;
1233
+ header?: never;
1234
+ path: {
1235
+ /** @description Session ID */
1236
+ id: string;
1237
+ };
1238
+ cookie?: never;
1239
+ };
1240
+ requestBody: {
1241
+ content: {
1242
+ "application/json": components["schemas"]["UpdateSessionRequest"];
1243
+ };
1244
+ };
1245
+ responses: {
1246
+ /** @description Successful response */
1247
+ 200: {
1248
+ headers: {
1249
+ [name: string]: unknown;
1250
+ };
1251
+ content: {
1252
+ "application/json": components["schemas"]["SessionWithActivities"];
1253
+ };
1254
+ };
1255
+ /** @description Bad request - validation error */
1256
+ 400: {
1257
+ headers: {
1258
+ [name: string]: unknown;
1259
+ };
1260
+ content: {
1261
+ "application/json": components["schemas"]["ErrorResponse"];
1262
+ };
1263
+ };
1264
+ /** @description Unauthorized - invalid or missing API key */
1265
+ 401: {
1266
+ headers: {
1267
+ [name: string]: unknown;
1268
+ };
1269
+ content: {
1270
+ "application/json": components["schemas"]["ErrorResponse"];
1271
+ };
1272
+ };
1273
+ /** @description Resource not found */
1274
+ 404: {
1275
+ headers: {
1276
+ [name: string]: unknown;
1277
+ };
1278
+ content: {
1279
+ "application/json": components["schemas"]["ErrorResponse"];
1280
+ };
1281
+ };
1282
+ /** @description Rate limit exceeded */
1283
+ 429: {
1284
+ headers: {
1285
+ [name: string]: unknown;
1286
+ };
1287
+ content: {
1288
+ "application/json": components["schemas"]["ErrorResponse"];
1289
+ };
1290
+ };
1291
+ /** @description Internal server error */
1292
+ 500: {
1293
+ headers: {
1294
+ [name: string]: unknown;
1295
+ };
1296
+ content: {
1297
+ "application/json": components["schemas"]["ErrorResponse"];
1298
+ };
1299
+ };
1300
+ };
1301
+ };
1302
+ trace?: never;
1303
+ };
1304
+ "/sessions/{id}/activities": {
1305
+ parameters: {
1306
+ query?: never;
1307
+ header?: never;
1308
+ path?: never;
1309
+ cookie?: never;
1310
+ };
1311
+ /**
1312
+ * List session activities
1313
+ * @description Retrieve all activities for a specific session.
1314
+ */
1315
+ get: {
1316
+ parameters: {
1317
+ query?: never;
1318
+ header?: never;
1319
+ path: {
1320
+ /** @description Session ID */
1321
+ id: string;
1322
+ };
1323
+ cookie?: never;
1324
+ };
1325
+ requestBody?: never;
1326
+ responses: {
1327
+ /** @description Successful response */
1328
+ 200: {
1329
+ headers: {
1330
+ [name: string]: unknown;
1331
+ };
1332
+ content: {
1333
+ "application/json": components["schemas"]["ActivityListResponse"];
1334
+ };
1335
+ };
1336
+ /** @description Bad request - validation error */
1337
+ 400: {
1338
+ headers: {
1339
+ [name: string]: unknown;
1340
+ };
1341
+ content: {
1342
+ "application/json": components["schemas"]["ErrorResponse"];
1343
+ };
1344
+ };
1345
+ /** @description Unauthorized - invalid or missing API key */
1346
+ 401: {
1347
+ headers: {
1348
+ [name: string]: unknown;
1349
+ };
1350
+ content: {
1351
+ "application/json": components["schemas"]["ErrorResponse"];
1352
+ };
1353
+ };
1354
+ /** @description Resource not found */
1355
+ 404: {
1356
+ headers: {
1357
+ [name: string]: unknown;
1358
+ };
1359
+ content: {
1360
+ "application/json": components["schemas"]["ErrorResponse"];
1361
+ };
1362
+ };
1363
+ /** @description Rate limit exceeded */
1364
+ 429: {
1365
+ headers: {
1366
+ [name: string]: unknown;
1367
+ };
1368
+ content: {
1369
+ "application/json": components["schemas"]["ErrorResponse"];
1370
+ };
1371
+ };
1372
+ /** @description Internal server error */
1373
+ 500: {
1374
+ headers: {
1375
+ [name: string]: unknown;
1376
+ };
1377
+ content: {
1378
+ "application/json": components["schemas"]["ErrorResponse"];
1379
+ };
1380
+ };
1381
+ };
1382
+ };
1383
+ put?: never;
1384
+ /**
1385
+ * Add activity to session
1386
+ * @description Add a new task activity to an existing session. Only TASK activities can be created via API.
1387
+ */
1388
+ post: {
1389
+ parameters: {
1390
+ query?: never;
1391
+ header?: never;
1392
+ path: {
1393
+ /** @description Session ID */
1394
+ id: string;
1395
+ };
1396
+ cookie?: never;
1397
+ };
1398
+ requestBody: {
1399
+ content: {
1400
+ "application/json": components["schemas"]["CreateActivityRequest"];
1401
+ };
1402
+ };
1403
+ responses: {
1404
+ /** @description Successful response */
1405
+ 200: {
1406
+ headers: {
1407
+ [name: string]: unknown;
1408
+ };
1409
+ content: {
1410
+ "application/json": components["schemas"]["SessionActivity"];
1411
+ };
1412
+ };
1413
+ /** @description Bad request - validation error */
1414
+ 400: {
1415
+ headers: {
1416
+ [name: string]: unknown;
1417
+ };
1418
+ content: {
1419
+ "application/json": components["schemas"]["ErrorResponse"];
1420
+ };
1421
+ };
1422
+ /** @description Unauthorized - invalid or missing API key */
1423
+ 401: {
1424
+ headers: {
1425
+ [name: string]: unknown;
1426
+ };
1427
+ content: {
1428
+ "application/json": components["schemas"]["ErrorResponse"];
1429
+ };
1430
+ };
1431
+ /** @description Resource not found */
1432
+ 404: {
1433
+ headers: {
1434
+ [name: string]: unknown;
1435
+ };
1436
+ content: {
1437
+ "application/json": components["schemas"]["ErrorResponse"];
1438
+ };
1439
+ };
1440
+ /** @description Rate limit exceeded */
1441
+ 429: {
1442
+ headers: {
1443
+ [name: string]: unknown;
1444
+ };
1445
+ content: {
1446
+ "application/json": components["schemas"]["ErrorResponse"];
1447
+ };
1448
+ };
1449
+ /** @description Internal server error */
1450
+ 500: {
1451
+ headers: {
1452
+ [name: string]: unknown;
1453
+ };
1454
+ content: {
1455
+ "application/json": components["schemas"]["ErrorResponse"];
1456
+ };
1457
+ };
1458
+ };
1459
+ };
1460
+ delete?: never;
1461
+ options?: never;
1462
+ head?: never;
1463
+ patch?: never;
1464
+ trace?: never;
1465
+ };
1466
+ "/sessions/{id}/activities/{activityId}": {
1467
+ parameters: {
1468
+ query?: never;
1469
+ header?: never;
1470
+ path?: never;
1471
+ cookie?: never;
1472
+ };
1473
+ get?: never;
1474
+ put?: never;
1475
+ post?: never;
1476
+ /**
1477
+ * Delete activity
1478
+ * @description Delete an activity from a session.
1479
+ */
1480
+ delete: {
1481
+ parameters: {
1482
+ query?: never;
1483
+ header?: never;
1484
+ path: {
1485
+ /** @description Session ID */
1486
+ id: string;
1487
+ /** @description Activity ID */
1488
+ activityId: string;
1489
+ };
1490
+ cookie?: never;
1491
+ };
1492
+ requestBody?: never;
1493
+ responses: {
1494
+ /** @description Successful response */
1495
+ 200: {
1496
+ headers: {
1497
+ [name: string]: unknown;
1498
+ };
1499
+ content: {
1500
+ "application/json": components["schemas"]["DeleteActivityResponse"];
1501
+ };
1502
+ };
1503
+ /** @description Bad request - validation error */
1504
+ 400: {
1505
+ headers: {
1506
+ [name: string]: unknown;
1507
+ };
1508
+ content: {
1509
+ "application/json": components["schemas"]["ErrorResponse"];
1510
+ };
1511
+ };
1512
+ /** @description Unauthorized - invalid or missing API key */
1513
+ 401: {
1514
+ headers: {
1515
+ [name: string]: unknown;
1516
+ };
1517
+ content: {
1518
+ "application/json": components["schemas"]["ErrorResponse"];
1519
+ };
1520
+ };
1521
+ /** @description Resource not found */
1522
+ 404: {
1523
+ headers: {
1524
+ [name: string]: unknown;
1525
+ };
1526
+ content: {
1527
+ "application/json": components["schemas"]["ErrorResponse"];
1528
+ };
1529
+ };
1530
+ /** @description Rate limit exceeded */
1531
+ 429: {
1532
+ headers: {
1533
+ [name: string]: unknown;
1534
+ };
1535
+ content: {
1536
+ "application/json": components["schemas"]["ErrorResponse"];
1537
+ };
1538
+ };
1539
+ /** @description Internal server error */
1540
+ 500: {
1541
+ headers: {
1542
+ [name: string]: unknown;
1543
+ };
1544
+ content: {
1545
+ "application/json": components["schemas"]["ErrorResponse"];
1546
+ };
1547
+ };
1548
+ };
1549
+ };
1550
+ options?: never;
1551
+ head?: never;
1552
+ /**
1553
+ * Update activity
1554
+ * @description Update an existing activity. Only provided fields will be modified.
1555
+ */
1556
+ patch: {
1557
+ parameters: {
1558
+ query?: never;
1559
+ header?: never;
1560
+ path: {
1561
+ /** @description Session ID */
1562
+ id: string;
1563
+ /** @description Activity ID */
1564
+ activityId: string;
1565
+ };
1566
+ cookie?: never;
1567
+ };
1568
+ requestBody: {
1569
+ content: {
1570
+ "application/json": components["schemas"]["UpdateActivityRequest"];
1571
+ };
1572
+ };
1573
+ responses: {
1574
+ /** @description Successful response */
1575
+ 200: {
1576
+ headers: {
1577
+ [name: string]: unknown;
1578
+ };
1579
+ content: {
1580
+ "application/json": components["schemas"]["SessionActivity"];
1581
+ };
1582
+ };
1583
+ /** @description Bad request - validation error */
1584
+ 400: {
1585
+ headers: {
1586
+ [name: string]: unknown;
1587
+ };
1588
+ content: {
1589
+ "application/json": components["schemas"]["ErrorResponse"];
1590
+ };
1591
+ };
1592
+ /** @description Unauthorized - invalid or missing API key */
1593
+ 401: {
1594
+ headers: {
1595
+ [name: string]: unknown;
1596
+ };
1597
+ content: {
1598
+ "application/json": components["schemas"]["ErrorResponse"];
1599
+ };
1600
+ };
1601
+ /** @description Resource not found */
1602
+ 404: {
1603
+ headers: {
1604
+ [name: string]: unknown;
1605
+ };
1606
+ content: {
1607
+ "application/json": components["schemas"]["ErrorResponse"];
1608
+ };
1609
+ };
1610
+ /** @description Rate limit exceeded */
1611
+ 429: {
1612
+ headers: {
1613
+ [name: string]: unknown;
1614
+ };
1615
+ content: {
1616
+ "application/json": components["schemas"]["ErrorResponse"];
1617
+ };
1618
+ };
1619
+ /** @description Internal server error */
1620
+ 500: {
1621
+ headers: {
1622
+ [name: string]: unknown;
1623
+ };
1624
+ content: {
1625
+ "application/json": components["schemas"]["ErrorResponse"];
1626
+ };
1627
+ };
1628
+ };
1629
+ };
1630
+ trace?: never;
1631
+ };
1632
+ "/tasks": {
1633
+ parameters: {
1634
+ query?: never;
1635
+ header?: never;
1636
+ path?: never;
1637
+ cookie?: never;
1638
+ };
1639
+ /**
1640
+ * List tasks
1641
+ * @description Retrieve a paginated list of tasks. Supports filtering by completion status, project, parent task, and date range.
1642
+ */
1643
+ get: {
1644
+ parameters: {
1645
+ query?: {
1646
+ /** @description Cursor for pagination */
1647
+ cursor?: string;
1648
+ /** @description Number of items to return (max 100) */
1649
+ limit?: string;
1650
+ /** @description Filter by completion status */
1651
+ done?: "true" | "false";
1652
+ /** @description Filter by project */
1653
+ projectId?: string;
1654
+ /** @description Filter by parent task */
1655
+ parentId?: string;
1656
+ /** @description Filter by section */
1657
+ section?: "today" | "sooner" | "later";
1658
+ /** @description Filter tasks completed after this date (Unix seconds or ISO 8601) */
1659
+ doneAfter?: string;
1660
+ /** @description Filter tasks completed before this date (Unix seconds or ISO 8601) */
1661
+ doneBefore?: string;
1662
+ /** @description Include HTML representation of the task description */
1663
+ includeHtml?: boolean | null;
1664
+ };
1665
+ header?: never;
1666
+ path?: never;
1667
+ cookie?: never;
1668
+ };
1669
+ requestBody?: never;
1670
+ responses: {
1671
+ /** @description Successful response */
1672
+ 200: {
1673
+ headers: {
1674
+ [name: string]: unknown;
1675
+ };
1676
+ content: {
1677
+ "application/json": components["schemas"]["TaskListResponse"];
1678
+ };
1679
+ };
1680
+ /** @description Bad request - validation error */
1681
+ 400: {
1682
+ headers: {
1683
+ [name: string]: unknown;
1684
+ };
1685
+ content: {
1686
+ "application/json": components["schemas"]["ErrorResponse"];
1687
+ };
1688
+ };
1689
+ /** @description Unauthorized - invalid or missing API key */
1690
+ 401: {
1691
+ headers: {
1692
+ [name: string]: unknown;
1693
+ };
1694
+ content: {
1695
+ "application/json": components["schemas"]["ErrorResponse"];
1696
+ };
1697
+ };
1698
+ /** @description Resource not found */
1699
+ 404: {
1700
+ headers: {
1701
+ [name: string]: unknown;
1702
+ };
1703
+ content: {
1704
+ "application/json": components["schemas"]["ErrorResponse"];
1705
+ };
1706
+ };
1707
+ /** @description Rate limit exceeded */
1708
+ 429: {
1709
+ headers: {
1710
+ [name: string]: unknown;
1711
+ };
1712
+ content: {
1713
+ "application/json": components["schemas"]["ErrorResponse"];
1714
+ };
1715
+ };
1716
+ /** @description Internal server error */
1717
+ 500: {
1718
+ headers: {
1719
+ [name: string]: unknown;
1720
+ };
1721
+ content: {
1722
+ "application/json": components["schemas"]["ErrorResponse"];
1723
+ };
1724
+ };
1725
+ };
1726
+ };
1727
+ put?: never;
1728
+ /**
1729
+ * Create task
1730
+ * @description Create a new task. Optionally assign it to a parent task, project, or section.
1731
+ */
1732
+ post: {
1733
+ parameters: {
1734
+ query?: {
1735
+ /** @description Include HTML representation of the task description */
1736
+ includeHtml?: boolean | null;
1737
+ };
1738
+ header?: never;
1739
+ path?: never;
1740
+ cookie?: never;
1741
+ };
1742
+ requestBody: {
1743
+ content: {
1744
+ "application/json": components["schemas"]["CreateTaskRequest"];
1745
+ };
1746
+ };
1747
+ responses: {
1748
+ /** @description Successful response */
1749
+ 200: {
1750
+ headers: {
1751
+ [name: string]: unknown;
1752
+ };
1753
+ content: {
1754
+ "application/json": components["schemas"]["Task"];
1755
+ };
1756
+ };
1757
+ /** @description Bad request - validation error */
1758
+ 400: {
1759
+ headers: {
1760
+ [name: string]: unknown;
1761
+ };
1762
+ content: {
1763
+ "application/json": components["schemas"]["ErrorResponse"];
1764
+ };
1765
+ };
1766
+ /** @description Unauthorized - invalid or missing API key */
1767
+ 401: {
1768
+ headers: {
1769
+ [name: string]: unknown;
1770
+ };
1771
+ content: {
1772
+ "application/json": components["schemas"]["ErrorResponse"];
1773
+ };
1774
+ };
1775
+ /** @description Resource not found */
1776
+ 404: {
1777
+ headers: {
1778
+ [name: string]: unknown;
1779
+ };
1780
+ content: {
1781
+ "application/json": components["schemas"]["ErrorResponse"];
1782
+ };
1783
+ };
1784
+ /** @description Rate limit exceeded */
1785
+ 429: {
1786
+ headers: {
1787
+ [name: string]: unknown;
1788
+ };
1789
+ content: {
1790
+ "application/json": components["schemas"]["ErrorResponse"];
1791
+ };
1792
+ };
1793
+ /** @description Internal server error */
1794
+ 500: {
1795
+ headers: {
1796
+ [name: string]: unknown;
1797
+ };
1798
+ content: {
1799
+ "application/json": components["schemas"]["ErrorResponse"];
1800
+ };
1801
+ };
1802
+ };
1803
+ };
1804
+ delete?: never;
1805
+ options?: never;
1806
+ head?: never;
1807
+ patch?: never;
1808
+ trace?: never;
1809
+ };
1810
+ "/tasks/sections": {
1811
+ parameters: {
1812
+ query?: never;
1813
+ header?: never;
1814
+ path?: never;
1815
+ cookie?: never;
1816
+ };
1817
+ /**
1818
+ * Get tasks by section
1819
+ * @description Retrieve tasks organized by section (today, sooner, later).
1820
+ */
1821
+ get: {
1822
+ parameters: {
1823
+ query?: {
1824
+ /** @description Filter by specific section */
1825
+ section?: "today" | "sooner" | "later";
1826
+ /** @description Include HTML representation of the task description */
1827
+ includeHtml?: boolean | null;
1828
+ };
1829
+ header?: never;
1830
+ path?: never;
1831
+ cookie?: never;
1832
+ };
1833
+ requestBody?: never;
1834
+ responses: {
1835
+ /** @description Successful response */
1836
+ 200: {
1837
+ headers: {
1838
+ [name: string]: unknown;
1839
+ };
1840
+ content: {
1841
+ "application/json": components["schemas"]["TaskSectionsResponse"];
1842
+ };
1843
+ };
1844
+ /** @description Bad request - validation error */
1845
+ 400: {
1846
+ headers: {
1847
+ [name: string]: unknown;
1848
+ };
1849
+ content: {
1850
+ "application/json": components["schemas"]["ErrorResponse"];
1851
+ };
1852
+ };
1853
+ /** @description Unauthorized - invalid or missing API key */
1854
+ 401: {
1855
+ headers: {
1856
+ [name: string]: unknown;
1857
+ };
1858
+ content: {
1859
+ "application/json": components["schemas"]["ErrorResponse"];
1860
+ };
1861
+ };
1862
+ /** @description Resource not found */
1863
+ 404: {
1864
+ headers: {
1865
+ [name: string]: unknown;
1866
+ };
1867
+ content: {
1868
+ "application/json": components["schemas"]["ErrorResponse"];
1869
+ };
1870
+ };
1871
+ /** @description Rate limit exceeded */
1872
+ 429: {
1873
+ headers: {
1874
+ [name: string]: unknown;
1875
+ };
1876
+ content: {
1877
+ "application/json": components["schemas"]["ErrorResponse"];
1878
+ };
1879
+ };
1880
+ /** @description Internal server error */
1881
+ 500: {
1882
+ headers: {
1883
+ [name: string]: unknown;
1884
+ };
1885
+ content: {
1886
+ "application/json": components["schemas"]["ErrorResponse"];
1887
+ };
1888
+ };
1889
+ };
1890
+ };
1891
+ put?: never;
1892
+ post?: never;
1893
+ delete?: never;
1894
+ options?: never;
1895
+ head?: never;
1896
+ patch?: never;
1897
+ trace?: never;
1898
+ };
1899
+ "/tasks/{id}": {
1900
+ parameters: {
1901
+ query?: never;
1902
+ header?: never;
1903
+ path?: never;
1904
+ cookie?: never;
1905
+ };
1906
+ /**
1907
+ * Get task
1908
+ * @description Retrieve a single task by ID.
1909
+ */
1910
+ get: {
1911
+ parameters: {
1912
+ query?: {
1913
+ /** @description Include HTML representation of the task description */
1914
+ includeHtml?: boolean | null;
1915
+ };
1916
+ header?: never;
1917
+ path: {
1918
+ /** @description Task ID */
1919
+ id: string;
1920
+ };
1921
+ cookie?: never;
1922
+ };
1923
+ requestBody?: never;
1924
+ responses: {
1925
+ /** @description Successful response */
1926
+ 200: {
1927
+ headers: {
1928
+ [name: string]: unknown;
1929
+ };
1930
+ content: {
1931
+ "application/json": components["schemas"]["Task"];
1932
+ };
1933
+ };
1934
+ /** @description Bad request - validation error */
1935
+ 400: {
1936
+ headers: {
1937
+ [name: string]: unknown;
1938
+ };
1939
+ content: {
1940
+ "application/json": components["schemas"]["ErrorResponse"];
1941
+ };
1942
+ };
1943
+ /** @description Unauthorized - invalid or missing API key */
1944
+ 401: {
1945
+ headers: {
1946
+ [name: string]: unknown;
1947
+ };
1948
+ content: {
1949
+ "application/json": components["schemas"]["ErrorResponse"];
1950
+ };
1951
+ };
1952
+ /** @description Resource not found */
1953
+ 404: {
1954
+ headers: {
1955
+ [name: string]: unknown;
1956
+ };
1957
+ content: {
1958
+ "application/json": components["schemas"]["ErrorResponse"];
1959
+ };
1960
+ };
1961
+ /** @description Rate limit exceeded */
1962
+ 429: {
1963
+ headers: {
1964
+ [name: string]: unknown;
1965
+ };
1966
+ content: {
1967
+ "application/json": components["schemas"]["ErrorResponse"];
1968
+ };
1969
+ };
1970
+ /** @description Internal server error */
1971
+ 500: {
1972
+ headers: {
1973
+ [name: string]: unknown;
1974
+ };
1975
+ content: {
1976
+ "application/json": components["schemas"]["ErrorResponse"];
1977
+ };
1978
+ };
1979
+ };
1980
+ };
1981
+ put?: never;
1982
+ post?: never;
1983
+ /**
1984
+ * Delete task
1985
+ * @description Delete a task. This will also delete all subtasks and remove associated session activities.
1986
+ */
1987
+ delete: {
1988
+ parameters: {
1989
+ query?: never;
1990
+ header?: never;
1991
+ path: {
1992
+ /** @description Task ID */
1993
+ id: string;
1994
+ };
1995
+ cookie?: never;
1996
+ };
1997
+ requestBody?: never;
1998
+ responses: {
1999
+ /** @description Successful response */
2000
+ 200: {
2001
+ headers: {
2002
+ [name: string]: unknown;
2003
+ };
2004
+ content: {
2005
+ "application/json": components["schemas"]["DeleteTaskResponse"];
2006
+ };
2007
+ };
2008
+ /** @description Bad request - validation error */
2009
+ 400: {
2010
+ headers: {
2011
+ [name: string]: unknown;
2012
+ };
2013
+ content: {
2014
+ "application/json": components["schemas"]["ErrorResponse"];
2015
+ };
2016
+ };
2017
+ /** @description Unauthorized - invalid or missing API key */
2018
+ 401: {
2019
+ headers: {
2020
+ [name: string]: unknown;
2021
+ };
2022
+ content: {
2023
+ "application/json": components["schemas"]["ErrorResponse"];
2024
+ };
2025
+ };
2026
+ /** @description Resource not found */
2027
+ 404: {
2028
+ headers: {
2029
+ [name: string]: unknown;
2030
+ };
2031
+ content: {
2032
+ "application/json": components["schemas"]["ErrorResponse"];
2033
+ };
2034
+ };
2035
+ /** @description Rate limit exceeded */
2036
+ 429: {
2037
+ headers: {
2038
+ [name: string]: unknown;
2039
+ };
2040
+ content: {
2041
+ "application/json": components["schemas"]["ErrorResponse"];
2042
+ };
2043
+ };
2044
+ /** @description Internal server error */
2045
+ 500: {
2046
+ headers: {
2047
+ [name: string]: unknown;
2048
+ };
2049
+ content: {
2050
+ "application/json": components["schemas"]["ErrorResponse"];
2051
+ };
2052
+ };
2053
+ };
2054
+ };
2055
+ options?: never;
2056
+ head?: never;
2057
+ /**
2058
+ * Update task
2059
+ * @description Update an existing task. Only provided fields will be modified.
2060
+ */
2061
+ patch: {
2062
+ parameters: {
2063
+ query?: {
2064
+ /** @description Include HTML representation of the task description */
2065
+ includeHtml?: boolean | null;
2066
+ };
2067
+ header?: never;
2068
+ path: {
2069
+ /** @description Task ID */
2070
+ id: string;
2071
+ };
2072
+ cookie?: never;
2073
+ };
2074
+ requestBody: {
2075
+ content: {
2076
+ "application/json": components["schemas"]["UpdateTaskRequest"];
2077
+ };
2078
+ };
2079
+ responses: {
2080
+ /** @description Successful response */
2081
+ 200: {
2082
+ headers: {
2083
+ [name: string]: unknown;
2084
+ };
2085
+ content: {
2086
+ "application/json": components["schemas"]["Task"];
2087
+ };
2088
+ };
2089
+ /** @description Bad request - validation error */
2090
+ 400: {
2091
+ headers: {
2092
+ [name: string]: unknown;
2093
+ };
2094
+ content: {
2095
+ "application/json": components["schemas"]["ErrorResponse"];
2096
+ };
2097
+ };
2098
+ /** @description Unauthorized - invalid or missing API key */
2099
+ 401: {
2100
+ headers: {
2101
+ [name: string]: unknown;
2102
+ };
2103
+ content: {
2104
+ "application/json": components["schemas"]["ErrorResponse"];
2105
+ };
2106
+ };
2107
+ /** @description Resource not found */
2108
+ 404: {
2109
+ headers: {
2110
+ [name: string]: unknown;
2111
+ };
2112
+ content: {
2113
+ "application/json": components["schemas"]["ErrorResponse"];
2114
+ };
2115
+ };
2116
+ /** @description Rate limit exceeded */
2117
+ 429: {
2118
+ headers: {
2119
+ [name: string]: unknown;
2120
+ };
2121
+ content: {
2122
+ "application/json": components["schemas"]["ErrorResponse"];
2123
+ };
2124
+ };
2125
+ /** @description Internal server error */
2126
+ 500: {
2127
+ headers: {
2128
+ [name: string]: unknown;
2129
+ };
2130
+ content: {
2131
+ "application/json": components["schemas"]["ErrorResponse"];
2132
+ };
2133
+ };
2134
+ };
2135
+ };
2136
+ trace?: never;
2137
+ };
2138
+ "/tasks/{id}/subtasks": {
2139
+ parameters: {
2140
+ query?: never;
2141
+ header?: never;
2142
+ path?: never;
2143
+ cookie?: never;
2144
+ };
2145
+ /**
2146
+ * Get subtasks
2147
+ * @description Retrieve all subtasks of a task. Returns a paginated list of tasks that have the specified task as their parent.
2148
+ */
2149
+ get: {
2150
+ parameters: {
2151
+ query?: {
2152
+ /** @description Cursor for pagination */
2153
+ cursor?: string;
2154
+ /** @description Number of items to return (max 100) */
2155
+ limit?: string;
2156
+ /** @description Filter by completion status */
2157
+ done?: "true" | "false";
2158
+ /** @description Include HTML representation of the task description */
2159
+ includeHtml?: boolean | null;
2160
+ };
2161
+ header?: never;
2162
+ path: {
2163
+ /** @description Task ID */
2164
+ id: string;
2165
+ };
2166
+ cookie?: never;
2167
+ };
2168
+ requestBody?: never;
2169
+ responses: {
2170
+ /** @description Successful response */
2171
+ 200: {
2172
+ headers: {
2173
+ [name: string]: unknown;
2174
+ };
2175
+ content: {
2176
+ "application/json": components["schemas"]["TaskSubtasksResponse"];
2177
+ };
2178
+ };
2179
+ /** @description Bad request - validation error */
2180
+ 400: {
2181
+ headers: {
2182
+ [name: string]: unknown;
2183
+ };
2184
+ content: {
2185
+ "application/json": components["schemas"]["ErrorResponse"];
2186
+ };
2187
+ };
2188
+ /** @description Unauthorized - invalid or missing API key */
2189
+ 401: {
2190
+ headers: {
2191
+ [name: string]: unknown;
2192
+ };
2193
+ content: {
2194
+ "application/json": components["schemas"]["ErrorResponse"];
2195
+ };
2196
+ };
2197
+ /** @description Resource not found */
2198
+ 404: {
2199
+ headers: {
2200
+ [name: string]: unknown;
2201
+ };
2202
+ content: {
2203
+ "application/json": components["schemas"]["ErrorResponse"];
2204
+ };
2205
+ };
2206
+ /** @description Rate limit exceeded */
2207
+ 429: {
2208
+ headers: {
2209
+ [name: string]: unknown;
2210
+ };
2211
+ content: {
2212
+ "application/json": components["schemas"]["ErrorResponse"];
2213
+ };
2214
+ };
2215
+ /** @description Internal server error */
2216
+ 500: {
2217
+ headers: {
2218
+ [name: string]: unknown;
2219
+ };
2220
+ content: {
2221
+ "application/json": components["schemas"]["ErrorResponse"];
2222
+ };
2223
+ };
2224
+ };
2225
+ };
2226
+ put?: never;
2227
+ post?: never;
2228
+ delete?: never;
2229
+ options?: never;
2230
+ head?: never;
2231
+ patch?: never;
2232
+ trace?: never;
2233
+ };
2234
+ "/timer": {
2235
+ parameters: {
2236
+ query?: never;
2237
+ header?: never;
2238
+ path?: never;
2239
+ cookie?: never;
2240
+ };
2241
+ /**
2242
+ * Get timer state
2243
+ * @description Get the current session timer state. Returns IDLE if no timer is active.
2244
+ */
2245
+ get: {
2246
+ parameters: {
2247
+ query?: never;
2248
+ header?: never;
2249
+ path?: never;
2250
+ cookie?: never;
2251
+ };
2252
+ requestBody?: never;
2253
+ responses: {
2254
+ /** @description Successful response */
2255
+ 200: {
2256
+ headers: {
2257
+ [name: string]: unknown;
2258
+ };
2259
+ content: {
2260
+ "application/json": components["schemas"]["TimerState"];
2261
+ };
2262
+ };
2263
+ /** @description Bad request - validation error */
2264
+ 400: {
2265
+ headers: {
2266
+ [name: string]: unknown;
2267
+ };
2268
+ content: {
2269
+ "application/json": components["schemas"]["ErrorResponse"];
2270
+ };
2271
+ };
2272
+ /** @description Unauthorized - invalid or missing API key */
2273
+ 401: {
2274
+ headers: {
2275
+ [name: string]: unknown;
2276
+ };
2277
+ content: {
2278
+ "application/json": components["schemas"]["ErrorResponse"];
2279
+ };
2280
+ };
2281
+ /** @description Resource not found */
2282
+ 404: {
2283
+ headers: {
2284
+ [name: string]: unknown;
2285
+ };
2286
+ content: {
2287
+ "application/json": components["schemas"]["ErrorResponse"];
2288
+ };
2289
+ };
2290
+ /** @description Rate limit exceeded */
2291
+ 429: {
2292
+ headers: {
2293
+ [name: string]: unknown;
2294
+ };
2295
+ content: {
2296
+ "application/json": components["schemas"]["ErrorResponse"];
2297
+ };
2298
+ };
2299
+ /** @description Internal server error */
2300
+ 500: {
2301
+ headers: {
2302
+ [name: string]: unknown;
2303
+ };
2304
+ content: {
2305
+ "application/json": components["schemas"]["ErrorResponse"];
2306
+ };
2307
+ };
2308
+ };
2309
+ };
2310
+ put?: never;
2311
+ post?: never;
2312
+ /**
2313
+ * Cancel timer
2314
+ * @description Cancel the timer without saving any sessions. All tracked time will be discarded.
2315
+ */
2316
+ delete: {
2317
+ parameters: {
2318
+ query?: never;
2319
+ header?: never;
2320
+ path?: never;
2321
+ cookie?: never;
2322
+ };
2323
+ requestBody?: never;
2324
+ responses: {
2325
+ /** @description Successful response */
2326
+ 200: {
2327
+ headers: {
2328
+ [name: string]: unknown;
2329
+ };
2330
+ content: {
2331
+ "application/json": components["schemas"]["TimerState"];
2332
+ };
2333
+ };
2334
+ /** @description Bad request - validation error */
2335
+ 400: {
2336
+ headers: {
2337
+ [name: string]: unknown;
2338
+ };
2339
+ content: {
2340
+ "application/json": components["schemas"]["ErrorResponse"];
2341
+ };
2342
+ };
2343
+ /** @description Unauthorized - invalid or missing API key */
2344
+ 401: {
2345
+ headers: {
2346
+ [name: string]: unknown;
2347
+ };
2348
+ content: {
2349
+ "application/json": components["schemas"]["ErrorResponse"];
2350
+ };
2351
+ };
2352
+ /** @description Resource not found */
2353
+ 404: {
2354
+ headers: {
2355
+ [name: string]: unknown;
2356
+ };
2357
+ content: {
2358
+ "application/json": components["schemas"]["ErrorResponse"];
2359
+ };
2360
+ };
2361
+ /** @description Rate limit exceeded */
2362
+ 429: {
2363
+ headers: {
2364
+ [name: string]: unknown;
2365
+ };
2366
+ content: {
2367
+ "application/json": components["schemas"]["ErrorResponse"];
2368
+ };
2369
+ };
2370
+ /** @description Internal server error */
2371
+ 500: {
2372
+ headers: {
2373
+ [name: string]: unknown;
2374
+ };
2375
+ content: {
2376
+ "application/json": components["schemas"]["ErrorResponse"];
2377
+ };
2378
+ };
2379
+ };
2380
+ };
2381
+ options?: never;
2382
+ head?: never;
2383
+ patch?: never;
2384
+ trace?: never;
2385
+ };
2386
+ "/timer/start": {
2387
+ parameters: {
2388
+ query?: never;
2389
+ header?: never;
2390
+ path?: never;
2391
+ cookie?: never;
2392
+ };
2393
+ get?: never;
2394
+ put?: never;
2395
+ /**
2396
+ * Start timer
2397
+ * @description Start a new session timer. If a timer is already running, it will be stopped first.
2398
+ */
2399
+ post: {
2400
+ parameters: {
2401
+ query?: never;
2402
+ header?: never;
2403
+ path?: never;
2404
+ cookie?: never;
2405
+ };
2406
+ requestBody: {
42
2407
  content: {
43
- /** @description Node type (e.g., "paragraph", "text", "heading", "bulletList") */
44
- type: string;
45
- /** @description Node attributes */
46
- attrs?: {
47
- [key: string]: (string | null) | number | boolean;
2408
+ "application/json": components["schemas"]["StartTimerRequest"];
2409
+ };
2410
+ };
2411
+ responses: {
2412
+ /** @description Successful response */
2413
+ 200: {
2414
+ headers: {
2415
+ [name: string]: unknown;
2416
+ };
2417
+ content: {
2418
+ "application/json": components["schemas"]["TimerState"];
2419
+ };
2420
+ };
2421
+ /** @description Bad request - validation error */
2422
+ 400: {
2423
+ headers: {
2424
+ [name: string]: unknown;
2425
+ };
2426
+ content: {
2427
+ "application/json": components["schemas"]["ErrorResponse"];
2428
+ };
2429
+ };
2430
+ /** @description Unauthorized - invalid or missing API key */
2431
+ 401: {
2432
+ headers: {
2433
+ [name: string]: unknown;
2434
+ };
2435
+ content: {
2436
+ "application/json": components["schemas"]["ErrorResponse"];
2437
+ };
2438
+ };
2439
+ /** @description Resource not found */
2440
+ 404: {
2441
+ headers: {
2442
+ [name: string]: unknown;
2443
+ };
2444
+ content: {
2445
+ "application/json": components["schemas"]["ErrorResponse"];
2446
+ };
2447
+ };
2448
+ /** @description Rate limit exceeded */
2449
+ 429: {
2450
+ headers: {
2451
+ [name: string]: unknown;
2452
+ };
2453
+ content: {
2454
+ "application/json": components["schemas"]["ErrorResponse"];
2455
+ };
2456
+ };
2457
+ /** @description Internal server error */
2458
+ 500: {
2459
+ headers: {
2460
+ [name: string]: unknown;
2461
+ };
2462
+ content: {
2463
+ "application/json": components["schemas"]["ErrorResponse"];
2464
+ };
2465
+ };
2466
+ };
2467
+ };
2468
+ delete?: never;
2469
+ options?: never;
2470
+ head?: never;
2471
+ patch?: never;
2472
+ trace?: never;
2473
+ };
2474
+ "/timer/pause": {
2475
+ parameters: {
2476
+ query?: never;
2477
+ header?: never;
2478
+ path?: never;
2479
+ cookie?: never;
2480
+ };
2481
+ get?: never;
2482
+ put?: never;
2483
+ /**
2484
+ * Pause timer
2485
+ * @description Pause the currently running timer.
2486
+ */
2487
+ post: {
2488
+ parameters: {
2489
+ query?: never;
2490
+ header?: never;
2491
+ path?: never;
2492
+ cookie?: never;
2493
+ };
2494
+ requestBody?: never;
2495
+ responses: {
2496
+ /** @description Successful response */
2497
+ 200: {
2498
+ headers: {
2499
+ [name: string]: unknown;
2500
+ };
2501
+ content: {
2502
+ "application/json": components["schemas"]["TimerState"];
2503
+ };
2504
+ };
2505
+ /** @description Bad request - validation error */
2506
+ 400: {
2507
+ headers: {
2508
+ [name: string]: unknown;
2509
+ };
2510
+ content: {
2511
+ "application/json": components["schemas"]["ErrorResponse"];
2512
+ };
2513
+ };
2514
+ /** @description Unauthorized - invalid or missing API key */
2515
+ 401: {
2516
+ headers: {
2517
+ [name: string]: unknown;
2518
+ };
2519
+ content: {
2520
+ "application/json": components["schemas"]["ErrorResponse"];
2521
+ };
2522
+ };
2523
+ /** @description Resource not found */
2524
+ 404: {
2525
+ headers: {
2526
+ [name: string]: unknown;
2527
+ };
2528
+ content: {
2529
+ "application/json": components["schemas"]["ErrorResponse"];
2530
+ };
2531
+ };
2532
+ /** @description Rate limit exceeded */
2533
+ 429: {
2534
+ headers: {
2535
+ [name: string]: unknown;
2536
+ };
2537
+ content: {
2538
+ "application/json": components["schemas"]["ErrorResponse"];
2539
+ };
2540
+ };
2541
+ /** @description Internal server error */
2542
+ 500: {
2543
+ headers: {
2544
+ [name: string]: unknown;
2545
+ };
2546
+ content: {
2547
+ "application/json": components["schemas"]["ErrorResponse"];
2548
+ };
2549
+ };
2550
+ };
2551
+ };
2552
+ delete?: never;
2553
+ options?: never;
2554
+ head?: never;
2555
+ patch?: never;
2556
+ trace?: never;
2557
+ };
2558
+ "/timer/continue": {
2559
+ parameters: {
2560
+ query?: never;
2561
+ header?: never;
2562
+ path?: never;
2563
+ cookie?: never;
2564
+ };
2565
+ get?: never;
2566
+ put?: never;
2567
+ /**
2568
+ * Continue timer
2569
+ * @description Resume a paused timer.
2570
+ */
2571
+ post: {
2572
+ parameters: {
2573
+ query?: never;
2574
+ header?: never;
2575
+ path?: never;
2576
+ cookie?: never;
2577
+ };
2578
+ requestBody?: never;
2579
+ responses: {
2580
+ /** @description Successful response */
2581
+ 200: {
2582
+ headers: {
2583
+ [name: string]: unknown;
2584
+ };
2585
+ content: {
2586
+ "application/json": components["schemas"]["TimerState"];
2587
+ };
2588
+ };
2589
+ /** @description Bad request - validation error */
2590
+ 400: {
2591
+ headers: {
2592
+ [name: string]: unknown;
2593
+ };
2594
+ content: {
2595
+ "application/json": components["schemas"]["ErrorResponse"];
2596
+ };
2597
+ };
2598
+ /** @description Unauthorized - invalid or missing API key */
2599
+ 401: {
2600
+ headers: {
2601
+ [name: string]: unknown;
2602
+ };
2603
+ content: {
2604
+ "application/json": components["schemas"]["ErrorResponse"];
2605
+ };
2606
+ };
2607
+ /** @description Resource not found */
2608
+ 404: {
2609
+ headers: {
2610
+ [name: string]: unknown;
2611
+ };
2612
+ content: {
2613
+ "application/json": components["schemas"]["ErrorResponse"];
2614
+ };
2615
+ };
2616
+ /** @description Rate limit exceeded */
2617
+ 429: {
2618
+ headers: {
2619
+ [name: string]: unknown;
2620
+ };
2621
+ content: {
2622
+ "application/json": components["schemas"]["ErrorResponse"];
2623
+ };
2624
+ };
2625
+ /** @description Internal server error */
2626
+ 500: {
2627
+ headers: {
2628
+ [name: string]: unknown;
2629
+ };
2630
+ content: {
2631
+ "application/json": components["schemas"]["ErrorResponse"];
2632
+ };
2633
+ };
2634
+ };
2635
+ };
2636
+ delete?: never;
2637
+ options?: never;
2638
+ head?: never;
2639
+ patch?: never;
2640
+ trace?: never;
2641
+ };
2642
+ "/timer/stop": {
2643
+ parameters: {
2644
+ query?: never;
2645
+ header?: never;
2646
+ path?: never;
2647
+ cookie?: never;
2648
+ };
2649
+ get?: never;
2650
+ put?: never;
2651
+ /**
2652
+ * Stop timer
2653
+ * @description Stop the timer and finalize all sessions. Returns the completed sessions.
2654
+ */
2655
+ post: {
2656
+ parameters: {
2657
+ query?: never;
2658
+ header?: never;
2659
+ path?: never;
2660
+ cookie?: never;
2661
+ };
2662
+ requestBody?: never;
2663
+ responses: {
2664
+ /** @description Successful response */
2665
+ 200: {
2666
+ headers: {
2667
+ [name: string]: unknown;
2668
+ };
2669
+ content: {
2670
+ "application/json": components["schemas"]["StopTimerResponse"];
2671
+ };
2672
+ };
2673
+ /** @description Bad request - validation error */
2674
+ 400: {
2675
+ headers: {
2676
+ [name: string]: unknown;
2677
+ };
2678
+ content: {
2679
+ "application/json": components["schemas"]["ErrorResponse"];
2680
+ };
2681
+ };
2682
+ /** @description Unauthorized - invalid or missing API key */
2683
+ 401: {
2684
+ headers: {
2685
+ [name: string]: unknown;
2686
+ };
2687
+ content: {
2688
+ "application/json": components["schemas"]["ErrorResponse"];
2689
+ };
2690
+ };
2691
+ /** @description Resource not found */
2692
+ 404: {
2693
+ headers: {
2694
+ [name: string]: unknown;
2695
+ };
2696
+ content: {
2697
+ "application/json": components["schemas"]["ErrorResponse"];
2698
+ };
2699
+ };
2700
+ /** @description Rate limit exceeded */
2701
+ 429: {
2702
+ headers: {
2703
+ [name: string]: unknown;
2704
+ };
2705
+ content: {
2706
+ "application/json": components["schemas"]["ErrorResponse"];
2707
+ };
2708
+ };
2709
+ /** @description Internal server error */
2710
+ 500: {
2711
+ headers: {
2712
+ [name: string]: unknown;
2713
+ };
2714
+ content: {
2715
+ "application/json": components["schemas"]["ErrorResponse"];
2716
+ };
2717
+ };
2718
+ };
2719
+ };
2720
+ delete?: never;
2721
+ options?: never;
2722
+ head?: never;
2723
+ patch?: never;
2724
+ trace?: never;
2725
+ };
2726
+ "/webhooks": {
2727
+ parameters: {
2728
+ query?: never;
2729
+ header?: never;
2730
+ path?: never;
2731
+ cookie?: never;
2732
+ };
2733
+ /**
2734
+ * List webhooks
2735
+ * @description Retrieve a paginated list of webhooks for the workspace.
2736
+ */
2737
+ get: {
2738
+ parameters: {
2739
+ query?: {
2740
+ /** @description Number of webhooks to return */
2741
+ limit?: number;
2742
+ /** @description Cursor for pagination */
2743
+ cursor?: string;
2744
+ /** @description Filter by active status */
2745
+ isActive?: "true" | "false";
2746
+ };
2747
+ header?: never;
2748
+ path?: never;
2749
+ cookie?: never;
2750
+ };
2751
+ requestBody?: never;
2752
+ responses: {
2753
+ /** @description Successful response */
2754
+ 200: {
2755
+ headers: {
2756
+ [name: string]: unknown;
2757
+ };
2758
+ content: {
2759
+ "application/json": components["schemas"]["WebhookListResponse"];
2760
+ };
2761
+ };
2762
+ /** @description Bad request - validation error */
2763
+ 400: {
2764
+ headers: {
2765
+ [name: string]: unknown;
2766
+ };
2767
+ content: {
2768
+ "application/json": components["schemas"]["ErrorResponse"];
2769
+ };
2770
+ };
2771
+ /** @description Unauthorized - invalid or missing API key */
2772
+ 401: {
2773
+ headers: {
2774
+ [name: string]: unknown;
2775
+ };
2776
+ content: {
2777
+ "application/json": components["schemas"]["ErrorResponse"];
2778
+ };
2779
+ };
2780
+ /** @description Resource not found */
2781
+ 404: {
2782
+ headers: {
2783
+ [name: string]: unknown;
2784
+ };
2785
+ content: {
2786
+ "application/json": components["schemas"]["ErrorResponse"];
2787
+ };
2788
+ };
2789
+ /** @description Rate limit exceeded */
2790
+ 429: {
2791
+ headers: {
2792
+ [name: string]: unknown;
2793
+ };
2794
+ content: {
2795
+ "application/json": components["schemas"]["ErrorResponse"];
2796
+ };
2797
+ };
2798
+ /** @description Internal server error */
2799
+ 500: {
2800
+ headers: {
2801
+ [name: string]: unknown;
2802
+ };
2803
+ content: {
2804
+ "application/json": components["schemas"]["ErrorResponse"];
2805
+ };
2806
+ };
2807
+ };
2808
+ };
2809
+ put?: never;
2810
+ /**
2811
+ * Create webhook
2812
+ * @description Create a new webhook. The secret is only returned once during creation.
2813
+ */
2814
+ post: {
2815
+ parameters: {
2816
+ query?: never;
2817
+ header?: never;
2818
+ path?: never;
2819
+ cookie?: never;
2820
+ };
2821
+ requestBody: {
2822
+ content: {
2823
+ "application/json": components["schemas"]["CreateWebhookRequest"];
2824
+ };
2825
+ };
2826
+ responses: {
2827
+ /** @description Successful response */
2828
+ 200: {
2829
+ headers: {
2830
+ [name: string]: unknown;
2831
+ };
2832
+ content: {
2833
+ "application/json": components["schemas"]["WebhookWithSecret"];
2834
+ };
2835
+ };
2836
+ /** @description Bad request - validation error */
2837
+ 400: {
2838
+ headers: {
2839
+ [name: string]: unknown;
2840
+ };
2841
+ content: {
2842
+ "application/json": components["schemas"]["ErrorResponse"];
2843
+ };
2844
+ };
2845
+ /** @description Unauthorized - invalid or missing API key */
2846
+ 401: {
2847
+ headers: {
2848
+ [name: string]: unknown;
2849
+ };
2850
+ content: {
2851
+ "application/json": components["schemas"]["ErrorResponse"];
2852
+ };
2853
+ };
2854
+ /** @description Resource not found */
2855
+ 404: {
2856
+ headers: {
2857
+ [name: string]: unknown;
2858
+ };
2859
+ content: {
2860
+ "application/json": components["schemas"]["ErrorResponse"];
2861
+ };
2862
+ };
2863
+ /** @description Rate limit exceeded */
2864
+ 429: {
2865
+ headers: {
2866
+ [name: string]: unknown;
2867
+ };
2868
+ content: {
2869
+ "application/json": components["schemas"]["ErrorResponse"];
2870
+ };
2871
+ };
2872
+ /** @description Internal server error */
2873
+ 500: {
2874
+ headers: {
2875
+ [name: string]: unknown;
2876
+ };
2877
+ content: {
2878
+ "application/json": components["schemas"]["ErrorResponse"];
2879
+ };
2880
+ };
2881
+ };
2882
+ };
2883
+ delete?: never;
2884
+ options?: never;
2885
+ head?: never;
2886
+ patch?: never;
2887
+ trace?: never;
2888
+ };
2889
+ "/webhooks/{id}": {
2890
+ parameters: {
2891
+ query?: never;
2892
+ header?: never;
2893
+ path?: never;
2894
+ cookie?: never;
2895
+ };
2896
+ /**
2897
+ * Get webhook
2898
+ * @description Retrieve a single webhook by ID.
2899
+ */
2900
+ get: {
2901
+ parameters: {
2902
+ query?: never;
2903
+ header?: never;
2904
+ path: {
2905
+ /** @description Webhook ID */
2906
+ id: string;
2907
+ };
2908
+ cookie?: never;
2909
+ };
2910
+ requestBody?: never;
2911
+ responses: {
2912
+ /** @description Successful response */
2913
+ 200: {
2914
+ headers: {
2915
+ [name: string]: unknown;
2916
+ };
2917
+ content: {
2918
+ "application/json": components["schemas"]["Webhook"];
2919
+ };
2920
+ };
2921
+ /** @description Bad request - validation error */
2922
+ 400: {
2923
+ headers: {
2924
+ [name: string]: unknown;
2925
+ };
2926
+ content: {
2927
+ "application/json": components["schemas"]["ErrorResponse"];
2928
+ };
2929
+ };
2930
+ /** @description Unauthorized - invalid or missing API key */
2931
+ 401: {
2932
+ headers: {
2933
+ [name: string]: unknown;
2934
+ };
2935
+ content: {
2936
+ "application/json": components["schemas"]["ErrorResponse"];
2937
+ };
2938
+ };
2939
+ /** @description Resource not found */
2940
+ 404: {
2941
+ headers: {
2942
+ [name: string]: unknown;
2943
+ };
2944
+ content: {
2945
+ "application/json": components["schemas"]["ErrorResponse"];
2946
+ };
2947
+ };
2948
+ /** @description Rate limit exceeded */
2949
+ 429: {
2950
+ headers: {
2951
+ [name: string]: unknown;
2952
+ };
2953
+ content: {
2954
+ "application/json": components["schemas"]["ErrorResponse"];
2955
+ };
2956
+ };
2957
+ /** @description Internal server error */
2958
+ 500: {
2959
+ headers: {
2960
+ [name: string]: unknown;
2961
+ };
2962
+ content: {
2963
+ "application/json": components["schemas"]["ErrorResponse"];
2964
+ };
2965
+ };
2966
+ };
2967
+ };
2968
+ put?: never;
2969
+ post?: never;
2970
+ /**
2971
+ * Delete webhook
2972
+ * @description Delete a webhook. This will stop all future deliveries.
2973
+ */
2974
+ delete: {
2975
+ parameters: {
2976
+ query?: never;
2977
+ header?: never;
2978
+ path: {
2979
+ /** @description Webhook ID */
2980
+ id: string;
2981
+ };
2982
+ cookie?: never;
2983
+ };
2984
+ requestBody?: never;
2985
+ responses: {
2986
+ /** @description Successful response */
2987
+ 200: {
2988
+ headers: {
2989
+ [name: string]: unknown;
2990
+ };
2991
+ content: {
2992
+ "application/json": components["schemas"]["DeleteWebhookResponse"];
2993
+ };
2994
+ };
2995
+ /** @description Bad request - validation error */
2996
+ 400: {
2997
+ headers: {
2998
+ [name: string]: unknown;
2999
+ };
3000
+ content: {
3001
+ "application/json": components["schemas"]["ErrorResponse"];
3002
+ };
3003
+ };
3004
+ /** @description Unauthorized - invalid or missing API key */
3005
+ 401: {
3006
+ headers: {
3007
+ [name: string]: unknown;
3008
+ };
3009
+ content: {
3010
+ "application/json": components["schemas"]["ErrorResponse"];
3011
+ };
3012
+ };
3013
+ /** @description Resource not found */
3014
+ 404: {
3015
+ headers: {
3016
+ [name: string]: unknown;
3017
+ };
3018
+ content: {
3019
+ "application/json": components["schemas"]["ErrorResponse"];
3020
+ };
3021
+ };
3022
+ /** @description Rate limit exceeded */
3023
+ 429: {
3024
+ headers: {
3025
+ [name: string]: unknown;
3026
+ };
3027
+ content: {
3028
+ "application/json": components["schemas"]["ErrorResponse"];
3029
+ };
3030
+ };
3031
+ /** @description Internal server error */
3032
+ 500: {
3033
+ headers: {
3034
+ [name: string]: unknown;
3035
+ };
3036
+ content: {
3037
+ "application/json": components["schemas"]["ErrorResponse"];
3038
+ };
3039
+ };
3040
+ };
3041
+ };
3042
+ options?: never;
3043
+ head?: never;
3044
+ /**
3045
+ * Update webhook
3046
+ * @description Update an existing webhook. Only provided fields will be modified.
3047
+ */
3048
+ patch: {
3049
+ parameters: {
3050
+ query?: never;
3051
+ header?: never;
3052
+ path: {
3053
+ /** @description Webhook ID */
3054
+ id: string;
3055
+ };
3056
+ cookie?: never;
3057
+ };
3058
+ requestBody: {
3059
+ content: {
3060
+ "application/json": components["schemas"]["UpdateWebhookRequest"];
3061
+ };
3062
+ };
3063
+ responses: {
3064
+ /** @description Successful response */
3065
+ 200: {
3066
+ headers: {
3067
+ [name: string]: unknown;
3068
+ };
3069
+ content: {
3070
+ "application/json": components["schemas"]["Webhook"];
3071
+ };
3072
+ };
3073
+ /** @description Bad request - validation error */
3074
+ 400: {
3075
+ headers: {
3076
+ [name: string]: unknown;
3077
+ };
3078
+ content: {
3079
+ "application/json": components["schemas"]["ErrorResponse"];
3080
+ };
3081
+ };
3082
+ /** @description Unauthorized - invalid or missing API key */
3083
+ 401: {
3084
+ headers: {
3085
+ [name: string]: unknown;
3086
+ };
3087
+ content: {
3088
+ "application/json": components["schemas"]["ErrorResponse"];
3089
+ };
3090
+ };
3091
+ /** @description Resource not found */
3092
+ 404: {
3093
+ headers: {
3094
+ [name: string]: unknown;
48
3095
  };
49
- /** @description Child nodes (recursive DocumentNode array) */
50
- content?: Record<string, never>[];
51
- /** @description Text content (only for text nodes) */
52
- text?: string;
53
- /** @description Text marks (bold, italic, links, etc.) - only for text nodes */
54
- marks?: {
55
- /** @description Mark type (e.g., "bold", "italic", "link") */
56
- type: string;
57
- /** @description Mark attributes */
58
- attrs?: {
59
- [key: string]: (string | null) | number | boolean;
60
- };
61
- }[];
62
- }[];
3096
+ content: {
3097
+ "application/json": components["schemas"]["ErrorResponse"];
3098
+ };
3099
+ };
3100
+ /** @description Rate limit exceeded */
3101
+ 429: {
3102
+ headers: {
3103
+ [name: string]: unknown;
3104
+ };
3105
+ content: {
3106
+ "application/json": components["schemas"]["ErrorResponse"];
3107
+ };
3108
+ };
3109
+ /** @description Internal server error */
3110
+ 500: {
3111
+ headers: {
3112
+ [name: string]: unknown;
3113
+ };
3114
+ content: {
3115
+ "application/json": components["schemas"]["ErrorResponse"];
3116
+ };
3117
+ };
63
3118
  };
64
- /** @description Description content as plain text */
65
- plainText: string;
66
- } | null;
3119
+ };
3120
+ trace?: never;
3121
+ };
3122
+ "/webhooks/{id}/deliveries": {
3123
+ parameters: {
3124
+ query?: never;
3125
+ header?: never;
3126
+ path?: never;
3127
+ cookie?: never;
3128
+ };
3129
+ /**
3130
+ * List webhook deliveries
3131
+ * @description Retrieve recent delivery attempts for a webhook.
3132
+ */
3133
+ get: {
3134
+ parameters: {
3135
+ query?: {
3136
+ /** @description Number of deliveries to return */
3137
+ limit?: number;
3138
+ /** @description Cursor for pagination */
3139
+ cursor?: string;
3140
+ };
3141
+ header?: never;
3142
+ path: {
3143
+ /** @description Webhook ID */
3144
+ id: string;
3145
+ };
3146
+ cookie?: never;
3147
+ };
3148
+ requestBody?: never;
3149
+ responses: {
3150
+ /** @description Successful response */
3151
+ 200: {
3152
+ headers: {
3153
+ [name: string]: unknown;
3154
+ };
3155
+ content: {
3156
+ "application/json": components["schemas"]["WebhookDeliveryListResponse"];
3157
+ };
3158
+ };
3159
+ /** @description Bad request - validation error */
3160
+ 400: {
3161
+ headers: {
3162
+ [name: string]: unknown;
3163
+ };
3164
+ content: {
3165
+ "application/json": components["schemas"]["ErrorResponse"];
3166
+ };
3167
+ };
3168
+ /** @description Unauthorized - invalid or missing API key */
3169
+ 401: {
3170
+ headers: {
3171
+ [name: string]: unknown;
3172
+ };
3173
+ content: {
3174
+ "application/json": components["schemas"]["ErrorResponse"];
3175
+ };
3176
+ };
3177
+ /** @description Resource not found */
3178
+ 404: {
3179
+ headers: {
3180
+ [name: string]: unknown;
3181
+ };
3182
+ content: {
3183
+ "application/json": components["schemas"]["ErrorResponse"];
3184
+ };
3185
+ };
3186
+ /** @description Rate limit exceeded */
3187
+ 429: {
3188
+ headers: {
3189
+ [name: string]: unknown;
3190
+ };
3191
+ content: {
3192
+ "application/json": components["schemas"]["ErrorResponse"];
3193
+ };
3194
+ };
3195
+ /** @description Internal server error */
3196
+ 500: {
3197
+ headers: {
3198
+ [name: string]: unknown;
3199
+ };
3200
+ content: {
3201
+ "application/json": components["schemas"]["ErrorResponse"];
3202
+ };
3203
+ };
3204
+ };
3205
+ };
3206
+ put?: never;
3207
+ post?: never;
3208
+ delete?: never;
3209
+ options?: never;
3210
+ head?: never;
3211
+ patch?: never;
3212
+ trace?: never;
3213
+ };
3214
+ "/webhooks/{id}/rotate-secret": {
3215
+ parameters: {
3216
+ query?: never;
3217
+ header?: never;
3218
+ path?: never;
3219
+ cookie?: never;
3220
+ };
3221
+ get?: never;
3222
+ put?: never;
3223
+ /**
3224
+ * Rotate webhook secret
3225
+ * @description Generate a new secret for the webhook. The old secret will be immediately invalidated.
3226
+ */
3227
+ post: {
3228
+ parameters: {
3229
+ query?: never;
3230
+ header?: never;
3231
+ path: {
3232
+ /** @description Webhook ID */
3233
+ id: string;
3234
+ };
3235
+ cookie?: never;
3236
+ };
3237
+ requestBody?: never;
3238
+ responses: {
3239
+ /** @description Successful response */
3240
+ 200: {
3241
+ headers: {
3242
+ [name: string]: unknown;
3243
+ };
3244
+ content: {
3245
+ "application/json": components["schemas"]["RotateSecretResponse"];
3246
+ };
3247
+ };
3248
+ /** @description Bad request - validation error */
3249
+ 400: {
3250
+ headers: {
3251
+ [name: string]: unknown;
3252
+ };
3253
+ content: {
3254
+ "application/json": components["schemas"]["ErrorResponse"];
3255
+ };
3256
+ };
3257
+ /** @description Unauthorized - invalid or missing API key */
3258
+ 401: {
3259
+ headers: {
3260
+ [name: string]: unknown;
3261
+ };
3262
+ content: {
3263
+ "application/json": components["schemas"]["ErrorResponse"];
3264
+ };
3265
+ };
3266
+ /** @description Resource not found */
3267
+ 404: {
3268
+ headers: {
3269
+ [name: string]: unknown;
3270
+ };
3271
+ content: {
3272
+ "application/json": components["schemas"]["ErrorResponse"];
3273
+ };
3274
+ };
3275
+ /** @description Rate limit exceeded */
3276
+ 429: {
3277
+ headers: {
3278
+ [name: string]: unknown;
3279
+ };
3280
+ content: {
3281
+ "application/json": components["schemas"]["ErrorResponse"];
3282
+ };
3283
+ };
3284
+ /** @description Internal server error */
3285
+ 500: {
3286
+ headers: {
3287
+ [name: string]: unknown;
3288
+ };
3289
+ content: {
3290
+ "application/json": components["schemas"]["ErrorResponse"];
3291
+ };
3292
+ };
3293
+ };
3294
+ };
3295
+ delete?: never;
3296
+ options?: never;
3297
+ head?: never;
3298
+ patch?: never;
3299
+ trace?: never;
3300
+ };
3301
+ }
3302
+ type webhooks = Record<string, never>;
3303
+ interface components {
3304
+ schemas: {
3305
+ Task: components["schemas"]["LocuTask"] | components["schemas"]["LinearTask"] | components["schemas"]["JiraTask"];
67
3306
  LocuTask: {
68
3307
  id: string;
69
3308
  name: string;
70
- done: "completed" | "canceled" | unknown;
3309
+ done: "completed" | "canceled" | null;
71
3310
  doneAt: number | null;
72
3311
  createdAt: number;
73
3312
  parent: {
@@ -80,19 +3319,82 @@ interface components {
80
3319
  } | null;
81
3320
  projectId?: string | null;
82
3321
  cursorAgentUrl?: string | null;
83
- integrationId: unknown;
3322
+ integrationId: null;
84
3323
  slackLink?: string;
85
3324
  /**
86
3325
  * @default locu
87
3326
  * @enum {string}
88
3327
  */
89
3328
  type: "locu";
90
- description?: components["schemas"]["TaskDescription"];
3329
+ /** @description Task description in multiple formats */
3330
+ description?: {
3331
+ /** @description Description content as Markdown */
3332
+ markdown: string;
3333
+ /** @description Description content as HTML (only included when includeHtml=true) */
3334
+ html?: string;
3335
+ /**
3336
+ * @description Description content as ProseMirror JSON document
3337
+ * @example {
3338
+ * "type": "doc",
3339
+ * "content": [
3340
+ * {
3341
+ * "type": "paragraph",
3342
+ * "content": [
3343
+ * {
3344
+ * "type": "text",
3345
+ * "text": "Hello "
3346
+ * },
3347
+ * {
3348
+ * "type": "text",
3349
+ * "text": "world",
3350
+ * "marks": [
3351
+ * {
3352
+ * "type": "bold"
3353
+ * }
3354
+ * ]
3355
+ * }
3356
+ * ]
3357
+ * }
3358
+ * ]
3359
+ * }
3360
+ */
3361
+ json?: {
3362
+ /**
3363
+ * @description Document root type, always "doc"
3364
+ * @enum {string}
3365
+ */
3366
+ type: "doc";
3367
+ /** @description Array of child document nodes */
3368
+ content: {
3369
+ /** @description Node type (e.g., "paragraph", "text", "heading", "bulletList") */
3370
+ type: string;
3371
+ /** @description Node attributes */
3372
+ attrs?: {
3373
+ [key: string]: (string | null) | number | boolean;
3374
+ };
3375
+ /** @description Child nodes (recursive DocumentNode array) */
3376
+ content?: Record<string, never>[];
3377
+ /** @description Text content (only for text nodes) */
3378
+ text?: string;
3379
+ /** @description Text marks (bold, italic, links, etc.) - only for text nodes */
3380
+ marks?: {
3381
+ /** @description Mark type (e.g., "bold", "italic", "link") */
3382
+ type: string;
3383
+ /** @description Mark attributes */
3384
+ attrs?: {
3385
+ [key: string]: (string | null) | number | boolean;
3386
+ };
3387
+ }[];
3388
+ }[];
3389
+ };
3390
+ /** @description Description content as plain text */
3391
+ plainText: string;
3392
+ } | null;
91
3393
  };
92
3394
  LinearTask: {
93
3395
  id: string;
94
3396
  name: string;
95
- done: "completed" | "canceled" | unknown;
3397
+ done: "completed" | "canceled" | null;
96
3398
  doneAt: number | null;
97
3399
  createdAt: number;
98
3400
  parent: {
@@ -110,7 +3412,70 @@ interface components {
110
3412
  priority?: number;
111
3413
  organizationId: string;
112
3414
  teamId: string;
113
- description?: components["schemas"]["TaskDescription"];
3415
+ /** @description Task description in multiple formats */
3416
+ description?: {
3417
+ /** @description Description content as Markdown */
3418
+ markdown: string;
3419
+ /** @description Description content as HTML (only included when includeHtml=true) */
3420
+ html?: string;
3421
+ /**
3422
+ * @description Description content as ProseMirror JSON document
3423
+ * @example {
3424
+ * "type": "doc",
3425
+ * "content": [
3426
+ * {
3427
+ * "type": "paragraph",
3428
+ * "content": [
3429
+ * {
3430
+ * "type": "text",
3431
+ * "text": "Hello "
3432
+ * },
3433
+ * {
3434
+ * "type": "text",
3435
+ * "text": "world",
3436
+ * "marks": [
3437
+ * {
3438
+ * "type": "bold"
3439
+ * }
3440
+ * ]
3441
+ * }
3442
+ * ]
3443
+ * }
3444
+ * ]
3445
+ * }
3446
+ */
3447
+ json?: {
3448
+ /**
3449
+ * @description Document root type, always "doc"
3450
+ * @enum {string}
3451
+ */
3452
+ type: "doc";
3453
+ /** @description Array of child document nodes */
3454
+ content: {
3455
+ /** @description Node type (e.g., "paragraph", "text", "heading", "bulletList") */
3456
+ type: string;
3457
+ /** @description Node attributes */
3458
+ attrs?: {
3459
+ [key: string]: (string | null) | number | boolean;
3460
+ };
3461
+ /** @description Child nodes (recursive DocumentNode array) */
3462
+ content?: Record<string, never>[];
3463
+ /** @description Text content (only for text nodes) */
3464
+ text?: string;
3465
+ /** @description Text marks (bold, italic, links, etc.) - only for text nodes */
3466
+ marks?: {
3467
+ /** @description Mark type (e.g., "bold", "italic", "link") */
3468
+ type: string;
3469
+ /** @description Mark attributes */
3470
+ attrs?: {
3471
+ [key: string]: (string | null) | number | boolean;
3472
+ };
3473
+ }[];
3474
+ }[];
3475
+ };
3476
+ /** @description Description content as plain text */
3477
+ plainText: string;
3478
+ } | null;
114
3479
  assignee: {
115
3480
  id: string;
116
3481
  name: string;
@@ -131,7 +3496,7 @@ interface components {
131
3496
  JiraTask: {
132
3497
  id: string;
133
3498
  name: string;
134
- done: "completed" | "canceled" | unknown;
3499
+ done: "completed" | "canceled" | null;
135
3500
  doneAt: number | null;
136
3501
  createdAt: number;
137
3502
  parent: {
@@ -145,7 +3510,70 @@ interface components {
145
3510
  projectId: string;
146
3511
  cursorAgentUrl?: string | null;
147
3512
  integrationId: string;
148
- description?: components["schemas"]["TaskDescription"];
3513
+ /** @description Task description in multiple formats */
3514
+ description?: {
3515
+ /** @description Description content as Markdown */
3516
+ markdown: string;
3517
+ /** @description Description content as HTML (only included when includeHtml=true) */
3518
+ html?: string;
3519
+ /**
3520
+ * @description Description content as ProseMirror JSON document
3521
+ * @example {
3522
+ * "type": "doc",
3523
+ * "content": [
3524
+ * {
3525
+ * "type": "paragraph",
3526
+ * "content": [
3527
+ * {
3528
+ * "type": "text",
3529
+ * "text": "Hello "
3530
+ * },
3531
+ * {
3532
+ * "type": "text",
3533
+ * "text": "world",
3534
+ * "marks": [
3535
+ * {
3536
+ * "type": "bold"
3537
+ * }
3538
+ * ]
3539
+ * }
3540
+ * ]
3541
+ * }
3542
+ * ]
3543
+ * }
3544
+ */
3545
+ json?: {
3546
+ /**
3547
+ * @description Document root type, always "doc"
3548
+ * @enum {string}
3549
+ */
3550
+ type: "doc";
3551
+ /** @description Array of child document nodes */
3552
+ content: {
3553
+ /** @description Node type (e.g., "paragraph", "text", "heading", "bulletList") */
3554
+ type: string;
3555
+ /** @description Node attributes */
3556
+ attrs?: {
3557
+ [key: string]: (string | null) | number | boolean;
3558
+ };
3559
+ /** @description Child nodes (recursive DocumentNode array) */
3560
+ content?: Record<string, never>[];
3561
+ /** @description Text content (only for text nodes) */
3562
+ text?: string;
3563
+ /** @description Text marks (bold, italic, links, etc.) - only for text nodes */
3564
+ marks?: {
3565
+ /** @description Mark type (e.g., "bold", "italic", "link") */
3566
+ type: string;
3567
+ /** @description Mark attributes */
3568
+ attrs?: {
3569
+ [key: string]: (string | null) | number | boolean;
3570
+ };
3571
+ }[];
3572
+ }[];
3573
+ };
3574
+ /** @description Description content as plain text */
3575
+ plainText: string;
3576
+ } | null;
149
3577
  assignee: {
150
3578
  id: string;
151
3579
  avatar?: string;
@@ -175,7 +3603,6 @@ interface components {
175
3603
  */
176
3604
  type: "jira";
177
3605
  };
178
- Task: components["schemas"]["LocuTask"] | components["schemas"]["LinearTask"] | components["schemas"]["JiraTask"];
179
3606
  MeResponse: {
180
3607
  /** @description Email of the authenticated user */
181
3608
  email: string;
@@ -187,6 +3614,11 @@ interface components {
187
3614
  message: string;
188
3615
  code?: string;
189
3616
  };
3617
+ NoteListResponse: {
3618
+ data: components["schemas"]["Note"][];
3619
+ nextCursor: string | null;
3620
+ hasMore: boolean;
3621
+ };
190
3622
  Note: {
191
3623
  id: string;
192
3624
  text: string;
@@ -207,7 +3639,7 @@ interface components {
207
3639
  /** @description Note content as HTML (only included when includeHtml=true) */
208
3640
  html?: string;
209
3641
  /**
210
- * @description ProseMirror JSON document. Root node always has type "doc" with a content array of child nodes.
3642
+ * @description Note content as ProseMirror JSON document
211
3643
  * @example {
212
3644
  * "type": "doc",
213
3645
  * "content": [
@@ -264,11 +3696,6 @@ interface components {
264
3696
  /** @description Note content as plain text */
265
3697
  plainText: string;
266
3698
  };
267
- NoteListResponse: {
268
- data: components["schemas"]["Note"][];
269
- nextCursor: string | null;
270
- hasMore: boolean;
271
- };
272
3699
  CreateNoteRequest: {
273
3700
  /**
274
3701
  * Format: uuid
@@ -297,70 +3724,11 @@ interface components {
297
3724
  DeleteNoteResponse: {
298
3725
  success: boolean;
299
3726
  };
300
- /** @description Project description in multiple formats */
301
- ProjectDescription: {
302
- /** @description Description content as Markdown */
303
- markdown: string;
304
- /** @description Description content as HTML (only included when includeHtml=true) */
305
- html?: string;
306
- /**
307
- * @description ProseMirror JSON document. Root node always has type "doc" with a content array of child nodes.
308
- * @example {
309
- * "type": "doc",
310
- * "content": [
311
- * {
312
- * "type": "paragraph",
313
- * "content": [
314
- * {
315
- * "type": "text",
316
- * "text": "Hello "
317
- * },
318
- * {
319
- * "type": "text",
320
- * "text": "world",
321
- * "marks": [
322
- * {
323
- * "type": "bold"
324
- * }
325
- * ]
326
- * }
327
- * ]
328
- * }
329
- * ]
330
- * }
331
- */
332
- json?: {
333
- /**
334
- * @description Document root type, always "doc"
335
- * @enum {string}
336
- */
337
- type: "doc";
338
- /** @description Array of child document nodes */
339
- content: {
340
- /** @description Node type (e.g., "paragraph", "text", "heading", "bulletList") */
341
- type: string;
342
- /** @description Node attributes */
343
- attrs?: {
344
- [key: string]: (string | null) | number | boolean;
345
- };
346
- /** @description Child nodes (recursive DocumentNode array) */
347
- content?: Record<string, never>[];
348
- /** @description Text content (only for text nodes) */
349
- text?: string;
350
- /** @description Text marks (bold, italic, links, etc.) - only for text nodes */
351
- marks?: {
352
- /** @description Mark type (e.g., "bold", "italic", "link") */
353
- type: string;
354
- /** @description Mark attributes */
355
- attrs?: {
356
- [key: string]: (string | null) | number | boolean;
357
- };
358
- }[];
359
- }[];
360
- };
361
- /** @description Description content as plain text */
362
- plainText: string;
363
- } | null;
3727
+ ProjectListResponse: {
3728
+ data: components["schemas"]["Project"][];
3729
+ nextCursor: string | null;
3730
+ hasMore: boolean;
3731
+ };
364
3732
  Project: {
365
3733
  id: string;
366
3734
  name: string;
@@ -370,12 +3738,70 @@ interface components {
370
3738
  completedAt?: number | null;
371
3739
  createdAt: number;
372
3740
  updatedAt: number;
373
- description?: components["schemas"]["ProjectDescription"];
374
- };
375
- ProjectListResponse: {
376
- data: components["schemas"]["Project"][];
377
- nextCursor: string | null;
378
- hasMore: boolean;
3741
+ /** @description Project description in multiple formats */
3742
+ description?: {
3743
+ /** @description Description content as Markdown */
3744
+ markdown: string;
3745
+ /** @description Description content as HTML (only included when includeHtml=true) */
3746
+ html?: string;
3747
+ /**
3748
+ * @description Description content as ProseMirror JSON document
3749
+ * @example {
3750
+ * "type": "doc",
3751
+ * "content": [
3752
+ * {
3753
+ * "type": "paragraph",
3754
+ * "content": [
3755
+ * {
3756
+ * "type": "text",
3757
+ * "text": "Hello "
3758
+ * },
3759
+ * {
3760
+ * "type": "text",
3761
+ * "text": "world",
3762
+ * "marks": [
3763
+ * {
3764
+ * "type": "bold"
3765
+ * }
3766
+ * ]
3767
+ * }
3768
+ * ]
3769
+ * }
3770
+ * ]
3771
+ * }
3772
+ */
3773
+ json?: {
3774
+ /**
3775
+ * @description Document root type, always "doc"
3776
+ * @enum {string}
3777
+ */
3778
+ type: "doc";
3779
+ /** @description Array of child document nodes */
3780
+ content: {
3781
+ /** @description Node type (e.g., "paragraph", "text", "heading", "bulletList") */
3782
+ type: string;
3783
+ /** @description Node attributes */
3784
+ attrs?: {
3785
+ [key: string]: (string | null) | number | boolean;
3786
+ };
3787
+ /** @description Child nodes (recursive DocumentNode array) */
3788
+ content?: Record<string, never>[];
3789
+ /** @description Text content (only for text nodes) */
3790
+ text?: string;
3791
+ /** @description Text marks (bold, italic, links, etc.) - only for text nodes */
3792
+ marks?: {
3793
+ /** @description Mark type (e.g., "bold", "italic", "link") */
3794
+ type: string;
3795
+ /** @description Mark attributes */
3796
+ attrs?: {
3797
+ [key: string]: (string | null) | number | boolean;
3798
+ };
3799
+ }[];
3800
+ }[];
3801
+ };
3802
+ /** @description Description content as plain text */
3803
+ plainText: string;
3804
+ } | null;
379
3805
  };
380
3806
  CreateProjectRequest: {
381
3807
  /**
@@ -410,6 +3836,15 @@ interface components {
410
3836
  DeleteProjectResponse: {
411
3837
  success: boolean;
412
3838
  };
3839
+ SessionListResponse: {
3840
+ data: components["schemas"]["SessionWithActivities"][];
3841
+ nextCursor: string | null;
3842
+ hasMore: boolean;
3843
+ };
3844
+ SessionWithActivities: components["schemas"]["Session"] & {
3845
+ /** @description Activities within this session */
3846
+ activities: components["schemas"]["SessionActivity"][];
3847
+ };
413
3848
  SessionActivity: {
414
3849
  /** @enum {string} */
415
3850
  type: "TASK";
@@ -461,15 +3896,6 @@ interface components {
461
3896
  /** @description End timestamp (Unix seconds) */
462
3897
  finishedAt: number;
463
3898
  };
464
- SessionWithActivities: components["schemas"]["Session"] & {
465
- /** @description Activities within this session */
466
- activities: components["schemas"]["SessionActivity"][];
467
- };
468
- SessionListResponse: {
469
- data: components["schemas"]["SessionWithActivities"][];
470
- nextCursor: string | null;
471
- hasMore: boolean;
472
- };
473
3899
  CreateSessionRequest: {
474
3900
  /**
475
3901
  * Format: uuid
@@ -519,6 +3945,11 @@ interface components {
519
3945
  nextCursor: string | null;
520
3946
  hasMore: boolean;
521
3947
  };
3948
+ TaskSectionsResponse: {
3949
+ today: components["schemas"]["TaskBySection"][];
3950
+ sooner: components["schemas"]["TaskBySection"][];
3951
+ later: components["schemas"]["TaskBySection"][];
3952
+ };
522
3953
  TaskBySection: {
523
3954
  /** Format: uuid */
524
3955
  taskId: string;
@@ -527,11 +3958,6 @@ interface components {
527
3958
  order: number;
528
3959
  task: components["schemas"]["Task"];
529
3960
  };
530
- TaskSectionsResponse: {
531
- today: components["schemas"]["TaskBySection"][];
532
- sooner: components["schemas"]["TaskBySection"][];
533
- later: components["schemas"]["TaskBySection"][];
534
- };
535
3961
  TaskSubtasksResponse: {
536
3962
  data: components["schemas"]["Task"][];
537
3963
  nextCursor: string | null;
@@ -569,7 +3995,7 @@ interface components {
569
3995
  /** @description Task description in markdown format */
570
3996
  description?: string;
571
3997
  /** @description Task completion status */
572
- done?: "completed" | "canceled" | unknown | unknown;
3998
+ done?: "completed" | "canceled" | null;
573
3999
  /**
574
4000
  * Format: uuid
575
4001
  * @description Project to assign the task to
@@ -602,6 +4028,10 @@ interface components {
602
4028
  /** @description Optional task ID to start working on */
603
4029
  taskId?: string;
604
4030
  };
4031
+ StopTimerResponse: {
4032
+ /** @description The completed sessions that were created */
4033
+ sessions: components["schemas"]["StopTimerSession"][];
4034
+ };
605
4035
  StopTimerSession: {
606
4036
  /** @description Unique identifier for the session */
607
4037
  id: string;
@@ -612,9 +4042,10 @@ interface components {
612
4042
  /** @description End timestamp (Unix seconds) */
613
4043
  finishedAt: number;
614
4044
  };
615
- StopTimerResponse: {
616
- /** @description The completed sessions that were created */
617
- sessions: components["schemas"]["StopTimerSession"][];
4045
+ WebhookListResponse: {
4046
+ data: components["schemas"]["Webhook"][];
4047
+ nextCursor: string | null;
4048
+ hasMore: boolean;
618
4049
  };
619
4050
  Webhook: {
620
4051
  /**
@@ -644,11 +4075,6 @@ interface components {
644
4075
  */
645
4076
  updatedAt: string;
646
4077
  };
647
- WebhookListResponse: {
648
- data: components["schemas"]["Webhook"][];
649
- nextCursor: string | null;
650
- hasMore: boolean;
651
- };
652
4078
  WebhookWithSecret: components["schemas"]["Webhook"] & {
653
4079
  /** @description Secret for verifying webhook signatures (only shown once) */
654
4080
  secret: string;
@@ -695,6 +4121,11 @@ interface components {
695
4121
  DeleteWebhookResponse: {
696
4122
  success: boolean;
697
4123
  };
4124
+ WebhookDeliveryListResponse: {
4125
+ data: components["schemas"]["WebhookDelivery"][];
4126
+ nextCursor: string | null;
4127
+ hasMore: boolean;
4128
+ };
698
4129
  WebhookDelivery: {
699
4130
  /**
700
4131
  * Format: uuid
@@ -728,11 +4159,6 @@ interface components {
728
4159
  */
729
4160
  completedAt: string | null;
730
4161
  };
731
- WebhookDeliveryListResponse: {
732
- data: components["schemas"]["WebhookDelivery"][];
733
- nextCursor: string | null;
734
- hasMore: boolean;
735
- };
736
4162
  RotateSecretResponse: {
737
4163
  /** @description New webhook secret */
738
4164
  secret: string;
@@ -744,61 +4170,35 @@ interface components {
744
4170
  headers: never;
745
4171
  pathItems: never;
746
4172
  }
747
-
748
- /**
749
- * Re-export types from the generated OpenAPI types.
750
- * These provide typed access to the Locu API.
751
- */
4173
+ type $defs = Record<string, never>;
4174
+ type operations = Record<string, never>;
752
4175
 
753
4176
  type Task = components["schemas"]["Task"];
754
- type LocuTask = components["schemas"]["LocuTask"];
755
- type LinearTask = components["schemas"]["LinearTask"];
756
- type JiraTask = components["schemas"]["JiraTask"];
757
- type TaskDescription = components["schemas"]["TaskDescription"];
758
4177
  type CreateTaskRequest = components["schemas"]["CreateTaskRequest"];
759
4178
  type UpdateTaskRequest = components["schemas"]["UpdateTaskRequest"];
760
- type TaskListResponse = components["schemas"]["TaskListResponse"];
761
- type TaskBySection = components["schemas"]["TaskBySection"];
762
4179
  type TaskSectionsResponse = components["schemas"]["TaskSectionsResponse"];
763
- type DeleteTaskResponse = components["schemas"]["DeleteTaskResponse"];
764
4180
  type Project = components["schemas"]["Project"];
765
- type ProjectDescription = components["schemas"]["ProjectDescription"];
766
4181
  type CreateProjectRequest = components["schemas"]["CreateProjectRequest"];
767
4182
  type UpdateProjectRequest = components["schemas"]["UpdateProjectRequest"];
768
- type ProjectListResponse = components["schemas"]["ProjectListResponse"];
769
- type DeleteProjectResponse = components["schemas"]["DeleteProjectResponse"];
770
4183
  type Note = components["schemas"]["Note"];
771
4184
  type CreateNoteRequest = components["schemas"]["CreateNoteRequest"];
772
4185
  type UpdateNoteRequest = components["schemas"]["UpdateNoteRequest"];
773
- type NoteListResponse = components["schemas"]["NoteListResponse"];
774
- type DeleteNoteResponse = components["schemas"]["DeleteNoteResponse"];
775
4186
  type Session = components["schemas"]["Session"];
776
4187
  type SessionWithActivities = components["schemas"]["SessionWithActivities"];
777
4188
  type SessionActivity = components["schemas"]["SessionActivity"];
778
4189
  type CreateSessionRequest = components["schemas"]["CreateSessionRequest"];
779
4190
  type UpdateSessionRequest = components["schemas"]["UpdateSessionRequest"];
780
- type SessionListResponse = components["schemas"]["SessionListResponse"];
781
- type DeleteSessionResponse = components["schemas"]["DeleteSessionResponse"];
782
4191
  type CreateActivityRequest = components["schemas"]["CreateActivityRequest"];
783
4192
  type UpdateActivityRequest = components["schemas"]["UpdateActivityRequest"];
784
- type ActivityListResponse = components["schemas"]["ActivityListResponse"];
785
- type DeleteActivityResponse = components["schemas"]["DeleteActivityResponse"];
786
4193
  type TimerState = components["schemas"]["TimerState"];
787
4194
  type StartTimerRequest = components["schemas"]["StartTimerRequest"];
788
4195
  type StopTimerResponse = components["schemas"]["StopTimerResponse"];
789
- type StopTimerSession = components["schemas"]["StopTimerSession"];
790
4196
  type Webhook = components["schemas"]["Webhook"];
791
4197
  type WebhookWithSecret = components["schemas"]["WebhookWithSecret"];
792
4198
  type CreateWebhookRequest = components["schemas"]["CreateWebhookRequest"];
793
4199
  type UpdateWebhookRequest = components["schemas"]["UpdateWebhookRequest"];
794
- type WebhookListResponse = components["schemas"]["WebhookListResponse"];
795
4200
  type WebhookDelivery = components["schemas"]["WebhookDelivery"];
796
- type WebhookDeliveryListResponse = components["schemas"]["WebhookDeliveryListResponse"];
797
- type RotateSecretResponse = components["schemas"]["RotateSecretResponse"];
798
- type DeleteWebhookResponse = components["schemas"]["DeleteWebhookResponse"];
799
- type ErrorResponse = components["schemas"]["ErrorResponse"];
800
4201
  type MeResponse = components["schemas"]["MeResponse"];
801
- type ApiError = ErrorResponse;
802
4202
  type WebhookPayload<T = unknown> = {
803
4203
  /** Event type, e.g. "task.created", "project.updated" */
804
4204
  event: string;
@@ -816,38 +4216,22 @@ type PaginationParams = {
816
4216
  limit?: number;
817
4217
  cursor?: string;
818
4218
  };
819
- type TaskListParams = PaginationParams & {
820
- done?: "true" | "false";
821
- projectId?: string;
822
- parentId?: string;
823
- section?: "today" | "sooner" | "later";
824
- doneAfter?: string;
825
- doneBefore?: string;
826
- includeHtml?: boolean | null;
827
- };
828
- type TaskSectionsParams = {
829
- projectId?: string;
830
- includeHtml?: boolean | null;
831
- };
832
- type SubtaskListParams = PaginationParams & {
833
- done?: "true" | "false";
834
- includeHtml?: boolean | null;
835
- };
836
- type ProjectListParams = PaginationParams & {
837
- state?: "planned" | "completed";
838
- includeHtml?: boolean | null;
839
- };
840
- type NoteListParams = PaginationParams & {
841
- folderId?: string;
842
- includeHtml?: boolean | null;
4219
+ /** Accepts boolean or string representation for query params */
4220
+ type BooleanParam = boolean | "true" | "false";
4221
+ type TaskListParams = Omit<NonNullable<paths["/tasks"]["get"]["parameters"]["query"]>, "done" | "limit"> & {
4222
+ done?: BooleanParam;
4223
+ limit?: number;
843
4224
  };
844
- type SessionListParams = PaginationParams & {
845
- startAfter?: string;
846
- startBefore?: string;
847
- includeActivities?: boolean | null;
4225
+ type TaskSectionsParams = NonNullable<paths["/tasks/sections"]["get"]["parameters"]["query"]>;
4226
+ type SubtaskListParams = Omit<NonNullable<paths["/tasks/{id}/subtasks"]["get"]["parameters"]["query"]>, "done" | "limit"> & {
4227
+ done?: BooleanParam;
4228
+ limit?: number;
848
4229
  };
849
- type WebhookListParams = PaginationParams & {
850
- isActive?: "true" | "false";
4230
+ type ProjectListParams = NonNullable<paths["/projects"]["get"]["parameters"]["query"]>;
4231
+ type NoteListParams = NonNullable<paths["/notes"]["get"]["parameters"]["query"]>;
4232
+ type SessionListParams = NonNullable<paths["/sessions"]["get"]["parameters"]["query"]>;
4233
+ type WebhookListParams = Omit<NonNullable<paths["/webhooks"]["get"]["parameters"]["query"]>, "isActive"> & {
4234
+ isActive?: BooleanParam;
851
4235
  };
852
4236
 
853
4237
  type LocuClientConfig = {
@@ -879,6 +4263,8 @@ declare const createLocuClient: (config: LocuClientConfig) => {
879
4263
  continue: () => Promise<TimerState>;
880
4264
  /** Stop timer and save sessions */
881
4265
  stop: () => Promise<StopTimerResponse>;
4266
+ /** Cancel timer without saving sessions */
4267
+ cancel: () => Promise<TimerState>;
882
4268
  };
883
4269
  tasks: {
884
4270
  /** List all tasks */
@@ -1083,4 +4469,4 @@ declare const parseWebhookPayload: <T = unknown>(body: string) => WebhookPayload
1083
4469
  */
1084
4470
  declare const generateWebhookSignature: (secret: string, timestamp: number, body: string) => string;
1085
4471
 
1086
- export { type ActivityListResponse, type ApiError, type CreateActivityRequest, type CreateNoteRequest, type CreateProjectRequest, type CreateSessionRequest, type CreateTaskRequest, type CreateWebhookRequest, type DeleteActivityResponse, type DeleteNoteResponse, type DeleteProjectResponse, type DeleteSessionResponse, type DeleteTaskResponse, type DeleteWebhookResponse, type ErrorResponse, type JiraTask, type LinearTask, LocuApiError, type LocuClient, type LocuClientConfig, type LocuTask, type MeResponse, type Note, type NoteListParams, type NoteListResponse, type PaginatedResponse, type PaginationParams, type ParsedWebhookSignature, type Project, type ProjectDescription, type ProjectListParams, type ProjectListResponse, type RotateSecretResponse, type Session, type SessionActivity, type SessionListParams, type SessionListResponse, type SessionWithActivities, type StartTimerRequest, type StopTimerResponse, type StopTimerSession, type SubtaskListParams, type Task, type TaskBySection, type TaskDescription, type TaskListParams, type TaskListResponse, type TaskSectionsParams, type TaskSectionsResponse, type TimerState, type UpdateActivityRequest, type UpdateNoteRequest, type UpdateProjectRequest, type UpdateSessionRequest, type UpdateTaskRequest, type UpdateWebhookRequest, type VerifyWebhookOptions, type Webhook, type WebhookDelivery, type WebhookDeliveryListResponse, type WebhookListParams, type WebhookListResponse, type WebhookPayload, type WebhookSignatureResult, type WebhookWithSecret, createLocuClient, generateWebhookSignature, parseWebhookPayload, parseWebhookSignature, verifyWebhookSignature };
4472
+ export { type $defs, LocuApiError, type LocuClient, type LocuClientConfig, type ParsedWebhookSignature, type VerifyWebhookOptions, type WebhookSignatureResult, type components, createLocuClient, generateWebhookSignature, type operations, parseWebhookPayload, parseWebhookSignature, type paths, verifyWebhookSignature, type webhooks };