@doist/todoist-sdk 9.1.0-next.2 → 9.1.1

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 (70) hide show
  1. package/dist/cjs/authentication.js +1 -0
  2. package/dist/cjs/clients/app-client.js +347 -0
  3. package/dist/cjs/clients/base-client.js +1 -0
  4. package/dist/cjs/clients/ui-extension-client.js +109 -0
  5. package/dist/cjs/consts/endpoints.js +70 -6
  6. package/dist/cjs/test-utils/test-defaults.js +75 -23
  7. package/dist/cjs/todoist-api.js +269 -33
  8. package/dist/cjs/transport/http-client.js +1 -0
  9. package/dist/cjs/types/apps/types.js +253 -0
  10. package/dist/cjs/types/index.js +2 -1
  11. package/dist/cjs/types/sync/commands/index.js +0 -1
  12. package/dist/cjs/types/sync/resource-types.js +0 -1
  13. package/dist/cjs/types/sync/response.js +10 -12
  14. package/dist/cjs/types/ui-extensions/index.js +18 -0
  15. package/dist/cjs/types/ui-extensions/types.js +77 -0
  16. package/dist/cjs/utils/validators.js +45 -33
  17. package/dist/esm/authentication.js +1 -0
  18. package/dist/esm/clients/app-client.js +343 -0
  19. package/dist/esm/clients/base-client.js +1 -0
  20. package/dist/esm/clients/ui-extension-client.js +105 -0
  21. package/dist/esm/consts/endpoints.js +54 -5
  22. package/dist/esm/test-utils/test-defaults.js +73 -22
  23. package/dist/esm/todoist-api.js +269 -33
  24. package/dist/esm/transport/http-client.js +1 -0
  25. package/dist/esm/types/apps/types.js +248 -0
  26. package/dist/esm/types/index.js +2 -1
  27. package/dist/esm/types/sync/commands/index.js +0 -1
  28. package/dist/esm/types/sync/resource-types.js +0 -1
  29. package/dist/esm/types/sync/response.js +0 -2
  30. package/dist/esm/types/ui-extensions/types.js +74 -0
  31. package/dist/esm/utils/validators.js +14 -2
  32. package/dist/types/authentication.d.ts +1 -1
  33. package/dist/types/clients/app-client.d.ts +37 -0
  34. package/dist/types/clients/base-client.d.ts +1 -0
  35. package/dist/types/clients/ui-extension-client.d.ts +18 -0
  36. package/dist/types/consts/endpoints.d.ts +25 -5
  37. package/dist/types/test-utils/test-defaults.d.ts +16 -4
  38. package/dist/types/todoist-api.d.ts +202 -12
  39. package/dist/types/types/apps/index.d.ts +2 -0
  40. package/dist/types/types/apps/requests.d.ts +89 -0
  41. package/dist/types/types/apps/types.d.ts +414 -0
  42. package/dist/types/types/http.d.ts +1 -1
  43. package/dist/types/types/index.d.ts +2 -1
  44. package/dist/types/types/sync/commands/index.d.ts +0 -9
  45. package/dist/types/types/sync/resource-types.d.ts +1 -1
  46. package/dist/types/types/sync/resources/user.d.ts +2 -2
  47. package/dist/types/types/sync/resources/view-options.d.ts +6 -6
  48. package/dist/types/types/sync/response.d.ts +6 -31
  49. package/dist/types/types/sync/user-preferences.d.ts +1 -1
  50. package/dist/types/types/tasks/requests.d.ts +0 -1
  51. package/dist/types/types/ui-extensions/index.d.ts +2 -0
  52. package/dist/types/types/ui-extensions/requests.d.ts +108 -0
  53. package/dist/types/types/ui-extensions/types.d.ts +185 -0
  54. package/dist/types/utils/validators.d.ts +231 -55
  55. package/package.json +1 -1
  56. package/dist/cjs/clients/goals-client.js +0 -145
  57. package/dist/cjs/types/goals/types.js +0 -56
  58. package/dist/esm/clients/goals-client.js +0 -141
  59. package/dist/esm/types/goals/types.js +0 -53
  60. package/dist/types/clients/goals-client.d.ts +0 -20
  61. package/dist/types/types/goals/requests.d.ts +0 -33
  62. package/dist/types/types/goals/types.d.ts +0 -51
  63. package/dist/types/types/sync/commands/goals.d.ts +0 -33
  64. /package/dist/cjs/types/{goals → apps}/index.js +0 -0
  65. /package/dist/cjs/types/{goals → apps}/requests.js +0 -0
  66. /package/dist/cjs/types/{sync/commands/goals.js → ui-extensions/requests.js} +0 -0
  67. /package/dist/esm/types/{goals → apps}/index.js +0 -0
  68. /package/dist/esm/types/{goals → apps}/requests.js +0 -0
  69. /package/dist/{types/types/goals/index.d.ts → esm/types/ui-extensions/index.js} +0 -0
  70. /package/dist/esm/types/{sync/commands/goals.js → ui-extensions/requests.js} +0 -0
@@ -0,0 +1,253 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UserAuthorizationSchema = exports.UserAuthorizationAppSchema = exports.AppInstallationSchema = exports.InstalledIntegrationSchema = exports.AppWebhookSchema = exports.AppByDistributionTokenSchema = exports.AppByDistributionTokenUiExtensionSchema = exports.AppDistributionTokenSchema = exports.AppTestTokenSchema = exports.AppVerificationTokenSchema = exports.AppSecretsSchema = exports.AppWithUserCountSchema = exports.AppSchema = exports.AppTokenScopesSchema = exports.InstallationTypeSchema = exports.INSTALLATION_TYPES = exports.WebhookVersionSchema = exports.WEBHOOK_VERSIONS = exports.WebhookStatusSchema = exports.WEBHOOK_STATUSES = exports.WebhookEventWireNameSchema = exports.WEBHOOK_EVENT_WIRE_NAMES = exports.WebhookEventSchema = exports.WEBHOOK_EVENTS = exports.AppStatusSchema = exports.APP_STATUSES = void 0;
4
+ exports.webhookEventFromWireName = webhookEventFromWireName;
5
+ exports.webhookEventToWireName = webhookEventToWireName;
6
+ const zod_1 = require("zod");
7
+ const common_1 = require("../common");
8
+ const types_1 = require("../ui-extensions/types");
9
+ /**
10
+ * Available statuses for a developer application.
11
+ */
12
+ exports.APP_STATUSES = ['public'];
13
+ exports.AppStatusSchema = zod_1.z.enum(exports.APP_STATUSES);
14
+ /**
15
+ * Webhook event types that can be subscribed to.
16
+ *
17
+ * These are the friendly public names the backend uses in webhook payloads.
18
+ * The on-the-wire config endpoint uses a different (legacy) form (see
19
+ * {@link WEBHOOK_EVENT_WIRE_NAMES}); the SDK converts between the two
20
+ * so consumers only ever work with these pretty names.
21
+ *
22
+ * @see https://developer.todoist.com/sync/v1/#webhooks
23
+ */
24
+ exports.WEBHOOK_EVENTS = [
25
+ 'item:added',
26
+ 'item:updated',
27
+ 'item:completed',
28
+ 'item:uncompleted',
29
+ 'item:deleted',
30
+ 'note:added',
31
+ 'note:updated',
32
+ 'note:deleted',
33
+ 'project:added',
34
+ 'project:updated',
35
+ 'project:deleted',
36
+ 'project:archived',
37
+ 'project:unarchived',
38
+ 'section:added',
39
+ 'section:updated',
40
+ 'section:deleted',
41
+ 'section:archived',
42
+ 'section:unarchived',
43
+ 'label:added',
44
+ 'label:updated',
45
+ 'label:deleted',
46
+ 'filter:added',
47
+ 'filter:updated',
48
+ 'filter:deleted',
49
+ 'reminder:fired',
50
+ ];
51
+ exports.WebhookEventSchema = zod_1.z.enum(exports.WEBHOOK_EVENTS);
52
+ /**
53
+ * Raw wire-format webhook event names used by the config endpoint
54
+ * (`POST/GET /apps/<id>/webhook`). Exported for completeness — prefer
55
+ * {@link WEBHOOK_EVENTS} when working with the SDK.
56
+ */
57
+ exports.WEBHOOK_EVENT_WIRE_NAMES = [
58
+ 'e_item_added',
59
+ 'e_item_updated',
60
+ 'e_item_completed',
61
+ 'e_item_uncompleted',
62
+ 'e_item_deleted',
63
+ 'e_note_added',
64
+ 'e_note_updated',
65
+ 'e_note_deleted',
66
+ 'e_project_added',
67
+ 'e_project_updated',
68
+ 'e_project_deleted',
69
+ 'e_project_archived',
70
+ 'e_project_unarchived',
71
+ 'e_section_added',
72
+ 'e_section_updated',
73
+ 'e_section_deleted',
74
+ 'e_section_archived',
75
+ 'e_section_unarchived',
76
+ 'e_label_added',
77
+ 'e_label_updated',
78
+ 'e_label_deleted',
79
+ 'e_filter_added',
80
+ 'e_filter_updated',
81
+ 'e_filter_deleted',
82
+ 'e_reminder_fired',
83
+ ];
84
+ exports.WebhookEventWireNameSchema = zod_1.z.enum(exports.WEBHOOK_EVENT_WIRE_NAMES);
85
+ /**
86
+ * Translates a wire-format event name (`'e_item_added'`) to its pretty form (`'item:added'`).
87
+ */
88
+ function webhookEventFromWireName(wireName) {
89
+ // Strip leading `e_`, replace first `_` with `:`. The resulting string is
90
+ // guaranteed to be a `WebhookEvent` by construction of the two const arrays.
91
+ return wireName.slice(2).replace('_', ':');
92
+ }
93
+ /**
94
+ * Translates a pretty event name (`'item:added'`) to its wire-format form (`'e_item_added'`).
95
+ */
96
+ function webhookEventToWireName(event) {
97
+ return ('e_' + event.replace(':', '_'));
98
+ }
99
+ /**
100
+ * Available statuses for an app webhook.
101
+ */
102
+ exports.WEBHOOK_STATUSES = ['active', 'invalid'];
103
+ exports.WebhookStatusSchema = zod_1.z.enum(exports.WEBHOOK_STATUSES);
104
+ /**
105
+ * Supported webhook payload versions. v9 is deprecated and intentionally excluded.
106
+ */
107
+ exports.WEBHOOK_VERSIONS = ['1'];
108
+ exports.WebhookVersionSchema = zod_1.z.enum(exports.WEBHOOK_VERSIONS);
109
+ /**
110
+ * Available installation types for an app installation.
111
+ */
112
+ exports.INSTALLATION_TYPES = ['user'];
113
+ exports.InstallationTypeSchema = zod_1.z.enum(exports.INSTALLATION_TYPES);
114
+ /**
115
+ * Transforms a comma-separated scope string into `string[] | null`.
116
+ *
117
+ * The backend stores `app_token_scopes` as a single comma-separated string
118
+ * (e.g. `"data:read,task:add"`). Reads are exposed as `string[]` (rather than
119
+ * `Permission[]`) so that newly added backend scopes don't break parsing —
120
+ * writes accept `Permission` for autocomplete while still permitting `string`
121
+ * (via `UpdateAppArgs`), so a fetched `App.appTokenScopes` can be round-tripped
122
+ * back into `updateApp()` without casts.
123
+ *
124
+ * Preserves `null` on read (backend returns `null` for apps that have had
125
+ * their scopes cleared via `updateApp({ appTokenScopes: null })`) so the
126
+ * read and write shapes line up and information is not lost.
127
+ */
128
+ exports.AppTokenScopesSchema = zod_1.z
129
+ .string()
130
+ .nullable()
131
+ .transform((value) => {
132
+ if (value === null)
133
+ return null;
134
+ if (value === '')
135
+ return [];
136
+ return value.split(',').filter(Boolean);
137
+ });
138
+ /**
139
+ * Schema for a developer application.
140
+ * @see https://developer.todoist.com/api/v1/#tag/Apps
141
+ */
142
+ exports.AppSchema = zod_1.z.object({
143
+ id: common_1.StringOrNumberSchema,
144
+ status: exports.AppStatusSchema,
145
+ displayName: zod_1.z.string(),
146
+ userId: common_1.StringOrNumberSchema,
147
+ createdAt: zod_1.z.coerce.date(),
148
+ serviceUrl: zod_1.z.string().nullable(),
149
+ oauthRedirectUri: zod_1.z.string().nullable(),
150
+ description: zod_1.z.string().nullable(),
151
+ iconSm: zod_1.z.string().nullable(),
152
+ iconMd: zod_1.z.string().nullable(),
153
+ iconLg: zod_1.z.string().nullable(),
154
+ appTokenScopes: exports.AppTokenScopesSchema,
155
+ });
156
+ /**
157
+ * Schema for a developer application that includes the user count.
158
+ * Returned by most endpoints that manage a single app (get, update, delete).
159
+ */
160
+ exports.AppWithUserCountSchema = exports.AppSchema.extend({
161
+ userCount: zod_1.z.number().int(),
162
+ });
163
+ /**
164
+ * OAuth client credentials for a developer application.
165
+ */
166
+ exports.AppSecretsSchema = zod_1.z.object({
167
+ clientId: zod_1.z.string(),
168
+ clientSecret: zod_1.z.string(),
169
+ });
170
+ /**
171
+ * Webhook verification token for a developer application.
172
+ */
173
+ exports.AppVerificationTokenSchema = zod_1.z.object({
174
+ verificationToken: zod_1.z.string(),
175
+ });
176
+ /**
177
+ * Developer test access token for a developer application.
178
+ */
179
+ exports.AppTestTokenSchema = zod_1.z.object({
180
+ accessToken: zod_1.z.string().nullish(),
181
+ });
182
+ /**
183
+ * Distribution token for a developer application.
184
+ */
185
+ exports.AppDistributionTokenSchema = zod_1.z.object({
186
+ distributionToken: zod_1.z.string(),
187
+ });
188
+ /**
189
+ * Subset of an app returned when resolving by distribution token — used by the installation flow.
190
+ * Includes a lightweight list of the app's UI extensions (not full `UIExtension` records).
191
+ */
192
+ exports.AppByDistributionTokenUiExtensionSchema = zod_1.z.object({
193
+ name: zod_1.z.string(),
194
+ description: zod_1.z.string(),
195
+ icon: zod_1.z.string().nullable(),
196
+ extensionType: zod_1.z.enum(types_1.UI_EXTENSION_TYPES),
197
+ });
198
+ exports.AppByDistributionTokenSchema = zod_1.z.object({
199
+ id: common_1.StringOrNumberSchema,
200
+ displayName: zod_1.z.string(),
201
+ description: zod_1.z.string().nullable(),
202
+ iconMd: zod_1.z.string().nullable(),
203
+ appTokenScopes: exports.AppTokenScopesSchema,
204
+ uiExtensions: zod_1.z.array(exports.AppByDistributionTokenUiExtensionSchema),
205
+ });
206
+ /**
207
+ * Schema for an app webhook.
208
+ *
209
+ * Events arrive from the wire in their `e_*` form and are transformed to
210
+ * their pretty `item:added`-style names for SDK consumers.
211
+ */
212
+ exports.AppWebhookSchema = zod_1.z.object({
213
+ status: exports.WebhookStatusSchema,
214
+ callbackUrl: zod_1.z.string(),
215
+ version: exports.WebhookVersionSchema,
216
+ events: zod_1.z.array(exports.WebhookEventWireNameSchema.transform(webhookEventFromWireName)),
217
+ });
218
+ /**
219
+ * Lightweight view of an app embedded in an installation record.
220
+ * Mirrors `AppSchema` shape — backend returns the same `ApplicationRestView`.
221
+ */
222
+ exports.InstalledIntegrationSchema = exports.AppSchema;
223
+ /**
224
+ * Schema for an installed application (integration installed to a user's account).
225
+ */
226
+ exports.AppInstallationSchema = zod_1.z.object({
227
+ id: common_1.StringOrNumberSchema,
228
+ creator: common_1.StringOrNumberSchema,
229
+ createdTs: zod_1.z.number().int(),
230
+ installationType: exports.InstallationTypeSchema,
231
+ appTokenScopesValidated: zod_1.z.boolean(),
232
+ integration: exports.InstalledIntegrationSchema.nullable(),
233
+ });
234
+ /**
235
+ * Lightweight app info included on a user authorization record.
236
+ */
237
+ exports.UserAuthorizationAppSchema = zod_1.z.object({
238
+ id: common_1.StringOrNumberSchema,
239
+ displayName: zod_1.z.string(),
240
+ description: zod_1.z.string().nullable(),
241
+ serviceUrl: zod_1.z.string().nullable(),
242
+ iconMd: zod_1.z.string().nullable(),
243
+ });
244
+ /**
245
+ * Schema for a user authorization entry — a token the user has granted to a third-party app.
246
+ */
247
+ exports.UserAuthorizationSchema = zod_1.z.object({
248
+ accessTokenId: common_1.StringOrNumberSchema,
249
+ scope: zod_1.z.array(zod_1.z.string()),
250
+ scopeDescriptions: zod_1.z.array(zod_1.z.string()),
251
+ createdAt: zod_1.z.coerce.date(),
252
+ app: exports.UserAuthorizationAppSchema.nullable(),
253
+ });
@@ -25,7 +25,6 @@ __exportStar(require("./productivity"), exports);
25
25
  __exportStar(require("./activity"), exports);
26
26
  __exportStar(require("./workspaces"), exports);
27
27
  __exportStar(require("./folders"), exports);
28
- __exportStar(require("./goals"), exports);
29
28
  __exportStar(require("./insights"), exports);
30
29
  __exportStar(require("./backups"), exports);
31
30
  __exportStar(require("./id-mappings"), exports);
@@ -35,3 +34,5 @@ __exportStar(require("./templates"), exports);
35
34
  __exportStar(require("./errors"), exports);
36
35
  __exportStar(require("./http"), exports);
37
36
  __exportStar(require("./sync"), exports);
37
+ __exportStar(require("./apps"), exports);
38
+ __exportStar(require("./ui-extensions"), exports);
@@ -27,7 +27,6 @@ __exportStar(require("./workspaces"), exports);
27
27
  __exportStar(require("./folders"), exports);
28
28
  __exportStar(require("./workspace-filters"), exports);
29
29
  __exportStar(require("./workspace-goals"), exports);
30
- __exportStar(require("./goals"), exports);
31
30
  __exportStar(require("./notifications"), exports);
32
31
  __exportStar(require("./sharing"), exports);
33
32
  __exportStar(require("./view-options"), exports);
@@ -32,7 +32,6 @@ exports.SYNC_RESOURCE_TYPES = [
32
32
  'role_actions',
33
33
  'folders',
34
34
  'workspace_goals',
35
- 'goals',
36
35
  'day_orders',
37
36
  'calendars',
38
37
  'calendar_accounts',
@@ -2,12 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SyncResponseSchema = exports.SyncErrorSchema = void 0;
4
4
  const zod_1 = require("zod");
5
- const types_1 = require("../goals/types");
6
- const types_2 = require("../labels/types");
7
- const types_3 = require("../projects/types");
8
- const types_4 = require("../sections/types");
9
- const types_5 = require("../tasks/types");
10
- const types_6 = require("../workspaces/types");
5
+ const types_1 = require("../labels/types");
6
+ const types_2 = require("../projects/types");
7
+ const types_3 = require("../sections/types");
8
+ const types_4 = require("../tasks/types");
9
+ const types_5 = require("../workspaces/types");
11
10
  const resources_1 = require("./resources");
12
11
  exports.SyncErrorSchema = zod_1.z.object({
13
12
  error: zod_1.z.string(),
@@ -21,10 +20,10 @@ exports.SyncResponseSchema = zod_1.z.looseObject({
21
20
  fullSync: zod_1.z.boolean().optional(),
22
21
  syncStatus: zod_1.z.record(zod_1.z.string(), zod_1.z.union([zod_1.z.literal('ok'), exports.SyncErrorSchema])).optional(),
23
22
  tempIdMapping: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
24
- items: zod_1.z.array(types_5.TaskSchema).optional(),
25
- projects: zod_1.z.array(types_3.ProjectSchema).optional(),
26
- sections: zod_1.z.array(types_4.SectionSchema).optional(),
27
- labels: zod_1.z.array(types_2.LabelSchema).optional(),
23
+ items: zod_1.z.array(types_4.TaskSchema).optional(),
24
+ projects: zod_1.z.array(types_2.ProjectSchema).optional(),
25
+ sections: zod_1.z.array(types_3.SectionSchema).optional(),
26
+ labels: zod_1.z.array(types_1.LabelSchema).optional(),
28
27
  notes: zod_1.z.array(resources_1.NoteSchema).optional(),
29
28
  projectNotes: zod_1.z.array(resources_1.NoteSchema).optional(),
30
29
  filters: zod_1.z.array(resources_1.FilterSchema).optional(),
@@ -41,13 +40,12 @@ exports.SyncResponseSchema = zod_1.z.looseObject({
41
40
  completedInfo: zod_1.z.array(resources_1.CompletedInfoSchema).optional(),
42
41
  stats: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional(),
43
42
  workspaces: zod_1.z.array(resources_1.SyncWorkspaceSchema).optional(),
44
- workspaceUsers: zod_1.z.array(types_6.WorkspaceUserSchema).optional(),
43
+ workspaceUsers: zod_1.z.array(types_5.WorkspaceUserSchema).optional(),
45
44
  workspaceFilters: zod_1.z.array(resources_1.WorkspaceFilterSchema).optional(),
46
45
  viewOptions: zod_1.z.array(resources_1.ViewOptionsSchema).optional(),
47
46
  projectViewOptionsDefaults: zod_1.z.array(resources_1.ProjectViewOptionsDefaultsSchema).optional(),
48
47
  roleActions: zod_1.z.array(zod_1.z.record(zod_1.z.string(), zod_1.z.unknown())).optional(),
49
48
  folders: zod_1.z.array(resources_1.FolderSchema).optional(),
50
- goals: zod_1.z.array(types_1.GoalSchema).optional(),
51
49
  workspaceGoals: zod_1.z.array(resources_1.WorkspaceGoalSchema).optional(),
52
50
  dayOrders: zod_1.z.record(zod_1.z.string(), zod_1.z.number()).optional(),
53
51
  calendars: zod_1.z.array(resources_1.CalendarSchema).optional(),
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types"), exports);
18
+ __exportStar(require("./requests"), exports);
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UiExtensionSchema = exports.SettingsExtensionSchema = exports.ComposerExtensionSchema = exports.ContextMenuExtensionSchema = exports.UiExtensionBaseSchema = exports.ComposerExtensionContextSchema = exports.COMPOSER_EXTENSION_CONTEXTS = exports.ContextMenuExtensionContextSchema = exports.CONTEXT_MENU_EXTENSION_CONTEXTS = exports.UI_EXTENSION_TYPES = exports.UiExtensionTypeEnum = void 0;
4
+ const zod_1 = require("zod");
5
+ const common_1 = require("../common");
6
+ /**
7
+ * Discriminator values for the UI extension variants.
8
+ * Exposed as an enum-like object because the values are used in `z.literal()`
9
+ * across multiple variant schemas (see AGENTS.md "Discriminated unions" exception).
10
+ */
11
+ exports.UiExtensionTypeEnum = {
12
+ ContextMenu: 'context-menu',
13
+ Composer: 'composer',
14
+ Settings: 'settings',
15
+ };
16
+ /**
17
+ * All UI extension type values.
18
+ */
19
+ exports.UI_EXTENSION_TYPES = [
20
+ exports.UiExtensionTypeEnum.ContextMenu,
21
+ exports.UiExtensionTypeEnum.Composer,
22
+ exports.UiExtensionTypeEnum.Settings,
23
+ ];
24
+ /**
25
+ * Context locations where a context-menu extension can appear.
26
+ */
27
+ exports.CONTEXT_MENU_EXTENSION_CONTEXTS = ['project', 'task'];
28
+ exports.ContextMenuExtensionContextSchema = zod_1.z.enum(exports.CONTEXT_MENU_EXTENSION_CONTEXTS);
29
+ /**
30
+ * Composer locations where a composer extension can appear.
31
+ */
32
+ exports.COMPOSER_EXTENSION_CONTEXTS = ['task', 'comment'];
33
+ exports.ComposerExtensionContextSchema = zod_1.z.enum(exports.COMPOSER_EXTENSION_CONTEXTS);
34
+ /**
35
+ * Shared fields across all UI extension variants.
36
+ */
37
+ exports.UiExtensionBaseSchema = zod_1.z.object({
38
+ id: common_1.StringOrNumberSchema,
39
+ integrationId: common_1.StringOrNumberSchema,
40
+ extensionId: zod_1.z.string(),
41
+ url: zod_1.z.string(),
42
+ icon: zod_1.z.string().nullable(),
43
+ name: zod_1.z.string(),
44
+ description: zod_1.z.string(),
45
+ width: zod_1.z.number().int().nullable(),
46
+ height: zod_1.z.number().int().nullable(),
47
+ defVersion: zod_1.z.number().int(),
48
+ minimumCardistVersion: zod_1.z.string(),
49
+ });
50
+ /**
51
+ * Schema for a context-menu UI extension.
52
+ */
53
+ exports.ContextMenuExtensionSchema = exports.UiExtensionBaseSchema.extend({
54
+ extensionType: zod_1.z.literal(exports.UiExtensionTypeEnum.ContextMenu),
55
+ contextType: exports.ContextMenuExtensionContextSchema,
56
+ });
57
+ /**
58
+ * Schema for a composer UI extension.
59
+ */
60
+ exports.ComposerExtensionSchema = exports.UiExtensionBaseSchema.extend({
61
+ extensionType: zod_1.z.literal(exports.UiExtensionTypeEnum.Composer),
62
+ composerType: exports.ComposerExtensionContextSchema,
63
+ });
64
+ /**
65
+ * Schema for a settings UI extension.
66
+ */
67
+ exports.SettingsExtensionSchema = exports.UiExtensionBaseSchema.extend({
68
+ extensionType: zod_1.z.literal(exports.UiExtensionTypeEnum.Settings),
69
+ });
70
+ /**
71
+ * Discriminated union of all UI extension variants.
72
+ */
73
+ exports.UiExtensionSchema = zod_1.z.discriminatedUnion('extensionType', [
74
+ exports.ContextMenuExtensionSchema,
75
+ exports.ComposerExtensionSchema,
76
+ exports.SettingsExtensionSchema,
77
+ ]);
@@ -1,14 +1,14 @@
1
1
  "use strict";
2
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9;
2
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.validateFolderArray = exports.validateFolder = exports.validateCollaboratorStateArray = exports.validateCollaboratorState = exports.validateCollaboratorArray = exports.validateCollaborator = exports.validateFilterArray = exports.validateFilter = exports.validateMovedIdArray = exports.validateMovedId = exports.validateIdMappingArray = exports.validateIdMapping = exports.validateBackupArray = exports.validateBackup = exports.validateWorkspaceInsights = exports.validateProjectProgress = exports.validateProjectHealthContext = exports.validateProjectHealth = exports.validateProjectActivityStats = exports.validateWorkspaceUserTaskArray = exports.validateWorkspaceUserTask = exports.validateMemberActivityInfoArray = exports.validateMemberActivityInfo = exports.validateWorkspaceArray = exports.validateWorkspace = exports.validateJoinWorkspaceResult = exports.validateWorkspacePlanDetails = exports.validateWorkspaceInvitationArray = exports.validateWorkspaceInvitation = exports.validateWorkspaceUserArray = exports.validateWorkspaceUser = exports.validateAttachment = exports.validateActivityEventArray = exports.validateActivityEvent = exports.validateCurrentUser = exports.validateProductivityStats = exports.validateUserArray = exports.validateUser = exports.validateCommentArray = exports.validateComment = exports.validateLabelArray = exports.validateLabel = exports.validateSectionArray = exports.validateSection = exports.validateWorkspaceProjectArray = exports.validateWorkspaceProject = exports.validateProjectArray = exports.validateProject = exports.validateTaskArray = exports.validateTask = void 0;
5
- exports.validateSuggestionArray = exports.validateSuggestion = exports.validateUserSettings = exports.validateSyncUser = exports.validateSyncWorkspaceArray = exports.validateSyncWorkspace = exports.validateLiveNotificationArray = exports.validateLiveNotification = exports.validateUserPlanLimits = exports.validateProjectViewOptionsDefaultsArray = exports.validateProjectViewOptionsDefaults = exports.validateViewOptionsArray = exports.validateViewOptions = exports.validateCompletedInfoArray = exports.validateCompletedInfo = exports.validateLocationReminderArray = exports.validateLocationReminder = exports.validateReminderArray = exports.validateReminder = exports.validateCalendarAccountArray = exports.validateCalendarAccount = exports.validateCalendarArray = exports.validateCalendar = exports.validateWorkspaceGoalArray = exports.validateWorkspaceGoal = exports.validateWorkspaceFilterArray = exports.validateWorkspaceFilter = exports.validateTooltips = exports.validateNoteArray = exports.validateNote = exports.validateGoalArray = exports.validateGoal = void 0;
5
+ exports.validateUiExtensionArray = exports.validateUiExtension = exports.validateUserAuthorizationArray = exports.validateUserAuthorization = exports.validateAppInstallationArray = exports.validateAppInstallation = exports.validateAppWebhook = exports.validateAppByDistributionToken = exports.validateAppDistributionToken = exports.validateAppTestToken = exports.validateAppVerificationToken = exports.validateAppSecrets = exports.validateAppWithUserCount = exports.validateAppArray = exports.validateApp = exports.validateSuggestionArray = exports.validateSuggestion = exports.validateUserSettings = exports.validateSyncUser = exports.validateSyncWorkspaceArray = exports.validateSyncWorkspace = exports.validateLiveNotificationArray = exports.validateLiveNotification = exports.validateUserPlanLimits = exports.validateProjectViewOptionsDefaultsArray = exports.validateProjectViewOptionsDefaults = exports.validateViewOptionsArray = exports.validateViewOptions = exports.validateCompletedInfoArray = exports.validateCompletedInfo = exports.validateLocationReminderArray = exports.validateLocationReminder = exports.validateReminderArray = exports.validateReminder = exports.validateCalendarAccountArray = exports.validateCalendarAccount = exports.validateCalendarArray = exports.validateCalendar = exports.validateWorkspaceGoalArray = exports.validateWorkspaceGoal = exports.validateWorkspaceFilterArray = exports.validateWorkspaceFilter = exports.validateTooltips = exports.validateNoteArray = exports.validateNote = void 0;
6
6
  exports.parseSyncResponse = parseSyncResponse;
7
7
  const zod_1 = require("zod");
8
8
  const types_1 = require("../types/activity/types");
9
- const types_2 = require("../types/backups/types");
10
- const types_3 = require("../types/comments/types");
11
- const types_4 = require("../types/goals/types");
9
+ const types_2 = require("../types/apps/types");
10
+ const types_3 = require("../types/backups/types");
11
+ const types_4 = require("../types/comments/types");
12
12
  const types_5 = require("../types/id-mappings/types");
13
13
  const types_6 = require("../types/insights/types");
14
14
  const types_7 = require("../types/labels/types");
@@ -17,8 +17,9 @@ const types_9 = require("../types/projects/types");
17
17
  const types_10 = require("../types/sections/types");
18
18
  const response_1 = require("../types/sync/response");
19
19
  const types_11 = require("../types/tasks/types");
20
- const types_12 = require("../types/users/types");
21
- const types_13 = require("../types/workspaces/types");
20
+ const types_12 = require("../types/ui-extensions/types");
21
+ const types_13 = require("../types/users/types");
22
+ const types_14 = require("../types/workspaces/types");
22
23
  const resources_1 = require("../types/sync/resources");
23
24
  function createValidator(schema) {
24
25
  return {
@@ -37,25 +38,25 @@ _b = createValidator(types_9.ProjectSchema), exports.validateProject = _b.valida
37
38
  _c = createValidator(types_9.WorkspaceProjectSchema), exports.validateWorkspaceProject = _c.validate, exports.validateWorkspaceProjectArray = _c.validateArray;
38
39
  _d = createValidator(types_10.SectionSchema), exports.validateSection = _d.validate, exports.validateSectionArray = _d.validateArray;
39
40
  _e = createValidator(types_7.LabelSchema), exports.validateLabel = _e.validate, exports.validateLabelArray = _e.validateArray;
40
- _f = createValidator(types_3.CommentSchema), exports.validateComment = _f.validate, exports.validateCommentArray = _f.validateArray;
41
- _g = createValidator(types_12.UserSchema), exports.validateUser = _g.validate, exports.validateUserArray = _g.validateArray;
41
+ _f = createValidator(types_4.CommentSchema), exports.validateComment = _f.validate, exports.validateCommentArray = _f.validateArray;
42
+ _g = createValidator(types_13.UserSchema), exports.validateUser = _g.validate, exports.validateUserArray = _g.validateArray;
42
43
  exports.validateProductivityStats = createValidator(types_8.ProductivityStatsSchema).validate;
43
- exports.validateCurrentUser = createValidator(types_12.CurrentUserSchema).validate;
44
+ exports.validateCurrentUser = createValidator(types_13.CurrentUserSchema).validate;
44
45
  _h = createValidator(types_1.ActivityEventSchema), exports.validateActivityEvent = _h.validate, exports.validateActivityEventArray = _h.validateArray;
45
- exports.validateAttachment = createValidator(types_3.AttachmentSchema).validate;
46
- _j = createValidator(types_13.WorkspaceUserSchema), exports.validateWorkspaceUser = _j.validate, exports.validateWorkspaceUserArray = _j.validateArray;
47
- _k = createValidator(types_13.WorkspaceInvitationSchema), exports.validateWorkspaceInvitation = _k.validate, exports.validateWorkspaceInvitationArray = _k.validateArray;
48
- exports.validateWorkspacePlanDetails = createValidator(types_13.WorkspacePlanDetailsSchema).validate;
49
- exports.validateJoinWorkspaceResult = createValidator(types_13.JoinWorkspaceResultSchema).validate;
50
- _l = createValidator(types_13.WorkspaceSchema), exports.validateWorkspace = _l.validate, exports.validateWorkspaceArray = _l.validateArray;
51
- _m = createValidator(types_13.MemberActivityInfoSchema), exports.validateMemberActivityInfo = _m.validate, exports.validateMemberActivityInfoArray = _m.validateArray;
52
- _o = createValidator(types_13.WorkspaceUserTaskSchema), exports.validateWorkspaceUserTask = _o.validate, exports.validateWorkspaceUserTaskArray = _o.validateArray;
46
+ exports.validateAttachment = createValidator(types_4.AttachmentSchema).validate;
47
+ _j = createValidator(types_14.WorkspaceUserSchema), exports.validateWorkspaceUser = _j.validate, exports.validateWorkspaceUserArray = _j.validateArray;
48
+ _k = createValidator(types_14.WorkspaceInvitationSchema), exports.validateWorkspaceInvitation = _k.validate, exports.validateWorkspaceInvitationArray = _k.validateArray;
49
+ exports.validateWorkspacePlanDetails = createValidator(types_14.WorkspacePlanDetailsSchema).validate;
50
+ exports.validateJoinWorkspaceResult = createValidator(types_14.JoinWorkspaceResultSchema).validate;
51
+ _l = createValidator(types_14.WorkspaceSchema), exports.validateWorkspace = _l.validate, exports.validateWorkspaceArray = _l.validateArray;
52
+ _m = createValidator(types_14.MemberActivityInfoSchema), exports.validateMemberActivityInfo = _m.validate, exports.validateMemberActivityInfoArray = _m.validateArray;
53
+ _o = createValidator(types_14.WorkspaceUserTaskSchema), exports.validateWorkspaceUserTask = _o.validate, exports.validateWorkspaceUserTaskArray = _o.validateArray;
53
54
  exports.validateProjectActivityStats = createValidator(types_6.ProjectActivityStatsSchema).validate;
54
55
  exports.validateProjectHealth = createValidator(types_6.ProjectHealthSchema).validate;
55
56
  exports.validateProjectHealthContext = createValidator(types_6.ProjectHealthContextSchema).validate;
56
57
  exports.validateProjectProgress = createValidator(types_6.ProjectProgressSchema).validate;
57
58
  exports.validateWorkspaceInsights = createValidator(types_6.WorkspaceInsightsSchema).validate;
58
- _p = createValidator(types_2.BackupSchema), exports.validateBackup = _p.validate, exports.validateBackupArray = _p.validateArray;
59
+ _p = createValidator(types_3.BackupSchema), exports.validateBackup = _p.validate, exports.validateBackupArray = _p.validateArray;
59
60
  _q = createValidator(types_5.IdMappingSchema), exports.validateIdMapping = _q.validate, exports.validateIdMappingArray = _q.validateArray;
60
61
  _r = createValidator(types_5.MovedIdSchema), exports.validateMovedId = _r.validate, exports.validateMovedIdArray = _r.validateArray;
61
62
  // Sync resource validators
@@ -63,24 +64,35 @@ _s = createValidator(resources_1.FilterSchema), exports.validateFilter = _s.vali
63
64
  _t = createValidator(resources_1.CollaboratorSchema), exports.validateCollaborator = _t.validate, exports.validateCollaboratorArray = _t.validateArray;
64
65
  _u = createValidator(resources_1.CollaboratorStateSchema), exports.validateCollaboratorState = _u.validate, exports.validateCollaboratorStateArray = _u.validateArray;
65
66
  _v = createValidator(resources_1.FolderSchema), exports.validateFolder = _v.validate, exports.validateFolderArray = _v.validateArray;
66
- _w = createValidator(types_4.GoalSchema), exports.validateGoal = _w.validate, exports.validateGoalArray = _w.validateArray;
67
- _x = createValidator(resources_1.NoteSchema), exports.validateNote = _x.validate, exports.validateNoteArray = _x.validateArray;
67
+ _w = createValidator(resources_1.NoteSchema), exports.validateNote = _w.validate, exports.validateNoteArray = _w.validateArray;
68
68
  exports.validateTooltips = createValidator(resources_1.TooltipsSchema).validate;
69
- _y = createValidator(resources_1.WorkspaceFilterSchema), exports.validateWorkspaceFilter = _y.validate, exports.validateWorkspaceFilterArray = _y.validateArray;
70
- _z = createValidator(resources_1.WorkspaceGoalSchema), exports.validateWorkspaceGoal = _z.validate, exports.validateWorkspaceGoalArray = _z.validateArray;
71
- _0 = createValidator(resources_1.CalendarSchema), exports.validateCalendar = _0.validate, exports.validateCalendarArray = _0.validateArray;
72
- _1 = createValidator(resources_1.CalendarAccountSchema), exports.validateCalendarAccount = _1.validate, exports.validateCalendarAccountArray = _1.validateArray;
73
- _2 = createValidator(resources_1.ReminderSchema), exports.validateReminder = _2.validate, exports.validateReminderArray = _2.validateArray;
74
- _3 = createValidator(resources_1.LocationReminderSchema), exports.validateLocationReminder = _3.validate, exports.validateLocationReminderArray = _3.validateArray;
75
- _4 = createValidator(resources_1.CompletedInfoSchema), exports.validateCompletedInfo = _4.validate, exports.validateCompletedInfoArray = _4.validateArray;
76
- _5 = createValidator(resources_1.ViewOptionsSchema), exports.validateViewOptions = _5.validate, exports.validateViewOptionsArray = _5.validateArray;
77
- _6 = createValidator(resources_1.ProjectViewOptionsDefaultsSchema), exports.validateProjectViewOptionsDefaults = _6.validate, exports.validateProjectViewOptionsDefaultsArray = _6.validateArray;
69
+ _x = createValidator(resources_1.WorkspaceFilterSchema), exports.validateWorkspaceFilter = _x.validate, exports.validateWorkspaceFilterArray = _x.validateArray;
70
+ _y = createValidator(resources_1.WorkspaceGoalSchema), exports.validateWorkspaceGoal = _y.validate, exports.validateWorkspaceGoalArray = _y.validateArray;
71
+ _z = createValidator(resources_1.CalendarSchema), exports.validateCalendar = _z.validate, exports.validateCalendarArray = _z.validateArray;
72
+ _0 = createValidator(resources_1.CalendarAccountSchema), exports.validateCalendarAccount = _0.validate, exports.validateCalendarAccountArray = _0.validateArray;
73
+ _1 = createValidator(resources_1.ReminderSchema), exports.validateReminder = _1.validate, exports.validateReminderArray = _1.validateArray;
74
+ _2 = createValidator(resources_1.LocationReminderSchema), exports.validateLocationReminder = _2.validate, exports.validateLocationReminderArray = _2.validateArray;
75
+ _3 = createValidator(resources_1.CompletedInfoSchema), exports.validateCompletedInfo = _3.validate, exports.validateCompletedInfoArray = _3.validateArray;
76
+ _4 = createValidator(resources_1.ViewOptionsSchema), exports.validateViewOptions = _4.validate, exports.validateViewOptionsArray = _4.validateArray;
77
+ _5 = createValidator(resources_1.ProjectViewOptionsDefaultsSchema), exports.validateProjectViewOptionsDefaults = _5.validate, exports.validateProjectViewOptionsDefaultsArray = _5.validateArray;
78
78
  exports.validateUserPlanLimits = createValidator(resources_1.UserPlanLimitsSchema).validate;
79
- _7 = createValidator(resources_1.LiveNotificationSchema), exports.validateLiveNotification = _7.validate, exports.validateLiveNotificationArray = _7.validateArray;
80
- _8 = createValidator(resources_1.SyncWorkspaceSchema), exports.validateSyncWorkspace = _8.validate, exports.validateSyncWorkspaceArray = _8.validateArray;
79
+ _6 = createValidator(resources_1.LiveNotificationSchema), exports.validateLiveNotification = _6.validate, exports.validateLiveNotificationArray = _6.validateArray;
80
+ _7 = createValidator(resources_1.SyncWorkspaceSchema), exports.validateSyncWorkspace = _7.validate, exports.validateSyncWorkspaceArray = _7.validateArray;
81
81
  exports.validateSyncUser = createValidator(resources_1.SyncUserSchema).validate;
82
82
  exports.validateUserSettings = createValidator(resources_1.UserSettingsSchema).validate;
83
- _9 = createValidator(resources_1.SuggestionSchema), exports.validateSuggestion = _9.validate, exports.validateSuggestionArray = _9.validateArray;
83
+ _8 = createValidator(resources_1.SuggestionSchema), exports.validateSuggestion = _8.validate, exports.validateSuggestionArray = _8.validateArray;
84
84
  function parseSyncResponse(raw) {
85
85
  return response_1.SyncResponseSchema.parse(raw);
86
86
  }
87
+ // App management validators
88
+ _9 = createValidator(types_2.AppSchema), exports.validateApp = _9.validate, exports.validateAppArray = _9.validateArray;
89
+ exports.validateAppWithUserCount = createValidator(types_2.AppWithUserCountSchema).validate;
90
+ exports.validateAppSecrets = createValidator(types_2.AppSecretsSchema).validate;
91
+ exports.validateAppVerificationToken = createValidator(types_2.AppVerificationTokenSchema).validate;
92
+ exports.validateAppTestToken = createValidator(types_2.AppTestTokenSchema).validate;
93
+ exports.validateAppDistributionToken = createValidator(types_2.AppDistributionTokenSchema).validate;
94
+ exports.validateAppByDistributionToken = createValidator(types_2.AppByDistributionTokenSchema).validate;
95
+ exports.validateAppWebhook = createValidator(types_2.AppWebhookSchema).validate;
96
+ _10 = createValidator(types_2.AppInstallationSchema), exports.validateAppInstallation = _10.validate, exports.validateAppInstallationArray = _10.validateArray;
97
+ _11 = createValidator(types_2.UserAuthorizationSchema), exports.validateUserAuthorization = _11.validate, exports.validateUserAuthorizationArray = _11.validateArray;
98
+ _12 = createValidator(types_12.UiExtensionSchema), exports.validateUiExtension = _12.validate, exports.validateUiExtensionArray = _12.validateArray;
@@ -21,6 +21,7 @@ export const PERMISSIONS = [
21
21
  'data:delete',
22
22
  'project:delete',
23
23
  'backups:read',
24
+ 'dev:app_console',
24
25
  ];
25
26
  /** Supported token endpoint authentication methods for dynamic client registration. */
26
27
  export const TOKEN_ENDPOINT_AUTH_METHODS = [