sunsama-api 0.1.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 (93) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +215 -0
  3. package/dist/cjs/client/index.js +347 -0
  4. package/dist/cjs/client/index.js.map +1 -0
  5. package/dist/cjs/errors/index.js +110 -0
  6. package/dist/cjs/errors/index.js.map +1 -0
  7. package/dist/cjs/index.js +21 -0
  8. package/dist/cjs/index.js.map +1 -0
  9. package/dist/cjs/queries/fragments/index.js +9 -0
  10. package/dist/cjs/queries/fragments/index.js.map +1 -0
  11. package/dist/cjs/queries/fragments/stream.js +74 -0
  12. package/dist/cjs/queries/fragments/stream.js.map +1 -0
  13. package/dist/cjs/queries/fragments/task.js +500 -0
  14. package/dist/cjs/queries/fragments/task.js.map +1 -0
  15. package/dist/cjs/queries/index.js +11 -0
  16. package/dist/cjs/queries/index.js.map +1 -0
  17. package/dist/cjs/queries/streams.js +19 -0
  18. package/dist/cjs/queries/streams.js.map +1 -0
  19. package/dist/cjs/queries/tasks.js +41 -0
  20. package/dist/cjs/queries/tasks.js.map +1 -0
  21. package/dist/cjs/queries/user.js +472 -0
  22. package/dist/cjs/queries/user.js.map +1 -0
  23. package/dist/cjs/types/api.js +9 -0
  24. package/dist/cjs/types/api.js.map +1 -0
  25. package/dist/cjs/types/client.js +6 -0
  26. package/dist/cjs/types/client.js.map +1 -0
  27. package/dist/cjs/types/common.js +6 -0
  28. package/dist/cjs/types/common.js.map +1 -0
  29. package/dist/cjs/types/index.js +8 -0
  30. package/dist/cjs/types/index.js.map +1 -0
  31. package/dist/cjs/utils/index.js +63 -0
  32. package/dist/cjs/utils/index.js.map +1 -0
  33. package/dist/esm/client/index.js +348 -0
  34. package/dist/esm/client/index.js.map +1 -0
  35. package/dist/esm/errors/index.js +105 -0
  36. package/dist/esm/errors/index.js.map +1 -0
  37. package/dist/esm/index.js +16 -0
  38. package/dist/esm/index.js.map +1 -0
  39. package/dist/esm/queries/fragments/index.js +6 -0
  40. package/dist/esm/queries/fragments/index.js.map +1 -0
  41. package/dist/esm/queries/fragments/stream.js +71 -0
  42. package/dist/esm/queries/fragments/stream.js.map +1 -0
  43. package/dist/esm/queries/fragments/task.js +497 -0
  44. package/dist/esm/queries/fragments/task.js.map +1 -0
  45. package/dist/esm/queries/index.js +8 -0
  46. package/dist/esm/queries/index.js.map +1 -0
  47. package/dist/esm/queries/streams.js +16 -0
  48. package/dist/esm/queries/streams.js.map +1 -0
  49. package/dist/esm/queries/tasks.js +38 -0
  50. package/dist/esm/queries/tasks.js.map +1 -0
  51. package/dist/esm/queries/user.js +469 -0
  52. package/dist/esm/queries/user.js.map +1 -0
  53. package/dist/esm/types/api.js +8 -0
  54. package/dist/esm/types/api.js.map +1 -0
  55. package/dist/esm/types/client.js +5 -0
  56. package/dist/esm/types/client.js.map +1 -0
  57. package/dist/esm/types/common.js +5 -0
  58. package/dist/esm/types/common.js.map +1 -0
  59. package/dist/esm/types/index.js +7 -0
  60. package/dist/esm/types/index.js.map +1 -0
  61. package/dist/esm/utils/index.js +57 -0
  62. package/dist/esm/utils/index.js.map +1 -0
  63. package/dist/types/client/index.d.ts +109 -0
  64. package/dist/types/client/index.d.ts.map +1 -0
  65. package/dist/types/errors/index.d.ts +67 -0
  66. package/dist/types/errors/index.d.ts.map +1 -0
  67. package/dist/types/index.d.ts +14 -0
  68. package/dist/types/index.d.ts.map +1 -0
  69. package/dist/types/queries/fragments/index.d.ts +6 -0
  70. package/dist/types/queries/fragments/index.d.ts.map +1 -0
  71. package/dist/types/queries/fragments/stream.d.ts +5 -0
  72. package/dist/types/queries/fragments/stream.d.ts.map +1 -0
  73. package/dist/types/queries/fragments/task.d.ts +8 -0
  74. package/dist/types/queries/fragments/task.d.ts.map +1 -0
  75. package/dist/types/queries/index.d.ts +8 -0
  76. package/dist/types/queries/index.d.ts.map +1 -0
  77. package/dist/types/queries/streams.d.ts +5 -0
  78. package/dist/types/queries/streams.d.ts.map +1 -0
  79. package/dist/types/queries/tasks.d.ts +6 -0
  80. package/dist/types/queries/tasks.d.ts.map +1 -0
  81. package/dist/types/queries/user.d.ts +5 -0
  82. package/dist/types/queries/user.d.ts.map +1 -0
  83. package/dist/types/types/api.d.ts +838 -0
  84. package/dist/types/types/api.d.ts.map +1 -0
  85. package/dist/types/types/client.d.ts +30 -0
  86. package/dist/types/types/client.d.ts.map +1 -0
  87. package/dist/types/types/common.d.ts +58 -0
  88. package/dist/types/types/common.d.ts.map +1 -0
  89. package/dist/types/types/index.d.ts +9 -0
  90. package/dist/types/types/index.d.ts.map +1 -0
  91. package/dist/types/utils/index.d.ts +35 -0
  92. package/dist/types/utils/index.d.ts.map +1 -0
  93. package/package.json +90 -0
@@ -0,0 +1,838 @@
1
+ /**
2
+ * API response and data types
3
+ *
4
+ * These types represent the structure of data returned by the Sunsama API.
5
+ * They will be populated based on the actual API documentation.
6
+ */
7
+ import type { DocumentNode } from 'graphql';
8
+ /**
9
+ * Base API response structure
10
+ */
11
+ export interface ApiResponse<T = unknown> {
12
+ /** Response data */
13
+ data: T;
14
+ /** Response metadata */
15
+ meta?: {
16
+ /** Total number of items (for paginated responses) */
17
+ total?: number;
18
+ /** Current page (for paginated responses) */
19
+ page?: number;
20
+ /** Items per page (for paginated responses) */
21
+ limit?: number;
22
+ };
23
+ }
24
+ /**
25
+ * Error response structure
26
+ */
27
+ export interface ApiErrorResponse {
28
+ /** Error message */
29
+ message: string;
30
+ /** Error code */
31
+ code?: string;
32
+ /** Additional error details */
33
+ details?: Record<string, unknown>;
34
+ }
35
+ /**
36
+ * Pagination parameters
37
+ */
38
+ export interface PaginationParams {
39
+ /** Page number (1-based) */
40
+ page?: number;
41
+ /** Number of items per page */
42
+ limit?: number;
43
+ /** Sort field */
44
+ sort?: string;
45
+ /** Sort order */
46
+ order?: 'asc' | 'desc';
47
+ }
48
+ /**
49
+ * Common date range filter
50
+ */
51
+ export interface DateRangeFilter {
52
+ /** Start date (ISO string) */
53
+ start?: string;
54
+ /** End date (ISO string) */
55
+ end?: string;
56
+ }
57
+ /**
58
+ * GraphQL response structure
59
+ */
60
+ export interface GraphQLResponse<T = unknown> {
61
+ data?: T;
62
+ errors?: Array<{
63
+ message: string;
64
+ locations?: Array<{
65
+ line: number;
66
+ column: number;
67
+ }>;
68
+ path?: Array<string | number>;
69
+ }>;
70
+ }
71
+ /**
72
+ * GraphQL request structure
73
+ */
74
+ export interface GraphQLRequest<TVariables = Record<string, unknown>> {
75
+ operationName: string;
76
+ variables: TVariables;
77
+ query: string | DocumentNode;
78
+ }
79
+ /**
80
+ * Calendar item structures
81
+ */
82
+ export interface CalendarItemGoogle {
83
+ summary?: string;
84
+ summaryOverride?: string;
85
+ timeZone?: string;
86
+ selected?: boolean;
87
+ accessRole?: string;
88
+ accountId?: string;
89
+ __typename: 'CalendarItemGoogle';
90
+ }
91
+ export interface CalendarItemMicrosoftOwner {
92
+ address?: string;
93
+ name?: string;
94
+ __typename: 'CalendarItemMicrosoftOwner';
95
+ }
96
+ export interface CalendarItemMicrosoft {
97
+ id?: string;
98
+ name?: string;
99
+ color?: string;
100
+ hexColor?: string;
101
+ isDefaultCalendar?: boolean;
102
+ canShare?: boolean;
103
+ canViewPrivateItems?: boolean;
104
+ canEdit?: boolean;
105
+ isRemovable?: boolean;
106
+ allowedOnlineMeetingProviders?: string[];
107
+ defaultOnlineMeetingProvider?: string;
108
+ isTallyingResponse?: boolean;
109
+ owner?: CalendarItemMicrosoftOwner;
110
+ primary?: boolean;
111
+ accountId?: string;
112
+ __typename: 'CalendarItemMicrosoft';
113
+ }
114
+ export interface CalendarItem {
115
+ id: string;
116
+ accountId?: string;
117
+ google?: CalendarItemGoogle;
118
+ microsoft?: CalendarItemMicrosoft;
119
+ __typename: 'CalendarItem';
120
+ }
121
+ export interface Calendar {
122
+ items: CalendarItem[];
123
+ __typename: 'Calendar';
124
+ }
125
+ /**
126
+ * Services structures
127
+ */
128
+ export interface ServiceGoogle {
129
+ scope?: string;
130
+ id?: string;
131
+ email?: string;
132
+ name?: string;
133
+ picture?: string;
134
+ locale?: string;
135
+ __typename: 'ServiceGoogle';
136
+ }
137
+ export interface ServiceMicrosoft {
138
+ scope?: string;
139
+ id?: string;
140
+ email?: string;
141
+ name?: string;
142
+ isPersonalAccount?: boolean;
143
+ __typename: 'ServiceMicrosoft';
144
+ }
145
+ export interface ServicePhoneNumber {
146
+ number?: string;
147
+ verified?: boolean;
148
+ otpExpiresAt?: string;
149
+ __typename: 'ServicePhoneNumber';
150
+ }
151
+ export interface Services {
152
+ google?: ServiceGoogle;
153
+ microsoft?: ServiceMicrosoft;
154
+ phoneNumber?: ServicePhoneNumber;
155
+ ssoEnforced?: boolean;
156
+ __typename: 'Services';
157
+ }
158
+ /**
159
+ * User preferences structures
160
+ */
161
+ export interface TimeSlot {
162
+ hour: number;
163
+ minute: number;
164
+ __typename: 'TimeSlot';
165
+ }
166
+ export interface SchedulingHours {
167
+ start: TimeSlot;
168
+ end: TimeSlot;
169
+ __typename: 'SchedulingHours';
170
+ }
171
+ export interface CustomKeyboardShortcut {
172
+ id: string;
173
+ disabled?: boolean;
174
+ global?: boolean;
175
+ key?: string;
176
+ metaKey?: boolean;
177
+ ctrlKey?: boolean;
178
+ shiftKey?: boolean;
179
+ __typename: 'CustomKeyboardShortcut';
180
+ }
181
+ export interface UserPreferences {
182
+ clockStyle?: string;
183
+ defaultCalendarView?: string;
184
+ defaultHomeView?: string;
185
+ defaultMainPanel?: string;
186
+ defaultMobileCalendarView?: string;
187
+ defaultHideTasks?: boolean;
188
+ hideTeamEvtCopies?: boolean;
189
+ hideMessenger?: boolean;
190
+ disableSpellcheck?: boolean;
191
+ channelRecommendations?: boolean;
192
+ plannedTimeRecommendations?: boolean;
193
+ subtaskPlannedTimeRecommendations?: boolean;
194
+ startDayOfWeekOffset?: number;
195
+ workingSessionTransparency?: string;
196
+ workingSessionVisibility?: string;
197
+ workingSessionDuration?: number;
198
+ promptToUpdateStatus?: boolean;
199
+ darkMode?: boolean;
200
+ keyboardShortcuts?: boolean;
201
+ customKeyboardShortcuts?: CustomKeyboardShortcut[];
202
+ autoArchiveThreshold?: number;
203
+ showDeclinedEvents?: boolean;
204
+ usePlannedTimeAsActualTime?: boolean;
205
+ rollToTop?: boolean;
206
+ includeWeekendInReflection?: boolean;
207
+ planningAutoRollover?: boolean;
208
+ autoFocus?: boolean;
209
+ focusBarDisabledTriggers?: string[];
210
+ workloadThreshold?: number;
211
+ importEventFilters?: string[];
212
+ autoImportEvents?: boolean;
213
+ importEventCompletionSync?: boolean;
214
+ workingSessionCalendarReminder?: boolean;
215
+ workingSessionBuffer?: number;
216
+ focusModeNextUpReminder?: boolean;
217
+ autoRescheduleWorkingSessionConflicts?: boolean;
218
+ autoRescheduleWorkingSessionCompletions?: boolean;
219
+ schedulingHours?: SchedulingHours;
220
+ defaultEmailClient?: string;
221
+ timerNotificationsEnabled?: boolean;
222
+ timerNotificationsSoundId?: string;
223
+ timerPomodoroNotificationsSoundId?: string;
224
+ timerNotificationsVolume?: number;
225
+ timerNotificationsTimeRemainingTriggers?: number[];
226
+ endOfDayMessageId?: string;
227
+ endOfDayCustomMessage?: string;
228
+ autoBreak?: boolean;
229
+ defaultTargetFocusDuration?: number;
230
+ defaultTargetBreakDuration?: number;
231
+ defaultFocusTimerView?: string;
232
+ completedTaskCalendarPinStyle?: string;
233
+ hideCompletedTasks?: boolean;
234
+ insertTaskPosition?: string;
235
+ chatToolFocusSyncTrigger?: string;
236
+ chatToolFocusSyncUpdateStatus?: boolean;
237
+ chatToolFocusSyncUpdateDnd?: boolean;
238
+ chatToolFocusSyncPrivacy?: string;
239
+ chatToolFocusSyncStatusEmoji?: string;
240
+ navigationPanelStyle?: string;
241
+ preferredAILanguage?: string;
242
+ preferredLanguage?: string;
243
+ visualizeTaskProjectedTimeOnCalendar?: boolean;
244
+ visualizeTaskActualTimeOnCalendar?: boolean;
245
+ __typename: 'UserPreferences';
246
+ }
247
+ /**
248
+ * Notification settings
249
+ */
250
+ export interface NotificationSetting {
251
+ subscribed: boolean;
252
+ channels: string[];
253
+ __typename: string;
254
+ }
255
+ export interface NotifySettings {
256
+ inviteeResponse?: NotificationSetting;
257
+ invitedToEvent?: NotificationSetting;
258
+ eventUpdated?: NotificationSetting;
259
+ eventCancelled?: NotificationSetting;
260
+ newComments?: NotificationSetting;
261
+ shareTasks?: NotificationSetting;
262
+ taskComment?: NotificationSetting;
263
+ taskStream?: NotificationSetting;
264
+ taskAssignee?: NotificationSetting;
265
+ taskCompletion?: NotificationSetting;
266
+ taskSchedule?: NotificationSetting;
267
+ taskCreation?: NotificationSetting;
268
+ eventReminders?: NotificationSetting;
269
+ dossier?: NotificationSetting;
270
+ planYourDay?: NotificationSetting;
271
+ weeklyStats?: NotificationSetting;
272
+ weekReview?: NotificationSetting;
273
+ systemUpdates?: NotificationSetting;
274
+ dailyWrapSeen?: NotificationSetting;
275
+ dailyWrapReply?: NotificationSetting;
276
+ __typename: 'NotifySettings';
277
+ }
278
+ /**
279
+ * App status structures
280
+ */
281
+ export interface AppStatus {
282
+ status?: string;
283
+ deferralDate?: string;
284
+ __typename: string;
285
+ }
286
+ export interface DesktopApp {
287
+ darwin?: AppStatus;
288
+ win32?: AppStatus;
289
+ linux?: AppStatus;
290
+ __typename: 'DesktopApp';
291
+ }
292
+ export interface MobileApp {
293
+ status?: string;
294
+ os?: string;
295
+ lastModified?: string;
296
+ __typename: 'MobileApp';
297
+ }
298
+ /**
299
+ * Planning and scheduling structures
300
+ */
301
+ export interface DayBoundary {
302
+ hour: number;
303
+ minute: number;
304
+ disabled?: boolean;
305
+ __typename: string;
306
+ }
307
+ export interface WeeklySchedule {
308
+ hour: number;
309
+ minute: number;
310
+ isoWeekday: number;
311
+ lastWeekPlanned?: string;
312
+ weeksPlanned?: number;
313
+ disabled?: boolean;
314
+ __typename: string;
315
+ }
316
+ export interface DailyPlanning {
317
+ snoozedUntilDate?: string;
318
+ lastDayPlanned?: string;
319
+ disabledSteps?: string[];
320
+ importEventsWithoutInvitees?: boolean;
321
+ __typename: 'DailyPlanning';
322
+ }
323
+ export interface DailyShutdown {
324
+ snoozedUntilDate?: string;
325
+ lastDayShutdown?: string;
326
+ __typename: 'DailyShutdown';
327
+ }
328
+ /**
329
+ * Other user data structures
330
+ */
331
+ export interface PrimaryGroup {
332
+ groupId: string;
333
+ __typename: 'PrimaryGroup';
334
+ }
335
+ export interface UserProfile {
336
+ profilePictureURL?: string;
337
+ firstname?: string;
338
+ lastname?: string;
339
+ timezone?: string;
340
+ timezoneWarningDisabled?: boolean;
341
+ profileThumbs?: {
342
+ image_24?: string;
343
+ image_32?: string;
344
+ image_48?: string;
345
+ image_72?: string;
346
+ image_192?: string;
347
+ __typename: 'ProfileThumbs';
348
+ };
349
+ useCase?: string;
350
+ onboardingEventSent?: boolean;
351
+ __typename: 'UserProfile';
352
+ }
353
+ export interface UserEmail {
354
+ address: string;
355
+ verified: boolean;
356
+ __typename: 'UserEmail';
357
+ }
358
+ export interface Contacts {
359
+ integrationEnabled?: boolean;
360
+ usesNewPeopleApi?: boolean;
361
+ accountId?: string;
362
+ __typename: 'Contacts';
363
+ }
364
+ export interface EmailCourse {
365
+ id: string;
366
+ status: string;
367
+ __typename: 'EmailCourse';
368
+ }
369
+ export interface FacebookTracking {
370
+ _fbp?: string;
371
+ _fbc?: string;
372
+ __typename: 'FacebookTracking';
373
+ }
374
+ export interface Tracking {
375
+ facebook?: FacebookTracking;
376
+ chatSetupConfigId?: string;
377
+ __typename: 'Tracking';
378
+ }
379
+ export interface Proficiency {
380
+ id: string;
381
+ count: number;
382
+ proficient: boolean;
383
+ proficientAt?: string;
384
+ firstPerformedAt?: string;
385
+ __typename: 'Proficiency';
386
+ }
387
+ export interface ReminderSchedule {
388
+ enabled: boolean;
389
+ isoDayIndex: number;
390
+ time: TimeSlot;
391
+ __typename: 'ReminderSchedule';
392
+ }
393
+ export interface Reminder {
394
+ schedule: ReminderSchedule;
395
+ nextDeliveryAt?: string;
396
+ __typename: 'Reminder';
397
+ }
398
+ export interface ScheduledCall {
399
+ workflow: string;
400
+ reminder: Reminder;
401
+ __typename: 'ScheduledCall';
402
+ }
403
+ export interface Assistant {
404
+ scheduledCalls?: ScheduledCall[];
405
+ __typename: 'Assistant';
406
+ }
407
+ export interface DailyWrap {
408
+ reminder: Reminder;
409
+ __typename: 'DailyWrap';
410
+ }
411
+ export interface DailyCatchUp {
412
+ reminder: Reminder;
413
+ __typename: 'DailyCatchUp';
414
+ }
415
+ /**
416
+ * Complete User profile data
417
+ */
418
+ export interface User {
419
+ _id: string;
420
+ activationDate?: string;
421
+ admin?: boolean;
422
+ aka?: string;
423
+ calendar?: Calendar;
424
+ services?: Services;
425
+ emails: UserEmail[];
426
+ primaryGroup?: PrimaryGroup;
427
+ onboarding?: unknown;
428
+ preferences: UserPreferences;
429
+ contacts?: Contacts;
430
+ createdAt?: string;
431
+ dailyPlanning?: DailyPlanning;
432
+ dailyShutdown?: DailyShutdown;
433
+ daysPlanned?: number;
434
+ daysShutdown?: number;
435
+ desktopApp?: DesktopApp;
436
+ mobileApp?: MobileApp;
437
+ lastAnnouncementCheckDate?: string;
438
+ lastModified?: string;
439
+ nodeId?: string;
440
+ notifySettings?: NotifySettings;
441
+ profile: UserProfile;
442
+ toursCompleted?: string[];
443
+ username?: string;
444
+ waitList?: unknown;
445
+ weeklyPlanning?: WeeklySchedule;
446
+ weeklyReview?: WeeklySchedule;
447
+ lastArchiveCheckDate?: string;
448
+ integrationRequests?: unknown;
449
+ dayStart?: DayBoundary;
450
+ plannedDayStart?: DayBoundary;
451
+ dayEnd?: DayBoundary;
452
+ waitlistId?: string;
453
+ trialPeriod?: unknown;
454
+ qualificationAssessment?: unknown;
455
+ disappointmentIndex?: unknown;
456
+ emailCourses?: EmailCourse[];
457
+ tracking?: Tracking;
458
+ proficiencies?: Proficiency[];
459
+ assistant?: Assistant;
460
+ dailyWrap?: DailyWrap;
461
+ dailyCatchUp?: DailyCatchUp;
462
+ __typename: 'User';
463
+ }
464
+ /**
465
+ * Response for getUser query
466
+ */
467
+ export interface GetUserResponse {
468
+ currentUser: User;
469
+ }
470
+ /**
471
+ * Input for getTasksByDay query
472
+ */
473
+ export interface GetTasksByDayInput {
474
+ day: string;
475
+ timezone: string;
476
+ userId: string;
477
+ groupId: string;
478
+ }
479
+ /**
480
+ * Task subtask structure
481
+ */
482
+ export interface TaskSubtask {
483
+ _id: string;
484
+ title: string;
485
+ completedDate?: string | null;
486
+ completedBy?: string | null;
487
+ timeEstimate?: number | null;
488
+ actualTime?: TaskActualTime | null;
489
+ snooze?: TaskSnooze | null;
490
+ scheduledTime?: TaskScheduledTime | null;
491
+ integration?: TaskIntegration | null;
492
+ mergedTaskId?: string | null;
493
+ recommendedTimeEstimate?: number | null;
494
+ __typename: 'TaskSubtask';
495
+ }
496
+ /**
497
+ * Task snooze information
498
+ */
499
+ export interface TaskSnooze {
500
+ userId: string;
501
+ date: string;
502
+ until: string;
503
+ __typename: 'TaskSnooze';
504
+ }
505
+ /**
506
+ * Task actual time tracking
507
+ */
508
+ export interface TaskActualTime {
509
+ userId: string;
510
+ startDate: string;
511
+ endDate: string;
512
+ duration: number;
513
+ isTimerEntry: boolean;
514
+ __typename: 'TaskActualTime';
515
+ }
516
+ /**
517
+ * Task scheduled time information
518
+ */
519
+ export interface TaskScheduledTime {
520
+ eventId: string;
521
+ serviceIds: {
522
+ google?: string | null;
523
+ microsoft?: string | null;
524
+ microsoftUniqueId?: string | null;
525
+ apple?: string | null;
526
+ appleRecurrenceId?: string | null;
527
+ sunsama?: string | null;
528
+ __typename: 'CalendarEventServiceIds';
529
+ };
530
+ calendarId: string;
531
+ userId: string;
532
+ startDate: string;
533
+ endDate: string;
534
+ isAllDay: boolean;
535
+ importedFromCalendar: boolean;
536
+ __typename: 'TaskScheduledTime';
537
+ }
538
+ /**
539
+ * Task event information
540
+ */
541
+ export interface TaskEventInfo {
542
+ eventId: string;
543
+ clone: boolean;
544
+ __typename: 'TaskEventInfo';
545
+ }
546
+ /**
547
+ * Task ordering information
548
+ */
549
+ export interface TaskOrdering {
550
+ ordinal: number;
551
+ panelDate: string;
552
+ channelId?: string | null;
553
+ userId: string;
554
+ __typename: 'TaskOrdering';
555
+ }
556
+ /**
557
+ * Task backlog ordering
558
+ */
559
+ export interface TaskBacklogOrdering {
560
+ horizonType: string;
561
+ position: number;
562
+ streamId: string;
563
+ __typename: 'TaskBacklogOrdering';
564
+ }
565
+ /**
566
+ * Task sequence information for recurring tasks
567
+ */
568
+ export interface TaskSequence {
569
+ date: string;
570
+ id: string;
571
+ expiresDate: string;
572
+ ruleString: string;
573
+ searchable: boolean;
574
+ forked: boolean;
575
+ final: boolean;
576
+ estimatedStart?: {
577
+ hour: number;
578
+ minute: number;
579
+ __typename: 'TaskSequenceEstimatedStart';
580
+ } | null;
581
+ master?: string | null;
582
+ finalDate?: string | null;
583
+ template?: unknown | null;
584
+ __typename: 'TaskSequence';
585
+ }
586
+ /**
587
+ * Task ritual information
588
+ */
589
+ export interface TaskRitual {
590
+ id: string;
591
+ period: {
592
+ interval: string;
593
+ startCalendarDay: string;
594
+ endCalendarDay: string;
595
+ __typename: string;
596
+ };
597
+ __typename: 'TaskRitual';
598
+ }
599
+ /**
600
+ * Task run date information
601
+ */
602
+ export interface TaskRunDate {
603
+ startDate: string;
604
+ endDate: string;
605
+ __typename: 'TaskRunDate';
606
+ }
607
+ /**
608
+ * Task time horizon
609
+ */
610
+ export interface TaskTimeHorizon {
611
+ type: string;
612
+ relativeTo: string;
613
+ __typename: 'TaskTimeHorizon';
614
+ }
615
+ /**
616
+ * Task comment structure
617
+ */
618
+ export interface TaskComment {
619
+ userId: string;
620
+ text: string;
621
+ markdown: string;
622
+ editorVersion: number;
623
+ groupId: string;
624
+ createdAt: string;
625
+ editedAt?: string;
626
+ deleted: boolean;
627
+ file?: string;
628
+ fileMetadata?: {
629
+ url: string;
630
+ filename: string;
631
+ mimetype: string;
632
+ size: number;
633
+ width?: number;
634
+ height?: number;
635
+ __typename: 'TaskFileMetadata';
636
+ };
637
+ __typename: 'TaskComment';
638
+ }
639
+ /**
640
+ * Base task integration interface
641
+ */
642
+ export interface TaskIntegration {
643
+ service: string;
644
+ __typename: string;
645
+ }
646
+ /**
647
+ * Website integration for tasks
648
+ */
649
+ export interface TaskWebsiteIntegration extends TaskIntegration {
650
+ service: 'website';
651
+ identifier: {
652
+ url: string;
653
+ private: boolean;
654
+ canonicalUrl?: string | null;
655
+ description?: string | null;
656
+ faviconUrl?: string | null;
657
+ imageUrl?: string | null;
658
+ siteName?: string | null;
659
+ title?: string | null;
660
+ __typename: 'TaskWebsiteIntegrationIdentifier';
661
+ };
662
+ __typename: 'TaskWebsiteIntegration';
663
+ }
664
+ /**
665
+ * Google Calendar integration for tasks
666
+ */
667
+ export interface TaskGoogleCalendarIntegration extends TaskIntegration {
668
+ service: 'googleCalendar';
669
+ identifier: {
670
+ sunsamaId: string;
671
+ __typename: 'TaskGoogleCalendarIntegrationIdentifier';
672
+ };
673
+ __typename: 'TaskGoogleCalendarIntegration';
674
+ }
675
+ /**
676
+ * Main Task structure
677
+ */
678
+ export interface Task {
679
+ _id: string;
680
+ groupId: string;
681
+ taskType: string;
682
+ streamIds: string[];
683
+ recommendedStreamId?: string | null;
684
+ eventInfo?: TaskEventInfo | null;
685
+ seededEventIds?: string[] | null;
686
+ private: boolean;
687
+ assigneeId: string;
688
+ createdBy: string;
689
+ integration?: TaskIntegration | null;
690
+ deleted: boolean;
691
+ text: string;
692
+ notes: string;
693
+ notesMarkdown?: string | null;
694
+ notesChecksum?: string | null;
695
+ editorVersion?: number | null;
696
+ collabSnapshot?: unknown | null;
697
+ completed: boolean;
698
+ completedBy?: string | null;
699
+ completeDate?: string | null;
700
+ completeOn?: string | null;
701
+ archivedAt?: string | null;
702
+ duration?: number | null;
703
+ runDate?: TaskRunDate | null;
704
+ snooze?: TaskSnooze | null;
705
+ timeHorizon?: TaskTimeHorizon | null;
706
+ dueDate?: string | null;
707
+ comments: TaskComment[];
708
+ orderings: TaskOrdering[];
709
+ backlogOrderings: TaskBacklogOrdering[];
710
+ subtasks: TaskSubtask[];
711
+ subtasksCollapsed?: boolean | null;
712
+ sequence?: TaskSequence | null;
713
+ followers: string[];
714
+ recommendedTimeEstimate?: number | null;
715
+ timeEstimate?: number | null;
716
+ actualTime: TaskActualTime[];
717
+ scheduledTime: TaskScheduledTime[];
718
+ createdAt: string;
719
+ lastModified: string;
720
+ objectiveId?: string | null;
721
+ ritual?: TaskRitual | null;
722
+ __typename: 'Task';
723
+ }
724
+ /**
725
+ * Response for getTasksByDay query
726
+ */
727
+ export interface GetTasksByDayResponse {
728
+ tasksByDayV2: Task[];
729
+ }
730
+ /**
731
+ * Input for getTasksBacklog query
732
+ */
733
+ export interface GetTasksBacklogInput {
734
+ userId: string;
735
+ groupId: string;
736
+ }
737
+ /**
738
+ * Response for getTasksBacklog query
739
+ */
740
+ export interface GetTasksBacklogResponse {
741
+ tasksBacklog: Task[];
742
+ }
743
+ /**
744
+ * Stream standup rule structure
745
+ */
746
+ export interface StreamStandupRule {
747
+ isoDays: string[];
748
+ hour: number;
749
+ minute: number;
750
+ __typename: 'StreamStandupRule';
751
+ }
752
+ /**
753
+ * Stream standup configuration
754
+ */
755
+ export interface StreamStandup {
756
+ channel: string;
757
+ rule: StreamStandupRule;
758
+ nextStandupDate?: string | null;
759
+ lastStandupDate?: string | null;
760
+ timezone: string;
761
+ __typename: 'StreamStandup';
762
+ }
763
+ /**
764
+ * Stream edit trail entry
765
+ */
766
+ export interface StreamEditTrail {
767
+ userId: string;
768
+ editDate: string;
769
+ __typename: 'StreamEditTrail';
770
+ }
771
+ /**
772
+ * Stream project integration
773
+ */
774
+ export interface StreamProjectIntegration {
775
+ integration: string;
776
+ projectId: string;
777
+ accountId: string;
778
+ userId: string;
779
+ __typename: 'StreamProjectIntegration';
780
+ }
781
+ /**
782
+ * Stream schedule time slot
783
+ */
784
+ export interface StreamScheduleTimeSlot {
785
+ id: string;
786
+ dayIndex: number;
787
+ start: TimeSlot;
788
+ end: TimeSlot;
789
+ __typename: 'StreamScheduleTimeSlot';
790
+ }
791
+ /**
792
+ * Stream schedule for a user
793
+ */
794
+ export interface StreamSchedule {
795
+ userId: string;
796
+ timeSpans: StreamScheduleTimeSlot[];
797
+ __typename: 'StreamSchedule';
798
+ }
799
+ /**
800
+ * Stream structure
801
+ */
802
+ export interface Stream {
803
+ _id: string;
804
+ groupId: string;
805
+ createdAt: string;
806
+ createdBy: string;
807
+ streamName: string;
808
+ category?: string | null;
809
+ categoryStreamId?: string | null;
810
+ personal?: boolean | null;
811
+ description: string;
812
+ status: string;
813
+ lastModified: string;
814
+ slackChannelId?: string | null;
815
+ slackAccountId?: string | null;
816
+ standup?: StreamStandup | null;
817
+ editTrail: StreamEditTrail[];
818
+ color: string;
819
+ memberIds: string[];
820
+ private: boolean;
821
+ projectIntegrations: StreamProjectIntegration[];
822
+ schedules: StreamSchedule[];
823
+ deleted: boolean;
824
+ __typename: 'Stream';
825
+ }
826
+ /**
827
+ * Input for getStreamsByGroupId query
828
+ */
829
+ export interface GetStreamsByGroupIdInput {
830
+ groupId: string;
831
+ }
832
+ /**
833
+ * Response for getStreamsByGroupId query
834
+ */
835
+ export interface GetStreamsByGroupIdResponse {
836
+ streamsByGroupId: Stream[];
837
+ }
838
+ //# sourceMappingURL=api.d.ts.map