@doist/todoist-api-typescript 6.5.0 → 6.6.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 (144) hide show
  1. package/dist/cjs/todoist-api.js +32 -4
  2. package/dist/cjs/types/index.js +1 -0
  3. package/dist/cjs/types/sync/commands/calendars.js +2 -0
  4. package/dist/cjs/types/sync/commands/filters.js +2 -0
  5. package/dist/cjs/types/sync/commands/folders.js +2 -0
  6. package/dist/cjs/types/sync/commands/index.js +35 -0
  7. package/dist/cjs/types/sync/commands/labels.js +2 -0
  8. package/dist/cjs/types/sync/commands/notes.js +2 -0
  9. package/dist/cjs/types/sync/commands/notifications.js +2 -0
  10. package/dist/cjs/types/sync/commands/others.js +2 -0
  11. package/dist/cjs/types/sync/commands/project-view-options.js +2 -0
  12. package/dist/cjs/types/sync/commands/projects.js +2 -0
  13. package/dist/cjs/types/sync/commands/reminders.js +2 -0
  14. package/dist/cjs/types/sync/commands/sections.js +2 -0
  15. package/dist/cjs/types/sync/commands/shared.js +5 -0
  16. package/dist/cjs/types/sync/commands/sharing.js +2 -0
  17. package/dist/cjs/types/sync/commands/tasks.js +2 -0
  18. package/dist/cjs/types/sync/commands/view-options.js +2 -0
  19. package/dist/cjs/types/sync/commands/workspace-filters.js +2 -0
  20. package/dist/cjs/types/sync/commands/workspace-goals.js +2 -0
  21. package/dist/cjs/types/sync/commands/workspaces.js +2 -0
  22. package/dist/cjs/types/sync/index.js +21 -0
  23. package/dist/cjs/types/sync/request.js +2 -0
  24. package/dist/cjs/types/{sync.js → sync/resource-types.js} +9 -0
  25. package/dist/cjs/types/sync/resources/calendars.js +27 -0
  26. package/dist/cjs/types/sync/resources/collaborators.js +23 -0
  27. package/dist/cjs/types/sync/resources/completed-info.js +30 -0
  28. package/dist/cjs/types/sync/resources/filters.js +16 -0
  29. package/dist/cjs/types/sync/resources/folders.js +14 -0
  30. package/dist/cjs/types/sync/resources/index.js +33 -0
  31. package/dist/cjs/types/sync/resources/live-notifications.js +28 -0
  32. package/dist/cjs/types/sync/resources/notes.js +23 -0
  33. package/dist/cjs/types/sync/resources/reminders.js +34 -0
  34. package/dist/cjs/types/sync/resources/suggestions.js +38 -0
  35. package/dist/cjs/types/sync/resources/tooltips.js +10 -0
  36. package/dist/cjs/types/sync/resources/user-plan-limits.js +24 -0
  37. package/dist/cjs/types/sync/resources/user-settings.js +42 -0
  38. package/dist/cjs/types/sync/resources/user.js +123 -0
  39. package/dist/cjs/types/sync/resources/view-options.js +75 -0
  40. package/dist/cjs/types/sync/resources/workspace-filters.js +21 -0
  41. package/dist/cjs/types/sync/resources/workspace-goals.js +32 -0
  42. package/dist/cjs/types/sync/resources/workspaces.js +49 -0
  43. package/dist/cjs/types/sync/response.js +2 -0
  44. package/dist/cjs/utils/index.js +3 -1
  45. package/dist/cjs/utils/multipart-upload.js +93 -42
  46. package/dist/cjs/utils/sync-helpers.js +22 -0
  47. package/dist/cjs/utils/validators.js +69 -88
  48. package/dist/esm/todoist-api.js +32 -4
  49. package/dist/esm/types/index.js +1 -0
  50. package/dist/esm/types/sync/commands/calendars.js +1 -0
  51. package/dist/esm/types/sync/commands/filters.js +1 -0
  52. package/dist/esm/types/sync/commands/folders.js +1 -0
  53. package/dist/esm/types/sync/commands/index.js +19 -0
  54. package/dist/esm/types/sync/commands/labels.js +1 -0
  55. package/dist/esm/types/sync/commands/notes.js +1 -0
  56. package/dist/esm/types/sync/commands/notifications.js +1 -0
  57. package/dist/esm/types/sync/commands/others.js +1 -0
  58. package/dist/esm/types/sync/commands/project-view-options.js +1 -0
  59. package/dist/esm/types/sync/commands/projects.js +1 -0
  60. package/dist/esm/types/sync/commands/reminders.js +1 -0
  61. package/dist/esm/types/sync/commands/sections.js +1 -0
  62. package/dist/esm/types/sync/commands/shared.js +4 -0
  63. package/dist/esm/types/sync/commands/sharing.js +1 -0
  64. package/dist/esm/types/sync/commands/tasks.js +1 -0
  65. package/dist/esm/types/sync/commands/view-options.js +1 -0
  66. package/dist/esm/types/sync/commands/workspace-filters.js +1 -0
  67. package/dist/esm/types/sync/commands/workspace-goals.js +1 -0
  68. package/dist/esm/types/sync/commands/workspaces.js +1 -0
  69. package/dist/esm/types/sync/index.js +5 -0
  70. package/dist/esm/types/sync/request.js +1 -0
  71. package/dist/esm/types/{sync.js → sync/resource-types.js} +9 -0
  72. package/dist/esm/types/sync/resources/calendars.js +24 -0
  73. package/dist/esm/types/sync/resources/collaborators.js +20 -0
  74. package/dist/esm/types/sync/resources/completed-info.js +27 -0
  75. package/dist/esm/types/sync/resources/filters.js +13 -0
  76. package/dist/esm/types/sync/resources/folders.js +11 -0
  77. package/dist/esm/types/sync/resources/index.js +17 -0
  78. package/dist/esm/types/sync/resources/live-notifications.js +25 -0
  79. package/dist/esm/types/sync/resources/notes.js +20 -0
  80. package/dist/esm/types/sync/resources/reminders.js +31 -0
  81. package/dist/esm/types/sync/resources/suggestions.js +35 -0
  82. package/dist/esm/types/sync/resources/tooltips.js +7 -0
  83. package/dist/esm/types/sync/resources/user-plan-limits.js +21 -0
  84. package/dist/esm/types/sync/resources/user-settings.js +39 -0
  85. package/dist/esm/types/sync/resources/user.js +120 -0
  86. package/dist/esm/types/sync/resources/view-options.js +72 -0
  87. package/dist/esm/types/sync/resources/workspace-filters.js +18 -0
  88. package/dist/esm/types/sync/resources/workspace-goals.js +29 -0
  89. package/dist/esm/types/sync/resources/workspaces.js +46 -0
  90. package/dist/esm/types/sync/response.js +1 -0
  91. package/dist/esm/utils/index.js +1 -0
  92. package/dist/esm/utils/multipart-upload.js +60 -39
  93. package/dist/esm/utils/sync-helpers.js +19 -0
  94. package/dist/esm/utils/validators.js +65 -64
  95. package/dist/types/todoist-api.d.ts +26 -0
  96. package/dist/types/types/index.d.ts +1 -0
  97. package/dist/types/types/requests.d.ts +3 -3
  98. package/dist/types/types/sync/commands/calendars.d.ts +14 -0
  99. package/dist/types/types/sync/commands/filters.d.ts +21 -0
  100. package/dist/types/types/sync/commands/folders.d.ts +18 -0
  101. package/dist/types/types/sync/commands/index.d.ts +172 -0
  102. package/dist/types/types/sync/commands/labels.d.ts +27 -0
  103. package/dist/types/types/sync/commands/notes.d.ts +27 -0
  104. package/dist/types/types/sync/commands/notifications.d.ts +10 -0
  105. package/dist/types/types/sync/commands/others.d.ts +14 -0
  106. package/dist/types/types/sync/commands/project-view-options.d.ts +14 -0
  107. package/dist/types/types/sync/commands/projects.d.ts +88 -0
  108. package/dist/types/types/sync/commands/reminders.d.ts +27 -0
  109. package/dist/types/types/sync/commands/sections.d.ts +31 -0
  110. package/dist/types/types/sync/commands/shared.d.ts +46 -0
  111. package/dist/types/types/sync/commands/sharing.d.ts +16 -0
  112. package/dist/types/types/sync/commands/tasks.d.ts +78 -0
  113. package/dist/types/types/sync/commands/view-options.d.ts +19 -0
  114. package/dist/types/types/sync/commands/workspace-filters.d.ts +22 -0
  115. package/dist/types/types/sync/commands/workspace-goals.d.ts +24 -0
  116. package/dist/types/types/sync/commands/workspaces.d.ts +79 -0
  117. package/dist/types/types/sync/index.d.ts +5 -0
  118. package/dist/types/types/sync/request.d.ts +7 -0
  119. package/dist/types/types/sync/resource-types.d.ts +5 -0
  120. package/dist/types/types/sync/resources/calendars.d.ts +30 -0
  121. package/dist/types/types/sync/resources/collaborators.d.ts +24 -0
  122. package/dist/types/types/sync/resources/completed-info.d.ts +33 -0
  123. package/dist/types/types/sync/resources/filters.d.ts +12 -0
  124. package/dist/types/types/sync/resources/folders.d.ts +10 -0
  125. package/dist/types/types/sync/resources/index.d.ts +17 -0
  126. package/dist/types/types/sync/resources/live-notifications.d.ts +23 -0
  127. package/dist/types/types/sync/resources/notes.d.ts +34 -0
  128. package/dist/types/types/sync/resources/reminders.d.ts +101 -0
  129. package/dist/types/types/sync/resources/suggestions.d.ts +54 -0
  130. package/dist/types/types/sync/resources/tooltips.d.ts +6 -0
  131. package/dist/types/types/sync/resources/user-plan-limits.d.ts +41 -0
  132. package/dist/types/types/sync/resources/user-settings.d.ts +32 -0
  133. package/dist/types/types/sync/resources/user.d.ts +104 -0
  134. package/dist/types/types/sync/resources/view-options.d.ts +94 -0
  135. package/dist/types/types/sync/resources/workspace-filters.d.ts +17 -0
  136. package/dist/types/types/sync/resources/workspace-goals.d.ts +29 -0
  137. package/dist/types/types/sync/resources/workspaces.d.ts +52 -0
  138. package/dist/types/types/sync/response.d.ts +47 -0
  139. package/dist/types/utils/index.d.ts +1 -0
  140. package/dist/types/utils/multipart-upload.d.ts +5 -3
  141. package/dist/types/utils/sync-helpers.d.ts +17 -0
  142. package/dist/types/utils/validators.d.ts +1163 -23
  143. package/package.json +8 -8
  144. package/dist/types/types/sync.d.ts +0 -30
@@ -0,0 +1,32 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Sync API user settings resource.
4
+ */
5
+ export declare const UserSettingsSchema: z.ZodObject<{
6
+ completedSoundDesktop: z.ZodBoolean;
7
+ completedSoundMobile: z.ZodBoolean;
8
+ debugLogSendingEnabledUntil: z.ZodNullable<z.ZodString>;
9
+ legacyPricing: z.ZodBoolean;
10
+ navigation: z.ZodObject<{
11
+ countsShown: z.ZodBoolean;
12
+ features: z.ZodArray<z.ZodObject<{
13
+ name: z.ZodString;
14
+ shown: z.ZodBoolean;
15
+ }, z.core.$strip>>;
16
+ }, z.core.$loose>;
17
+ reminderDesktop: z.ZodBoolean;
18
+ reminderEmail: z.ZodBoolean;
19
+ reminderPush: z.ZodBoolean;
20
+ resetRecurringSubtasks: z.ZodBoolean;
21
+ aiEmailAssist: z.ZodBoolean;
22
+ theme: z.ZodOptional<z.ZodNullable<z.ZodString>>;
23
+ syncTheme: z.ZodOptional<z.ZodBoolean>;
24
+ quickAdd: z.ZodObject<{
25
+ labelsShown: z.ZodBoolean;
26
+ features: z.ZodArray<z.ZodObject<{
27
+ name: z.ZodString;
28
+ shown: z.ZodBoolean;
29
+ }, z.core.$strip>>;
30
+ }, z.core.$loose>;
31
+ }, z.core.$loose>;
32
+ export type UserSettings = z.infer<typeof UserSettingsSchema>;
@@ -0,0 +1,104 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Sync API user resource.
4
+ *
5
+ * This is a superset of the REST `CurrentUserSchema` — the Sync API returns
6
+ * many additional fields for features, onboarding state, and account details.
7
+ */
8
+ export declare const SyncUserSchema: z.ZodObject<{
9
+ id: z.ZodString;
10
+ email: z.ZodString;
11
+ fullName: z.ZodString;
12
+ activatedUser: z.ZodBoolean;
13
+ autoReminder: z.ZodNumber;
14
+ avatarBig: z.ZodOptional<z.ZodString>;
15
+ avatarMedium: z.ZodOptional<z.ZodString>;
16
+ avatarS640: z.ZodOptional<z.ZodString>;
17
+ avatarSmall: z.ZodOptional<z.ZodString>;
18
+ businessAccountId: z.ZodNullable<z.ZodString>;
19
+ dailyGoal: z.ZodNumber;
20
+ dateFormat: z.ZodNumber;
21
+ dateistLang: z.ZodNullable<z.ZodString>;
22
+ daysOff: z.ZodArray<z.ZodNumber>;
23
+ featureIdentifier: z.ZodString;
24
+ features: z.ZodObject<{
25
+ karmaDisabled: z.ZodBoolean;
26
+ restriction: z.ZodNumber;
27
+ karmaVacation: z.ZodBoolean;
28
+ dateistLang: z.ZodAny;
29
+ beta: z.ZodUnion<readonly [z.ZodLiteral<0>, z.ZodLiteral<1>]>;
30
+ hasPushReminders: z.ZodBoolean;
31
+ dateistInlineDisabled: z.ZodBoolean;
32
+ autoInviteDisabled: z.ZodOptional<z.ZodBoolean>;
33
+ goldTheme: z.ZodOptional<z.ZodBoolean>;
34
+ migratedFromTdb: z.ZodOptional<z.ZodBoolean>;
35
+ }, z.core.$loose>;
36
+ freeTrailExpires: z.ZodOptional<z.ZodString>;
37
+ hasMagicNumber: z.ZodBoolean;
38
+ hasPassword: z.ZodBoolean;
39
+ hasStartedATrial: z.ZodOptional<z.ZodBoolean>;
40
+ imageId: z.ZodNullable<z.ZodString>;
41
+ inboxProjectId: z.ZodString;
42
+ isCelebrationsEnabled: z.ZodBoolean;
43
+ isPremium: z.ZodBoolean;
44
+ joinableWorkspace: z.ZodNullable<z.ZodObject<{
45
+ workspaceId: z.ZodString;
46
+ workspaceName: z.ZodString;
47
+ memberCount: z.ZodNumber;
48
+ }, z.core.$loose>>;
49
+ joinedAt: z.ZodString;
50
+ gettingStartedGuideProjects: z.ZodNullable<z.ZodArray<z.ZodObject<{
51
+ onboardingUseCase: z.ZodString;
52
+ projectId: z.ZodString;
53
+ completed: z.ZodBoolean;
54
+ closed: z.ZodBoolean;
55
+ }, z.core.$loose>>>;
56
+ karma: z.ZodNumber;
57
+ karmaTrend: z.ZodString;
58
+ lang: z.ZodString;
59
+ mfaEnabled: z.ZodOptional<z.ZodBoolean>;
60
+ mobileHost: z.ZodNullable<z.ZodString>;
61
+ mobileNumber: z.ZodNullable<z.ZodString>;
62
+ nextWeek: z.ZodNumber;
63
+ onboardingLevel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
64
+ onboardingRole: z.ZodOptional<z.ZodNullable<z.ZodString>>;
65
+ onboardingPersona: z.ZodOptional<z.ZodNullable<z.ZodString>>;
66
+ onboardingInitiated: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
67
+ onboardingCompleted: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
68
+ onboardingSkipped: z.ZodOptional<z.ZodBoolean>;
69
+ onboardingTeamMode: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
70
+ onboardingUseCases: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
71
+ premiumStatus: z.ZodEnum<{
72
+ not_premium: "not_premium";
73
+ current_personal_plan: "current_personal_plan";
74
+ legacy_personal_plan: "legacy_personal_plan";
75
+ teams_business_member: "teams_business_member";
76
+ }>;
77
+ premiumUntil: z.ZodNullable<z.ZodString>;
78
+ rambleSessionsUsage: z.ZodOptional<z.ZodNullable<z.ZodObject<{
79
+ currentCount: z.ZodNumber;
80
+ limit: z.ZodNumber;
81
+ remaining: z.ZodNumber;
82
+ resetDate: z.ZodString;
83
+ }, z.core.$strip>>>;
84
+ shareLimit: z.ZodNumber;
85
+ sortOrder: z.ZodNumber;
86
+ startDay: z.ZodNumber;
87
+ startPage: z.ZodString;
88
+ themeId: z.ZodString;
89
+ timeFormat: z.ZodNumber;
90
+ token: z.ZodString;
91
+ tzInfo: z.ZodObject<{
92
+ timezone: z.ZodString;
93
+ hours: z.ZodNumber;
94
+ minutes: z.ZodNumber;
95
+ isDst: z.ZodUnion<readonly [z.ZodLiteral<0>, z.ZodLiteral<1>]>;
96
+ gmtString: z.ZodString;
97
+ }, z.core.$loose>;
98
+ uniquePrefix: z.ZodNumber;
99
+ verificationStatus: z.ZodString;
100
+ websocketUrl: z.ZodString;
101
+ weekendStartDay: z.ZodNumber;
102
+ weeklyGoal: z.ZodNumber;
103
+ }, z.core.$loose>;
104
+ export type SyncUser = z.infer<typeof SyncUserSchema>;
@@ -0,0 +1,94 @@
1
+ import { z } from 'zod';
2
+ export declare const ViewOptionsSchema: z.ZodObject<{
3
+ viewType: z.ZodEnum<{
4
+ TODAY: "TODAY";
5
+ UPCOMING: "UPCOMING";
6
+ PROJECT: "PROJECT";
7
+ LABEL: "LABEL";
8
+ FILTER: "FILTER";
9
+ WORKSPACE_FILTER: "WORKSPACE_FILTER";
10
+ SEARCH: "SEARCH";
11
+ TEMPLATE_PREVIEW: "TEMPLATE_PREVIEW";
12
+ TASK_DETAIL: "TASK_DETAIL";
13
+ AUTOMATION: "AUTOMATION";
14
+ ASSIGNED: "ASSIGNED";
15
+ OVERDUE: "OVERDUE";
16
+ WORKSPACE_OVERVIEW: "WORKSPACE_OVERVIEW";
17
+ }>;
18
+ objectId: z.ZodOptional<z.ZodString>;
19
+ groupedBy: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
20
+ PROJECT: "PROJECT";
21
+ LABEL: "LABEL";
22
+ ASSIGNEE: "ASSIGNEE";
23
+ ADDED_DATE: "ADDED_DATE";
24
+ DUE_DATE: "DUE_DATE";
25
+ DEADLINE: "DEADLINE";
26
+ PRIORITY: "PRIORITY";
27
+ WORKSPACE: "WORKSPACE";
28
+ }>>>;
29
+ filteredBy: z.ZodOptional<z.ZodNullable<z.ZodString>>;
30
+ viewMode: z.ZodOptional<z.ZodEnum<{
31
+ LIST: "LIST";
32
+ BOARD: "BOARD";
33
+ CALENDAR: "CALENDAR";
34
+ }>>;
35
+ showCompletedTasks: z.ZodOptional<z.ZodBoolean>;
36
+ sortedBy: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
37
+ MANUAL: "MANUAL";
38
+ PROJECT: "PROJECT";
39
+ ASSIGNEE: "ASSIGNEE";
40
+ ADDED_DATE: "ADDED_DATE";
41
+ DUE_DATE: "DUE_DATE";
42
+ DEADLINE: "DEADLINE";
43
+ PRIORITY: "PRIORITY";
44
+ WORKSPACE: "WORKSPACE";
45
+ ALPHABETICALLY: "ALPHABETICALLY";
46
+ }>>>;
47
+ sortOrder: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
48
+ ASC: "ASC";
49
+ DESC: "DESC";
50
+ }>>>;
51
+ }, z.core.$loose>;
52
+ export type ViewOptions = z.infer<typeof ViewOptionsSchema>;
53
+ export declare const ProjectViewOptionsDefaultsSchema: z.ZodObject<{
54
+ projectId: z.ZodString;
55
+ viewMode: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
56
+ LIST: "LIST";
57
+ BOARD: "BOARD";
58
+ CALENDAR: "CALENDAR";
59
+ }>>>;
60
+ groupedBy: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
61
+ PROJECT: "PROJECT";
62
+ LABEL: "LABEL";
63
+ ASSIGNEE: "ASSIGNEE";
64
+ ADDED_DATE: "ADDED_DATE";
65
+ DUE_DATE: "DUE_DATE";
66
+ DEADLINE: "DEADLINE";
67
+ PRIORITY: "PRIORITY";
68
+ WORKSPACE: "WORKSPACE";
69
+ }>>>;
70
+ sortedBy: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
71
+ MANUAL: "MANUAL";
72
+ PROJECT: "PROJECT";
73
+ ASSIGNEE: "ASSIGNEE";
74
+ ADDED_DATE: "ADDED_DATE";
75
+ DUE_DATE: "DUE_DATE";
76
+ DEADLINE: "DEADLINE";
77
+ PRIORITY: "PRIORITY";
78
+ WORKSPACE: "WORKSPACE";
79
+ ALPHABETICALLY: "ALPHABETICALLY";
80
+ }>>>;
81
+ sortOrder: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
82
+ ASC: "ASC";
83
+ DESC: "DESC";
84
+ }>>>;
85
+ showCompletedTasks: z.ZodOptional<z.ZodBoolean>;
86
+ filteredBy: z.ZodOptional<z.ZodNullable<z.ZodString>>;
87
+ calendarSettings: z.ZodOptional<z.ZodNullable<z.ZodObject<{
88
+ layout: z.ZodOptional<z.ZodEnum<{
89
+ WEEK: "WEEK";
90
+ MONTH: "MONTH";
91
+ }>>;
92
+ }, z.core.$loose>>>;
93
+ }, z.core.$loose>;
94
+ export type ProjectViewOptionsDefaults = z.infer<typeof ProjectViewOptionsDefaultsSchema>;
@@ -0,0 +1,17 @@
1
+ import { z } from 'zod';
2
+ export declare const WorkspaceFilterSchema: z.ZodObject<{
3
+ id: z.ZodString;
4
+ workspaceId: z.ZodString;
5
+ name: z.ZodString;
6
+ query: z.ZodString;
7
+ color: z.ZodString;
8
+ itemOrder: z.ZodNumber;
9
+ isDeleted: z.ZodBoolean;
10
+ isFavorite: z.ZodBoolean;
11
+ isFrozen: z.ZodBoolean;
12
+ creatorUid: z.ZodString;
13
+ updaterUid: z.ZodString;
14
+ createdAt: z.ZodString;
15
+ updatedAt: z.ZodString;
16
+ }, z.core.$loose>;
17
+ export type WorkspaceFilter = z.infer<typeof WorkspaceFilterSchema>;
@@ -0,0 +1,29 @@
1
+ import { z } from 'zod';
2
+ export declare const WorkspaceGoalMilestoneSchema: z.ZodObject<{
3
+ id: z.ZodString;
4
+ title: z.ZodString;
5
+ isCompleted: z.ZodBoolean;
6
+ }, z.core.$loose>;
7
+ export type WorkspaceGoalMilestone = z.infer<typeof WorkspaceGoalMilestoneSchema>;
8
+ export declare const WorkspaceGoalProgressSchema: z.ZodObject<{
9
+ completedItems: z.ZodNumber;
10
+ totalItems: z.ZodNumber;
11
+ }, z.core.$loose>;
12
+ export type WorkspaceGoalProgress = z.infer<typeof WorkspaceGoalProgressSchema>;
13
+ export declare const WorkspaceGoalSchema: z.ZodObject<{
14
+ id: z.ZodString;
15
+ workspaceId: z.ZodString;
16
+ title: z.ZodString;
17
+ description: z.ZodNullable<z.ZodString>;
18
+ deadline: z.ZodNullable<z.ZodString>;
19
+ isDeleted: z.ZodBoolean;
20
+ projectIds: z.ZodArray<z.ZodString>;
21
+ progress: z.ZodNullable<z.ZodObject<{
22
+ completedItems: z.ZodNumber;
23
+ totalItems: z.ZodNumber;
24
+ }, z.core.$loose>>;
25
+ creatorUid: z.ZodString;
26
+ createdAt: z.ZodString;
27
+ updatedAt: z.ZodString;
28
+ }, z.core.$loose>;
29
+ export type WorkspaceGoal = z.infer<typeof WorkspaceGoalSchema>;
@@ -0,0 +1,52 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Sync API workspace resource.
4
+ *
5
+ * This is a superset of the REST `WorkspaceSchema` — the Sync API returns
6
+ * additional fields like description, isDeleted, isCollapsed, member counts,
7
+ * domain settings, and sorting preferences.
8
+ */
9
+ export declare const SyncWorkspaceSchema: z.ZodObject<{
10
+ id: z.ZodString;
11
+ name: z.ZodString;
12
+ description: z.ZodString;
13
+ logoBig: z.ZodOptional<z.ZodString>;
14
+ logoMedium: z.ZodOptional<z.ZodString>;
15
+ logoSmall: z.ZodOptional<z.ZodString>;
16
+ logoS640: z.ZodOptional<z.ZodString>;
17
+ creatorId: z.ZodString;
18
+ createdAt: z.ZodString;
19
+ isDeleted: z.ZodBoolean;
20
+ isCollapsed: z.ZodBoolean;
21
+ role: z.ZodEnum<{
22
+ ADMIN: "ADMIN";
23
+ MEMBER: "MEMBER";
24
+ GUEST: "GUEST";
25
+ }>;
26
+ plan: z.ZodEnum<{
27
+ STARTER: "STARTER";
28
+ BUSINESS: "BUSINESS";
29
+ }>;
30
+ limits: z.ZodObject<{
31
+ current: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodAny>>;
32
+ next: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodAny>>;
33
+ }, z.core.$catchall<z.ZodAny>>;
34
+ inviteCode: z.ZodOptional<z.ZodNullable<z.ZodString>>;
35
+ isLinkSharingEnabled: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
36
+ isGuestAllowed: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
37
+ currentActiveProjects: z.ZodNullable<z.ZodNumber>;
38
+ currentMemberCount: z.ZodNullable<z.ZodNumber>;
39
+ currentTemplateCount: z.ZodNullable<z.ZodNumber>;
40
+ pendingInvitations: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
41
+ domainName: z.ZodOptional<z.ZodString>;
42
+ domainDiscovery: z.ZodOptional<z.ZodBoolean>;
43
+ restrictEmailDomains: z.ZodOptional<z.ZodBoolean>;
44
+ adminSortingApplied: z.ZodBoolean;
45
+ projectSortPreference: z.ZodOptional<z.ZodString>;
46
+ defaultCollaborators: z.ZodOptional<z.ZodObject<{
47
+ predefinedGroupIds: z.ZodArray<z.ZodString>;
48
+ userIds: z.ZodArray<z.ZodNumber>;
49
+ }, z.core.$strip>>;
50
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
51
+ }, z.core.$loose>;
52
+ export type SyncWorkspace = z.infer<typeof SyncWorkspaceSchema>;
@@ -0,0 +1,47 @@
1
+ import type { Task, Label, Section, PersonalProject, WorkspaceProject, WorkspaceUser } from '../entities.js';
2
+ import type { Filter, Collaborator, CollaboratorState, Folder, Note, Tooltips, WorkspaceFilter, WorkspaceGoal, Calendar, CalendarAccount, Reminder, CompletedInfo, ViewOptions, ProjectViewOptionsDefaults, UserPlanLimits, LiveNotification, SyncWorkspace, SyncUser, UserSettings, LocationReminder, Suggestion } from './resources/index.js';
3
+ export type SyncError = {
4
+ error: string;
5
+ errorCode: number;
6
+ errorExtra: Record<string, unknown>;
7
+ errorTag: string;
8
+ httpCode: number;
9
+ };
10
+ export type SyncResponse = {
11
+ syncToken?: string;
12
+ fullSync?: boolean;
13
+ syncStatus?: Record<string, 'ok' | SyncError>;
14
+ tempIdMapping?: Record<string, string>;
15
+ items?: Task[];
16
+ projects?: (PersonalProject | WorkspaceProject)[];
17
+ sections?: Section[];
18
+ labels?: Label[];
19
+ notes?: Note[];
20
+ projectNotes?: Note[];
21
+ filters?: Filter[];
22
+ reminders?: Reminder[];
23
+ remindersLocation?: LocationReminder[];
24
+ locations?: Record<string, unknown>[];
25
+ user?: SyncUser;
26
+ liveNotifications?: LiveNotification[];
27
+ collaborators?: Collaborator[];
28
+ collaboratorStates?: CollaboratorState[];
29
+ userSettings?: UserSettings;
30
+ notificationSettings?: Record<string, boolean>;
31
+ userPlanLimits?: UserPlanLimits;
32
+ completedInfo?: CompletedInfo[];
33
+ stats?: Record<string, unknown>;
34
+ workspaces?: SyncWorkspace[];
35
+ workspaceUsers?: WorkspaceUser[];
36
+ workspaceFilters?: WorkspaceFilter[];
37
+ viewOptions?: ViewOptions[];
38
+ projectViewOptionsDefaults?: ProjectViewOptionsDefaults[];
39
+ roleActions?: Record<string, unknown>[];
40
+ folders?: Folder[];
41
+ workspaceGoals?: WorkspaceGoal[];
42
+ dayOrders?: Record<string, number>;
43
+ calendars?: Calendar[];
44
+ calendarAccounts?: CalendarAccount[];
45
+ suggestions?: Suggestion[];
46
+ tooltips?: Tooltips;
47
+ };
@@ -1,3 +1,4 @@
1
1
  export * from './colors.js';
2
2
  export * from './sanitization.js';
3
3
  export { getTaskUrl, getProjectUrl, getSectionUrl } from './url-helpers.js';
4
+ export { createCommand } from './sync-helpers.js';
@@ -3,7 +3,7 @@ type UploadMultipartFileArgs = {
3
3
  baseUrl: string;
4
4
  authToken: string;
5
5
  endpoint: string;
6
- file: Buffer | NodeJS.ReadableStream | string;
6
+ file: Buffer | NodeJS.ReadableStream | string | Blob;
7
7
  fileName?: string;
8
8
  additionalFields: Record<string, string | number | boolean>;
9
9
  requestId?: string;
@@ -15,11 +15,13 @@ type UploadMultipartFileArgs = {
15
15
  * This is a shared utility for uploading files to Todoist endpoints that require
16
16
  * multipart/form-data content type (e.g., file uploads, workspace logo uploads).
17
17
  *
18
+ * Supports both browser (Blob/File) and Node.js (Buffer/ReadableStream/path) environments.
19
+ *
18
20
  * @param baseUrl - The base API URL (e.g., https://api.todoist.com/api/v1/)
19
21
  * @param authToken - The authentication token
20
22
  * @param endpoint - The relative endpoint path (e.g., 'uploads', 'workspaces/logo')
21
- * @param file - The file content (Buffer, ReadableStream, or file system path)
22
- * @param fileName - Optional file name (required for Buffer/Stream, optional for paths)
23
+ * @param file - The file content (Blob/File for browser, or Buffer/ReadableStream/path for Node)
24
+ * @param fileName - Optional file name (required for Buffer/Stream, optional for paths and File objects)
23
25
  * @param additionalFields - Additional form fields to include (e.g., project_id, workspace_id)
24
26
  * @param requestId - Optional request ID for idempotency
25
27
  * @returns The response data from the server
@@ -0,0 +1,17 @@
1
+ import type { SyncCommandType, SyncCommandsMap, SyncCommand } from '../types/sync/commands/index.js';
2
+ /**
3
+ * Creates a strongly-typed Sync API command with an auto-generated UUID.
4
+ *
5
+ * @param type - The command type (e.g. `'item_add'`, `'project_update'`).
6
+ * @param args - The command arguments, constrained by the command type.
7
+ * @param tempId - Optional temporary ID for referencing the created resource in subsequent commands.
8
+ * @returns A fully formed `SyncCommand` ready to include in a sync request.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const cmd = createCommand('item_add', { content: 'Buy milk', priority: 2 })
13
+ * // cmd.type === 'item_add'
14
+ * // cmd.args is typed as TaskAddArgs
15
+ * ```
16
+ */
17
+ export declare function createCommand<T extends SyncCommandType>(type: T, args: SyncCommandsMap[T], tempId?: string): SyncCommand<T>;