@loculabs/api-client 1.2.0 → 1.4.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.ts CHANGED
@@ -1,73 +1,3421 @@
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 Field to order results by */
516
+ orderBy?: "updatedAt" | "createdAt";
517
+ /** @description Sort order (ascending or descending) */
518
+ order?: "asc" | "desc";
519
+ /** @description Filter by project state */
520
+ state?: "planned" | "completed";
521
+ /** @description Include HTML representation of the project description */
522
+ includeHtml?: boolean | null;
523
+ };
524
+ header?: never;
525
+ path?: never;
526
+ cookie?: never;
527
+ };
528
+ requestBody?: never;
529
+ responses: {
530
+ /** @description Successful response */
531
+ 200: {
532
+ headers: {
533
+ [name: string]: unknown;
534
+ };
535
+ content: {
536
+ "application/json": components["schemas"]["ProjectListResponse"];
537
+ };
538
+ };
539
+ /** @description Bad request - validation error */
540
+ 400: {
541
+ headers: {
542
+ [name: string]: unknown;
543
+ };
544
+ content: {
545
+ "application/json": components["schemas"]["ErrorResponse"];
546
+ };
547
+ };
548
+ /** @description Unauthorized - invalid or missing API key */
549
+ 401: {
550
+ headers: {
551
+ [name: string]: unknown;
552
+ };
553
+ content: {
554
+ "application/json": components["schemas"]["ErrorResponse"];
555
+ };
556
+ };
557
+ /** @description Resource not found */
558
+ 404: {
559
+ headers: {
560
+ [name: string]: unknown;
561
+ };
562
+ content: {
563
+ "application/json": components["schemas"]["ErrorResponse"];
564
+ };
565
+ };
566
+ /** @description Rate limit exceeded */
567
+ 429: {
568
+ headers: {
569
+ [name: string]: unknown;
570
+ };
571
+ content: {
572
+ "application/json": components["schemas"]["ErrorResponse"];
573
+ };
574
+ };
575
+ /** @description Internal server error */
576
+ 500: {
577
+ headers: {
578
+ [name: string]: unknown;
579
+ };
580
+ content: {
581
+ "application/json": components["schemas"]["ErrorResponse"];
582
+ };
583
+ };
584
+ };
585
+ };
586
+ put?: never;
587
+ /**
588
+ * Create project
589
+ * @description Create a new project.
590
+ */
591
+ post: {
592
+ parameters: {
593
+ query?: {
594
+ /** @description Include HTML representation of the project description */
595
+ includeHtml?: boolean | null;
596
+ };
597
+ header?: never;
598
+ path?: never;
599
+ cookie?: never;
600
+ };
601
+ requestBody: {
602
+ content: {
603
+ "application/json": components["schemas"]["CreateProjectRequest"];
604
+ };
605
+ };
606
+ responses: {
607
+ /** @description Successful response */
608
+ 200: {
609
+ headers: {
610
+ [name: string]: unknown;
611
+ };
612
+ content: {
613
+ "application/json": components["schemas"]["Project"];
614
+ };
615
+ };
616
+ /** @description Bad request - validation error */
617
+ 400: {
618
+ headers: {
619
+ [name: string]: unknown;
620
+ };
621
+ content: {
622
+ "application/json": components["schemas"]["ErrorResponse"];
623
+ };
624
+ };
625
+ /** @description Unauthorized - invalid or missing API key */
626
+ 401: {
627
+ headers: {
628
+ [name: string]: unknown;
629
+ };
630
+ content: {
631
+ "application/json": components["schemas"]["ErrorResponse"];
632
+ };
633
+ };
634
+ /** @description Resource not found */
635
+ 404: {
636
+ headers: {
637
+ [name: string]: unknown;
638
+ };
639
+ content: {
640
+ "application/json": components["schemas"]["ErrorResponse"];
641
+ };
642
+ };
643
+ /** @description Rate limit exceeded */
644
+ 429: {
645
+ headers: {
646
+ [name: string]: unknown;
647
+ };
648
+ content: {
649
+ "application/json": components["schemas"]["ErrorResponse"];
650
+ };
651
+ };
652
+ /** @description Internal server error */
653
+ 500: {
654
+ headers: {
655
+ [name: string]: unknown;
656
+ };
657
+ content: {
658
+ "application/json": components["schemas"]["ErrorResponse"];
659
+ };
660
+ };
661
+ };
662
+ };
663
+ delete?: never;
664
+ options?: never;
665
+ head?: never;
666
+ patch?: never;
667
+ trace?: never;
668
+ };
669
+ "/projects/{id}": {
670
+ parameters: {
671
+ query?: never;
672
+ header?: never;
673
+ path?: never;
674
+ cookie?: never;
675
+ };
676
+ /**
677
+ * Get project
678
+ * @description Retrieve a single project by ID.
679
+ */
680
+ get: {
681
+ parameters: {
682
+ query?: {
683
+ /** @description Include HTML representation of the project description */
684
+ includeHtml?: boolean | null;
685
+ };
686
+ header?: never;
687
+ path: {
688
+ /** @description Project ID */
689
+ id: string;
690
+ };
691
+ cookie?: never;
692
+ };
693
+ requestBody?: never;
694
+ responses: {
695
+ /** @description Successful response */
696
+ 200: {
697
+ headers: {
698
+ [name: string]: unknown;
699
+ };
700
+ content: {
701
+ "application/json": components["schemas"]["Project"];
702
+ };
703
+ };
704
+ /** @description Bad request - validation error */
705
+ 400: {
706
+ headers: {
707
+ [name: string]: unknown;
708
+ };
709
+ content: {
710
+ "application/json": components["schemas"]["ErrorResponse"];
711
+ };
712
+ };
713
+ /** @description Unauthorized - invalid or missing API key */
714
+ 401: {
715
+ headers: {
716
+ [name: string]: unknown;
717
+ };
718
+ content: {
719
+ "application/json": components["schemas"]["ErrorResponse"];
720
+ };
721
+ };
722
+ /** @description Resource not found */
723
+ 404: {
724
+ headers: {
725
+ [name: string]: unknown;
726
+ };
727
+ content: {
728
+ "application/json": components["schemas"]["ErrorResponse"];
729
+ };
730
+ };
731
+ /** @description Rate limit exceeded */
732
+ 429: {
733
+ headers: {
734
+ [name: string]: unknown;
735
+ };
736
+ content: {
737
+ "application/json": components["schemas"]["ErrorResponse"];
738
+ };
739
+ };
740
+ /** @description Internal server error */
741
+ 500: {
742
+ headers: {
743
+ [name: string]: unknown;
744
+ };
745
+ content: {
746
+ "application/json": components["schemas"]["ErrorResponse"];
747
+ };
748
+ };
749
+ };
750
+ };
751
+ put?: never;
752
+ post?: never;
753
+ /**
754
+ * Delete project
755
+ * @description Delete a project. This will also clear project references from associated tasks.
756
+ */
757
+ delete: {
758
+ parameters: {
759
+ query?: never;
760
+ header?: never;
761
+ path: {
762
+ /** @description Project ID */
763
+ id: string;
764
+ };
765
+ cookie?: never;
766
+ };
767
+ requestBody?: never;
768
+ responses: {
769
+ /** @description Successful response */
770
+ 200: {
771
+ headers: {
772
+ [name: string]: unknown;
773
+ };
774
+ content: {
775
+ "application/json": components["schemas"]["DeleteProjectResponse"];
776
+ };
777
+ };
778
+ /** @description Bad request - validation error */
779
+ 400: {
780
+ headers: {
781
+ [name: string]: unknown;
782
+ };
783
+ content: {
784
+ "application/json": components["schemas"]["ErrorResponse"];
785
+ };
786
+ };
787
+ /** @description Unauthorized - invalid or missing API key */
788
+ 401: {
789
+ headers: {
790
+ [name: string]: unknown;
791
+ };
792
+ content: {
793
+ "application/json": components["schemas"]["ErrorResponse"];
794
+ };
795
+ };
796
+ /** @description Resource not found */
797
+ 404: {
798
+ headers: {
799
+ [name: string]: unknown;
800
+ };
801
+ content: {
802
+ "application/json": components["schemas"]["ErrorResponse"];
803
+ };
804
+ };
805
+ /** @description Rate limit exceeded */
806
+ 429: {
807
+ headers: {
808
+ [name: string]: unknown;
809
+ };
810
+ content: {
811
+ "application/json": components["schemas"]["ErrorResponse"];
812
+ };
813
+ };
814
+ /** @description Internal server error */
815
+ 500: {
816
+ headers: {
817
+ [name: string]: unknown;
818
+ };
819
+ content: {
820
+ "application/json": components["schemas"]["ErrorResponse"];
821
+ };
822
+ };
823
+ };
824
+ };
825
+ options?: never;
826
+ head?: never;
827
+ /**
828
+ * Update project
829
+ * @description Update an existing project. Only provided fields will be modified.
830
+ */
831
+ patch: {
832
+ parameters: {
833
+ query?: {
834
+ /** @description Include HTML representation of the project description */
835
+ includeHtml?: boolean | null;
836
+ };
837
+ header?: never;
838
+ path: {
839
+ /** @description Project ID */
840
+ id: string;
841
+ };
842
+ cookie?: never;
843
+ };
844
+ requestBody: {
845
+ content: {
846
+ "application/json": components["schemas"]["UpdateProjectRequest"];
847
+ };
848
+ };
849
+ responses: {
850
+ /** @description Successful response */
851
+ 200: {
852
+ headers: {
853
+ [name: string]: unknown;
854
+ };
855
+ content: {
856
+ "application/json": components["schemas"]["Project"];
857
+ };
858
+ };
859
+ /** @description Bad request - validation error */
860
+ 400: {
861
+ headers: {
862
+ [name: string]: unknown;
863
+ };
864
+ content: {
865
+ "application/json": components["schemas"]["ErrorResponse"];
866
+ };
867
+ };
868
+ /** @description Unauthorized - invalid or missing API key */
869
+ 401: {
870
+ headers: {
871
+ [name: string]: unknown;
872
+ };
873
+ content: {
874
+ "application/json": components["schemas"]["ErrorResponse"];
875
+ };
876
+ };
877
+ /** @description Resource not found */
878
+ 404: {
879
+ headers: {
880
+ [name: string]: unknown;
881
+ };
882
+ content: {
883
+ "application/json": components["schemas"]["ErrorResponse"];
884
+ };
885
+ };
886
+ /** @description Rate limit exceeded */
887
+ 429: {
888
+ headers: {
889
+ [name: string]: unknown;
890
+ };
891
+ content: {
892
+ "application/json": components["schemas"]["ErrorResponse"];
893
+ };
894
+ };
895
+ /** @description Internal server error */
896
+ 500: {
897
+ headers: {
898
+ [name: string]: unknown;
899
+ };
900
+ content: {
901
+ "application/json": components["schemas"]["ErrorResponse"];
902
+ };
903
+ };
904
+ };
905
+ };
906
+ trace?: never;
907
+ };
908
+ "/sessions": {
909
+ parameters: {
910
+ query?: never;
911
+ header?: never;
912
+ path?: never;
913
+ cookie?: never;
914
+ };
915
+ /**
916
+ * List sessions
917
+ * @description Retrieve a paginated list of sessions. Supports filtering by date range.
918
+ */
919
+ get: {
920
+ parameters: {
921
+ query?: {
922
+ /** @description Number of sessions to return */
923
+ limit?: number;
924
+ /** @description Cursor for pagination */
925
+ cursor?: string;
926
+ /** @description Field to order results by */
927
+ orderBy?: "updatedAt" | "createdAt" | "finishedAt";
928
+ /** @description Sort order (ascending or descending) */
929
+ order?: "asc" | "desc";
930
+ /** @description Filter sessions starting after this date (Unix seconds or ISO 8601) */
931
+ startAfter?: string;
932
+ /** @description Filter sessions starting before this date (Unix seconds or ISO 8601) */
933
+ startBefore?: string;
934
+ /** @description Include activities in response */
935
+ includeActivities?: boolean | null;
936
+ };
937
+ header?: never;
938
+ path?: never;
939
+ cookie?: never;
940
+ };
941
+ requestBody?: never;
942
+ responses: {
943
+ /** @description Successful response */
944
+ 200: {
945
+ headers: {
946
+ [name: string]: unknown;
947
+ };
948
+ content: {
949
+ "application/json": components["schemas"]["SessionListResponse"];
950
+ };
951
+ };
952
+ /** @description Bad request - validation error */
953
+ 400: {
954
+ headers: {
955
+ [name: string]: unknown;
956
+ };
957
+ content: {
958
+ "application/json": components["schemas"]["ErrorResponse"];
959
+ };
960
+ };
961
+ /** @description Unauthorized - invalid or missing API key */
962
+ 401: {
963
+ headers: {
964
+ [name: string]: unknown;
965
+ };
966
+ content: {
967
+ "application/json": components["schemas"]["ErrorResponse"];
968
+ };
969
+ };
970
+ /** @description Resource not found */
971
+ 404: {
972
+ headers: {
973
+ [name: string]: unknown;
974
+ };
975
+ content: {
976
+ "application/json": components["schemas"]["ErrorResponse"];
977
+ };
978
+ };
979
+ /** @description Rate limit exceeded */
980
+ 429: {
981
+ headers: {
982
+ [name: string]: unknown;
983
+ };
984
+ content: {
985
+ "application/json": components["schemas"]["ErrorResponse"];
986
+ };
987
+ };
988
+ /** @description Internal server error */
989
+ 500: {
990
+ headers: {
991
+ [name: string]: unknown;
992
+ };
993
+ content: {
994
+ "application/json": components["schemas"]["ErrorResponse"];
995
+ };
996
+ };
997
+ };
998
+ };
999
+ put?: never;
1000
+ /**
1001
+ * Create session
1002
+ * @description Create a new work session.
1003
+ */
1004
+ post: {
1005
+ parameters: {
1006
+ query?: never;
1007
+ header?: never;
1008
+ path?: never;
1009
+ cookie?: never;
1010
+ };
1011
+ requestBody: {
1012
+ content: {
1013
+ "application/json": components["schemas"]["CreateSessionRequest"];
1014
+ };
1015
+ };
1016
+ responses: {
1017
+ /** @description Successful response */
1018
+ 200: {
1019
+ headers: {
1020
+ [name: string]: unknown;
1021
+ };
1022
+ content: {
1023
+ "application/json": components["schemas"]["SessionWithActivities"];
1024
+ };
1025
+ };
1026
+ /** @description Bad request - validation error */
1027
+ 400: {
1028
+ headers: {
1029
+ [name: string]: unknown;
1030
+ };
1031
+ content: {
1032
+ "application/json": components["schemas"]["ErrorResponse"];
1033
+ };
1034
+ };
1035
+ /** @description Unauthorized - invalid or missing API key */
1036
+ 401: {
1037
+ headers: {
1038
+ [name: string]: unknown;
1039
+ };
1040
+ content: {
1041
+ "application/json": components["schemas"]["ErrorResponse"];
1042
+ };
1043
+ };
1044
+ /** @description Resource not found */
1045
+ 404: {
1046
+ headers: {
1047
+ [name: string]: unknown;
1048
+ };
1049
+ content: {
1050
+ "application/json": components["schemas"]["ErrorResponse"];
1051
+ };
1052
+ };
1053
+ /** @description Rate limit exceeded */
1054
+ 429: {
1055
+ headers: {
1056
+ [name: string]: unknown;
1057
+ };
1058
+ content: {
1059
+ "application/json": components["schemas"]["ErrorResponse"];
1060
+ };
1061
+ };
1062
+ /** @description Internal server error */
1063
+ 500: {
1064
+ headers: {
1065
+ [name: string]: unknown;
1066
+ };
1067
+ content: {
1068
+ "application/json": components["schemas"]["ErrorResponse"];
1069
+ };
1070
+ };
1071
+ };
1072
+ };
1073
+ delete?: never;
1074
+ options?: never;
1075
+ head?: never;
1076
+ patch?: never;
1077
+ trace?: never;
1078
+ };
1079
+ "/sessions/activities": {
1080
+ parameters: {
1081
+ query?: never;
1082
+ header?: never;
1083
+ path?: never;
1084
+ cookie?: never;
1085
+ };
1086
+ /**
1087
+ * List activities
1088
+ * @description Retrieve a paginated list of session activities. Supports filtering by task ID or session ID.
1089
+ */
1090
+ get: {
1091
+ parameters: {
1092
+ query?: {
1093
+ /** @description Number of activities to return */
1094
+ limit?: number;
1095
+ /** @description Cursor for pagination */
1096
+ cursor?: string;
1097
+ /** @description Field to order results by */
1098
+ orderBy?: "updatedAt" | "createdAt";
1099
+ /** @description Sort order (ascending or descending) */
1100
+ order?: "asc" | "desc";
1101
+ /** @description Filter activities by task ID */
1102
+ taskId?: string;
1103
+ /** @description Filter activities by session ID */
1104
+ sessionId?: string;
1105
+ };
1106
+ header?: never;
1107
+ path?: never;
1108
+ cookie?: never;
1109
+ };
1110
+ requestBody?: never;
1111
+ responses: {
1112
+ /** @description Successful response */
1113
+ 200: {
1114
+ headers: {
1115
+ [name: string]: unknown;
1116
+ };
1117
+ content: {
1118
+ "application/json": components["schemas"]["ActivityPaginatedListResponse"];
1119
+ };
1120
+ };
1121
+ /** @description Bad request - validation error */
1122
+ 400: {
1123
+ headers: {
1124
+ [name: string]: unknown;
1125
+ };
1126
+ content: {
1127
+ "application/json": components["schemas"]["ErrorResponse"];
1128
+ };
1129
+ };
1130
+ /** @description Unauthorized - invalid or missing API key */
1131
+ 401: {
1132
+ headers: {
1133
+ [name: string]: unknown;
1134
+ };
1135
+ content: {
1136
+ "application/json": components["schemas"]["ErrorResponse"];
1137
+ };
1138
+ };
1139
+ /** @description Resource not found */
1140
+ 404: {
1141
+ headers: {
1142
+ [name: string]: unknown;
1143
+ };
1144
+ content: {
1145
+ "application/json": components["schemas"]["ErrorResponse"];
1146
+ };
1147
+ };
1148
+ /** @description Rate limit exceeded */
1149
+ 429: {
1150
+ headers: {
1151
+ [name: string]: unknown;
1152
+ };
1153
+ content: {
1154
+ "application/json": components["schemas"]["ErrorResponse"];
1155
+ };
1156
+ };
1157
+ /** @description Internal server error */
1158
+ 500: {
1159
+ headers: {
1160
+ [name: string]: unknown;
1161
+ };
1162
+ content: {
1163
+ "application/json": components["schemas"]["ErrorResponse"];
1164
+ };
1165
+ };
1166
+ };
1167
+ };
1168
+ put?: never;
1169
+ post?: never;
1170
+ delete?: never;
1171
+ options?: never;
1172
+ head?: never;
1173
+ patch?: never;
1174
+ trace?: never;
1175
+ };
1176
+ "/sessions/{id}": {
1177
+ parameters: {
1178
+ query?: never;
1179
+ header?: never;
1180
+ path?: never;
1181
+ cookie?: never;
1182
+ };
1183
+ /**
1184
+ * Get session
1185
+ * @description Retrieve a single session by ID, including all activities.
1186
+ */
1187
+ get: {
1188
+ parameters: {
1189
+ query?: never;
1190
+ header?: never;
1191
+ path: {
1192
+ /** @description Session ID */
1193
+ id: string;
1194
+ };
1195
+ cookie?: never;
1196
+ };
1197
+ requestBody?: never;
1198
+ responses: {
1199
+ /** @description Successful response */
1200
+ 200: {
1201
+ headers: {
1202
+ [name: string]: unknown;
1203
+ };
1204
+ content: {
1205
+ "application/json": components["schemas"]["SessionWithActivities"];
1206
+ };
1207
+ };
1208
+ /** @description Bad request - validation error */
1209
+ 400: {
1210
+ headers: {
1211
+ [name: string]: unknown;
1212
+ };
1213
+ content: {
1214
+ "application/json": components["schemas"]["ErrorResponse"];
1215
+ };
1216
+ };
1217
+ /** @description Unauthorized - invalid or missing API key */
1218
+ 401: {
1219
+ headers: {
1220
+ [name: string]: unknown;
1221
+ };
1222
+ content: {
1223
+ "application/json": components["schemas"]["ErrorResponse"];
1224
+ };
1225
+ };
1226
+ /** @description Resource not found */
1227
+ 404: {
1228
+ headers: {
1229
+ [name: string]: unknown;
1230
+ };
1231
+ content: {
1232
+ "application/json": components["schemas"]["ErrorResponse"];
1233
+ };
1234
+ };
1235
+ /** @description Rate limit exceeded */
1236
+ 429: {
1237
+ headers: {
1238
+ [name: string]: unknown;
1239
+ };
1240
+ content: {
1241
+ "application/json": components["schemas"]["ErrorResponse"];
1242
+ };
1243
+ };
1244
+ /** @description Internal server error */
1245
+ 500: {
1246
+ headers: {
1247
+ [name: string]: unknown;
1248
+ };
1249
+ content: {
1250
+ "application/json": components["schemas"]["ErrorResponse"];
1251
+ };
1252
+ };
1253
+ };
1254
+ };
1255
+ put?: never;
1256
+ post?: never;
1257
+ /**
1258
+ * Delete session
1259
+ * @description Delete a session. This will also delete all associated activities.
1260
+ */
1261
+ delete: {
1262
+ parameters: {
1263
+ query?: never;
1264
+ header?: never;
1265
+ path: {
1266
+ /** @description Session ID */
1267
+ id: string;
1268
+ };
1269
+ cookie?: never;
1270
+ };
1271
+ requestBody?: never;
1272
+ responses: {
1273
+ /** @description Successful response */
1274
+ 200: {
1275
+ headers: {
1276
+ [name: string]: unknown;
1277
+ };
1278
+ content: {
1279
+ "application/json": components["schemas"]["DeleteSessionResponse"];
1280
+ };
1281
+ };
1282
+ /** @description Bad request - validation error */
1283
+ 400: {
1284
+ headers: {
1285
+ [name: string]: unknown;
1286
+ };
1287
+ content: {
1288
+ "application/json": components["schemas"]["ErrorResponse"];
1289
+ };
1290
+ };
1291
+ /** @description Unauthorized - invalid or missing API key */
1292
+ 401: {
1293
+ headers: {
1294
+ [name: string]: unknown;
1295
+ };
1296
+ content: {
1297
+ "application/json": components["schemas"]["ErrorResponse"];
1298
+ };
1299
+ };
1300
+ /** @description Resource not found */
1301
+ 404: {
1302
+ headers: {
1303
+ [name: string]: unknown;
1304
+ };
1305
+ content: {
1306
+ "application/json": components["schemas"]["ErrorResponse"];
1307
+ };
1308
+ };
1309
+ /** @description Rate limit exceeded */
1310
+ 429: {
1311
+ headers: {
1312
+ [name: string]: unknown;
1313
+ };
1314
+ content: {
1315
+ "application/json": components["schemas"]["ErrorResponse"];
1316
+ };
1317
+ };
1318
+ /** @description Internal server error */
1319
+ 500: {
1320
+ headers: {
1321
+ [name: string]: unknown;
1322
+ };
1323
+ content: {
1324
+ "application/json": components["schemas"]["ErrorResponse"];
1325
+ };
1326
+ };
1327
+ };
1328
+ };
1329
+ options?: never;
1330
+ head?: never;
1331
+ /**
1332
+ * Update session
1333
+ * @description Update an existing session. Only provided fields will be modified.
1334
+ */
1335
+ patch: {
1336
+ parameters: {
1337
+ query?: never;
1338
+ header?: never;
1339
+ path: {
1340
+ /** @description Session ID */
1341
+ id: string;
1342
+ };
1343
+ cookie?: never;
1344
+ };
1345
+ requestBody: {
1346
+ content: {
1347
+ "application/json": components["schemas"]["UpdateSessionRequest"];
1348
+ };
1349
+ };
1350
+ responses: {
1351
+ /** @description Successful response */
1352
+ 200: {
1353
+ headers: {
1354
+ [name: string]: unknown;
1355
+ };
1356
+ content: {
1357
+ "application/json": components["schemas"]["SessionWithActivities"];
1358
+ };
1359
+ };
1360
+ /** @description Bad request - validation error */
1361
+ 400: {
1362
+ headers: {
1363
+ [name: string]: unknown;
1364
+ };
1365
+ content: {
1366
+ "application/json": components["schemas"]["ErrorResponse"];
1367
+ };
1368
+ };
1369
+ /** @description Unauthorized - invalid or missing API key */
1370
+ 401: {
1371
+ headers: {
1372
+ [name: string]: unknown;
1373
+ };
1374
+ content: {
1375
+ "application/json": components["schemas"]["ErrorResponse"];
1376
+ };
1377
+ };
1378
+ /** @description Resource not found */
1379
+ 404: {
1380
+ headers: {
1381
+ [name: string]: unknown;
1382
+ };
1383
+ content: {
1384
+ "application/json": components["schemas"]["ErrorResponse"];
1385
+ };
1386
+ };
1387
+ /** @description Rate limit exceeded */
1388
+ 429: {
1389
+ headers: {
1390
+ [name: string]: unknown;
1391
+ };
1392
+ content: {
1393
+ "application/json": components["schemas"]["ErrorResponse"];
1394
+ };
1395
+ };
1396
+ /** @description Internal server error */
1397
+ 500: {
1398
+ headers: {
1399
+ [name: string]: unknown;
1400
+ };
1401
+ content: {
1402
+ "application/json": components["schemas"]["ErrorResponse"];
1403
+ };
1404
+ };
1405
+ };
1406
+ };
1407
+ trace?: never;
1408
+ };
1409
+ "/sessions/{id}/activities": {
1410
+ parameters: {
1411
+ query?: never;
1412
+ header?: never;
1413
+ path?: never;
1414
+ cookie?: never;
1415
+ };
1416
+ /**
1417
+ * List session activities
1418
+ * @description Retrieve all activities for a specific session.
1419
+ */
1420
+ get: {
1421
+ parameters: {
1422
+ query?: never;
1423
+ header?: never;
1424
+ path: {
1425
+ /** @description Session ID */
1426
+ id: string;
1427
+ };
1428
+ cookie?: never;
1429
+ };
1430
+ requestBody?: never;
1431
+ responses: {
1432
+ /** @description Successful response */
1433
+ 200: {
1434
+ headers: {
1435
+ [name: string]: unknown;
1436
+ };
1437
+ content: {
1438
+ "application/json": components["schemas"]["ActivityListResponse"];
1439
+ };
1440
+ };
1441
+ /** @description Bad request - validation error */
1442
+ 400: {
1443
+ headers: {
1444
+ [name: string]: unknown;
1445
+ };
1446
+ content: {
1447
+ "application/json": components["schemas"]["ErrorResponse"];
1448
+ };
1449
+ };
1450
+ /** @description Unauthorized - invalid or missing API key */
1451
+ 401: {
1452
+ headers: {
1453
+ [name: string]: unknown;
1454
+ };
1455
+ content: {
1456
+ "application/json": components["schemas"]["ErrorResponse"];
1457
+ };
1458
+ };
1459
+ /** @description Resource not found */
1460
+ 404: {
1461
+ headers: {
1462
+ [name: string]: unknown;
1463
+ };
1464
+ content: {
1465
+ "application/json": components["schemas"]["ErrorResponse"];
1466
+ };
1467
+ };
1468
+ /** @description Rate limit exceeded */
1469
+ 429: {
1470
+ headers: {
1471
+ [name: string]: unknown;
1472
+ };
1473
+ content: {
1474
+ "application/json": components["schemas"]["ErrorResponse"];
1475
+ };
1476
+ };
1477
+ /** @description Internal server error */
1478
+ 500: {
1479
+ headers: {
1480
+ [name: string]: unknown;
1481
+ };
1482
+ content: {
1483
+ "application/json": components["schemas"]["ErrorResponse"];
1484
+ };
1485
+ };
1486
+ };
1487
+ };
1488
+ put?: never;
1489
+ /**
1490
+ * Add activity to session
1491
+ * @description Add a new task activity to an existing session. Only TASK activities can be created via API.
1492
+ */
1493
+ post: {
1494
+ parameters: {
1495
+ query?: never;
1496
+ header?: never;
1497
+ path: {
1498
+ /** @description Session ID */
1499
+ id: string;
1500
+ };
1501
+ cookie?: never;
1502
+ };
1503
+ requestBody: {
1504
+ content: {
1505
+ "application/json": components["schemas"]["CreateActivityRequest"];
1506
+ };
1507
+ };
1508
+ responses: {
1509
+ /** @description Successful response */
1510
+ 200: {
1511
+ headers: {
1512
+ [name: string]: unknown;
1513
+ };
1514
+ content: {
1515
+ "application/json": components["schemas"]["SessionActivity"];
1516
+ };
1517
+ };
1518
+ /** @description Bad request - validation error */
1519
+ 400: {
1520
+ headers: {
1521
+ [name: string]: unknown;
1522
+ };
1523
+ content: {
1524
+ "application/json": components["schemas"]["ErrorResponse"];
1525
+ };
1526
+ };
1527
+ /** @description Unauthorized - invalid or missing API key */
1528
+ 401: {
1529
+ headers: {
1530
+ [name: string]: unknown;
1531
+ };
1532
+ content: {
1533
+ "application/json": components["schemas"]["ErrorResponse"];
1534
+ };
1535
+ };
1536
+ /** @description Resource not found */
1537
+ 404: {
1538
+ headers: {
1539
+ [name: string]: unknown;
1540
+ };
1541
+ content: {
1542
+ "application/json": components["schemas"]["ErrorResponse"];
1543
+ };
1544
+ };
1545
+ /** @description Rate limit exceeded */
1546
+ 429: {
1547
+ headers: {
1548
+ [name: string]: unknown;
1549
+ };
1550
+ content: {
1551
+ "application/json": components["schemas"]["ErrorResponse"];
1552
+ };
1553
+ };
1554
+ /** @description Internal server error */
1555
+ 500: {
1556
+ headers: {
1557
+ [name: string]: unknown;
1558
+ };
1559
+ content: {
1560
+ "application/json": components["schemas"]["ErrorResponse"];
1561
+ };
1562
+ };
1563
+ };
1564
+ };
1565
+ delete?: never;
1566
+ options?: never;
1567
+ head?: never;
1568
+ patch?: never;
1569
+ trace?: never;
1570
+ };
1571
+ "/sessions/{id}/activities/{activityId}": {
1572
+ parameters: {
1573
+ query?: never;
1574
+ header?: never;
1575
+ path?: never;
1576
+ cookie?: never;
1577
+ };
1578
+ get?: never;
1579
+ put?: never;
1580
+ post?: never;
1581
+ /**
1582
+ * Delete activity
1583
+ * @description Delete an activity from a session.
1584
+ */
1585
+ delete: {
1586
+ parameters: {
1587
+ query?: never;
1588
+ header?: never;
1589
+ path: {
1590
+ /** @description Session ID */
1591
+ id: string;
1592
+ /** @description Activity ID */
1593
+ activityId: string;
1594
+ };
1595
+ cookie?: never;
1596
+ };
1597
+ requestBody?: never;
1598
+ responses: {
1599
+ /** @description Successful response */
1600
+ 200: {
1601
+ headers: {
1602
+ [name: string]: unknown;
1603
+ };
1604
+ content: {
1605
+ "application/json": components["schemas"]["DeleteActivityResponse"];
1606
+ };
1607
+ };
1608
+ /** @description Bad request - validation error */
1609
+ 400: {
1610
+ headers: {
1611
+ [name: string]: unknown;
1612
+ };
1613
+ content: {
1614
+ "application/json": components["schemas"]["ErrorResponse"];
1615
+ };
1616
+ };
1617
+ /** @description Unauthorized - invalid or missing API key */
1618
+ 401: {
1619
+ headers: {
1620
+ [name: string]: unknown;
1621
+ };
1622
+ content: {
1623
+ "application/json": components["schemas"]["ErrorResponse"];
1624
+ };
1625
+ };
1626
+ /** @description Resource not found */
1627
+ 404: {
1628
+ headers: {
1629
+ [name: string]: unknown;
1630
+ };
1631
+ content: {
1632
+ "application/json": components["schemas"]["ErrorResponse"];
1633
+ };
1634
+ };
1635
+ /** @description Rate limit exceeded */
1636
+ 429: {
1637
+ headers: {
1638
+ [name: string]: unknown;
1639
+ };
1640
+ content: {
1641
+ "application/json": components["schemas"]["ErrorResponse"];
1642
+ };
1643
+ };
1644
+ /** @description Internal server error */
1645
+ 500: {
1646
+ headers: {
1647
+ [name: string]: unknown;
1648
+ };
1649
+ content: {
1650
+ "application/json": components["schemas"]["ErrorResponse"];
1651
+ };
1652
+ };
1653
+ };
1654
+ };
1655
+ options?: never;
1656
+ head?: never;
1657
+ /**
1658
+ * Update activity
1659
+ * @description Update an existing activity. Only provided fields will be modified.
1660
+ */
1661
+ patch: {
1662
+ parameters: {
1663
+ query?: never;
1664
+ header?: never;
1665
+ path: {
1666
+ /** @description Session ID */
1667
+ id: string;
1668
+ /** @description Activity ID */
1669
+ activityId: string;
1670
+ };
1671
+ cookie?: never;
1672
+ };
1673
+ requestBody: {
1674
+ content: {
1675
+ "application/json": components["schemas"]["UpdateActivityRequest"];
1676
+ };
1677
+ };
1678
+ responses: {
1679
+ /** @description Successful response */
1680
+ 200: {
1681
+ headers: {
1682
+ [name: string]: unknown;
1683
+ };
1684
+ content: {
1685
+ "application/json": components["schemas"]["SessionActivity"];
1686
+ };
1687
+ };
1688
+ /** @description Bad request - validation error */
1689
+ 400: {
1690
+ headers: {
1691
+ [name: string]: unknown;
1692
+ };
1693
+ content: {
1694
+ "application/json": components["schemas"]["ErrorResponse"];
1695
+ };
1696
+ };
1697
+ /** @description Unauthorized - invalid or missing API key */
1698
+ 401: {
1699
+ headers: {
1700
+ [name: string]: unknown;
1701
+ };
1702
+ content: {
1703
+ "application/json": components["schemas"]["ErrorResponse"];
1704
+ };
1705
+ };
1706
+ /** @description Resource not found */
1707
+ 404: {
1708
+ headers: {
1709
+ [name: string]: unknown;
1710
+ };
1711
+ content: {
1712
+ "application/json": components["schemas"]["ErrorResponse"];
1713
+ };
1714
+ };
1715
+ /** @description Rate limit exceeded */
1716
+ 429: {
1717
+ headers: {
1718
+ [name: string]: unknown;
1719
+ };
1720
+ content: {
1721
+ "application/json": components["schemas"]["ErrorResponse"];
1722
+ };
1723
+ };
1724
+ /** @description Internal server error */
1725
+ 500: {
1726
+ headers: {
1727
+ [name: string]: unknown;
1728
+ };
1729
+ content: {
1730
+ "application/json": components["schemas"]["ErrorResponse"];
1731
+ };
1732
+ };
1733
+ };
1734
+ };
1735
+ trace?: never;
1736
+ };
1737
+ "/tasks": {
1738
+ parameters: {
1739
+ query?: never;
1740
+ header?: never;
1741
+ path?: never;
1742
+ cookie?: never;
1743
+ };
1744
+ /**
1745
+ * List tasks
1746
+ * @description Retrieve a paginated list of tasks. Supports filtering by completion status, project, parent task, and date range.
1747
+ */
1748
+ get: {
1749
+ parameters: {
1750
+ query?: {
1751
+ /** @description Cursor for pagination */
1752
+ cursor?: string;
1753
+ /** @description Number of items to return (max 100) */
1754
+ limit?: string;
1755
+ /** @description Field to order results by. Note: doneAt ordering only applies to completed tasks */
1756
+ orderBy?: "updatedAt" | "doneAt";
1757
+ /** @description Sort order (ascending or descending) */
1758
+ order?: "asc" | "desc";
1759
+ /** @description Filter by completion status */
1760
+ done?: "true" | "false";
1761
+ /** @description Filter by project */
1762
+ projectId?: string;
1763
+ /** @description Filter by parent task */
1764
+ parentId?: string;
1765
+ /** @description Filter by section */
1766
+ section?: "today" | "sooner" | "later";
1767
+ /** @description Filter tasks completed after this date (Unix seconds or ISO 8601) */
1768
+ doneAfter?: string;
1769
+ /** @description Filter tasks completed before this date (Unix seconds or ISO 8601) */
1770
+ doneBefore?: string;
1771
+ /** @description Include HTML representation of the task description */
1772
+ includeHtml?: boolean | null;
1773
+ };
1774
+ header?: never;
1775
+ path?: never;
1776
+ cookie?: never;
1777
+ };
1778
+ requestBody?: never;
1779
+ responses: {
1780
+ /** @description Successful response */
1781
+ 200: {
1782
+ headers: {
1783
+ [name: string]: unknown;
1784
+ };
1785
+ content: {
1786
+ "application/json": components["schemas"]["TaskListResponse"];
1787
+ };
1788
+ };
1789
+ /** @description Bad request - validation error */
1790
+ 400: {
1791
+ headers: {
1792
+ [name: string]: unknown;
1793
+ };
1794
+ content: {
1795
+ "application/json": components["schemas"]["ErrorResponse"];
1796
+ };
1797
+ };
1798
+ /** @description Unauthorized - invalid or missing API key */
1799
+ 401: {
1800
+ headers: {
1801
+ [name: string]: unknown;
1802
+ };
1803
+ content: {
1804
+ "application/json": components["schemas"]["ErrorResponse"];
1805
+ };
1806
+ };
1807
+ /** @description Resource not found */
1808
+ 404: {
1809
+ headers: {
1810
+ [name: string]: unknown;
1811
+ };
1812
+ content: {
1813
+ "application/json": components["schemas"]["ErrorResponse"];
1814
+ };
1815
+ };
1816
+ /** @description Rate limit exceeded */
1817
+ 429: {
1818
+ headers: {
1819
+ [name: string]: unknown;
1820
+ };
1821
+ content: {
1822
+ "application/json": components["schemas"]["ErrorResponse"];
1823
+ };
1824
+ };
1825
+ /** @description Internal server error */
1826
+ 500: {
1827
+ headers: {
1828
+ [name: string]: unknown;
1829
+ };
1830
+ content: {
1831
+ "application/json": components["schemas"]["ErrorResponse"];
1832
+ };
1833
+ };
1834
+ };
1835
+ };
1836
+ put?: never;
1837
+ /**
1838
+ * Create task
1839
+ * @description Create a new task. Optionally assign it to a parent task, project, or section.
1840
+ */
1841
+ post: {
1842
+ parameters: {
1843
+ query?: {
1844
+ /** @description Include HTML representation of the task description */
1845
+ includeHtml?: boolean | null;
1846
+ };
1847
+ header?: never;
1848
+ path?: never;
1849
+ cookie?: never;
1850
+ };
1851
+ requestBody: {
1852
+ content: {
1853
+ "application/json": components["schemas"]["CreateTaskRequest"];
1854
+ };
1855
+ };
1856
+ responses: {
1857
+ /** @description Successful response */
1858
+ 200: {
1859
+ headers: {
1860
+ [name: string]: unknown;
1861
+ };
1862
+ content: {
1863
+ "application/json": components["schemas"]["Task"];
1864
+ };
1865
+ };
1866
+ /** @description Bad request - validation error */
1867
+ 400: {
1868
+ headers: {
1869
+ [name: string]: unknown;
1870
+ };
1871
+ content: {
1872
+ "application/json": components["schemas"]["ErrorResponse"];
1873
+ };
1874
+ };
1875
+ /** @description Unauthorized - invalid or missing API key */
1876
+ 401: {
1877
+ headers: {
1878
+ [name: string]: unknown;
1879
+ };
1880
+ content: {
1881
+ "application/json": components["schemas"]["ErrorResponse"];
1882
+ };
1883
+ };
1884
+ /** @description Resource not found */
1885
+ 404: {
1886
+ headers: {
1887
+ [name: string]: unknown;
1888
+ };
1889
+ content: {
1890
+ "application/json": components["schemas"]["ErrorResponse"];
1891
+ };
1892
+ };
1893
+ /** @description Rate limit exceeded */
1894
+ 429: {
1895
+ headers: {
1896
+ [name: string]: unknown;
1897
+ };
1898
+ content: {
1899
+ "application/json": components["schemas"]["ErrorResponse"];
1900
+ };
1901
+ };
1902
+ /** @description Internal server error */
1903
+ 500: {
1904
+ headers: {
1905
+ [name: string]: unknown;
1906
+ };
1907
+ content: {
1908
+ "application/json": components["schemas"]["ErrorResponse"];
1909
+ };
1910
+ };
1911
+ };
1912
+ };
1913
+ delete?: never;
1914
+ options?: never;
1915
+ head?: never;
1916
+ patch?: never;
1917
+ trace?: never;
1918
+ };
1919
+ "/tasks/sections": {
1920
+ parameters: {
1921
+ query?: never;
1922
+ header?: never;
1923
+ path?: never;
1924
+ cookie?: never;
1925
+ };
1926
+ /**
1927
+ * Get tasks by section
1928
+ * @description Retrieve tasks organized by section (today, sooner, later).
1929
+ */
1930
+ get: {
1931
+ parameters: {
1932
+ query?: {
1933
+ /** @description Filter by specific section */
1934
+ section?: "today" | "sooner" | "later";
1935
+ /** @description Include HTML representation of the task description */
1936
+ includeHtml?: boolean | null;
1937
+ };
1938
+ header?: never;
1939
+ path?: never;
1940
+ cookie?: never;
1941
+ };
1942
+ requestBody?: never;
1943
+ responses: {
1944
+ /** @description Successful response */
1945
+ 200: {
1946
+ headers: {
1947
+ [name: string]: unknown;
1948
+ };
1949
+ content: {
1950
+ "application/json": components["schemas"]["TaskSectionsResponse"];
1951
+ };
1952
+ };
1953
+ /** @description Bad request - validation error */
1954
+ 400: {
1955
+ headers: {
1956
+ [name: string]: unknown;
1957
+ };
1958
+ content: {
1959
+ "application/json": components["schemas"]["ErrorResponse"];
1960
+ };
1961
+ };
1962
+ /** @description Unauthorized - invalid or missing API key */
1963
+ 401: {
1964
+ headers: {
1965
+ [name: string]: unknown;
1966
+ };
1967
+ content: {
1968
+ "application/json": components["schemas"]["ErrorResponse"];
1969
+ };
1970
+ };
1971
+ /** @description Resource not found */
1972
+ 404: {
1973
+ headers: {
1974
+ [name: string]: unknown;
1975
+ };
1976
+ content: {
1977
+ "application/json": components["schemas"]["ErrorResponse"];
1978
+ };
1979
+ };
1980
+ /** @description Rate limit exceeded */
1981
+ 429: {
1982
+ headers: {
1983
+ [name: string]: unknown;
1984
+ };
1985
+ content: {
1986
+ "application/json": components["schemas"]["ErrorResponse"];
1987
+ };
1988
+ };
1989
+ /** @description Internal server error */
1990
+ 500: {
1991
+ headers: {
1992
+ [name: string]: unknown;
1993
+ };
1994
+ content: {
1995
+ "application/json": components["schemas"]["ErrorResponse"];
1996
+ };
1997
+ };
1998
+ };
1999
+ };
2000
+ put?: never;
2001
+ post?: never;
2002
+ delete?: never;
2003
+ options?: never;
2004
+ head?: never;
2005
+ patch?: never;
2006
+ trace?: never;
2007
+ };
2008
+ "/tasks/{id}": {
2009
+ parameters: {
2010
+ query?: never;
2011
+ header?: never;
2012
+ path?: never;
2013
+ cookie?: never;
2014
+ };
2015
+ /**
2016
+ * Get task
2017
+ * @description Retrieve a single task by ID.
2018
+ */
2019
+ get: {
2020
+ parameters: {
2021
+ query?: {
2022
+ /** @description Include HTML representation of the task description */
2023
+ includeHtml?: boolean | null;
2024
+ };
2025
+ header?: never;
2026
+ path: {
2027
+ /** @description Task ID */
2028
+ id: string;
2029
+ };
2030
+ cookie?: never;
2031
+ };
2032
+ requestBody?: never;
2033
+ responses: {
2034
+ /** @description Successful response */
2035
+ 200: {
2036
+ headers: {
2037
+ [name: string]: unknown;
2038
+ };
2039
+ content: {
2040
+ "application/json": components["schemas"]["Task"];
2041
+ };
2042
+ };
2043
+ /** @description Bad request - validation error */
2044
+ 400: {
2045
+ headers: {
2046
+ [name: string]: unknown;
2047
+ };
2048
+ content: {
2049
+ "application/json": components["schemas"]["ErrorResponse"];
2050
+ };
2051
+ };
2052
+ /** @description Unauthorized - invalid or missing API key */
2053
+ 401: {
2054
+ headers: {
2055
+ [name: string]: unknown;
2056
+ };
2057
+ content: {
2058
+ "application/json": components["schemas"]["ErrorResponse"];
2059
+ };
2060
+ };
2061
+ /** @description Resource not found */
2062
+ 404: {
2063
+ headers: {
2064
+ [name: string]: unknown;
2065
+ };
2066
+ content: {
2067
+ "application/json": components["schemas"]["ErrorResponse"];
2068
+ };
2069
+ };
2070
+ /** @description Rate limit exceeded */
2071
+ 429: {
2072
+ headers: {
2073
+ [name: string]: unknown;
2074
+ };
2075
+ content: {
2076
+ "application/json": components["schemas"]["ErrorResponse"];
2077
+ };
2078
+ };
2079
+ /** @description Internal server error */
2080
+ 500: {
2081
+ headers: {
2082
+ [name: string]: unknown;
2083
+ };
2084
+ content: {
2085
+ "application/json": components["schemas"]["ErrorResponse"];
2086
+ };
2087
+ };
2088
+ };
2089
+ };
2090
+ put?: never;
2091
+ post?: never;
2092
+ /**
2093
+ * Delete task
2094
+ * @description Delete a task. This will also delete all subtasks and remove associated session activities.
2095
+ */
2096
+ delete: {
2097
+ parameters: {
2098
+ query?: never;
2099
+ header?: never;
2100
+ path: {
2101
+ /** @description Task ID */
2102
+ id: string;
2103
+ };
2104
+ cookie?: never;
2105
+ };
2106
+ requestBody?: never;
2107
+ responses: {
2108
+ /** @description Successful response */
2109
+ 200: {
2110
+ headers: {
2111
+ [name: string]: unknown;
2112
+ };
2113
+ content: {
2114
+ "application/json": components["schemas"]["DeleteTaskResponse"];
2115
+ };
2116
+ };
2117
+ /** @description Bad request - validation error */
2118
+ 400: {
2119
+ headers: {
2120
+ [name: string]: unknown;
2121
+ };
2122
+ content: {
2123
+ "application/json": components["schemas"]["ErrorResponse"];
2124
+ };
2125
+ };
2126
+ /** @description Unauthorized - invalid or missing API key */
2127
+ 401: {
2128
+ headers: {
2129
+ [name: string]: unknown;
2130
+ };
2131
+ content: {
2132
+ "application/json": components["schemas"]["ErrorResponse"];
2133
+ };
2134
+ };
2135
+ /** @description Resource not found */
2136
+ 404: {
2137
+ headers: {
2138
+ [name: string]: unknown;
2139
+ };
2140
+ content: {
2141
+ "application/json": components["schemas"]["ErrorResponse"];
2142
+ };
2143
+ };
2144
+ /** @description Rate limit exceeded */
2145
+ 429: {
2146
+ headers: {
2147
+ [name: string]: unknown;
2148
+ };
2149
+ content: {
2150
+ "application/json": components["schemas"]["ErrorResponse"];
2151
+ };
2152
+ };
2153
+ /** @description Internal server error */
2154
+ 500: {
2155
+ headers: {
2156
+ [name: string]: unknown;
2157
+ };
2158
+ content: {
2159
+ "application/json": components["schemas"]["ErrorResponse"];
2160
+ };
2161
+ };
2162
+ };
2163
+ };
2164
+ options?: never;
2165
+ head?: never;
2166
+ /**
2167
+ * Update task
2168
+ * @description Update an existing task. Only provided fields will be modified.
2169
+ */
2170
+ patch: {
2171
+ parameters: {
2172
+ query?: {
2173
+ /** @description Include HTML representation of the task description */
2174
+ includeHtml?: boolean | null;
2175
+ };
2176
+ header?: never;
2177
+ path: {
2178
+ /** @description Task ID */
2179
+ id: string;
2180
+ };
2181
+ cookie?: never;
2182
+ };
2183
+ requestBody: {
2184
+ content: {
2185
+ "application/json": components["schemas"]["UpdateTaskRequest"];
2186
+ };
2187
+ };
2188
+ responses: {
2189
+ /** @description Successful response */
2190
+ 200: {
2191
+ headers: {
2192
+ [name: string]: unknown;
2193
+ };
2194
+ content: {
2195
+ "application/json": components["schemas"]["Task"];
2196
+ };
2197
+ };
2198
+ /** @description Bad request - validation error */
2199
+ 400: {
2200
+ headers: {
2201
+ [name: string]: unknown;
2202
+ };
2203
+ content: {
2204
+ "application/json": components["schemas"]["ErrorResponse"];
2205
+ };
2206
+ };
2207
+ /** @description Unauthorized - invalid or missing API key */
2208
+ 401: {
2209
+ headers: {
2210
+ [name: string]: unknown;
2211
+ };
2212
+ content: {
2213
+ "application/json": components["schemas"]["ErrorResponse"];
2214
+ };
2215
+ };
2216
+ /** @description Resource not found */
2217
+ 404: {
2218
+ headers: {
2219
+ [name: string]: unknown;
2220
+ };
2221
+ content: {
2222
+ "application/json": components["schemas"]["ErrorResponse"];
2223
+ };
2224
+ };
2225
+ /** @description Rate limit exceeded */
2226
+ 429: {
2227
+ headers: {
2228
+ [name: string]: unknown;
2229
+ };
2230
+ content: {
2231
+ "application/json": components["schemas"]["ErrorResponse"];
2232
+ };
2233
+ };
2234
+ /** @description Internal server error */
2235
+ 500: {
2236
+ headers: {
2237
+ [name: string]: unknown;
2238
+ };
2239
+ content: {
2240
+ "application/json": components["schemas"]["ErrorResponse"];
2241
+ };
2242
+ };
2243
+ };
2244
+ };
2245
+ trace?: never;
2246
+ };
2247
+ "/tasks/{id}/subtasks": {
2248
+ parameters: {
2249
+ query?: never;
2250
+ header?: never;
2251
+ path?: never;
2252
+ cookie?: never;
2253
+ };
2254
+ /**
2255
+ * Get subtasks
2256
+ * @description Retrieve all subtasks of a task. Returns a paginated list of tasks that have the specified task as their parent.
2257
+ */
2258
+ get: {
2259
+ parameters: {
2260
+ query?: {
2261
+ /** @description Cursor for pagination */
2262
+ cursor?: string;
2263
+ /** @description Number of items to return (max 100) */
2264
+ limit?: string;
2265
+ /** @description Filter by completion status */
2266
+ done?: "true" | "false";
2267
+ /** @description Include HTML representation of the task description */
2268
+ includeHtml?: boolean | null;
2269
+ };
2270
+ header?: never;
2271
+ path: {
2272
+ /** @description Task ID */
2273
+ id: string;
2274
+ };
2275
+ cookie?: never;
2276
+ };
2277
+ requestBody?: never;
2278
+ responses: {
2279
+ /** @description Successful response */
2280
+ 200: {
2281
+ headers: {
2282
+ [name: string]: unknown;
2283
+ };
2284
+ content: {
2285
+ "application/json": components["schemas"]["TaskSubtasksResponse"];
2286
+ };
2287
+ };
2288
+ /** @description Bad request - validation error */
2289
+ 400: {
2290
+ headers: {
2291
+ [name: string]: unknown;
2292
+ };
2293
+ content: {
2294
+ "application/json": components["schemas"]["ErrorResponse"];
2295
+ };
2296
+ };
2297
+ /** @description Unauthorized - invalid or missing API key */
2298
+ 401: {
2299
+ headers: {
2300
+ [name: string]: unknown;
2301
+ };
2302
+ content: {
2303
+ "application/json": components["schemas"]["ErrorResponse"];
2304
+ };
2305
+ };
2306
+ /** @description Resource not found */
2307
+ 404: {
2308
+ headers: {
2309
+ [name: string]: unknown;
2310
+ };
2311
+ content: {
2312
+ "application/json": components["schemas"]["ErrorResponse"];
2313
+ };
2314
+ };
2315
+ /** @description Rate limit exceeded */
2316
+ 429: {
2317
+ headers: {
2318
+ [name: string]: unknown;
2319
+ };
2320
+ content: {
2321
+ "application/json": components["schemas"]["ErrorResponse"];
2322
+ };
2323
+ };
2324
+ /** @description Internal server error */
2325
+ 500: {
2326
+ headers: {
2327
+ [name: string]: unknown;
2328
+ };
2329
+ content: {
2330
+ "application/json": components["schemas"]["ErrorResponse"];
2331
+ };
2332
+ };
2333
+ };
2334
+ };
2335
+ put?: never;
2336
+ post?: never;
2337
+ delete?: never;
2338
+ options?: never;
2339
+ head?: never;
2340
+ patch?: never;
2341
+ trace?: never;
2342
+ };
2343
+ "/timer": {
2344
+ parameters: {
2345
+ query?: never;
2346
+ header?: never;
2347
+ path?: never;
2348
+ cookie?: never;
2349
+ };
2350
+ /**
2351
+ * Get timer state
2352
+ * @description Get the current session timer state. Returns IDLE if no timer is active.
2353
+ */
2354
+ get: {
2355
+ parameters: {
2356
+ query?: never;
2357
+ header?: never;
2358
+ path?: never;
2359
+ cookie?: never;
2360
+ };
2361
+ requestBody?: never;
2362
+ responses: {
2363
+ /** @description Successful response */
2364
+ 200: {
2365
+ headers: {
2366
+ [name: string]: unknown;
2367
+ };
2368
+ content: {
2369
+ "application/json": components["schemas"]["TimerState"];
2370
+ };
2371
+ };
2372
+ /** @description Bad request - validation error */
2373
+ 400: {
2374
+ headers: {
2375
+ [name: string]: unknown;
2376
+ };
2377
+ content: {
2378
+ "application/json": components["schemas"]["ErrorResponse"];
2379
+ };
2380
+ };
2381
+ /** @description Unauthorized - invalid or missing API key */
2382
+ 401: {
2383
+ headers: {
2384
+ [name: string]: unknown;
2385
+ };
2386
+ content: {
2387
+ "application/json": components["schemas"]["ErrorResponse"];
2388
+ };
2389
+ };
2390
+ /** @description Resource not found */
2391
+ 404: {
2392
+ headers: {
2393
+ [name: string]: unknown;
2394
+ };
2395
+ content: {
2396
+ "application/json": components["schemas"]["ErrorResponse"];
2397
+ };
2398
+ };
2399
+ /** @description Rate limit exceeded */
2400
+ 429: {
2401
+ headers: {
2402
+ [name: string]: unknown;
2403
+ };
2404
+ content: {
2405
+ "application/json": components["schemas"]["ErrorResponse"];
2406
+ };
2407
+ };
2408
+ /** @description Internal server error */
2409
+ 500: {
2410
+ headers: {
2411
+ [name: string]: unknown;
2412
+ };
2413
+ content: {
2414
+ "application/json": components["schemas"]["ErrorResponse"];
2415
+ };
2416
+ };
2417
+ };
2418
+ };
2419
+ put?: never;
2420
+ post?: never;
2421
+ /**
2422
+ * Cancel timer
2423
+ * @description Cancel the timer without saving any sessions. All tracked time will be discarded.
2424
+ */
2425
+ delete: {
2426
+ parameters: {
2427
+ query?: never;
2428
+ header?: never;
2429
+ path?: never;
2430
+ cookie?: never;
2431
+ };
2432
+ requestBody?: never;
2433
+ responses: {
2434
+ /** @description Successful response */
2435
+ 200: {
2436
+ headers: {
2437
+ [name: string]: unknown;
2438
+ };
2439
+ content: {
2440
+ "application/json": components["schemas"]["TimerState"];
2441
+ };
2442
+ };
2443
+ /** @description Bad request - validation error */
2444
+ 400: {
2445
+ headers: {
2446
+ [name: string]: unknown;
2447
+ };
2448
+ content: {
2449
+ "application/json": components["schemas"]["ErrorResponse"];
2450
+ };
2451
+ };
2452
+ /** @description Unauthorized - invalid or missing API key */
2453
+ 401: {
2454
+ headers: {
2455
+ [name: string]: unknown;
2456
+ };
2457
+ content: {
2458
+ "application/json": components["schemas"]["ErrorResponse"];
2459
+ };
2460
+ };
2461
+ /** @description Resource not found */
2462
+ 404: {
2463
+ headers: {
2464
+ [name: string]: unknown;
2465
+ };
2466
+ content: {
2467
+ "application/json": components["schemas"]["ErrorResponse"];
2468
+ };
2469
+ };
2470
+ /** @description Rate limit exceeded */
2471
+ 429: {
2472
+ headers: {
2473
+ [name: string]: unknown;
2474
+ };
2475
+ content: {
2476
+ "application/json": components["schemas"]["ErrorResponse"];
2477
+ };
2478
+ };
2479
+ /** @description Internal server error */
2480
+ 500: {
2481
+ headers: {
2482
+ [name: string]: unknown;
2483
+ };
2484
+ content: {
2485
+ "application/json": components["schemas"]["ErrorResponse"];
2486
+ };
2487
+ };
2488
+ };
2489
+ };
2490
+ options?: never;
2491
+ head?: never;
2492
+ patch?: never;
2493
+ trace?: never;
2494
+ };
2495
+ "/timer/start": {
2496
+ parameters: {
2497
+ query?: never;
2498
+ header?: never;
2499
+ path?: never;
2500
+ cookie?: never;
2501
+ };
2502
+ get?: never;
2503
+ put?: never;
2504
+ /**
2505
+ * Start timer
2506
+ * @description Start a new session timer. If a timer is already running, it will be stopped first.
2507
+ */
2508
+ post: {
2509
+ parameters: {
2510
+ query?: never;
2511
+ header?: never;
2512
+ path?: never;
2513
+ cookie?: never;
2514
+ };
2515
+ requestBody: {
42
2516
  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;
2517
+ "application/json": components["schemas"]["StartTimerRequest"];
2518
+ };
2519
+ };
2520
+ responses: {
2521
+ /** @description Successful response */
2522
+ 200: {
2523
+ headers: {
2524
+ [name: string]: unknown;
2525
+ };
2526
+ content: {
2527
+ "application/json": components["schemas"]["TimerState"];
2528
+ };
2529
+ };
2530
+ /** @description Bad request - validation error */
2531
+ 400: {
2532
+ headers: {
2533
+ [name: string]: unknown;
2534
+ };
2535
+ content: {
2536
+ "application/json": components["schemas"]["ErrorResponse"];
2537
+ };
2538
+ };
2539
+ /** @description Unauthorized - invalid or missing API key */
2540
+ 401: {
2541
+ headers: {
2542
+ [name: string]: unknown;
2543
+ };
2544
+ content: {
2545
+ "application/json": components["schemas"]["ErrorResponse"];
2546
+ };
2547
+ };
2548
+ /** @description Resource not found */
2549
+ 404: {
2550
+ headers: {
2551
+ [name: string]: unknown;
2552
+ };
2553
+ content: {
2554
+ "application/json": components["schemas"]["ErrorResponse"];
2555
+ };
2556
+ };
2557
+ /** @description Rate limit exceeded */
2558
+ 429: {
2559
+ headers: {
2560
+ [name: string]: unknown;
2561
+ };
2562
+ content: {
2563
+ "application/json": components["schemas"]["ErrorResponse"];
2564
+ };
2565
+ };
2566
+ /** @description Internal server error */
2567
+ 500: {
2568
+ headers: {
2569
+ [name: string]: unknown;
2570
+ };
2571
+ content: {
2572
+ "application/json": components["schemas"]["ErrorResponse"];
2573
+ };
2574
+ };
2575
+ };
2576
+ };
2577
+ delete?: never;
2578
+ options?: never;
2579
+ head?: never;
2580
+ patch?: never;
2581
+ trace?: never;
2582
+ };
2583
+ "/timer/pause": {
2584
+ parameters: {
2585
+ query?: never;
2586
+ header?: never;
2587
+ path?: never;
2588
+ cookie?: never;
2589
+ };
2590
+ get?: never;
2591
+ put?: never;
2592
+ /**
2593
+ * Pause timer
2594
+ * @description Pause the currently running timer.
2595
+ */
2596
+ post: {
2597
+ parameters: {
2598
+ query?: never;
2599
+ header?: never;
2600
+ path?: never;
2601
+ cookie?: never;
2602
+ };
2603
+ requestBody?: never;
2604
+ responses: {
2605
+ /** @description Successful response */
2606
+ 200: {
2607
+ headers: {
2608
+ [name: string]: unknown;
2609
+ };
2610
+ content: {
2611
+ "application/json": components["schemas"]["TimerState"];
2612
+ };
2613
+ };
2614
+ /** @description Bad request - validation error */
2615
+ 400: {
2616
+ headers: {
2617
+ [name: string]: unknown;
2618
+ };
2619
+ content: {
2620
+ "application/json": components["schemas"]["ErrorResponse"];
2621
+ };
2622
+ };
2623
+ /** @description Unauthorized - invalid or missing API key */
2624
+ 401: {
2625
+ headers: {
2626
+ [name: string]: unknown;
2627
+ };
2628
+ content: {
2629
+ "application/json": components["schemas"]["ErrorResponse"];
2630
+ };
2631
+ };
2632
+ /** @description Resource not found */
2633
+ 404: {
2634
+ headers: {
2635
+ [name: string]: unknown;
2636
+ };
2637
+ content: {
2638
+ "application/json": components["schemas"]["ErrorResponse"];
2639
+ };
2640
+ };
2641
+ /** @description Rate limit exceeded */
2642
+ 429: {
2643
+ headers: {
2644
+ [name: string]: unknown;
2645
+ };
2646
+ content: {
2647
+ "application/json": components["schemas"]["ErrorResponse"];
2648
+ };
2649
+ };
2650
+ /** @description Internal server error */
2651
+ 500: {
2652
+ headers: {
2653
+ [name: string]: unknown;
2654
+ };
2655
+ content: {
2656
+ "application/json": components["schemas"]["ErrorResponse"];
2657
+ };
2658
+ };
2659
+ };
2660
+ };
2661
+ delete?: never;
2662
+ options?: never;
2663
+ head?: never;
2664
+ patch?: never;
2665
+ trace?: never;
2666
+ };
2667
+ "/timer/continue": {
2668
+ parameters: {
2669
+ query?: never;
2670
+ header?: never;
2671
+ path?: never;
2672
+ cookie?: never;
2673
+ };
2674
+ get?: never;
2675
+ put?: never;
2676
+ /**
2677
+ * Continue timer
2678
+ * @description Resume a paused timer.
2679
+ */
2680
+ post: {
2681
+ parameters: {
2682
+ query?: never;
2683
+ header?: never;
2684
+ path?: never;
2685
+ cookie?: never;
2686
+ };
2687
+ requestBody?: never;
2688
+ responses: {
2689
+ /** @description Successful response */
2690
+ 200: {
2691
+ headers: {
2692
+ [name: string]: unknown;
2693
+ };
2694
+ content: {
2695
+ "application/json": components["schemas"]["TimerState"];
2696
+ };
2697
+ };
2698
+ /** @description Bad request - validation error */
2699
+ 400: {
2700
+ headers: {
2701
+ [name: string]: unknown;
2702
+ };
2703
+ content: {
2704
+ "application/json": components["schemas"]["ErrorResponse"];
2705
+ };
2706
+ };
2707
+ /** @description Unauthorized - invalid or missing API key */
2708
+ 401: {
2709
+ headers: {
2710
+ [name: string]: unknown;
2711
+ };
2712
+ content: {
2713
+ "application/json": components["schemas"]["ErrorResponse"];
2714
+ };
2715
+ };
2716
+ /** @description Resource not found */
2717
+ 404: {
2718
+ headers: {
2719
+ [name: string]: unknown;
2720
+ };
2721
+ content: {
2722
+ "application/json": components["schemas"]["ErrorResponse"];
2723
+ };
2724
+ };
2725
+ /** @description Rate limit exceeded */
2726
+ 429: {
2727
+ headers: {
2728
+ [name: string]: unknown;
2729
+ };
2730
+ content: {
2731
+ "application/json": components["schemas"]["ErrorResponse"];
2732
+ };
2733
+ };
2734
+ /** @description Internal server error */
2735
+ 500: {
2736
+ headers: {
2737
+ [name: string]: unknown;
2738
+ };
2739
+ content: {
2740
+ "application/json": components["schemas"]["ErrorResponse"];
2741
+ };
2742
+ };
2743
+ };
2744
+ };
2745
+ delete?: never;
2746
+ options?: never;
2747
+ head?: never;
2748
+ patch?: never;
2749
+ trace?: never;
2750
+ };
2751
+ "/timer/stop": {
2752
+ parameters: {
2753
+ query?: never;
2754
+ header?: never;
2755
+ path?: never;
2756
+ cookie?: never;
2757
+ };
2758
+ get?: never;
2759
+ put?: never;
2760
+ /**
2761
+ * Stop timer
2762
+ * @description Stop the timer and finalize all sessions. Returns the completed sessions.
2763
+ */
2764
+ post: {
2765
+ parameters: {
2766
+ query?: never;
2767
+ header?: never;
2768
+ path?: never;
2769
+ cookie?: never;
2770
+ };
2771
+ requestBody?: never;
2772
+ responses: {
2773
+ /** @description Successful response */
2774
+ 200: {
2775
+ headers: {
2776
+ [name: string]: unknown;
2777
+ };
2778
+ content: {
2779
+ "application/json": components["schemas"]["StopTimerResponse"];
2780
+ };
2781
+ };
2782
+ /** @description Bad request - validation error */
2783
+ 400: {
2784
+ headers: {
2785
+ [name: string]: unknown;
2786
+ };
2787
+ content: {
2788
+ "application/json": components["schemas"]["ErrorResponse"];
2789
+ };
2790
+ };
2791
+ /** @description Unauthorized - invalid or missing API key */
2792
+ 401: {
2793
+ headers: {
2794
+ [name: string]: unknown;
2795
+ };
2796
+ content: {
2797
+ "application/json": components["schemas"]["ErrorResponse"];
2798
+ };
2799
+ };
2800
+ /** @description Resource not found */
2801
+ 404: {
2802
+ headers: {
2803
+ [name: string]: unknown;
2804
+ };
2805
+ content: {
2806
+ "application/json": components["schemas"]["ErrorResponse"];
2807
+ };
2808
+ };
2809
+ /** @description Rate limit exceeded */
2810
+ 429: {
2811
+ headers: {
2812
+ [name: string]: unknown;
2813
+ };
2814
+ content: {
2815
+ "application/json": components["schemas"]["ErrorResponse"];
2816
+ };
2817
+ };
2818
+ /** @description Internal server error */
2819
+ 500: {
2820
+ headers: {
2821
+ [name: string]: unknown;
2822
+ };
2823
+ content: {
2824
+ "application/json": components["schemas"]["ErrorResponse"];
2825
+ };
2826
+ };
2827
+ };
2828
+ };
2829
+ delete?: never;
2830
+ options?: never;
2831
+ head?: never;
2832
+ patch?: never;
2833
+ trace?: never;
2834
+ };
2835
+ "/webhooks": {
2836
+ parameters: {
2837
+ query?: never;
2838
+ header?: never;
2839
+ path?: never;
2840
+ cookie?: never;
2841
+ };
2842
+ /**
2843
+ * List webhooks
2844
+ * @description Retrieve a paginated list of webhooks for the workspace.
2845
+ */
2846
+ get: {
2847
+ parameters: {
2848
+ query?: {
2849
+ /** @description Number of webhooks to return */
2850
+ limit?: number;
2851
+ /** @description Cursor for pagination */
2852
+ cursor?: string;
2853
+ /** @description Filter by active status */
2854
+ isActive?: "true" | "false";
2855
+ };
2856
+ header?: never;
2857
+ path?: never;
2858
+ cookie?: never;
2859
+ };
2860
+ requestBody?: never;
2861
+ responses: {
2862
+ /** @description Successful response */
2863
+ 200: {
2864
+ headers: {
2865
+ [name: string]: unknown;
2866
+ };
2867
+ content: {
2868
+ "application/json": components["schemas"]["WebhookListResponse"];
2869
+ };
2870
+ };
2871
+ /** @description Bad request - validation error */
2872
+ 400: {
2873
+ headers: {
2874
+ [name: string]: unknown;
2875
+ };
2876
+ content: {
2877
+ "application/json": components["schemas"]["ErrorResponse"];
2878
+ };
2879
+ };
2880
+ /** @description Unauthorized - invalid or missing API key */
2881
+ 401: {
2882
+ headers: {
2883
+ [name: string]: unknown;
2884
+ };
2885
+ content: {
2886
+ "application/json": components["schemas"]["ErrorResponse"];
2887
+ };
2888
+ };
2889
+ /** @description Resource not found */
2890
+ 404: {
2891
+ headers: {
2892
+ [name: string]: unknown;
2893
+ };
2894
+ content: {
2895
+ "application/json": components["schemas"]["ErrorResponse"];
2896
+ };
2897
+ };
2898
+ /** @description Rate limit exceeded */
2899
+ 429: {
2900
+ headers: {
2901
+ [name: string]: unknown;
2902
+ };
2903
+ content: {
2904
+ "application/json": components["schemas"]["ErrorResponse"];
2905
+ };
2906
+ };
2907
+ /** @description Internal server error */
2908
+ 500: {
2909
+ headers: {
2910
+ [name: string]: unknown;
2911
+ };
2912
+ content: {
2913
+ "application/json": components["schemas"]["ErrorResponse"];
2914
+ };
2915
+ };
2916
+ };
2917
+ };
2918
+ put?: never;
2919
+ /**
2920
+ * Create webhook
2921
+ * @description Create a new webhook. The secret is only returned once during creation.
2922
+ */
2923
+ post: {
2924
+ parameters: {
2925
+ query?: never;
2926
+ header?: never;
2927
+ path?: never;
2928
+ cookie?: never;
2929
+ };
2930
+ requestBody: {
2931
+ content: {
2932
+ "application/json": components["schemas"]["CreateWebhookRequest"];
2933
+ };
2934
+ };
2935
+ responses: {
2936
+ /** @description Successful response */
2937
+ 200: {
2938
+ headers: {
2939
+ [name: string]: unknown;
2940
+ };
2941
+ content: {
2942
+ "application/json": components["schemas"]["WebhookWithSecret"];
2943
+ };
2944
+ };
2945
+ /** @description Bad request - validation error */
2946
+ 400: {
2947
+ headers: {
2948
+ [name: string]: unknown;
2949
+ };
2950
+ content: {
2951
+ "application/json": components["schemas"]["ErrorResponse"];
2952
+ };
2953
+ };
2954
+ /** @description Unauthorized - invalid or missing API key */
2955
+ 401: {
2956
+ headers: {
2957
+ [name: string]: unknown;
2958
+ };
2959
+ content: {
2960
+ "application/json": components["schemas"]["ErrorResponse"];
2961
+ };
2962
+ };
2963
+ /** @description Resource not found */
2964
+ 404: {
2965
+ headers: {
2966
+ [name: string]: unknown;
2967
+ };
2968
+ content: {
2969
+ "application/json": components["schemas"]["ErrorResponse"];
2970
+ };
2971
+ };
2972
+ /** @description Rate limit exceeded */
2973
+ 429: {
2974
+ headers: {
2975
+ [name: string]: unknown;
2976
+ };
2977
+ content: {
2978
+ "application/json": components["schemas"]["ErrorResponse"];
2979
+ };
2980
+ };
2981
+ /** @description Internal server error */
2982
+ 500: {
2983
+ headers: {
2984
+ [name: string]: unknown;
2985
+ };
2986
+ content: {
2987
+ "application/json": components["schemas"]["ErrorResponse"];
2988
+ };
2989
+ };
2990
+ };
2991
+ };
2992
+ delete?: never;
2993
+ options?: never;
2994
+ head?: never;
2995
+ patch?: never;
2996
+ trace?: never;
2997
+ };
2998
+ "/webhooks/{id}": {
2999
+ parameters: {
3000
+ query?: never;
3001
+ header?: never;
3002
+ path?: never;
3003
+ cookie?: never;
3004
+ };
3005
+ /**
3006
+ * Get webhook
3007
+ * @description Retrieve a single webhook by ID.
3008
+ */
3009
+ get: {
3010
+ parameters: {
3011
+ query?: never;
3012
+ header?: never;
3013
+ path: {
3014
+ /** @description Webhook ID */
3015
+ id: string;
3016
+ };
3017
+ cookie?: never;
3018
+ };
3019
+ requestBody?: never;
3020
+ responses: {
3021
+ /** @description Successful response */
3022
+ 200: {
3023
+ headers: {
3024
+ [name: string]: unknown;
3025
+ };
3026
+ content: {
3027
+ "application/json": components["schemas"]["Webhook"];
3028
+ };
3029
+ };
3030
+ /** @description Bad request - validation error */
3031
+ 400: {
3032
+ headers: {
3033
+ [name: string]: unknown;
3034
+ };
3035
+ content: {
3036
+ "application/json": components["schemas"]["ErrorResponse"];
3037
+ };
3038
+ };
3039
+ /** @description Unauthorized - invalid or missing API key */
3040
+ 401: {
3041
+ headers: {
3042
+ [name: string]: unknown;
3043
+ };
3044
+ content: {
3045
+ "application/json": components["schemas"]["ErrorResponse"];
3046
+ };
3047
+ };
3048
+ /** @description Resource not found */
3049
+ 404: {
3050
+ headers: {
3051
+ [name: string]: unknown;
3052
+ };
3053
+ content: {
3054
+ "application/json": components["schemas"]["ErrorResponse"];
3055
+ };
3056
+ };
3057
+ /** @description Rate limit exceeded */
3058
+ 429: {
3059
+ headers: {
3060
+ [name: string]: unknown;
3061
+ };
3062
+ content: {
3063
+ "application/json": components["schemas"]["ErrorResponse"];
3064
+ };
3065
+ };
3066
+ /** @description Internal server error */
3067
+ 500: {
3068
+ headers: {
3069
+ [name: string]: unknown;
3070
+ };
3071
+ content: {
3072
+ "application/json": components["schemas"]["ErrorResponse"];
3073
+ };
3074
+ };
3075
+ };
3076
+ };
3077
+ put?: never;
3078
+ post?: never;
3079
+ /**
3080
+ * Delete webhook
3081
+ * @description Delete a webhook. This will stop all future deliveries.
3082
+ */
3083
+ delete: {
3084
+ parameters: {
3085
+ query?: never;
3086
+ header?: never;
3087
+ path: {
3088
+ /** @description Webhook ID */
3089
+ id: string;
3090
+ };
3091
+ cookie?: never;
3092
+ };
3093
+ requestBody?: never;
3094
+ responses: {
3095
+ /** @description Successful response */
3096
+ 200: {
3097
+ headers: {
3098
+ [name: string]: unknown;
3099
+ };
3100
+ content: {
3101
+ "application/json": components["schemas"]["DeleteWebhookResponse"];
3102
+ };
3103
+ };
3104
+ /** @description Bad request - validation error */
3105
+ 400: {
3106
+ headers: {
3107
+ [name: string]: unknown;
3108
+ };
3109
+ content: {
3110
+ "application/json": components["schemas"]["ErrorResponse"];
3111
+ };
3112
+ };
3113
+ /** @description Unauthorized - invalid or missing API key */
3114
+ 401: {
3115
+ headers: {
3116
+ [name: string]: unknown;
3117
+ };
3118
+ content: {
3119
+ "application/json": components["schemas"]["ErrorResponse"];
3120
+ };
3121
+ };
3122
+ /** @description Resource not found */
3123
+ 404: {
3124
+ headers: {
3125
+ [name: string]: unknown;
3126
+ };
3127
+ content: {
3128
+ "application/json": components["schemas"]["ErrorResponse"];
3129
+ };
3130
+ };
3131
+ /** @description Rate limit exceeded */
3132
+ 429: {
3133
+ headers: {
3134
+ [name: string]: unknown;
3135
+ };
3136
+ content: {
3137
+ "application/json": components["schemas"]["ErrorResponse"];
3138
+ };
3139
+ };
3140
+ /** @description Internal server error */
3141
+ 500: {
3142
+ headers: {
3143
+ [name: string]: unknown;
3144
+ };
3145
+ content: {
3146
+ "application/json": components["schemas"]["ErrorResponse"];
3147
+ };
3148
+ };
3149
+ };
3150
+ };
3151
+ options?: never;
3152
+ head?: never;
3153
+ /**
3154
+ * Update webhook
3155
+ * @description Update an existing webhook. Only provided fields will be modified.
3156
+ */
3157
+ patch: {
3158
+ parameters: {
3159
+ query?: never;
3160
+ header?: never;
3161
+ path: {
3162
+ /** @description Webhook ID */
3163
+ id: string;
3164
+ };
3165
+ cookie?: never;
3166
+ };
3167
+ requestBody: {
3168
+ content: {
3169
+ "application/json": components["schemas"]["UpdateWebhookRequest"];
3170
+ };
3171
+ };
3172
+ responses: {
3173
+ /** @description Successful response */
3174
+ 200: {
3175
+ headers: {
3176
+ [name: string]: unknown;
3177
+ };
3178
+ content: {
3179
+ "application/json": components["schemas"]["Webhook"];
3180
+ };
3181
+ };
3182
+ /** @description Bad request - validation error */
3183
+ 400: {
3184
+ headers: {
3185
+ [name: string]: unknown;
3186
+ };
3187
+ content: {
3188
+ "application/json": components["schemas"]["ErrorResponse"];
3189
+ };
3190
+ };
3191
+ /** @description Unauthorized - invalid or missing API key */
3192
+ 401: {
3193
+ headers: {
3194
+ [name: string]: unknown;
3195
+ };
3196
+ content: {
3197
+ "application/json": components["schemas"]["ErrorResponse"];
3198
+ };
3199
+ };
3200
+ /** @description Resource not found */
3201
+ 404: {
3202
+ headers: {
3203
+ [name: string]: unknown;
3204
+ };
3205
+ content: {
3206
+ "application/json": components["schemas"]["ErrorResponse"];
3207
+ };
3208
+ };
3209
+ /** @description Rate limit exceeded */
3210
+ 429: {
3211
+ headers: {
3212
+ [name: string]: unknown;
3213
+ };
3214
+ content: {
3215
+ "application/json": components["schemas"]["ErrorResponse"];
3216
+ };
3217
+ };
3218
+ /** @description Internal server error */
3219
+ 500: {
3220
+ headers: {
3221
+ [name: string]: unknown;
3222
+ };
3223
+ content: {
3224
+ "application/json": components["schemas"]["ErrorResponse"];
3225
+ };
3226
+ };
3227
+ };
3228
+ };
3229
+ trace?: never;
3230
+ };
3231
+ "/webhooks/{id}/deliveries": {
3232
+ parameters: {
3233
+ query?: never;
3234
+ header?: never;
3235
+ path?: never;
3236
+ cookie?: never;
3237
+ };
3238
+ /**
3239
+ * List webhook deliveries
3240
+ * @description Retrieve recent delivery attempts for a webhook.
3241
+ */
3242
+ get: {
3243
+ parameters: {
3244
+ query?: {
3245
+ /** @description Number of deliveries to return */
3246
+ limit?: number;
3247
+ /** @description Cursor for pagination */
3248
+ cursor?: string;
3249
+ };
3250
+ header?: never;
3251
+ path: {
3252
+ /** @description Webhook ID */
3253
+ id: string;
3254
+ };
3255
+ cookie?: never;
3256
+ };
3257
+ requestBody?: never;
3258
+ responses: {
3259
+ /** @description Successful response */
3260
+ 200: {
3261
+ headers: {
3262
+ [name: string]: unknown;
48
3263
  };
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
- }[];
3264
+ content: {
3265
+ "application/json": components["schemas"]["WebhookDeliveryListResponse"];
3266
+ };
3267
+ };
3268
+ /** @description Bad request - validation error */
3269
+ 400: {
3270
+ headers: {
3271
+ [name: string]: unknown;
3272
+ };
3273
+ content: {
3274
+ "application/json": components["schemas"]["ErrorResponse"];
3275
+ };
3276
+ };
3277
+ /** @description Unauthorized - invalid or missing API key */
3278
+ 401: {
3279
+ headers: {
3280
+ [name: string]: unknown;
3281
+ };
3282
+ content: {
3283
+ "application/json": components["schemas"]["ErrorResponse"];
3284
+ };
3285
+ };
3286
+ /** @description Resource not found */
3287
+ 404: {
3288
+ headers: {
3289
+ [name: string]: unknown;
3290
+ };
3291
+ content: {
3292
+ "application/json": components["schemas"]["ErrorResponse"];
3293
+ };
3294
+ };
3295
+ /** @description Rate limit exceeded */
3296
+ 429: {
3297
+ headers: {
3298
+ [name: string]: unknown;
3299
+ };
3300
+ content: {
3301
+ "application/json": components["schemas"]["ErrorResponse"];
3302
+ };
3303
+ };
3304
+ /** @description Internal server error */
3305
+ 500: {
3306
+ headers: {
3307
+ [name: string]: unknown;
3308
+ };
3309
+ content: {
3310
+ "application/json": components["schemas"]["ErrorResponse"];
3311
+ };
3312
+ };
63
3313
  };
64
- /** @description Description content as plain text */
65
- plainText: string;
66
- } | null;
3314
+ };
3315
+ put?: never;
3316
+ post?: never;
3317
+ delete?: never;
3318
+ options?: never;
3319
+ head?: never;
3320
+ patch?: never;
3321
+ trace?: never;
3322
+ };
3323
+ "/webhooks/{id}/rotate-secret": {
3324
+ parameters: {
3325
+ query?: never;
3326
+ header?: never;
3327
+ path?: never;
3328
+ cookie?: never;
3329
+ };
3330
+ get?: never;
3331
+ put?: never;
3332
+ /**
3333
+ * Rotate webhook secret
3334
+ * @description Generate a new secret for the webhook. The old secret will be immediately invalidated.
3335
+ */
3336
+ post: {
3337
+ parameters: {
3338
+ query?: never;
3339
+ header?: never;
3340
+ path: {
3341
+ /** @description Webhook ID */
3342
+ id: string;
3343
+ };
3344
+ cookie?: never;
3345
+ };
3346
+ requestBody?: never;
3347
+ responses: {
3348
+ /** @description Successful response */
3349
+ 200: {
3350
+ headers: {
3351
+ [name: string]: unknown;
3352
+ };
3353
+ content: {
3354
+ "application/json": components["schemas"]["RotateSecretResponse"];
3355
+ };
3356
+ };
3357
+ /** @description Bad request - validation error */
3358
+ 400: {
3359
+ headers: {
3360
+ [name: string]: unknown;
3361
+ };
3362
+ content: {
3363
+ "application/json": components["schemas"]["ErrorResponse"];
3364
+ };
3365
+ };
3366
+ /** @description Unauthorized - invalid or missing API key */
3367
+ 401: {
3368
+ headers: {
3369
+ [name: string]: unknown;
3370
+ };
3371
+ content: {
3372
+ "application/json": components["schemas"]["ErrorResponse"];
3373
+ };
3374
+ };
3375
+ /** @description Resource not found */
3376
+ 404: {
3377
+ headers: {
3378
+ [name: string]: unknown;
3379
+ };
3380
+ content: {
3381
+ "application/json": components["schemas"]["ErrorResponse"];
3382
+ };
3383
+ };
3384
+ /** @description Rate limit exceeded */
3385
+ 429: {
3386
+ headers: {
3387
+ [name: string]: unknown;
3388
+ };
3389
+ content: {
3390
+ "application/json": components["schemas"]["ErrorResponse"];
3391
+ };
3392
+ };
3393
+ /** @description Internal server error */
3394
+ 500: {
3395
+ headers: {
3396
+ [name: string]: unknown;
3397
+ };
3398
+ content: {
3399
+ "application/json": components["schemas"]["ErrorResponse"];
3400
+ };
3401
+ };
3402
+ };
3403
+ };
3404
+ delete?: never;
3405
+ options?: never;
3406
+ head?: never;
3407
+ patch?: never;
3408
+ trace?: never;
3409
+ };
3410
+ }
3411
+ type webhooks = Record<string, never>;
3412
+ interface components {
3413
+ schemas: {
3414
+ Task: components["schemas"]["LocuTask"] | components["schemas"]["LinearTask"] | components["schemas"]["JiraTask"];
67
3415
  LocuTask: {
68
3416
  id: string;
69
3417
  name: string;
70
- done: "completed" | "canceled" | unknown;
3418
+ done: "completed" | "canceled" | null;
71
3419
  doneAt: number | null;
72
3420
  createdAt: number;
73
3421
  parent: {
@@ -80,19 +3428,82 @@ interface components {
80
3428
  } | null;
81
3429
  projectId?: string | null;
82
3430
  cursorAgentUrl?: string | null;
83
- integrationId: unknown;
3431
+ integrationId: null;
84
3432
  slackLink?: string;
85
3433
  /**
86
3434
  * @default locu
87
3435
  * @enum {string}
88
3436
  */
89
3437
  type: "locu";
90
- description?: components["schemas"]["TaskDescription"];
3438
+ /** @description Task description in multiple formats */
3439
+ description?: {
3440
+ /** @description Description content as Markdown */
3441
+ markdown: string;
3442
+ /** @description Description content as HTML (only included when includeHtml=true) */
3443
+ html?: string;
3444
+ /**
3445
+ * @description Description content as ProseMirror JSON document
3446
+ * @example {
3447
+ * "type": "doc",
3448
+ * "content": [
3449
+ * {
3450
+ * "type": "paragraph",
3451
+ * "content": [
3452
+ * {
3453
+ * "type": "text",
3454
+ * "text": "Hello "
3455
+ * },
3456
+ * {
3457
+ * "type": "text",
3458
+ * "text": "world",
3459
+ * "marks": [
3460
+ * {
3461
+ * "type": "bold"
3462
+ * }
3463
+ * ]
3464
+ * }
3465
+ * ]
3466
+ * }
3467
+ * ]
3468
+ * }
3469
+ */
3470
+ json?: {
3471
+ /**
3472
+ * @description Document root type, always "doc"
3473
+ * @enum {string}
3474
+ */
3475
+ type: "doc";
3476
+ /** @description Array of child document nodes */
3477
+ content: {
3478
+ /** @description Node type (e.g., "paragraph", "text", "heading", "bulletList") */
3479
+ type: string;
3480
+ /** @description Node attributes */
3481
+ attrs?: {
3482
+ [key: string]: (string | null) | number | boolean;
3483
+ };
3484
+ /** @description Child nodes (recursive DocumentNode array) */
3485
+ content?: Record<string, never>[];
3486
+ /** @description Text content (only for text nodes) */
3487
+ text?: string;
3488
+ /** @description Text marks (bold, italic, links, etc.) - only for text nodes */
3489
+ marks?: {
3490
+ /** @description Mark type (e.g., "bold", "italic", "link") */
3491
+ type: string;
3492
+ /** @description Mark attributes */
3493
+ attrs?: {
3494
+ [key: string]: (string | null) | number | boolean;
3495
+ };
3496
+ }[];
3497
+ }[];
3498
+ };
3499
+ /** @description Description content as plain text */
3500
+ plainText: string;
3501
+ } | null;
91
3502
  };
92
3503
  LinearTask: {
93
3504
  id: string;
94
3505
  name: string;
95
- done: "completed" | "canceled" | unknown;
3506
+ done: "completed" | "canceled" | null;
96
3507
  doneAt: number | null;
97
3508
  createdAt: number;
98
3509
  parent: {
@@ -110,7 +3521,70 @@ interface components {
110
3521
  priority?: number;
111
3522
  organizationId: string;
112
3523
  teamId: string;
113
- description?: components["schemas"]["TaskDescription"];
3524
+ /** @description Task description in multiple formats */
3525
+ description?: {
3526
+ /** @description Description content as Markdown */
3527
+ markdown: string;
3528
+ /** @description Description content as HTML (only included when includeHtml=true) */
3529
+ html?: string;
3530
+ /**
3531
+ * @description Description content as ProseMirror JSON document
3532
+ * @example {
3533
+ * "type": "doc",
3534
+ * "content": [
3535
+ * {
3536
+ * "type": "paragraph",
3537
+ * "content": [
3538
+ * {
3539
+ * "type": "text",
3540
+ * "text": "Hello "
3541
+ * },
3542
+ * {
3543
+ * "type": "text",
3544
+ * "text": "world",
3545
+ * "marks": [
3546
+ * {
3547
+ * "type": "bold"
3548
+ * }
3549
+ * ]
3550
+ * }
3551
+ * ]
3552
+ * }
3553
+ * ]
3554
+ * }
3555
+ */
3556
+ json?: {
3557
+ /**
3558
+ * @description Document root type, always "doc"
3559
+ * @enum {string}
3560
+ */
3561
+ type: "doc";
3562
+ /** @description Array of child document nodes */
3563
+ content: {
3564
+ /** @description Node type (e.g., "paragraph", "text", "heading", "bulletList") */
3565
+ type: string;
3566
+ /** @description Node attributes */
3567
+ attrs?: {
3568
+ [key: string]: (string | null) | number | boolean;
3569
+ };
3570
+ /** @description Child nodes (recursive DocumentNode array) */
3571
+ content?: Record<string, never>[];
3572
+ /** @description Text content (only for text nodes) */
3573
+ text?: string;
3574
+ /** @description Text marks (bold, italic, links, etc.) - only for text nodes */
3575
+ marks?: {
3576
+ /** @description Mark type (e.g., "bold", "italic", "link") */
3577
+ type: string;
3578
+ /** @description Mark attributes */
3579
+ attrs?: {
3580
+ [key: string]: (string | null) | number | boolean;
3581
+ };
3582
+ }[];
3583
+ }[];
3584
+ };
3585
+ /** @description Description content as plain text */
3586
+ plainText: string;
3587
+ } | null;
114
3588
  assignee: {
115
3589
  id: string;
116
3590
  name: string;
@@ -131,7 +3605,7 @@ interface components {
131
3605
  JiraTask: {
132
3606
  id: string;
133
3607
  name: string;
134
- done: "completed" | "canceled" | unknown;
3608
+ done: "completed" | "canceled" | null;
135
3609
  doneAt: number | null;
136
3610
  createdAt: number;
137
3611
  parent: {
@@ -145,7 +3619,70 @@ interface components {
145
3619
  projectId: string;
146
3620
  cursorAgentUrl?: string | null;
147
3621
  integrationId: string;
148
- description?: components["schemas"]["TaskDescription"];
3622
+ /** @description Task description in multiple formats */
3623
+ description?: {
3624
+ /** @description Description content as Markdown */
3625
+ markdown: string;
3626
+ /** @description Description content as HTML (only included when includeHtml=true) */
3627
+ html?: string;
3628
+ /**
3629
+ * @description Description content as ProseMirror JSON document
3630
+ * @example {
3631
+ * "type": "doc",
3632
+ * "content": [
3633
+ * {
3634
+ * "type": "paragraph",
3635
+ * "content": [
3636
+ * {
3637
+ * "type": "text",
3638
+ * "text": "Hello "
3639
+ * },
3640
+ * {
3641
+ * "type": "text",
3642
+ * "text": "world",
3643
+ * "marks": [
3644
+ * {
3645
+ * "type": "bold"
3646
+ * }
3647
+ * ]
3648
+ * }
3649
+ * ]
3650
+ * }
3651
+ * ]
3652
+ * }
3653
+ */
3654
+ json?: {
3655
+ /**
3656
+ * @description Document root type, always "doc"
3657
+ * @enum {string}
3658
+ */
3659
+ type: "doc";
3660
+ /** @description Array of child document nodes */
3661
+ content: {
3662
+ /** @description Node type (e.g., "paragraph", "text", "heading", "bulletList") */
3663
+ type: string;
3664
+ /** @description Node attributes */
3665
+ attrs?: {
3666
+ [key: string]: (string | null) | number | boolean;
3667
+ };
3668
+ /** @description Child nodes (recursive DocumentNode array) */
3669
+ content?: Record<string, never>[];
3670
+ /** @description Text content (only for text nodes) */
3671
+ text?: string;
3672
+ /** @description Text marks (bold, italic, links, etc.) - only for text nodes */
3673
+ marks?: {
3674
+ /** @description Mark type (e.g., "bold", "italic", "link") */
3675
+ type: string;
3676
+ /** @description Mark attributes */
3677
+ attrs?: {
3678
+ [key: string]: (string | null) | number | boolean;
3679
+ };
3680
+ }[];
3681
+ }[];
3682
+ };
3683
+ /** @description Description content as plain text */
3684
+ plainText: string;
3685
+ } | null;
149
3686
  assignee: {
150
3687
  id: string;
151
3688
  avatar?: string;
@@ -175,7 +3712,6 @@ interface components {
175
3712
  */
176
3713
  type: "jira";
177
3714
  };
178
- Task: components["schemas"]["LocuTask"] | components["schemas"]["LinearTask"] | components["schemas"]["JiraTask"];
179
3715
  MeResponse: {
180
3716
  /** @description Email of the authenticated user */
181
3717
  email: string;
@@ -187,6 +3723,11 @@ interface components {
187
3723
  message: string;
188
3724
  code?: string;
189
3725
  };
3726
+ NoteListResponse: {
3727
+ data: components["schemas"]["Note"][];
3728
+ nextCursor: string | null;
3729
+ hasMore: boolean;
3730
+ };
190
3731
  Note: {
191
3732
  id: string;
192
3733
  text: string;
@@ -207,7 +3748,7 @@ interface components {
207
3748
  /** @description Note content as HTML (only included when includeHtml=true) */
208
3749
  html?: string;
209
3750
  /**
210
- * @description ProseMirror JSON document. Root node always has type "doc" with a content array of child nodes.
3751
+ * @description Note content as ProseMirror JSON document
211
3752
  * @example {
212
3753
  * "type": "doc",
213
3754
  * "content": [
@@ -264,11 +3805,6 @@ interface components {
264
3805
  /** @description Note content as plain text */
265
3806
  plainText: string;
266
3807
  };
267
- NoteListResponse: {
268
- data: components["schemas"]["Note"][];
269
- nextCursor: string | null;
270
- hasMore: boolean;
271
- };
272
3808
  CreateNoteRequest: {
273
3809
  /**
274
3810
  * Format: uuid
@@ -283,6 +3819,11 @@ interface components {
283
3819
  color?: string | null;
284
3820
  /** @description Parent folder ID */
285
3821
  folderId?: string;
3822
+ /**
3823
+ * @description Preserve extra blank lines as empty paragraphs instead of collapsing them
3824
+ * @default true
3825
+ */
3826
+ keepBreaks: boolean;
286
3827
  };
287
3828
  UpdateNoteRequest: {
288
3829
  /** @description New text content for the note */
@@ -293,74 +3834,20 @@ interface components {
293
3834
  color?: string | null;
294
3835
  /** @description New parent folder ID */
295
3836
  folderId?: string | null;
3837
+ /**
3838
+ * @description Preserve extra blank lines as empty paragraphs instead of collapsing them
3839
+ * @default true
3840
+ */
3841
+ keepBreaks: boolean;
296
3842
  };
297
3843
  DeleteNoteResponse: {
298
3844
  success: boolean;
299
3845
  };
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;
3846
+ ProjectListResponse: {
3847
+ data: components["schemas"]["Project"][];
3848
+ nextCursor: string | null;
3849
+ hasMore: boolean;
3850
+ };
364
3851
  Project: {
365
3852
  id: string;
366
3853
  name: string;
@@ -370,12 +3857,70 @@ interface components {
370
3857
  completedAt?: number | null;
371
3858
  createdAt: number;
372
3859
  updatedAt: number;
373
- description?: components["schemas"]["ProjectDescription"];
374
- };
375
- ProjectListResponse: {
376
- data: components["schemas"]["Project"][];
377
- nextCursor: string | null;
378
- hasMore: boolean;
3860
+ /** @description Project description in multiple formats */
3861
+ description?: {
3862
+ /** @description Description content as Markdown */
3863
+ markdown: string;
3864
+ /** @description Description content as HTML (only included when includeHtml=true) */
3865
+ html?: string;
3866
+ /**
3867
+ * @description Description content as ProseMirror JSON document
3868
+ * @example {
3869
+ * "type": "doc",
3870
+ * "content": [
3871
+ * {
3872
+ * "type": "paragraph",
3873
+ * "content": [
3874
+ * {
3875
+ * "type": "text",
3876
+ * "text": "Hello "
3877
+ * },
3878
+ * {
3879
+ * "type": "text",
3880
+ * "text": "world",
3881
+ * "marks": [
3882
+ * {
3883
+ * "type": "bold"
3884
+ * }
3885
+ * ]
3886
+ * }
3887
+ * ]
3888
+ * }
3889
+ * ]
3890
+ * }
3891
+ */
3892
+ json?: {
3893
+ /**
3894
+ * @description Document root type, always "doc"
3895
+ * @enum {string}
3896
+ */
3897
+ type: "doc";
3898
+ /** @description Array of child document nodes */
3899
+ content: {
3900
+ /** @description Node type (e.g., "paragraph", "text", "heading", "bulletList") */
3901
+ type: string;
3902
+ /** @description Node attributes */
3903
+ attrs?: {
3904
+ [key: string]: (string | null) | number | boolean;
3905
+ };
3906
+ /** @description Child nodes (recursive DocumentNode array) */
3907
+ content?: Record<string, never>[];
3908
+ /** @description Text content (only for text nodes) */
3909
+ text?: string;
3910
+ /** @description Text marks (bold, italic, links, etc.) - only for text nodes */
3911
+ marks?: {
3912
+ /** @description Mark type (e.g., "bold", "italic", "link") */
3913
+ type: string;
3914
+ /** @description Mark attributes */
3915
+ attrs?: {
3916
+ [key: string]: (string | null) | number | boolean;
3917
+ };
3918
+ }[];
3919
+ }[];
3920
+ };
3921
+ /** @description Description content as plain text */
3922
+ plainText: string;
3923
+ } | null;
379
3924
  };
380
3925
  CreateProjectRequest: {
381
3926
  /**
@@ -391,6 +3936,11 @@ interface components {
391
3936
  icon?: string | null;
392
3937
  /** @description Hex color for the icon (e.g., "#FF5733"). Only applies to Lucide icons, not emojis. */
393
3938
  color?: string | null;
3939
+ /**
3940
+ * @description Preserve extra blank lines as empty paragraphs instead of collapsing them
3941
+ * @default true
3942
+ */
3943
+ keepBreaks: boolean;
394
3944
  };
395
3945
  UpdateProjectRequest: {
396
3946
  /** @description New name for the project */
@@ -406,10 +3956,24 @@ interface components {
406
3956
  * @enum {string}
407
3957
  */
408
3958
  state?: "planned" | "completed";
3959
+ /**
3960
+ * @description Preserve extra blank lines as empty paragraphs instead of collapsing them
3961
+ * @default true
3962
+ */
3963
+ keepBreaks: boolean;
409
3964
  };
410
3965
  DeleteProjectResponse: {
411
3966
  success: boolean;
412
3967
  };
3968
+ SessionListResponse: {
3969
+ data: components["schemas"]["SessionWithActivities"][];
3970
+ nextCursor: string | null;
3971
+ hasMore: boolean;
3972
+ };
3973
+ SessionWithActivities: components["schemas"]["Session"] & {
3974
+ /** @description Activities within this session */
3975
+ activities: components["schemas"]["SessionActivity"][];
3976
+ };
413
3977
  SessionActivity: {
414
3978
  /** @enum {string} */
415
3979
  type: "TASK";
@@ -461,12 +4025,8 @@ interface components {
461
4025
  /** @description End timestamp (Unix seconds) */
462
4026
  finishedAt: number;
463
4027
  };
464
- SessionWithActivities: components["schemas"]["Session"] & {
465
- /** @description Activities within this session */
466
- activities: components["schemas"]["SessionActivity"][];
467
- };
468
- SessionListResponse: {
469
- data: components["schemas"]["SessionWithActivities"][];
4028
+ ActivityPaginatedListResponse: {
4029
+ data: components["schemas"]["SessionActivity"][];
470
4030
  nextCursor: string | null;
471
4031
  hasMore: boolean;
472
4032
  };
@@ -519,6 +4079,11 @@ interface components {
519
4079
  nextCursor: string | null;
520
4080
  hasMore: boolean;
521
4081
  };
4082
+ TaskSectionsResponse: {
4083
+ today: components["schemas"]["TaskBySection"][];
4084
+ sooner: components["schemas"]["TaskBySection"][];
4085
+ later: components["schemas"]["TaskBySection"][];
4086
+ };
522
4087
  TaskBySection: {
523
4088
  /** Format: uuid */
524
4089
  taskId: string;
@@ -527,11 +4092,6 @@ interface components {
527
4092
  order: number;
528
4093
  task: components["schemas"]["Task"];
529
4094
  };
530
- TaskSectionsResponse: {
531
- today: components["schemas"]["TaskBySection"][];
532
- sooner: components["schemas"]["TaskBySection"][];
533
- later: components["schemas"]["TaskBySection"][];
534
- };
535
4095
  TaskSubtasksResponse: {
536
4096
  data: components["schemas"]["Task"][];
537
4097
  nextCursor: string | null;
@@ -562,6 +4122,11 @@ interface components {
562
4122
  * @enum {string}
563
4123
  */
564
4124
  section?: "today" | "sooner" | "later";
4125
+ /**
4126
+ * @description Preserve extra blank lines as empty paragraphs instead of collapsing them
4127
+ * @default true
4128
+ */
4129
+ keepBreaks: boolean;
565
4130
  };
566
4131
  UpdateTaskRequest: {
567
4132
  /** @description Task name */
@@ -569,7 +4134,7 @@ interface components {
569
4134
  /** @description Task description in markdown format */
570
4135
  description?: string;
571
4136
  /** @description Task completion status */
572
- done?: "completed" | "canceled" | unknown | unknown;
4137
+ done?: "completed" | "canceled" | null;
573
4138
  /**
574
4139
  * Format: uuid
575
4140
  * @description Project to assign the task to
@@ -579,6 +4144,11 @@ interface components {
579
4144
  waiting?: {
580
4145
  reason?: string;
581
4146
  } | null;
4147
+ /**
4148
+ * @description Preserve extra blank lines as empty paragraphs instead of collapsing them
4149
+ * @default true
4150
+ */
4151
+ keepBreaks: boolean;
582
4152
  };
583
4153
  DeleteTaskResponse: {
584
4154
  success: boolean;
@@ -602,6 +4172,10 @@ interface components {
602
4172
  /** @description Optional task ID to start working on */
603
4173
  taskId?: string;
604
4174
  };
4175
+ StopTimerResponse: {
4176
+ /** @description The completed sessions that were created */
4177
+ sessions: components["schemas"]["StopTimerSession"][];
4178
+ };
605
4179
  StopTimerSession: {
606
4180
  /** @description Unique identifier for the session */
607
4181
  id: string;
@@ -612,9 +4186,10 @@ interface components {
612
4186
  /** @description End timestamp (Unix seconds) */
613
4187
  finishedAt: number;
614
4188
  };
615
- StopTimerResponse: {
616
- /** @description The completed sessions that were created */
617
- sessions: components["schemas"]["StopTimerSession"][];
4189
+ WebhookListResponse: {
4190
+ data: components["schemas"]["Webhook"][];
4191
+ nextCursor: string | null;
4192
+ hasMore: boolean;
618
4193
  };
619
4194
  Webhook: {
620
4195
  /**
@@ -644,11 +4219,6 @@ interface components {
644
4219
  */
645
4220
  updatedAt: string;
646
4221
  };
647
- WebhookListResponse: {
648
- data: components["schemas"]["Webhook"][];
649
- nextCursor: string | null;
650
- hasMore: boolean;
651
- };
652
4222
  WebhookWithSecret: components["schemas"]["Webhook"] & {
653
4223
  /** @description Secret for verifying webhook signatures (only shown once) */
654
4224
  secret: string;
@@ -695,6 +4265,11 @@ interface components {
695
4265
  DeleteWebhookResponse: {
696
4266
  success: boolean;
697
4267
  };
4268
+ WebhookDeliveryListResponse: {
4269
+ data: components["schemas"]["WebhookDelivery"][];
4270
+ nextCursor: string | null;
4271
+ hasMore: boolean;
4272
+ };
698
4273
  WebhookDelivery: {
699
4274
  /**
700
4275
  * Format: uuid
@@ -728,11 +4303,6 @@ interface components {
728
4303
  */
729
4304
  completedAt: string | null;
730
4305
  };
731
- WebhookDeliveryListResponse: {
732
- data: components["schemas"]["WebhookDelivery"][];
733
- nextCursor: string | null;
734
- hasMore: boolean;
735
- };
736
4306
  RotateSecretResponse: {
737
4307
  /** @description New webhook secret */
738
4308
  secret: string;
@@ -744,61 +4314,39 @@ interface components {
744
4314
  headers: never;
745
4315
  pathItems: never;
746
4316
  }
4317
+ type $defs = Record<string, never>;
4318
+ type operations = Record<string, never>;
747
4319
 
748
- /**
749
- * Re-export types from the generated OpenAPI types.
750
- * These provide typed access to the Locu API.
751
- */
752
-
4320
+ /** Helper to make keepBreaks optional (has server default) */
4321
+ type WithOptionalKeepBreaks<T> = Omit<T, "keepBreaks"> & {
4322
+ keepBreaks?: boolean;
4323
+ };
753
4324
  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
- type CreateTaskRequest = components["schemas"]["CreateTaskRequest"];
759
- type UpdateTaskRequest = components["schemas"]["UpdateTaskRequest"];
760
- type TaskListResponse = components["schemas"]["TaskListResponse"];
761
- type TaskBySection = components["schemas"]["TaskBySection"];
4325
+ type CreateTaskRequest = WithOptionalKeepBreaks<components["schemas"]["CreateTaskRequest"]>;
4326
+ type UpdateTaskRequest = WithOptionalKeepBreaks<components["schemas"]["UpdateTaskRequest"]>;
762
4327
  type TaskSectionsResponse = components["schemas"]["TaskSectionsResponse"];
763
- type DeleteTaskResponse = components["schemas"]["DeleteTaskResponse"];
764
4328
  type Project = components["schemas"]["Project"];
765
- type ProjectDescription = components["schemas"]["ProjectDescription"];
766
- type CreateProjectRequest = components["schemas"]["CreateProjectRequest"];
767
- type UpdateProjectRequest = components["schemas"]["UpdateProjectRequest"];
768
- type ProjectListResponse = components["schemas"]["ProjectListResponse"];
769
- type DeleteProjectResponse = components["schemas"]["DeleteProjectResponse"];
4329
+ type CreateProjectRequest = WithOptionalKeepBreaks<components["schemas"]["CreateProjectRequest"]>;
4330
+ type UpdateProjectRequest = WithOptionalKeepBreaks<components["schemas"]["UpdateProjectRequest"]>;
770
4331
  type Note = components["schemas"]["Note"];
771
- type CreateNoteRequest = components["schemas"]["CreateNoteRequest"];
772
- type UpdateNoteRequest = components["schemas"]["UpdateNoteRequest"];
773
- type NoteListResponse = components["schemas"]["NoteListResponse"];
774
- type DeleteNoteResponse = components["schemas"]["DeleteNoteResponse"];
4332
+ type CreateNoteRequest = WithOptionalKeepBreaks<components["schemas"]["CreateNoteRequest"]>;
4333
+ type UpdateNoteRequest = WithOptionalKeepBreaks<components["schemas"]["UpdateNoteRequest"]>;
775
4334
  type Session = components["schemas"]["Session"];
776
4335
  type SessionWithActivities = components["schemas"]["SessionWithActivities"];
777
4336
  type SessionActivity = components["schemas"]["SessionActivity"];
778
4337
  type CreateSessionRequest = components["schemas"]["CreateSessionRequest"];
779
4338
  type UpdateSessionRequest = components["schemas"]["UpdateSessionRequest"];
780
- type SessionListResponse = components["schemas"]["SessionListResponse"];
781
- type DeleteSessionResponse = components["schemas"]["DeleteSessionResponse"];
782
4339
  type CreateActivityRequest = components["schemas"]["CreateActivityRequest"];
783
4340
  type UpdateActivityRequest = components["schemas"]["UpdateActivityRequest"];
784
- type ActivityListResponse = components["schemas"]["ActivityListResponse"];
785
- type DeleteActivityResponse = components["schemas"]["DeleteActivityResponse"];
786
4341
  type TimerState = components["schemas"]["TimerState"];
787
4342
  type StartTimerRequest = components["schemas"]["StartTimerRequest"];
788
4343
  type StopTimerResponse = components["schemas"]["StopTimerResponse"];
789
- type StopTimerSession = components["schemas"]["StopTimerSession"];
790
4344
  type Webhook = components["schemas"]["Webhook"];
791
4345
  type WebhookWithSecret = components["schemas"]["WebhookWithSecret"];
792
4346
  type CreateWebhookRequest = components["schemas"]["CreateWebhookRequest"];
793
4347
  type UpdateWebhookRequest = components["schemas"]["UpdateWebhookRequest"];
794
- type WebhookListResponse = components["schemas"]["WebhookListResponse"];
795
4348
  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
4349
  type MeResponse = components["schemas"]["MeResponse"];
801
- type ApiError = ErrorResponse;
802
4350
  type WebhookPayload<T = unknown> = {
803
4351
  /** Event type, e.g. "task.created", "project.updated" */
804
4352
  event: string;
@@ -818,37 +4366,20 @@ type PaginationParams = {
818
4366
  };
819
4367
  /** Accepts boolean or string representation for query params */
820
4368
  type BooleanParam = boolean | "true" | "false";
821
- type TaskListParams = PaginationParams & {
4369
+ type TaskListParams = Omit<NonNullable<paths["/tasks"]["get"]["parameters"]["query"]>, "done" | "limit"> & {
822
4370
  done?: BooleanParam;
823
- projectId?: string;
824
- parentId?: string;
825
- section?: "today" | "sooner" | "later";
826
- doneAfter?: string;
827
- doneBefore?: string;
828
- includeHtml?: boolean | null;
829
- };
830
- type TaskSectionsParams = {
831
- projectId?: string;
832
- includeHtml?: boolean | null;
4371
+ limit?: number;
833
4372
  };
834
- type SubtaskListParams = PaginationParams & {
4373
+ type TaskSectionsParams = NonNullable<paths["/tasks/sections"]["get"]["parameters"]["query"]>;
4374
+ type SubtaskListParams = Omit<NonNullable<paths["/tasks/{id}/subtasks"]["get"]["parameters"]["query"]>, "done" | "limit"> & {
835
4375
  done?: BooleanParam;
836
- includeHtml?: boolean | null;
837
- };
838
- type ProjectListParams = PaginationParams & {
839
- state?: "planned" | "completed";
840
- includeHtml?: boolean | null;
841
- };
842
- type NoteListParams = PaginationParams & {
843
- folderId?: string;
844
- includeHtml?: boolean | null;
845
- };
846
- type SessionListParams = PaginationParams & {
847
- startAfter?: string;
848
- startBefore?: string;
849
- includeActivities?: boolean | null;
4376
+ limit?: number;
850
4377
  };
851
- type WebhookListParams = PaginationParams & {
4378
+ type ProjectListParams = NonNullable<paths["/projects"]["get"]["parameters"]["query"]>;
4379
+ type NoteListParams = NonNullable<paths["/notes"]["get"]["parameters"]["query"]>;
4380
+ type SessionListParams = NonNullable<paths["/sessions"]["get"]["parameters"]["query"]>;
4381
+ type ActivityListParams = NonNullable<paths["/sessions/activities"]["get"]["parameters"]["query"]>;
4382
+ type WebhookListParams = Omit<NonNullable<paths["/webhooks"]["get"]["parameters"]["query"]>, "isActive"> & {
852
4383
  isActive?: BooleanParam;
853
4384
  };
854
4385
 
@@ -881,6 +4412,8 @@ declare const createLocuClient: (config: LocuClientConfig) => {
881
4412
  continue: () => Promise<TimerState>;
882
4413
  /** Stop timer and save sessions */
883
4414
  stop: () => Promise<StopTimerResponse>;
4415
+ /** Cancel timer without saving sessions */
4416
+ cancel: () => Promise<TimerState>;
884
4417
  };
885
4418
  tasks: {
886
4419
  /** List all tasks */
@@ -943,6 +4476,8 @@ declare const createLocuClient: (config: LocuClientConfig) => {
943
4476
  delete: (id: string) => Promise<{
944
4477
  success: boolean;
945
4478
  }>;
4479
+ /** List all activities with optional filters */
4480
+ listActivities: (params?: ActivityListParams) => Promise<PaginatedResponse<SessionActivity>>;
946
4481
  activities: {
947
4482
  /** List activities for a session */
948
4483
  list: (sessionId: string) => Promise<{
@@ -1085,4 +4620,4 @@ declare const parseWebhookPayload: <T = unknown>(body: string) => WebhookPayload
1085
4620
  */
1086
4621
  declare const generateWebhookSignature: (secret: string, timestamp: number, body: string) => string;
1087
4622
 
1088
- export { type ActivityListResponse, type ApiError, type BooleanParam, 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 };
4623
+ 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 };