@immich/sdk 2.5.2 → 2.5.3

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.
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Immich
3
- * 2.5.2
3
+ * 2.5.3
4
4
  * DO NOT MODIFY - This file has been generated using oazapfts.
5
5
  * See https://www.npmjs.com/package/oazapfts
6
6
  */
@@ -10,29 +10,46 @@ export declare const servers: {
10
10
  server1: string;
11
11
  };
12
12
  export type UserResponseDto = {
13
+ /** Avatar color */
13
14
  avatarColor: UserAvatarColor;
15
+ /** User email */
14
16
  email: string;
17
+ /** User ID */
15
18
  id: string;
19
+ /** User name */
16
20
  name: string;
21
+ /** Profile change date */
17
22
  profileChangedAt: string;
23
+ /** Profile image path */
18
24
  profileImagePath: string;
19
25
  };
20
26
  export type ActivityResponseDto = {
27
+ /** Asset ID (if activity is for an asset) */
21
28
  assetId: string | null;
29
+ /** Comment text (for comment activities) */
22
30
  comment?: string | null;
31
+ /** Creation date */
23
32
  createdAt: string;
33
+ /** Activity ID */
24
34
  id: string;
35
+ /** Activity type */
25
36
  "type": ReactionType;
26
37
  user: UserResponseDto;
27
38
  };
28
39
  export type ActivityCreateDto = {
40
+ /** Album ID */
29
41
  albumId: string;
42
+ /** Asset ID (if activity is for an asset) */
30
43
  assetId?: string;
44
+ /** Comment text (required if type is comment) */
31
45
  comment?: string;
46
+ /** Activity type (like or comment) */
32
47
  "type": ReactionType;
33
48
  };
34
49
  export type ActivityStatisticsResponseDto = {
50
+ /** Number of comments */
35
51
  comments: number;
52
+ /** Number of likes */
36
53
  likes: number;
37
54
  };
38
55
  export type DatabaseBackupDeleteDto = {
@@ -49,25 +66,34 @@ export type DatabaseBackupUploadDto = {
49
66
  file?: Blob;
50
67
  };
51
68
  export type SetMaintenanceModeDto = {
69
+ /** Maintenance action */
52
70
  action: MaintenanceAction;
71
+ /** Restore backup filename */
53
72
  restoreBackupFilename?: string;
54
73
  };
55
74
  export type MaintenanceDetectInstallStorageFolderDto = {
75
+ /** Number of files in the folder */
56
76
  files: number;
77
+ /** Storage folder */
57
78
  folder: StorageFolder;
79
+ /** Whether the folder is readable */
58
80
  readable: boolean;
81
+ /** Whether the folder is writable */
59
82
  writable: boolean;
60
83
  };
61
84
  export type MaintenanceDetectInstallResponseDto = {
62
85
  storage: MaintenanceDetectInstallStorageFolderDto[];
63
86
  };
64
87
  export type MaintenanceLoginDto = {
88
+ /** Maintenance token */
65
89
  token?: string;
66
90
  };
67
91
  export type MaintenanceAuthDto = {
92
+ /** Maintenance username */
68
93
  username: string;
69
94
  };
70
95
  export type MaintenanceStatusResponseDto = {
96
+ /** Maintenance action */
71
97
  action: MaintenanceAction;
72
98
  active: boolean;
73
99
  error?: string;
@@ -75,137 +101,224 @@ export type MaintenanceStatusResponseDto = {
75
101
  task?: string;
76
102
  };
77
103
  export type NotificationCreateDto = {
104
+ /** Additional notification data */
78
105
  data?: object;
106
+ /** Notification description */
79
107
  description?: string | null;
108
+ /** Notification level */
80
109
  level?: NotificationLevel;
110
+ /** Date when notification was read */
81
111
  readAt?: string | null;
112
+ /** Notification title */
82
113
  title: string;
114
+ /** Notification type */
83
115
  "type"?: NotificationType;
116
+ /** User ID to send notification to */
84
117
  userId: string;
85
118
  };
86
119
  export type NotificationDto = {
120
+ /** Creation date */
87
121
  createdAt: string;
122
+ /** Additional notification data */
88
123
  data?: object;
124
+ /** Notification description */
89
125
  description?: string;
126
+ /** Notification ID */
90
127
  id: string;
128
+ /** Notification level */
91
129
  level: NotificationLevel;
130
+ /** Date when notification was read */
92
131
  readAt?: string;
132
+ /** Notification title */
93
133
  title: string;
134
+ /** Notification type */
94
135
  "type": NotificationType;
95
136
  };
96
137
  export type TemplateDto = {
138
+ /** Template name */
97
139
  template: string;
98
140
  };
99
141
  export type TemplateResponseDto = {
142
+ /** Template HTML content */
100
143
  html: string;
144
+ /** Template name */
101
145
  name: string;
102
146
  };
103
147
  export type SystemConfigSmtpTransportDto = {
148
+ /** SMTP server hostname */
104
149
  host: string;
150
+ /** Whether to ignore SSL certificate errors */
105
151
  ignoreCert: boolean;
152
+ /** SMTP password */
106
153
  password: string;
154
+ /** SMTP server port */
107
155
  port: number;
156
+ /** Whether to use secure connection (TLS/SSL) */
108
157
  secure: boolean;
158
+ /** SMTP username */
109
159
  username: string;
110
160
  };
111
161
  export type SystemConfigSmtpDto = {
162
+ /** Whether SMTP email notifications are enabled */
112
163
  enabled: boolean;
164
+ /** Email address to send from */
113
165
  "from": string;
166
+ /** Email address for replies */
114
167
  replyTo: string;
115
168
  transport: SystemConfigSmtpTransportDto;
116
169
  };
117
170
  export type TestEmailResponseDto = {
171
+ /** Email message ID */
118
172
  messageId: string;
119
173
  };
120
174
  export type UserLicense = {
175
+ /** Activation date */
121
176
  activatedAt: string;
177
+ /** Activation key */
122
178
  activationKey: string;
179
+ /** License key */
123
180
  licenseKey: string;
124
181
  };
125
182
  export type UserAdminResponseDto = {
183
+ /** Avatar color */
126
184
  avatarColor: UserAvatarColor;
185
+ /** Creation date */
127
186
  createdAt: string;
187
+ /** Deletion date */
128
188
  deletedAt: string | null;
189
+ /** User email */
129
190
  email: string;
191
+ /** User ID */
130
192
  id: string;
193
+ /** Is admin user */
131
194
  isAdmin: boolean;
195
+ /** User license */
132
196
  license: (UserLicense) | null;
197
+ /** User name */
133
198
  name: string;
199
+ /** OAuth ID */
134
200
  oauthId: string;
201
+ /** Profile change date */
135
202
  profileChangedAt: string;
203
+ /** Profile image path */
136
204
  profileImagePath: string;
205
+ /** Storage quota in bytes */
137
206
  quotaSizeInBytes: number | null;
207
+ /** Storage usage in bytes */
138
208
  quotaUsageInBytes: number | null;
209
+ /** Require password change on next login */
139
210
  shouldChangePassword: boolean;
211
+ /** User status */
140
212
  status: UserStatus;
213
+ /** Storage label */
141
214
  storageLabel: string | null;
215
+ /** Last update date */
142
216
  updatedAt: string;
143
217
  };
144
218
  export type UserAdminCreateDto = {
219
+ /** Avatar color */
145
220
  avatarColor?: (UserAvatarColor) | null;
221
+ /** User email */
146
222
  email: string;
223
+ /** Grant admin privileges */
147
224
  isAdmin?: boolean;
225
+ /** User name */
148
226
  name: string;
227
+ /** Send notification email */
149
228
  notify?: boolean;
229
+ /** User password */
150
230
  password: string;
231
+ /** Storage quota in bytes */
151
232
  quotaSizeInBytes?: number | null;
233
+ /** Require password change on next login */
152
234
  shouldChangePassword?: boolean;
235
+ /** Storage label */
153
236
  storageLabel?: string | null;
154
237
  };
155
238
  export type UserAdminDeleteDto = {
239
+ /** Force delete even if user has assets */
156
240
  force?: boolean;
157
241
  };
158
242
  export type UserAdminUpdateDto = {
243
+ /** Avatar color */
159
244
  avatarColor?: (UserAvatarColor) | null;
245
+ /** User email */
160
246
  email?: string;
247
+ /** Grant admin privileges */
161
248
  isAdmin?: boolean;
249
+ /** User name */
162
250
  name?: string;
251
+ /** User password */
163
252
  password?: string;
253
+ /** PIN code */
164
254
  pinCode?: string | null;
255
+ /** Storage quota in bytes */
165
256
  quotaSizeInBytes?: number | null;
257
+ /** Require password change on next login */
166
258
  shouldChangePassword?: boolean;
259
+ /** Storage label */
167
260
  storageLabel?: string | null;
168
261
  };
169
262
  export type AlbumsResponse = {
263
+ /** Default asset order for albums */
170
264
  defaultAssetOrder: AssetOrder;
171
265
  };
172
266
  export type CastResponse = {
267
+ /** Whether Google Cast is enabled */
173
268
  gCastEnabled: boolean;
174
269
  };
175
270
  export type DownloadResponse = {
271
+ /** Maximum archive size in bytes */
176
272
  archiveSize: number;
273
+ /** Whether to include embedded videos in downloads */
177
274
  includeEmbeddedVideos: boolean;
178
275
  };
179
276
  export type EmailNotificationsResponse = {
277
+ /** Whether to receive email notifications for album invites */
180
278
  albumInvite: boolean;
279
+ /** Whether to receive email notifications for album updates */
181
280
  albumUpdate: boolean;
281
+ /** Whether email notifications are enabled */
182
282
  enabled: boolean;
183
283
  };
184
284
  export type FoldersResponse = {
285
+ /** Whether folders are enabled */
185
286
  enabled: boolean;
287
+ /** Whether folders appear in web sidebar */
186
288
  sidebarWeb: boolean;
187
289
  };
188
290
  export type MemoriesResponse = {
291
+ /** Memory duration in seconds */
189
292
  duration: number;
293
+ /** Whether memories are enabled */
190
294
  enabled: boolean;
191
295
  };
192
296
  export type PeopleResponse = {
297
+ /** Whether people are enabled */
193
298
  enabled: boolean;
299
+ /** Whether people appear in web sidebar */
194
300
  sidebarWeb: boolean;
195
301
  };
196
302
  export type PurchaseResponse = {
303
+ /** Date until which to hide buy button */
197
304
  hideBuyButtonUntil: string;
305
+ /** Whether to show support badge */
198
306
  showSupportBadge: boolean;
199
307
  };
200
308
  export type RatingsResponse = {
309
+ /** Whether ratings are enabled */
201
310
  enabled: boolean;
202
311
  };
203
312
  export type SharedLinksResponse = {
313
+ /** Whether shared links are enabled */
204
314
  enabled: boolean;
315
+ /** Whether shared links appear in web sidebar */
205
316
  sidebarWeb: boolean;
206
317
  };
207
318
  export type TagsResponse = {
319
+ /** Whether tags are enabled */
208
320
  enabled: boolean;
321
+ /** Whether tags appear in web sidebar */
209
322
  sidebarWeb: boolean;
210
323
  };
211
324
  export type UserPreferencesResponseDto = {
@@ -222,48 +335,69 @@ export type UserPreferencesResponseDto = {
222
335
  tags: TagsResponse;
223
336
  };
224
337
  export type AlbumsUpdate = {
338
+ /** Default asset order for albums */
225
339
  defaultAssetOrder?: AssetOrder;
226
340
  };
227
341
  export type AvatarUpdate = {
342
+ /** Avatar color */
228
343
  color?: UserAvatarColor;
229
344
  };
230
345
  export type CastUpdate = {
346
+ /** Whether Google Cast is enabled */
231
347
  gCastEnabled?: boolean;
232
348
  };
233
349
  export type DownloadUpdate = {
350
+ /** Maximum archive size in bytes */
234
351
  archiveSize?: number;
352
+ /** Whether to include embedded videos in downloads */
235
353
  includeEmbeddedVideos?: boolean;
236
354
  };
237
355
  export type EmailNotificationsUpdate = {
356
+ /** Whether to receive email notifications for album invites */
238
357
  albumInvite?: boolean;
358
+ /** Whether to receive email notifications for album updates */
239
359
  albumUpdate?: boolean;
360
+ /** Whether email notifications are enabled */
240
361
  enabled?: boolean;
241
362
  };
242
363
  export type FoldersUpdate = {
364
+ /** Whether folders are enabled */
243
365
  enabled?: boolean;
366
+ /** Whether folders appear in web sidebar */
244
367
  sidebarWeb?: boolean;
245
368
  };
246
369
  export type MemoriesUpdate = {
370
+ /** Memory duration in seconds */
247
371
  duration?: number;
372
+ /** Whether memories are enabled */
248
373
  enabled?: boolean;
249
374
  };
250
375
  export type PeopleUpdate = {
376
+ /** Whether people are enabled */
251
377
  enabled?: boolean;
378
+ /** Whether people appear in web sidebar */
252
379
  sidebarWeb?: boolean;
253
380
  };
254
381
  export type PurchaseUpdate = {
382
+ /** Date until which to hide buy button */
255
383
  hideBuyButtonUntil?: string;
384
+ /** Whether to show support badge */
256
385
  showSupportBadge?: boolean;
257
386
  };
258
387
  export type RatingsUpdate = {
388
+ /** Whether ratings are enabled */
259
389
  enabled?: boolean;
260
390
  };
261
391
  export type SharedLinksUpdate = {
392
+ /** Whether shared links are enabled */
262
393
  enabled?: boolean;
394
+ /** Whether shared links appear in web sidebar */
263
395
  sidebarWeb?: boolean;
264
396
  };
265
397
  export type TagsUpdate = {
398
+ /** Whether tags are enabled */
266
399
  enabled?: boolean;
400
+ /** Whether tags appear in web sidebar */
267
401
  sidebarWeb?: boolean;
268
402
  };
269
403
  export type UserPreferencesUpdateDto = {
@@ -281,325 +415,531 @@ export type UserPreferencesUpdateDto = {
281
415
  tags?: TagsUpdate;
282
416
  };
283
417
  export type SessionResponseDto = {
418
+ /** App version */
284
419
  appVersion: string | null;
420
+ /** Creation date */
285
421
  createdAt: string;
422
+ /** Is current session */
286
423
  current: boolean;
424
+ /** Device OS */
287
425
  deviceOS: string;
426
+ /** Device type */
288
427
  deviceType: string;
428
+ /** Expiration date */
289
429
  expiresAt?: string;
430
+ /** Session ID */
290
431
  id: string;
432
+ /** Is pending sync reset */
291
433
  isPendingSyncReset: boolean;
434
+ /** Last update date */
292
435
  updatedAt: string;
293
436
  };
294
437
  export type AssetStatsResponseDto = {
438
+ /** Number of images */
295
439
  images: number;
440
+ /** Total number of assets */
296
441
  total: number;
442
+ /** Number of videos */
297
443
  videos: number;
298
444
  };
299
445
  export type AlbumUserResponseDto = {
446
+ /** Album user role */
300
447
  role: AlbumUserRole;
301
448
  user: UserResponseDto;
302
449
  };
303
450
  export type ExifResponseDto = {
451
+ /** City name */
304
452
  city?: string | null;
453
+ /** Country name */
305
454
  country?: string | null;
455
+ /** Original date/time */
306
456
  dateTimeOriginal?: string | null;
457
+ /** Image description */
307
458
  description?: string | null;
459
+ /** Image height in pixels */
308
460
  exifImageHeight?: number | null;
461
+ /** Image width in pixels */
309
462
  exifImageWidth?: number | null;
463
+ /** Exposure time */
310
464
  exposureTime?: string | null;
465
+ /** F-number (aperture) */
311
466
  fNumber?: number | null;
467
+ /** File size in bytes */
312
468
  fileSizeInByte?: number | null;
469
+ /** Focal length in mm */
313
470
  focalLength?: number | null;
471
+ /** ISO sensitivity */
314
472
  iso?: number | null;
473
+ /** GPS latitude */
315
474
  latitude?: number | null;
475
+ /** Lens model */
316
476
  lensModel?: string | null;
477
+ /** GPS longitude */
317
478
  longitude?: number | null;
479
+ /** Camera make */
318
480
  make?: string | null;
481
+ /** Camera model */
319
482
  model?: string | null;
483
+ /** Modification date/time */
320
484
  modifyDate?: string | null;
485
+ /** Image orientation */
321
486
  orientation?: string | null;
487
+ /** Projection type */
322
488
  projectionType?: string | null;
489
+ /** Rating */
323
490
  rating?: number | null;
491
+ /** State/province name */
324
492
  state?: string | null;
493
+ /** Time zone */
325
494
  timeZone?: string | null;
326
495
  };
327
496
  export type AssetFaceWithoutPersonResponseDto = {
497
+ /** Bounding box X1 coordinate */
328
498
  boundingBoxX1: number;
499
+ /** Bounding box X2 coordinate */
329
500
  boundingBoxX2: number;
501
+ /** Bounding box Y1 coordinate */
330
502
  boundingBoxY1: number;
503
+ /** Bounding box Y2 coordinate */
331
504
  boundingBoxY2: number;
505
+ /** Face ID */
332
506
  id: string;
507
+ /** Image height in pixels */
333
508
  imageHeight: number;
509
+ /** Image width in pixels */
334
510
  imageWidth: number;
511
+ /** Face detection source type */
335
512
  sourceType?: SourceType;
336
513
  };
337
514
  export type PersonWithFacesResponseDto = {
515
+ /** Person date of birth */
338
516
  birthDate: string | null;
517
+ /** Person color (hex) */
339
518
  color?: string;
519
+ /** Face detections */
340
520
  faces: AssetFaceWithoutPersonResponseDto[];
521
+ /** Person ID */
341
522
  id: string;
523
+ /** Is favorite */
342
524
  isFavorite?: boolean;
525
+ /** Is hidden */
343
526
  isHidden: boolean;
527
+ /** Person name */
344
528
  name: string;
529
+ /** Thumbnail path */
345
530
  thumbnailPath: string;
531
+ /** Last update date */
346
532
  updatedAt?: string;
347
533
  };
348
534
  export type AssetStackResponseDto = {
535
+ /** Number of assets in stack */
349
536
  assetCount: number;
537
+ /** Stack ID */
350
538
  id: string;
539
+ /** Primary asset ID */
351
540
  primaryAssetId: string;
352
541
  };
353
542
  export type TagResponseDto = {
543
+ /** Tag color (hex) */
354
544
  color?: string;
545
+ /** Creation date */
355
546
  createdAt: string;
547
+ /** Tag ID */
356
548
  id: string;
549
+ /** Tag name */
357
550
  name: string;
551
+ /** Parent tag ID */
358
552
  parentId?: string;
553
+ /** Last update date */
359
554
  updatedAt: string;
555
+ /** Tag value (full path) */
360
556
  value: string;
361
557
  };
362
558
  export type AssetResponseDto = {
363
- /** base64 encoded sha1 hash */
559
+ /** Base64 encoded SHA1 hash */
364
560
  checksum: string;
365
561
  /** The UTC timestamp when the asset was originally uploaded to Immich. */
366
562
  createdAt: string;
563
+ /** Device asset ID */
367
564
  deviceAssetId: string;
565
+ /** Device ID */
368
566
  deviceId: string;
567
+ /** Duplicate group ID */
369
568
  duplicateId?: string | null;
569
+ /** Video duration (for videos) */
370
570
  duration: string;
371
571
  exifInfo?: ExifResponseDto;
372
572
  /** The actual UTC timestamp when the file was created/captured, preserving timezone information. This is the authoritative timestamp for chronological sorting within timeline groups. Combined with timezone data, this can be used to determine the exact moment the photo was taken. */
373
573
  fileCreatedAt: string;
374
574
  /** The UTC timestamp when the file was last modified on the filesystem. This reflects the last time the physical file was changed, which may be different from when the photo was originally taken. */
375
575
  fileModifiedAt: string;
576
+ /** Whether asset has metadata */
376
577
  hasMetadata: boolean;
578
+ /** Asset height */
377
579
  height: number | null;
580
+ /** Asset ID */
378
581
  id: string;
582
+ /** Is archived */
379
583
  isArchived: boolean;
584
+ /** Is edited */
380
585
  isEdited: boolean;
586
+ /** Is favorite */
381
587
  isFavorite: boolean;
588
+ /** Is offline */
382
589
  isOffline: boolean;
590
+ /** Is trashed */
383
591
  isTrashed: boolean;
592
+ /** Library ID */
384
593
  libraryId?: string | null;
594
+ /** Live photo video ID */
385
595
  livePhotoVideoId?: string | null;
386
596
  /** The local date and time when the photo/video was taken, derived from EXIF metadata. This represents the photographer's local time regardless of timezone, stored as a timezone-agnostic timestamp. Used for timeline grouping by "local" days and months. */
387
597
  localDateTime: string;
598
+ /** Original file name */
388
599
  originalFileName: string;
600
+ /** Original MIME type */
389
601
  originalMimeType?: string;
602
+ /** Original file path */
390
603
  originalPath: string;
391
604
  owner?: UserResponseDto;
605
+ /** Owner user ID */
392
606
  ownerId: string;
393
607
  people?: PersonWithFacesResponseDto[];
608
+ /** Is resized */
394
609
  resized?: boolean;
395
610
  stack?: (AssetStackResponseDto) | null;
396
611
  tags?: TagResponseDto[];
612
+ /** Thumbhash for thumbnail generation */
397
613
  thumbhash: string | null;
614
+ /** Asset type */
398
615
  "type": AssetTypeEnum;
399
616
  unassignedFaces?: AssetFaceWithoutPersonResponseDto[];
400
617
  /** The UTC timestamp when the asset record was last updated in the database. This is automatically maintained by the database and reflects when any field in the asset was last modified. */
401
618
  updatedAt: string;
619
+ /** Asset visibility */
402
620
  visibility: AssetVisibility;
621
+ /** Asset width */
403
622
  width: number | null;
404
623
  };
405
624
  export type ContributorCountResponseDto = {
625
+ /** Number of assets contributed */
406
626
  assetCount: number;
627
+ /** User ID */
407
628
  userId: string;
408
629
  };
409
630
  export type AlbumResponseDto = {
631
+ /** Album name */
410
632
  albumName: string;
633
+ /** Thumbnail asset ID */
411
634
  albumThumbnailAssetId: string | null;
412
635
  albumUsers: AlbumUserResponseDto[];
636
+ /** Number of assets */
413
637
  assetCount: number;
414
638
  assets: AssetResponseDto[];
415
639
  contributorCounts?: ContributorCountResponseDto[];
640
+ /** Creation date */
416
641
  createdAt: string;
642
+ /** Album description */
417
643
  description: string;
644
+ /** End date (latest asset) */
418
645
  endDate?: string;
646
+ /** Has shared link */
419
647
  hasSharedLink: boolean;
648
+ /** Album ID */
420
649
  id: string;
650
+ /** Activity feed enabled */
421
651
  isActivityEnabled: boolean;
652
+ /** Last modified asset timestamp */
422
653
  lastModifiedAssetTimestamp?: string;
654
+ /** Asset sort order */
423
655
  order?: AssetOrder;
424
656
  owner: UserResponseDto;
657
+ /** Owner user ID */
425
658
  ownerId: string;
659
+ /** Is shared album */
426
660
  shared: boolean;
661
+ /** Start date (earliest asset) */
427
662
  startDate?: string;
663
+ /** Last update date */
428
664
  updatedAt: string;
429
665
  };
430
666
  export type AlbumUserCreateDto = {
667
+ /** Album user role */
431
668
  role: AlbumUserRole;
669
+ /** User ID */
432
670
  userId: string;
433
671
  };
434
672
  export type CreateAlbumDto = {
673
+ /** Album name */
435
674
  albumName: string;
675
+ /** Album users */
436
676
  albumUsers?: AlbumUserCreateDto[];
677
+ /** Initial asset IDs */
437
678
  assetIds?: string[];
679
+ /** Album description */
438
680
  description?: string;
439
681
  };
440
682
  export type AlbumsAddAssetsDto = {
683
+ /** Album IDs */
441
684
  albumIds: string[];
685
+ /** Asset IDs */
442
686
  assetIds: string[];
443
687
  };
444
688
  export type AlbumsAddAssetsResponseDto = {
689
+ /** Error reason */
445
690
  error?: BulkIdErrorReason;
691
+ /** Operation success */
446
692
  success: boolean;
447
693
  };
448
694
  export type AlbumStatisticsResponseDto = {
695
+ /** Number of non-shared albums */
449
696
  notShared: number;
697
+ /** Number of owned albums */
450
698
  owned: number;
699
+ /** Number of shared albums */
451
700
  shared: number;
452
701
  };
453
702
  export type UpdateAlbumDto = {
703
+ /** Album name */
454
704
  albumName?: string;
705
+ /** Album thumbnail asset ID */
455
706
  albumThumbnailAssetId?: string;
707
+ /** Album description */
456
708
  description?: string;
709
+ /** Enable activity feed */
457
710
  isActivityEnabled?: boolean;
711
+ /** Asset sort order */
458
712
  order?: AssetOrder;
459
713
  };
460
714
  export type BulkIdsDto = {
715
+ /** IDs to process */
461
716
  ids: string[];
462
717
  };
463
718
  export type BulkIdResponseDto = {
719
+ /** Error reason if failed */
464
720
  error?: Error;
721
+ /** ID */
465
722
  id: string;
723
+ /** Whether operation succeeded */
466
724
  success: boolean;
467
725
  };
468
726
  export type UpdateAlbumUserDto = {
727
+ /** Album user role */
469
728
  role: AlbumUserRole;
470
729
  };
471
730
  export type AlbumUserAddDto = {
731
+ /** Album user role */
472
732
  role?: AlbumUserRole;
733
+ /** User ID */
473
734
  userId: string;
474
735
  };
475
736
  export type AddUsersDto = {
737
+ /** Album users to add */
476
738
  albumUsers: AlbumUserAddDto[];
477
739
  };
478
740
  export type ApiKeyResponseDto = {
741
+ /** Creation date */
479
742
  createdAt: string;
743
+ /** API key ID */
480
744
  id: string;
745
+ /** API key name */
481
746
  name: string;
747
+ /** List of permissions */
482
748
  permissions: Permission[];
749
+ /** Last update date */
483
750
  updatedAt: string;
484
751
  };
485
752
  export type ApiKeyCreateDto = {
753
+ /** API key name */
486
754
  name?: string;
755
+ /** List of permissions */
487
756
  permissions: Permission[];
488
757
  };
489
758
  export type ApiKeyCreateResponseDto = {
490
759
  apiKey: ApiKeyResponseDto;
760
+ /** API key secret (only shown once) */
491
761
  secret: string;
492
762
  };
493
763
  export type ApiKeyUpdateDto = {
764
+ /** API key name */
494
765
  name?: string;
766
+ /** List of permissions */
495
767
  permissions?: Permission[];
496
768
  };
497
769
  export type AssetBulkDeleteDto = {
770
+ /** Force delete even if in use */
498
771
  force?: boolean;
772
+ /** IDs to process */
499
773
  ids: string[];
500
774
  };
501
775
  export type AssetMetadataUpsertItemDto = {
776
+ /** Metadata key */
502
777
  key: string;
778
+ /** Metadata value (object) */
503
779
  value: object;
504
780
  };
505
781
  export type AssetMediaCreateDto = {
782
+ /** Asset file data */
506
783
  assetData: Blob;
784
+ /** Device asset ID */
507
785
  deviceAssetId: string;
786
+ /** Device ID */
508
787
  deviceId: string;
788
+ /** Duration (for videos) */
509
789
  duration?: string;
790
+ /** File creation date */
510
791
  fileCreatedAt: string;
792
+ /** File modification date */
511
793
  fileModifiedAt: string;
794
+ /** Filename */
512
795
  filename?: string;
796
+ /** Mark as favorite */
513
797
  isFavorite?: boolean;
798
+ /** Live photo video ID */
514
799
  livePhotoVideoId?: string;
800
+ /** Asset metadata items */
515
801
  metadata?: AssetMetadataUpsertItemDto[];
802
+ /** Sidecar file data */
516
803
  sidecarData?: Blob;
804
+ /** Asset visibility */
517
805
  visibility?: AssetVisibility;
518
806
  };
519
807
  export type AssetMediaResponseDto = {
808
+ /** Asset media ID */
520
809
  id: string;
810
+ /** Upload status */
521
811
  status: AssetMediaStatus;
522
812
  };
523
813
  export type AssetBulkUpdateDto = {
814
+ /** Original date and time */
524
815
  dateTimeOriginal?: string;
816
+ /** Relative time offset in seconds */
525
817
  dateTimeRelative?: number;
818
+ /** Asset description */
526
819
  description?: string;
820
+ /** Duplicate asset ID */
527
821
  duplicateId?: string | null;
822
+ /** Asset IDs to update */
528
823
  ids: string[];
824
+ /** Mark as favorite */
529
825
  isFavorite?: boolean;
826
+ /** Latitude coordinate */
530
827
  latitude?: number;
828
+ /** Longitude coordinate */
531
829
  longitude?: number;
830
+ /** Rating */
532
831
  rating?: number;
832
+ /** Time zone (IANA timezone) */
533
833
  timeZone?: string;
834
+ /** Asset visibility */
534
835
  visibility?: AssetVisibility;
535
836
  };
536
837
  export type AssetBulkUploadCheckItem = {
537
- /** base64 or hex encoded sha1 hash */
838
+ /** Base64 or hex encoded SHA1 hash */
538
839
  checksum: string;
840
+ /** Asset ID */
539
841
  id: string;
540
842
  };
541
843
  export type AssetBulkUploadCheckDto = {
844
+ /** Assets to check */
542
845
  assets: AssetBulkUploadCheckItem[];
543
846
  };
544
847
  export type AssetBulkUploadCheckResult = {
848
+ /** Upload action */
545
849
  action: Action;
850
+ /** Existing asset ID if duplicate */
546
851
  assetId?: string;
852
+ /** Asset ID */
547
853
  id: string;
854
+ /** Whether existing asset is trashed */
548
855
  isTrashed?: boolean;
856
+ /** Rejection reason if rejected */
549
857
  reason?: Reason;
550
858
  };
551
859
  export type AssetBulkUploadCheckResponseDto = {
860
+ /** Upload check results */
552
861
  results: AssetBulkUploadCheckResult[];
553
862
  };
554
863
  export type AssetCopyDto = {
864
+ /** Copy album associations */
555
865
  albums?: boolean;
866
+ /** Copy favorite status */
556
867
  favorite?: boolean;
868
+ /** Copy shared links */
557
869
  sharedLinks?: boolean;
870
+ /** Copy sidecar file */
558
871
  sidecar?: boolean;
872
+ /** Source asset ID */
559
873
  sourceId: string;
874
+ /** Copy stack association */
560
875
  stack?: boolean;
876
+ /** Target asset ID */
561
877
  targetId: string;
562
878
  };
563
879
  export type CheckExistingAssetsDto = {
880
+ /** Device asset IDs to check */
564
881
  deviceAssetIds: string[];
882
+ /** Device ID */
565
883
  deviceId: string;
566
884
  };
567
885
  export type CheckExistingAssetsResponseDto = {
886
+ /** Existing asset IDs */
568
887
  existingIds: string[];
569
888
  };
570
889
  export type AssetJobsDto = {
890
+ /** Asset IDs */
571
891
  assetIds: string[];
892
+ /** Job name */
572
893
  name: AssetJobName;
573
894
  };
574
895
  export type AssetMetadataBulkDeleteItemDto = {
896
+ /** Asset ID */
575
897
  assetId: string;
898
+ /** Metadata key */
576
899
  key: string;
577
900
  };
578
901
  export type AssetMetadataBulkDeleteDto = {
902
+ /** Metadata items to delete */
579
903
  items: AssetMetadataBulkDeleteItemDto[];
580
904
  };
581
905
  export type AssetMetadataBulkUpsertItemDto = {
906
+ /** Asset ID */
582
907
  assetId: string;
908
+ /** Metadata key */
583
909
  key: string;
910
+ /** Metadata value (object) */
584
911
  value: object;
585
912
  };
586
913
  export type AssetMetadataBulkUpsertDto = {
914
+ /** Metadata items to upsert */
587
915
  items: AssetMetadataBulkUpsertItemDto[];
588
916
  };
589
917
  export type AssetMetadataBulkResponseDto = {
918
+ /** Asset ID */
590
919
  assetId: string;
920
+ /** Metadata key */
591
921
  key: string;
922
+ /** Last update date */
592
923
  updatedAt: string;
924
+ /** Metadata value (object) */
593
925
  value: object;
594
926
  };
595
927
  export type UpdateAssetDto = {
928
+ /** Original date and time */
596
929
  dateTimeOriginal?: string;
930
+ /** Asset description */
597
931
  description?: string;
932
+ /** Mark as favorite */
598
933
  isFavorite?: boolean;
934
+ /** Latitude coordinate */
599
935
  latitude?: number;
936
+ /** Live photo video ID */
600
937
  livePhotoVideoId?: string | null;
938
+ /** Longitude coordinate */
601
939
  longitude?: number;
940
+ /** Rating */
602
941
  rating?: number;
942
+ /** Asset visibility */
603
943
  visibility?: AssetVisibility;
604
944
  };
605
945
  export type CropParameters = {
@@ -613,6 +953,7 @@ export type CropParameters = {
613
953
  y: number;
614
954
  };
615
955
  export type AssetEditActionCrop = {
956
+ /** Type of edit action to perform */
616
957
  action: AssetEditAction;
617
958
  parameters: CropParameters;
618
959
  };
@@ -621,6 +962,7 @@ export type RotateParameters = {
621
962
  angle: number;
622
963
  };
623
964
  export type AssetEditActionRotate = {
965
+ /** Type of edit action to perform */
624
966
  action: AssetEditAction;
625
967
  parameters: RotateParameters;
626
968
  };
@@ -629,24 +971,30 @@ export type MirrorParameters = {
629
971
  axis: MirrorAxis;
630
972
  };
631
973
  export type AssetEditActionMirror = {
974
+ /** Type of edit action to perform */
632
975
  action: AssetEditAction;
633
976
  parameters: MirrorParameters;
634
977
  };
635
978
  export type AssetEditsDto = {
979
+ /** Asset ID to apply edits to */
636
980
  assetId: string;
637
- /** list of edits */
981
+ /** List of edit actions to apply (crop, rotate, or mirror) */
638
982
  edits: (AssetEditActionCrop | AssetEditActionRotate | AssetEditActionMirror)[];
639
983
  };
640
984
  export type AssetEditActionListDto = {
641
- /** list of edits */
985
+ /** List of edit actions to apply (crop, rotate, or mirror) */
642
986
  edits: (AssetEditActionCrop | AssetEditActionRotate | AssetEditActionMirror)[];
643
987
  };
644
988
  export type AssetMetadataResponseDto = {
989
+ /** Metadata key */
645
990
  key: string;
991
+ /** Last update date */
646
992
  updatedAt: string;
993
+ /** Metadata value (object) */
647
994
  value: object;
648
995
  };
649
996
  export type AssetMetadataUpsertDto = {
997
+ /** Metadata items to upsert */
650
998
  items: AssetMetadataUpsertItemDto[];
651
999
  };
652
1000
  export type AssetOcrResponseDto = {
@@ -676,136 +1024,221 @@ export type AssetOcrResponseDto = {
676
1024
  y4: number;
677
1025
  };
678
1026
  export type AssetMediaReplaceDto = {
1027
+ /** Asset file data */
679
1028
  assetData: Blob;
1029
+ /** Device asset ID */
680
1030
  deviceAssetId: string;
1031
+ /** Device ID */
681
1032
  deviceId: string;
1033
+ /** Duration (for videos) */
682
1034
  duration?: string;
1035
+ /** File creation date */
683
1036
  fileCreatedAt: string;
1037
+ /** File modification date */
684
1038
  fileModifiedAt: string;
1039
+ /** Filename */
685
1040
  filename?: string;
686
1041
  };
687
1042
  export type SignUpDto = {
1043
+ /** User email */
688
1044
  email: string;
1045
+ /** User name */
689
1046
  name: string;
1047
+ /** User password */
690
1048
  password: string;
691
1049
  };
692
1050
  export type ChangePasswordDto = {
1051
+ /** Invalidate all other sessions */
693
1052
  invalidateSessions?: boolean;
1053
+ /** New password (min 8 characters) */
694
1054
  newPassword: string;
1055
+ /** Current password */
695
1056
  password: string;
696
1057
  };
697
1058
  export type LoginCredentialDto = {
1059
+ /** User email */
698
1060
  email: string;
1061
+ /** User password */
699
1062
  password: string;
700
1063
  };
701
1064
  export type LoginResponseDto = {
1065
+ /** Access token */
702
1066
  accessToken: string;
1067
+ /** Is admin user */
703
1068
  isAdmin: boolean;
1069
+ /** Is onboarded */
704
1070
  isOnboarded: boolean;
1071
+ /** User name */
705
1072
  name: string;
1073
+ /** Profile image path */
706
1074
  profileImagePath: string;
1075
+ /** Should change password */
707
1076
  shouldChangePassword: boolean;
1077
+ /** User email */
708
1078
  userEmail: string;
1079
+ /** User ID */
709
1080
  userId: string;
710
1081
  };
711
1082
  export type LogoutResponseDto = {
1083
+ /** Redirect URI */
712
1084
  redirectUri: string;
1085
+ /** Logout successful */
713
1086
  successful: boolean;
714
1087
  };
715
1088
  export type PinCodeResetDto = {
1089
+ /** User password (required if PIN code is not provided) */
716
1090
  password?: string;
1091
+ /** New PIN code (4-6 digits) */
717
1092
  pinCode?: string;
718
1093
  };
719
1094
  export type PinCodeSetupDto = {
1095
+ /** PIN code (4-6 digits) */
720
1096
  pinCode: string;
721
1097
  };
722
1098
  export type PinCodeChangeDto = {
1099
+ /** New PIN code (4-6 digits) */
723
1100
  newPinCode: string;
1101
+ /** User password (required if PIN code is not provided) */
724
1102
  password?: string;
1103
+ /** New PIN code (4-6 digits) */
725
1104
  pinCode?: string;
726
1105
  };
727
1106
  export type SessionUnlockDto = {
1107
+ /** User password (required if PIN code is not provided) */
728
1108
  password?: string;
1109
+ /** New PIN code (4-6 digits) */
729
1110
  pinCode?: string;
730
1111
  };
731
1112
  export type AuthStatusResponseDto = {
1113
+ /** Session expiration date */
732
1114
  expiresAt?: string;
1115
+ /** Is elevated session */
733
1116
  isElevated: boolean;
1117
+ /** Has password set */
734
1118
  password: boolean;
1119
+ /** Has PIN code set */
735
1120
  pinCode: boolean;
1121
+ /** PIN expiration date */
736
1122
  pinExpiresAt?: string;
737
1123
  };
738
1124
  export type ValidateAccessTokenResponseDto = {
1125
+ /** Authentication status */
739
1126
  authStatus: boolean;
740
1127
  };
741
1128
  export type AssetIdsDto = {
1129
+ /** Asset IDs */
742
1130
  assetIds: string[];
743
1131
  };
744
1132
  export type DownloadInfoDto = {
1133
+ /** Album ID to download */
745
1134
  albumId?: string;
1135
+ /** Archive size limit in bytes */
746
1136
  archiveSize?: number;
1137
+ /** Asset IDs to download */
747
1138
  assetIds?: string[];
1139
+ /** User ID to download assets from */
748
1140
  userId?: string;
749
1141
  };
750
1142
  export type DownloadArchiveInfo = {
1143
+ /** Asset IDs in this archive */
751
1144
  assetIds: string[];
1145
+ /** Archive size in bytes */
752
1146
  size: number;
753
1147
  };
754
1148
  export type DownloadResponseDto = {
1149
+ /** Archive information */
755
1150
  archives: DownloadArchiveInfo[];
1151
+ /** Total size in bytes */
756
1152
  totalSize: number;
757
1153
  };
758
1154
  export type DuplicateResponseDto = {
1155
+ /** Duplicate assets */
759
1156
  assets: AssetResponseDto[];
1157
+ /** Duplicate group ID */
760
1158
  duplicateId: string;
761
1159
  };
762
1160
  export type PersonResponseDto = {
1161
+ /** Person date of birth */
763
1162
  birthDate: string | null;
1163
+ /** Person color (hex) */
764
1164
  color?: string;
1165
+ /** Person ID */
765
1166
  id: string;
1167
+ /** Is favorite */
766
1168
  isFavorite?: boolean;
1169
+ /** Is hidden */
767
1170
  isHidden: boolean;
1171
+ /** Person name */
768
1172
  name: string;
1173
+ /** Thumbnail path */
769
1174
  thumbnailPath: string;
1175
+ /** Last update date */
770
1176
  updatedAt?: string;
771
1177
  };
772
1178
  export type AssetFaceResponseDto = {
1179
+ /** Bounding box X1 coordinate */
773
1180
  boundingBoxX1: number;
1181
+ /** Bounding box X2 coordinate */
774
1182
  boundingBoxX2: number;
1183
+ /** Bounding box Y1 coordinate */
775
1184
  boundingBoxY1: number;
1185
+ /** Bounding box Y2 coordinate */
776
1186
  boundingBoxY2: number;
1187
+ /** Face ID */
777
1188
  id: string;
1189
+ /** Image height in pixels */
778
1190
  imageHeight: number;
1191
+ /** Image width in pixels */
779
1192
  imageWidth: number;
1193
+ /** Person associated with face */
780
1194
  person: (PersonResponseDto) | null;
1195
+ /** Face detection source type */
781
1196
  sourceType?: SourceType;
782
1197
  };
783
1198
  export type AssetFaceCreateDto = {
1199
+ /** Asset ID */
784
1200
  assetId: string;
1201
+ /** Face bounding box height */
785
1202
  height: number;
1203
+ /** Image height in pixels */
786
1204
  imageHeight: number;
1205
+ /** Image width in pixels */
787
1206
  imageWidth: number;
1207
+ /** Person ID */
788
1208
  personId: string;
1209
+ /** Face bounding box width */
789
1210
  width: number;
1211
+ /** Face bounding box X coordinate */
790
1212
  x: number;
1213
+ /** Face bounding box Y coordinate */
791
1214
  y: number;
792
1215
  };
793
1216
  export type AssetFaceDeleteDto = {
1217
+ /** Force delete even if person has other faces */
794
1218
  force: boolean;
795
1219
  };
796
1220
  export type FaceDto = {
1221
+ /** Face ID */
797
1222
  id: string;
798
1223
  };
799
1224
  export type QueueStatisticsDto = {
1225
+ /** Number of active jobs */
800
1226
  active: number;
1227
+ /** Number of completed jobs */
801
1228
  completed: number;
1229
+ /** Number of delayed jobs */
802
1230
  delayed: number;
1231
+ /** Number of failed jobs */
803
1232
  failed: number;
1233
+ /** Number of paused jobs */
804
1234
  paused: number;
1235
+ /** Number of waiting jobs */
805
1236
  waiting: number;
806
1237
  };
807
1238
  export type QueueStatusLegacyDto = {
1239
+ /** Whether the queue is currently active (has running jobs) */
808
1240
  isActive: boolean;
1241
+ /** Whether the queue is paused */
809
1242
  isPaused: boolean;
810
1243
  };
811
1244
  export type QueueResponseLegacyDto = {
@@ -833,238 +1266,359 @@ export type QueuesResponseLegacyDto = {
833
1266
  workflow: QueueResponseLegacyDto;
834
1267
  };
835
1268
  export type JobCreateDto = {
1269
+ /** Job name */
836
1270
  name: ManualJobName;
837
1271
  };
838
1272
  export type QueueCommandDto = {
1273
+ /** Queue command to execute */
839
1274
  command: QueueCommand;
1275
+ /** Force the command execution (if applicable) */
840
1276
  force?: boolean;
841
1277
  };
842
1278
  export type LibraryResponseDto = {
1279
+ /** Number of assets */
843
1280
  assetCount: number;
1281
+ /** Creation date */
844
1282
  createdAt: string;
1283
+ /** Exclusion patterns */
845
1284
  exclusionPatterns: string[];
1285
+ /** Library ID */
846
1286
  id: string;
1287
+ /** Import paths */
847
1288
  importPaths: string[];
1289
+ /** Library name */
848
1290
  name: string;
1291
+ /** Owner user ID */
849
1292
  ownerId: string;
1293
+ /** Last refresh date */
850
1294
  refreshedAt: string | null;
1295
+ /** Last update date */
851
1296
  updatedAt: string;
852
1297
  };
853
1298
  export type CreateLibraryDto = {
1299
+ /** Exclusion patterns (max 128) */
854
1300
  exclusionPatterns?: string[];
1301
+ /** Import paths (max 128) */
855
1302
  importPaths?: string[];
1303
+ /** Library name */
856
1304
  name?: string;
1305
+ /** Owner user ID */
857
1306
  ownerId: string;
858
1307
  };
859
1308
  export type UpdateLibraryDto = {
1309
+ /** Exclusion patterns (max 128) */
860
1310
  exclusionPatterns?: string[];
1311
+ /** Import paths (max 128) */
861
1312
  importPaths?: string[];
1313
+ /** Library name */
862
1314
  name?: string;
863
1315
  };
864
1316
  export type LibraryStatsResponseDto = {
1317
+ /** Number of photos */
865
1318
  photos: number;
1319
+ /** Total number of assets */
866
1320
  total: number;
1321
+ /** Storage usage in bytes */
867
1322
  usage: number;
1323
+ /** Number of videos */
868
1324
  videos: number;
869
1325
  };
870
1326
  export type ValidateLibraryDto = {
1327
+ /** Exclusion patterns (max 128) */
871
1328
  exclusionPatterns?: string[];
1329
+ /** Import paths to validate (max 128) */
872
1330
  importPaths?: string[];
873
1331
  };
874
1332
  export type ValidateLibraryImportPathResponseDto = {
1333
+ /** Import path */
875
1334
  importPath: string;
1335
+ /** Is valid */
876
1336
  isValid: boolean;
1337
+ /** Validation message */
877
1338
  message?: string;
878
1339
  };
879
1340
  export type ValidateLibraryResponseDto = {
1341
+ /** Validation results for import paths */
880
1342
  importPaths?: ValidateLibraryImportPathResponseDto[];
881
1343
  };
882
1344
  export type MapMarkerResponseDto = {
1345
+ /** City name */
883
1346
  city: string | null;
1347
+ /** Country name */
884
1348
  country: string | null;
1349
+ /** Asset ID */
885
1350
  id: string;
1351
+ /** Latitude */
886
1352
  lat: number;
1353
+ /** Longitude */
887
1354
  lon: number;
1355
+ /** State/Province name */
888
1356
  state: string | null;
889
1357
  };
890
1358
  export type MapReverseGeocodeResponseDto = {
1359
+ /** City name */
891
1360
  city: string | null;
1361
+ /** Country name */
892
1362
  country: string | null;
1363
+ /** State/Province name */
893
1364
  state: string | null;
894
1365
  };
895
1366
  export type OnThisDayDto = {
1367
+ /** Year for on this day memory */
896
1368
  year: number;
897
1369
  };
898
1370
  export type MemoryResponseDto = {
899
1371
  assets: AssetResponseDto[];
1372
+ /** Creation date */
900
1373
  createdAt: string;
901
1374
  data: OnThisDayDto;
1375
+ /** Deletion date */
902
1376
  deletedAt?: string;
1377
+ /** Date when memory should be hidden */
903
1378
  hideAt?: string;
1379
+ /** Memory ID */
904
1380
  id: string;
1381
+ /** Is memory saved */
905
1382
  isSaved: boolean;
1383
+ /** Memory date */
906
1384
  memoryAt: string;
1385
+ /** Owner user ID */
907
1386
  ownerId: string;
1387
+ /** Date when memory was seen */
908
1388
  seenAt?: string;
1389
+ /** Date when memory should be shown */
909
1390
  showAt?: string;
1391
+ /** Memory type */
910
1392
  "type": MemoryType;
1393
+ /** Last update date */
911
1394
  updatedAt: string;
912
1395
  };
913
1396
  export type MemoryCreateDto = {
1397
+ /** Asset IDs to associate with memory */
914
1398
  assetIds?: string[];
915
1399
  data: OnThisDayDto;
1400
+ /** Is memory saved */
916
1401
  isSaved?: boolean;
1402
+ /** Memory date */
917
1403
  memoryAt: string;
1404
+ /** Date when memory was seen */
918
1405
  seenAt?: string;
1406
+ /** Memory type */
919
1407
  "type": MemoryType;
920
1408
  };
921
1409
  export type MemoryStatisticsResponseDto = {
1410
+ /** Total number of memories */
922
1411
  total: number;
923
1412
  };
924
1413
  export type MemoryUpdateDto = {
1414
+ /** Is memory saved */
925
1415
  isSaved?: boolean;
1416
+ /** Memory date */
926
1417
  memoryAt?: string;
1418
+ /** Date when memory was seen */
927
1419
  seenAt?: string;
928
1420
  };
929
1421
  export type NotificationDeleteAllDto = {
1422
+ /** Notification IDs to delete */
930
1423
  ids: string[];
931
1424
  };
932
1425
  export type NotificationUpdateAllDto = {
1426
+ /** Notification IDs to update */
933
1427
  ids: string[];
1428
+ /** Date when notifications were read */
934
1429
  readAt?: string | null;
935
1430
  };
936
1431
  export type NotificationUpdateDto = {
1432
+ /** Date when notification was read */
937
1433
  readAt?: string | null;
938
1434
  };
939
1435
  export type OAuthConfigDto = {
1436
+ /** OAuth code challenge (PKCE) */
940
1437
  codeChallenge?: string;
1438
+ /** OAuth redirect URI */
941
1439
  redirectUri: string;
1440
+ /** OAuth state parameter */
942
1441
  state?: string;
943
1442
  };
944
1443
  export type OAuthAuthorizeResponseDto = {
1444
+ /** OAuth authorization URL */
945
1445
  url: string;
946
1446
  };
947
1447
  export type OAuthCallbackDto = {
1448
+ /** OAuth code verifier (PKCE) */
948
1449
  codeVerifier?: string;
1450
+ /** OAuth state parameter */
949
1451
  state?: string;
1452
+ /** OAuth callback URL */
950
1453
  url: string;
951
1454
  };
952
1455
  export type PartnerResponseDto = {
1456
+ /** Avatar color */
953
1457
  avatarColor: UserAvatarColor;
1458
+ /** User email */
954
1459
  email: string;
1460
+ /** User ID */
955
1461
  id: string;
1462
+ /** Show in timeline */
956
1463
  inTimeline?: boolean;
1464
+ /** User name */
957
1465
  name: string;
1466
+ /** Profile change date */
958
1467
  profileChangedAt: string;
1468
+ /** Profile image path */
959
1469
  profileImagePath: string;
960
1470
  };
961
1471
  export type PartnerCreateDto = {
1472
+ /** User ID to share with */
962
1473
  sharedWithId: string;
963
1474
  };
964
1475
  export type PartnerUpdateDto = {
1476
+ /** Show partner assets in timeline */
965
1477
  inTimeline: boolean;
966
1478
  };
967
1479
  export type PeopleResponseDto = {
1480
+ /** Whether there are more pages */
968
1481
  hasNextPage?: boolean;
1482
+ /** Number of hidden people */
969
1483
  hidden: number;
1484
+ /** List of people */
970
1485
  people: PersonResponseDto[];
1486
+ /** Total number of people */
971
1487
  total: number;
972
1488
  };
973
1489
  export type PersonCreateDto = {
974
- /** Person date of birth.
975
- Note: the mobile app cannot currently set the birth date to null. */
1490
+ /** Person date of birth */
976
1491
  birthDate?: string | null;
1492
+ /** Person color (hex) */
977
1493
  color?: string | null;
1494
+ /** Mark as favorite */
978
1495
  isFavorite?: boolean;
979
- /** Person visibility */
1496
+ /** Person visibility (hidden) */
980
1497
  isHidden?: boolean;
981
- /** Person name. */
1498
+ /** Person name */
982
1499
  name?: string;
983
1500
  };
984
1501
  export type PeopleUpdateItem = {
985
- /** Person date of birth.
986
- Note: the mobile app cannot currently set the birth date to null. */
1502
+ /** Person date of birth */
987
1503
  birthDate?: string | null;
1504
+ /** Person color (hex) */
988
1505
  color?: string | null;
989
- /** Asset is used to get the feature face thumbnail. */
1506
+ /** Asset ID used for feature face thumbnail */
990
1507
  featureFaceAssetId?: string;
991
- /** Person id. */
1508
+ /** Person ID */
992
1509
  id: string;
1510
+ /** Mark as favorite */
993
1511
  isFavorite?: boolean;
994
- /** Person visibility */
1512
+ /** Person visibility (hidden) */
995
1513
  isHidden?: boolean;
996
- /** Person name. */
1514
+ /** Person name */
997
1515
  name?: string;
998
1516
  };
999
1517
  export type PeopleUpdateDto = {
1518
+ /** People to update */
1000
1519
  people: PeopleUpdateItem[];
1001
1520
  };
1002
1521
  export type PersonUpdateDto = {
1003
- /** Person date of birth.
1004
- Note: the mobile app cannot currently set the birth date to null. */
1522
+ /** Person date of birth */
1005
1523
  birthDate?: string | null;
1524
+ /** Person color (hex) */
1006
1525
  color?: string | null;
1007
- /** Asset is used to get the feature face thumbnail. */
1526
+ /** Asset ID used for feature face thumbnail */
1008
1527
  featureFaceAssetId?: string;
1528
+ /** Mark as favorite */
1009
1529
  isFavorite?: boolean;
1010
- /** Person visibility */
1530
+ /** Person visibility (hidden) */
1011
1531
  isHidden?: boolean;
1012
- /** Person name. */
1532
+ /** Person name */
1013
1533
  name?: string;
1014
1534
  };
1015
1535
  export type MergePersonDto = {
1536
+ /** Person IDs to merge */
1016
1537
  ids: string[];
1017
1538
  };
1018
1539
  export type AssetFaceUpdateItem = {
1540
+ /** Asset ID */
1019
1541
  assetId: string;
1542
+ /** Person ID */
1020
1543
  personId: string;
1021
1544
  };
1022
1545
  export type AssetFaceUpdateDto = {
1546
+ /** Face update items */
1023
1547
  data: AssetFaceUpdateItem[];
1024
1548
  };
1025
1549
  export type PersonStatisticsResponseDto = {
1550
+ /** Number of assets */
1026
1551
  assets: number;
1027
1552
  };
1028
1553
  export type PluginActionResponseDto = {
1554
+ /** Action description */
1029
1555
  description: string;
1556
+ /** Action ID */
1030
1557
  id: string;
1558
+ /** Method name */
1031
1559
  methodName: string;
1560
+ /** Plugin ID */
1032
1561
  pluginId: string;
1562
+ /** Action schema */
1033
1563
  schema: object | null;
1564
+ /** Supported contexts */
1034
1565
  supportedContexts: PluginContextType[];
1566
+ /** Action title */
1035
1567
  title: string;
1036
1568
  };
1037
1569
  export type PluginFilterResponseDto = {
1570
+ /** Filter description */
1038
1571
  description: string;
1572
+ /** Filter ID */
1039
1573
  id: string;
1574
+ /** Method name */
1040
1575
  methodName: string;
1576
+ /** Plugin ID */
1041
1577
  pluginId: string;
1578
+ /** Filter schema */
1042
1579
  schema: object | null;
1580
+ /** Supported contexts */
1043
1581
  supportedContexts: PluginContextType[];
1582
+ /** Filter title */
1044
1583
  title: string;
1045
1584
  };
1046
1585
  export type PluginResponseDto = {
1586
+ /** Plugin actions */
1047
1587
  actions: PluginActionResponseDto[];
1588
+ /** Plugin author */
1048
1589
  author: string;
1590
+ /** Creation date */
1049
1591
  createdAt: string;
1592
+ /** Plugin description */
1050
1593
  description: string;
1594
+ /** Plugin filters */
1051
1595
  filters: PluginFilterResponseDto[];
1596
+ /** Plugin ID */
1052
1597
  id: string;
1598
+ /** Plugin name */
1053
1599
  name: string;
1600
+ /** Plugin title */
1054
1601
  title: string;
1602
+ /** Last update date */
1055
1603
  updatedAt: string;
1604
+ /** Plugin version */
1056
1605
  version: string;
1057
1606
  };
1058
1607
  export type PluginTriggerResponseDto = {
1608
+ /** Context type */
1059
1609
  contextType: PluginContextType;
1610
+ /** Trigger type */
1060
1611
  "type": PluginTriggerType;
1061
1612
  };
1062
1613
  export type QueueResponseDto = {
1614
+ /** Whether the queue is paused */
1063
1615
  isPaused: boolean;
1616
+ /** Queue name */
1064
1617
  name: QueueName;
1065
1618
  statistics: QueueStatisticsDto;
1066
1619
  };
1067
1620
  export type QueueUpdateDto = {
1621
+ /** Whether to pause the queue */
1068
1622
  isPaused?: boolean;
1069
1623
  };
1070
1624
  export type QueueDeleteDto = {
@@ -1072,84 +1626,143 @@ export type QueueDeleteDto = {
1072
1626
  failed?: boolean;
1073
1627
  };
1074
1628
  export type QueueJobResponseDto = {
1629
+ /** Job data payload */
1075
1630
  data: object;
1631
+ /** Job ID */
1076
1632
  id?: string;
1633
+ /** Job name */
1077
1634
  name: JobName;
1635
+ /** Job creation timestamp */
1078
1636
  timestamp: number;
1079
1637
  };
1080
1638
  export type SearchExploreItem = {
1081
1639
  data: AssetResponseDto;
1640
+ /** Explore value */
1082
1641
  value: string;
1083
1642
  };
1084
1643
  export type SearchExploreResponseDto = {
1644
+ /** Explore field name */
1085
1645
  fieldName: string;
1086
1646
  items: SearchExploreItem[];
1087
1647
  };
1088
1648
  export type MetadataSearchDto = {
1649
+ /** Filter by album IDs */
1089
1650
  albumIds?: string[];
1651
+ /** Filter by file checksum */
1090
1652
  checksum?: string;
1653
+ /** Filter by city name */
1091
1654
  city?: string | null;
1655
+ /** Filter by country name */
1092
1656
  country?: string | null;
1657
+ /** Filter by creation date (after) */
1093
1658
  createdAfter?: string;
1659
+ /** Filter by creation date (before) */
1094
1660
  createdBefore?: string;
1661
+ /** Filter by description text */
1095
1662
  description?: string;
1663
+ /** Filter by device asset ID */
1096
1664
  deviceAssetId?: string;
1665
+ /** Device ID to filter by */
1097
1666
  deviceId?: string;
1667
+ /** Filter by encoded video file path */
1098
1668
  encodedVideoPath?: string;
1669
+ /** Filter by asset ID */
1099
1670
  id?: string;
1671
+ /** Filter by encoded status */
1100
1672
  isEncoded?: boolean;
1673
+ /** Filter by favorite status */
1101
1674
  isFavorite?: boolean;
1675
+ /** Filter by motion photo status */
1102
1676
  isMotion?: boolean;
1677
+ /** Filter assets not in any album */
1103
1678
  isNotInAlbum?: boolean;
1679
+ /** Filter by offline status */
1104
1680
  isOffline?: boolean;
1681
+ /** Filter by lens model */
1105
1682
  lensModel?: string | null;
1683
+ /** Library ID to filter by */
1106
1684
  libraryId?: string | null;
1685
+ /** Filter by camera make */
1107
1686
  make?: string;
1687
+ /** Filter by camera model */
1108
1688
  model?: string | null;
1689
+ /** Filter by OCR text content */
1109
1690
  ocr?: string;
1691
+ /** Sort order */
1110
1692
  order?: AssetOrder;
1693
+ /** Filter by original file name */
1111
1694
  originalFileName?: string;
1695
+ /** Filter by original file path */
1112
1696
  originalPath?: string;
1697
+ /** Page number */
1113
1698
  page?: number;
1699
+ /** Filter by person IDs */
1114
1700
  personIds?: string[];
1701
+ /** Filter by preview file path */
1115
1702
  previewPath?: string;
1703
+ /** Filter by rating */
1116
1704
  rating?: number;
1705
+ /** Number of results to return */
1117
1706
  size?: number;
1707
+ /** Filter by state/province name */
1118
1708
  state?: string | null;
1709
+ /** Filter by tag IDs */
1119
1710
  tagIds?: string[] | null;
1711
+ /** Filter by taken date (after) */
1120
1712
  takenAfter?: string;
1713
+ /** Filter by taken date (before) */
1121
1714
  takenBefore?: string;
1715
+ /** Filter by thumbnail file path */
1122
1716
  thumbnailPath?: string;
1717
+ /** Filter by trash date (after) */
1123
1718
  trashedAfter?: string;
1719
+ /** Filter by trash date (before) */
1124
1720
  trashedBefore?: string;
1721
+ /** Asset type filter */
1125
1722
  "type"?: AssetTypeEnum;
1723
+ /** Filter by update date (after) */
1126
1724
  updatedAfter?: string;
1725
+ /** Filter by update date (before) */
1127
1726
  updatedBefore?: string;
1727
+ /** Filter by visibility */
1128
1728
  visibility?: AssetVisibility;
1729
+ /** Include deleted assets */
1129
1730
  withDeleted?: boolean;
1731
+ /** Include EXIF data in response */
1130
1732
  withExif?: boolean;
1733
+ /** Include assets with people */
1131
1734
  withPeople?: boolean;
1735
+ /** Include stacked assets */
1132
1736
  withStacked?: boolean;
1133
1737
  };
1134
1738
  export type SearchFacetCountResponseDto = {
1739
+ /** Number of assets with this facet value */
1135
1740
  count: number;
1741
+ /** Facet value */
1136
1742
  value: string;
1137
1743
  };
1138
1744
  export type SearchFacetResponseDto = {
1745
+ /** Facet counts */
1139
1746
  counts: SearchFacetCountResponseDto[];
1747
+ /** Facet field name */
1140
1748
  fieldName: string;
1141
1749
  };
1142
1750
  export type SearchAlbumResponseDto = {
1751
+ /** Number of albums in this page */
1143
1752
  count: number;
1144
1753
  facets: SearchFacetResponseDto[];
1145
1754
  items: AlbumResponseDto[];
1755
+ /** Total number of matching albums */
1146
1756
  total: number;
1147
1757
  };
1148
1758
  export type SearchAssetResponseDto = {
1759
+ /** Number of assets in this page */
1149
1760
  count: number;
1150
1761
  facets: SearchFacetResponseDto[];
1151
1762
  items: AssetResponseDto[];
1763
+ /** Next page token */
1152
1764
  nextPage: string | null;
1765
+ /** Total number of matching assets */
1153
1766
  total: number;
1154
1767
  };
1155
1768
  export type SearchResponseDto = {
@@ -1157,189 +1770,351 @@ export type SearchResponseDto = {
1157
1770
  assets: SearchAssetResponseDto;
1158
1771
  };
1159
1772
  export type PlacesResponseDto = {
1773
+ /** Administrative level 1 name (state/province) */
1160
1774
  admin1name?: string;
1775
+ /** Administrative level 2 name (county/district) */
1161
1776
  admin2name?: string;
1777
+ /** Latitude coordinate */
1162
1778
  latitude: number;
1779
+ /** Longitude coordinate */
1163
1780
  longitude: number;
1781
+ /** Place name */
1164
1782
  name: string;
1165
1783
  };
1166
1784
  export type RandomSearchDto = {
1785
+ /** Filter by album IDs */
1167
1786
  albumIds?: string[];
1787
+ /** Filter by city name */
1168
1788
  city?: string | null;
1789
+ /** Filter by country name */
1169
1790
  country?: string | null;
1791
+ /** Filter by creation date (after) */
1170
1792
  createdAfter?: string;
1793
+ /** Filter by creation date (before) */
1171
1794
  createdBefore?: string;
1795
+ /** Device ID to filter by */
1172
1796
  deviceId?: string;
1797
+ /** Filter by encoded status */
1173
1798
  isEncoded?: boolean;
1799
+ /** Filter by favorite status */
1174
1800
  isFavorite?: boolean;
1801
+ /** Filter by motion photo status */
1175
1802
  isMotion?: boolean;
1803
+ /** Filter assets not in any album */
1176
1804
  isNotInAlbum?: boolean;
1805
+ /** Filter by offline status */
1177
1806
  isOffline?: boolean;
1807
+ /** Filter by lens model */
1178
1808
  lensModel?: string | null;
1809
+ /** Library ID to filter by */
1179
1810
  libraryId?: string | null;
1811
+ /** Filter by camera make */
1180
1812
  make?: string;
1813
+ /** Filter by camera model */
1181
1814
  model?: string | null;
1815
+ /** Filter by OCR text content */
1182
1816
  ocr?: string;
1817
+ /** Filter by person IDs */
1183
1818
  personIds?: string[];
1819
+ /** Filter by rating */
1184
1820
  rating?: number;
1821
+ /** Number of results to return */
1185
1822
  size?: number;
1823
+ /** Filter by state/province name */
1186
1824
  state?: string | null;
1825
+ /** Filter by tag IDs */
1187
1826
  tagIds?: string[] | null;
1827
+ /** Filter by taken date (after) */
1188
1828
  takenAfter?: string;
1829
+ /** Filter by taken date (before) */
1189
1830
  takenBefore?: string;
1831
+ /** Filter by trash date (after) */
1190
1832
  trashedAfter?: string;
1833
+ /** Filter by trash date (before) */
1191
1834
  trashedBefore?: string;
1835
+ /** Asset type filter */
1192
1836
  "type"?: AssetTypeEnum;
1837
+ /** Filter by update date (after) */
1193
1838
  updatedAfter?: string;
1839
+ /** Filter by update date (before) */
1194
1840
  updatedBefore?: string;
1841
+ /** Filter by visibility */
1195
1842
  visibility?: AssetVisibility;
1843
+ /** Include deleted assets */
1196
1844
  withDeleted?: boolean;
1845
+ /** Include EXIF data in response */
1197
1846
  withExif?: boolean;
1847
+ /** Include assets with people */
1198
1848
  withPeople?: boolean;
1849
+ /** Include stacked assets */
1199
1850
  withStacked?: boolean;
1200
1851
  };
1201
1852
  export type SmartSearchDto = {
1853
+ /** Filter by album IDs */
1202
1854
  albumIds?: string[];
1855
+ /** Filter by city name */
1203
1856
  city?: string | null;
1857
+ /** Filter by country name */
1204
1858
  country?: string | null;
1859
+ /** Filter by creation date (after) */
1205
1860
  createdAfter?: string;
1861
+ /** Filter by creation date (before) */
1206
1862
  createdBefore?: string;
1863
+ /** Device ID to filter by */
1207
1864
  deviceId?: string;
1865
+ /** Filter by encoded status */
1208
1866
  isEncoded?: boolean;
1867
+ /** Filter by favorite status */
1209
1868
  isFavorite?: boolean;
1869
+ /** Filter by motion photo status */
1210
1870
  isMotion?: boolean;
1871
+ /** Filter assets not in any album */
1211
1872
  isNotInAlbum?: boolean;
1873
+ /** Filter by offline status */
1212
1874
  isOffline?: boolean;
1875
+ /** Search language code */
1213
1876
  language?: string;
1877
+ /** Filter by lens model */
1214
1878
  lensModel?: string | null;
1879
+ /** Library ID to filter by */
1215
1880
  libraryId?: string | null;
1881
+ /** Filter by camera make */
1216
1882
  make?: string;
1883
+ /** Filter by camera model */
1217
1884
  model?: string | null;
1885
+ /** Filter by OCR text content */
1218
1886
  ocr?: string;
1887
+ /** Page number */
1219
1888
  page?: number;
1889
+ /** Filter by person IDs */
1220
1890
  personIds?: string[];
1891
+ /** Natural language search query */
1221
1892
  query?: string;
1893
+ /** Asset ID to use as search reference */
1222
1894
  queryAssetId?: string;
1895
+ /** Filter by rating */
1223
1896
  rating?: number;
1897
+ /** Number of results to return */
1224
1898
  size?: number;
1899
+ /** Filter by state/province name */
1225
1900
  state?: string | null;
1901
+ /** Filter by tag IDs */
1226
1902
  tagIds?: string[] | null;
1903
+ /** Filter by taken date (after) */
1227
1904
  takenAfter?: string;
1905
+ /** Filter by taken date (before) */
1228
1906
  takenBefore?: string;
1907
+ /** Filter by trash date (after) */
1229
1908
  trashedAfter?: string;
1909
+ /** Filter by trash date (before) */
1230
1910
  trashedBefore?: string;
1911
+ /** Asset type filter */
1231
1912
  "type"?: AssetTypeEnum;
1913
+ /** Filter by update date (after) */
1232
1914
  updatedAfter?: string;
1915
+ /** Filter by update date (before) */
1233
1916
  updatedBefore?: string;
1917
+ /** Filter by visibility */
1234
1918
  visibility?: AssetVisibility;
1919
+ /** Include deleted assets */
1235
1920
  withDeleted?: boolean;
1921
+ /** Include EXIF data in response */
1236
1922
  withExif?: boolean;
1237
1923
  };
1238
1924
  export type StatisticsSearchDto = {
1925
+ /** Filter by album IDs */
1239
1926
  albumIds?: string[];
1927
+ /** Filter by city name */
1240
1928
  city?: string | null;
1929
+ /** Filter by country name */
1241
1930
  country?: string | null;
1931
+ /** Filter by creation date (after) */
1242
1932
  createdAfter?: string;
1933
+ /** Filter by creation date (before) */
1243
1934
  createdBefore?: string;
1935
+ /** Filter by description text */
1244
1936
  description?: string;
1937
+ /** Device ID to filter by */
1245
1938
  deviceId?: string;
1939
+ /** Filter by encoded status */
1246
1940
  isEncoded?: boolean;
1941
+ /** Filter by favorite status */
1247
1942
  isFavorite?: boolean;
1943
+ /** Filter by motion photo status */
1248
1944
  isMotion?: boolean;
1945
+ /** Filter assets not in any album */
1249
1946
  isNotInAlbum?: boolean;
1947
+ /** Filter by offline status */
1250
1948
  isOffline?: boolean;
1949
+ /** Filter by lens model */
1251
1950
  lensModel?: string | null;
1951
+ /** Library ID to filter by */
1252
1952
  libraryId?: string | null;
1953
+ /** Filter by camera make */
1253
1954
  make?: string;
1955
+ /** Filter by camera model */
1254
1956
  model?: string | null;
1957
+ /** Filter by OCR text content */
1255
1958
  ocr?: string;
1959
+ /** Filter by person IDs */
1256
1960
  personIds?: string[];
1961
+ /** Filter by rating */
1257
1962
  rating?: number;
1963
+ /** Filter by state/province name */
1258
1964
  state?: string | null;
1965
+ /** Filter by tag IDs */
1259
1966
  tagIds?: string[] | null;
1967
+ /** Filter by taken date (after) */
1260
1968
  takenAfter?: string;
1969
+ /** Filter by taken date (before) */
1261
1970
  takenBefore?: string;
1971
+ /** Filter by trash date (after) */
1262
1972
  trashedAfter?: string;
1973
+ /** Filter by trash date (before) */
1263
1974
  trashedBefore?: string;
1975
+ /** Asset type filter */
1264
1976
  "type"?: AssetTypeEnum;
1977
+ /** Filter by update date (after) */
1265
1978
  updatedAfter?: string;
1979
+ /** Filter by update date (before) */
1266
1980
  updatedBefore?: string;
1981
+ /** Filter by visibility */
1267
1982
  visibility?: AssetVisibility;
1268
1983
  };
1269
1984
  export type SearchStatisticsResponseDto = {
1985
+ /** Total number of matching assets */
1270
1986
  total: number;
1271
1987
  };
1272
1988
  export type ServerAboutResponseDto = {
1989
+ /** Build identifier */
1273
1990
  build?: string;
1991
+ /** Build image name */
1274
1992
  buildImage?: string;
1993
+ /** Build image URL */
1275
1994
  buildImageUrl?: string;
1995
+ /** Build URL */
1276
1996
  buildUrl?: string;
1997
+ /** ExifTool version */
1277
1998
  exiftool?: string;
1999
+ /** FFmpeg version */
1278
2000
  ffmpeg?: string;
2001
+ /** ImageMagick version */
1279
2002
  imagemagick?: string;
2003
+ /** libvips version */
1280
2004
  libvips?: string;
2005
+ /** Whether the server is licensed */
1281
2006
  licensed: boolean;
2007
+ /** Node.js version */
1282
2008
  nodejs?: string;
2009
+ /** Repository name */
1283
2010
  repository?: string;
2011
+ /** Repository URL */
1284
2012
  repositoryUrl?: string;
2013
+ /** Source commit hash */
1285
2014
  sourceCommit?: string;
2015
+ /** Source reference (branch/tag) */
1286
2016
  sourceRef?: string;
2017
+ /** Source URL */
1287
2018
  sourceUrl?: string;
2019
+ /** Third-party bug/feature URL */
1288
2020
  thirdPartyBugFeatureUrl?: string;
2021
+ /** Third-party documentation URL */
1289
2022
  thirdPartyDocumentationUrl?: string;
2023
+ /** Third-party source URL */
1290
2024
  thirdPartySourceUrl?: string;
2025
+ /** Third-party support URL */
1291
2026
  thirdPartySupportUrl?: string;
2027
+ /** Server version */
1292
2028
  version: string;
2029
+ /** URL to version information */
1293
2030
  versionUrl: string;
1294
2031
  };
1295
2032
  export type ServerApkLinksDto = {
2033
+ /** APK download link for ARM64 v8a architecture */
1296
2034
  arm64v8a: string;
2035
+ /** APK download link for ARM EABI v7a architecture */
1297
2036
  armeabiv7a: string;
2037
+ /** APK download link for universal architecture */
1298
2038
  universal: string;
2039
+ /** APK download link for x86_64 architecture */
1299
2040
  x86_64: string;
1300
2041
  };
1301
2042
  export type ServerConfigDto = {
2043
+ /** External domain URL */
1302
2044
  externalDomain: string;
2045
+ /** Whether the server has been initialized */
1303
2046
  isInitialized: boolean;
2047
+ /** Whether the admin has completed onboarding */
1304
2048
  isOnboarded: boolean;
2049
+ /** Login page message */
1305
2050
  loginPageMessage: string;
2051
+ /** Whether maintenance mode is active */
1306
2052
  maintenanceMode: boolean;
2053
+ /** Map dark style URL */
1307
2054
  mapDarkStyleUrl: string;
2055
+ /** Map light style URL */
1308
2056
  mapLightStyleUrl: string;
2057
+ /** OAuth button text */
1309
2058
  oauthButtonText: string;
2059
+ /** Whether public user registration is enabled */
1310
2060
  publicUsers: boolean;
2061
+ /** Number of days before trashed assets are permanently deleted */
1311
2062
  trashDays: number;
2063
+ /** Delay in days before deleted users are permanently removed */
1312
2064
  userDeleteDelay: number;
1313
2065
  };
1314
2066
  export type ServerFeaturesDto = {
2067
+ /** Whether config file is available */
1315
2068
  configFile: boolean;
2069
+ /** Whether duplicate detection is enabled */
1316
2070
  duplicateDetection: boolean;
2071
+ /** Whether email notifications are enabled */
1317
2072
  email: boolean;
2073
+ /** Whether facial recognition is enabled */
1318
2074
  facialRecognition: boolean;
2075
+ /** Whether face import is enabled */
1319
2076
  importFaces: boolean;
2077
+ /** Whether map feature is enabled */
1320
2078
  map: boolean;
2079
+ /** Whether OAuth is enabled */
1321
2080
  oauth: boolean;
2081
+ /** Whether OAuth auto-launch is enabled */
1322
2082
  oauthAutoLaunch: boolean;
2083
+ /** Whether OCR is enabled */
1323
2084
  ocr: boolean;
2085
+ /** Whether password login is enabled */
1324
2086
  passwordLogin: boolean;
2087
+ /** Whether reverse geocoding is enabled */
1325
2088
  reverseGeocoding: boolean;
2089
+ /** Whether search is enabled */
1326
2090
  search: boolean;
2091
+ /** Whether sidecar files are supported */
1327
2092
  sidecar: boolean;
2093
+ /** Whether smart search is enabled */
1328
2094
  smartSearch: boolean;
2095
+ /** Whether trash feature is enabled */
1329
2096
  trash: boolean;
1330
2097
  };
1331
2098
  export type LicenseResponseDto = {
2099
+ /** Activation date */
1332
2100
  activatedAt: string;
2101
+ /** Activation key */
1333
2102
  activationKey: string;
2103
+ /** License key (format: IM(SV|CL)(-XXXX){8}) */
1334
2104
  licenseKey: string;
1335
2105
  };
1336
2106
  export type LicenseKeyDto = {
2107
+ /** Activation key */
1337
2108
  activationKey: string;
2109
+ /** License key (format: IM(SV|CL)(-XXXX){8}) */
1338
2110
  licenseKey: string;
1339
2111
  };
1340
2112
  export type ServerMediaTypesResponseDto = {
2113
+ /** Supported image MIME types */
1341
2114
  image: string[];
2115
+ /** Supported sidecar MIME types */
1342
2116
  sidecar: string[];
2117
+ /** Supported video MIME types */
1343
2118
  video: string[];
1344
2119
  };
1345
2120
  export type ServerPingResponse = {};
@@ -1347,209 +2122,335 @@ export type ServerPingResponseRead = {
1347
2122
  res: string;
1348
2123
  };
1349
2124
  export type UsageByUserDto = {
2125
+ /** Number of photos */
1350
2126
  photos: number;
2127
+ /** User quota size in bytes (null if unlimited) */
1351
2128
  quotaSizeInBytes: number | null;
2129
+ /** Total storage usage in bytes */
1352
2130
  usage: number;
2131
+ /** Storage usage for photos in bytes */
1353
2132
  usagePhotos: number;
2133
+ /** Storage usage for videos in bytes */
1354
2134
  usageVideos: number;
2135
+ /** User ID */
1355
2136
  userId: string;
2137
+ /** User name */
1356
2138
  userName: string;
2139
+ /** Number of videos */
1357
2140
  videos: number;
1358
2141
  };
1359
2142
  export type ServerStatsResponseDto = {
2143
+ /** Total number of photos */
1360
2144
  photos: number;
2145
+ /** Total storage usage in bytes */
1361
2146
  usage: number;
1362
2147
  usageByUser: UsageByUserDto[];
2148
+ /** Storage usage for photos in bytes */
1363
2149
  usagePhotos: number;
2150
+ /** Storage usage for videos in bytes */
1364
2151
  usageVideos: number;
2152
+ /** Total number of videos */
1365
2153
  videos: number;
1366
2154
  };
1367
2155
  export type ServerStorageResponseDto = {
2156
+ /** Available disk space (human-readable format) */
1368
2157
  diskAvailable: string;
2158
+ /** Available disk space in bytes */
1369
2159
  diskAvailableRaw: number;
2160
+ /** Total disk size (human-readable format) */
1370
2161
  diskSize: string;
2162
+ /** Total disk size in bytes */
1371
2163
  diskSizeRaw: number;
2164
+ /** Disk usage percentage (0-100) */
1372
2165
  diskUsagePercentage: number;
2166
+ /** Used disk space (human-readable format) */
1373
2167
  diskUse: string;
2168
+ /** Used disk space in bytes */
1374
2169
  diskUseRaw: number;
1375
2170
  };
1376
2171
  export type ServerThemeDto = {
2172
+ /** Custom CSS for theming */
1377
2173
  customCss: string;
1378
2174
  };
1379
2175
  export type ServerVersionResponseDto = {
2176
+ /** Major version number */
1380
2177
  major: number;
2178
+ /** Minor version number */
1381
2179
  minor: number;
2180
+ /** Patch version number */
1382
2181
  patch: number;
1383
2182
  };
1384
2183
  export type VersionCheckStateResponseDto = {
2184
+ /** Last check timestamp */
1385
2185
  checkedAt: string | null;
2186
+ /** Release version */
1386
2187
  releaseVersion: string | null;
1387
2188
  };
1388
2189
  export type ServerVersionHistoryResponseDto = {
2190
+ /** When this version was first seen */
1389
2191
  createdAt: string;
2192
+ /** Version history entry ID */
1390
2193
  id: string;
2194
+ /** Version string */
1391
2195
  version: string;
1392
2196
  };
1393
2197
  export type SessionCreateDto = {
2198
+ /** Device OS */
1394
2199
  deviceOS?: string;
2200
+ /** Device type */
1395
2201
  deviceType?: string;
1396
- /** session duration, in seconds */
2202
+ /** Session duration in seconds */
1397
2203
  duration?: number;
1398
2204
  };
1399
2205
  export type SessionCreateResponseDto = {
2206
+ /** App version */
1400
2207
  appVersion: string | null;
2208
+ /** Creation date */
1401
2209
  createdAt: string;
2210
+ /** Is current session */
1402
2211
  current: boolean;
2212
+ /** Device OS */
1403
2213
  deviceOS: string;
2214
+ /** Device type */
1404
2215
  deviceType: string;
2216
+ /** Expiration date */
1405
2217
  expiresAt?: string;
2218
+ /** Session ID */
1406
2219
  id: string;
2220
+ /** Is pending sync reset */
1407
2221
  isPendingSyncReset: boolean;
2222
+ /** Session token */
1408
2223
  token: string;
2224
+ /** Last update date */
1409
2225
  updatedAt: string;
1410
2226
  };
1411
2227
  export type SessionUpdateDto = {
2228
+ /** Reset pending sync state */
1412
2229
  isPendingSyncReset?: boolean;
1413
2230
  };
1414
2231
  export type SharedLinkResponseDto = {
1415
2232
  album?: AlbumResponseDto;
2233
+ /** Allow downloads */
1416
2234
  allowDownload: boolean;
2235
+ /** Allow uploads */
1417
2236
  allowUpload: boolean;
1418
2237
  assets: AssetResponseDto[];
2238
+ /** Creation date */
1419
2239
  createdAt: string;
2240
+ /** Link description */
1420
2241
  description: string | null;
2242
+ /** Expiration date */
1421
2243
  expiresAt: string | null;
2244
+ /** Shared link ID */
1422
2245
  id: string;
2246
+ /** Encryption key (base64url) */
1423
2247
  key: string;
2248
+ /** Has password */
1424
2249
  password: string | null;
2250
+ /** Show metadata */
1425
2251
  showMetadata: boolean;
2252
+ /** Custom URL slug */
1426
2253
  slug: string | null;
2254
+ /** Access token */
1427
2255
  token?: string | null;
2256
+ /** Shared link type */
1428
2257
  "type": SharedLinkType;
2258
+ /** Owner user ID */
1429
2259
  userId: string;
1430
2260
  };
1431
2261
  export type SharedLinkCreateDto = {
2262
+ /** Album ID (for album sharing) */
1432
2263
  albumId?: string;
2264
+ /** Allow downloads */
1433
2265
  allowDownload?: boolean;
2266
+ /** Allow uploads */
1434
2267
  allowUpload?: boolean;
2268
+ /** Asset IDs (for individual assets) */
1435
2269
  assetIds?: string[];
2270
+ /** Link description */
1436
2271
  description?: string | null;
2272
+ /** Expiration date */
1437
2273
  expiresAt?: string | null;
2274
+ /** Link password */
1438
2275
  password?: string | null;
2276
+ /** Show metadata */
1439
2277
  showMetadata?: boolean;
2278
+ /** Custom URL slug */
1440
2279
  slug?: string | null;
2280
+ /** Shared link type */
1441
2281
  "type": SharedLinkType;
1442
2282
  };
1443
2283
  export type SharedLinkEditDto = {
2284
+ /** Allow downloads */
1444
2285
  allowDownload?: boolean;
2286
+ /** Allow uploads */
1445
2287
  allowUpload?: boolean;
1446
- /** Few clients cannot send null to set the expiryTime to never.
1447
- Setting this flag and not sending expiryAt is considered as null instead.
1448
- Clients that can send null values can ignore this. */
2288
+ /** Whether to change the expiry time. Few clients cannot send null to set the expiryTime to never. Setting this flag and not sending expiryAt is considered as null instead. Clients that can send null values can ignore this. */
1449
2289
  changeExpiryTime?: boolean;
2290
+ /** Link description */
1450
2291
  description?: string | null;
2292
+ /** Expiration date */
1451
2293
  expiresAt?: string | null;
2294
+ /** Link password */
1452
2295
  password?: string | null;
2296
+ /** Show metadata */
1453
2297
  showMetadata?: boolean;
2298
+ /** Custom URL slug */
1454
2299
  slug?: string | null;
1455
2300
  };
1456
2301
  export type AssetIdsResponseDto = {
2302
+ /** Asset ID */
1457
2303
  assetId: string;
2304
+ /** Error reason if failed */
1458
2305
  error?: Error2;
2306
+ /** Whether operation succeeded */
1459
2307
  success: boolean;
1460
2308
  };
1461
2309
  export type StackResponseDto = {
2310
+ /** Stack assets */
1462
2311
  assets: AssetResponseDto[];
2312
+ /** Stack ID */
1463
2313
  id: string;
2314
+ /** Primary asset ID */
1464
2315
  primaryAssetId: string;
1465
2316
  };
1466
2317
  export type StackCreateDto = {
1467
- /** first asset becomes the primary */
2318
+ /** Asset IDs (first becomes primary, min 2) */
1468
2319
  assetIds: string[];
1469
2320
  };
1470
2321
  export type StackUpdateDto = {
2322
+ /** Primary asset ID */
1471
2323
  primaryAssetId?: string;
1472
2324
  };
1473
2325
  export type SyncAckDeleteDto = {
2326
+ /** Sync entity types to delete acks for */
1474
2327
  types?: SyncEntityType[];
1475
2328
  };
1476
2329
  export type SyncAckDto = {
2330
+ /** Acknowledgment ID */
1477
2331
  ack: string;
2332
+ /** Sync entity type */
1478
2333
  "type": SyncEntityType;
1479
2334
  };
1480
2335
  export type SyncAckSetDto = {
2336
+ /** Acknowledgment IDs (max 1000) */
1481
2337
  acks: string[];
1482
2338
  };
1483
2339
  export type AssetDeltaSyncDto = {
2340
+ /** Sync assets updated after this date */
1484
2341
  updatedAfter: string;
2342
+ /** User IDs to sync */
1485
2343
  userIds: string[];
1486
2344
  };
1487
2345
  export type AssetDeltaSyncResponseDto = {
2346
+ /** Deleted asset IDs */
1488
2347
  deleted: string[];
2348
+ /** Whether full sync is needed */
1489
2349
  needsFullSync: boolean;
2350
+ /** Upserted assets */
1490
2351
  upserted: AssetResponseDto[];
1491
2352
  };
1492
2353
  export type AssetFullSyncDto = {
2354
+ /** Last asset ID (pagination) */
1493
2355
  lastId?: string;
2356
+ /** Maximum number of assets to return */
1494
2357
  limit: number;
2358
+ /** Sync assets updated until this date */
1495
2359
  updatedUntil: string;
2360
+ /** Filter by user ID */
1496
2361
  userId?: string;
1497
2362
  };
1498
2363
  export type SyncStreamDto = {
2364
+ /** Reset sync state */
1499
2365
  reset?: boolean;
2366
+ /** Sync request types */
1500
2367
  types: SyncRequestType[];
1501
2368
  };
1502
2369
  export type DatabaseBackupConfig = {
2370
+ /** Cron expression */
1503
2371
  cronExpression: string;
2372
+ /** Enabled */
1504
2373
  enabled: boolean;
2374
+ /** Keep last amount */
1505
2375
  keepLastAmount: number;
1506
2376
  };
1507
2377
  export type SystemConfigBackupsDto = {
1508
2378
  database: DatabaseBackupConfig;
1509
2379
  };
1510
2380
  export type SystemConfigFFmpegDto = {
2381
+ /** Transcode hardware acceleration */
1511
2382
  accel: TranscodeHWAccel;
2383
+ /** Accelerated decode */
1512
2384
  accelDecode: boolean;
2385
+ /** Accepted audio codecs */
1513
2386
  acceptedAudioCodecs: AudioCodec[];
2387
+ /** Accepted containers */
1514
2388
  acceptedContainers: VideoContainer[];
2389
+ /** Accepted video codecs */
1515
2390
  acceptedVideoCodecs: VideoCodec[];
2391
+ /** B-frames */
1516
2392
  bframes: number;
2393
+ /** CQ mode */
1517
2394
  cqMode: CQMode;
2395
+ /** CRF */
1518
2396
  crf: number;
2397
+ /** GOP size */
1519
2398
  gopSize: number;
2399
+ /** Max bitrate */
1520
2400
  maxBitrate: string;
2401
+ /** Preferred hardware device */
1521
2402
  preferredHwDevice: string;
2403
+ /** Preset */
1522
2404
  preset: string;
2405
+ /** References */
1523
2406
  refs: number;
2407
+ /** Target audio codec */
1524
2408
  targetAudioCodec: AudioCodec;
2409
+ /** Target resolution */
1525
2410
  targetResolution: string;
2411
+ /** Target video codec */
1526
2412
  targetVideoCodec: VideoCodec;
2413
+ /** Temporal AQ */
1527
2414
  temporalAQ: boolean;
2415
+ /** Threads */
1528
2416
  threads: number;
2417
+ /** Tone mapping */
1529
2418
  tonemap: ToneMapping;
2419
+ /** Transcode policy */
1530
2420
  transcode: TranscodePolicy;
2421
+ /** Two pass */
1531
2422
  twoPass: boolean;
1532
2423
  };
1533
2424
  export type SystemConfigGeneratedFullsizeImageDto = {
2425
+ /** Enabled */
1534
2426
  enabled: boolean;
2427
+ /** Image format */
1535
2428
  format: ImageFormat;
2429
+ /** Progressive */
1536
2430
  progressive?: boolean;
2431
+ /** Quality */
1537
2432
  quality: number;
1538
2433
  };
1539
2434
  export type SystemConfigGeneratedImageDto = {
2435
+ /** Image format */
1540
2436
  format: ImageFormat;
1541
2437
  progressive?: boolean;
2438
+ /** Quality */
1542
2439
  quality: number;
2440
+ /** Size */
1543
2441
  size: number;
1544
2442
  };
1545
2443
  export type SystemConfigImageDto = {
2444
+ /** Colorspace */
1546
2445
  colorspace: Colorspace;
2446
+ /** Extract embedded */
1547
2447
  extractEmbedded: boolean;
1548
2448
  fullsize: SystemConfigGeneratedFullsizeImageDto;
1549
2449
  preview: SystemConfigGeneratedImageDto;
1550
2450
  thumbnail: SystemConfigGeneratedImageDto;
1551
2451
  };
1552
2452
  export type JobSettingsDto = {
2453
+ /** Concurrency */
1553
2454
  concurrency: number;
1554
2455
  };
1555
2456
  export type SystemConfigJobDto = {
@@ -1570,9 +2471,11 @@ export type SystemConfigJobDto = {
1570
2471
  };
1571
2472
  export type SystemConfigLibraryScanDto = {
1572
2473
  cronExpression: string;
2474
+ /** Enabled */
1573
2475
  enabled: boolean;
1574
2476
  };
1575
2477
  export type SystemConfigLibraryWatchDto = {
2478
+ /** Enabled */
1576
2479
  enabled: boolean;
1577
2480
  };
1578
2481
  export type SystemConfigLibraryDto = {
@@ -1580,40 +2483,57 @@ export type SystemConfigLibraryDto = {
1580
2483
  watch: SystemConfigLibraryWatchDto;
1581
2484
  };
1582
2485
  export type SystemConfigLoggingDto = {
2486
+ /** Enabled */
1583
2487
  enabled: boolean;
1584
2488
  level: LogLevel;
1585
2489
  };
1586
2490
  export type MachineLearningAvailabilityChecksDto = {
2491
+ /** Enabled */
1587
2492
  enabled: boolean;
1588
2493
  interval: number;
1589
2494
  timeout: number;
1590
2495
  };
1591
2496
  export type ClipConfig = {
2497
+ /** Whether the task is enabled */
1592
2498
  enabled: boolean;
2499
+ /** Name of the model to use */
1593
2500
  modelName: string;
1594
2501
  };
1595
2502
  export type DuplicateDetectionConfig = {
2503
+ /** Whether the task is enabled */
1596
2504
  enabled: boolean;
2505
+ /** Maximum distance threshold for duplicate detection */
1597
2506
  maxDistance: number;
1598
2507
  };
1599
2508
  export type FacialRecognitionConfig = {
2509
+ /** Whether the task is enabled */
1600
2510
  enabled: boolean;
2511
+ /** Maximum distance threshold for face recognition */
1601
2512
  maxDistance: number;
2513
+ /** Minimum number of faces required for recognition */
1602
2514
  minFaces: number;
2515
+ /** Minimum confidence score for face detection */
1603
2516
  minScore: number;
2517
+ /** Name of the model to use */
1604
2518
  modelName: string;
1605
2519
  };
1606
2520
  export type OcrConfig = {
2521
+ /** Whether the task is enabled */
1607
2522
  enabled: boolean;
2523
+ /** Maximum resolution for OCR processing */
1608
2524
  maxResolution: number;
2525
+ /** Minimum confidence score for text detection */
1609
2526
  minDetectionScore: number;
2527
+ /** Minimum confidence score for text recognition */
1610
2528
  minRecognitionScore: number;
2529
+ /** Name of the model to use */
1611
2530
  modelName: string;
1612
2531
  };
1613
2532
  export type SystemConfigMachineLearningDto = {
1614
2533
  availabilityChecks: MachineLearningAvailabilityChecksDto;
1615
2534
  clip: ClipConfig;
1616
2535
  duplicateDetection: DuplicateDetectionConfig;
2536
+ /** Enabled */
1617
2537
  enabled: boolean;
1618
2538
  facialRecognition: FacialRecognitionConfig;
1619
2539
  ocr: OcrConfig;
@@ -1621,63 +2541,96 @@ export type SystemConfigMachineLearningDto = {
1621
2541
  };
1622
2542
  export type SystemConfigMapDto = {
1623
2543
  darkStyle: string;
2544
+ /** Enabled */
1624
2545
  enabled: boolean;
1625
2546
  lightStyle: string;
1626
2547
  };
1627
2548
  export type SystemConfigFacesDto = {
2549
+ /** Import */
1628
2550
  "import": boolean;
1629
2551
  };
1630
2552
  export type SystemConfigMetadataDto = {
1631
2553
  faces: SystemConfigFacesDto;
1632
2554
  };
1633
2555
  export type SystemConfigNewVersionCheckDto = {
2556
+ /** Enabled */
1634
2557
  enabled: boolean;
1635
2558
  };
1636
2559
  export type SystemConfigNightlyTasksDto = {
2560
+ /** Cluster new faces */
1637
2561
  clusterNewFaces: boolean;
2562
+ /** Database cleanup */
1638
2563
  databaseCleanup: boolean;
2564
+ /** Generate memories */
1639
2565
  generateMemories: boolean;
2566
+ /** Missing thumbnails */
1640
2567
  missingThumbnails: boolean;
1641
2568
  startTime: string;
2569
+ /** Sync quota usage */
1642
2570
  syncQuotaUsage: boolean;
1643
2571
  };
1644
2572
  export type SystemConfigNotificationsDto = {
1645
2573
  smtp: SystemConfigSmtpDto;
1646
2574
  };
1647
2575
  export type SystemConfigOAuthDto = {
2576
+ /** Auto launch */
1648
2577
  autoLaunch: boolean;
2578
+ /** Auto register */
1649
2579
  autoRegister: boolean;
2580
+ /** Button text */
1650
2581
  buttonText: string;
2582
+ /** Client ID */
1651
2583
  clientId: string;
2584
+ /** Client secret */
1652
2585
  clientSecret: string;
2586
+ /** Default storage quota */
1653
2587
  defaultStorageQuota: number | null;
2588
+ /** Enabled */
1654
2589
  enabled: boolean;
2590
+ /** Issuer URL */
1655
2591
  issuerUrl: string;
2592
+ /** Mobile override enabled */
1656
2593
  mobileOverrideEnabled: boolean;
2594
+ /** Mobile redirect URI */
1657
2595
  mobileRedirectUri: string;
2596
+ /** Profile signing algorithm */
1658
2597
  profileSigningAlgorithm: string;
2598
+ /** Role claim */
1659
2599
  roleClaim: string;
2600
+ /** Scope */
1660
2601
  scope: string;
1661
2602
  signingAlgorithm: string;
2603
+ /** Storage label claim */
1662
2604
  storageLabelClaim: string;
2605
+ /** Storage quota claim */
1663
2606
  storageQuotaClaim: string;
2607
+ /** Timeout */
1664
2608
  timeout: number;
2609
+ /** Token endpoint auth method */
1665
2610
  tokenEndpointAuthMethod: OAuthTokenEndpointAuthMethod;
1666
2611
  };
1667
2612
  export type SystemConfigPasswordLoginDto = {
2613
+ /** Enabled */
1668
2614
  enabled: boolean;
1669
2615
  };
1670
2616
  export type SystemConfigReverseGeocodingDto = {
2617
+ /** Enabled */
1671
2618
  enabled: boolean;
1672
2619
  };
1673
2620
  export type SystemConfigServerDto = {
2621
+ /** External domain */
1674
2622
  externalDomain: string;
2623
+ /** Login page message */
1675
2624
  loginPageMessage: string;
2625
+ /** Public users */
1676
2626
  publicUsers: boolean;
1677
2627
  };
1678
2628
  export type SystemConfigStorageTemplateDto = {
2629
+ /** Enabled */
1679
2630
  enabled: boolean;
2631
+ /** Hash verification enabled */
1680
2632
  hashVerificationEnabled: boolean;
2633
+ /** Template */
1681
2634
  template: string;
1682
2635
  };
1683
2636
  export type SystemConfigTemplateEmailsDto = {
@@ -1689,13 +2642,17 @@ export type SystemConfigTemplatesDto = {
1689
2642
  email: SystemConfigTemplateEmailsDto;
1690
2643
  };
1691
2644
  export type SystemConfigThemeDto = {
2645
+ /** Custom CSS for theming */
1692
2646
  customCss: string;
1693
2647
  };
1694
2648
  export type SystemConfigTrashDto = {
2649
+ /** Days */
1695
2650
  days: number;
2651
+ /** Enabled */
1696
2652
  enabled: boolean;
1697
2653
  };
1698
2654
  export type SystemConfigUserDto = {
2655
+ /** Delete delay */
1699
2656
  deleteDelay: number;
1700
2657
  };
1701
2658
  export type SystemConfigDto = {
@@ -1722,38 +2679,57 @@ export type SystemConfigDto = {
1722
2679
  user: SystemConfigUserDto;
1723
2680
  };
1724
2681
  export type SystemConfigTemplateStorageOptionDto = {
2682
+ /** Available day format options for storage template */
1725
2683
  dayOptions: string[];
2684
+ /** Available hour format options for storage template */
1726
2685
  hourOptions: string[];
2686
+ /** Available minute format options for storage template */
1727
2687
  minuteOptions: string[];
2688
+ /** Available month format options for storage template */
1728
2689
  monthOptions: string[];
2690
+ /** Available preset template options */
1729
2691
  presetOptions: string[];
2692
+ /** Available second format options for storage template */
1730
2693
  secondOptions: string[];
2694
+ /** Available week format options for storage template */
1731
2695
  weekOptions: string[];
2696
+ /** Available year format options for storage template */
1732
2697
  yearOptions: string[];
1733
2698
  };
1734
2699
  export type AdminOnboardingUpdateDto = {
2700
+ /** Is admin onboarded */
1735
2701
  isOnboarded: boolean;
1736
2702
  };
1737
2703
  export type ReverseGeocodingStateResponseDto = {
2704
+ /** Last import file name */
1738
2705
  lastImportFileName: string | null;
2706
+ /** Last update timestamp */
1739
2707
  lastUpdate: string | null;
1740
2708
  };
1741
2709
  export type TagCreateDto = {
2710
+ /** Tag color (hex) */
1742
2711
  color?: string;
2712
+ /** Tag name */
1743
2713
  name: string;
2714
+ /** Parent tag ID */
1744
2715
  parentId?: string | null;
1745
2716
  };
1746
2717
  export type TagUpsertDto = {
2718
+ /** Tag names to upsert */
1747
2719
  tags: string[];
1748
2720
  };
1749
2721
  export type TagBulkAssetsDto = {
2722
+ /** Asset IDs */
1750
2723
  assetIds: string[];
2724
+ /** Tag IDs */
1751
2725
  tagIds: string[];
1752
2726
  };
1753
2727
  export type TagBulkAssetsResponseDto = {
2728
+ /** Number of assets tagged */
1754
2729
  count: number;
1755
2730
  };
1756
2731
  export type TagUpdateDto = {
2732
+ /** Tag color (hex) */
1757
2733
  color?: string | null;
1758
2734
  };
1759
2735
  export type TimeBucketAssetResponseDto = {
@@ -1763,7 +2739,7 @@ export type TimeBucketAssetResponseDto = {
1763
2739
  country: (string | null)[];
1764
2740
  /** Array of video durations in HH:MM:SS format (null for images) */
1765
2741
  duration: (string | null)[];
1766
- /** Array of file creation timestamps in UTC (ISO 8601 format, without timezone) */
2742
+ /** Array of file creation timestamps in UTC */
1767
2743
  fileCreatedAt: string[];
1768
2744
  /** Array of asset IDs in the time bucket */
1769
2745
  id: string[];
@@ -1801,279 +2777,461 @@ export type TimeBucketsResponseDto = {
1801
2777
  timeBucket: string;
1802
2778
  };
1803
2779
  export type TrashResponseDto = {
2780
+ /** Number of items in trash */
1804
2781
  count: number;
1805
2782
  };
1806
2783
  export type UserUpdateMeDto = {
2784
+ /** Avatar color */
1807
2785
  avatarColor?: (UserAvatarColor) | null;
2786
+ /** User email */
1808
2787
  email?: string;
2788
+ /** User name */
1809
2789
  name?: string;
2790
+ /** User password (deprecated, use change password endpoint) */
1810
2791
  password?: string;
1811
2792
  };
1812
2793
  export type OnboardingResponseDto = {
2794
+ /** Is user onboarded */
1813
2795
  isOnboarded: boolean;
1814
2796
  };
1815
2797
  export type OnboardingDto = {
2798
+ /** Is user onboarded */
1816
2799
  isOnboarded: boolean;
1817
2800
  };
1818
2801
  export type CreateProfileImageDto = {
2802
+ /** Profile image file */
1819
2803
  file: Blob;
1820
2804
  };
1821
2805
  export type CreateProfileImageResponseDto = {
2806
+ /** Profile image change date */
1822
2807
  profileChangedAt: string;
2808
+ /** Profile image file path */
1823
2809
  profileImagePath: string;
2810
+ /** User ID */
1824
2811
  userId: string;
1825
2812
  };
1826
2813
  export type WorkflowActionResponseDto = {
2814
+ /** Action configuration */
1827
2815
  actionConfig: object | null;
2816
+ /** Action ID */
1828
2817
  id: string;
2818
+ /** Action order */
1829
2819
  order: number;
2820
+ /** Plugin action ID */
1830
2821
  pluginActionId: string;
2822
+ /** Workflow ID */
1831
2823
  workflowId: string;
1832
2824
  };
1833
2825
  export type WorkflowFilterResponseDto = {
2826
+ /** Filter configuration */
1834
2827
  filterConfig: object | null;
2828
+ /** Filter ID */
1835
2829
  id: string;
2830
+ /** Filter order */
1836
2831
  order: number;
2832
+ /** Plugin filter ID */
1837
2833
  pluginFilterId: string;
2834
+ /** Workflow ID */
1838
2835
  workflowId: string;
1839
2836
  };
1840
2837
  export type WorkflowResponseDto = {
2838
+ /** Workflow actions */
1841
2839
  actions: WorkflowActionResponseDto[];
2840
+ /** Creation date */
1842
2841
  createdAt: string;
2842
+ /** Workflow description */
1843
2843
  description: string;
2844
+ /** Workflow enabled */
1844
2845
  enabled: boolean;
2846
+ /** Workflow filters */
1845
2847
  filters: WorkflowFilterResponseDto[];
2848
+ /** Workflow ID */
1846
2849
  id: string;
2850
+ /** Workflow name */
1847
2851
  name: string | null;
2852
+ /** Owner user ID */
1848
2853
  ownerId: string;
2854
+ /** Workflow trigger type */
1849
2855
  triggerType: PluginTriggerType;
1850
2856
  };
1851
2857
  export type WorkflowActionItemDto = {
2858
+ /** Action configuration */
1852
2859
  actionConfig?: object;
2860
+ /** Plugin action ID */
1853
2861
  pluginActionId: string;
1854
2862
  };
1855
2863
  export type WorkflowFilterItemDto = {
2864
+ /** Filter configuration */
1856
2865
  filterConfig?: object;
2866
+ /** Plugin filter ID */
1857
2867
  pluginFilterId: string;
1858
2868
  };
1859
2869
  export type WorkflowCreateDto = {
2870
+ /** Workflow actions */
1860
2871
  actions: WorkflowActionItemDto[];
2872
+ /** Workflow description */
1861
2873
  description?: string;
2874
+ /** Workflow enabled */
1862
2875
  enabled?: boolean;
2876
+ /** Workflow filters */
1863
2877
  filters: WorkflowFilterItemDto[];
2878
+ /** Workflow name */
1864
2879
  name: string;
2880
+ /** Workflow trigger type */
1865
2881
  triggerType: PluginTriggerType;
1866
2882
  };
1867
2883
  export type WorkflowUpdateDto = {
2884
+ /** Workflow actions */
1868
2885
  actions?: WorkflowActionItemDto[];
2886
+ /** Workflow description */
1869
2887
  description?: string;
2888
+ /** Workflow enabled */
1870
2889
  enabled?: boolean;
2890
+ /** Workflow filters */
1871
2891
  filters?: WorkflowFilterItemDto[];
2892
+ /** Workflow name */
1872
2893
  name?: string;
2894
+ /** Workflow trigger type */
1873
2895
  triggerType?: PluginTriggerType;
1874
2896
  };
1875
2897
  export type SyncAckV1 = {};
1876
2898
  export type SyncAlbumDeleteV1 = {
2899
+ /** Album ID */
1877
2900
  albumId: string;
1878
2901
  };
1879
2902
  export type SyncAlbumToAssetDeleteV1 = {
2903
+ /** Album ID */
1880
2904
  albumId: string;
2905
+ /** Asset ID */
1881
2906
  assetId: string;
1882
2907
  };
1883
2908
  export type SyncAlbumToAssetV1 = {
2909
+ /** Album ID */
1884
2910
  albumId: string;
2911
+ /** Asset ID */
1885
2912
  assetId: string;
1886
2913
  };
1887
2914
  export type SyncAlbumUserDeleteV1 = {
2915
+ /** Album ID */
1888
2916
  albumId: string;
2917
+ /** User ID */
1889
2918
  userId: string;
1890
2919
  };
1891
2920
  export type SyncAlbumUserV1 = {
2921
+ /** Album ID */
1892
2922
  albumId: string;
2923
+ /** Album user role */
1893
2924
  role: AlbumUserRole;
2925
+ /** User ID */
1894
2926
  userId: string;
1895
2927
  };
1896
2928
  export type SyncAlbumV1 = {
2929
+ /** Created at */
1897
2930
  createdAt: string;
2931
+ /** Album description */
1898
2932
  description: string;
2933
+ /** Album ID */
1899
2934
  id: string;
2935
+ /** Is activity enabled */
1900
2936
  isActivityEnabled: boolean;
2937
+ /** Album name */
1901
2938
  name: string;
1902
2939
  order: AssetOrder;
2940
+ /** Owner ID */
1903
2941
  ownerId: string;
2942
+ /** Thumbnail asset ID */
1904
2943
  thumbnailAssetId: string | null;
2944
+ /** Updated at */
1905
2945
  updatedAt: string;
1906
2946
  };
1907
2947
  export type SyncAssetDeleteV1 = {
2948
+ /** Asset ID */
1908
2949
  assetId: string;
1909
2950
  };
1910
2951
  export type SyncAssetExifV1 = {
2952
+ /** Asset ID */
1911
2953
  assetId: string;
2954
+ /** City */
1912
2955
  city: string | null;
2956
+ /** Country */
1913
2957
  country: string | null;
2958
+ /** Date time original */
1914
2959
  dateTimeOriginal: string | null;
2960
+ /** Description */
1915
2961
  description: string | null;
2962
+ /** Exif image height */
1916
2963
  exifImageHeight: number | null;
2964
+ /** Exif image width */
1917
2965
  exifImageWidth: number | null;
2966
+ /** Exposure time */
1918
2967
  exposureTime: string | null;
2968
+ /** F number */
1919
2969
  fNumber: number | null;
2970
+ /** File size in byte */
1920
2971
  fileSizeInByte: number | null;
2972
+ /** Focal length */
1921
2973
  focalLength: number | null;
2974
+ /** FPS */
1922
2975
  fps: number | null;
2976
+ /** ISO */
1923
2977
  iso: number | null;
2978
+ /** Latitude */
1924
2979
  latitude: number | null;
2980
+ /** Lens model */
1925
2981
  lensModel: string | null;
2982
+ /** Longitude */
1926
2983
  longitude: number | null;
2984
+ /** Make */
1927
2985
  make: string | null;
2986
+ /** Model */
1928
2987
  model: string | null;
2988
+ /** Modify date */
1929
2989
  modifyDate: string | null;
2990
+ /** Orientation */
1930
2991
  orientation: string | null;
2992
+ /** Profile description */
1931
2993
  profileDescription: string | null;
2994
+ /** Projection type */
1932
2995
  projectionType: string | null;
2996
+ /** Rating */
1933
2997
  rating: number | null;
2998
+ /** State */
1934
2999
  state: string | null;
3000
+ /** Time zone */
1935
3001
  timeZone: string | null;
1936
3002
  };
1937
3003
  export type SyncAssetFaceDeleteV1 = {
3004
+ /** Asset face ID */
1938
3005
  assetFaceId: string;
1939
3006
  };
1940
3007
  export type SyncAssetFaceV1 = {
3008
+ /** Asset ID */
1941
3009
  assetId: string;
1942
3010
  boundingBoxX1: number;
1943
3011
  boundingBoxX2: number;
1944
3012
  boundingBoxY1: number;
1945
3013
  boundingBoxY2: number;
3014
+ /** Asset face ID */
1946
3015
  id: string;
1947
3016
  imageHeight: number;
1948
3017
  imageWidth: number;
3018
+ /** Person ID */
1949
3019
  personId: string | null;
3020
+ /** Source type */
1950
3021
  sourceType: string;
1951
3022
  };
1952
3023
  export type SyncAssetMetadataDeleteV1 = {
3024
+ /** Asset ID */
1953
3025
  assetId: string;
3026
+ /** Key */
1954
3027
  key: string;
1955
3028
  };
1956
3029
  export type SyncAssetMetadataV1 = {
3030
+ /** Asset ID */
1957
3031
  assetId: string;
3032
+ /** Key */
1958
3033
  key: string;
3034
+ /** Value */
1959
3035
  value: object;
1960
3036
  };
1961
3037
  export type SyncAssetV1 = {
3038
+ /** Checksum */
1962
3039
  checksum: string;
3040
+ /** Deleted at */
1963
3041
  deletedAt: string | null;
3042
+ /** Duration */
1964
3043
  duration: string | null;
3044
+ /** File created at */
1965
3045
  fileCreatedAt: string | null;
3046
+ /** File modified at */
1966
3047
  fileModifiedAt: string | null;
3048
+ /** Asset height */
1967
3049
  height: number | null;
3050
+ /** Asset ID */
1968
3051
  id: string;
3052
+ /** Is edited */
1969
3053
  isEdited: boolean;
3054
+ /** Is favorite */
1970
3055
  isFavorite: boolean;
3056
+ /** Library ID */
1971
3057
  libraryId: string | null;
3058
+ /** Live photo video ID */
1972
3059
  livePhotoVideoId: string | null;
3060
+ /** Local date time */
1973
3061
  localDateTime: string | null;
3062
+ /** Original file name */
1974
3063
  originalFileName: string;
3064
+ /** Owner ID */
1975
3065
  ownerId: string;
3066
+ /** Stack ID */
1976
3067
  stackId: string | null;
3068
+ /** Thumbhash */
1977
3069
  thumbhash: string | null;
3070
+ /** Asset type */
1978
3071
  "type": AssetTypeEnum;
3072
+ /** Asset visibility */
1979
3073
  visibility: AssetVisibility;
3074
+ /** Asset width */
1980
3075
  width: number | null;
1981
3076
  };
1982
3077
  export type SyncAuthUserV1 = {
3078
+ /** User avatar color */
1983
3079
  avatarColor: (UserAvatarColor) | null;
3080
+ /** User deleted at */
1984
3081
  deletedAt: string | null;
3082
+ /** User email */
1985
3083
  email: string;
3084
+ /** User has profile image */
1986
3085
  hasProfileImage: boolean;
3086
+ /** User ID */
1987
3087
  id: string;
3088
+ /** User is admin */
1988
3089
  isAdmin: boolean;
3090
+ /** User name */
1989
3091
  name: string;
3092
+ /** User OAuth ID */
1990
3093
  oauthId: string;
3094
+ /** User pin code */
1991
3095
  pinCode: string | null;
3096
+ /** User profile changed at */
1992
3097
  profileChangedAt: string;
1993
3098
  quotaSizeInBytes: number | null;
1994
3099
  quotaUsageInBytes: number;
3100
+ /** User storage label */
1995
3101
  storageLabel: string | null;
1996
3102
  };
1997
3103
  export type SyncCompleteV1 = {};
1998
3104
  export type SyncMemoryAssetDeleteV1 = {
3105
+ /** Asset ID */
1999
3106
  assetId: string;
3107
+ /** Memory ID */
2000
3108
  memoryId: string;
2001
3109
  };
2002
3110
  export type SyncMemoryAssetV1 = {
3111
+ /** Asset ID */
2003
3112
  assetId: string;
3113
+ /** Memory ID */
2004
3114
  memoryId: string;
2005
3115
  };
2006
3116
  export type SyncMemoryDeleteV1 = {
3117
+ /** Memory ID */
2007
3118
  memoryId: string;
2008
3119
  };
2009
3120
  export type SyncMemoryV1 = {
3121
+ /** Created at */
2010
3122
  createdAt: string;
3123
+ /** Data */
2011
3124
  data: object;
3125
+ /** Deleted at */
2012
3126
  deletedAt: string | null;
3127
+ /** Hide at */
2013
3128
  hideAt: string | null;
3129
+ /** Memory ID */
2014
3130
  id: string;
3131
+ /** Is saved */
2015
3132
  isSaved: boolean;
3133
+ /** Memory at */
2016
3134
  memoryAt: string;
3135
+ /** Owner ID */
2017
3136
  ownerId: string;
3137
+ /** Seen at */
2018
3138
  seenAt: string | null;
3139
+ /** Show at */
2019
3140
  showAt: string | null;
3141
+ /** Memory type */
2020
3142
  "type": MemoryType;
3143
+ /** Updated at */
2021
3144
  updatedAt: string;
2022
3145
  };
2023
3146
  export type SyncPartnerDeleteV1 = {
3147
+ /** Shared by ID */
2024
3148
  sharedById: string;
3149
+ /** Shared with ID */
2025
3150
  sharedWithId: string;
2026
3151
  };
2027
3152
  export type SyncPartnerV1 = {
3153
+ /** In timeline */
2028
3154
  inTimeline: boolean;
3155
+ /** Shared by ID */
2029
3156
  sharedById: string;
3157
+ /** Shared with ID */
2030
3158
  sharedWithId: string;
2031
3159
  };
2032
3160
  export type SyncPersonDeleteV1 = {
3161
+ /** Person ID */
2033
3162
  personId: string;
2034
3163
  };
2035
3164
  export type SyncPersonV1 = {
3165
+ /** Birth date */
2036
3166
  birthDate: string | null;
3167
+ /** Color */
2037
3168
  color: string | null;
3169
+ /** Created at */
2038
3170
  createdAt: string;
3171
+ /** Face asset ID */
2039
3172
  faceAssetId: string | null;
3173
+ /** Person ID */
2040
3174
  id: string;
3175
+ /** Is favorite */
2041
3176
  isFavorite: boolean;
3177
+ /** Is hidden */
2042
3178
  isHidden: boolean;
3179
+ /** Person name */
2043
3180
  name: string;
3181
+ /** Owner ID */
2044
3182
  ownerId: string;
3183
+ /** Updated at */
2045
3184
  updatedAt: string;
2046
3185
  };
2047
3186
  export type SyncResetV1 = {};
2048
3187
  export type SyncStackDeleteV1 = {
3188
+ /** Stack ID */
2049
3189
  stackId: string;
2050
3190
  };
2051
3191
  export type SyncStackV1 = {
3192
+ /** Created at */
2052
3193
  createdAt: string;
3194
+ /** Stack ID */
2053
3195
  id: string;
3196
+ /** Owner ID */
2054
3197
  ownerId: string;
3198
+ /** Primary asset ID */
2055
3199
  primaryAssetId: string;
3200
+ /** Updated at */
2056
3201
  updatedAt: string;
2057
3202
  };
2058
3203
  export type SyncUserDeleteV1 = {
3204
+ /** User ID */
2059
3205
  userId: string;
2060
3206
  };
2061
3207
  export type SyncUserMetadataDeleteV1 = {
3208
+ /** User metadata key */
2062
3209
  key: UserMetadataKey;
3210
+ /** User ID */
2063
3211
  userId: string;
2064
3212
  };
2065
3213
  export type SyncUserMetadataV1 = {
3214
+ /** User metadata key */
2066
3215
  key: UserMetadataKey;
3216
+ /** User ID */
2067
3217
  userId: string;
3218
+ /** User metadata value */
2068
3219
  value: object;
2069
3220
  };
2070
3221
  export type SyncUserV1 = {
3222
+ /** User avatar color */
2071
3223
  avatarColor: (UserAvatarColor) | null;
3224
+ /** User deleted at */
2072
3225
  deletedAt: string | null;
3226
+ /** User email */
2073
3227
  email: string;
3228
+ /** User has profile image */
2074
3229
  hasProfileImage: boolean;
3230
+ /** User ID */
2075
3231
  id: string;
3232
+ /** User name */
2076
3233
  name: string;
3234
+ /** User profile changed at */
2077
3235
  profileChangedAt: string;
2078
3236
  };
2079
3237
  /**