@protontech/drive-sdk 0.0.12 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/dist/errors.d.ts +7 -3
  2. package/dist/errors.js +9 -4
  3. package/dist/errors.js.map +1 -1
  4. package/dist/interface/index.d.ts +1 -1
  5. package/dist/interface/nodes.d.ts +12 -1
  6. package/dist/interface/nodes.js +11 -0
  7. package/dist/interface/nodes.js.map +1 -1
  8. package/dist/interface/upload.d.ts +51 -3
  9. package/dist/internal/apiService/driveTypes.d.ts +1341 -465
  10. package/dist/internal/apiService/errors.js +2 -2
  11. package/dist/internal/apiService/errors.js.map +1 -1
  12. package/dist/internal/apiService/transformers.js +2 -0
  13. package/dist/internal/apiService/transformers.js.map +1 -1
  14. package/dist/internal/asyncIteratorMap.d.ts +15 -0
  15. package/dist/internal/asyncIteratorMap.js +59 -0
  16. package/dist/internal/asyncIteratorMap.js.map +1 -0
  17. package/dist/internal/asyncIteratorMap.test.d.ts +1 -0
  18. package/dist/internal/asyncIteratorMap.test.js +120 -0
  19. package/dist/internal/asyncIteratorMap.test.js.map +1 -0
  20. package/dist/internal/nodes/apiService.d.ts +2 -2
  21. package/dist/internal/nodes/apiService.js +16 -6
  22. package/dist/internal/nodes/apiService.js.map +1 -1
  23. package/dist/internal/nodes/apiService.test.js +30 -8
  24. package/dist/internal/nodes/apiService.test.js.map +1 -1
  25. package/dist/internal/nodes/cache.js +1 -0
  26. package/dist/internal/nodes/cache.js.map +1 -1
  27. package/dist/internal/nodes/cache.test.js +1 -0
  28. package/dist/internal/nodes/cache.test.js.map +1 -1
  29. package/dist/internal/nodes/cryptoService.test.js +34 -0
  30. package/dist/internal/nodes/cryptoService.test.js.map +1 -1
  31. package/dist/internal/nodes/index.test.js +3 -1
  32. package/dist/internal/nodes/index.test.js.map +1 -1
  33. package/dist/internal/nodes/interface.d.ts +3 -1
  34. package/dist/internal/nodes/nodesAccess.js +28 -7
  35. package/dist/internal/nodes/nodesAccess.js.map +1 -1
  36. package/dist/internal/nodes/nodesAccess.test.js +7 -6
  37. package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
  38. package/dist/internal/sharing/apiService.js +19 -2
  39. package/dist/internal/sharing/apiService.js.map +1 -1
  40. package/dist/internal/upload/fileUploader.d.ts +49 -53
  41. package/dist/internal/upload/fileUploader.js +91 -395
  42. package/dist/internal/upload/fileUploader.js.map +1 -1
  43. package/dist/internal/upload/fileUploader.test.js +38 -292
  44. package/dist/internal/upload/fileUploader.test.js.map +1 -1
  45. package/dist/internal/upload/index.d.ts +3 -3
  46. package/dist/internal/upload/index.js +20 -41
  47. package/dist/internal/upload/index.js.map +1 -1
  48. package/dist/internal/upload/manager.d.ts +1 -1
  49. package/dist/internal/upload/manager.js +16 -19
  50. package/dist/internal/upload/manager.js.map +1 -1
  51. package/dist/internal/upload/manager.test.js +42 -83
  52. package/dist/internal/upload/manager.test.js.map +1 -1
  53. package/dist/internal/upload/streamUploader.d.ts +62 -0
  54. package/dist/internal/upload/streamUploader.js +441 -0
  55. package/dist/internal/upload/streamUploader.js.map +1 -0
  56. package/dist/internal/upload/streamUploader.test.d.ts +1 -0
  57. package/dist/internal/upload/streamUploader.test.js +358 -0
  58. package/dist/internal/upload/streamUploader.test.js.map +1 -0
  59. package/dist/protonDriveClient.d.ts +4 -4
  60. package/dist/protonDriveClient.js +1 -1
  61. package/dist/protonDriveClient.js.map +1 -1
  62. package/package.json +2 -2
  63. package/src/errors.ts +10 -4
  64. package/src/interface/index.ts +1 -1
  65. package/src/interface/nodes.ts +11 -0
  66. package/src/interface/upload.ts +53 -3
  67. package/src/internal/apiService/driveTypes.ts +1341 -465
  68. package/src/internal/apiService/errors.ts +3 -2
  69. package/src/internal/apiService/transformers.ts +2 -0
  70. package/src/internal/asyncIteratorMap.test.ts +150 -0
  71. package/src/internal/asyncIteratorMap.ts +64 -0
  72. package/src/internal/nodes/apiService.test.ts +36 -7
  73. package/src/internal/nodes/apiService.ts +19 -7
  74. package/src/internal/nodes/cache.test.ts +1 -0
  75. package/src/internal/nodes/cache.ts +1 -0
  76. package/src/internal/nodes/cryptoService.test.ts +38 -0
  77. package/src/internal/nodes/index.test.ts +3 -1
  78. package/src/internal/nodes/interface.ts +4 -1
  79. package/src/internal/nodes/nodesAccess.test.ts +7 -6
  80. package/src/internal/nodes/nodesAccess.ts +30 -7
  81. package/src/internal/sharing/apiService.ts +24 -2
  82. package/src/internal/upload/fileUploader.test.ts +46 -376
  83. package/src/internal/upload/fileUploader.ts +114 -494
  84. package/src/internal/upload/index.ts +26 -50
  85. package/src/internal/upload/manager.test.ts +45 -92
  86. package/src/internal/upload/manager.ts +30 -32
  87. package/src/internal/upload/streamUploader.test.ts +469 -0
  88. package/src/internal/upload/streamUploader.ts +552 -0
  89. package/src/protonDriveClient.ts +5 -4
@@ -79,18 +79,35 @@ export interface paths {
79
79
  patch?: never;
80
80
  trace?: never;
81
81
  };
82
- "/drive/photos/migrate-legacy": {
82
+ "/drive/photos/volumes/{volumeID}/albums/{linkID}/duplicates": {
83
83
  parameters: {
84
84
  query?: never;
85
85
  header?: never;
86
86
  path?: never;
87
87
  cookie?: never;
88
88
  };
89
- /** Get status of migration from legacy photo share on a regular volume into a new Photo Volume */
90
- get: operations["get_drive-photos-migrate-legacy"];
89
+ get?: never;
91
90
  put?: never;
92
- /** Start migration from legacy photo share on a regular volume into a new Photo Volume */
93
- post: operations["post_drive-photos-migrate-legacy"];
91
+ /** Find duplicates in album */
92
+ post: operations["post_drive-photos-volumes-{volumeID}-albums-{linkID}-duplicates"];
93
+ delete?: never;
94
+ options?: never;
95
+ head?: never;
96
+ patch?: never;
97
+ trace?: never;
98
+ };
99
+ "/drive/photos/volumes/{volumeID}/tags-migration": {
100
+ parameters: {
101
+ query?: never;
102
+ header?: never;
103
+ path?: never;
104
+ cookie?: never;
105
+ };
106
+ /** Get photo tag migration status */
107
+ get: operations["get_drive-photos-volumes-{volumeID}-tags-migration"];
108
+ put?: never;
109
+ /** Update tag migration status */
110
+ post: operations["post_drive-photos-volumes-{volumeID}-tags-migration"];
94
111
  delete?: never;
95
112
  options?: never;
96
113
  head?: never;
@@ -114,6 +131,23 @@ export interface paths {
114
131
  patch?: never;
115
132
  trace?: never;
116
133
  };
134
+ "/drive/photos/volumes/{volumeID}/recover-multiple": {
135
+ parameters: {
136
+ query?: never;
137
+ header?: never;
138
+ path?: never;
139
+ cookie?: never;
140
+ };
141
+ get?: never;
142
+ /** Recover photos from your photo volume */
143
+ put: operations["put_drive-photos-volumes-{volumeID}-recover-multiple"];
144
+ post?: never;
145
+ delete?: never;
146
+ options?: never;
147
+ head?: never;
148
+ patch?: never;
149
+ trace?: never;
150
+ };
117
151
  "/drive/photos/volumes/{volumeID}/albums/{linkID}/remove-multiple": {
118
152
  parameters: {
119
153
  query?: never;
@@ -146,6 +180,43 @@ export interface paths {
146
180
  patch?: never;
147
181
  trace?: never;
148
182
  };
183
+ "/drive/volumes/{volumeID}/links/transfer-multiple": {
184
+ parameters: {
185
+ query?: never;
186
+ header?: never;
187
+ path?: never;
188
+ cookie?: never;
189
+ };
190
+ get?: never;
191
+ /**
192
+ * Transfer photos from and to albums
193
+ * @deprecated
194
+ */
195
+ put: operations["put_drive-volumes-{volumeID}-links-transfer-multiple"];
196
+ post?: never;
197
+ delete?: never;
198
+ options?: never;
199
+ head?: never;
200
+ patch?: never;
201
+ trace?: never;
202
+ };
203
+ "/drive/photos/volumes/{volumeID}/links/transfer-multiple": {
204
+ parameters: {
205
+ query?: never;
206
+ header?: never;
207
+ path?: never;
208
+ cookie?: never;
209
+ };
210
+ get?: never;
211
+ /** Transfer photos from and to albums */
212
+ put: operations["put_drive-photos-volumes-{volumeID}-links-transfer-multiple"];
213
+ post?: never;
214
+ delete?: never;
215
+ options?: never;
216
+ head?: never;
217
+ patch?: never;
218
+ trace?: never;
219
+ };
149
220
  "/drive/v2/urls/{token}/bookmark": {
150
221
  parameters: {
151
222
  query?: never;
@@ -369,26 +440,6 @@ export interface paths {
369
440
  patch?: never;
370
441
  trace?: never;
371
442
  };
372
- "/drive/volumes/{volumeID}/links/{linkID}/copy": {
373
- parameters: {
374
- query?: never;
375
- header?: never;
376
- path?: never;
377
- cookie?: never;
378
- };
379
- get?: never;
380
- put?: never;
381
- /**
382
- * Copy a node to a volume
383
- * @description Copy a single file to a volume, providing the new parent link ID.
384
- */
385
- post: operations["post_drive-volumes-{volumeID}-links-{linkID}-copy"];
386
- delete?: never;
387
- options?: never;
388
- head?: never;
389
- patch?: never;
390
- trace?: never;
391
- };
392
443
  "/drive/shares/{shareID}/folders": {
393
444
  parameters: {
394
445
  query?: never;
@@ -570,6 +621,26 @@ export interface paths {
570
621
  patch?: never;
571
622
  trace?: never;
572
623
  };
624
+ "/drive/volumes/{volumeID}/links/{linkID}/copy": {
625
+ parameters: {
626
+ query?: never;
627
+ header?: never;
628
+ path?: never;
629
+ cookie?: never;
630
+ };
631
+ get?: never;
632
+ put?: never;
633
+ /**
634
+ * Copy a node to a volume
635
+ * @description Copy a single file to a volume, providing the new parent link ID.
636
+ */
637
+ post: operations["post_drive-volumes-{volumeID}-links-{linkID}-copy"];
638
+ delete?: never;
639
+ options?: never;
640
+ head?: never;
641
+ patch?: never;
642
+ trace?: never;
643
+ };
573
644
  "/drive/v2/volumes/{volumeID}/delete_multiple": {
574
645
  parameters: {
575
646
  query?: never;
@@ -710,8 +781,7 @@ export interface paths {
710
781
  *
711
782
  * Clients moving a file or folder MUST reuse the existing session keys
712
783
  * for the name and passphrase as these are also used by shares pointing
713
- * to the link. The passphrase should NOT be changed, only the KeyPacket
714
- * is used.
784
+ * to the link. The passphrase should NOT be changed, reusing same session key as previously.
715
785
  */
716
786
  put: operations["put_drive-shares-{shareID}-links-{linkID}-move"];
717
787
  post?: never;
@@ -780,8 +850,7 @@ export interface paths {
780
850
  * @description Move a file or folder. Client must provide new values for fields encrypted with parent NodeKey.
781
851
  * Clients moving a file or folder MUST reuse the existing session keys
782
852
  * for the name and passphrase as these are also used by shares pointing
783
- * to the link. The passphrase should NOT be changed, only the KeyPacket
784
- * is used.
853
+ * to the link. The passphrase should NOT be changed,reusing same session key as previously
785
854
  */
786
855
  put: operations["put_drive-v2-volumes-{volumeID}-links-{linkID}-move"];
787
856
  post?: never;
@@ -1098,6 +1167,8 @@ export interface paths {
1098
1167
  * @deprecated
1099
1168
  * @description List all trashed items of a given share.
1100
1169
  * Only used by clients that don’t show photos and devices. Going forward, the volume-based route should be used instead.
1170
+ *
1171
+ * CANNOT be used on Photo-Volume -> use volume-trash
1101
1172
  */
1102
1173
  get: operations["get_drive-shares-{shareID}-trash"];
1103
1174
  put?: never;
@@ -1107,6 +1178,8 @@ export interface paths {
1107
1178
  * @deprecated
1108
1179
  * @description Permanently delete all links from trash of a given share.
1109
1180
  * Only used by clients that don’t show photos and devices. Going forward, the volume-based route should be used instead.
1181
+ *
1182
+ * CANNOT be used on Photo-Volume -> use volume-trash
1110
1183
  */
1111
1184
  delete: operations["delete_drive-shares-{shareID}-trash"];
1112
1185
  options?: never;
@@ -1125,7 +1198,11 @@ export interface paths {
1125
1198
  get: operations["get_drive-volumes-{volumeID}-trash"];
1126
1199
  put?: never;
1127
1200
  post?: never;
1128
- /** Empty volume trash */
1201
+ /**
1202
+ * Empty volume trash
1203
+ * @description When there are fewer items in trash than a certain threshold, trash will be deleted synchronously returning a 200 HTTP code.
1204
+ * Otherwise, it will happen async returning a 202 HTTP code.
1205
+ */
1129
1206
  delete: operations["delete_drive-volumes-{volumeID}-trash"];
1130
1207
  options?: never;
1131
1208
  head?: never;
@@ -1143,6 +1220,8 @@ export interface paths {
1143
1220
  /**
1144
1221
  * Restore items from trash
1145
1222
  * @description Restore list of links from trash to original location.
1223
+ *
1224
+ * /shares endpoint should NOT be used on Photo-Volume -> use volume-trash
1146
1225
  */
1147
1226
  put: operations["put_drive-v2-volumes-{volumeID}-trash-restore_multiple"];
1148
1227
  post?: never;
@@ -1163,6 +1242,8 @@ export interface paths {
1163
1242
  /**
1164
1243
  * Restore items from trash
1165
1244
  * @description Restore list of links from trash to original location.
1245
+ *
1246
+ * /shares endpoint should NOT be used on Photo-Volume -> use volume-trash
1166
1247
  */
1167
1248
  put: operations["put_drive-shares-{shareID}-trash-restore_multiple"];
1168
1249
  post?: never;
@@ -1386,7 +1467,10 @@ export interface paths {
1386
1467
  };
1387
1468
  get?: never;
1388
1469
  put?: never;
1389
- /** Create photo share */
1470
+ /**
1471
+ * DEPRECATED: Create photo share
1472
+ * @deprecated
1473
+ */
1390
1474
  post: operations["post_drive-volumes-{volumeID}-photos-share"];
1391
1475
  delete?: never;
1392
1476
  options?: never;
@@ -1414,6 +1498,23 @@ export interface paths {
1414
1498
  patch?: never;
1415
1499
  trace?: never;
1416
1500
  };
1501
+ "/drive/photos/volumes/{volumeID}/links/{linkID}/favorite": {
1502
+ parameters: {
1503
+ query?: never;
1504
+ header?: never;
1505
+ path?: never;
1506
+ cookie?: never;
1507
+ };
1508
+ get?: never;
1509
+ put?: never;
1510
+ /** Favorite existing photo */
1511
+ post: operations["post_drive-photos-volumes-{volumeID}-links-{linkID}-favorite"];
1512
+ delete?: never;
1513
+ options?: never;
1514
+ head?: never;
1515
+ patch?: never;
1516
+ trace?: never;
1517
+ };
1417
1518
  "/drive/volumes/{volumeID}/photos/duplicates": {
1418
1519
  parameters: {
1419
1520
  query?: never;
@@ -1431,6 +1532,24 @@ export interface paths {
1431
1532
  patch?: never;
1432
1533
  trace?: never;
1433
1534
  };
1535
+ "/drive/photos/migrate-legacy": {
1536
+ parameters: {
1537
+ query?: never;
1538
+ header?: never;
1539
+ path?: never;
1540
+ cookie?: never;
1541
+ };
1542
+ /** Get status of migration from legacy photo share on a regular volume into a new Photo Volume */
1543
+ get: operations["get_drive-photos-migrate-legacy"];
1544
+ put?: never;
1545
+ /** Start migration from legacy photo share on a regular volume into a new Photo Volume */
1546
+ post: operations["post_drive-photos-migrate-legacy"];
1547
+ delete?: never;
1548
+ options?: never;
1549
+ head?: never;
1550
+ patch?: never;
1551
+ trace?: never;
1552
+ };
1434
1553
  "/drive/volumes/{volumeID}/photos": {
1435
1554
  parameters: {
1436
1555
  query?: never;
@@ -1451,6 +1570,26 @@ export interface paths {
1451
1570
  patch?: never;
1452
1571
  trace?: never;
1453
1572
  };
1573
+ "/drive/photos/volumes/{volumeID}/links/{linkID}/revisions/{revisionID}/xattr": {
1574
+ parameters: {
1575
+ query?: never;
1576
+ header?: never;
1577
+ path?: never;
1578
+ cookie?: never;
1579
+ };
1580
+ get?: never;
1581
+ /**
1582
+ * Update xAttr Photo-Link
1583
+ * @description ONLY for use by iOS, due to a bug in the iOS client, xAttr were not populated for photos, the client can use this endpoint to fix this.
1584
+ */
1585
+ put: operations["put_drive-photos-volumes-{volumeID}-links-{linkID}-revisions-{revisionID}-xattr"];
1586
+ post?: never;
1587
+ delete?: never;
1588
+ options?: never;
1589
+ head?: never;
1590
+ patch?: never;
1591
+ trace?: never;
1592
+ };
1454
1593
  "/drive/urls/{token}/files/{linkID}/checkAvailableHashes": {
1455
1594
  parameters: {
1456
1595
  query?: never;
@@ -2524,7 +2663,10 @@ export interface paths {
2524
2663
  cookie?: never;
2525
2664
  };
2526
2665
  get?: never;
2527
- /** Delete locked volume */
2666
+ /**
2667
+ * Delete the whole volume if is locked or the locked root shares in the volume.
2668
+ * @description Web client calls this endpoint when the user decides to delete their locked data and not recover it.
2669
+ */
2528
2670
  put: operations["put_drive-volumes-{volumeID}-delete_locked"];
2529
2671
  post?: never;
2530
2672
  delete?: never;
@@ -2561,7 +2703,13 @@ export interface paths {
2561
2703
  cookie?: never;
2562
2704
  };
2563
2705
  get?: never;
2564
- /** Restore locked volume */
2706
+ /**
2707
+ * Restore locked data in volume.
2708
+ * @description There are two modes:
2709
+ * 1. When the user has a locked volume and a different active one, you need to restore the locked volume data into the active
2710
+ * one of the same type (e.g., locked regular into active regular). This is processed async.
2711
+ * 2. When the user has locked root shares in an active volume, the data is restored within the same volume. This is done synchronous.
2712
+ */
2565
2713
  put: operations["put_drive-volumes-{volumeID}-restore"];
2566
2714
  post?: never;
2567
2715
  delete?: never;
@@ -2641,9 +2789,12 @@ export interface components {
2641
2789
  */
2642
2790
  Code: 1000;
2643
2791
  };
2644
- GetMigrationStatusResponseDto: {
2645
- OldVolumeID: components["schemas"]["Id2"];
2646
- NewVolumeID?: components["schemas"]["Id2"] | null;
2792
+ FindDuplicatesInput: {
2793
+ /** @description List of Name HMACs to check */
2794
+ NameHashes: string[];
2795
+ };
2796
+ FindDuplicatesOutputCollection: {
2797
+ DuplicateHashes: components["schemas"]["FoundDuplicate"][];
2647
2798
  /**
2648
2799
  * ProtonResponseCode
2649
2800
  * @example 1000
@@ -2651,13 +2802,15 @@ export interface components {
2651
2802
  */
2652
2803
  Code: 1000;
2653
2804
  };
2654
- AcceptedResponse: {
2805
+ PhotoTagMigrationStatusResponseDto: {
2806
+ Finished: boolean;
2807
+ Anchor?: components["schemas"]["PhotoTagMigrationDataDto"] | null;
2655
2808
  /**
2656
2809
  * ProtonResponseCode
2657
- * @example 1002
2810
+ * @example 1000
2658
2811
  * @enum {integer}
2659
2812
  */
2660
- Code: 1002;
2813
+ Code: 1000;
2661
2814
  };
2662
2815
  ListAlbumsResponseDto: {
2663
2816
  Albums: components["schemas"]["AlbumResponseDto"][];
@@ -2684,6 +2837,8 @@ export interface components {
2684
2837
  Tag: components["schemas"]["TagType"] | null;
2685
2838
  /** @default false */
2686
2839
  OnlyChildren: boolean;
2840
+ /** @default false */
2841
+ IncludeTrashed: boolean;
2687
2842
  };
2688
2843
  /**
2689
2844
  * @description <details><summary>See values descriptions</summary><details><summary>See values descriptions</summary><table><tr><th>Value</th><th>Description</th></tr><tr><td>0</td><td>Favorites</td></tr><tr><td>1</td><td>Screenshots</td></tr><tr><td>2</td><td>Videos</td></tr><tr><td>3</td><td>LivePhotos</td></tr><tr><td>4</td><td>MotionPhotos</td></tr><tr><td>5</td><td>Selfies</td></tr><tr><td>6</td><td>Portraits</td></tr><tr><td>7</td><td>Bursts</td></tr><tr><td>8</td><td>Panoramas</td></tr><tr><td>9</td><td>Raw</td></tr></table></details></details>
@@ -2701,9 +2856,28 @@ export interface components {
2701
2856
  */
2702
2857
  Code: 1000;
2703
2858
  };
2859
+ TransferPhotoLinksRequestDto: {
2860
+ ParentLinkID: components["schemas"]["Id"];
2861
+ Links: components["schemas"]["TransferPhotoLinkInBatchRequestDto"][];
2862
+ /**
2863
+ * Format: email
2864
+ * @description Signature email address used for signing name
2865
+ */
2866
+ NameSignatureEmail: string;
2867
+ /**
2868
+ * Format: email
2869
+ * @description Signature email address used for the NodePassphraseSignature.
2870
+ * @default null
2871
+ */
2872
+ SignatureEmail: string | null;
2873
+ };
2704
2874
  RemovePhotosFromAlbumRequestDto: {
2705
2875
  LinkIDs: components["schemas"]["Id"][];
2706
2876
  };
2877
+ UpdatePhotoTagMigrationStatusRequestDto: {
2878
+ Finished: boolean;
2879
+ Anchor: components["schemas"]["PhotoTagMigrationUpdateDto"];
2880
+ };
2707
2881
  /** @description An encrypted ID */
2708
2882
  Id: string;
2709
2883
  SharedWithMeResponseDto: {
@@ -2791,6 +2965,7 @@ export interface components {
2791
2965
  * @default null
2792
2966
  */
2793
2967
  ContentKeyPacketSignature: components["schemas"]["PGPSignature"] | null;
2968
+ DocumentType?: components["schemas"]["DocumentType"];
2794
2969
  Name: components["schemas"]["PGPMessage"];
2795
2970
  /** @description File/folder name Hash */
2796
2971
  Hash: string;
@@ -2858,48 +3033,6 @@ export interface components {
2858
3033
  */
2859
3034
  Code: 1000;
2860
3035
  };
2861
- CopyLinkRequestDto: {
2862
- /** @description Name, reusing same session key as previously. */
2863
- Name: string;
2864
- /** @description Node passphrase, passphrase should be unchanged, only key packet is used. */
2865
- NodePassphrase: string;
2866
- /** @description Name hash */
2867
- Hash: string;
2868
- /** @description Volume ID to copy to. */
2869
- TargetVolumeID: string;
2870
- /** @description New parent link ID to copy to. */
2871
- TargetParentLinkID: string;
2872
- /**
2873
- * Format: email
2874
- * @description Signature email address used for signing name.
2875
- */
2876
- NameSignatureEmail: string;
2877
- /**
2878
- * @description Optional, except when moving a Photo-Link. Photo content hash, hmacsha256 of sha1 content using parent folder's hash key [ hmacSha256(folder hash key, sha1(plain content)) ]
2879
- * @default null
2880
- */
2881
- ContentHash: string | null;
2882
- /**
2883
- * @description Node Passphrase Signature. Required when moving an anonymous Link. It must be signed by the SignatureEmail address.
2884
- * @default null
2885
- */
2886
- NodePassphraseSignature: components["schemas"]["PGPSignature"] | null;
2887
- /**
2888
- * Format: email
2889
- * @description Signature email address used for the NodePassphrase.
2890
- * @default null
2891
- */
2892
- SignatureEmail: string | null;
2893
- };
2894
- CopyLinkResponseDto: {
2895
- LinkID: components["schemas"]["Id2"];
2896
- /**
2897
- * ProtonResponseCode
2898
- * @example 1000
2899
- * @enum {integer}
2900
- */
2901
- Code: 1000;
2902
- };
2903
3036
  CreateFolderRequestDto: {
2904
3037
  /** @description Node hash key (random bytes encoded in base64 format), encrypted and signed. */
2905
3038
  NodeHashKey: string;
@@ -2999,18 +3132,70 @@ export interface components {
2999
3132
  */
3000
3133
  Code: 1000;
3001
3134
  };
3002
- FetchLinksMetadataRequestDto: {
3135
+ CopyLinkRequestDto: {
3136
+ /** @description Name, reusing same session key as previously. */
3137
+ Name: string;
3138
+ /** @description Node passphrase, reusing same session key as previously. */
3139
+ NodePassphrase: string;
3140
+ /** @description Name hash */
3141
+ Hash: string;
3142
+ /** @description Volume ID to copy to. */
3143
+ TargetVolumeID: string;
3144
+ /** @description New parent link ID to copy to. */
3145
+ TargetParentLinkID: string;
3003
3146
  /**
3004
- * @deprecated
3005
- * @description Get thumbnail download URLs
3006
- * @default 0
3007
- * @enum {integer}
3147
+ * Format: email
3148
+ * @description Signature email address used for signing name.
3008
3149
  */
3009
- Thumbnails: 0 | 1;
3010
- LinkIDs: components["schemas"]["EncryptedId"][];
3011
- };
3012
- FetchLinksMetadataResponseDto: {
3013
- Links: components["schemas"]["ExtendedLinkTransformer"][];
3150
+ NameSignatureEmail: string;
3151
+ /**
3152
+ * @description Node Passphrase Signature. Required when moving an anonymous Link. It must be signed by the SignatureEmail address.
3153
+ * @default null
3154
+ */
3155
+ NodePassphraseSignature: components["schemas"]["PGPSignature"] | null;
3156
+ /**
3157
+ * Format: email
3158
+ * @description Signature email address used for the NodePassphraseSignature.
3159
+ * @default null
3160
+ */
3161
+ SignatureEmail: string | null;
3162
+ /**
3163
+ * @description Optional, except when moving a Photo-Link.
3164
+ * @default null
3165
+ */
3166
+ Photos: components["schemas"]["PhotosDto"] | null;
3167
+ /**
3168
+ * @description Only for legacy files (signed by the user). Unencrypted signature of the content session key (plain text of the ContentKeyPacket), signed with the NodeKey.
3169
+ * @default null
3170
+ */
3171
+ ContentKeyPacketSignature: components["schemas"]["PGPSignature"] | null;
3172
+ /**
3173
+ * @description Only for legacy folders (signed by the user). Node hash key should be unchanged, just re-signed with the NodeKey.
3174
+ * @default null
3175
+ */
3176
+ NodeHashKey: string | null;
3177
+ };
3178
+ CopyLinkResponseDto: {
3179
+ LinkID: components["schemas"]["Id2"];
3180
+ /**
3181
+ * ProtonResponseCode
3182
+ * @example 1000
3183
+ * @enum {integer}
3184
+ */
3185
+ Code: 1000;
3186
+ };
3187
+ FetchLinksMetadataRequestDto: {
3188
+ /**
3189
+ * @deprecated
3190
+ * @description Get thumbnail download URLs
3191
+ * @default 0
3192
+ * @enum {integer}
3193
+ */
3194
+ Thumbnails: 0 | 1;
3195
+ LinkIDs: components["schemas"]["EncryptedId"][];
3196
+ };
3197
+ FetchLinksMetadataResponseDto: {
3198
+ Links: components["schemas"]["ExtendedLinkTransformer"][];
3014
3199
  /**
3015
3200
  * ProtonResponseCode
3016
3201
  * @example 1000
@@ -3028,7 +3213,7 @@ export interface components {
3028
3213
  Code: 1000;
3029
3214
  };
3030
3215
  LoadLinkDetailsResponseDto: {
3031
- Links: (components["schemas"]["FileDetailsDto"] | components["schemas"]["FolderDetailsDto"])[];
3216
+ Links: (components["schemas"]["FileDetailsDto"] | components["schemas"]["FolderDetailsDto"] | components["schemas"]["AlbumDetailsDto"])[];
3032
3217
  /**
3033
3218
  * ProtonResponseCode
3034
3219
  * @example 1000
@@ -3047,17 +3232,15 @@ export interface components {
3047
3232
  NameSignatureEmail: string | null;
3048
3233
  /**
3049
3234
  * Format: email
3050
- * @description Signature email address used for the NodePassphrase.
3235
+ * @description Signature email address used for the NodePassphraseSignature.
3051
3236
  * @default null
3052
3237
  */
3053
3238
  SignatureEmail: string | null;
3054
- /** @default null */
3055
- NewShareID: components["schemas"]["Id"] | null;
3056
3239
  };
3057
3240
  MoveLinkRequestDto: {
3058
3241
  /** @description Name, reusing same session key as previously. */
3059
3242
  Name: string;
3060
- /** @description Node passphrase, passphrase should be unchanged, only key packet is used. */
3243
+ /** @description Node passphrase, reusing same session key as previously. */
3061
3244
  NodePassphrase: string;
3062
3245
  /** @description Name hash */
3063
3246
  Hash: string;
@@ -3098,7 +3281,7 @@ export interface components {
3098
3281
  NodePassphraseSignature: components["schemas"]["PGPSignature"] | null;
3099
3282
  /**
3100
3283
  * Format: email
3101
- * @description Signature email address used for the NodePassphrase.
3284
+ * @description Signature email address used for the NodePassphraseSignature.
3102
3285
  * @default null
3103
3286
  */
3104
3287
  SignatureEmail: string | null;
@@ -3139,7 +3322,7 @@ export interface components {
3139
3322
  MoveLinkRequestDto2: {
3140
3323
  /** @description Name, reusing same session key as previously. */
3141
3324
  Name: string;
3142
- /** @description Node passphrase, passphrase should be unchanged, only key packet is used. */
3325
+ /** @description Node passphrase, reusing same session key as previously. */
3143
3326
  NodePassphrase: string;
3144
3327
  /** @description Name hash */
3145
3328
  Hash: string;
@@ -3163,7 +3346,7 @@ export interface components {
3163
3346
  NodePassphraseSignature: components["schemas"]["PGPSignature"] | null;
3164
3347
  /**
3165
3348
  * Format: email
3166
- * @description Signature email address used for the NodePassphrase.
3349
+ * @description Signature email address used for the NodePassphraseSignature.
3167
3350
  * @default null
3168
3351
  */
3169
3352
  SignatureEmail: string | null;
@@ -3269,6 +3452,15 @@ export interface components {
3269
3452
  */
3270
3453
  NoBlockUrls: boolean;
3271
3454
  };
3455
+ ListRevisionsResponseDto: {
3456
+ Revisions: components["schemas"]["RevisionResponseDto"][];
3457
+ /**
3458
+ * ProtonResponseCode
3459
+ * @example 1000
3460
+ * @enum {integer}
3461
+ */
3462
+ Code: 1000;
3463
+ };
3272
3464
  RestoreRevisionAcceptedResponse: {
3273
3465
  /**
3274
3466
  * ProtonResponseCode
@@ -3443,8 +3635,13 @@ export interface components {
3443
3635
  AddTagsRequestDto: {
3444
3636
  Tags: components["schemas"]["TagType"][];
3445
3637
  };
3446
- CreatePhotoShareResponseDto: {
3447
- Share: components["schemas"]["ShareResponseDto"];
3638
+ FavoritePhotoRequestDto: {
3639
+ PhotoData?: components["schemas"]["FavoritePhotoDataDto"] | null;
3640
+ };
3641
+ FavoritePhotoResponseDto: {
3642
+ LinkID: components["schemas"]["Id2"];
3643
+ VolumeID: components["schemas"]["Id2"];
3644
+ RelatedPhotos: components["schemas"]["FavoriteRelatedPhotoResponseDto"][];
3448
3645
  /**
3449
3646
  * ProtonResponseCode
3450
3647
  * @example 1000
@@ -3452,12 +3649,9 @@ export interface components {
3452
3649
  */
3453
3650
  Code: 1000;
3454
3651
  };
3455
- FindDuplicatesInput: {
3456
- /** @description List of Name HMACs to check */
3457
- NameHashes: string[];
3458
- };
3459
- FindDuplicatesOutputCollection: {
3460
- DuplicateHashes: components["schemas"]["FoundDuplicate"][];
3652
+ GetMigrationStatusResponseDto: {
3653
+ OldVolumeID: components["schemas"]["Id2"];
3654
+ NewVolumeID?: components["schemas"]["Id2"] | null;
3461
3655
  /**
3462
3656
  * ProtonResponseCode
3463
3657
  * @example 1000
@@ -3465,6 +3659,14 @@ export interface components {
3465
3659
  */
3466
3660
  Code: 1000;
3467
3661
  };
3662
+ AcceptedResponse: {
3663
+ /**
3664
+ * ProtonResponseCode
3665
+ * @example 1002
3666
+ * @enum {integer}
3667
+ */
3668
+ Code: 1002;
3669
+ };
3468
3670
  ListPhotosParameters: {
3469
3671
  /** @default true */
3470
3672
  Desc: boolean;
@@ -3492,9 +3694,19 @@ export interface components {
3492
3694
  */
3493
3695
  Code: 1000;
3494
3696
  };
3697
+ MigrateFromLegacyRequest: Record<string, never>;
3495
3698
  RemoveTagsRequestDto: {
3496
3699
  Tags: components["schemas"]["TagType"][];
3497
3700
  };
3701
+ UpdateXAttrRequest: {
3702
+ /**
3703
+ * Format: email
3704
+ * @description Signature email address used to sign XAttributes; must be the same as the current revision signatureEmail, cannot be updated
3705
+ */
3706
+ SignatureEmail: string;
3707
+ /** @description Extended attributes encrypted with link key */
3708
+ XAttr: string;
3709
+ };
3498
3710
  CommitAnonymousRevisionDto: {
3499
3711
  ManifestSignature: components["schemas"]["PGPSignature"];
3500
3712
  /**
@@ -3700,17 +3912,18 @@ export interface components {
3700
3912
  VolumeID: components["schemas"]["Id2"];
3701
3913
  Type: components["schemas"]["ShareType"];
3702
3914
  State: components["schemas"]["ShareState"];
3915
+ VolumeType: components["schemas"]["VolumeType"];
3703
3916
  /** Format: email */
3704
3917
  Creator: string;
3705
3918
  Locked?: boolean | null;
3706
- CreateTime?: number | null;
3707
- ModifyTime?: number | null;
3919
+ CreateTime: number;
3920
+ ModifyTime: number;
3708
3921
  LinkID: components["schemas"]["Id2"];
3709
3922
  /**
3710
3923
  * @deprecated
3711
3924
  * @description Deprecated: Use `CreateTime`
3712
3925
  */
3713
- CreationTime?: number | null;
3926
+ CreationTime: number;
3714
3927
  /** @deprecated */
3715
3928
  PermissionsMask: number;
3716
3929
  LinkType: components["schemas"]["NodeType"];
@@ -3770,7 +3983,7 @@ export interface components {
3770
3983
  Code: 1000;
3771
3984
  };
3772
3985
  ListSharesResponseDto: {
3773
- Shares: components["schemas"]["ShareResponseDto2"][];
3986
+ Shares: components["schemas"]["ShareResponseDto"][];
3774
3987
  /**
3775
3988
  * ProtonResponseCode
3776
3989
  * @example 1000
@@ -3832,7 +4045,9 @@ export interface components {
3832
4045
  SRPSession: components["schemas"]["BinaryString2"];
3833
4046
  Version: number;
3834
4047
  Flags: number;
4048
+ /** @deprecated */
3835
4049
  IsDoc: boolean;
4050
+ VendorType: components["schemas"]["VendorType"];
3836
4051
  /**
3837
4052
  * ProtonResponseCode
3838
4053
  * @example 1000
@@ -3854,6 +4069,15 @@ export interface components {
3854
4069
  */
3855
4070
  Code: 1000;
3856
4071
  };
4072
+ GetRevisionResponseDto: {
4073
+ Revision: components["schemas"]["DetailedRevisionResponseDto"];
4074
+ /**
4075
+ * ProtonResponseCode
4076
+ * @example 1000
4077
+ * @enum {integer}
4078
+ */
4079
+ Code: 1000;
4080
+ };
3857
4081
  GetSharedFileInfoRequestDto: {
3858
4082
  /** @default 1 */
3859
4083
  FromBlockIndex: number;
@@ -4085,6 +4309,18 @@ export interface components {
4085
4309
  */
4086
4310
  Code: 1000;
4087
4311
  };
4312
+ ListPendingInvitationQueryParameters: {
4313
+ AnchorID?: components["schemas"]["Id"] | null;
4314
+ /** @default 150 */
4315
+ PageSize: number;
4316
+ /** @default null */
4317
+ ShareTargetTypes: components["schemas"]["TargetType"][] | null;
4318
+ };
4319
+ /**
4320
+ * @description <details><summary>See values descriptions</summary><details><summary>See values descriptions</summary><table><tr><th>Value</th><th>Name</th><th>Description</th></tr><tr><td>0</td><td>Root</td><td>main, device or photo root share</td></tr><tr><td>1</td><td>Folder</td><td></td></tr><tr><td>2</td><td>File</td><td></td></tr><tr><td>3</td><td>Album</td><td></td></tr><tr><td>4</td><td>Photo</td><td></td></tr><tr><td>5</td><td>ProtonVendor</td><td>documents and sheets</td></tr></table></details></details>
4321
+ * @enum {integer}
4322
+ */
4323
+ TargetType: 0 | 1 | 2 | 3 | 4 | 5;
4088
4324
  ListPendingInvitationResponseDto: {
4089
4325
  Invitations: components["schemas"]["PendingInvitationItemDto"][];
4090
4326
  /** @description Used for pagination, pass to the next call to get the next page of results */
@@ -4100,7 +4336,7 @@ export interface components {
4100
4336
  };
4101
4337
  PendingInvitationResponseDto: {
4102
4338
  Invitation: components["schemas"]["InvitationResponseDto"];
4103
- Share: components["schemas"]["ShareResponseDto3"];
4339
+ Share: components["schemas"]["ShareResponseDto2"];
4104
4340
  Link: components["schemas"]["LinkResponseDto"];
4105
4341
  /**
4106
4342
  * ProtonResponseCode
@@ -4201,6 +4437,10 @@ export interface components {
4201
4437
  DocsCommentsNotificationsEnabled?: boolean | null;
4202
4438
  /** @description Indicates if email notifications for comment activity in Proton Docs should include the document name. If null, the default value to 0 = false will be used by backend. */
4203
4439
  DocsCommentsNotificationsIncludeDocumentName?: boolean | null;
4440
+ /** @description Indicates user-preferred font in Proton Docs. */
4441
+ DocsFontPreference?: string | null;
4442
+ /** @description Order and visibility of Photo Tags, tags not in the list should not be shown; Use defaults when NULL; Show no tags if empty array. */
4443
+ PhotoTags?: components["schemas"]["TagType"][] | null;
4204
4444
  };
4205
4445
  CreateVolumeRequestDto: {
4206
4446
  /** @description User's Address encrypted ID */
@@ -4244,25 +4484,47 @@ export interface components {
4244
4484
  */
4245
4485
  Code: 1000;
4246
4486
  };
4487
+ /** @description Name, Hash, NodePassphrase and NodePassphraseSignature are required when restoring a regular volume but should not be passed when restoring a photo volume. Please pass them as part of MainShares array to support multiple locked main shares. */
4247
4488
  RestoreVolumeDto: {
4248
- /** @description Folder name as armored PGP message */
4249
- Name: string;
4250
4489
  /** Format: email */
4251
4490
  SignatureAddress: string;
4252
- /** @description Hash of the name */
4253
- Hash: string;
4254
- NodePassphrase: components["schemas"]["PGPMessage"];
4255
- NodePassphraseSignature: components["schemas"]["PGPSignature"];
4256
- TargetVolumeID: components["schemas"]["Id"];
4491
+ /**
4492
+ * @deprecated
4493
+ * @default null
4494
+ */
4495
+ TargetVolumeID: components["schemas"]["Id"] | null;
4496
+ /**
4497
+ * @deprecated
4498
+ * @description Folder name as armored PGP message
4499
+ * @default null
4500
+ */
4501
+ Name: string | null;
4502
+ /**
4503
+ * @deprecated
4504
+ * @description Hash of the name
4505
+ */
4506
+ Hash?: string | null;
4507
+ /**
4508
+ * @deprecated
4509
+ * @default null
4510
+ */
4511
+ NodePassphrase: components["schemas"]["PGPMessage"] | null;
4512
+ /**
4513
+ * @deprecated
4514
+ * @default null
4515
+ */
4516
+ NodePassphraseSignature: components["schemas"]["PGPSignature"] | null;
4517
+ /** @default [] */
4518
+ MainShares: components["schemas"]["RestoreMainShareDto"][];
4257
4519
  /** @default [] */
4258
4520
  Devices: components["schemas"]["RestoreDeviceDto"][];
4259
4521
  /** @default [] */
4260
4522
  PhotoShares: components["schemas"]["RestorePhotoShareDto"][];
4261
4523
  /**
4262
- * @description Node Hash Key should be provided if it needs to be signed because it was unsigned or signed with the address key (legacy). It should be signed with the new parent's node key. If it was properly signed with the parent node key, it should not be updated. Armored PGP message.
4524
+ * @deprecated
4263
4525
  * @default null
4264
4526
  */
4265
- NodeHashKey: string | null;
4527
+ NodeHashKey: components["schemas"]["PGPMessage"] | null;
4266
4528
  /** @description User's encrypted AddressKeyID. Must be the primary key from the signatureAddress */
4267
4529
  AddressKeyID: string;
4268
4530
  };
@@ -4468,101 +4730,21 @@ export interface components {
4468
4730
  Tags?: number[];
4469
4731
  } | null;
4470
4732
  } & components["schemas"]["LinkTransformer"];
4471
- /** Revision */
4472
- DetailedRevisionTransformer: {
4473
- /** @description Block list */
4474
- Blocks: {
4475
- /** @description Block index */
4476
- Index: number;
4477
- /** @description Encrypted block's sha256 hash, in base64 */
4478
- Hash: string;
4479
- /** @description Token for download url */
4480
- Token: string | null;
4481
- /**
4482
- * @deprecated
4483
- * @description Block download url
4484
- * @example https://block.example.com/abcd/
4485
- */
4486
- URL?: string | null;
4487
- /**
4488
- * @description Bare Block download url
4489
- * @example https://block.example.com/abcd/
4490
- */
4491
- BareURL: string | null;
4492
- /**
4493
- * @description Encrypted block signature
4494
- * @example -----BEGIN PGP MESSAGE-----...
4495
- */
4496
- EncSignature: string | null;
4497
- /**
4498
- * Format: email
4499
- * @description Email used to sign block
4500
- */
4501
- SignatureEmail?: string | null;
4502
- }[];
4503
- Photo: components["schemas"]["PhotoTransformer2"] | null;
4504
- } & components["schemas"]["RevisionTransformer"];
4733
+ GetRevisionResponseDto2: {
4734
+ Revision: components["schemas"]["DetailedRevisionResponseDto2"];
4735
+ /**
4736
+ * ProtonResponseCode
4737
+ * @example 1000
4738
+ * @enum {integer}
4739
+ */
4740
+ Code: 1000;
4741
+ };
4505
4742
  /** @description Conflict, a share already exists for the file or folder. */
4506
4743
  ShareConflictErrorResponseDto: {
4507
4744
  Details: components["schemas"]["ShareConflictErrorDetailsDto"];
4508
4745
  Error: string;
4509
4746
  Code: number;
4510
4747
  };
4511
- /** Revision */
4512
- RevisionTransformer: {
4513
- /** @description Encrypted revision ID */
4514
- ID: string;
4515
- /** @description Client managed unique ID */
4516
- ClientUID: string | null;
4517
- /** @description Creation time (UNIX timestamp) */
4518
- CreateTime: number;
4519
- /** @description Size of revision (in bytes) */
4520
- Size: number;
4521
- /**
4522
- * @description Manifest signature, signed with the user's address associated with the share, `SignatureEmail`
4523
- * @example -----BEGIN PGP SIGNATURE-----...
4524
- */
4525
- ManifestSignature: string | null;
4526
- /**
4527
- * Format: email
4528
- * @description User's email associated with the share and used to sign the manifest and block contents.
4529
- */
4530
- SignatureEmail: string;
4531
- /**
4532
- * Format: email
4533
- * @deprecated
4534
- * @description [DEPRECATED] use `SignatureEmail` Email address corresponding to the signature
4535
- */
4536
- SignatureAddress: string;
4537
- /**
4538
- * @description State (0=Draft, 1=Active, 2=Obsolete)
4539
- * @enum {integer}
4540
- */
4541
- State: 0 | 1 | 2;
4542
- /**
4543
- * @description Extended attributes.
4544
- * @example -----BEGIN PGP MESSAGE
4545
- */
4546
- XAttr: string | null;
4547
- /**
4548
- * @deprecated
4549
- * @description Flag stating if revision has a thumbnail
4550
- * @enum {integer}
4551
- */
4552
- Thumbnail: 0 | 1;
4553
- /**
4554
- * @deprecated
4555
- * @description Hash for thumbnail
4556
- */
4557
- ThumbnailHash?: string | null;
4558
- /**
4559
- * @deprecated
4560
- * @description Size thumbnail in bytes; 0 if no thumbnail present
4561
- * @example 512
4562
- */
4563
- ThumbnailSize: number;
4564
- Thumbnails: components["schemas"]["ThumbnailTransformer"][];
4565
- };
4566
4748
  SmallFileUploadMetadataRequestDto: {
4567
4749
  Name: components["schemas"]["PGPMessage"];
4568
4750
  NameHash: string;
@@ -4700,27 +4882,41 @@ export interface components {
4700
4882
  };
4701
4883
  PhotoVolumeResponseDto: {
4702
4884
  VolumeID: components["schemas"]["Id2"];
4703
- CreateTime?: number | null;
4704
- ModifyTime?: number | null;
4885
+ CreateTime: number;
4886
+ ModifyTime: number;
4705
4887
  /** @description Used space in bytes */
4706
4888
  UsedSpace: number;
4707
4889
  DownloadedBytes: number;
4708
4890
  UploadedBytes: number;
4709
4891
  State: components["schemas"]["VolumeState"];
4710
4892
  Share: components["schemas"]["ShareReferenceResponseDto"];
4711
- Type: components["schemas"]["VolumeType"];
4893
+ Type: components["schemas"]["VolumeType2"];
4894
+ };
4895
+ FoundDuplicate: {
4896
+ /** @description NameHash of the found duplicate */
4897
+ Hash?: string | null;
4898
+ /** @description ContentHash of the found duplicate */
4899
+ ContentHash?: string | null;
4712
4900
  /**
4713
- * @description Status of restore task if applicable:
4714
- * - 0 => done
4715
- * - 1 => in progress
4716
- * - -1 => failed
4717
- * @default null
4718
- * @enum {integer|null}
4901
+ * @description Can be null if the Link was deleted
4902
+ * @enum {unknown|null}
4719
4903
  */
4720
- RestoreStatus: 0 | 1 | -1 | null;
4904
+ LinkState?: 0 | 1 | 2 | null;
4905
+ /** @description Client defined UID for the draft. Null if no ClientUID passed, or Revision was already committed. */
4906
+ ClientUID?: string | null;
4907
+ /** @description LinkID, null if deleted */
4908
+ LinkID: string;
4909
+ /** @description RevisionID, null if deleted */
4910
+ RevisionID: string;
4911
+ };
4912
+ PhotoTagMigrationDataDto: {
4913
+ LastProcessedLinkID: components["schemas"]["Id2"];
4914
+ LastProcessedCaptureTime: number;
4915
+ LastMigrationTimestamp: number;
4916
+ /** @description Client unique ID. Indicates which client started migration, and thus can/should continue.
4917
+ * if null, client side migration is expired (client has not checked in for > 1h), any eligible client can continue migration */
4918
+ LastClientUID?: string | null;
4721
4919
  };
4722
- /** @description An encrypted ID */
4723
- Id2: string;
4724
4920
  AlbumResponseDto: {
4725
4921
  Locked: boolean;
4726
4922
  LastActivityTime: number;
@@ -4746,6 +4942,34 @@ export interface components {
4746
4942
  */
4747
4943
  Tags: number[];
4748
4944
  };
4945
+ TransferPhotoLinkInBatchRequestDto: {
4946
+ LinkID: components["schemas"]["Id"];
4947
+ /** @description Name, reusing same session key as previously. */
4948
+ Name: string;
4949
+ /** @description Node passphrase, reusing same session key as previously. */
4950
+ NodePassphrase: string;
4951
+ /** @description Name hash */
4952
+ Hash: string;
4953
+ /** @description Current name hash before move operation. Used to prevent race conditions. */
4954
+ OriginalHash: string;
4955
+ /**
4956
+ * @description Optional, when transferring an Album-Link, required when transferring photos. Photo content hash, hmacsha256 of sha1 content using parent folder's hash key [ hmacSha256(folder hash key, sha1(plain content)) ]
4957
+ * @default null
4958
+ */
4959
+ ContentHash: string | null;
4960
+ /**
4961
+ * @description Node Passphrase Signature. Required when moving an anonymous Link. It must be signed by the SignatureEmail address.
4962
+ * @default null
4963
+ */
4964
+ NodePassphraseSignature: components["schemas"]["PGPSignature"] | null;
4965
+ };
4966
+ PhotoTagMigrationUpdateDto: {
4967
+ LastProcessedLinkID: components["schemas"]["Id"];
4968
+ LastProcessedCaptureTime: number;
4969
+ CurrentTimestamp: number;
4970
+ /** @description Client unique ID. Indicates which client started migration, and thus can/should continue. */
4971
+ ClientUID: string;
4972
+ };
4749
4973
  AlbumLinkUpdateDto: {
4750
4974
  Name?: components["schemas"]["PGPMessage"] | null;
4751
4975
  Hash?: string | null;
@@ -4833,6 +5057,11 @@ export interface components {
4833
5057
  BinaryString: string;
4834
5058
  /** @description An armored PGP Signature */
4835
5059
  PGPSignature: string;
5060
+ /**
5061
+ * @description <p>Document=1, Sheet=2</p><details><summary>See values descriptions</summary><details><summary>See values descriptions</summary><table><tr><th>Value</th><th>Description</th></tr><tr><td>1</td><td>Document</td></tr><tr><td>2</td><td>Sheet</td></tr></table></details></details>
5062
+ * @enum {integer}
5063
+ */
5064
+ DocumentType: 1 | 2;
4836
5065
  /** @description An armored PGP Message */
4837
5066
  PGPMessage: string;
4838
5067
  /** @description An armored PGP Private Key */
@@ -4842,6 +5071,8 @@ export interface components {
4842
5071
  LinkID: components["schemas"]["Id2"];
4843
5072
  RevisionID: components["schemas"]["Id2"];
4844
5073
  };
5074
+ /** @description An encrypted ID */
5075
+ Id2: string;
4845
5076
  EventResponseDto: {
4846
5077
  EventID: components["schemas"]["Id2"];
4847
5078
  EventType: components["schemas"]["EventType"];
@@ -4876,7 +5107,10 @@ export interface components {
4876
5107
  FLAG_RESTORE_COMPLETE?: string;
4877
5108
  /** @description Restoration has failed for corresponding locked volume */
4878
5109
  FLAG_RESTORE_FAILED?: string;
4879
- /** @description Revision has been restored for this LinkID */
5110
+ /**
5111
+ * @deprecated
5112
+ * @description Revision has been restored for this LinkID
5113
+ */
4880
5114
  FLAG_RESTORE_REVISION_COMPLETE?: string;
4881
5115
  /** @description Parent before the move */
4882
5116
  FromParentLinkID?: string;
@@ -4898,6 +5132,12 @@ export interface components {
4898
5132
  LinkID: components["schemas"]["Id2"];
4899
5133
  ClientUID?: string | null;
4900
5134
  };
5135
+ PhotosDto: {
5136
+ /** @description Photo content hash, hmacsha256 of sha1 content using parent folder's hash key [ hmacSha256(folder hash key, sha1(plain content)) ] */
5137
+ ContentHash: string;
5138
+ /** @default [] */
5139
+ RelatedPhotos: components["schemas"]["RelatedPhotoDto"][];
5140
+ };
4901
5141
  ListMissingHashKeyItemDto: {
4902
5142
  LinkID: components["schemas"]["Id2"];
4903
5143
  VolumeID: components["schemas"]["Id2"];
@@ -4912,6 +5152,8 @@ export interface components {
4912
5152
  Membership: components["schemas"]["MembershipDto"] | null;
4913
5153
  /** @default null */
4914
5154
  Folder: null | null;
5155
+ /** @default null */
5156
+ Album: null | null;
4915
5157
  };
4916
5158
  FolderDetailsDto: {
4917
5159
  Link: components["schemas"]["LinkDto"];
@@ -4922,12 +5164,26 @@ export interface components {
4922
5164
  Membership: components["schemas"]["MembershipDto"] | null;
4923
5165
  /** @default null */
4924
5166
  File: null | null;
5167
+ /** @default null */
5168
+ Album: null | null;
5169
+ };
5170
+ AlbumDetailsDto: {
5171
+ Link: components["schemas"]["LinkDto"];
5172
+ Album: components["schemas"]["AlbumDto"];
5173
+ /** @default null */
5174
+ Sharing: components["schemas"]["SharingDto"] | null;
5175
+ /** @default null */
5176
+ Membership: components["schemas"]["MembershipDto"] | null;
5177
+ /** @default null */
5178
+ File: null | null;
5179
+ /** @default null */
5180
+ Folder: null | null;
4925
5181
  };
4926
5182
  MoveLinkInBatchRequestDto: {
4927
5183
  LinkID: components["schemas"]["Id"];
4928
5184
  /** @description Name, reusing same session key as previously. */
4929
5185
  Name: string;
4930
- /** @description Node passphrase, passphrase should be unchanged, only key packet is used. */
5186
+ /** @description Node passphrase, reusing same session key as previously. */
4931
5187
  NodePassphrase: string;
4932
5188
  /** @description Name hash */
4933
5189
  Hash: string;
@@ -4978,13 +5234,51 @@ export interface components {
4978
5234
  Index: number;
4979
5235
  Token: string;
4980
5236
  };
4981
- /** @description Base64 encoded binary data */
4982
- BinaryString2: string;
4983
- ShareTrashList: {
4984
- ShareID: components["schemas"]["Id2"];
4985
- /** @description List of trashed link IDs for that share */
4986
- LinkIDs: components["schemas"]["Id2"][];
4987
- /** @description List of trashed link's parentLinkIDs */
5237
+ RevisionResponseDto: {
5238
+ ID: components["schemas"]["Id2"];
5239
+ ManifestSignature?: components["schemas"]["PGPSignature2"] | null;
5240
+ /** @description Size of revision (in bytes) */
5241
+ Size: number;
5242
+ State: components["schemas"]["RevisionState"];
5243
+ XAttr?: components["schemas"]["PGPMessage2"] | null;
5244
+ /**
5245
+ * @deprecated
5246
+ * @description Flag stating if revision has a thumbnail
5247
+ * @enum {integer}
5248
+ */
5249
+ Thumbnail: 0 | 1;
5250
+ /** @deprecated */
5251
+ ThumbnailHash?: components["schemas"]["BinaryString2"] | null;
5252
+ /**
5253
+ * @deprecated
5254
+ * @description Size thumbnail in bytes; 0 if no thumbnail present
5255
+ */
5256
+ ThumbnailSize: number;
5257
+ Thumbnails: components["schemas"]["ThumbnailResponseDto"][];
5258
+ ClientUID?: string | null;
5259
+ /** @default null */
5260
+ CreateTime: number | null;
5261
+ /**
5262
+ * Format: email
5263
+ * @description User's email associated with the share and used to sign the manifest and block contents.
5264
+ * @default null
5265
+ */
5266
+ SignatureEmail: string | null;
5267
+ /**
5268
+ * Format: email
5269
+ * @deprecated
5270
+ * @description [DEPRECATED] use `SignatureEmail` Email address corresponding to the signature
5271
+ * @default null
5272
+ */
5273
+ SignatureAddress: string | null;
5274
+ };
5275
+ /** @description Base64 encoded binary data */
5276
+ BinaryString2: string;
5277
+ ShareTrashList: {
5278
+ ShareID: components["schemas"]["Id2"];
5279
+ /** @description List of trashed link IDs for that share */
5280
+ LinkIDs: components["schemas"]["Id2"][];
5281
+ /** @description List of trashed link's parentLinkIDs */
4988
5282
  ParentIDs: components["schemas"]["Id2"][];
4989
5283
  };
4990
5284
  RequestUploadBlockInput: {
@@ -5028,33 +5322,37 @@ export interface components {
5028
5322
  /** @description Allow or not the user to create writable ShareURLs */
5029
5323
  PublicCollaboration: boolean;
5030
5324
  };
5031
- ShareResponseDto: {
5032
- ShareID: components["schemas"]["Id2"];
5033
- LinkID: components["schemas"]["Id2"];
5034
- };
5035
- FoundDuplicate: {
5036
- /** @description NameHash of the found duplicate */
5037
- Hash?: string | null;
5038
- /** @description ContentHash of the found duplicate */
5039
- ContentHash?: string | null;
5325
+ FavoritePhotoDataDto: {
5326
+ /** @description Name Hash */
5327
+ Hash: string;
5328
+ Name: string;
5040
5329
  /**
5041
- * @description Can be null if the Link was deleted
5042
- * @enum {unknown|null}
5330
+ * Format: email
5331
+ * @description Email address used for signing name
5043
5332
  */
5044
- LinkState?: 0 | 1 | 2 | null;
5045
- /** @description Client defined UID for the draft. Null if no ClientUID passed, or Revision was already committed. */
5046
- ClientUID?: string | null;
5047
- /** @description LinkID, null if deleted */
5048
- LinkID: string;
5049
- /** @description RevisionID, null if deleted */
5050
- RevisionID: string;
5333
+ NameSignatureEmail: string;
5334
+ NodePassphrase: components["schemas"]["PGPMessage"];
5335
+ /** @description Photo content hash */
5336
+ ContentHash: string;
5337
+ /** @description Nullable; Node Passphrase Signature. Required when moving an anonymous Link. It must be signed by the SignatureEmail address. */
5338
+ NodePassphraseSignature?: components["schemas"]["PGPSignature"] | null;
5339
+ /**
5340
+ * Format: email
5341
+ * @description Nullable: Required when moving an anonymous link. Email address used for the NodePassphraseSignature
5342
+ */
5343
+ SignatureEmail?: string | null;
5344
+ /** @default [] */
5345
+ RelatedPhotos: components["schemas"]["AlbumPhotoLinkDataDto"][];
5346
+ };
5347
+ FavoriteRelatedPhotoResponseDto: {
5348
+ LinkID: components["schemas"]["Id2"];
5051
5349
  };
5052
5350
  PhotoListingItemResponse: {
5053
5351
  LinkID: components["schemas"]["Id2"];
5054
5352
  /** @description Unix timestamp of when the photo was taken as extracted by client from exif */
5055
5353
  CaptureTime: number;
5056
5354
  /** @description File name hash */
5057
- Hash?: string | null;
5355
+ Hash: string;
5058
5356
  /** @description Photo content hash, Hashmac of content using parent folder's hash key */
5059
5357
  ContentHash?: string | null;
5060
5358
  /**
@@ -5136,6 +5434,8 @@ export interface components {
5136
5434
  Membership: components["schemas"]["MembershipDto2"] | null;
5137
5435
  /** @default null */
5138
5436
  File: null | null;
5437
+ /** @default null */
5438
+ Album: null | null;
5139
5439
  };
5140
5440
  /**
5141
5441
  * @description <p>1=Main, 2=Standard, 3=Device, 4=Photo</p><details><summary>See values descriptions</summary><details><summary>See values descriptions</summary><table><tr><th>Value</th><th>Name</th><th>Description</th></tr><tr><td>1</td><td>Main</td><td>* Root share for my files</td></tr><tr><td>2</td><td>Standard</td><td>* Collaborative share anywhere in the link tree (but not at the root folder as it cannot be shared)</td></tr><tr><td>3</td><td>Device</td><td>* Root share of devices</td></tr><tr><td>4</td><td>Photo</td><td>* Root share for photos</td></tr></table></details></details>
@@ -5143,10 +5443,15 @@ export interface components {
5143
5443
  */
5144
5444
  ShareType: 1 | 2 | 3 | 4;
5145
5445
  /**
5146
- * @description <p>1=Active, 3=Restored</p><details><summary>See values descriptions</summary><details><summary>See values descriptions</summary><table><tr><th>Value</th><th>Description</th></tr><tr><td>1</td><td>Active</td></tr><tr><td>2</td><td>Deleted</td></tr><tr><td>3</td><td>Restored</td></tr><tr><td>4</td><td>Migrating</td></tr><tr><td>33</td><td>HiddenRestoreVolumeIncident2025</td></tr></table></details></details>
5446
+ * @description <p>1=Active, 3=Restored</p><details><summary>See values descriptions</summary><details><summary>See values descriptions</summary><table><tr><th>Value</th><th>Description</th></tr><tr><td>1</td><td>Active</td></tr><tr><td>2</td><td>Deleted</td></tr><tr><td>3</td><td>Restored</td></tr><tr><td>4</td><td>Migrating</td></tr><tr><td>5</td><td>Migrated</td></tr><tr><td>6</td><td>Locked</td></tr></table></details></details>
5147
5447
  * @enum {integer}
5148
5448
  */
5149
- ShareState: 1 | 2 | 3 | 4 | 33;
5449
+ ShareState: 1 | 2 | 3 | 4 | 5 | 6;
5450
+ /**
5451
+ * @description <p>1=Regular, 2=Photo</p><details><summary>See values descriptions</summary><details><summary>See values descriptions</summary><table><tr><th>Value</th><th>Description</th></tr><tr><td>1</td><td>Regular</td></tr><tr><td>2</td><td>Photo</td></tr></table></details></details>
5452
+ * @enum {integer}
5453
+ */
5454
+ VolumeType: 1 | 2;
5150
5455
  /**
5151
5456
  * @description <p>1=folder, 2=file</p><details><summary>See values descriptions</summary><details><summary>See values descriptions</summary><table><tr><th>Value</th><th>Description</th></tr><tr><td>1</td><td>Folder</td></tr><tr><td>2</td><td>File</td></tr><tr><td>3</td><td>Album</td></tr></table></details></details>
5152
5457
  * @enum {integer}
@@ -5204,22 +5509,23 @@ export interface components {
5204
5509
  */
5205
5510
  Unlockable: boolean | null;
5206
5511
  };
5207
- ShareResponseDto2: {
5512
+ ShareResponseDto: {
5208
5513
  ShareID: components["schemas"]["Id2"];
5209
5514
  VolumeID: components["schemas"]["Id2"];
5210
5515
  Type: components["schemas"]["ShareType"];
5211
5516
  State: components["schemas"]["ShareState"];
5517
+ VolumeType: components["schemas"]["VolumeType"];
5212
5518
  /** Format: email */
5213
5519
  Creator: string;
5214
5520
  Locked?: boolean | null;
5215
- CreateTime?: number | null;
5216
- ModifyTime?: number | null;
5521
+ CreateTime: number;
5522
+ ModifyTime: number;
5217
5523
  LinkID: components["schemas"]["Id2"];
5218
5524
  /**
5219
5525
  * @deprecated
5220
5526
  * @description Deprecated: Use `CreateTime`
5221
5527
  */
5222
- CreationTime?: number | null;
5528
+ CreationTime: number;
5223
5529
  /** @deprecated */
5224
5530
  PermissionsMask: number;
5225
5531
  /** @deprecated */
@@ -5247,6 +5553,11 @@ export interface components {
5247
5553
  Error: string;
5248
5554
  Code: number;
5249
5555
  };
5556
+ /**
5557
+ * @description <details><summary>See values descriptions</summary><details><summary>See values descriptions</summary><table><tr><th>Value</th><th>Description</th></tr><tr><td>0</td><td>ProtonDrive</td></tr><tr><td>1</td><td>ProtonDoc</td></tr><tr><td>2</td><td>ProtonSheet</td></tr></table></details></details>
5558
+ * @enum {integer}
5559
+ */
5560
+ VendorType: 0 | 1 | 2;
5250
5561
  TokenResponseDto: {
5251
5562
  /**
5252
5563
  * @description Url Token
@@ -5290,6 +5601,46 @@ export interface components {
5290
5601
  */
5291
5602
  NodePassphraseSignature: components["schemas"]["PGPSignature2"] | null;
5292
5603
  };
5604
+ DetailedRevisionResponseDto: {
5605
+ Blocks: components["schemas"]["BlockResponseDto"][];
5606
+ Photo?: components["schemas"]["PhotoResponseDto"] | null;
5607
+ ID: components["schemas"]["Id2"];
5608
+ ManifestSignature?: components["schemas"]["PGPSignature2"] | null;
5609
+ /** @description Size of revision (in bytes) */
5610
+ Size: number;
5611
+ State: components["schemas"]["RevisionState"];
5612
+ XAttr?: components["schemas"]["PGPMessage2"] | null;
5613
+ /**
5614
+ * @deprecated
5615
+ * @description Flag stating if revision has a thumbnail
5616
+ * @enum {integer}
5617
+ */
5618
+ Thumbnail: 0 | 1;
5619
+ /** @deprecated */
5620
+ ThumbnailHash?: components["schemas"]["BinaryString2"] | null;
5621
+ /**
5622
+ * @deprecated
5623
+ * @description Size thumbnail in bytes; 0 if no thumbnail present
5624
+ */
5625
+ ThumbnailSize: number;
5626
+ Thumbnails: components["schemas"]["ThumbnailResponseDto"][];
5627
+ ClientUID?: string | null;
5628
+ /** @default null */
5629
+ CreateTime: number | null;
5630
+ /**
5631
+ * Format: email
5632
+ * @description User's email associated with the share and used to sign the manifest and block contents.
5633
+ * @default null
5634
+ */
5635
+ SignatureEmail: string | null;
5636
+ /**
5637
+ * Format: email
5638
+ * @deprecated
5639
+ * @description [DEPRECATED] use `SignatureEmail` Email address corresponding to the signature
5640
+ * @default null
5641
+ */
5642
+ SignatureAddress: string | null;
5643
+ };
5293
5644
  GetSharedFileInfoPayloadDto: {
5294
5645
  SharePasswordSalt: components["schemas"]["BinaryString2"];
5295
5646
  SharePassphrase: components["schemas"]["PGPMessage2"];
@@ -5541,6 +5892,7 @@ export interface components {
5541
5892
  VolumeID: components["schemas"]["Id2"];
5542
5893
  ShareID: components["schemas"]["Id2"];
5543
5894
  LinkID: components["schemas"]["Id2"];
5895
+ ShareTargetType: components["schemas"]["TargetType2"];
5544
5896
  };
5545
5897
  ExternalInvitationRequestDto: {
5546
5898
  InviterAddressID: components["schemas"]["Id"];
@@ -5633,8 +5985,9 @@ export interface components {
5633
5985
  VolumeID: components["schemas"]["Id2"];
5634
5986
  ShareID: components["schemas"]["Id2"];
5635
5987
  InvitationID: components["schemas"]["Id2"];
5988
+ ShareTargetType: components["schemas"]["TargetType2"];
5636
5989
  };
5637
- ShareResponseDto3: {
5990
+ ShareResponseDto2: {
5638
5991
  ShareID: components["schemas"]["Id2"];
5639
5992
  VolumeID: components["schemas"]["Id2"];
5640
5993
  Passphrase: components["schemas"]["PGPMessage2"];
@@ -5710,7 +6063,9 @@ export interface components {
5710
6063
  DocsCommentsNotificationsEnabled?: boolean | null;
5711
6064
  /** @description Indicates if email notifications for comment activity in Proton Docs should include the document name. If null, the default value to 0 = false will be used by backend. */
5712
6065
  DocsCommentsNotificationsIncludeDocumentName?: boolean | null;
5713
- /** @description Default order and visibility of Photo Tags. */
6066
+ /** @description Indicates user-preferred font in Proton Docs. */
6067
+ DocsFontPreference?: string | null;
6068
+ /** @description Order and visibility of Photo Tags, tags not in the list should not be shown; Use defaults when NULL; Show no tags if empty array. */
5714
6069
  PhotoTags?: number[] | null;
5715
6070
  };
5716
6071
  Defaults: {
@@ -5745,31 +6100,37 @@ export interface components {
5745
6100
  * @deprecated
5746
6101
  * @description Deprecated, use `CreateTime` instead
5747
6102
  */
5748
- CreationTime?: number | null;
6103
+ CreationTime: number;
5749
6104
  /**
5750
6105
  * @deprecated
5751
6106
  * @default null
5752
6107
  */
5753
6108
  MaxSpace: number | null;
5754
6109
  VolumeID: components["schemas"]["Id2"];
5755
- CreateTime?: number | null;
5756
- ModifyTime?: number | null;
6110
+ CreateTime: number;
6111
+ ModifyTime: number;
5757
6112
  /** @description Used space in bytes */
5758
6113
  UsedSpace: number;
5759
6114
  DownloadedBytes: number;
5760
6115
  UploadedBytes: number;
5761
6116
  State: components["schemas"]["VolumeState"];
5762
6117
  Share: components["schemas"]["ShareReferenceResponseDto"];
5763
- Type: components["schemas"]["VolumeType"];
6118
+ Type: components["schemas"]["VolumeType2"];
6119
+ };
6120
+ RestoreMainShareDto: {
6121
+ /** @description ShareID of the existing, locked main share */
6122
+ LockedShareID: string;
6123
+ /** @description Folder name as armored PGP message */
6124
+ Name: string;
6125
+ /** @description Hash of the name */
6126
+ Hash: string;
6127
+ NodePassphrase: components["schemas"]["PGPMessage"];
6128
+ NodePassphraseSignature: components["schemas"]["PGPSignature"];
5764
6129
  /**
5765
- * @description Status of restore task if applicable:
5766
- * - 0 => done
5767
- * - 1 => in progress
5768
- * - -1 => failed
6130
+ * @description Node Hash Key should be provided if it needs to be signed because it was unsigned or signed with the address key (legacy). It should be signed with the new parent's node key. If it was properly signed with the parent node key, it should not be updated. Armored PGP message.
5769
6131
  * @default null
5770
- * @enum {integer|null}
5771
6132
  */
5772
- RestoreStatus: 0 | 1 | -1 | null;
6133
+ NodeHashKey: string | null;
5773
6134
  };
5774
6135
  RestoreDeviceDto: {
5775
6136
  /** @description ShareID of the existing share on the old volume */
@@ -5813,8 +6174,7 @@ export interface components {
5813
6174
  };
5814
6175
  /** Thumbnail */
5815
6176
  ThumbnailTransformer: {
5816
- /** @description Encrypted Thumbnail ID. Will be null for legacy Thumbnails. */
5817
- ThumbnailID: string | null;
6177
+ ThumbnailID: string;
5818
6178
  /** @enum {integer} */
5819
6179
  Type: 1 | 2 | 3;
5820
6180
  /** @description Base64 encoded thumbnail-content-hash */
@@ -5887,10 +6247,11 @@ export interface components {
5887
6247
  */
5888
6248
  MIMEType: string;
5889
6249
  /**
5890
- * @description Attributes
5891
- * @example 1
6250
+ * @deprecated
6251
+ * @description Always returns 1
6252
+ * @enum {integer}
5892
6253
  */
5893
- Attributes: number;
6254
+ Attributes: 1;
5894
6255
  /**
5895
6256
  * @deprecated
5896
6257
  * @description Always returns 7, read+write+execute
@@ -5929,23 +6290,45 @@ export interface components {
5929
6290
  /** @description Timestamp, time at which the file was trashed, null if file is not trashed. */
5930
6291
  Trashed: number | null;
5931
6292
  };
5932
- /** Photo */
5933
- PhotoTransformer2: {
5934
- LinkID: string;
5935
- /** @description Unix timestamp of when the photo was taken as extracted by client from exif */
5936
- CaptureTime: number;
5937
- MainPhotoLinkID: string | null;
5938
- /** @description File name hash */
5939
- Hash: string;
6293
+ DetailedRevisionResponseDto2: {
6294
+ Blocks: components["schemas"]["BlockResponseDto2"][];
6295
+ Photo?: components["schemas"]["PhotoResponseDto2"] | null;
6296
+ ID: components["schemas"]["Id"];
6297
+ ManifestSignature?: components["schemas"]["PGPSignature"] | null;
6298
+ /** @description Size of revision (in bytes) */
6299
+ Size: number;
6300
+ State: components["schemas"]["RevisionState2"];
6301
+ XAttr?: components["schemas"]["PGPMessage"] | null;
5940
6302
  /**
5941
6303
  * @deprecated
5942
- * @description Deprecated: Clients persist exif information in xAttr instead
6304
+ * @description Flag stating if revision has a thumbnail
6305
+ * @enum {integer}
5943
6306
  */
5944
- Exif?: string | null;
5945
- /** @description Photo content hash, Hashmac of content using parent folder's hash key */
5946
- ContentHash: string | null;
5947
- /** @description LinkIDs of related Photos if there are any */
5948
- RelatedPhotosLinkIDs: string[];
6307
+ Thumbnail: 0 | 1;
6308
+ /** @deprecated */
6309
+ ThumbnailHash?: components["schemas"]["BinaryString"] | null;
6310
+ /**
6311
+ * @deprecated
6312
+ * @description Size thumbnail in bytes; 0 if no thumbnail present
6313
+ */
6314
+ ThumbnailSize: number;
6315
+ Thumbnails: components["schemas"]["ThumbnailResponseDto2"][];
6316
+ ClientUID?: string | null;
6317
+ /** @default null */
6318
+ CreateTime: number | null;
6319
+ /**
6320
+ * Format: email
6321
+ * @description User's email associated with the share and used to sign the manifest and block contents.
6322
+ * @default null
6323
+ */
6324
+ SignatureEmail: string | null;
6325
+ /**
6326
+ * Format: email
6327
+ * @deprecated
6328
+ * @description [DEPRECATED] use `SignatureEmail` Email address corresponding to the signature
6329
+ * @default null
6330
+ */
6331
+ SignatureAddress: string | null;
5949
6332
  };
5950
6333
  ShareConflictErrorDetailsDto: {
5951
6334
  ConflictLinkID: components["schemas"]["Id"];
@@ -5969,7 +6352,12 @@ export interface components {
5969
6352
  * @description <details><summary>See values descriptions</summary><details><summary>See values descriptions</summary><table><tr><th>Value</th><th>Description</th></tr><tr><td>1</td><td>Regular</td></tr><tr><td>2</td><td>Photo</td></tr></table></details></details>
5970
6353
  * @enum {integer}
5971
6354
  */
5972
- VolumeType: 1 | 2;
6355
+ VolumeType2: 1 | 2;
6356
+ /**
6357
+ * @description <p>Can be null if the Link was deleted</p><details><summary>See values descriptions</summary><details><summary>See values descriptions</summary><table><tr><th>Value</th><th>Description</th></tr><tr><td>0</td><td>Draft</td></tr><tr><td>1</td><td>Active</td></tr><tr><td>2</td><td>Trashed</td></tr></table></details></details>
6358
+ * @enum {integer}
6359
+ */
6360
+ LinkState: 0 | 1 | 2;
5973
6361
  ListPhotosAlbumRelatedPhotoItemResponseDto: {
5974
6362
  LinkID: components["schemas"]["Id2"];
5975
6363
  CaptureTime: number;
@@ -5999,7 +6387,7 @@ export interface components {
5999
6387
  /** @description UNIX timestamp when the Device got last synced */
6000
6388
  LastSyncTime?: number | null;
6001
6389
  CreateTime: number;
6002
- ModifyTime?: number | null;
6390
+ ModifyTime: number;
6003
6391
  /**
6004
6392
  * @deprecated
6005
6393
  * @description Deprecated: use `CreateTime`
@@ -6015,7 +6403,7 @@ export interface components {
6015
6403
  DeviceDto: {
6016
6404
  DeviceID: components["schemas"]["Id2"];
6017
6405
  CreateTime: number;
6018
- ModifyTime?: number | null;
6406
+ ModifyTime: number;
6019
6407
  Type: components["schemas"]["DeviceType2"];
6020
6408
  };
6021
6409
  /**
@@ -6029,6 +6417,17 @@ export interface components {
6029
6417
  IsShared: boolean;
6030
6418
  IsTrashed: boolean;
6031
6419
  };
6420
+ RelatedPhotoDto: {
6421
+ LinkID: components["schemas"]["Id"];
6422
+ /** @description Name, reusing same session key as previously. */
6423
+ Name: string;
6424
+ /** @description Node passphrase, reusing same session key as previously. */
6425
+ NodePassphrase: string;
6426
+ /** @description Name hash */
6427
+ Hash: string;
6428
+ /** @description Photo content hash, hmacsha256 of sha1 content using parent folder's hash key [ hmacSha256(folder hash key, sha1(plain content)) ] */
6429
+ ContentHash: string;
6430
+ };
6032
6431
  LinkDto: {
6033
6432
  LinkID: components["schemas"]["Id"];
6034
6433
  Type: components["schemas"]["NodeType4"];
@@ -6075,6 +6474,21 @@ export interface components {
6075
6474
  NodeHashKey?: components["schemas"]["PGPMessage"] | null;
6076
6475
  XAttr?: components["schemas"]["PGPMessage"] | null;
6077
6476
  };
6477
+ AlbumDto: {
6478
+ NodeHashKey?: components["schemas"]["PGPMessage"] | null;
6479
+ XAttr?: components["schemas"]["PGPMessage"] | null;
6480
+ };
6481
+ /**
6482
+ * @description <details><summary>See values descriptions</summary><details><summary>See values descriptions</summary><table><tr><th>Value</th><th>Description</th></tr><tr><td>0</td><td>Draft</td></tr><tr><td>1</td><td>Active</td></tr><tr><td>2</td><td>Obsolete</td></tr></table></details></details>
6483
+ * @enum {integer}
6484
+ */
6485
+ RevisionState: 0 | 1 | 2;
6486
+ ThumbnailResponseDto: {
6487
+ ThumbnailID: components["schemas"]["Id2"];
6488
+ Type: components["schemas"]["ThumbnailType2"];
6489
+ Hash: components["schemas"]["BinaryString2"];
6490
+ Size: number;
6491
+ };
6078
6492
  Verifier: {
6079
6493
  Token: components["schemas"]["BinaryString"];
6080
6494
  };
@@ -6088,17 +6502,12 @@ export interface components {
6088
6502
  * @enum {integer}
6089
6503
  */
6090
6504
  ThumbnailType2: 1 | 2 | 3;
6091
- /**
6092
- * @description <p>Can be null if the Link was deleted</p><details><summary>See values descriptions</summary><details><summary>See values descriptions</summary><table><tr><th>Value</th><th>Description</th></tr><tr><td>0</td><td>Draft</td></tr><tr><td>1</td><td>Active</td></tr><tr><td>2</td><td>Trashed</td></tr></table></details></details>
6093
- * @enum {integer}
6094
- */
6095
- LinkState: 0 | 1 | 2;
6096
6505
  PhotoListingRelatedItemResponse: {
6097
6506
  LinkID: components["schemas"]["Id2"];
6098
6507
  /** @description Unix timestamp of when the photo was taken as extracted by client from exif */
6099
6508
  CaptureTime: number;
6100
6509
  /** @description File name hash */
6101
- Hash?: string | null;
6510
+ Hash: string;
6102
6511
  /** @description Photo content hash, Hashmac of content using parent folder's hash key */
6103
6512
  ContentHash?: string | null;
6104
6513
  };
@@ -6176,6 +6585,44 @@ export interface components {
6176
6585
  /** @description Token for the thumbnail URL */
6177
6586
  Token?: string | null;
6178
6587
  };
6588
+ BlockResponseDto: {
6589
+ Index: number;
6590
+ Hash: components["schemas"]["BinaryString2"];
6591
+ Token?: string | null;
6592
+ /** @deprecated */
6593
+ URL?: string | null;
6594
+ BareURL?: string | null;
6595
+ EncSignature?: components["schemas"]["PGPMessage2"] | null;
6596
+ /**
6597
+ * Format: email
6598
+ * @description Email used to sign block
6599
+ */
6600
+ SignatureEmail?: string | null;
6601
+ };
6602
+ PhotoResponseDto: {
6603
+ LinkID: components["schemas"]["Id2"];
6604
+ /** @description Unix timestamp of when the photo was taken as extracted by client from exif */
6605
+ CaptureTime: number;
6606
+ MainPhotoLinkID?: components["schemas"]["Id2"] | null;
6607
+ /** @description File name hash */
6608
+ Hash?: string | null;
6609
+ /** @description Photo content hash, Hashmac of content using parent folder's hash key */
6610
+ ContentHash?: string | null;
6611
+ /** @description LinkIDs of related Photos if there are any */
6612
+ RelatedPhotosLinkIDs: components["schemas"]["Id2"][];
6613
+ /**
6614
+ * @deprecated
6615
+ * @description Deprecated: Clients persist exif information in xAttr instead
6616
+ * @default null
6617
+ */
6618
+ Exif: string | null;
6619
+ };
6620
+ /**
6621
+ * @description <p>The target type of the Share that is corresponding to this invitation.<br />
6622
+ * This should not be used as source of information to know what NodeType or MIMEType the targeted Share is.</p><details><summary>See values descriptions</summary><details><summary>See values descriptions</summary><table><tr><th>Value</th><th>Name</th><th>Description</th></tr><tr><td>0</td><td>Root</td><td>main, device or photo root share</td></tr><tr><td>1</td><td>Folder</td><td></td></tr><tr><td>2</td><td>File</td><td></td></tr><tr><td>3</td><td>Album</td><td></td></tr><tr><td>4</td><td>Photo</td><td></td></tr><tr><td>5</td><td>ProtonVendor</td><td>documents and sheets</td></tr></table></details></details>
6623
+ * @enum {integer}
6624
+ */
6625
+ TargetType2: 0 | 1 | 2 | 3 | 4 | 5;
6179
6626
  /**
6180
6627
  * @description <details><summary>See values descriptions</summary><details><summary>See values descriptions</summary><table><tr><th>Value</th><th>Description</th></tr><tr><td>1</td><td>Pending</td></tr><tr><td>2</td><td>UserRegistered</td></tr><tr><td>4</td><td>Deleted</td></tr></table></details></details>
6181
6628
  * @enum {integer}
@@ -6201,6 +6648,49 @@ export interface components {
6201
6648
  * @enum {integer}
6202
6649
  */
6203
6650
  RevisionRetentionDays3: 0 | 7 | 30 | 180 | 365 | 3650;
6651
+ BlockResponseDto2: {
6652
+ Index: number;
6653
+ Hash: components["schemas"]["BinaryString"];
6654
+ Token?: string | null;
6655
+ /** @deprecated */
6656
+ URL?: string | null;
6657
+ BareURL?: string | null;
6658
+ EncSignature?: components["schemas"]["PGPMessage"] | null;
6659
+ /**
6660
+ * Format: email
6661
+ * @description Email used to sign block
6662
+ */
6663
+ SignatureEmail?: string | null;
6664
+ };
6665
+ PhotoResponseDto2: {
6666
+ LinkID: components["schemas"]["Id"];
6667
+ /** @description Unix timestamp of when the photo was taken as extracted by client from exif */
6668
+ CaptureTime: number;
6669
+ MainPhotoLinkID?: components["schemas"]["Id"] | null;
6670
+ /** @description File name hash */
6671
+ Hash?: string | null;
6672
+ /** @description Photo content hash, Hashmac of content using parent folder's hash key */
6673
+ ContentHash?: string | null;
6674
+ /** @description LinkIDs of related Photos if there are any */
6675
+ RelatedPhotosLinkIDs: components["schemas"]["Id"][];
6676
+ /**
6677
+ * @deprecated
6678
+ * @description Deprecated: Clients persist exif information in xAttr instead
6679
+ * @default null
6680
+ */
6681
+ Exif: string | null;
6682
+ };
6683
+ /**
6684
+ * @description <details><summary>See values descriptions</summary><details><summary>See values descriptions</summary><table><tr><th>Value</th><th>Description</th></tr><tr><td>0</td><td>Draft</td></tr><tr><td>1</td><td>Active</td></tr><tr><td>2</td><td>Obsolete</td></tr></table></details></details>
6685
+ * @enum {integer}
6686
+ */
6687
+ RevisionState2: 0 | 1 | 2;
6688
+ ThumbnailResponseDto2: {
6689
+ ThumbnailID: components["schemas"]["Id"];
6690
+ Type: components["schemas"]["ThumbnailType"];
6691
+ Hash: components["schemas"]["BinaryString"];
6692
+ Size: number;
6693
+ };
6204
6694
  /**
6205
6695
  * @description <details><summary>See values descriptions</summary><details><summary>See values descriptions</summary><table><tr><th>Value</th><th>Description</th></tr><tr><td>0</td><td>Disabled</td></tr><tr><td>1</td><td>Enabled</td></tr></table></details></details>
6206
6696
  * @enum {integer}
@@ -6235,7 +6725,7 @@ export interface components {
6235
6725
  ThumbnailDto: {
6236
6726
  ThumbnailID: components["schemas"]["Id"];
6237
6727
  Type: components["schemas"]["ThumbnailType"];
6238
- Hash: string;
6728
+ Hash: components["schemas"]["BinaryString"];
6239
6729
  EncryptedSize: number;
6240
6730
  };
6241
6731
  PhotoDto: {
@@ -6586,71 +7076,239 @@ export interface operations {
6586
7076
  };
6587
7077
  };
6588
7078
  };
6589
- "get_drive-photos-migrate-legacy": {
7079
+ "post_drive-photos-volumes-{volumeID}-albums-{linkID}-duplicates": {
6590
7080
  parameters: {
6591
7081
  query?: never;
6592
7082
  header?: never;
6593
- path?: never;
7083
+ path: {
7084
+ volumeID: string;
7085
+ linkID: string;
7086
+ };
6594
7087
  cookie?: never;
6595
7088
  };
6596
- requestBody?: never;
7089
+ requestBody?: {
7090
+ content: {
7091
+ "application/json": components["schemas"]["FindDuplicatesInput"];
7092
+ };
7093
+ };
7094
+ responses: {
7095
+ /** @description Success */
7096
+ 200: {
7097
+ headers: {
7098
+ "x-pm-code": 1000;
7099
+ [name: string]: unknown;
7100
+ };
7101
+ content: {
7102
+ "application/json": components["schemas"]["FindDuplicatesOutputCollection"];
7103
+ };
7104
+ };
7105
+ };
7106
+ };
7107
+ "get_drive-photos-volumes-{volumeID}-tags-migration": {
7108
+ parameters: {
7109
+ query?: never;
7110
+ header?: never;
7111
+ path: {
7112
+ volumeID: string;
7113
+ };
7114
+ cookie?: never;
7115
+ };
7116
+ requestBody?: never;
7117
+ responses: {
7118
+ /** @description Success */
7119
+ 200: {
7120
+ headers: {
7121
+ "x-pm-code": 1000;
7122
+ [name: string]: unknown;
7123
+ };
7124
+ content: {
7125
+ "application/json": components["schemas"]["PhotoTagMigrationStatusResponseDto"];
7126
+ };
7127
+ };
7128
+ /** @description Unprocessable Entity */
7129
+ 422: {
7130
+ headers: {
7131
+ [name: string]: unknown;
7132
+ };
7133
+ content: {
7134
+ "application/json": {
7135
+ /** @description Potential codes and their meaning:
7136
+ * - 2501: volume does not exist, or is not photo volume
7137
+ * - 2011: Insufficient permissions, not volume owner
7138
+ * */
7139
+ Code: number;
7140
+ };
7141
+ };
7142
+ };
7143
+ };
7144
+ };
7145
+ "post_drive-photos-volumes-{volumeID}-tags-migration": {
7146
+ parameters: {
7147
+ query?: never;
7148
+ header?: never;
7149
+ path: {
7150
+ volumeID: string;
7151
+ };
7152
+ cookie?: never;
7153
+ };
7154
+ requestBody?: {
7155
+ content: {
7156
+ "application/json": components["schemas"]["UpdatePhotoTagMigrationStatusRequestDto"];
7157
+ };
7158
+ };
7159
+ responses: {
7160
+ /** @description Success */
7161
+ 200: {
7162
+ headers: {
7163
+ "x-pm-code": 1000;
7164
+ [name: string]: unknown;
7165
+ };
7166
+ content: {
7167
+ "application/json": components["schemas"]["SuccessfulResponse"];
7168
+ };
7169
+ };
7170
+ /** @description Unprocessable Entity */
7171
+ 422: {
7172
+ headers: {
7173
+ [name: string]: unknown;
7174
+ };
7175
+ content: {
7176
+ "application/json": {
7177
+ /** @description Potential codes and their meaning:
7178
+ * - 2501: volume does not exist, or is not photo volume
7179
+ * - 2011: Insufficient permissions, not volume owner
7180
+ * */
7181
+ Code: number;
7182
+ };
7183
+ };
7184
+ };
7185
+ };
7186
+ };
7187
+ "get_drive-photos-volumes-{volumeID}-albums-{linkID}-children": {
7188
+ parameters: {
7189
+ query?: {
7190
+ AnchorID?: components["schemas"]["ListPhotosAlbumQueryParameters"]["AnchorID"];
7191
+ Sort?: components["schemas"]["ListPhotosAlbumQueryParameters"]["Sort"];
7192
+ Desc?: components["schemas"]["ListPhotosAlbumQueryParameters"]["Desc"];
7193
+ Tag?: components["schemas"]["ListPhotosAlbumQueryParameters"]["Tag"];
7194
+ OnlyChildren?: components["schemas"]["ListPhotosAlbumQueryParameters"]["OnlyChildren"];
7195
+ IncludeTrashed?: components["schemas"]["ListPhotosAlbumQueryParameters"]["IncludeTrashed"];
7196
+ };
7197
+ header?: never;
7198
+ path: {
7199
+ volumeID: string;
7200
+ linkID: string;
7201
+ };
7202
+ cookie?: never;
7203
+ };
7204
+ requestBody?: never;
7205
+ responses: {
7206
+ /** @description Success */
7207
+ 200: {
7208
+ headers: {
7209
+ "x-pm-code": 1000;
7210
+ [name: string]: unknown;
7211
+ };
7212
+ content: {
7213
+ "application/json": components["schemas"]["ListPhotosAlbumResponseDto"];
7214
+ };
7215
+ };
7216
+ /** @description Unprocessable Entity */
7217
+ 422: {
7218
+ headers: {
7219
+ [name: string]: unknown;
7220
+ };
7221
+ content: {
7222
+ "application/json": {
7223
+ /** @description Potential codes and their meaning:
7224
+ * - 2501: Volume not found
7225
+ * - 2501: File or folder not found
7226
+ * - 2011: Insufficient permissions
7227
+ * */
7228
+ Code: number;
7229
+ };
7230
+ };
7231
+ };
7232
+ };
7233
+ };
7234
+ "put_drive-photos-volumes-{volumeID}-recover-multiple": {
7235
+ parameters: {
7236
+ query?: never;
7237
+ header?: never;
7238
+ path: {
7239
+ volumeID: string;
7240
+ };
7241
+ cookie?: never;
7242
+ };
7243
+ requestBody?: {
7244
+ content: {
7245
+ "application/json": components["schemas"]["TransferPhotoLinksRequestDto"];
7246
+ };
7247
+ };
6597
7248
  responses: {
6598
- /** @description Success */
7249
+ /** @description Ok */
6599
7250
  200: {
6600
7251
  headers: {
6601
- "x-pm-code": 1000;
6602
- [name: string]: unknown;
6603
- };
6604
- content: {
6605
- "application/json": components["schemas"]["GetMigrationStatusResponseDto"];
6606
- };
6607
- };
6608
- /** @description Accepted */
6609
- 202: {
6610
- headers: {
6611
- "x-pm-code": 1002;
6612
7252
  [name: string]: unknown;
6613
7253
  };
6614
7254
  content: {
6615
- "application/json": components["schemas"]["AcceptedResponse"];
7255
+ "application/json": {
7256
+ /** @enum {integer} */
7257
+ Code?: 1001;
7258
+ Responses?: {
7259
+ /** @description Encrypted link ID */
7260
+ LinkID?: string;
7261
+ Response?: components["schemas"]["ProtonSuccess"] | components["schemas"]["ProtonError"];
7262
+ }[];
7263
+ };
6616
7264
  };
6617
7265
  };
6618
- /** @description Failed dependency */
6619
- 424: {
7266
+ /** @description Unprocessable Entity */
7267
+ 422: {
6620
7268
  headers: {
6621
7269
  [name: string]: unknown;
6622
7270
  };
6623
7271
  content: {
6624
7272
  "application/json": {
6625
- /**
6626
- * @description Potential codes:
6627
- * - 2032
6628
- *
6629
- * @enum {integer}
6630
- */
6631
- Code: 2032;
7273
+ /** @description Potential codes and their meaning:
7274
+ * - 2501: The volume does not exist.
7275
+ * - 2511: cannot recover photos from a share
7276
+ * - 2011: cannot move favorite photos from a share
7277
+ * - 2000: All main photos have to be sent with related photos.
7278
+ * */
7279
+ Code: number;
6632
7280
  };
6633
7281
  };
6634
7282
  };
6635
7283
  };
6636
7284
  };
6637
- "post_drive-photos-migrate-legacy": {
7285
+ "post_drive-photos-volumes-{volumeID}-albums-{linkID}-remove-multiple": {
6638
7286
  parameters: {
6639
7287
  query?: never;
6640
7288
  header?: never;
6641
- path?: never;
7289
+ path: {
7290
+ volumeID: string;
7291
+ linkID: string;
7292
+ };
6642
7293
  cookie?: never;
6643
7294
  };
6644
- requestBody?: never;
7295
+ requestBody?: {
7296
+ content: {
7297
+ "application/json": components["schemas"]["RemovePhotosFromAlbumRequestDto"];
7298
+ };
7299
+ };
6645
7300
  responses: {
6646
- /** @description Accepted */
6647
- 202: {
7301
+ /** @description Ok */
7302
+ 200: {
6648
7303
  headers: {
6649
- "x-pm-code": 1002;
6650
7304
  [name: string]: unknown;
6651
7305
  };
6652
7306
  content: {
6653
- "application/json": components["schemas"]["AcceptedResponse"];
7307
+ "application/json": {
7308
+ /** @enum {integer} */
7309
+ Code?: 1001;
7310
+ Responses?: components["schemas"]["RemovePhotoFromAlbumWithLinkIDResponseDto"][];
7311
+ };
6654
7312
  };
6655
7313
  };
6656
7314
  /** @description Unprocessable Entity */
@@ -6661,46 +7319,21 @@ export interface operations {
6661
7319
  content: {
6662
7320
  "application/json": {
6663
7321
  /** @description Potential codes and their meaning:
6664
- * - 2500: Migration in progress
6665
- * - 2501: Share not found
7322
+ * - 2500: A volume is already active
6666
7323
  * */
6667
7324
  Code: number;
6668
7325
  };
6669
7326
  };
6670
7327
  };
6671
- /** @description Failed dependency */
6672
- 424: {
6673
- headers: {
6674
- [name: string]: unknown;
6675
- };
6676
- content: {
6677
- "application/json": {
6678
- /**
6679
- * @description Potential codes:
6680
- * - 2032
6681
- *
6682
- * @enum {integer}
6683
- */
6684
- Code: 2032;
6685
- };
6686
- };
6687
- };
6688
7328
  };
6689
7329
  };
6690
- "get_drive-photos-volumes-{volumeID}-albums-{linkID}-children": {
7330
+ "get_drive-photos-albums-shared-with-me": {
6691
7331
  parameters: {
6692
7332
  query?: {
6693
- AnchorID?: components["schemas"]["ListPhotosAlbumQueryParameters"]["AnchorID"];
6694
- Sort?: components["schemas"]["ListPhotosAlbumQueryParameters"]["Sort"];
6695
- Desc?: components["schemas"]["ListPhotosAlbumQueryParameters"]["Desc"];
6696
- Tag?: components["schemas"]["ListPhotosAlbumQueryParameters"]["Tag"];
6697
- OnlyChildren?: components["schemas"]["ListPhotosAlbumQueryParameters"]["OnlyChildren"];
7333
+ AnchorID?: components["schemas"]["Id"] | null;
6698
7334
  };
6699
7335
  header?: never;
6700
- path: {
6701
- volumeID: string;
6702
- linkID: string;
6703
- };
7336
+ path?: never;
6704
7337
  cookie?: never;
6705
7338
  };
6706
7339
  requestBody?: never;
@@ -6712,7 +7345,7 @@ export interface operations {
6712
7345
  [name: string]: unknown;
6713
7346
  };
6714
7347
  content: {
6715
- "application/json": components["schemas"]["ListPhotosAlbumResponseDto"];
7348
+ "application/json": components["schemas"]["SharedWithMeResponseDto"];
6716
7349
  };
6717
7350
  };
6718
7351
  /** @description Unprocessable Entity */
@@ -6723,8 +7356,6 @@ export interface operations {
6723
7356
  content: {
6724
7357
  "application/json": {
6725
7358
  /** @description Potential codes and their meaning:
6726
- * - 2501: Volume not found
6727
- * - 2501: File or folder not found
6728
7359
  * - 2011: Insufficient permissions
6729
7360
  * */
6730
7361
  Code: number;
@@ -6733,19 +7364,18 @@ export interface operations {
6733
7364
  };
6734
7365
  };
6735
7366
  };
6736
- "post_drive-photos-volumes-{volumeID}-albums-{linkID}-remove-multiple": {
7367
+ "put_drive-volumes-{volumeID}-links-transfer-multiple": {
6737
7368
  parameters: {
6738
7369
  query?: never;
6739
7370
  header?: never;
6740
7371
  path: {
6741
7372
  volumeID: string;
6742
- linkID: string;
6743
7373
  };
6744
7374
  cookie?: never;
6745
7375
  };
6746
7376
  requestBody?: {
6747
7377
  content: {
6748
- "application/json": components["schemas"]["RemovePhotosFromAlbumRequestDto"];
7378
+ "application/json": components["schemas"]["TransferPhotoLinksRequestDto"];
6749
7379
  };
6750
7380
  };
6751
7381
  responses: {
@@ -6758,7 +7388,11 @@ export interface operations {
6758
7388
  "application/json": {
6759
7389
  /** @enum {integer} */
6760
7390
  Code?: 1001;
6761
- Responses?: components["schemas"]["RemovePhotoFromAlbumWithLinkIDResponseDto"][];
7391
+ Responses?: {
7392
+ /** @description Encrypted link ID */
7393
+ LinkID?: string;
7394
+ Response?: components["schemas"]["ProtonSuccess"] | components["schemas"]["ProtonError"];
7395
+ }[];
6762
7396
  };
6763
7397
  };
6764
7398
  };
@@ -6770,7 +7404,9 @@ export interface operations {
6770
7404
  content: {
6771
7405
  "application/json": {
6772
7406
  /** @description Potential codes and their meaning:
6773
- * - 2500: A volume is already active
7407
+ * - 2501: The volume does not exist.
7408
+ * - 2511: cannot move favorite photos from a share
7409
+ * - 2000: All main photos have to be sent with related photos.
6774
7410
  * */
6775
7411
  Code: number;
6776
7412
  };
@@ -6778,25 +7414,36 @@ export interface operations {
6778
7414
  };
6779
7415
  };
6780
7416
  };
6781
- "get_drive-photos-albums-shared-with-me": {
7417
+ "put_drive-photos-volumes-{volumeID}-links-transfer-multiple": {
6782
7418
  parameters: {
6783
- query?: {
6784
- AnchorID?: components["schemas"]["Id"] | null;
6785
- };
7419
+ query?: never;
6786
7420
  header?: never;
6787
- path?: never;
7421
+ path: {
7422
+ volumeID: string;
7423
+ };
6788
7424
  cookie?: never;
6789
7425
  };
6790
- requestBody?: never;
7426
+ requestBody?: {
7427
+ content: {
7428
+ "application/json": components["schemas"]["TransferPhotoLinksRequestDto"];
7429
+ };
7430
+ };
6791
7431
  responses: {
6792
- /** @description Success */
7432
+ /** @description Ok */
6793
7433
  200: {
6794
7434
  headers: {
6795
- "x-pm-code": 1000;
6796
7435
  [name: string]: unknown;
6797
7436
  };
6798
7437
  content: {
6799
- "application/json": components["schemas"]["SharedWithMeResponseDto"];
7438
+ "application/json": {
7439
+ /** @enum {integer} */
7440
+ Code?: 1001;
7441
+ Responses?: {
7442
+ /** @description Encrypted link ID */
7443
+ LinkID?: string;
7444
+ Response?: components["schemas"]["ProtonSuccess"] | components["schemas"]["ProtonError"];
7445
+ }[];
7446
+ };
6800
7447
  };
6801
7448
  };
6802
7449
  /** @description Unprocessable Entity */
@@ -6807,7 +7454,9 @@ export interface operations {
6807
7454
  content: {
6808
7455
  "application/json": {
6809
7456
  /** @description Potential codes and their meaning:
6810
- * - 2011: Insufficient permissions
7457
+ * - 2501: The volume does not exist.
7458
+ * - 2511: cannot move favorite photos from a share
7459
+ * - 2000: All main photos have to be sent with related photos.
6811
7460
  * */
6812
7461
  Code: number;
6813
7462
  };
@@ -7263,59 +7912,6 @@ export interface operations {
7263
7912
  };
7264
7913
  };
7265
7914
  };
7266
- "post_drive-volumes-{volumeID}-links-{linkID}-copy": {
7267
- parameters: {
7268
- query?: never;
7269
- header?: never;
7270
- path: {
7271
- volumeID: string;
7272
- linkID: string;
7273
- };
7274
- cookie?: never;
7275
- };
7276
- requestBody?: {
7277
- content: {
7278
- "application/json": components["schemas"]["CopyLinkRequestDto"];
7279
- };
7280
- };
7281
- responses: {
7282
- /** @description Success */
7283
- 200: {
7284
- headers: {
7285
- "x-pm-code": 1000;
7286
- [name: string]: unknown;
7287
- };
7288
- content: {
7289
- "application/json": components["schemas"]["CopyLinkResponseDto"];
7290
- };
7291
- };
7292
- /** @description Unprocessable Entity */
7293
- 422: {
7294
- headers: {
7295
- [name: string]: unknown;
7296
- };
7297
- content: {
7298
- "application/json": {
7299
- /**
7300
- * @description Potential codes and their meaning:
7301
- * - 2011: Copying Proton Docs to another account is not possible yet.
7302
- * - 2501: Volume not found
7303
- * - 2501: File or folder not found
7304
- * - 2501: parent folder was not found
7305
- * - 200300: max folder size reached
7306
- * - 2011: the user does not have permissions to create a file in this share
7307
- * - 2000: the user cannot move or rename root folder
7308
- * - 200002: Storage quota exceeded
7309
- * - 200301: target parent exceeded max folder depth
7310
- *
7311
- * @enum {integer}
7312
- */
7313
- Code: 200300 | 2501 | 2011 | 2000 | 200002 | 200301;
7314
- };
7315
- };
7316
- };
7317
- };
7318
- };
7319
7915
  "post_drive-shares-{shareID}-folders": {
7320
7916
  parameters: {
7321
7917
  query?: never;
@@ -7642,6 +8238,59 @@ export interface operations {
7642
8238
  };
7643
8239
  };
7644
8240
  };
8241
+ "post_drive-volumes-{volumeID}-links-{linkID}-copy": {
8242
+ parameters: {
8243
+ query?: never;
8244
+ header?: never;
8245
+ path: {
8246
+ volumeID: string;
8247
+ linkID: string;
8248
+ };
8249
+ cookie?: never;
8250
+ };
8251
+ requestBody?: {
8252
+ content: {
8253
+ "application/json": components["schemas"]["CopyLinkRequestDto"];
8254
+ };
8255
+ };
8256
+ responses: {
8257
+ /** @description Success */
8258
+ 200: {
8259
+ headers: {
8260
+ "x-pm-code": 1000;
8261
+ [name: string]: unknown;
8262
+ };
8263
+ content: {
8264
+ "application/json": components["schemas"]["CopyLinkResponseDto"];
8265
+ };
8266
+ };
8267
+ /** @description Unprocessable Entity */
8268
+ 422: {
8269
+ headers: {
8270
+ [name: string]: unknown;
8271
+ };
8272
+ content: {
8273
+ "application/json": {
8274
+ /**
8275
+ * @description Potential codes and their meaning:
8276
+ * - 2011: Copying Proton Docs to another account is not possible yet.
8277
+ * - 2501: Volume not found
8278
+ * - 2501: File or folder not found
8279
+ * - 2501: parent folder was not found
8280
+ * - 200300: max folder size reached
8281
+ * - 2011: the user does not have permissions to create a file in this share
8282
+ * - 2000: the user cannot move or rename root folder
8283
+ * - 200002: Storage quota exceeded
8284
+ * - 200301: target parent exceeded max folder depth
8285
+ *
8286
+ * @enum {integer}
8287
+ */
8288
+ Code: 200300 | 2501 | 2011 | 2000 | 200002 | 200301;
8289
+ };
8290
+ };
8291
+ };
8292
+ };
8293
+ };
7645
8294
  "post_drive-v2-volumes-{volumeID}-delete_multiple": {
7646
8295
  parameters: {
7647
8296
  query?: never;
@@ -7852,7 +8501,11 @@ export interface operations {
7852
8501
  "application/json": {
7853
8502
  /** @enum {integer} */
7854
8503
  Code?: 1001;
7855
- Responses?: components["responses"]["ProtonSuccessResponse"][];
8504
+ Responses?: {
8505
+ /** @description Encrypted link ID */
8506
+ LinkID?: string;
8507
+ Response?: components["schemas"]["ProtonSuccess"] | components["schemas"]["ProtonError"];
8508
+ }[];
7856
8509
  };
7857
8510
  };
7858
8511
  };
@@ -7865,6 +8518,7 @@ export interface operations {
7865
8518
  "application/json": {
7866
8519
  /** @description Potential codes and their meaning:
7867
8520
  * - 2501: The volume does not exist.
8521
+ * - 2511: cannot move favorite photos from a share
7868
8522
  * - 2000: All main photos have to be sent with related photos.
7869
8523
  * */
7870
8524
  Code: number;
@@ -7901,6 +8555,7 @@ export interface operations {
7901
8555
  * - 200300: max folder size reached
7902
8556
  * - 200301: max folder depth reached
7903
8557
  * - 2500: file or folder with same name already exists
8558
+ * - 2511: cannot move favorite photos from a share
7904
8559
  * - 2501: parent folder was not found
7905
8560
  * */
7906
8561
  Code?: number;
@@ -7995,6 +8650,7 @@ export interface operations {
7995
8650
  * - 200300: max folder size reached
7996
8651
  * - 200301: max folder depth reached
7997
8652
  * - 2500: file or folder with same name already exists
8653
+ * - 2511: cannot move favorite photos from a share
7998
8654
  * - 2501: parent folder was not found
7999
8655
  * */
8000
8656
  Code?: number;
@@ -8031,10 +8687,7 @@ export interface operations {
8031
8687
  [name: string]: unknown;
8032
8688
  };
8033
8689
  content: {
8034
- "application/json": {
8035
- Code: components["schemas"]["ResponseCodeSuccess"];
8036
- Revision: components["schemas"]["DetailedRevisionTransformer"];
8037
- };
8690
+ "application/json": components["schemas"]["GetRevisionResponseDto2"];
8038
8691
  };
8039
8692
  };
8040
8693
  };
@@ -8150,10 +8803,7 @@ export interface operations {
8150
8803
  [name: string]: unknown;
8151
8804
  };
8152
8805
  content: {
8153
- "application/json": {
8154
- Code: components["schemas"]["ResponseCodeSuccess"];
8155
- Revision: components["schemas"]["DetailedRevisionTransformer"];
8156
- };
8806
+ "application/json": components["schemas"]["GetRevisionResponseDto2"];
8157
8807
  };
8158
8808
  };
8159
8809
  };
@@ -8365,16 +9015,14 @@ export interface operations {
8365
9015
  };
8366
9016
  requestBody?: never;
8367
9017
  responses: {
8368
- /** @description Revisions */
9018
+ /** @description Success */
8369
9019
  200: {
8370
9020
  headers: {
9021
+ "x-pm-code": 1000;
8371
9022
  [name: string]: unknown;
8372
9023
  };
8373
9024
  content: {
8374
- "application/json": {
8375
- Code: components["schemas"]["ResponseCodeSuccess"];
8376
- Revisions: components["schemas"]["RevisionTransformer"][];
8377
- };
9025
+ "application/json": components["schemas"]["ListRevisionsResponseDto"];
8378
9026
  };
8379
9027
  };
8380
9028
  };
@@ -8448,16 +9096,14 @@ export interface operations {
8448
9096
  };
8449
9097
  requestBody?: never;
8450
9098
  responses: {
8451
- /** @description Revisions */
9099
+ /** @description Success */
8452
9100
  200: {
8453
9101
  headers: {
9102
+ "x-pm-code": 1000;
8454
9103
  [name: string]: unknown;
8455
9104
  };
8456
9105
  content: {
8457
- "application/json": {
8458
- Code: components["schemas"]["ResponseCodeSuccess"];
8459
- Revisions: components["schemas"]["RevisionTransformer"][];
8460
- };
9106
+ "application/json": components["schemas"]["ListRevisionsResponseDto"];
8461
9107
  };
8462
9108
  };
8463
9109
  };
@@ -8777,6 +9423,16 @@ export interface operations {
8777
9423
  "application/json": components["schemas"]["SuccessfulResponse"];
8778
9424
  };
8779
9425
  };
9426
+ /** @description Empty trash queued for async processing */
9427
+ 202: {
9428
+ headers: {
9429
+ "x-pm-code": 1002;
9430
+ [name: string]: unknown;
9431
+ };
9432
+ content: {
9433
+ "application/json": components["schemas"]["EmptyTrashAcceptedResponse"];
9434
+ };
9435
+ };
8780
9436
  };
8781
9437
  };
8782
9438
  "get_drive-volumes-{volumeID}-trash": {
@@ -8816,7 +9472,17 @@ export interface operations {
8816
9472
  };
8817
9473
  requestBody?: never;
8818
9474
  responses: {
8819
- /** @description Empty volume trash queued for async processing */
9475
+ /** @description Success */
9476
+ 200: {
9477
+ headers: {
9478
+ "x-pm-code": 1000;
9479
+ [name: string]: unknown;
9480
+ };
9481
+ content: {
9482
+ "application/json": components["schemas"]["SuccessfulResponse"];
9483
+ };
9484
+ };
9485
+ /** @description Empty trash queued for async processing */
8820
9486
  202: {
8821
9487
  headers: {
8822
9488
  "x-pm-code": 1002;
@@ -9426,11 +10092,28 @@ export interface operations {
9426
10092
  };
9427
10093
  cookie?: never;
9428
10094
  };
9429
- requestBody?: {
9430
- content: {
9431
- "application/json": components["schemas"]["CreatePhotoShareRequestDto"];
10095
+ requestBody?: never;
10096
+ responses: {
10097
+ /** @description Invalid request; update app */
10098
+ 422: {
10099
+ headers: {
10100
+ [name: string]: unknown;
10101
+ };
10102
+ content?: never;
10103
+ };
10104
+ };
10105
+ };
10106
+ "delete_drive-volumes-{volumeID}-photos-share-{shareID}": {
10107
+ parameters: {
10108
+ query?: never;
10109
+ header?: never;
10110
+ path: {
10111
+ volumeID: string;
10112
+ shareID: string;
9432
10113
  };
10114
+ cookie?: never;
9433
10115
  };
10116
+ requestBody?: never;
9434
10117
  responses: {
9435
10118
  /** @description Success */
9436
10119
  200: {
@@ -9439,22 +10122,27 @@ export interface operations {
9439
10122
  [name: string]: unknown;
9440
10123
  };
9441
10124
  content: {
9442
- "application/json": components["schemas"]["CreatePhotoShareResponseDto"];
10125
+ "application/json": components["schemas"]["SuccessfulResponse"];
9443
10126
  };
9444
10127
  };
10128
+ 422: components["responses"]["ProtonErrorResponse"];
9445
10129
  };
9446
10130
  };
9447
- "delete_drive-volumes-{volumeID}-photos-share-{shareID}": {
10131
+ "post_drive-photos-volumes-{volumeID}-links-{linkID}-favorite": {
9448
10132
  parameters: {
9449
10133
  query?: never;
9450
10134
  header?: never;
9451
10135
  path: {
9452
10136
  volumeID: string;
9453
- shareID: string;
10137
+ linkID: string;
9454
10138
  };
9455
10139
  cookie?: never;
9456
10140
  };
9457
- requestBody?: never;
10141
+ requestBody?: {
10142
+ content: {
10143
+ "application/json": components["schemas"]["FavoritePhotoRequestDto"];
10144
+ };
10145
+ };
9458
10146
  responses: {
9459
10147
  /** @description Success */
9460
10148
  200: {
@@ -9463,10 +10151,23 @@ export interface operations {
9463
10151
  [name: string]: unknown;
9464
10152
  };
9465
10153
  content: {
9466
- "application/json": components["schemas"]["SuccessfulResponse"];
10154
+ "application/json": components["schemas"]["FavoritePhotoResponseDto"];
10155
+ };
10156
+ };
10157
+ /** @description Unprocessable Entity */
10158
+ 422: {
10159
+ headers: {
10160
+ [name: string]: unknown;
10161
+ };
10162
+ content: {
10163
+ "application/json": {
10164
+ /** @description Potential codes and their meaning:
10165
+ * - 2501: The link or volume does not exist.
10166
+ * */
10167
+ Code: number;
10168
+ };
9467
10169
  };
9468
10170
  };
9469
- 422: components["responses"]["ProtonErrorResponse"];
9470
10171
  };
9471
10172
  };
9472
10173
  "post_drive-volumes-{volumeID}-photos-duplicates": {
@@ -9496,6 +10197,110 @@ export interface operations {
9496
10197
  };
9497
10198
  };
9498
10199
  };
10200
+ "get_drive-photos-migrate-legacy": {
10201
+ parameters: {
10202
+ query?: never;
10203
+ header?: never;
10204
+ path?: never;
10205
+ cookie?: never;
10206
+ };
10207
+ requestBody?: never;
10208
+ responses: {
10209
+ /** @description Success */
10210
+ 200: {
10211
+ headers: {
10212
+ "x-pm-code": 1000;
10213
+ [name: string]: unknown;
10214
+ };
10215
+ content: {
10216
+ "application/json": components["schemas"]["GetMigrationStatusResponseDto"];
10217
+ };
10218
+ };
10219
+ /** @description Accepted */
10220
+ 202: {
10221
+ headers: {
10222
+ "x-pm-code": 1002;
10223
+ [name: string]: unknown;
10224
+ };
10225
+ content: {
10226
+ "application/json": components["schemas"]["AcceptedResponse"];
10227
+ };
10228
+ };
10229
+ /** @description Unprocessable Entity */
10230
+ 422: {
10231
+ headers: {
10232
+ [name: string]: unknown;
10233
+ };
10234
+ content: {
10235
+ "application/json": {
10236
+ /** @description Potential codes and their meaning:
10237
+ * - 2501: The link or volume does not exist.
10238
+ * */
10239
+ Code: number;
10240
+ };
10241
+ };
10242
+ };
10243
+ };
10244
+ };
10245
+ "post_drive-photos-migrate-legacy": {
10246
+ parameters: {
10247
+ query?: never;
10248
+ header?: never;
10249
+ path?: never;
10250
+ cookie?: never;
10251
+ };
10252
+ requestBody?: {
10253
+ content: {
10254
+ "application/json": components["schemas"]["MigrateFromLegacyRequest"];
10255
+ };
10256
+ };
10257
+ responses: {
10258
+ /** @description Accepted */
10259
+ 202: {
10260
+ headers: {
10261
+ "x-pm-code": 1002;
10262
+ [name: string]: unknown;
10263
+ };
10264
+ content: {
10265
+ "application/json": components["schemas"]["AcceptedResponse"];
10266
+ };
10267
+ };
10268
+ /** @description Unprocessable Entity */
10269
+ 422: {
10270
+ headers: {
10271
+ [name: string]: unknown;
10272
+ };
10273
+ content: {
10274
+ "application/json": {
10275
+ /** @description Potential codes and their meaning:
10276
+ * - 2500: Migration in progress
10277
+ * - 2501: Share not found
10278
+ * - 2501: Volume not found
10279
+ * - 2501: Address not found
10280
+ * */
10281
+ Code: number;
10282
+ };
10283
+ };
10284
+ };
10285
+ /** @description Failed dependency */
10286
+ 424: {
10287
+ headers: {
10288
+ [name: string]: unknown;
10289
+ };
10290
+ content: {
10291
+ "application/json": {
10292
+ /**
10293
+ * @description Potential codes:
10294
+ * - 2032
10295
+ *
10296
+ * @enum {integer}
10297
+ */
10298
+ Code: 2032;
10299
+ };
10300
+ };
10301
+ };
10302
+ };
10303
+ };
9499
10304
  "get_drive-volumes-{volumeID}-photos": {
9500
10305
  parameters: {
9501
10306
  query?: {
@@ -9527,6 +10332,68 @@ export interface operations {
9527
10332
  };
9528
10333
  };
9529
10334
  };
10335
+ "put_drive-photos-volumes-{volumeID}-links-{linkID}-revisions-{revisionID}-xattr": {
10336
+ parameters: {
10337
+ query?: never;
10338
+ header?: never;
10339
+ path: {
10340
+ volumeID: string;
10341
+ linkID: string;
10342
+ revisionID: string;
10343
+ };
10344
+ cookie?: never;
10345
+ };
10346
+ requestBody?: {
10347
+ content: {
10348
+ "application/json": components["schemas"]["UpdateXAttrRequest"];
10349
+ };
10350
+ };
10351
+ responses: {
10352
+ /** @description Success */
10353
+ 200: {
10354
+ headers: {
10355
+ "x-pm-code": 1000;
10356
+ [name: string]: unknown;
10357
+ };
10358
+ content: {
10359
+ "application/json": components["schemas"]["SuccessfulResponse"];
10360
+ };
10361
+ };
10362
+ /** @description Unprocessable Entity */
10363
+ 422: {
10364
+ headers: {
10365
+ [name: string]: unknown;
10366
+ };
10367
+ content: {
10368
+ "application/json": {
10369
+ /** @description Potential codes and their meaning:
10370
+ * - 2001: Wrong signature email passed
10371
+ * - 2001: Invalid PGP message
10372
+ * - 200501: Invalid Key Packet
10373
+ * */
10374
+ Code: number;
10375
+ };
10376
+ };
10377
+ };
10378
+ /** @description Failed dependency */
10379
+ 424: {
10380
+ headers: {
10381
+ [name: string]: unknown;
10382
+ };
10383
+ content: {
10384
+ "application/json": {
10385
+ /**
10386
+ * @description Potential codes:
10387
+ * - 2032
10388
+ *
10389
+ * @enum {integer}
10390
+ */
10391
+ Code: 2032;
10392
+ };
10393
+ };
10394
+ };
10395
+ };
10396
+ };
9530
10397
  "post_drive-urls-{token}-files-{linkID}-checkAvailableHashes": {
9531
10398
  parameters: {
9532
10399
  query?: never;
@@ -10525,16 +11392,14 @@ export interface operations {
10525
11392
  };
10526
11393
  requestBody?: never;
10527
11394
  responses: {
10528
- /** @description Revision */
11395
+ /** @description Success */
10529
11396
  200: {
10530
11397
  headers: {
11398
+ "x-pm-code": 1000;
10531
11399
  [name: string]: unknown;
10532
11400
  };
10533
11401
  content: {
10534
- "application/json": {
10535
- Code: components["schemas"]["ResponseCodeSuccess"];
10536
- Revision: components["schemas"]["DetailedRevisionTransformer"];
10537
- };
11402
+ "application/json": components["schemas"]["GetRevisionResponseDto"];
10538
11403
  };
10539
11404
  };
10540
11405
  422: components["responses"]["ProtonErrorResponse"];
@@ -11267,8 +12132,9 @@ export interface operations {
11267
12132
  "get_drive-v2-shares-invitations": {
11268
12133
  parameters: {
11269
12134
  query?: {
11270
- AnchorID?: components["schemas"]["Id"] | null;
11271
- PageSize?: number;
12135
+ AnchorID?: components["schemas"]["ListPendingInvitationQueryParameters"]["AnchorID"];
12136
+ PageSize?: components["schemas"]["ListPendingInvitationQueryParameters"]["PageSize"];
12137
+ ShareTargetTypes?: components["schemas"]["ListPendingInvitationQueryParameters"]["ShareTargetTypes"];
11272
12138
  };
11273
12139
  header?: never;
11274
12140
  path?: never;
@@ -11834,6 +12700,16 @@ export interface operations {
11834
12700
  "application/json": components["schemas"]["SuccessfulResponse"];
11835
12701
  };
11836
12702
  };
12703
+ /** @description Accepted */
12704
+ 202: {
12705
+ headers: {
12706
+ "x-pm-code": 1002;
12707
+ [name: string]: unknown;
12708
+ };
12709
+ content: {
12710
+ "application/json": components["schemas"]["AcceptedResponse"];
12711
+ };
12712
+ };
11837
12713
  422: components["responses"]["ProtonErrorResponse"];
11838
12714
  };
11839
12715
  };