@immich/sdk 2.5.2 → 2.5.5

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