@doist/todoist-api-typescript 7.6.0 → 7.7.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.
Files changed (162) hide show
  1. package/dist/cjs/todoist-api.js +8 -7
  2. package/dist/cjs/types/activity/index.js +18 -0
  3. package/dist/cjs/types/activity/requests.js +2 -0
  4. package/dist/cjs/types/activity/types.js +28 -0
  5. package/dist/cjs/types/backups/index.js +18 -0
  6. package/dist/cjs/types/backups/requests.js +2 -0
  7. package/dist/cjs/types/backups/types.js +8 -0
  8. package/dist/cjs/types/comments/index.js +18 -0
  9. package/dist/cjs/types/comments/requests.js +2 -0
  10. package/dist/cjs/types/comments/types.js +60 -0
  11. package/dist/cjs/types/common.js +2 -0
  12. package/dist/cjs/types/emails/index.js +17 -0
  13. package/dist/cjs/types/emails/requests.js +5 -0
  14. package/dist/cjs/types/id-mappings/index.js +18 -0
  15. package/dist/cjs/types/{requests.js → id-mappings/requests.js} +1 -7
  16. package/dist/cjs/types/id-mappings/types.js +12 -0
  17. package/dist/cjs/types/index.js +16 -2
  18. package/dist/cjs/types/insights/index.js +18 -0
  19. package/dist/cjs/types/insights/requests.js +2 -0
  20. package/dist/cjs/types/insights/types.js +84 -0
  21. package/dist/cjs/types/labels/index.js +18 -0
  22. package/dist/cjs/types/labels/requests.js +2 -0
  23. package/dist/cjs/types/labels/types.js +11 -0
  24. package/dist/cjs/types/productivity/index.js +17 -0
  25. package/dist/cjs/types/productivity/types.js +67 -0
  26. package/dist/cjs/types/projects/index.js +18 -0
  27. package/dist/cjs/types/projects/requests.js +2 -0
  28. package/dist/cjs/types/projects/types.js +56 -0
  29. package/dist/cjs/types/reminders/index.js +17 -0
  30. package/dist/cjs/types/reminders/requests.js +5 -0
  31. package/dist/cjs/types/sections/index.js +18 -0
  32. package/dist/cjs/types/sections/requests.js +2 -0
  33. package/dist/cjs/types/sections/types.js +22 -0
  34. package/dist/cjs/types/sync/commands/shared.js +2 -2
  35. package/dist/cjs/types/sync/resources/collaborators.js +2 -2
  36. package/dist/cjs/types/sync/resources/notes.js +2 -2
  37. package/dist/cjs/types/sync/resources/reminders.js +3 -3
  38. package/dist/cjs/types/sync/resources/user.js +2 -2
  39. package/dist/cjs/types/sync/resources/workspaces.js +5 -5
  40. package/dist/cjs/types/tasks/index.js +18 -0
  41. package/dist/cjs/types/tasks/requests.js +2 -0
  42. package/dist/cjs/types/tasks/types.js +59 -0
  43. package/dist/cjs/types/templates/index.js +17 -0
  44. package/dist/cjs/types/templates/requests.js +2 -0
  45. package/dist/cjs/types/uploads/index.js +17 -0
  46. package/dist/cjs/types/uploads/requests.js +2 -0
  47. package/dist/cjs/types/users/index.js +17 -0
  48. package/dist/cjs/types/users/types.js +51 -0
  49. package/dist/cjs/types/workspaces/index.js +18 -0
  50. package/dist/cjs/types/workspaces/requests.js +2 -0
  51. package/dist/cjs/types/workspaces/types.js +137 -0
  52. package/dist/cjs/utils/validators.js +38 -27
  53. package/dist/esm/todoist-api.js +4 -3
  54. package/dist/esm/types/activity/index.js +2 -0
  55. package/dist/esm/types/activity/requests.js +1 -0
  56. package/dist/esm/types/activity/types.js +25 -0
  57. package/dist/esm/types/backups/index.js +2 -0
  58. package/dist/esm/types/backups/requests.js +1 -0
  59. package/dist/esm/types/backups/types.js +5 -0
  60. package/dist/esm/types/comments/index.js +2 -0
  61. package/dist/esm/types/comments/requests.js +1 -0
  62. package/dist/esm/types/comments/types.js +57 -0
  63. package/dist/esm/types/common.js +1 -0
  64. package/dist/esm/types/emails/index.js +1 -0
  65. package/dist/esm/types/emails/requests.js +2 -0
  66. package/dist/esm/types/id-mappings/index.js +2 -0
  67. package/dist/esm/types/{requests.js → id-mappings/requests.js} +0 -6
  68. package/dist/esm/types/id-mappings/types.js +9 -0
  69. package/dist/esm/types/index.js +16 -2
  70. package/dist/esm/types/insights/index.js +2 -0
  71. package/dist/esm/types/insights/requests.js +1 -0
  72. package/dist/esm/types/insights/types.js +81 -0
  73. package/dist/esm/types/labels/index.js +2 -0
  74. package/dist/esm/types/labels/requests.js +1 -0
  75. package/dist/esm/types/labels/types.js +8 -0
  76. package/dist/esm/types/productivity/index.js +1 -0
  77. package/dist/esm/types/productivity/types.js +64 -0
  78. package/dist/esm/types/projects/index.js +2 -0
  79. package/dist/esm/types/projects/requests.js +1 -0
  80. package/dist/esm/types/projects/types.js +53 -0
  81. package/dist/esm/types/reminders/index.js +1 -0
  82. package/dist/esm/types/reminders/requests.js +2 -0
  83. package/dist/esm/types/sections/index.js +2 -0
  84. package/dist/esm/types/sections/requests.js +1 -0
  85. package/dist/esm/types/sections/types.js +19 -0
  86. package/dist/esm/types/sync/commands/shared.js +1 -1
  87. package/dist/esm/types/sync/resources/collaborators.js +1 -1
  88. package/dist/esm/types/sync/resources/notes.js +1 -1
  89. package/dist/esm/types/sync/resources/reminders.js +1 -1
  90. package/dist/esm/types/sync/resources/user.js +1 -1
  91. package/dist/esm/types/sync/resources/workspaces.js +1 -1
  92. package/dist/esm/types/tasks/index.js +2 -0
  93. package/dist/esm/types/tasks/requests.js +1 -0
  94. package/dist/esm/types/tasks/types.js +56 -0
  95. package/dist/esm/types/templates/index.js +1 -0
  96. package/dist/esm/types/templates/requests.js +1 -0
  97. package/dist/esm/types/uploads/index.js +1 -0
  98. package/dist/esm/types/uploads/requests.js +1 -0
  99. package/dist/esm/types/users/index.js +1 -0
  100. package/dist/esm/types/users/types.js +48 -0
  101. package/dist/esm/types/workspaces/index.js +2 -0
  102. package/dist/esm/types/workspaces/requests.js +1 -0
  103. package/dist/esm/types/workspaces/types.js +134 -0
  104. package/dist/esm/utils/validators.js +12 -1
  105. package/dist/types/test-utils/test-defaults.d.ts +5 -5
  106. package/dist/types/todoist-api.d.ts +16 -2
  107. package/dist/types/types/activity/index.d.ts +2 -0
  108. package/dist/types/types/activity/requests.d.ts +85 -0
  109. package/dist/types/types/activity/types.d.ts +49 -0
  110. package/dist/types/types/backups/index.d.ts +2 -0
  111. package/dist/types/types/backups/requests.d.ts +16 -0
  112. package/dist/types/types/backups/types.d.ts +7 -0
  113. package/dist/types/types/comments/index.d.ts +2 -0
  114. package/dist/types/types/comments/requests.d.ts +64 -0
  115. package/dist/types/types/comments/types.d.ts +141 -0
  116. package/dist/types/types/common.d.ts +6 -0
  117. package/dist/types/types/emails/index.d.ts +1 -0
  118. package/dist/types/types/emails/requests.d.ts +30 -0
  119. package/dist/types/types/id-mappings/index.d.ts +2 -0
  120. package/dist/types/types/id-mappings/requests.d.ts +28 -0
  121. package/dist/types/types/id-mappings/types.d.ts +13 -0
  122. package/dist/types/types/index.d.ts +16 -2
  123. package/dist/types/types/insights/index.d.ts +2 -0
  124. package/dist/types/types/insights/requests.d.ts +26 -0
  125. package/dist/types/types/insights/types.d.ts +186 -0
  126. package/dist/types/types/labels/index.d.ts +2 -0
  127. package/dist/types/types/labels/requests.d.ts +75 -0
  128. package/dist/types/types/labels/types.d.ts +13 -0
  129. package/dist/types/types/productivity/index.d.ts +1 -0
  130. package/dist/types/types/productivity/types.d.ts +115 -0
  131. package/dist/types/types/projects/index.d.ts +2 -0
  132. package/dist/types/types/projects/requests.d.ts +169 -0
  133. package/dist/types/types/projects/types.d.ts +201 -0
  134. package/dist/types/types/reminders/index.d.ts +1 -0
  135. package/dist/types/types/reminders/requests.d.ts +91 -0
  136. package/dist/types/types/sections/index.d.ts +2 -0
  137. package/dist/types/types/sections/requests.d.ts +41 -0
  138. package/dist/types/types/sections/types.d.ts +44 -0
  139. package/dist/types/types/sync/commands/projects.d.ts +2 -1
  140. package/dist/types/types/sync/commands/shared.d.ts +2 -2
  141. package/dist/types/types/sync/commands/workspaces.d.ts +1 -1
  142. package/dist/types/types/sync/resources/notes.d.ts +1 -1
  143. package/dist/types/types/sync/response.d.ts +5 -1
  144. package/dist/types/types/tasks/index.d.ts +2 -0
  145. package/dist/types/types/tasks/requests.d.ts +197 -0
  146. package/dist/types/types/tasks/types.d.ts +162 -0
  147. package/dist/types/types/templates/index.d.ts +1 -0
  148. package/dist/types/types/templates/requests.d.ts +92 -0
  149. package/dist/types/types/uploads/index.d.ts +1 -0
  150. package/dist/types/types/uploads/requests.d.ts +32 -0
  151. package/dist/types/types/users/index.d.ts +1 -0
  152. package/dist/types/types/users/types.d.ts +66 -0
  153. package/dist/types/types/workspaces/index.d.ts +2 -0
  154. package/dist/types/types/workspaces/requests.d.ts +260 -0
  155. package/dist/types/types/workspaces/types.d.ts +225 -0
  156. package/dist/types/utils/colors.d.ts +1 -1
  157. package/dist/types/utils/validators.d.ts +7 -6
  158. package/package.json +3 -3
  159. package/dist/cjs/types/entities.js +0 -552
  160. package/dist/esm/types/entities.js +0 -548
  161. package/dist/types/types/entities.d.ts +0 -1211
  162. package/dist/types/types/requests.d.ts +0 -1188
@@ -0,0 +1,48 @@
1
+ import { z } from 'zod';
2
+ export const UserSchema = z.object({
3
+ id: z.string(),
4
+ name: z.string(),
5
+ email: z.string(),
6
+ });
7
+ export const TimezoneInfoSchema = z.object({
8
+ gmtString: z.string(),
9
+ hours: z.number().int(),
10
+ isDst: z.number().int(),
11
+ minutes: z.number().int(),
12
+ timezone: z.string(),
13
+ });
14
+ /** Available user premium statuses. */
15
+ export const PREMIUM_STATUSES = [
16
+ 'not_premium',
17
+ 'current_personal_plan',
18
+ 'legacy_personal_plan',
19
+ 'teams_business_member',
20
+ ];
21
+ export const CurrentUserSchema = z.object({
22
+ id: z.string(),
23
+ email: z.string(),
24
+ fullName: z.string(),
25
+ avatarBig: z.string().nullish(),
26
+ avatarMedium: z.string().nullish(),
27
+ avatarS640: z.string().nullish(),
28
+ avatarSmall: z.string().nullish(),
29
+ businessAccountId: z.string().nullable(),
30
+ isPremium: z.boolean(),
31
+ premiumStatus: z.enum(PREMIUM_STATUSES),
32
+ dateFormat: z.number().int(),
33
+ timeFormat: z.number().int(),
34
+ weeklyGoal: z.number().int(),
35
+ dailyGoal: z.number().int(),
36
+ completedCount: z.number().int(),
37
+ completedToday: z.number().int(),
38
+ karma: z.number(),
39
+ karmaTrend: z.string(),
40
+ lang: z.string(),
41
+ nextWeek: z.number().int(),
42
+ startDay: z.number().int(),
43
+ startPage: z.string(),
44
+ tzInfo: TimezoneInfoSchema,
45
+ inboxProjectId: z.string(),
46
+ daysOff: z.array(z.number().int()),
47
+ weekendStartDay: z.number().int(),
48
+ });
@@ -0,0 +1,2 @@
1
+ export * from './types.js';
2
+ export * from './requests.js';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,134 @@
1
+ import { z } from 'zod';
2
+ import { DueDateSchema, DeadlineSchema } from '../tasks/types.js';
3
+ /** Available project collaborator roles. */
4
+ export const COLLABORATOR_ROLES = [
5
+ 'CREATOR',
6
+ 'ADMIN',
7
+ 'READ_WRITE',
8
+ 'EDIT_ONLY',
9
+ 'COMPLETE_ONLY',
10
+ ];
11
+ /**
12
+ * Available workspace roles.
13
+ */
14
+ export const WORKSPACE_ROLES = ['ADMIN', 'MEMBER', 'GUEST'];
15
+ export const WorkspaceRoleSchema = z.enum(WORKSPACE_ROLES);
16
+ export const WorkspaceUserSchema = z.object({
17
+ userId: z.string(),
18
+ workspaceId: z.string(),
19
+ userEmail: z.string(),
20
+ fullName: z.string(),
21
+ timezone: z.string(),
22
+ role: WorkspaceRoleSchema,
23
+ imageId: z.string().nullable(),
24
+ isDeleted: z.boolean().default(false),
25
+ });
26
+ export const WorkspaceInvitationSchema = z.object({
27
+ id: z.string().default('0'),
28
+ inviterId: z.string(),
29
+ userEmail: z.string(),
30
+ workspaceId: z.string(),
31
+ role: WorkspaceRoleSchema,
32
+ isExistingUser: z.boolean(),
33
+ });
34
+ export const PlanPriceSchema = z.object({
35
+ currency: z.string(),
36
+ amount: z.union([z.number(), z.string()]),
37
+ interval: z.string().optional(),
38
+ });
39
+ export const FormattedPriceListingSchema = z.object({
40
+ currency: z.string().optional(),
41
+ amount: z.number().optional(),
42
+ interval: z.string().optional(),
43
+ formatted: z.string().optional(),
44
+ });
45
+ /** Available workspace plan names. */
46
+ export const WORKSPACE_CURRENT_PLANS = ['Business', 'Starter'];
47
+ /** Available workspace plan statuses. */
48
+ export const WORKSPACE_PLAN_STATUSES = [
49
+ 'Active',
50
+ 'Downgraded',
51
+ 'Cancelled',
52
+ 'NeverSubscribed',
53
+ ];
54
+ export const WorkspacePlanDetailsSchema = z.object({
55
+ currentMemberCount: z.number(),
56
+ currentPlan: z.enum(WORKSPACE_CURRENT_PLANS),
57
+ currentPlanStatus: z.enum(WORKSPACE_PLAN_STATUSES),
58
+ downgradeAt: z.string().nullable(),
59
+ currentActiveProjects: z.number(),
60
+ maximumActiveProjects: z.number(),
61
+ priceList: z.array(FormattedPriceListingSchema),
62
+ workspaceId: z.number(),
63
+ isTrialing: z.boolean(),
64
+ trialEndsAt: z.string().nullable(),
65
+ cancelAtPeriodEnd: z.boolean(),
66
+ hasTrialed: z.boolean(),
67
+ planPrice: PlanPriceSchema.nullable(),
68
+ hasBillingPortal: z.boolean(),
69
+ hasBillingPortalSwitchToAnnual: z.boolean(),
70
+ });
71
+ export const JoinWorkspaceResultSchema = z.object({
72
+ customSortingApplied: z.boolean(),
73
+ projectSortPreference: z.string(),
74
+ role: WorkspaceRoleSchema,
75
+ userId: z.string(),
76
+ workspaceId: z.string(),
77
+ });
78
+ /**
79
+ * Available workspace plans.
80
+ */
81
+ export const WORKSPACE_PLANS = ['STARTER', 'BUSINESS'];
82
+ export const WorkspacePlanSchema = z.enum(WORKSPACE_PLANS);
83
+ /**
84
+ * Workspace resource limits.
85
+ */
86
+ export const WorkspaceLimitsSchema = z
87
+ .object({
88
+ current: z.record(z.string(), z.any()).nullable(),
89
+ next: z.record(z.string(), z.any()).nullable(),
90
+ })
91
+ .catchall(z.any());
92
+ /**
93
+ * Workspace properties (flexible object for unknown fields).
94
+ */
95
+ export const WorkspacePropertiesSchema = z.record(z.string(), z.unknown());
96
+ /**
97
+ * Represents a workspace in Todoist.
98
+ */
99
+ export const WorkspaceSchema = z.object({
100
+ id: z.string(),
101
+ name: z.string(),
102
+ plan: WorkspacePlanSchema,
103
+ role: WorkspaceRoleSchema,
104
+ inviteCode: z.string(),
105
+ isLinkSharingEnabled: z.boolean(),
106
+ isGuestAllowed: z.boolean(),
107
+ limits: WorkspaceLimitsSchema,
108
+ logoBig: z.string().nullish(),
109
+ logoMedium: z.string().nullish(),
110
+ logoSmall: z.string().nullish(),
111
+ logoS640: z.string().nullish(),
112
+ createdAt: z.string(),
113
+ creatorId: z.string(),
114
+ properties: WorkspacePropertiesSchema,
115
+ });
116
+ export const MemberActivityInfoSchema = z.object({
117
+ userId: z.string(),
118
+ tasksAssigned: z.number().int(),
119
+ tasksOverdue: z.number().int(),
120
+ });
121
+ export const WorkspaceUserTaskSchema = z.object({
122
+ id: z.string(),
123
+ content: z.string(),
124
+ responsibleUid: z.string().nullable(),
125
+ due: DueDateSchema.nullable(),
126
+ deadline: DeadlineSchema.nullable(),
127
+ labels: z.array(z.string()),
128
+ notesCount: z.number().int(),
129
+ projectId: z.string(),
130
+ projectName: z.string(),
131
+ priority: z.number().int(),
132
+ description: z.string(),
133
+ isOverdue: z.boolean(),
134
+ });
@@ -1,4 +1,15 @@
1
- import { AttachmentSchema, SectionSchema, LabelSchema, CommentSchema, UserSchema, CurrentUserSchema, TaskSchema, PersonalProjectSchema, WorkspaceProjectSchema, ProductivityStatsSchema, ActivityEventSchema, WorkspaceUserSchema, WorkspaceInvitationSchema, WorkspacePlanDetailsSchema, JoinWorkspaceResultSchema, WorkspaceSchema, MemberActivityInfoSchema, WorkspaceUserTaskSchema, ProjectActivityStatsSchema, ProjectHealthSchema, ProjectHealthContextSchema, ProjectProgressSchema, WorkspaceInsightsSchema, BackupSchema, IdMappingSchema, MovedIdSchema, } from '../types/entities.js';
1
+ import { TaskSchema } from '../types/tasks/types.js';
2
+ import { PersonalProjectSchema, WorkspaceProjectSchema, } from '../types/projects/types.js';
3
+ import { SectionSchema } from '../types/sections/types.js';
4
+ import { LabelSchema } from '../types/labels/types.js';
5
+ import { AttachmentSchema, CommentSchema } from '../types/comments/types.js';
6
+ import { UserSchema, CurrentUserSchema } from '../types/users/types.js';
7
+ import { ProductivityStatsSchema } from '../types/productivity/types.js';
8
+ import { ActivityEventSchema } from '../types/activity/types.js';
9
+ import { WorkspaceUserSchema, WorkspaceInvitationSchema, WorkspacePlanDetailsSchema, JoinWorkspaceResultSchema, WorkspaceSchema, MemberActivityInfoSchema, WorkspaceUserTaskSchema, } from '../types/workspaces/types.js';
10
+ import { ProjectActivityStatsSchema, ProjectHealthSchema, ProjectHealthContextSchema, ProjectProgressSchema, WorkspaceInsightsSchema, } from '../types/insights/types.js';
11
+ import { BackupSchema } from '../types/backups/types.js';
12
+ import { IdMappingSchema, MovedIdSchema } from '../types/id-mappings/types.js';
2
13
  import { FilterSchema, CollaboratorSchema, CollaboratorStateSchema, FolderSchema, NoteSchema, TooltipsSchema, WorkspaceFilterSchema, WorkspaceGoalSchema, CalendarSchema, CalendarAccountSchema, ReminderSchema, LocationReminderSchema, CompletedInfoSchema, ViewOptionsSchema, ProjectViewOptionsDefaultsSchema, UserPlanLimitsSchema, LiveNotificationSchema, SyncWorkspaceSchema, SyncUserSchema, UserSettingsSchema, SuggestionSchema, } from '../types/sync/resources/index.js';
3
14
  function createValidator(schema) {
4
15
  return (input) => schema.parse(input);
@@ -135,7 +135,7 @@ export declare const DEFAULT_COMMENT: {
135
135
  fileType?: string | null | undefined;
136
136
  fileUrl?: string | null | undefined;
137
137
  fileDuration?: number | null | undefined;
138
- uploadState?: "pending" | "completed" | null | undefined;
138
+ uploadState?: "completed" | "pending" | null | undefined;
139
139
  image?: string | null | undefined;
140
140
  imageWidth?: number | null | undefined;
141
141
  imageHeight?: number | null | undefined;
@@ -164,7 +164,7 @@ export declare const INVALID_COMMENT: {
164
164
  fileType?: string | null | undefined;
165
165
  fileUrl?: string | null | undefined;
166
166
  fileDuration?: number | null | undefined;
167
- uploadState?: "pending" | "completed" | null | undefined;
167
+ uploadState?: "completed" | "pending" | null | undefined;
168
168
  image?: string | null | undefined;
169
169
  imageWidth?: number | null | undefined;
170
170
  imageHeight?: number | null | undefined;
@@ -191,7 +191,7 @@ export declare const COMMENT_WITH_OPTIONALS_AS_NULL_TASK: {
191
191
  fileType?: string | null | undefined;
192
192
  fileUrl?: string | null | undefined;
193
193
  fileDuration?: number | null | undefined;
194
- uploadState?: "pending" | "completed" | null | undefined;
194
+ uploadState?: "completed" | "pending" | null | undefined;
195
195
  image?: string | null | undefined;
196
196
  imageWidth?: number | null | undefined;
197
197
  imageHeight?: number | null | undefined;
@@ -218,7 +218,7 @@ export declare const COMMENT_WITH_ATTACHMENT_WITH_OPTIONALS_AS_NULL: {
218
218
  fileType?: string | null | undefined;
219
219
  fileUrl?: string | null | undefined;
220
220
  fileDuration?: number | null | undefined;
221
- uploadState?: "pending" | "completed" | null | undefined;
221
+ uploadState?: "completed" | "pending" | null | undefined;
222
222
  image?: string | null | undefined;
223
223
  imageWidth?: number | null | undefined;
224
224
  imageHeight?: number | null | undefined;
@@ -244,7 +244,7 @@ export declare const COMMENT_WITH_OPTIONALS_AS_NULL_PROJECT: {
244
244
  fileType?: string | null | undefined;
245
245
  fileUrl?: string | null | undefined;
246
246
  fileDuration?: number | null | undefined;
247
- uploadState?: "pending" | "completed" | null | undefined;
247
+ uploadState?: "completed" | "pending" | null | undefined;
248
248
  image?: string | null | undefined;
249
249
  imageWidth?: number | null | undefined;
250
250
  imageHeight?: number | null | undefined;
@@ -1,5 +1,19 @@
1
- import { Attachment, PersonalProject, WorkspaceProject, Label, Section, Comment, Task, CurrentUser, ProductivityStats, WorkspaceInvitation, WorkspacePlanDetails, JoinWorkspaceResult, Workspace, Backup, IdMapping, MovedId, ProjectActivityStats, ProjectHealth, ProjectHealthContext, ProjectProgress, WorkspaceInsights } from './types/entities.js';
2
- import { AddCommentArgs, AddLabelArgs, AddLocationReminderArgs, AddProjectArgs, AddReminderArgs, AddSectionArgs, AddTaskArgs, GetProjectCommentsArgs, GetTaskCommentsArgs, GetTasksArgs, GetTasksByFilterArgs, UpdateCommentArgs, UpdateLabelArgs, UpdateLocationReminderArgs, UpdateProjectArgs, UpdateReminderArgs, UpdateSectionArgs, UpdateTaskArgs, QuickAddTaskArgs, GetSharedLabelsArgs, RenameSharedLabelArgs, RemoveSharedLabelArgs, GetProjectsArgs, SearchProjectsArgs, GetProjectCollaboratorsArgs, GetLabelsArgs, SearchLabelsArgs, GetLabelsResponse, GetTasksResponse, GetProjectsResponse, GetProjectCollaboratorsResponse, GetSectionsArgs, SearchSectionsArgs, GetSectionsResponse, GetSharedLabelsResponse, GetCommentsResponse, type MoveTaskArgs, GetCompletedTasksByCompletionDateArgs, GetCompletedTasksByDueDateArgs, GetCompletedTasksResponse, GetArchivedProjectsArgs, GetArchivedProjectsResponse, SearchCompletedTasksArgs, GetActivityLogsArgs, GetActivityLogsResponse, UploadFileArgs, DeleteUploadArgs, GetWorkspaceInvitationsArgs, DeleteWorkspaceInvitationArgs, WorkspaceInvitationActionArgs, JoinWorkspaceArgs, WorkspaceLogoArgs, GetWorkspacePlanDetailsArgs, GetWorkspaceUsersArgs, GetWorkspaceUsersResponse, GetWorkspaceProjectsArgs, WorkspaceInvitationsResponse, AllWorkspaceInvitationsResponse, WorkspaceLogoResponse, MoveProjectToWorkspaceArgs, MoveProjectToPersonalArgs, GetArchivedProjectsCountArgs, GetArchivedProjectsCountResponse, GetProjectPermissionsResponse, GetFullProjectArgs, GetFullProjectResponse, AddWorkspaceArgs, UpdateWorkspaceArgs, GetWorkspaceMembersActivityArgs, GetWorkspaceMembersActivityResponse, GetWorkspaceUserTasksArgs, GetWorkspaceUserTasksResponse, InviteWorkspaceUsersArgs, InviteWorkspaceUsersResponse, UpdateWorkspaceUserArgs, RemoveWorkspaceUserArgs, GetProjectActivityStatsArgs, GetWorkspaceInsightsArgs, GetRemindersArgs, GetRemindersResponse, GetLocationRemindersArgs, GetLocationRemindersResponse, GetAllCompletedTasksArgs, GetAllCompletedTasksResponse, ExportTemplateFileArgs, ExportTemplateUrlArgs, ExportTemplateUrlResponse, CreateProjectFromTemplateArgs, CreateProjectFromTemplateResponse, ImportTemplateIntoProjectArgs, ImportTemplateFromIdArgs, ImportTemplateResponse, GetBackupsArgs, DownloadBackupArgs, GetOrCreateEmailArgs, GetOrCreateEmailResponse, DisableEmailArgs, GetIdMappingsArgs, GetMovedIdsArgs } from './types/requests.js';
1
+ import { Task, AddTaskArgs, GetTasksArgs, GetTasksByFilterArgs, UpdateTaskArgs, QuickAddTaskArgs, type MoveTaskArgs, GetCompletedTasksByCompletionDateArgs, GetCompletedTasksByDueDateArgs, GetCompletedTasksResponse, SearchCompletedTasksArgs, GetTasksResponse, GetAllCompletedTasksArgs, GetAllCompletedTasksResponse } from './types/tasks/index.js';
2
+ import { PersonalProject, WorkspaceProject, AddProjectArgs, UpdateProjectArgs, GetProjectsArgs, SearchProjectsArgs, GetProjectCollaboratorsArgs, GetProjectsResponse, GetProjectCollaboratorsResponse, GetArchivedProjectsArgs, GetArchivedProjectsResponse, MoveProjectToWorkspaceArgs, MoveProjectToPersonalArgs, GetArchivedProjectsCountArgs, GetArchivedProjectsCountResponse, GetProjectPermissionsResponse, GetFullProjectArgs, GetFullProjectResponse } from './types/projects/index.js';
3
+ import { Section, AddSectionArgs, UpdateSectionArgs, GetSectionsArgs, SearchSectionsArgs, GetSectionsResponse } from './types/sections/index.js';
4
+ import { Label, AddLabelArgs, UpdateLabelArgs, GetLabelsArgs, SearchLabelsArgs, GetLabelsResponse, GetSharedLabelsArgs, GetSharedLabelsResponse, RenameSharedLabelArgs, RemoveSharedLabelArgs } from './types/labels/index.js';
5
+ import { Attachment, Comment, AddCommentArgs, UpdateCommentArgs, GetProjectCommentsArgs, GetTaskCommentsArgs, GetCommentsResponse } from './types/comments/index.js';
6
+ import { AddReminderArgs, UpdateReminderArgs, AddLocationReminderArgs, UpdateLocationReminderArgs, GetRemindersArgs, GetRemindersResponse, GetLocationRemindersArgs, GetLocationRemindersResponse } from './types/reminders/index.js';
7
+ import { CurrentUser } from './types/users/index.js';
8
+ import { ProductivityStats } from './types/productivity/index.js';
9
+ import { GetActivityLogsArgs, GetActivityLogsResponse } from './types/activity/index.js';
10
+ import { WorkspaceInvitation, WorkspacePlanDetails, JoinWorkspaceResult, Workspace, AddWorkspaceArgs, UpdateWorkspaceArgs, GetWorkspaceMembersActivityArgs, GetWorkspaceMembersActivityResponse, GetWorkspaceUserTasksArgs, GetWorkspaceUserTasksResponse, InviteWorkspaceUsersArgs, InviteWorkspaceUsersResponse, UpdateWorkspaceUserArgs, RemoveWorkspaceUserArgs, GetWorkspaceInvitationsArgs, DeleteWorkspaceInvitationArgs, WorkspaceInvitationActionArgs, JoinWorkspaceArgs, WorkspaceLogoArgs, GetWorkspacePlanDetailsArgs, GetWorkspaceUsersArgs, GetWorkspaceUsersResponse, GetWorkspaceProjectsArgs, WorkspaceInvitationsResponse, AllWorkspaceInvitationsResponse, WorkspaceLogoResponse } from './types/workspaces/index.js';
11
+ import { ProjectActivityStats, ProjectHealth, ProjectHealthContext, ProjectProgress, WorkspaceInsights, GetProjectActivityStatsArgs, GetWorkspaceInsightsArgs } from './types/insights/index.js';
12
+ import { Backup, GetBackupsArgs, DownloadBackupArgs } from './types/backups/index.js';
13
+ import { IdMapping, MovedId, GetIdMappingsArgs, GetMovedIdsArgs } from './types/id-mappings/index.js';
14
+ import { GetOrCreateEmailArgs, GetOrCreateEmailResponse, DisableEmailArgs } from './types/emails/index.js';
15
+ import { UploadFileArgs, DeleteUploadArgs } from './types/uploads/index.js';
16
+ import { ExportTemplateFileArgs, ExportTemplateUrlArgs, ExportTemplateUrlResponse, CreateProjectFromTemplateArgs, CreateProjectFromTemplateResponse, ImportTemplateIntoProjectArgs, ImportTemplateFromIdArgs, ImportTemplateResponse } from './types/templates/index.js';
3
17
  import { CustomFetch, CustomFetchResponse } from './types/http.js';
4
18
  import type { Reminder } from './types/index.js';
5
19
  import { type SyncResponse, type SyncRequest } from './types/sync/index.js';
@@ -0,0 +1,2 @@
1
+ export * from './types.js';
2
+ export * from './requests.js';
@@ -0,0 +1,85 @@
1
+ import type { ActivityEvent, ActivityObjectEventType } from './types.js';
2
+ /**
3
+ * Common arguments for retrieving activity logs (excluding filter-type params).
4
+ */
5
+ type GetActivityLogsArgsCommon = {
6
+ /**
7
+ * Filter by the ID of a specific object.
8
+ */
9
+ objectId?: string;
10
+ /**
11
+ * Filter events by parent project ID.
12
+ */
13
+ parentProjectId?: string;
14
+ /**
15
+ * Filter events by parent task ID.
16
+ */
17
+ parentItemId?: string;
18
+ /**
19
+ * When true, includes the parent object data in the response.
20
+ */
21
+ includeParentObject?: boolean;
22
+ /**
23
+ * When true, includes child object data in the response.
24
+ */
25
+ includeChildObjects?: boolean;
26
+ /**
27
+ * Filter by the user ID who initiated the event.
28
+ */
29
+ initiatorId?: string;
30
+ /**
31
+ * When true, filters for events with no initiator (system-generated events).
32
+ * When false, filters for events with an initiator.
33
+ * When null or undefined, no filtering on initiator is applied.
34
+ */
35
+ initiatorIdNull?: boolean | null;
36
+ /**
37
+ * When true, ensures the last state of objects is included in the response.
38
+ */
39
+ ensureLastState?: boolean;
40
+ /**
41
+ * When true, includes comment annotations in the response.
42
+ */
43
+ annotateNotes?: boolean;
44
+ /**
45
+ * When true, includes parent object annotations in the response.
46
+ */
47
+ annotateParents?: boolean;
48
+ /**
49
+ * Pagination cursor for retrieving the next page of results.
50
+ */
51
+ cursor?: string | null;
52
+ /**
53
+ * Maximum number of results to return per page.
54
+ */
55
+ limit?: number;
56
+ /**
57
+ * Start date for filtering events (inclusive). Replaces deprecated `since`.
58
+ * Accepts a Date object or YYYY-MM-DD string.
59
+ */
60
+ dateFrom?: Date | string;
61
+ /**
62
+ * End date for filtering events (inclusive). Replaces deprecated `until`.
63
+ * Accepts a Date object or YYYY-MM-DD string.
64
+ */
65
+ dateTo?: Date | string;
66
+ };
67
+ export type GetActivityLogsArgs = GetActivityLogsArgsCommon & {
68
+ objectEventTypes?: ActivityObjectEventType | ActivityObjectEventType[];
69
+ /** @removed Use `objectEventTypes` instead. */
70
+ objectType?: never;
71
+ /** @removed Use `objectEventTypes` instead. */
72
+ eventType?: never;
73
+ /** @removed Use `dateFrom` instead. */
74
+ since?: never;
75
+ /** @removed Use `dateTo` instead. */
76
+ until?: never;
77
+ };
78
+ /**
79
+ * Response from retrieving activity logs.
80
+ */
81
+ export type GetActivityLogsResponse = {
82
+ results: ActivityEvent[];
83
+ nextCursor: string | null;
84
+ };
85
+ export {};
@@ -0,0 +1,49 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Type hints for known object types. Accepts any string for forward compatibility.
4
+ */
5
+ export type ActivityObjectType = 'task' | 'comment' | 'project' | (string & Record<string, never>);
6
+ /**
7
+ * Type hints for known event types. Accepts any string for forward compatibility.
8
+ */
9
+ export type ActivityEventType = 'added' | 'updated' | 'deleted' | 'completed' | 'uncompleted' | 'archived' | 'unarchived' | 'shared' | 'left' | (string & Record<string, never>);
10
+ type ModernActivityObjectType = 'task' | 'comment' | 'project' | (string & Record<string, never>);
11
+ /**
12
+ * Combined object:event filter string for the `objectEventTypes` parameter of `getActivityLogs`.
13
+ *
14
+ * Uses modern object type names (`task`, `comment`) rather than legacy API names (`item`, `note`).
15
+ * Either part may be omitted:
16
+ * - `'task:added'` — task additions only
17
+ * - `'task:'` — all events for tasks
18
+ * - `':deleted'` — all deleted events across all object types
19
+ *
20
+ * The final `string & Record<string, never>` member allows any arbitrary string
21
+ * to be passed for forward compatibility, while still providing autocomplete for
22
+ * the known combinations above.
23
+ */
24
+ export type ActivityObjectEventType = `${ModernActivityObjectType}:${ActivityEventType}` | `${ModernActivityObjectType}:` | `:${ActivityEventType}` | (string & Record<string, never>);
25
+ /**
26
+ * Flexible object containing event-specific data.
27
+ * Uses z.record to accept any properties for forward compatibility.
28
+ */
29
+ export declare const ActivityEventExtraDataSchema: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodAny>>;
30
+ export type ActivityEventExtraData = z.infer<typeof ActivityEventExtraDataSchema>;
31
+ /**
32
+ * Activity log event schema. Accepts unknown fields for forward compatibility.
33
+ */
34
+ export declare const ActivityEventSchema: z.ZodObject<{
35
+ objectType: z.ZodString;
36
+ objectId: z.ZodString;
37
+ eventType: z.ZodString;
38
+ eventDate: z.ZodString;
39
+ id: z.ZodNullable<z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>, z.ZodTransform<string, string | number>>>;
40
+ parentProjectId: z.ZodNullable<z.ZodString>;
41
+ parentItemId: z.ZodNullable<z.ZodString>;
42
+ initiatorId: z.ZodNullable<z.ZodString>;
43
+ extraData: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodAny>>;
44
+ }, z.core.$catchall<z.ZodAny>>;
45
+ /**
46
+ * Represents an activity log event in Todoist.
47
+ */
48
+ export type ActivityEvent = z.infer<typeof ActivityEventSchema>;
49
+ export {};
@@ -0,0 +1,2 @@
1
+ export * from './types.js';
2
+ export * from './requests.js';
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Arguments for listing backups.
3
+ * @see https://developer.todoist.com/api/v1/#tag/Backups/operation/get_backups_api_v1_backups_get
4
+ */
5
+ export type GetBackupsArgs = {
6
+ /** MFA token if required. Not needed when using an OAuth token with the `backups:read` scope. */
7
+ mfaToken?: string | null;
8
+ };
9
+ /**
10
+ * Arguments for downloading a backup.
11
+ * @see https://developer.todoist.com/api/v1/#tag/Backups/operation/download_backup_api_v1_backups_download_get
12
+ */
13
+ export type DownloadBackupArgs = {
14
+ /** The backup file URL. */
15
+ file: string;
16
+ };
@@ -0,0 +1,7 @@
1
+ import { z } from 'zod';
2
+ export declare const BackupSchema: z.ZodObject<{
3
+ version: z.ZodString;
4
+ url: z.ZodString;
5
+ }, z.core.$strip>;
6
+ /** Represents a backup snapshot. */
7
+ export type Backup = z.infer<typeof BackupSchema>;
@@ -0,0 +1,2 @@
1
+ export * from './types.js';
2
+ export * from './requests.js';
@@ -0,0 +1,64 @@
1
+ import type { RequireExactlyOne } from 'type-fest';
2
+ import type { Comment } from './types.js';
3
+ /**
4
+ * Arguments for retrieving comments.
5
+ * @see https://developer.todoist.com/api/v1/#tag/Comments/operation/get_comments_api_v1_comments_get
6
+ */
7
+ export type GetCommentsArgs = {
8
+ taskId: string;
9
+ projectId?: never;
10
+ cursor?: string | null;
11
+ limit?: number;
12
+ };
13
+ /**
14
+ * Arguments for retrieving task comments.
15
+ * @see https://developer.todoist.com/api/v1/#tag/Comments/operation/get_comments_api_v1_comments_get
16
+ */
17
+ export type GetTaskCommentsArgs = {
18
+ taskId: string;
19
+ projectId?: never;
20
+ cursor?: string | null;
21
+ limit?: number;
22
+ };
23
+ /**
24
+ * Arguments for retrieving project comments.
25
+ * @see https://developer.todoist.com/api/v1/#tag/Comments/operation/get_comments_api_v1_comments_get
26
+ */
27
+ export type GetProjectCommentsArgs = {
28
+ projectId: string;
29
+ taskId?: never;
30
+ cursor?: string | null;
31
+ limit?: number;
32
+ };
33
+ /**
34
+ * Response from retrieving comments.
35
+ * @see https://developer.todoist.com/api/v1/#tag/Comments/operation/get_comments_api_v1_comments_get
36
+ */
37
+ export type GetCommentsResponse = {
38
+ results: Comment[];
39
+ nextCursor: string | null;
40
+ };
41
+ /**
42
+ * Arguments for creating a new comment.
43
+ * @see https://developer.todoist.com/api/v1/#tag/Comments/operation/create_comment_api_v1_comments_post
44
+ */
45
+ export type AddCommentArgs = {
46
+ content: string;
47
+ attachment?: {
48
+ fileName?: string;
49
+ fileUrl: string;
50
+ fileType?: string;
51
+ resourceType?: string;
52
+ } | null;
53
+ uidsToNotify?: string[];
54
+ } & RequireExactlyOne<{
55
+ taskId?: string;
56
+ projectId?: string;
57
+ }>;
58
+ /**
59
+ * Arguments for updating a comment.
60
+ * @see https://developer.todoist.com/api/v1/#tag/Comments/operation/update_comment_api_v1_comments__comment_id__post
61
+ */
62
+ export type UpdateCommentArgs = {
63
+ content: string;
64
+ };
@@ -0,0 +1,141 @@
1
+ import { z } from 'zod';
2
+ /** Available file attachment upload states. */
3
+ export declare const UPLOAD_STATES: readonly ["pending", "completed"];
4
+ /** Upload state of a file attachment. */
5
+ export type UploadState = (typeof UPLOAD_STATES)[number];
6
+ export declare const AttachmentSchema: z.ZodObject<{
7
+ resourceType: z.ZodString;
8
+ fileName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
9
+ fileSize: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
10
+ fileType: z.ZodOptional<z.ZodNullable<z.ZodString>>;
11
+ fileUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
12
+ fileDuration: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
13
+ uploadState: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
14
+ completed: "completed";
15
+ pending: "pending";
16
+ }>>>;
17
+ image: z.ZodOptional<z.ZodNullable<z.ZodString>>;
18
+ imageWidth: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
19
+ imageHeight: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
20
+ url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
21
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
22
+ }, z.core.$strip>;
23
+ /**
24
+ * Represents a file attachment in a comment.
25
+ * @see https://developer.todoist.com/api/v1/#tag/Sync/Comments/File-Attachments
26
+ */
27
+ export type Attachment = z.infer<typeof AttachmentSchema>;
28
+ export declare const RawCommentSchema: z.ZodObject<{
29
+ id: z.ZodString;
30
+ itemId: z.ZodOptional<z.ZodString>;
31
+ projectId: z.ZodOptional<z.ZodString>;
32
+ content: z.ZodString;
33
+ postedAt: z.ZodString;
34
+ fileAttachment: z.ZodNullable<z.ZodObject<{
35
+ resourceType: z.ZodString;
36
+ fileName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
37
+ fileSize: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
38
+ fileType: z.ZodOptional<z.ZodNullable<z.ZodString>>;
39
+ fileUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
40
+ fileDuration: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
41
+ uploadState: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
42
+ completed: "completed";
43
+ pending: "pending";
44
+ }>>>;
45
+ image: z.ZodOptional<z.ZodNullable<z.ZodString>>;
46
+ imageWidth: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
47
+ imageHeight: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
48
+ url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
49
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
50
+ }, z.core.$strip>>;
51
+ postedUid: z.ZodString;
52
+ uidsToNotify: z.ZodNullable<z.ZodArray<z.ZodString>>;
53
+ reactions: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
54
+ isDeleted: z.ZodBoolean;
55
+ }, z.core.$strip>;
56
+ /**
57
+ * Represents a raw comment response from the API.
58
+ * @see https://developer.todoist.com/api/v1/#tag/Comments
59
+ */
60
+ export type RawComment = z.infer<typeof RawCommentSchema>;
61
+ export declare const CommentSchema: z.ZodPipe<z.ZodObject<{
62
+ id: z.ZodString;
63
+ itemId: z.ZodOptional<z.ZodString>;
64
+ projectId: z.ZodOptional<z.ZodString>;
65
+ content: z.ZodString;
66
+ postedAt: z.ZodString;
67
+ fileAttachment: z.ZodNullable<z.ZodObject<{
68
+ resourceType: z.ZodString;
69
+ fileName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
70
+ fileSize: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
71
+ fileType: z.ZodOptional<z.ZodNullable<z.ZodString>>;
72
+ fileUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
73
+ fileDuration: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
74
+ uploadState: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
75
+ completed: "completed";
76
+ pending: "pending";
77
+ }>>>;
78
+ image: z.ZodOptional<z.ZodNullable<z.ZodString>>;
79
+ imageWidth: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
80
+ imageHeight: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
81
+ url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
82
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
83
+ }, z.core.$strip>>;
84
+ postedUid: z.ZodString;
85
+ uidsToNotify: z.ZodNullable<z.ZodArray<z.ZodString>>;
86
+ reactions: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
87
+ isDeleted: z.ZodBoolean;
88
+ }, z.core.$strip>, z.ZodTransform<{
89
+ taskId: string | undefined;
90
+ id: string;
91
+ content: string;
92
+ postedAt: string;
93
+ fileAttachment: {
94
+ resourceType: string;
95
+ fileName?: string | null | undefined;
96
+ fileSize?: number | null | undefined;
97
+ fileType?: string | null | undefined;
98
+ fileUrl?: string | null | undefined;
99
+ fileDuration?: number | null | undefined;
100
+ uploadState?: "completed" | "pending" | null | undefined;
101
+ image?: string | null | undefined;
102
+ imageWidth?: number | null | undefined;
103
+ imageHeight?: number | null | undefined;
104
+ url?: string | null | undefined;
105
+ title?: string | null | undefined;
106
+ } | null;
107
+ postedUid: string;
108
+ uidsToNotify: string[] | null;
109
+ reactions: Record<string, string[]> | null;
110
+ isDeleted: boolean;
111
+ projectId?: string | undefined;
112
+ }, {
113
+ id: string;
114
+ content: string;
115
+ postedAt: string;
116
+ fileAttachment: {
117
+ resourceType: string;
118
+ fileName?: string | null | undefined;
119
+ fileSize?: number | null | undefined;
120
+ fileType?: string | null | undefined;
121
+ fileUrl?: string | null | undefined;
122
+ fileDuration?: number | null | undefined;
123
+ uploadState?: "completed" | "pending" | null | undefined;
124
+ image?: string | null | undefined;
125
+ imageWidth?: number | null | undefined;
126
+ imageHeight?: number | null | undefined;
127
+ url?: string | null | undefined;
128
+ title?: string | null | undefined;
129
+ } | null;
130
+ postedUid: string;
131
+ uidsToNotify: string[] | null;
132
+ reactions: Record<string, string[]> | null;
133
+ isDeleted: boolean;
134
+ itemId?: string | undefined;
135
+ projectId?: string | undefined;
136
+ }>>;
137
+ /**
138
+ * Represents a comment in Todoist.
139
+ * @see https://developer.todoist.com/api/v1/#tag/Comments
140
+ */
141
+ export type Comment = z.infer<typeof CommentSchema>;