@loculabs/api-client 1.3.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -109,6 +109,12 @@ interface paths {
109
109
  folderId?: string;
110
110
  /** @description Include HTML representation of the note content */
111
111
  includeHtml?: boolean | null;
112
+ /** @description Include Markdown representation of the note content */
113
+ includeMarkdown?: boolean | null;
114
+ /** @description Include plain text representation of the note content */
115
+ includePlainText?: boolean | null;
116
+ /** @description Include ProseMirror JSON representation of the note content */
117
+ includeJson?: boolean | null;
112
118
  };
113
119
  header?: never;
114
120
  path?: never;
@@ -182,6 +188,12 @@ interface paths {
182
188
  query?: {
183
189
  /** @description Include HTML representation of the note content */
184
190
  includeHtml?: boolean | null;
191
+ /** @description Include Markdown representation of the note content */
192
+ includeMarkdown?: boolean | null;
193
+ /** @description Include plain text representation of the note content */
194
+ includePlainText?: boolean | null;
195
+ /** @description Include ProseMirror JSON representation of the note content */
196
+ includeJson?: boolean | null;
185
197
  };
186
198
  header?: never;
187
199
  path?: never;
@@ -271,6 +283,12 @@ interface paths {
271
283
  query?: {
272
284
  /** @description Include HTML representation of the note content */
273
285
  includeHtml?: boolean | null;
286
+ /** @description Include Markdown representation of the note content */
287
+ includeMarkdown?: boolean | null;
288
+ /** @description Include plain text representation of the note content */
289
+ includePlainText?: boolean | null;
290
+ /** @description Include ProseMirror JSON representation of the note content */
291
+ includeJson?: boolean | null;
274
292
  };
275
293
  header?: never;
276
294
  path: {
@@ -422,6 +440,12 @@ interface paths {
422
440
  query?: {
423
441
  /** @description Include HTML representation of the note content */
424
442
  includeHtml?: boolean | null;
443
+ /** @description Include Markdown representation of the note content */
444
+ includeMarkdown?: boolean | null;
445
+ /** @description Include plain text representation of the note content */
446
+ includePlainText?: boolean | null;
447
+ /** @description Include ProseMirror JSON representation of the note content */
448
+ includeJson?: boolean | null;
425
449
  };
426
450
  header?: never;
427
451
  path: {
@@ -510,12 +534,22 @@ interface paths {
510
534
  query?: {
511
535
  /** @description Number of projects to return */
512
536
  limit?: number;
513
- /** @description Cursor for pagination */
537
+ /** @description Cursor for pagination. Use an ISO 8601 datetime cursor when orderBy=createdAt. */
514
538
  cursor?: string;
539
+ /** @description Field to order results by */
540
+ orderBy?: "updatedAt" | "createdAt";
541
+ /** @description Sort order (ascending or descending) */
542
+ order?: "asc" | "desc";
515
543
  /** @description Filter by project state */
516
544
  state?: "planned" | "completed";
517
545
  /** @description Include HTML representation of the project description */
518
546
  includeHtml?: boolean | null;
547
+ /** @description Include Markdown representation of the project description */
548
+ includeMarkdown?: boolean | null;
549
+ /** @description Include plain text representation of the project description */
550
+ includePlainText?: boolean | null;
551
+ /** @description Include ProseMirror JSON representation of the project description */
552
+ includeJson?: boolean | null;
519
553
  };
520
554
  header?: never;
521
555
  path?: never;
@@ -589,6 +623,12 @@ interface paths {
589
623
  query?: {
590
624
  /** @description Include HTML representation of the project description */
591
625
  includeHtml?: boolean | null;
626
+ /** @description Include Markdown representation of the project description */
627
+ includeMarkdown?: boolean | null;
628
+ /** @description Include plain text representation of the project description */
629
+ includePlainText?: boolean | null;
630
+ /** @description Include ProseMirror JSON representation of the project description */
631
+ includeJson?: boolean | null;
592
632
  };
593
633
  header?: never;
594
634
  path?: never;
@@ -678,6 +718,12 @@ interface paths {
678
718
  query?: {
679
719
  /** @description Include HTML representation of the project description */
680
720
  includeHtml?: boolean | null;
721
+ /** @description Include Markdown representation of the project description */
722
+ includeMarkdown?: boolean | null;
723
+ /** @description Include plain text representation of the project description */
724
+ includePlainText?: boolean | null;
725
+ /** @description Include ProseMirror JSON representation of the project description */
726
+ includeJson?: boolean | null;
681
727
  };
682
728
  header?: never;
683
729
  path: {
@@ -829,6 +875,12 @@ interface paths {
829
875
  query?: {
830
876
  /** @description Include HTML representation of the project description */
831
877
  includeHtml?: boolean | null;
878
+ /** @description Include Markdown representation of the project description */
879
+ includeMarkdown?: boolean | null;
880
+ /** @description Include plain text representation of the project description */
881
+ includePlainText?: boolean | null;
882
+ /** @description Include ProseMirror JSON representation of the project description */
883
+ includeJson?: boolean | null;
832
884
  };
833
885
  header?: never;
834
886
  path: {
@@ -917,11 +969,15 @@ interface paths {
917
969
  query?: {
918
970
  /** @description Number of sessions to return */
919
971
  limit?: number;
920
- /** @description Cursor for pagination */
972
+ /** @description Cursor for pagination. Use ISO 8601 datetime cursors when orderBy is createdAt or finishedAt. */
921
973
  cursor?: string;
922
- /** @description Filter sessions starting after this date (Unix seconds or ISO 8601) */
974
+ /** @description Field to order results by */
975
+ orderBy?: "updatedAt" | "createdAt" | "finishedAt";
976
+ /** @description Sort order (ascending or descending) */
977
+ order?: "asc" | "desc";
978
+ /** @description Filter sessions starting after this date (ISO 8601) */
923
979
  startAfter?: string;
924
- /** @description Filter sessions starting before this date (Unix seconds or ISO 8601) */
980
+ /** @description Filter sessions starting before this date (ISO 8601) */
925
981
  startBefore?: string;
926
982
  /** @description Include activities in response */
927
983
  includeActivities?: boolean | null;
@@ -1068,6 +1124,103 @@ interface paths {
1068
1124
  patch?: never;
1069
1125
  trace?: never;
1070
1126
  };
1127
+ "/sessions/activities": {
1128
+ parameters: {
1129
+ query?: never;
1130
+ header?: never;
1131
+ path?: never;
1132
+ cookie?: never;
1133
+ };
1134
+ /**
1135
+ * List activities
1136
+ * @description Retrieve a paginated list of session activities. Supports filtering by task ID or session ID.
1137
+ */
1138
+ get: {
1139
+ parameters: {
1140
+ query?: {
1141
+ /** @description Number of activities to return */
1142
+ limit?: number;
1143
+ /** @description Cursor for pagination. Use an ISO 8601 datetime cursor when orderBy=createdAt. */
1144
+ cursor?: string;
1145
+ /** @description Field to order results by */
1146
+ orderBy?: "updatedAt" | "createdAt";
1147
+ /** @description Sort order (ascending or descending) */
1148
+ order?: "asc" | "desc";
1149
+ /** @description Filter activities by task ID */
1150
+ taskId?: string;
1151
+ /** @description Filter activities by session ID */
1152
+ sessionId?: string;
1153
+ };
1154
+ header?: never;
1155
+ path?: never;
1156
+ cookie?: never;
1157
+ };
1158
+ requestBody?: never;
1159
+ responses: {
1160
+ /** @description Successful response */
1161
+ 200: {
1162
+ headers: {
1163
+ [name: string]: unknown;
1164
+ };
1165
+ content: {
1166
+ "application/json": components["schemas"]["ActivityPaginatedListResponse"];
1167
+ };
1168
+ };
1169
+ /** @description Bad request - validation error */
1170
+ 400: {
1171
+ headers: {
1172
+ [name: string]: unknown;
1173
+ };
1174
+ content: {
1175
+ "application/json": components["schemas"]["ErrorResponse"];
1176
+ };
1177
+ };
1178
+ /** @description Unauthorized - invalid or missing API key */
1179
+ 401: {
1180
+ headers: {
1181
+ [name: string]: unknown;
1182
+ };
1183
+ content: {
1184
+ "application/json": components["schemas"]["ErrorResponse"];
1185
+ };
1186
+ };
1187
+ /** @description Resource not found */
1188
+ 404: {
1189
+ headers: {
1190
+ [name: string]: unknown;
1191
+ };
1192
+ content: {
1193
+ "application/json": components["schemas"]["ErrorResponse"];
1194
+ };
1195
+ };
1196
+ /** @description Rate limit exceeded */
1197
+ 429: {
1198
+ headers: {
1199
+ [name: string]: unknown;
1200
+ };
1201
+ content: {
1202
+ "application/json": components["schemas"]["ErrorResponse"];
1203
+ };
1204
+ };
1205
+ /** @description Internal server error */
1206
+ 500: {
1207
+ headers: {
1208
+ [name: string]: unknown;
1209
+ };
1210
+ content: {
1211
+ "application/json": components["schemas"]["ErrorResponse"];
1212
+ };
1213
+ };
1214
+ };
1215
+ };
1216
+ put?: never;
1217
+ post?: never;
1218
+ delete?: never;
1219
+ options?: never;
1220
+ head?: never;
1221
+ patch?: never;
1222
+ trace?: never;
1223
+ };
1071
1224
  "/sessions/{id}": {
1072
1225
  parameters: {
1073
1226
  query?: never;
@@ -1643,10 +1796,14 @@ interface paths {
1643
1796
  get: {
1644
1797
  parameters: {
1645
1798
  query?: {
1646
- /** @description Cursor for pagination */
1799
+ /** @description Cursor for pagination. Use an ISO 8601 datetime cursor when ordering by doneAt. */
1647
1800
  cursor?: string;
1648
1801
  /** @description Number of items to return (max 100) */
1649
1802
  limit?: string;
1803
+ /** @description Field to order results by. Note: doneAt ordering only applies to completed tasks */
1804
+ orderBy?: "updatedAt" | "doneAt";
1805
+ /** @description Sort order (ascending or descending) */
1806
+ order?: "asc" | "desc";
1650
1807
  /** @description Filter by completion status */
1651
1808
  done?: "true" | "false";
1652
1809
  /** @description Filter by project */
@@ -1655,12 +1812,18 @@ interface paths {
1655
1812
  parentId?: string;
1656
1813
  /** @description Filter by section */
1657
1814
  section?: "today" | "sooner" | "later";
1658
- /** @description Filter tasks completed after this date (Unix seconds or ISO 8601) */
1815
+ /** @description Filter tasks completed after this date (ISO 8601) */
1659
1816
  doneAfter?: string;
1660
- /** @description Filter tasks completed before this date (Unix seconds or ISO 8601) */
1817
+ /** @description Filter tasks completed before this date (ISO 8601) */
1661
1818
  doneBefore?: string;
1662
1819
  /** @description Include HTML representation of the task description */
1663
1820
  includeHtml?: boolean | null;
1821
+ /** @description Include Markdown representation of the task description */
1822
+ includeMarkdown?: boolean | null;
1823
+ /** @description Include plain text representation of the task description */
1824
+ includePlainText?: boolean | null;
1825
+ /** @description Include ProseMirror JSON representation of the task description */
1826
+ includeJson?: boolean | null;
1664
1827
  };
1665
1828
  header?: never;
1666
1829
  path?: never;
@@ -1734,6 +1897,12 @@ interface paths {
1734
1897
  query?: {
1735
1898
  /** @description Include HTML representation of the task description */
1736
1899
  includeHtml?: boolean | null;
1900
+ /** @description Include Markdown representation of the task description */
1901
+ includeMarkdown?: boolean | null;
1902
+ /** @description Include plain text representation of the task description */
1903
+ includePlainText?: boolean | null;
1904
+ /** @description Include ProseMirror JSON representation of the task description */
1905
+ includeJson?: boolean | null;
1737
1906
  };
1738
1907
  header?: never;
1739
1908
  path?: never;
@@ -1825,6 +1994,12 @@ interface paths {
1825
1994
  section?: "today" | "sooner" | "later";
1826
1995
  /** @description Include HTML representation of the task description */
1827
1996
  includeHtml?: boolean | null;
1997
+ /** @description Include Markdown representation of the task description */
1998
+ includeMarkdown?: boolean | null;
1999
+ /** @description Include plain text representation of the task description */
2000
+ includePlainText?: boolean | null;
2001
+ /** @description Include ProseMirror JSON representation of the task description */
2002
+ includeJson?: boolean | null;
1828
2003
  };
1829
2004
  header?: never;
1830
2005
  path?: never;
@@ -1905,13 +2080,19 @@ interface paths {
1905
2080
  };
1906
2081
  /**
1907
2082
  * Get task
1908
- * @description Retrieve a single task by ID.
2083
+ * @description Retrieve a single task by ID with section, description, and subtask tree.
1909
2084
  */
1910
2085
  get: {
1911
2086
  parameters: {
1912
2087
  query?: {
1913
2088
  /** @description Include HTML representation of the task description */
1914
2089
  includeHtml?: boolean | null;
2090
+ /** @description Include Markdown representation of the task description */
2091
+ includeMarkdown?: boolean | null;
2092
+ /** @description Include plain text representation of the task description */
2093
+ includePlainText?: boolean | null;
2094
+ /** @description Include ProseMirror JSON representation of the task description */
2095
+ includeJson?: boolean | null;
1915
2096
  };
1916
2097
  header?: never;
1917
2098
  path: {
@@ -1928,7 +2109,7 @@ interface paths {
1928
2109
  [name: string]: unknown;
1929
2110
  };
1930
2111
  content: {
1931
- "application/json": components["schemas"]["Task"];
2112
+ "application/json": components["schemas"]["TaskDetailResponse"];
1932
2113
  };
1933
2114
  };
1934
2115
  /** @description Bad request - validation error */
@@ -2063,6 +2244,12 @@ interface paths {
2063
2244
  query?: {
2064
2245
  /** @description Include HTML representation of the task description */
2065
2246
  includeHtml?: boolean | null;
2247
+ /** @description Include Markdown representation of the task description */
2248
+ includeMarkdown?: boolean | null;
2249
+ /** @description Include plain text representation of the task description */
2250
+ includePlainText?: boolean | null;
2251
+ /** @description Include ProseMirror JSON representation of the task description */
2252
+ includeJson?: boolean | null;
2066
2253
  };
2067
2254
  header?: never;
2068
2255
  path: {
@@ -2157,6 +2344,12 @@ interface paths {
2157
2344
  done?: "true" | "false";
2158
2345
  /** @description Include HTML representation of the task description */
2159
2346
  includeHtml?: boolean | null;
2347
+ /** @description Include Markdown representation of the task description */
2348
+ includeMarkdown?: boolean | null;
2349
+ /** @description Include plain text representation of the task description */
2350
+ includePlainText?: boolean | null;
2351
+ /** @description Include ProseMirror JSON representation of the task description */
2352
+ includeJson?: boolean | null;
2160
2353
  };
2161
2354
  header?: never;
2162
2355
  path: {
@@ -3307,15 +3500,28 @@ interface components {
3307
3500
  id: string;
3308
3501
  name: string;
3309
3502
  done: "completed" | "canceled" | null;
3310
- doneAt: number | null;
3311
- createdAt: number;
3503
+ /**
3504
+ * Format: date-time
3505
+ * @description Completion timestamp (ISO 8601)
3506
+ */
3507
+ doneAt: string | null;
3508
+ /**
3509
+ * Format: date-time
3510
+ * @description Creation timestamp (ISO 8601)
3511
+ */
3512
+ createdAt: string;
3312
3513
  parent: {
3313
3514
  id: string;
3314
3515
  order: number | null;
3315
3516
  } | null;
3517
+ /** @description Task waiting state */
3316
3518
  waiting?: {
3317
3519
  reason?: string;
3318
- waitingAt: number;
3520
+ /**
3521
+ * Format: date-time
3522
+ * @description Timestamp when task entered waiting state (ISO 8601)
3523
+ */
3524
+ waitingAt: string;
3319
3525
  } | null;
3320
3526
  projectId?: string | null;
3321
3527
  cursorAgentUrl?: string | null;
@@ -3328,12 +3534,12 @@ interface components {
3328
3534
  type: "locu";
3329
3535
  /** @description Task description in multiple formats */
3330
3536
  description?: {
3331
- /** @description Description content as Markdown */
3332
- markdown: string;
3333
- /** @description Description content as HTML (only included when includeHtml=true) */
3537
+ /** @description Description content as Markdown (included when includeMarkdown=true) */
3538
+ markdown?: string;
3539
+ /** @description Description content as HTML (included when includeHtml=true) */
3334
3540
  html?: string;
3335
3541
  /**
3336
- * @description Description content as ProseMirror JSON document
3542
+ * @description Description content as ProseMirror JSON document (included when includeJson=true)
3337
3543
  * @example {
3338
3544
  * "type": "doc",
3339
3545
  * "content": [
@@ -3387,23 +3593,36 @@ interface components {
3387
3593
  }[];
3388
3594
  }[];
3389
3595
  };
3390
- /** @description Description content as plain text */
3391
- plainText: string;
3596
+ /** @description Description content as plain text (included when includePlainText=true) */
3597
+ plainText?: string;
3392
3598
  } | null;
3393
3599
  };
3394
3600
  LinearTask: {
3395
3601
  id: string;
3396
3602
  name: string;
3397
3603
  done: "completed" | "canceled" | null;
3398
- doneAt: number | null;
3399
- createdAt: number;
3604
+ /**
3605
+ * Format: date-time
3606
+ * @description Completion timestamp (ISO 8601)
3607
+ */
3608
+ doneAt: string | null;
3609
+ /**
3610
+ * Format: date-time
3611
+ * @description Creation timestamp (ISO 8601)
3612
+ */
3613
+ createdAt: string;
3400
3614
  parent: {
3401
3615
  id: string;
3402
3616
  order: number | null;
3403
3617
  } | null;
3618
+ /** @description Task waiting state */
3404
3619
  waiting?: {
3405
3620
  reason?: string;
3406
- waitingAt: number;
3621
+ /**
3622
+ * Format: date-time
3623
+ * @description Timestamp when task entered waiting state (ISO 8601)
3624
+ */
3625
+ waitingAt: string;
3407
3626
  } | null;
3408
3627
  projectId?: string | null;
3409
3628
  cursorAgentUrl?: string | null;
@@ -3414,12 +3633,12 @@ interface components {
3414
3633
  teamId: string;
3415
3634
  /** @description Task description in multiple formats */
3416
3635
  description?: {
3417
- /** @description Description content as Markdown */
3418
- markdown: string;
3419
- /** @description Description content as HTML (only included when includeHtml=true) */
3636
+ /** @description Description content as Markdown (included when includeMarkdown=true) */
3637
+ markdown?: string;
3638
+ /** @description Description content as HTML (included when includeHtml=true) */
3420
3639
  html?: string;
3421
3640
  /**
3422
- * @description Description content as ProseMirror JSON document
3641
+ * @description Description content as ProseMirror JSON document (included when includeJson=true)
3423
3642
  * @example {
3424
3643
  * "type": "doc",
3425
3644
  * "content": [
@@ -3473,8 +3692,8 @@ interface components {
3473
3692
  }[];
3474
3693
  }[];
3475
3694
  };
3476
- /** @description Description content as plain text */
3477
- plainText: string;
3695
+ /** @description Description content as plain text (included when includePlainText=true) */
3696
+ plainText?: string;
3478
3697
  } | null;
3479
3698
  assignee: {
3480
3699
  id: string;
@@ -3492,32 +3711,46 @@ interface components {
3492
3711
  * @enum {string}
3493
3712
  */
3494
3713
  type: "linear";
3714
+ integrationDescription: string;
3495
3715
  };
3496
3716
  JiraTask: {
3497
3717
  id: string;
3498
3718
  name: string;
3499
3719
  done: "completed" | "canceled" | null;
3500
- doneAt: number | null;
3501
- createdAt: number;
3720
+ /**
3721
+ * Format: date-time
3722
+ * @description Completion timestamp (ISO 8601)
3723
+ */
3724
+ doneAt: string | null;
3725
+ /**
3726
+ * Format: date-time
3727
+ * @description Creation timestamp (ISO 8601)
3728
+ */
3729
+ createdAt: string;
3502
3730
  parent: {
3503
3731
  id: string;
3504
3732
  order: number | null;
3505
3733
  } | null;
3734
+ /** @description Task waiting state */
3506
3735
  waiting?: {
3507
3736
  reason?: string;
3508
- waitingAt: number;
3737
+ /**
3738
+ * Format: date-time
3739
+ * @description Timestamp when task entered waiting state (ISO 8601)
3740
+ */
3741
+ waitingAt: string;
3509
3742
  } | null;
3510
3743
  projectId: string;
3511
3744
  cursorAgentUrl?: string | null;
3512
3745
  integrationId: string;
3513
3746
  /** @description Task description in multiple formats */
3514
3747
  description?: {
3515
- /** @description Description content as Markdown */
3516
- markdown: string;
3517
- /** @description Description content as HTML (only included when includeHtml=true) */
3748
+ /** @description Description content as Markdown (included when includeMarkdown=true) */
3749
+ markdown?: string;
3750
+ /** @description Description content as HTML (included when includeHtml=true) */
3518
3751
  html?: string;
3519
3752
  /**
3520
- * @description Description content as ProseMirror JSON document
3753
+ * @description Description content as ProseMirror JSON document (included when includeJson=true)
3521
3754
  * @example {
3522
3755
  * "type": "doc",
3523
3756
  * "content": [
@@ -3571,8 +3804,8 @@ interface components {
3571
3804
  }[];
3572
3805
  }[];
3573
3806
  };
3574
- /** @description Description content as plain text */
3575
- plainText: string;
3807
+ /** @description Description content as plain text (included when includePlainText=true) */
3808
+ plainText?: string;
3576
3809
  } | null;
3577
3810
  assignee: {
3578
3811
  id: string;
@@ -3602,7 +3835,24 @@ interface components {
3602
3835
  * @enum {string}
3603
3836
  */
3604
3837
  type: "jira";
3838
+ integrationDescription: string;
3839
+ };
3840
+ TaskDetailResponse: components["schemas"]["Task"] & {
3841
+ /**
3842
+ * @description Section the task belongs to
3843
+ * @enum {string|null}
3844
+ */
3845
+ section: "today" | "sooner" | "later" | null;
3846
+ /** @description Subtask tree with descriptions */
3847
+ subtasks?: components["schemas"]["SubTask"][];
3605
3848
  };
3849
+ SubTask: (components["schemas"]["LocuTask"] & {
3850
+ subtasks?: unknown[];
3851
+ }) | (components["schemas"]["LinearTask"] & {
3852
+ subtasks?: unknown[];
3853
+ }) | (components["schemas"]["JiraTask"] & {
3854
+ subtasks?: unknown[];
3855
+ });
3606
3856
  MeResponse: {
3607
3857
  /** @description Email of the authenticated user */
3608
3858
  email: string;
@@ -3632,14 +3882,22 @@ interface components {
3632
3882
  id: string;
3633
3883
  type: "folder" | "virtual-folder";
3634
3884
  } | null;
3635
- createdAt?: number;
3636
- updatedAt?: number;
3637
- /** @description Note content as Markdown */
3638
- markdown: string;
3639
- /** @description Note content as HTML (only included when includeHtml=true) */
3885
+ /**
3886
+ * Format: date-time
3887
+ * @description Creation timestamp (ISO 8601)
3888
+ */
3889
+ createdAt?: string;
3890
+ /**
3891
+ * Format: date-time
3892
+ * @description Last update timestamp (ISO 8601)
3893
+ */
3894
+ updatedAt?: string;
3895
+ /** @description Note content as Markdown (included when includeMarkdown=true) */
3896
+ markdown?: string;
3897
+ /** @description Note content as HTML (included when includeHtml=true) */
3640
3898
  html?: string;
3641
3899
  /**
3642
- * @description Note content as ProseMirror JSON document
3900
+ * @description Note content as ProseMirror JSON document (included when includeJson=true)
3643
3901
  * @example {
3644
3902
  * "type": "doc",
3645
3903
  * "content": [
@@ -3693,8 +3951,8 @@ interface components {
3693
3951
  }[];
3694
3952
  }[];
3695
3953
  };
3696
- /** @description Note content as plain text */
3697
- plainText: string;
3954
+ /** @description Note content as plain text (included when includePlainText=true) */
3955
+ plainText?: string;
3698
3956
  };
3699
3957
  CreateNoteRequest: {
3700
3958
  /**
@@ -3710,6 +3968,11 @@ interface components {
3710
3968
  color?: string | null;
3711
3969
  /** @description Parent folder ID */
3712
3970
  folderId?: string;
3971
+ /**
3972
+ * @description Preserve extra blank lines as empty paragraphs instead of collapsing them
3973
+ * @default true
3974
+ */
3975
+ keepBreaks: boolean;
3713
3976
  };
3714
3977
  UpdateNoteRequest: {
3715
3978
  /** @description New text content for the note */
@@ -3720,6 +3983,11 @@ interface components {
3720
3983
  color?: string | null;
3721
3984
  /** @description New parent folder ID */
3722
3985
  folderId?: string | null;
3986
+ /**
3987
+ * @description Preserve extra blank lines as empty paragraphs instead of collapsing them
3988
+ * @default true
3989
+ */
3990
+ keepBreaks: boolean;
3723
3991
  };
3724
3992
  DeleteNoteResponse: {
3725
3993
  success: boolean;
@@ -3734,18 +4002,31 @@ interface components {
3734
4002
  name: string;
3735
4003
  icon: string | null;
3736
4004
  color: string | null;
3737
- state: "planned" | "completed";
3738
- completedAt?: number | null;
3739
- createdAt: number;
3740
- updatedAt: number;
4005
+ state: "planned" | "completed" | "canceled";
4006
+ /**
4007
+ * Format: date-time
4008
+ * @description Completion timestamp (ISO 8601)
4009
+ */
4010
+ completedAt?: string | null;
4011
+ canceledAt?: number | null;
4012
+ /**
4013
+ * Format: date-time
4014
+ * @description Creation timestamp (ISO 8601)
4015
+ */
4016
+ createdAt: string;
4017
+ /**
4018
+ * Format: date-time
4019
+ * @description Last update timestamp (ISO 8601)
4020
+ */
4021
+ updatedAt: string;
3741
4022
  /** @description Project description in multiple formats */
3742
4023
  description?: {
3743
- /** @description Description content as Markdown */
3744
- markdown: string;
3745
- /** @description Description content as HTML (only included when includeHtml=true) */
4024
+ /** @description Description content as Markdown (included when includeMarkdown=true) */
4025
+ markdown?: string;
4026
+ /** @description Description content as HTML (included when includeHtml=true) */
3746
4027
  html?: string;
3747
4028
  /**
3748
- * @description Description content as ProseMirror JSON document
4029
+ * @description Description content as ProseMirror JSON document (included when includeJson=true)
3749
4030
  * @example {
3750
4031
  * "type": "doc",
3751
4032
  * "content": [
@@ -3799,8 +4080,8 @@ interface components {
3799
4080
  }[];
3800
4081
  }[];
3801
4082
  };
3802
- /** @description Description content as plain text */
3803
- plainText: string;
4083
+ /** @description Description content as plain text (included when includePlainText=true) */
4084
+ plainText?: string;
3804
4085
  } | null;
3805
4086
  };
3806
4087
  CreateProjectRequest: {
@@ -3817,6 +4098,11 @@ interface components {
3817
4098
  icon?: string | null;
3818
4099
  /** @description Hex color for the icon (e.g., "#FF5733"). Only applies to Lucide icons, not emojis. */
3819
4100
  color?: string | null;
4101
+ /**
4102
+ * @description Preserve extra blank lines as empty paragraphs instead of collapsing them
4103
+ * @default true
4104
+ */
4105
+ keepBreaks: boolean;
3820
4106
  };
3821
4107
  UpdateProjectRequest: {
3822
4108
  /** @description New name for the project */
@@ -3832,6 +4118,11 @@ interface components {
3832
4118
  * @enum {string}
3833
4119
  */
3834
4120
  state?: "planned" | "completed";
4121
+ /**
4122
+ * @description Preserve extra blank lines as empty paragraphs instead of collapsing them
4123
+ * @default true
4124
+ */
4125
+ keepBreaks: boolean;
3835
4126
  };
3836
4127
  DeleteProjectResponse: {
3837
4128
  success: boolean;
@@ -3846,42 +4137,115 @@ interface components {
3846
4137
  activities: components["schemas"]["SessionActivity"][];
3847
4138
  };
3848
4139
  SessionActivity: {
4140
+ /**
4141
+ * Format: uuid
4142
+ * @description Unique identifier for the activity
4143
+ */
4144
+ id: string;
4145
+ /**
4146
+ * Format: date-time
4147
+ * @description Activity start timestamp (ISO 8601)
4148
+ */
4149
+ createdAt: string;
4150
+ /**
4151
+ * Format: date-time
4152
+ * @description Activity end timestamp (ISO 8601)
4153
+ */
4154
+ finishedAt: string;
4155
+ /**
4156
+ * Format: uuid
4157
+ * @description Session ID this activity belongs to
4158
+ */
4159
+ sessionId: string;
4160
+ /** @description Whether the activity was manually created */
4161
+ isManual: boolean;
3849
4162
  /** @enum {string} */
3850
4163
  type: "TASK";
4164
+ /** @description Associated task ID */
3851
4165
  taskId: string;
4166
+ } | {
4167
+ /**
4168
+ * Format: uuid
4169
+ * @description Unique identifier for the activity
4170
+ */
3852
4171
  id: string;
3853
- createdAt: number;
3854
- finishedAt: number;
4172
+ /**
4173
+ * Format: date-time
4174
+ * @description Activity start timestamp (ISO 8601)
4175
+ */
4176
+ createdAt: string;
4177
+ /**
4178
+ * Format: date-time
4179
+ * @description Activity end timestamp (ISO 8601)
4180
+ */
4181
+ finishedAt: string;
4182
+ /**
4183
+ * Format: uuid
4184
+ * @description Session ID this activity belongs to
4185
+ */
3855
4186
  sessionId: string;
4187
+ /** @description Whether the activity was manually created */
3856
4188
  isManual: boolean;
3857
- } | {
3858
4189
  /** @enum {string} */
3859
4190
  type: "MEETING";
4191
+ /** @description Meeting title */
3860
4192
  title: string;
3861
- htmlLink: string;
4193
+ /** @description Meeting URL */
4194
+ htmlLink?: string;
4195
+ /** @description Meeting identifier */
3862
4196
  meetingId: string;
4197
+ /** @description Calendar identifier */
3863
4198
  calendarId?: string;
4199
+ } | {
4200
+ /**
4201
+ * Format: uuid
4202
+ * @description Unique identifier for the activity
4203
+ */
3864
4204
  id: string;
3865
- createdAt: number;
3866
- finishedAt: number;
4205
+ /**
4206
+ * Format: date-time
4207
+ * @description Activity start timestamp (ISO 8601)
4208
+ */
4209
+ createdAt: string;
4210
+ /**
4211
+ * Format: date-time
4212
+ * @description Activity end timestamp (ISO 8601)
4213
+ */
4214
+ finishedAt: string;
4215
+ /**
4216
+ * Format: uuid
4217
+ * @description Session ID this activity belongs to
4218
+ */
3867
4219
  sessionId: string;
4220
+ /** @description Whether the activity was manually created */
3868
4221
  isManual: boolean;
3869
- } | {
3870
4222
  /** @enum {string} */
3871
4223
  type: "PLANNING";
4224
+ } | {
4225
+ /**
4226
+ * Format: uuid
4227
+ * @description Unique identifier for the activity
4228
+ */
3872
4229
  id: string;
3873
- createdAt: number;
3874
- finishedAt: number;
4230
+ /**
4231
+ * Format: date-time
4232
+ * @description Activity start timestamp (ISO 8601)
4233
+ */
4234
+ createdAt: string;
4235
+ /**
4236
+ * Format: date-time
4237
+ * @description Activity end timestamp (ISO 8601)
4238
+ */
4239
+ finishedAt: string;
4240
+ /**
4241
+ * Format: uuid
4242
+ * @description Session ID this activity belongs to
4243
+ */
3875
4244
  sessionId: string;
4245
+ /** @description Whether the activity was manually created */
3876
4246
  isManual: boolean;
3877
- } | {
3878
4247
  /** @enum {string} */
3879
4248
  type: "WRAP_UP";
3880
- id: string;
3881
- createdAt: number;
3882
- finishedAt: number;
3883
- sessionId: string;
3884
- isManual: boolean;
3885
4249
  };
3886
4250
  Session: {
3887
4251
  /**
@@ -3891,10 +4255,21 @@ interface components {
3891
4255
  id: string;
3892
4256
  /** @description Whether the session was manually created */
3893
4257
  isManual: boolean;
3894
- /** @description Start timestamp (Unix seconds) */
3895
- createdAt: number;
3896
- /** @description End timestamp (Unix seconds) */
3897
- finishedAt: number;
4258
+ /**
4259
+ * Format: date-time
4260
+ * @description Session start timestamp (ISO 8601)
4261
+ */
4262
+ createdAt: string;
4263
+ /**
4264
+ * Format: date-time
4265
+ * @description Session end timestamp (ISO 8601)
4266
+ */
4267
+ finishedAt: string;
4268
+ };
4269
+ ActivityPaginatedListResponse: {
4270
+ data: components["schemas"]["SessionActivity"][];
4271
+ nextCursor: string | null;
4272
+ hasMore: boolean;
3898
4273
  };
3899
4274
  CreateSessionRequest: {
3900
4275
  /**
@@ -3902,16 +4277,28 @@ interface components {
3902
4277
  * @description Optional custom ID for the session
3903
4278
  */
3904
4279
  id?: string;
3905
- /** @description Start timestamp (Unix seconds) */
3906
- createdAt: number;
3907
- /** @description End timestamp (Unix seconds) */
3908
- finishedAt: number;
4280
+ /**
4281
+ * Format: date-time
4282
+ * @description Session start timestamp (ISO 8601)
4283
+ */
4284
+ createdAt: string;
4285
+ /**
4286
+ * Format: date-time
4287
+ * @description Session end timestamp (ISO 8601)
4288
+ */
4289
+ finishedAt: string;
3909
4290
  };
3910
4291
  UpdateSessionRequest: {
3911
- /** @description New start timestamp (Unix seconds) */
3912
- createdAt?: number;
3913
- /** @description New end timestamp (Unix seconds) */
3914
- finishedAt?: number;
4292
+ /**
4293
+ * Format: date-time
4294
+ * @description New session start timestamp (ISO 8601)
4295
+ */
4296
+ createdAt?: string;
4297
+ /**
4298
+ * Format: date-time
4299
+ * @description New session end timestamp (ISO 8601)
4300
+ */
4301
+ finishedAt?: string;
3915
4302
  };
3916
4303
  DeleteSessionResponse: {
3917
4304
  success: boolean;
@@ -3926,16 +4313,28 @@ interface components {
3926
4313
  type: "TASK";
3927
4314
  /** @description Associated task ID */
3928
4315
  taskId: string;
3929
- /** @description Start timestamp (Unix seconds) */
3930
- createdAt: number;
3931
- /** @description End timestamp (Unix seconds) */
3932
- finishedAt: number;
4316
+ /**
4317
+ * Format: date-time
4318
+ * @description Activity start timestamp (ISO 8601)
4319
+ */
4320
+ createdAt: string;
4321
+ /**
4322
+ * Format: date-time
4323
+ * @description Activity end timestamp (ISO 8601)
4324
+ */
4325
+ finishedAt: string;
3933
4326
  };
3934
4327
  UpdateActivityRequest: {
3935
- /** @description New start timestamp (Unix seconds) */
3936
- createdAt?: number;
3937
- /** @description New end timestamp (Unix seconds) */
3938
- finishedAt?: number;
4328
+ /**
4329
+ * Format: date-time
4330
+ * @description New activity start timestamp (ISO 8601)
4331
+ */
4332
+ createdAt?: string;
4333
+ /**
4334
+ * Format: date-time
4335
+ * @description New activity end timestamp (ISO 8601)
4336
+ */
4337
+ finishedAt?: string;
3939
4338
  };
3940
4339
  DeleteActivityResponse: {
3941
4340
  success: boolean;
@@ -3988,6 +4387,11 @@ interface components {
3988
4387
  * @enum {string}
3989
4388
  */
3990
4389
  section?: "today" | "sooner" | "later";
4390
+ /**
4391
+ * @description Preserve extra blank lines as empty paragraphs instead of collapsing them
4392
+ * @default true
4393
+ */
4394
+ keepBreaks: boolean;
3991
4395
  };
3992
4396
  UpdateTaskRequest: {
3993
4397
  /** @description Task name */
@@ -4005,6 +4409,11 @@ interface components {
4005
4409
  waiting?: {
4006
4410
  reason?: string;
4007
4411
  } | null;
4412
+ /**
4413
+ * @description Preserve extra blank lines as empty paragraphs instead of collapsing them
4414
+ * @default true
4415
+ */
4416
+ keepBreaks: boolean;
4008
4417
  };
4009
4418
  DeleteTaskResponse: {
4010
4419
  success: boolean;
@@ -4019,8 +4428,8 @@ interface components {
4019
4428
  duration?: number;
4020
4429
  /** @description ID of the task being worked on (only present when ACTIVE with a task) */
4021
4430
  currentTaskId?: string;
4022
- /** @description When the timer was started as Unix timestamp in seconds (only present when not IDLE) */
4023
- startedAt?: number;
4431
+ /** @description When the timer was started as an ISO 8601 datetime (only present when not IDLE) */
4432
+ startedAt?: string;
4024
4433
  };
4025
4434
  StartTimerRequest: {
4026
4435
  /** @description Duration in seconds (must be positive) */
@@ -4037,10 +4446,16 @@ interface components {
4037
4446
  id: string;
4038
4447
  /** @description Whether the session was manually created */
4039
4448
  isManual: boolean;
4040
- /** @description Start timestamp (Unix seconds) */
4041
- createdAt: number;
4042
- /** @description End timestamp (Unix seconds) */
4043
- finishedAt: number;
4449
+ /**
4450
+ * Format: date-time
4451
+ * @description Start timestamp (ISO 8601)
4452
+ */
4453
+ createdAt: string;
4454
+ /**
4455
+ * Format: date-time
4456
+ * @description End timestamp (ISO 8601)
4457
+ */
4458
+ finishedAt: string;
4044
4459
  };
4045
4460
  WebhookListResponse: {
4046
4461
  data: components["schemas"]["Webhook"][];
@@ -4173,16 +4588,21 @@ interface components {
4173
4588
  type $defs = Record<string, never>;
4174
4589
  type operations = Record<string, never>;
4175
4590
 
4591
+ /** Helper to make keepBreaks optional (has server default) */
4592
+ type WithOptionalKeepBreaks<T> = Omit<T, "keepBreaks"> & {
4593
+ keepBreaks?: boolean;
4594
+ };
4176
4595
  type Task = components["schemas"]["Task"];
4177
- type CreateTaskRequest = components["schemas"]["CreateTaskRequest"];
4178
- type UpdateTaskRequest = components["schemas"]["UpdateTaskRequest"];
4596
+ type TaskDetailResponse = components["schemas"]["TaskDetailResponse"];
4597
+ type CreateTaskRequest = WithOptionalKeepBreaks<components["schemas"]["CreateTaskRequest"]>;
4598
+ type UpdateTaskRequest = WithOptionalKeepBreaks<components["schemas"]["UpdateTaskRequest"]>;
4179
4599
  type TaskSectionsResponse = components["schemas"]["TaskSectionsResponse"];
4180
4600
  type Project = components["schemas"]["Project"];
4181
- type CreateProjectRequest = components["schemas"]["CreateProjectRequest"];
4182
- type UpdateProjectRequest = components["schemas"]["UpdateProjectRequest"];
4601
+ type CreateProjectRequest = WithOptionalKeepBreaks<components["schemas"]["CreateProjectRequest"]>;
4602
+ type UpdateProjectRequest = WithOptionalKeepBreaks<components["schemas"]["UpdateProjectRequest"]>;
4183
4603
  type Note = components["schemas"]["Note"];
4184
- type CreateNoteRequest = components["schemas"]["CreateNoteRequest"];
4185
- type UpdateNoteRequest = components["schemas"]["UpdateNoteRequest"];
4604
+ type CreateNoteRequest = WithOptionalKeepBreaks<components["schemas"]["CreateNoteRequest"]>;
4605
+ type UpdateNoteRequest = WithOptionalKeepBreaks<components["schemas"]["UpdateNoteRequest"]>;
4186
4606
  type Session = components["schemas"]["Session"];
4187
4607
  type SessionWithActivities = components["schemas"]["SessionWithActivities"];
4188
4608
  type SessionActivity = components["schemas"]["SessionActivity"];
@@ -4230,6 +4650,7 @@ type SubtaskListParams = Omit<NonNullable<paths["/tasks/{id}/subtasks"]["get"]["
4230
4650
  type ProjectListParams = NonNullable<paths["/projects"]["get"]["parameters"]["query"]>;
4231
4651
  type NoteListParams = NonNullable<paths["/notes"]["get"]["parameters"]["query"]>;
4232
4652
  type SessionListParams = NonNullable<paths["/sessions"]["get"]["parameters"]["query"]>;
4653
+ type ActivityListParams = NonNullable<paths["/sessions/activities"]["get"]["parameters"]["query"]>;
4233
4654
  type WebhookListParams = Omit<NonNullable<paths["/webhooks"]["get"]["parameters"]["query"]>, "isActive"> & {
4234
4655
  isActive?: BooleanParam;
4235
4656
  };
@@ -4270,7 +4691,7 @@ declare const createLocuClient: (config: LocuClientConfig) => {
4270
4691
  /** List all tasks */
4271
4692
  list: (params?: TaskListParams) => Promise<PaginatedResponse<Task>>;
4272
4693
  /** Get a single task by ID */
4273
- get: (id: string) => Promise<Task>;
4694
+ get: (id: string) => Promise<TaskDetailResponse>;
4274
4695
  /** Create a new task */
4275
4696
  create: (data: CreateTaskRequest) => Promise<Task>;
4276
4697
  /** Update an existing task */
@@ -4318,7 +4739,7 @@ declare const createLocuClient: (config: LocuClientConfig) => {
4318
4739
  /** List all sessions */
4319
4740
  list: (params?: SessionListParams) => Promise<PaginatedResponse<SessionWithActivities>>;
4320
4741
  /** Get a single session by ID */
4321
- get: (id: string) => Promise<SessionWithActivities>;
4742
+ get: (id: string) => Promise<Session>;
4322
4743
  /** Create a new session */
4323
4744
  create: (data: CreateSessionRequest) => Promise<Session>;
4324
4745
  /** Update an existing session */
@@ -4327,6 +4748,8 @@ declare const createLocuClient: (config: LocuClientConfig) => {
4327
4748
  delete: (id: string) => Promise<{
4328
4749
  success: boolean;
4329
4750
  }>;
4751
+ /** List all activities with optional filters */
4752
+ listActivities: (params?: ActivityListParams) => Promise<PaginatedResponse<SessionActivity>>;
4330
4753
  activities: {
4331
4754
  /** List activities for a session */
4332
4755
  list: (sessionId: string) => Promise<{