immichpy 1.6.5__py3-none-any.whl → 1.7.5__py3-none-any.whl

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 (435) hide show
  1. immichpy/cli/commands/activities.py +23 -11
  2. immichpy/cli/commands/albums.py +34 -20
  3. immichpy/cli/commands/api_keys.py +6 -4
  4. immichpy/cli/commands/assets.py +274 -65
  5. immichpy/cli/commands/authentication.py +115 -25
  6. immichpy/cli/commands/database_backups_admin.py +111 -0
  7. immichpy/cli/commands/download.py +13 -5
  8. immichpy/cli/commands/duplicates.py +1 -1
  9. immichpy/cli/commands/faces.py +17 -11
  10. immichpy/cli/commands/jobs.py +6 -4
  11. immichpy/cli/commands/libraries.py +15 -9
  12. immichpy/cli/commands/maintenance_admin.py +39 -2
  13. immichpy/cli/commands/map.py +8 -8
  14. immichpy/cli/commands/memories.py +35 -21
  15. immichpy/cli/commands/notifications.py +16 -8
  16. immichpy/cli/commands/notifications_admin.py +43 -17
  17. immichpy/cli/commands/partners.py +9 -3
  18. immichpy/cli/commands/people.py +30 -24
  19. immichpy/cli/commands/plugins.py +14 -0
  20. immichpy/cli/commands/queues.py +8 -6
  21. immichpy/cli/commands/search.py +395 -189
  22. immichpy/cli/commands/server.py +6 -2
  23. immichpy/cli/commands/sessions.py +6 -4
  24. immichpy/cli/commands/shared_links.py +42 -25
  25. immichpy/cli/commands/stacks.py +4 -4
  26. immichpy/cli/commands/sync.py +26 -10
  27. immichpy/cli/commands/system_config.py +216 -115
  28. immichpy/cli/commands/system_metadata.py +3 -1
  29. immichpy/cli/commands/tags.py +9 -9
  30. immichpy/cli/commands/trash.py +1 -1
  31. immichpy/cli/commands/users.py +57 -29
  32. immichpy/cli/commands/users_admin.py +79 -45
  33. immichpy/cli/commands/workflows.py +40 -11
  34. immichpy/cli/main.py +8 -0
  35. immichpy/client/.openapi-generator/FILES +26 -2
  36. immichpy/client/generated/__init__.py +101 -7
  37. immichpy/client/generated/api/__init__.py +3 -0
  38. immichpy/client/generated/api/activities_api.py +73 -43
  39. immichpy/client/generated/api/albums_api.py +40 -19
  40. immichpy/client/generated/api/api_keys_api.py +1 -1
  41. immichpy/client/generated/api/assets_api.py +1768 -366
  42. immichpy/client/generated/api/authentication_admin_api.py +1 -1
  43. immichpy/client/generated/api/authentication_api.py +1 -1
  44. immichpy/client/generated/api/database_backups_admin_api.py +1224 -0
  45. immichpy/client/generated/api/deprecated_api.py +103 -73
  46. immichpy/client/generated/api/download_api.py +1 -1
  47. immichpy/client/generated/api/duplicates_api.py +1 -1
  48. immichpy/client/generated/api/faces_api.py +7 -7
  49. immichpy/client/generated/api/jobs_api.py +7 -7
  50. immichpy/client/generated/api/libraries_api.py +1 -1
  51. immichpy/client/generated/api/maintenance_admin_api.py +459 -1
  52. immichpy/client/generated/api/map_api.py +103 -49
  53. immichpy/client/generated/api/memories_api.py +109 -61
  54. immichpy/client/generated/api/notifications_admin_api.py +1 -1
  55. immichpy/client/generated/api/notifications_api.py +52 -25
  56. immichpy/client/generated/api/partners_api.py +7 -7
  57. immichpy/client/generated/api/people_api.py +37 -19
  58. immichpy/client/generated/api/plugins_api.py +230 -1
  59. immichpy/client/generated/api/queues_api.py +37 -31
  60. immichpy/client/generated/api/search_api.py +529 -283
  61. immichpy/client/generated/api/server_api.py +1 -1
  62. immichpy/client/generated/api/sessions_api.py +1 -1
  63. immichpy/client/generated/api/shared_links_api.py +53 -19
  64. immichpy/client/generated/api/stacks_api.py +13 -7
  65. immichpy/client/generated/api/sync_api.py +1 -1
  66. immichpy/client/generated/api/system_config_api.py +1 -1
  67. immichpy/client/generated/api/system_metadata_api.py +1 -1
  68. immichpy/client/generated/api/tags_api.py +1 -1
  69. immichpy/client/generated/api/timeline_api.py +1 -1
  70. immichpy/client/generated/api/trash_api.py +1 -1
  71. immichpy/client/generated/api/users_admin_api.py +55 -31
  72. immichpy/client/generated/api/users_api.py +16 -7
  73. immichpy/client/generated/api/views_api.py +1 -1
  74. immichpy/client/generated/api/workflows_api.py +1 -1
  75. immichpy/client/generated/api_client.py +1 -1
  76. immichpy/client/generated/configuration.py +2 -2
  77. immichpy/client/generated/exceptions.py +1 -1
  78. immichpy/client/generated/models/__init__.py +56 -3
  79. immichpy/client/generated/models/activity_create_dto.py +11 -5
  80. immichpy/client/generated/models/activity_response_dto.py +10 -6
  81. immichpy/client/generated/models/activity_statistics_response_dto.py +4 -4
  82. immichpy/client/generated/models/add_users_dto.py +2 -2
  83. immichpy/client/generated/models/admin_onboarding_update_dto.py +4 -2
  84. immichpy/client/generated/models/album_response_dto.py +28 -16
  85. immichpy/client/generated/models/album_statistics_response_dto.py +6 -4
  86. immichpy/client/generated/models/album_user_add_dto.py +3 -3
  87. immichpy/client/generated/models/album_user_create_dto.py +3 -3
  88. immichpy/client/generated/models/album_user_response_dto.py +3 -3
  89. immichpy/client/generated/models/album_user_role.py +2 -2
  90. immichpy/client/generated/models/albums_add_assets_dto.py +3 -3
  91. immichpy/client/generated/models/albums_add_assets_response_dto.py +4 -4
  92. immichpy/client/generated/models/albums_response.py +4 -2
  93. immichpy/client/generated/models/albums_update.py +5 -3
  94. immichpy/client/generated/models/api_key_create_dto.py +5 -3
  95. immichpy/client/generated/models/api_key_create_response_dto.py +2 -2
  96. immichpy/client/generated/models/api_key_response_dto.py +6 -6
  97. immichpy/client/generated/models/api_key_update_dto.py +5 -3
  98. immichpy/client/generated/models/asset_bulk_delete_dto.py +6 -4
  99. immichpy/client/generated/models/asset_bulk_update_dto.py +28 -12
  100. immichpy/client/generated/models/asset_bulk_upload_check_dto.py +3 -3
  101. immichpy/client/generated/models/asset_bulk_upload_check_item.py +3 -3
  102. immichpy/client/generated/models/asset_bulk_upload_check_response_dto.py +5 -3
  103. immichpy/client/generated/models/asset_bulk_upload_check_result.py +12 -6
  104. immichpy/client/generated/models/asset_copy_dto.py +16 -8
  105. immichpy/client/generated/models/asset_delta_sync_dto.py +5 -3
  106. immichpy/client/generated/models/asset_delta_sync_response_dto.py +6 -4
  107. immichpy/client/generated/models/asset_edit_action.py +35 -0
  108. immichpy/client/generated/models/asset_edit_action_crop.py +95 -0
  109. immichpy/client/generated/models/asset_edit_action_list_dto.py +104 -0
  110. immichpy/client/generated/models/asset_edit_action_list_dto_edits_inner.py +188 -0
  111. immichpy/client/generated/models/asset_edit_action_mirror.py +95 -0
  112. immichpy/client/generated/models/asset_edit_action_rotate.py +95 -0
  113. immichpy/client/generated/models/asset_edits_dto.py +107 -0
  114. immichpy/client/generated/models/asset_face_create_dto.py +13 -9
  115. immichpy/client/generated/models/asset_face_delete_dto.py +3 -3
  116. immichpy/client/generated/models/asset_face_response_dto.py +26 -10
  117. immichpy/client/generated/models/asset_face_update_dto.py +3 -3
  118. immichpy/client/generated/models/asset_face_update_item.py +3 -3
  119. immichpy/client/generated/models/asset_face_without_person_response_dto.py +23 -9
  120. immichpy/client/generated/models/asset_full_sync_dto.py +13 -5
  121. immichpy/client/generated/models/asset_ids_dto.py +2 -2
  122. immichpy/client/generated/models/asset_ids_response_dto.py +6 -4
  123. immichpy/client/generated/models/asset_job_name.py +2 -2
  124. immichpy/client/generated/models/asset_jobs_dto.py +3 -3
  125. immichpy/client/generated/models/asset_media_response_dto.py +4 -4
  126. immichpy/client/generated/models/asset_media_size.py +2 -1
  127. immichpy/client/generated/models/asset_media_status.py +2 -2
  128. immichpy/client/generated/models/asset_metadata_bulk_delete_dto.py +103 -0
  129. immichpy/client/generated/models/asset_metadata_bulk_delete_item_dto.py +86 -0
  130. immichpy/client/generated/models/asset_metadata_bulk_response_dto.py +93 -0
  131. immichpy/client/generated/models/asset_metadata_bulk_upsert_dto.py +103 -0
  132. immichpy/client/generated/models/asset_metadata_bulk_upsert_item_dto.py +91 -0
  133. immichpy/client/generated/models/asset_metadata_response_dto.py +5 -6
  134. immichpy/client/generated/models/asset_metadata_upsert_dto.py +5 -3
  135. immichpy/client/generated/models/asset_metadata_upsert_item_dto.py +4 -5
  136. immichpy/client/generated/models/asset_ocr_response_dto.py +1 -1
  137. immichpy/client/generated/models/asset_order.py +2 -2
  138. immichpy/client/generated/models/asset_response_dto.py +66 -24
  139. immichpy/client/generated/models/asset_stack_response_dto.py +8 -4
  140. immichpy/client/generated/models/asset_stats_response_dto.py +5 -5
  141. immichpy/client/generated/models/asset_type_enum.py +2 -2
  142. immichpy/client/generated/models/asset_visibility.py +2 -2
  143. immichpy/client/generated/models/audio_codec.py +2 -2
  144. immichpy/client/generated/models/auth_status_response_dto.py +12 -6
  145. immichpy/client/generated/models/avatar_update.py +3 -3
  146. immichpy/client/generated/models/bulk_id_error_reason.py +2 -2
  147. immichpy/client/generated/models/bulk_id_response_dto.py +14 -5
  148. immichpy/client/generated/models/bulk_ids_dto.py +3 -3
  149. immichpy/client/generated/models/cast_response.py +4 -2
  150. immichpy/client/generated/models/cast_update.py +4 -2
  151. immichpy/client/generated/models/change_password_dto.py +6 -4
  152. immichpy/client/generated/models/check_existing_assets_dto.py +3 -3
  153. immichpy/client/generated/models/check_existing_assets_response_dto.py +4 -2
  154. immichpy/client/generated/models/clip_config.py +5 -3
  155. immichpy/client/generated/models/colorspace.py +1 -1
  156. immichpy/client/generated/models/contributor_count_response_dto.py +5 -3
  157. immichpy/client/generated/models/cq_mode.py +2 -2
  158. immichpy/client/generated/models/create_album_dto.py +9 -5
  159. immichpy/client/generated/models/create_library_dto.py +9 -5
  160. immichpy/client/generated/models/create_profile_image_response_dto.py +8 -4
  161. immichpy/client/generated/models/crop_parameters.py +105 -0
  162. immichpy/client/generated/models/database_backup_config.py +6 -4
  163. immichpy/client/generated/models/database_backup_delete_dto.py +82 -0
  164. immichpy/client/generated/models/database_backup_dto.py +85 -0
  165. immichpy/client/generated/models/database_backup_list_response_dto.py +98 -0
  166. immichpy/client/generated/models/download_archive_info.py +5 -3
  167. immichpy/client/generated/models/download_info_dto.py +11 -5
  168. immichpy/client/generated/models/download_response.py +8 -3
  169. immichpy/client/generated/models/download_response_dto.py +3 -3
  170. immichpy/client/generated/models/download_update.py +5 -3
  171. immichpy/client/generated/models/duplicate_detection_config.py +6 -3
  172. immichpy/client/generated/models/duplicate_response_dto.py +5 -3
  173. immichpy/client/generated/models/email_notifications_response.py +10 -4
  174. immichpy/client/generated/models/email_notifications_update.py +14 -4
  175. immichpy/client/generated/models/exif_response_dto.py +47 -23
  176. immichpy/client/generated/models/face_dto.py +3 -3
  177. immichpy/client/generated/models/facial_recognition_config.py +15 -6
  178. immichpy/client/generated/models/folders_response.py +5 -3
  179. immichpy/client/generated/models/folders_update.py +9 -3
  180. immichpy/client/generated/models/image_format.py +2 -2
  181. immichpy/client/generated/models/job_create_dto.py +3 -3
  182. immichpy/client/generated/models/job_name.py +3 -2
  183. immichpy/client/generated/models/job_settings_dto.py +4 -2
  184. immichpy/client/generated/models/library_response_dto.py +16 -10
  185. immichpy/client/generated/models/library_stats_response_dto.py +6 -6
  186. immichpy/client/generated/models/license_key_dto.py +7 -3
  187. immichpy/client/generated/models/license_response_dto.py +8 -4
  188. immichpy/client/generated/models/log_level.py +1 -1
  189. immichpy/client/generated/models/login_credential_dto.py +4 -4
  190. immichpy/client/generated/models/login_response_dto.py +13 -9
  191. immichpy/client/generated/models/logout_response_dto.py +3 -3
  192. immichpy/client/generated/models/machine_learning_availability_checks_dto.py +3 -3
  193. immichpy/client/generated/models/maintenance_action.py +4 -2
  194. immichpy/client/generated/models/maintenance_auth_dto.py +3 -3
  195. immichpy/client/generated/models/maintenance_detect_install_response_dto.py +101 -0
  196. immichpy/client/generated/models/maintenance_detect_install_storage_folder_dto.py +95 -0
  197. immichpy/client/generated/models/maintenance_login_dto.py +3 -3
  198. immichpy/client/generated/models/maintenance_status_response_dto.py +109 -0
  199. immichpy/client/generated/models/manual_job_name.py +2 -2
  200. immichpy/client/generated/models/map_marker_response_dto.py +8 -8
  201. immichpy/client/generated/models/map_reverse_geocode_response_dto.py +5 -5
  202. immichpy/client/generated/models/memories_response.py +4 -4
  203. immichpy/client/generated/models/memories_update.py +7 -3
  204. immichpy/client/generated/models/memory_create_dto.py +12 -6
  205. immichpy/client/generated/models/memory_response_dto.py +20 -12
  206. immichpy/client/generated/models/memory_search_order.py +1 -1
  207. immichpy/client/generated/models/memory_statistics_response_dto.py +3 -3
  208. immichpy/client/generated/models/memory_type.py +1 -1
  209. immichpy/client/generated/models/memory_update_dto.py +10 -4
  210. immichpy/client/generated/models/merge_person_dto.py +3 -3
  211. immichpy/client/generated/models/metadata_search_dto.py +124 -46
  212. immichpy/client/generated/models/{asset_metadata_key.py → mirror_axis.py} +6 -5
  213. immichpy/client/generated/models/mirror_parameters.py +83 -0
  214. immichpy/client/generated/models/notification_create_dto.py +18 -8
  215. immichpy/client/generated/models/notification_delete_all_dto.py +3 -3
  216. immichpy/client/generated/models/notification_dto.py +15 -9
  217. immichpy/client/generated/models/notification_level.py +1 -1
  218. immichpy/client/generated/models/notification_type.py +1 -1
  219. immichpy/client/generated/models/notification_update_all_dto.py +5 -3
  220. immichpy/client/generated/models/notification_update_dto.py +4 -2
  221. immichpy/client/generated/models/o_auth_authorize_response_dto.py +3 -3
  222. immichpy/client/generated/models/o_auth_callback_dto.py +8 -4
  223. immichpy/client/generated/models/o_auth_config_dto.py +10 -4
  224. immichpy/client/generated/models/o_auth_token_endpoint_auth_method.py +2 -2
  225. immichpy/client/generated/models/ocr_config.py +14 -6
  226. immichpy/client/generated/models/on_this_day_dto.py +2 -2
  227. immichpy/client/generated/models/onboarding_dto.py +4 -2
  228. immichpy/client/generated/models/onboarding_response_dto.py +4 -2
  229. immichpy/client/generated/models/partner_create_dto.py +4 -2
  230. immichpy/client/generated/models/partner_direction.py +1 -1
  231. immichpy/client/generated/models/partner_response_dto.py +16 -8
  232. immichpy/client/generated/models/partner_update_dto.py +4 -2
  233. immichpy/client/generated/models/people_response.py +5 -3
  234. immichpy/client/generated/models/people_response_dto.py +7 -5
  235. immichpy/client/generated/models/people_update.py +9 -3
  236. immichpy/client/generated/models/people_update_dto.py +3 -3
  237. immichpy/client/generated/models/people_update_item.py +10 -10
  238. immichpy/client/generated/models/permission.py +13 -2
  239. immichpy/client/generated/models/person_create_dto.py +8 -8
  240. immichpy/client/generated/models/person_response_dto.py +17 -9
  241. immichpy/client/generated/models/person_statistics_response_dto.py +3 -3
  242. immichpy/client/generated/models/person_update_dto.py +9 -9
  243. immichpy/client/generated/models/person_with_faces_response_dto.py +20 -10
  244. immichpy/client/generated/models/pin_code_change_dto.py +10 -4
  245. immichpy/client/generated/models/pin_code_reset_dto.py +7 -3
  246. immichpy/client/generated/models/pin_code_setup_dto.py +2 -2
  247. immichpy/client/generated/models/places_response_dto.py +11 -7
  248. immichpy/client/generated/models/plugin_action_response_dto.py +13 -9
  249. immichpy/client/generated/models/{plugin_context.py → plugin_context_type.py} +4 -4
  250. immichpy/client/generated/models/plugin_filter_response_dto.py +13 -9
  251. immichpy/client/generated/models/plugin_response_dto.py +11 -11
  252. immichpy/client/generated/models/plugin_trigger_response_dto.py +89 -0
  253. immichpy/client/generated/models/plugin_trigger_type.py +2 -2
  254. immichpy/client/generated/models/purchase_response.py +7 -3
  255. immichpy/client/generated/models/purchase_update.py +7 -3
  256. immichpy/client/generated/models/queue_command.py +2 -2
  257. immichpy/client/generated/models/queue_command_dto.py +6 -4
  258. immichpy/client/generated/models/queue_delete_dto.py +1 -1
  259. immichpy/client/generated/models/queue_job_response_dto.py +6 -6
  260. immichpy/client/generated/models/queue_job_status.py +1 -1
  261. immichpy/client/generated/models/queue_name.py +2 -1
  262. immichpy/client/generated/models/queue_response_dto.py +5 -3
  263. immichpy/client/generated/models/queue_response_legacy_dto.py +1 -1
  264. immichpy/client/generated/models/queue_statistics_dto.py +8 -8
  265. immichpy/client/generated/models/queue_status_legacy_dto.py +8 -3
  266. immichpy/client/generated/models/queue_update_dto.py +4 -2
  267. immichpy/client/generated/models/queues_response_legacy_dto.py +9 -1
  268. immichpy/client/generated/models/random_search_dto.py +96 -34
  269. immichpy/client/generated/models/ratings_response.py +3 -3
  270. immichpy/client/generated/models/ratings_update.py +5 -3
  271. immichpy/client/generated/models/reaction_level.py +1 -1
  272. immichpy/client/generated/models/reaction_type.py +1 -1
  273. immichpy/client/generated/models/reverse_geocoding_state_response_dto.py +7 -3
  274. immichpy/client/generated/models/rotate_parameters.py +84 -0
  275. immichpy/client/generated/models/search_album_response_dto.py +4 -4
  276. immichpy/client/generated/models/search_asset_response_dto.py +6 -4
  277. immichpy/client/generated/models/search_explore_item.py +3 -3
  278. immichpy/client/generated/models/search_explore_response_dto.py +2 -2
  279. immichpy/client/generated/models/search_facet_count_response_dto.py +4 -4
  280. immichpy/client/generated/models/search_facet_response_dto.py +3 -3
  281. immichpy/client/generated/models/search_response_dto.py +1 -1
  282. immichpy/client/generated/models/search_statistics_response_dto.py +3 -3
  283. immichpy/client/generated/models/search_suggestion_type.py +1 -1
  284. immichpy/client/generated/models/server_about_response_dto.py +46 -22
  285. immichpy/client/generated/models/server_apk_links_dto.py +12 -6
  286. immichpy/client/generated/models/server_config_dto.py +36 -12
  287. immichpy/client/generated/models/server_features_dto.py +32 -16
  288. immichpy/client/generated/models/server_media_types_response_dto.py +5 -5
  289. immichpy/client/generated/models/server_ping_response.py +1 -1
  290. immichpy/client/generated/models/server_stats_response_dto.py +10 -6
  291. immichpy/client/generated/models/server_storage_response_dto.py +21 -8
  292. immichpy/client/generated/models/server_theme_dto.py +4 -2
  293. immichpy/client/generated/models/server_version_history_response_dto.py +6 -4
  294. immichpy/client/generated/models/server_version_response_dto.py +5 -5
  295. immichpy/client/generated/models/session_create_dto.py +8 -4
  296. immichpy/client/generated/models/session_create_response_dto.py +17 -11
  297. immichpy/client/generated/models/session_response_dto.py +16 -10
  298. immichpy/client/generated/models/session_unlock_dto.py +7 -3
  299. immichpy/client/generated/models/session_update_dto.py +2 -2
  300. immichpy/client/generated/models/set_maintenance_mode_dto.py +17 -7
  301. immichpy/client/generated/models/shared_link_create_dto.py +25 -11
  302. immichpy/client/generated/models/shared_link_edit_dto.py +19 -9
  303. immichpy/client/generated/models/shared_link_response_dto.py +18 -14
  304. immichpy/client/generated/models/shared_link_type.py +2 -2
  305. immichpy/client/generated/models/shared_links_response.py +5 -3
  306. immichpy/client/generated/models/shared_links_update.py +9 -3
  307. immichpy/client/generated/models/sign_up_dto.py +5 -5
  308. immichpy/client/generated/models/smart_search_dto.py +102 -36
  309. immichpy/client/generated/models/source_type.py +2 -2
  310. immichpy/client/generated/models/stack_create_dto.py +2 -2
  311. immichpy/client/generated/models/stack_response_dto.py +6 -4
  312. immichpy/client/generated/models/stack_update_dto.py +4 -2
  313. immichpy/client/generated/models/statistics_search_dto.py +86 -30
  314. immichpy/client/generated/models/storage_folder.py +38 -0
  315. immichpy/client/generated/models/sync_ack_delete_dto.py +5 -3
  316. immichpy/client/generated/models/sync_ack_dto.py +4 -4
  317. immichpy/client/generated/models/sync_ack_set_dto.py +4 -2
  318. immichpy/client/generated/models/sync_album_delete_v1.py +2 -2
  319. immichpy/client/generated/models/sync_album_to_asset_delete_v1.py +3 -3
  320. immichpy/client/generated/models/sync_album_to_asset_v1.py +3 -3
  321. immichpy/client/generated/models/sync_album_user_delete_v1.py +3 -3
  322. immichpy/client/generated/models/sync_album_user_v1.py +4 -4
  323. immichpy/client/generated/models/sync_album_v1.py +13 -9
  324. immichpy/client/generated/models/sync_asset_delete_v1.py +2 -2
  325. immichpy/client/generated/models/sync_asset_exif_v1.py +46 -26
  326. immichpy/client/generated/models/sync_asset_face_delete_v1.py +2 -2
  327. immichpy/client/generated/models/sync_asset_face_v1.py +5 -5
  328. immichpy/client/generated/models/sync_asset_metadata_delete_v1.py +3 -4
  329. immichpy/client/generated/models/sync_asset_metadata_v1.py +4 -5
  330. immichpy/client/generated/models/sync_asset_v1.py +47 -18
  331. immichpy/client/generated/models/sync_auth_user_v1.py +22 -12
  332. immichpy/client/generated/models/sync_entity_type.py +2 -2
  333. immichpy/client/generated/models/sync_memory_asset_delete_v1.py +3 -3
  334. immichpy/client/generated/models/sync_memory_asset_v1.py +3 -3
  335. immichpy/client/generated/models/sync_memory_delete_v1.py +2 -2
  336. immichpy/client/generated/models/sync_memory_v1.py +13 -13
  337. immichpy/client/generated/models/sync_partner_delete_v1.py +5 -3
  338. immichpy/client/generated/models/sync_partner_v1.py +6 -4
  339. immichpy/client/generated/models/sync_person_delete_v1.py +2 -2
  340. immichpy/client/generated/models/sync_person_v1.py +13 -11
  341. immichpy/client/generated/models/sync_request_type.py +2 -2
  342. immichpy/client/generated/models/sync_stack_delete_v1.py +2 -2
  343. immichpy/client/generated/models/sync_stack_v1.py +8 -6
  344. immichpy/client/generated/models/sync_stream_dto.py +4 -4
  345. immichpy/client/generated/models/sync_user_delete_v1.py +2 -2
  346. immichpy/client/generated/models/sync_user_metadata_delete_v1.py +3 -3
  347. immichpy/client/generated/models/sync_user_metadata_v1.py +4 -4
  348. immichpy/client/generated/models/sync_user_v1.py +16 -8
  349. immichpy/client/generated/models/system_config_backups_dto.py +1 -1
  350. immichpy/client/generated/models/system_config_dto.py +1 -1
  351. immichpy/client/generated/models/system_config_f_fmpeg_dto.py +44 -22
  352. immichpy/client/generated/models/system_config_faces_dto.py +2 -2
  353. immichpy/client/generated/models/system_config_generated_fullsize_image_dto.py +13 -7
  354. immichpy/client/generated/models/system_config_generated_image_dto.py +14 -8
  355. immichpy/client/generated/models/system_config_image_dto.py +5 -3
  356. immichpy/client/generated/models/system_config_job_dto.py +9 -1
  357. immichpy/client/generated/models/system_config_library_dto.py +1 -1
  358. immichpy/client/generated/models/system_config_library_scan_dto.py +2 -2
  359. immichpy/client/generated/models/system_config_library_watch_dto.py +3 -3
  360. immichpy/client/generated/models/system_config_logging_dto.py +3 -3
  361. immichpy/client/generated/models/system_config_machine_learning_dto.py +2 -2
  362. immichpy/client/generated/models/system_config_map_dto.py +2 -2
  363. immichpy/client/generated/models/system_config_metadata_dto.py +1 -1
  364. immichpy/client/generated/models/system_config_new_version_check_dto.py +3 -3
  365. immichpy/client/generated/models/system_config_nightly_tasks_dto.py +16 -6
  366. immichpy/client/generated/models/system_config_notifications_dto.py +1 -1
  367. immichpy/client/generated/models/system_config_o_auth_dto.py +28 -18
  368. immichpy/client/generated/models/system_config_password_login_dto.py +3 -3
  369. immichpy/client/generated/models/system_config_reverse_geocoding_dto.py +3 -3
  370. immichpy/client/generated/models/system_config_server_dto.py +8 -4
  371. immichpy/client/generated/models/system_config_smtp_dto.py +8 -4
  372. immichpy/client/generated/models/system_config_smtp_transport_dto.py +9 -7
  373. immichpy/client/generated/models/system_config_storage_template_dto.py +6 -4
  374. immichpy/client/generated/models/system_config_template_emails_dto.py +1 -1
  375. immichpy/client/generated/models/system_config_template_storage_option_dto.py +32 -9
  376. immichpy/client/generated/models/system_config_templates_dto.py +1 -1
  377. immichpy/client/generated/models/system_config_theme_dto.py +4 -2
  378. immichpy/client/generated/models/system_config_trash_dto.py +3 -3
  379. immichpy/client/generated/models/system_config_user_dto.py +4 -2
  380. immichpy/client/generated/models/tag_bulk_assets_dto.py +3 -3
  381. immichpy/client/generated/models/tag_bulk_assets_response_dto.py +3 -3
  382. immichpy/client/generated/models/tag_create_dto.py +8 -4
  383. immichpy/client/generated/models/tag_response_dto.py +10 -8
  384. immichpy/client/generated/models/tag_update_dto.py +3 -3
  385. immichpy/client/generated/models/tag_upsert_dto.py +3 -3
  386. immichpy/client/generated/models/tags_response.py +5 -3
  387. immichpy/client/generated/models/tags_update.py +9 -3
  388. immichpy/client/generated/models/template_dto.py +3 -3
  389. immichpy/client/generated/models/template_response_dto.py +4 -4
  390. immichpy/client/generated/models/test_email_response_dto.py +2 -2
  391. immichpy/client/generated/models/time_bucket_asset_response_dto.py +2 -3
  392. immichpy/client/generated/models/time_buckets_response_dto.py +1 -1
  393. immichpy/client/generated/models/tone_mapping.py +2 -2
  394. immichpy/client/generated/models/transcode_hw_accel.py +2 -2
  395. immichpy/client/generated/models/transcode_policy.py +2 -2
  396. immichpy/client/generated/models/trash_response_dto.py +3 -3
  397. immichpy/client/generated/models/update_album_dto.py +12 -6
  398. immichpy/client/generated/models/update_album_user_dto.py +3 -3
  399. immichpy/client/generated/models/update_asset_dto.py +21 -9
  400. immichpy/client/generated/models/update_library_dto.py +8 -4
  401. immichpy/client/generated/models/usage_by_user_dto.py +16 -9
  402. immichpy/client/generated/models/user_admin_create_dto.py +20 -10
  403. immichpy/client/generated/models/user_admin_delete_dto.py +5 -3
  404. immichpy/client/generated/models/user_admin_response_dto.py +35 -18
  405. immichpy/client/generated/models/user_admin_update_dto.py +20 -10
  406. immichpy/client/generated/models/user_avatar_color.py +2 -2
  407. immichpy/client/generated/models/user_license.py +6 -4
  408. immichpy/client/generated/models/user_metadata_key.py +2 -2
  409. immichpy/client/generated/models/user_preferences_response_dto.py +1 -1
  410. immichpy/client/generated/models/user_preferences_update_dto.py +1 -1
  411. immichpy/client/generated/models/user_response_dto.py +13 -7
  412. immichpy/client/generated/models/user_status.py +2 -2
  413. immichpy/client/generated/models/user_update_me_dto.py +10 -5
  414. immichpy/client/generated/models/validate_access_token_response_dto.py +4 -2
  415. immichpy/client/generated/models/validate_library_dto.py +9 -3
  416. immichpy/client/generated/models/validate_library_import_path_response_dto.py +4 -4
  417. immichpy/client/generated/models/validate_library_response_dto.py +4 -2
  418. immichpy/client/generated/models/version_check_state_response_dto.py +7 -3
  419. immichpy/client/generated/models/video_codec.py +2 -2
  420. immichpy/client/generated/models/video_container.py +2 -2
  421. immichpy/client/generated/models/workflow_action_item_dto.py +7 -3
  422. immichpy/client/generated/models/workflow_action_response_dto.py +10 -6
  423. immichpy/client/generated/models/workflow_create_dto.py +11 -7
  424. immichpy/client/generated/models/workflow_filter_item_dto.py +7 -3
  425. immichpy/client/generated/models/workflow_filter_response_dto.py +10 -6
  426. immichpy/client/generated/models/workflow_response_dto.py +14 -27
  427. immichpy/client/generated/models/workflow_update_dto.py +19 -7
  428. immichpy/client/generated/rest.py +1 -1
  429. immichpy/client/main.py +4 -1
  430. {immichpy-1.6.5.dist-info → immichpy-1.7.5.dist-info}/METADATA +1 -3
  431. immichpy-1.7.5.dist-info/RECORD +464 -0
  432. immichpy-1.6.5.dist-info/RECORD +0 -439
  433. {immichpy-1.6.5.dist-info → immichpy-1.7.5.dist-info}/WHEEL +0 -0
  434. {immichpy-1.6.5.dist-info → immichpy-1.7.5.dist-info}/entry_points.txt +0 -0
  435. {immichpy-1.6.5.dist-info → immichpy-1.7.5.dist-info}/licenses/LICENSE +0 -0
@@ -5,7 +5,7 @@ Immich
5
5
 
6
6
  Immich API
7
7
 
8
- The version of the OpenAPI document: 2.4.1
8
+ The version of the OpenAPI document: 2.5.2
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
@@ -28,12 +28,24 @@ from immichpy.client.generated.models.asset_bulk_upload_check_response_dto impor
28
28
  AssetBulkUploadCheckResponseDto,
29
29
  )
30
30
  from immichpy.client.generated.models.asset_copy_dto import AssetCopyDto
31
+ from immichpy.client.generated.models.asset_edit_action_list_dto import (
32
+ AssetEditActionListDto,
33
+ )
34
+ from immichpy.client.generated.models.asset_edits_dto import AssetEditsDto
31
35
  from immichpy.client.generated.models.asset_jobs_dto import AssetJobsDto
32
36
  from immichpy.client.generated.models.asset_media_response_dto import (
33
37
  AssetMediaResponseDto,
34
38
  )
35
39
  from immichpy.client.generated.models.asset_media_size import AssetMediaSize
36
- from immichpy.client.generated.models.asset_metadata_key import AssetMetadataKey
40
+ from immichpy.client.generated.models.asset_metadata_bulk_delete_dto import (
41
+ AssetMetadataBulkDeleteDto,
42
+ )
43
+ from immichpy.client.generated.models.asset_metadata_bulk_response_dto import (
44
+ AssetMetadataBulkResponseDto,
45
+ )
46
+ from immichpy.client.generated.models.asset_metadata_bulk_upsert_dto import (
47
+ AssetMetadataBulkUpsertDto,
48
+ )
37
49
  from immichpy.client.generated.models.asset_metadata_response_dto import (
38
50
  AssetMetadataResponseDto,
39
51
  )
@@ -824,8 +836,8 @@ class AssetsApi:
824
836
  @validate_call
825
837
  async def delete_asset_metadata(
826
838
  self,
827
- id: UUID,
828
- key: AssetMetadataKey,
839
+ id: Annotated[UUID, Field(description="Asset ID")],
840
+ key: Annotated[StrictStr, Field(description="Metadata key")],
829
841
  _request_timeout: Union[
830
842
  None,
831
843
  Annotated[StrictFloat, Field(gt=0)],
@@ -842,10 +854,10 @@ class AssetsApi:
842
854
 
843
855
  Delete a specific metadata key-value pair associated with the specified asset.
844
856
 
845
- :param id: (required)
857
+ :param id: Asset ID (required)
846
858
  :type id: UUID
847
- :param key: (required)
848
- :type key: AssetMetadataKey
859
+ :param key: Metadata key (required)
860
+ :type key: str
849
861
  :param _request_timeout: timeout setting for this request. If one
850
862
  number provided, it will be total request
851
863
  timeout. It can also be a pair (tuple) of
@@ -892,8 +904,8 @@ class AssetsApi:
892
904
  @validate_call
893
905
  async def delete_asset_metadata_with_http_info(
894
906
  self,
895
- id: UUID,
896
- key: AssetMetadataKey,
907
+ id: Annotated[UUID, Field(description="Asset ID")],
908
+ key: Annotated[StrictStr, Field(description="Metadata key")],
897
909
  _request_timeout: Union[
898
910
  None,
899
911
  Annotated[StrictFloat, Field(gt=0)],
@@ -910,10 +922,10 @@ class AssetsApi:
910
922
 
911
923
  Delete a specific metadata key-value pair associated with the specified asset.
912
924
 
913
- :param id: (required)
925
+ :param id: Asset ID (required)
914
926
  :type id: UUID
915
- :param key: (required)
916
- :type key: AssetMetadataKey
927
+ :param key: Metadata key (required)
928
+ :type key: str
917
929
  :param _request_timeout: timeout setting for this request. If one
918
930
  number provided, it will be total request
919
931
  timeout. It can also be a pair (tuple) of
@@ -960,8 +972,8 @@ class AssetsApi:
960
972
  @validate_call
961
973
  async def delete_asset_metadata_without_preload_content(
962
974
  self,
963
- id: UUID,
964
- key: AssetMetadataKey,
975
+ id: Annotated[UUID, Field(description="Asset ID")],
976
+ key: Annotated[StrictStr, Field(description="Metadata key")],
965
977
  _request_timeout: Union[
966
978
  None,
967
979
  Annotated[StrictFloat, Field(gt=0)],
@@ -978,10 +990,10 @@ class AssetsApi:
978
990
 
979
991
  Delete a specific metadata key-value pair associated with the specified asset.
980
992
 
981
- :param id: (required)
993
+ :param id: Asset ID (required)
982
994
  :type id: UUID
983
- :param key: (required)
984
- :type key: AssetMetadataKey
995
+ :param key: Metadata key (required)
996
+ :type key: str
985
997
  :param _request_timeout: timeout setting for this request. If one
986
998
  number provided, it will be total request
987
999
  timeout. It can also be a pair (tuple) of
@@ -1047,7 +1059,7 @@ class AssetsApi:
1047
1059
  if id is not None:
1048
1060
  _path_params["id"] = id
1049
1061
  if key is not None:
1050
- _path_params["key"] = key.value
1062
+ _path_params["key"] = key
1051
1063
  # process the query parameters
1052
1064
  # process the header parameters
1053
1065
  # process the form parameters
@@ -1317,11 +1329,9 @@ class AssetsApi:
1317
1329
  )
1318
1330
 
1319
1331
  @validate_call
1320
- async def download_asset(
1332
+ async def delete_bulk_asset_metadata(
1321
1333
  self,
1322
- id: UUID,
1323
- key: Optional[StrictStr] = None,
1324
- slug: Optional[StrictStr] = None,
1334
+ asset_metadata_bulk_delete_dto: AssetMetadataBulkDeleteDto,
1325
1335
  _request_timeout: Union[
1326
1336
  None,
1327
1337
  Annotated[StrictFloat, Field(gt=0)],
@@ -1333,17 +1343,13 @@ class AssetsApi:
1333
1343
  _content_type: Optional[StrictStr] = None,
1334
1344
  _headers: Optional[Dict[StrictStr, Any]] = None,
1335
1345
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1336
- ) -> bytearray:
1337
- """Download original asset
1346
+ ) -> None:
1347
+ """Delete asset metadata
1338
1348
 
1339
- Downloads the original file of the specified asset.
1349
+ Delete metadata key-value pairs for multiple assets.
1340
1350
 
1341
- :param id: (required)
1342
- :type id: UUID
1343
- :param key:
1344
- :type key: str
1345
- :param slug:
1346
- :type slug: str
1351
+ :param asset_metadata_bulk_delete_dto: (required)
1352
+ :type asset_metadata_bulk_delete_dto: AssetMetadataBulkDeleteDto
1347
1353
  :param _request_timeout: timeout setting for this request. If one
1348
1354
  number provided, it will be total request
1349
1355
  timeout. It can also be a pair (tuple) of
@@ -1366,10 +1372,8 @@ class AssetsApi:
1366
1372
  :return: Returns the result object.
1367
1373
  """ # noqa: E501
1368
1374
 
1369
- _param = self._download_asset_serialize(
1370
- id=id,
1371
- key=key,
1372
- slug=slug,
1375
+ _param = self._delete_bulk_asset_metadata_serialize(
1376
+ asset_metadata_bulk_delete_dto=asset_metadata_bulk_delete_dto,
1373
1377
  _request_auth=_request_auth,
1374
1378
  _content_type=_content_type,
1375
1379
  _headers=_headers,
@@ -1377,7 +1381,7 @@ class AssetsApi:
1377
1381
  )
1378
1382
 
1379
1383
  _response_types_map: Dict[str, Optional[str]] = {
1380
- "200": "bytearray",
1384
+ "204": None,
1381
1385
  }
1382
1386
  response_data = await self.api_client.call_api(
1383
1387
  *_param, _request_timeout=_request_timeout
@@ -1389,11 +1393,9 @@ class AssetsApi:
1389
1393
  ).data
1390
1394
 
1391
1395
  @validate_call
1392
- async def download_asset_with_http_info(
1396
+ async def delete_bulk_asset_metadata_with_http_info(
1393
1397
  self,
1394
- id: UUID,
1395
- key: Optional[StrictStr] = None,
1396
- slug: Optional[StrictStr] = None,
1398
+ asset_metadata_bulk_delete_dto: AssetMetadataBulkDeleteDto,
1397
1399
  _request_timeout: Union[
1398
1400
  None,
1399
1401
  Annotated[StrictFloat, Field(gt=0)],
@@ -1405,17 +1407,13 @@ class AssetsApi:
1405
1407
  _content_type: Optional[StrictStr] = None,
1406
1408
  _headers: Optional[Dict[StrictStr, Any]] = None,
1407
1409
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1408
- ) -> ApiResponse[bytearray]:
1409
- """Download original asset
1410
+ ) -> ApiResponse[None]:
1411
+ """Delete asset metadata
1410
1412
 
1411
- Downloads the original file of the specified asset.
1413
+ Delete metadata key-value pairs for multiple assets.
1412
1414
 
1413
- :param id: (required)
1414
- :type id: UUID
1415
- :param key:
1416
- :type key: str
1417
- :param slug:
1418
- :type slug: str
1415
+ :param asset_metadata_bulk_delete_dto: (required)
1416
+ :type asset_metadata_bulk_delete_dto: AssetMetadataBulkDeleteDto
1419
1417
  :param _request_timeout: timeout setting for this request. If one
1420
1418
  number provided, it will be total request
1421
1419
  timeout. It can also be a pair (tuple) of
@@ -1438,10 +1436,8 @@ class AssetsApi:
1438
1436
  :return: Returns the result object.
1439
1437
  """ # noqa: E501
1440
1438
 
1441
- _param = self._download_asset_serialize(
1442
- id=id,
1443
- key=key,
1444
- slug=slug,
1439
+ _param = self._delete_bulk_asset_metadata_serialize(
1440
+ asset_metadata_bulk_delete_dto=asset_metadata_bulk_delete_dto,
1445
1441
  _request_auth=_request_auth,
1446
1442
  _content_type=_content_type,
1447
1443
  _headers=_headers,
@@ -1449,7 +1445,7 @@ class AssetsApi:
1449
1445
  )
1450
1446
 
1451
1447
  _response_types_map: Dict[str, Optional[str]] = {
1452
- "200": "bytearray",
1448
+ "204": None,
1453
1449
  }
1454
1450
  response_data = await self.api_client.call_api(
1455
1451
  *_param, _request_timeout=_request_timeout
@@ -1461,11 +1457,9 @@ class AssetsApi:
1461
1457
  )
1462
1458
 
1463
1459
  @validate_call
1464
- async def download_asset_without_preload_content(
1460
+ async def delete_bulk_asset_metadata_without_preload_content(
1465
1461
  self,
1466
- id: UUID,
1467
- key: Optional[StrictStr] = None,
1468
- slug: Optional[StrictStr] = None,
1462
+ asset_metadata_bulk_delete_dto: AssetMetadataBulkDeleteDto,
1469
1463
  _request_timeout: Union[
1470
1464
  None,
1471
1465
  Annotated[StrictFloat, Field(gt=0)],
@@ -1478,16 +1472,12 @@ class AssetsApi:
1478
1472
  _headers: Optional[Dict[StrictStr, Any]] = None,
1479
1473
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1480
1474
  ) -> RESTResponseType:
1481
- """Download original asset
1475
+ """Delete asset metadata
1482
1476
 
1483
- Downloads the original file of the specified asset.
1477
+ Delete metadata key-value pairs for multiple assets.
1484
1478
 
1485
- :param id: (required)
1486
- :type id: UUID
1487
- :param key:
1488
- :type key: str
1489
- :param slug:
1490
- :type slug: str
1479
+ :param asset_metadata_bulk_delete_dto: (required)
1480
+ :type asset_metadata_bulk_delete_dto: AssetMetadataBulkDeleteDto
1491
1481
  :param _request_timeout: timeout setting for this request. If one
1492
1482
  number provided, it will be total request
1493
1483
  timeout. It can also be a pair (tuple) of
@@ -1510,10 +1500,8 @@ class AssetsApi:
1510
1500
  :return: Returns the result object.
1511
1501
  """ # noqa: E501
1512
1502
 
1513
- _param = self._download_asset_serialize(
1514
- id=id,
1515
- key=key,
1516
- slug=slug,
1503
+ _param = self._delete_bulk_asset_metadata_serialize(
1504
+ asset_metadata_bulk_delete_dto=asset_metadata_bulk_delete_dto,
1517
1505
  _request_auth=_request_auth,
1518
1506
  _content_type=_content_type,
1519
1507
  _headers=_headers,
@@ -1521,18 +1509,16 @@ class AssetsApi:
1521
1509
  )
1522
1510
 
1523
1511
  _response_types_map: Dict[str, Optional[str]] = {
1524
- "200": "bytearray",
1512
+ "204": None,
1525
1513
  }
1526
1514
  response_data = await self.api_client.call_api(
1527
1515
  *_param, _request_timeout=_request_timeout
1528
1516
  )
1529
1517
  return response_data.response
1530
1518
 
1531
- def _download_asset_serialize(
1519
+ def _delete_bulk_asset_metadata_serialize(
1532
1520
  self,
1533
- id,
1534
- key,
1535
- slug,
1521
+ asset_metadata_bulk_delete_dto,
1536
1522
  _request_auth,
1537
1523
  _content_type,
1538
1524
  _headers,
@@ -1552,31 +1538,29 @@ class AssetsApi:
1552
1538
  _body_params: Optional[bytes] = None
1553
1539
 
1554
1540
  # process the path parameters
1555
- if id is not None:
1556
- _path_params["id"] = id
1557
1541
  # process the query parameters
1558
- if key is not None:
1559
- _query_params.append(("key", key))
1560
-
1561
- if slug is not None:
1562
- _query_params.append(("slug", slug))
1563
-
1564
1542
  # process the header parameters
1565
1543
  # process the form parameters
1566
1544
  # process the body parameter
1545
+ if asset_metadata_bulk_delete_dto is not None:
1546
+ _body_params = asset_metadata_bulk_delete_dto
1567
1547
 
1568
- # set the HTTP header `Accept`
1569
- if "Accept" not in _header_params:
1570
- _header_params["Accept"] = self.api_client.select_header_accept(
1571
- ["application/octet-stream"]
1548
+ # set the HTTP header `Content-Type`
1549
+ if _content_type:
1550
+ _header_params["Content-Type"] = _content_type
1551
+ else:
1552
+ _default_content_type = self.api_client.select_header_content_type(
1553
+ ["application/json"]
1572
1554
  )
1555
+ if _default_content_type is not None:
1556
+ _header_params["Content-Type"] = _default_content_type
1573
1557
 
1574
1558
  # authentication setting
1575
1559
  _auth_settings: List[str] = ["cookie", "api_key", "bearer"]
1576
1560
 
1577
1561
  return self.api_client.param_serialize(
1578
- method="GET",
1579
- resource_path="/assets/{id}/original",
1562
+ method="DELETE",
1563
+ resource_path="/assets/metadata",
1580
1564
  path_params=_path_params,
1581
1565
  query_params=_query_params,
1582
1566
  header_params=_header_params,
@@ -1590,9 +1574,14 @@ class AssetsApi:
1590
1574
  )
1591
1575
 
1592
1576
  @validate_call
1593
- async def get_all_user_assets_by_device_id(
1577
+ async def download_asset(
1594
1578
  self,
1595
- device_id: StrictStr,
1579
+ id: UUID,
1580
+ edited: Annotated[
1581
+ Optional[StrictBool], Field(description="Return edited asset if available")
1582
+ ] = None,
1583
+ key: Optional[StrictStr] = None,
1584
+ slug: Optional[StrictStr] = None,
1596
1585
  _request_timeout: Union[
1597
1586
  None,
1598
1587
  Annotated[StrictFloat, Field(gt=0)],
@@ -1604,13 +1593,19 @@ class AssetsApi:
1604
1593
  _content_type: Optional[StrictStr] = None,
1605
1594
  _headers: Optional[Dict[StrictStr, Any]] = None,
1606
1595
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1607
- ) -> List[str]:
1608
- """(Deprecated) Retrieve assets by device ID
1596
+ ) -> bytearray:
1597
+ """Download original asset
1609
1598
 
1610
- Get all asset of a device that are in the database, ID only.
1599
+ Downloads the original file of the specified asset.
1611
1600
 
1612
- :param device_id: (required)
1613
- :type device_id: str
1601
+ :param id: (required)
1602
+ :type id: UUID
1603
+ :param edited: Return edited asset if available
1604
+ :type edited: bool
1605
+ :param key:
1606
+ :type key: str
1607
+ :param slug:
1608
+ :type slug: str
1614
1609
  :param _request_timeout: timeout setting for this request. If one
1615
1610
  number provided, it will be total request
1616
1611
  timeout. It can also be a pair (tuple) of
@@ -1632,12 +1627,12 @@ class AssetsApi:
1632
1627
  :type _host_index: int, optional
1633
1628
  :return: Returns the result object.
1634
1629
  """ # noqa: E501
1635
- warnings.warn(
1636
- "GET /assets/device/{deviceId} is deprecated.", DeprecationWarning
1637
- )
1638
1630
 
1639
- _param = self._get_all_user_assets_by_device_id_serialize(
1640
- device_id=device_id,
1631
+ _param = self._download_asset_serialize(
1632
+ id=id,
1633
+ edited=edited,
1634
+ key=key,
1635
+ slug=slug,
1641
1636
  _request_auth=_request_auth,
1642
1637
  _content_type=_content_type,
1643
1638
  _headers=_headers,
@@ -1645,7 +1640,7 @@ class AssetsApi:
1645
1640
  )
1646
1641
 
1647
1642
  _response_types_map: Dict[str, Optional[str]] = {
1648
- "200": "List[str]",
1643
+ "200": "bytearray",
1649
1644
  }
1650
1645
  response_data = await self.api_client.call_api(
1651
1646
  *_param, _request_timeout=_request_timeout
@@ -1657,9 +1652,14 @@ class AssetsApi:
1657
1652
  ).data
1658
1653
 
1659
1654
  @validate_call
1660
- async def get_all_user_assets_by_device_id_with_http_info(
1655
+ async def download_asset_with_http_info(
1661
1656
  self,
1662
- device_id: StrictStr,
1657
+ id: UUID,
1658
+ edited: Annotated[
1659
+ Optional[StrictBool], Field(description="Return edited asset if available")
1660
+ ] = None,
1661
+ key: Optional[StrictStr] = None,
1662
+ slug: Optional[StrictStr] = None,
1663
1663
  _request_timeout: Union[
1664
1664
  None,
1665
1665
  Annotated[StrictFloat, Field(gt=0)],
@@ -1671,13 +1671,19 @@ class AssetsApi:
1671
1671
  _content_type: Optional[StrictStr] = None,
1672
1672
  _headers: Optional[Dict[StrictStr, Any]] = None,
1673
1673
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1674
- ) -> ApiResponse[List[str]]:
1675
- """(Deprecated) Retrieve assets by device ID
1674
+ ) -> ApiResponse[bytearray]:
1675
+ """Download original asset
1676
1676
 
1677
- Get all asset of a device that are in the database, ID only.
1677
+ Downloads the original file of the specified asset.
1678
1678
 
1679
- :param device_id: (required)
1680
- :type device_id: str
1679
+ :param id: (required)
1680
+ :type id: UUID
1681
+ :param edited: Return edited asset if available
1682
+ :type edited: bool
1683
+ :param key:
1684
+ :type key: str
1685
+ :param slug:
1686
+ :type slug: str
1681
1687
  :param _request_timeout: timeout setting for this request. If one
1682
1688
  number provided, it will be total request
1683
1689
  timeout. It can also be a pair (tuple) of
@@ -1699,12 +1705,12 @@ class AssetsApi:
1699
1705
  :type _host_index: int, optional
1700
1706
  :return: Returns the result object.
1701
1707
  """ # noqa: E501
1702
- warnings.warn(
1703
- "GET /assets/device/{deviceId} is deprecated.", DeprecationWarning
1704
- )
1705
1708
 
1706
- _param = self._get_all_user_assets_by_device_id_serialize(
1707
- device_id=device_id,
1709
+ _param = self._download_asset_serialize(
1710
+ id=id,
1711
+ edited=edited,
1712
+ key=key,
1713
+ slug=slug,
1708
1714
  _request_auth=_request_auth,
1709
1715
  _content_type=_content_type,
1710
1716
  _headers=_headers,
@@ -1712,7 +1718,7 @@ class AssetsApi:
1712
1718
  )
1713
1719
 
1714
1720
  _response_types_map: Dict[str, Optional[str]] = {
1715
- "200": "List[str]",
1721
+ "200": "bytearray",
1716
1722
  }
1717
1723
  response_data = await self.api_client.call_api(
1718
1724
  *_param, _request_timeout=_request_timeout
@@ -1724,9 +1730,14 @@ class AssetsApi:
1724
1730
  )
1725
1731
 
1726
1732
  @validate_call
1727
- async def get_all_user_assets_by_device_id_without_preload_content(
1733
+ async def download_asset_without_preload_content(
1728
1734
  self,
1729
- device_id: StrictStr,
1735
+ id: UUID,
1736
+ edited: Annotated[
1737
+ Optional[StrictBool], Field(description="Return edited asset if available")
1738
+ ] = None,
1739
+ key: Optional[StrictStr] = None,
1740
+ slug: Optional[StrictStr] = None,
1730
1741
  _request_timeout: Union[
1731
1742
  None,
1732
1743
  Annotated[StrictFloat, Field(gt=0)],
@@ -1739,12 +1750,18 @@ class AssetsApi:
1739
1750
  _headers: Optional[Dict[StrictStr, Any]] = None,
1740
1751
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1741
1752
  ) -> RESTResponseType:
1742
- """(Deprecated) Retrieve assets by device ID
1753
+ """Download original asset
1743
1754
 
1744
- Get all asset of a device that are in the database, ID only.
1755
+ Downloads the original file of the specified asset.
1745
1756
 
1746
- :param device_id: (required)
1747
- :type device_id: str
1757
+ :param id: (required)
1758
+ :type id: UUID
1759
+ :param edited: Return edited asset if available
1760
+ :type edited: bool
1761
+ :param key:
1762
+ :type key: str
1763
+ :param slug:
1764
+ :type slug: str
1748
1765
  :param _request_timeout: timeout setting for this request. If one
1749
1766
  number provided, it will be total request
1750
1767
  timeout. It can also be a pair (tuple) of
@@ -1766,12 +1783,12 @@ class AssetsApi:
1766
1783
  :type _host_index: int, optional
1767
1784
  :return: Returns the result object.
1768
1785
  """ # noqa: E501
1769
- warnings.warn(
1770
- "GET /assets/device/{deviceId} is deprecated.", DeprecationWarning
1771
- )
1772
1786
 
1773
- _param = self._get_all_user_assets_by_device_id_serialize(
1774
- device_id=device_id,
1787
+ _param = self._download_asset_serialize(
1788
+ id=id,
1789
+ edited=edited,
1790
+ key=key,
1791
+ slug=slug,
1775
1792
  _request_auth=_request_auth,
1776
1793
  _content_type=_content_type,
1777
1794
  _headers=_headers,
@@ -1779,16 +1796,19 @@ class AssetsApi:
1779
1796
  )
1780
1797
 
1781
1798
  _response_types_map: Dict[str, Optional[str]] = {
1782
- "200": "List[str]",
1799
+ "200": "bytearray",
1783
1800
  }
1784
1801
  response_data = await self.api_client.call_api(
1785
1802
  *_param, _request_timeout=_request_timeout
1786
1803
  )
1787
1804
  return response_data.response
1788
1805
 
1789
- def _get_all_user_assets_by_device_id_serialize(
1806
+ def _download_asset_serialize(
1790
1807
  self,
1791
- device_id,
1808
+ id,
1809
+ edited,
1810
+ key,
1811
+ slug,
1792
1812
  _request_auth,
1793
1813
  _content_type,
1794
1814
  _headers,
@@ -1808,9 +1828,18 @@ class AssetsApi:
1808
1828
  _body_params: Optional[bytes] = None
1809
1829
 
1810
1830
  # process the path parameters
1811
- if device_id is not None:
1812
- _path_params["deviceId"] = device_id
1831
+ if id is not None:
1832
+ _path_params["id"] = id
1813
1833
  # process the query parameters
1834
+ if edited is not None:
1835
+ _query_params.append(("edited", edited))
1836
+
1837
+ if key is not None:
1838
+ _query_params.append(("key", key))
1839
+
1840
+ if slug is not None:
1841
+ _query_params.append(("slug", slug))
1842
+
1814
1843
  # process the header parameters
1815
1844
  # process the form parameters
1816
1845
  # process the body parameter
@@ -1818,7 +1847,7 @@ class AssetsApi:
1818
1847
  # set the HTTP header `Accept`
1819
1848
  if "Accept" not in _header_params:
1820
1849
  _header_params["Accept"] = self.api_client.select_header_accept(
1821
- ["application/json"]
1850
+ ["application/octet-stream"]
1822
1851
  )
1823
1852
 
1824
1853
  # authentication setting
@@ -1826,7 +1855,7 @@ class AssetsApi:
1826
1855
 
1827
1856
  return self.api_client.param_serialize(
1828
1857
  method="GET",
1829
- resource_path="/assets/device/{deviceId}",
1858
+ resource_path="/assets/{id}/original",
1830
1859
  path_params=_path_params,
1831
1860
  query_params=_query_params,
1832
1861
  header_params=_header_params,
@@ -1840,11 +1869,10 @@ class AssetsApi:
1840
1869
  )
1841
1870
 
1842
1871
  @validate_call
1843
- async def get_asset_info(
1872
+ async def edit_asset(
1844
1873
  self,
1845
1874
  id: UUID,
1846
- key: Optional[StrictStr] = None,
1847
- slug: Optional[StrictStr] = None,
1875
+ asset_edit_action_list_dto: AssetEditActionListDto,
1848
1876
  _request_timeout: Union[
1849
1877
  None,
1850
1878
  Annotated[StrictFloat, Field(gt=0)],
@@ -1856,17 +1884,15 @@ class AssetsApi:
1856
1884
  _content_type: Optional[StrictStr] = None,
1857
1885
  _headers: Optional[Dict[StrictStr, Any]] = None,
1858
1886
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1859
- ) -> AssetResponseDto:
1860
- """Retrieve an asset
1887
+ ) -> AssetEditsDto:
1888
+ """Apply edits to an existing asset
1861
1889
 
1862
- Retrieve detailed information about a specific asset.
1890
+ Apply a series of edit actions (crop, rotate, mirror) to the specified asset.
1863
1891
 
1864
1892
  :param id: (required)
1865
1893
  :type id: UUID
1866
- :param key:
1867
- :type key: str
1868
- :param slug:
1869
- :type slug: str
1894
+ :param asset_edit_action_list_dto: (required)
1895
+ :type asset_edit_action_list_dto: AssetEditActionListDto
1870
1896
  :param _request_timeout: timeout setting for this request. If one
1871
1897
  number provided, it will be total request
1872
1898
  timeout. It can also be a pair (tuple) of
@@ -1889,10 +1915,9 @@ class AssetsApi:
1889
1915
  :return: Returns the result object.
1890
1916
  """ # noqa: E501
1891
1917
 
1892
- _param = self._get_asset_info_serialize(
1918
+ _param = self._edit_asset_serialize(
1893
1919
  id=id,
1894
- key=key,
1895
- slug=slug,
1920
+ asset_edit_action_list_dto=asset_edit_action_list_dto,
1896
1921
  _request_auth=_request_auth,
1897
1922
  _content_type=_content_type,
1898
1923
  _headers=_headers,
@@ -1900,7 +1925,7 @@ class AssetsApi:
1900
1925
  )
1901
1926
 
1902
1927
  _response_types_map: Dict[str, Optional[str]] = {
1903
- "200": "AssetResponseDto",
1928
+ "200": "AssetEditsDto",
1904
1929
  }
1905
1930
  response_data = await self.api_client.call_api(
1906
1931
  *_param, _request_timeout=_request_timeout
@@ -1912,11 +1937,10 @@ class AssetsApi:
1912
1937
  ).data
1913
1938
 
1914
1939
  @validate_call
1915
- async def get_asset_info_with_http_info(
1940
+ async def edit_asset_with_http_info(
1916
1941
  self,
1917
1942
  id: UUID,
1918
- key: Optional[StrictStr] = None,
1919
- slug: Optional[StrictStr] = None,
1943
+ asset_edit_action_list_dto: AssetEditActionListDto,
1920
1944
  _request_timeout: Union[
1921
1945
  None,
1922
1946
  Annotated[StrictFloat, Field(gt=0)],
@@ -1928,17 +1952,15 @@ class AssetsApi:
1928
1952
  _content_type: Optional[StrictStr] = None,
1929
1953
  _headers: Optional[Dict[StrictStr, Any]] = None,
1930
1954
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1931
- ) -> ApiResponse[AssetResponseDto]:
1932
- """Retrieve an asset
1955
+ ) -> ApiResponse[AssetEditsDto]:
1956
+ """Apply edits to an existing asset
1933
1957
 
1934
- Retrieve detailed information about a specific asset.
1958
+ Apply a series of edit actions (crop, rotate, mirror) to the specified asset.
1935
1959
 
1936
1960
  :param id: (required)
1937
1961
  :type id: UUID
1938
- :param key:
1939
- :type key: str
1940
- :param slug:
1941
- :type slug: str
1962
+ :param asset_edit_action_list_dto: (required)
1963
+ :type asset_edit_action_list_dto: AssetEditActionListDto
1942
1964
  :param _request_timeout: timeout setting for this request. If one
1943
1965
  number provided, it will be total request
1944
1966
  timeout. It can also be a pair (tuple) of
@@ -1961,10 +1983,9 @@ class AssetsApi:
1961
1983
  :return: Returns the result object.
1962
1984
  """ # noqa: E501
1963
1985
 
1964
- _param = self._get_asset_info_serialize(
1986
+ _param = self._edit_asset_serialize(
1965
1987
  id=id,
1966
- key=key,
1967
- slug=slug,
1988
+ asset_edit_action_list_dto=asset_edit_action_list_dto,
1968
1989
  _request_auth=_request_auth,
1969
1990
  _content_type=_content_type,
1970
1991
  _headers=_headers,
@@ -1972,7 +1993,7 @@ class AssetsApi:
1972
1993
  )
1973
1994
 
1974
1995
  _response_types_map: Dict[str, Optional[str]] = {
1975
- "200": "AssetResponseDto",
1996
+ "200": "AssetEditsDto",
1976
1997
  }
1977
1998
  response_data = await self.api_client.call_api(
1978
1999
  *_param, _request_timeout=_request_timeout
@@ -1984,11 +2005,10 @@ class AssetsApi:
1984
2005
  )
1985
2006
 
1986
2007
  @validate_call
1987
- async def get_asset_info_without_preload_content(
2008
+ async def edit_asset_without_preload_content(
1988
2009
  self,
1989
2010
  id: UUID,
1990
- key: Optional[StrictStr] = None,
1991
- slug: Optional[StrictStr] = None,
2011
+ asset_edit_action_list_dto: AssetEditActionListDto,
1992
2012
  _request_timeout: Union[
1993
2013
  None,
1994
2014
  Annotated[StrictFloat, Field(gt=0)],
@@ -2001,16 +2021,14 @@ class AssetsApi:
2001
2021
  _headers: Optional[Dict[StrictStr, Any]] = None,
2002
2022
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2003
2023
  ) -> RESTResponseType:
2004
- """Retrieve an asset
2024
+ """Apply edits to an existing asset
2005
2025
 
2006
- Retrieve detailed information about a specific asset.
2026
+ Apply a series of edit actions (crop, rotate, mirror) to the specified asset.
2007
2027
 
2008
2028
  :param id: (required)
2009
2029
  :type id: UUID
2010
- :param key:
2011
- :type key: str
2012
- :param slug:
2013
- :type slug: str
2030
+ :param asset_edit_action_list_dto: (required)
2031
+ :type asset_edit_action_list_dto: AssetEditActionListDto
2014
2032
  :param _request_timeout: timeout setting for this request. If one
2015
2033
  number provided, it will be total request
2016
2034
  timeout. It can also be a pair (tuple) of
@@ -2033,10 +2051,9 @@ class AssetsApi:
2033
2051
  :return: Returns the result object.
2034
2052
  """ # noqa: E501
2035
2053
 
2036
- _param = self._get_asset_info_serialize(
2054
+ _param = self._edit_asset_serialize(
2037
2055
  id=id,
2038
- key=key,
2039
- slug=slug,
2056
+ asset_edit_action_list_dto=asset_edit_action_list_dto,
2040
2057
  _request_auth=_request_auth,
2041
2058
  _content_type=_content_type,
2042
2059
  _headers=_headers,
@@ -2044,18 +2061,17 @@ class AssetsApi:
2044
2061
  )
2045
2062
 
2046
2063
  _response_types_map: Dict[str, Optional[str]] = {
2047
- "200": "AssetResponseDto",
2064
+ "200": "AssetEditsDto",
2048
2065
  }
2049
2066
  response_data = await self.api_client.call_api(
2050
2067
  *_param, _request_timeout=_request_timeout
2051
2068
  )
2052
2069
  return response_data.response
2053
2070
 
2054
- def _get_asset_info_serialize(
2071
+ def _edit_asset_serialize(
2055
2072
  self,
2056
2073
  id,
2057
- key,
2058
- slug,
2074
+ asset_edit_action_list_dto,
2059
2075
  _request_auth,
2060
2076
  _content_type,
2061
2077
  _headers,
@@ -2078,8 +2094,778 @@ class AssetsApi:
2078
2094
  if id is not None:
2079
2095
  _path_params["id"] = id
2080
2096
  # process the query parameters
2081
- if key is not None:
2082
- _query_params.append(("key", key))
2097
+ # process the header parameters
2098
+ # process the form parameters
2099
+ # process the body parameter
2100
+ if asset_edit_action_list_dto is not None:
2101
+ _body_params = asset_edit_action_list_dto
2102
+
2103
+ # set the HTTP header `Accept`
2104
+ if "Accept" not in _header_params:
2105
+ _header_params["Accept"] = self.api_client.select_header_accept(
2106
+ ["application/json"]
2107
+ )
2108
+
2109
+ # set the HTTP header `Content-Type`
2110
+ if _content_type:
2111
+ _header_params["Content-Type"] = _content_type
2112
+ else:
2113
+ _default_content_type = self.api_client.select_header_content_type(
2114
+ ["application/json"]
2115
+ )
2116
+ if _default_content_type is not None:
2117
+ _header_params["Content-Type"] = _default_content_type
2118
+
2119
+ # authentication setting
2120
+ _auth_settings: List[str] = ["cookie", "api_key", "bearer"]
2121
+
2122
+ return self.api_client.param_serialize(
2123
+ method="PUT",
2124
+ resource_path="/assets/{id}/edits",
2125
+ path_params=_path_params,
2126
+ query_params=_query_params,
2127
+ header_params=_header_params,
2128
+ body=_body_params,
2129
+ post_params=_form_params,
2130
+ files=_files,
2131
+ auth_settings=_auth_settings,
2132
+ collection_formats=_collection_formats,
2133
+ _host=_host,
2134
+ _request_auth=_request_auth,
2135
+ )
2136
+
2137
+ @validate_call
2138
+ async def get_all_user_assets_by_device_id(
2139
+ self,
2140
+ device_id: Annotated[StrictStr, Field(description="Device ID")],
2141
+ _request_timeout: Union[
2142
+ None,
2143
+ Annotated[StrictFloat, Field(gt=0)],
2144
+ Tuple[
2145
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
2146
+ ],
2147
+ ] = None,
2148
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2149
+ _content_type: Optional[StrictStr] = None,
2150
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2151
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2152
+ ) -> List[str]:
2153
+ """(Deprecated) Retrieve assets by device ID
2154
+
2155
+ Get all asset of a device that are in the database, ID only.
2156
+
2157
+ :param device_id: Device ID (required)
2158
+ :type device_id: str
2159
+ :param _request_timeout: timeout setting for this request. If one
2160
+ number provided, it will be total request
2161
+ timeout. It can also be a pair (tuple) of
2162
+ (connection, read) timeouts.
2163
+ :type _request_timeout: int, tuple(int, int), optional
2164
+ :param _request_auth: set to override the auth_settings for an a single
2165
+ request; this effectively ignores the
2166
+ authentication in the spec for a single request.
2167
+ :type _request_auth: dict, optional
2168
+ :param _content_type: force content-type for the request.
2169
+ :type _content_type: str, Optional
2170
+ :param _headers: set to override the headers for a single
2171
+ request; this effectively ignores the headers
2172
+ in the spec for a single request.
2173
+ :type _headers: dict, optional
2174
+ :param _host_index: set to override the host_index for a single
2175
+ request; this effectively ignores the host_index
2176
+ in the spec for a single request.
2177
+ :type _host_index: int, optional
2178
+ :return: Returns the result object.
2179
+ """ # noqa: E501
2180
+ warnings.warn(
2181
+ "GET /assets/device/{deviceId} is deprecated.", DeprecationWarning
2182
+ )
2183
+
2184
+ _param = self._get_all_user_assets_by_device_id_serialize(
2185
+ device_id=device_id,
2186
+ _request_auth=_request_auth,
2187
+ _content_type=_content_type,
2188
+ _headers=_headers,
2189
+ _host_index=_host_index,
2190
+ )
2191
+
2192
+ _response_types_map: Dict[str, Optional[str]] = {
2193
+ "200": "List[str]",
2194
+ }
2195
+ response_data = await self.api_client.call_api(
2196
+ *_param, _request_timeout=_request_timeout
2197
+ )
2198
+ await response_data.read()
2199
+ return self.api_client.response_deserialize(
2200
+ response_data=response_data,
2201
+ response_types_map=_response_types_map,
2202
+ ).data
2203
+
2204
+ @validate_call
2205
+ async def get_all_user_assets_by_device_id_with_http_info(
2206
+ self,
2207
+ device_id: Annotated[StrictStr, Field(description="Device ID")],
2208
+ _request_timeout: Union[
2209
+ None,
2210
+ Annotated[StrictFloat, Field(gt=0)],
2211
+ Tuple[
2212
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
2213
+ ],
2214
+ ] = None,
2215
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2216
+ _content_type: Optional[StrictStr] = None,
2217
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2218
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2219
+ ) -> ApiResponse[List[str]]:
2220
+ """(Deprecated) Retrieve assets by device ID
2221
+
2222
+ Get all asset of a device that are in the database, ID only.
2223
+
2224
+ :param device_id: Device ID (required)
2225
+ :type device_id: str
2226
+ :param _request_timeout: timeout setting for this request. If one
2227
+ number provided, it will be total request
2228
+ timeout. It can also be a pair (tuple) of
2229
+ (connection, read) timeouts.
2230
+ :type _request_timeout: int, tuple(int, int), optional
2231
+ :param _request_auth: set to override the auth_settings for an a single
2232
+ request; this effectively ignores the
2233
+ authentication in the spec for a single request.
2234
+ :type _request_auth: dict, optional
2235
+ :param _content_type: force content-type for the request.
2236
+ :type _content_type: str, Optional
2237
+ :param _headers: set to override the headers for a single
2238
+ request; this effectively ignores the headers
2239
+ in the spec for a single request.
2240
+ :type _headers: dict, optional
2241
+ :param _host_index: set to override the host_index for a single
2242
+ request; this effectively ignores the host_index
2243
+ in the spec for a single request.
2244
+ :type _host_index: int, optional
2245
+ :return: Returns the result object.
2246
+ """ # noqa: E501
2247
+ warnings.warn(
2248
+ "GET /assets/device/{deviceId} is deprecated.", DeprecationWarning
2249
+ )
2250
+
2251
+ _param = self._get_all_user_assets_by_device_id_serialize(
2252
+ device_id=device_id,
2253
+ _request_auth=_request_auth,
2254
+ _content_type=_content_type,
2255
+ _headers=_headers,
2256
+ _host_index=_host_index,
2257
+ )
2258
+
2259
+ _response_types_map: Dict[str, Optional[str]] = {
2260
+ "200": "List[str]",
2261
+ }
2262
+ response_data = await self.api_client.call_api(
2263
+ *_param, _request_timeout=_request_timeout
2264
+ )
2265
+ await response_data.read()
2266
+ return self.api_client.response_deserialize(
2267
+ response_data=response_data,
2268
+ response_types_map=_response_types_map,
2269
+ )
2270
+
2271
+ @validate_call
2272
+ async def get_all_user_assets_by_device_id_without_preload_content(
2273
+ self,
2274
+ device_id: Annotated[StrictStr, Field(description="Device ID")],
2275
+ _request_timeout: Union[
2276
+ None,
2277
+ Annotated[StrictFloat, Field(gt=0)],
2278
+ Tuple[
2279
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
2280
+ ],
2281
+ ] = None,
2282
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2283
+ _content_type: Optional[StrictStr] = None,
2284
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2285
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2286
+ ) -> RESTResponseType:
2287
+ """(Deprecated) Retrieve assets by device ID
2288
+
2289
+ Get all asset of a device that are in the database, ID only.
2290
+
2291
+ :param device_id: Device ID (required)
2292
+ :type device_id: str
2293
+ :param _request_timeout: timeout setting for this request. If one
2294
+ number provided, it will be total request
2295
+ timeout. It can also be a pair (tuple) of
2296
+ (connection, read) timeouts.
2297
+ :type _request_timeout: int, tuple(int, int), optional
2298
+ :param _request_auth: set to override the auth_settings for an a single
2299
+ request; this effectively ignores the
2300
+ authentication in the spec for a single request.
2301
+ :type _request_auth: dict, optional
2302
+ :param _content_type: force content-type for the request.
2303
+ :type _content_type: str, Optional
2304
+ :param _headers: set to override the headers for a single
2305
+ request; this effectively ignores the headers
2306
+ in the spec for a single request.
2307
+ :type _headers: dict, optional
2308
+ :param _host_index: set to override the host_index for a single
2309
+ request; this effectively ignores the host_index
2310
+ in the spec for a single request.
2311
+ :type _host_index: int, optional
2312
+ :return: Returns the result object.
2313
+ """ # noqa: E501
2314
+ warnings.warn(
2315
+ "GET /assets/device/{deviceId} is deprecated.", DeprecationWarning
2316
+ )
2317
+
2318
+ _param = self._get_all_user_assets_by_device_id_serialize(
2319
+ device_id=device_id,
2320
+ _request_auth=_request_auth,
2321
+ _content_type=_content_type,
2322
+ _headers=_headers,
2323
+ _host_index=_host_index,
2324
+ )
2325
+
2326
+ _response_types_map: Dict[str, Optional[str]] = {
2327
+ "200": "List[str]",
2328
+ }
2329
+ response_data = await self.api_client.call_api(
2330
+ *_param, _request_timeout=_request_timeout
2331
+ )
2332
+ return response_data.response
2333
+
2334
+ def _get_all_user_assets_by_device_id_serialize(
2335
+ self,
2336
+ device_id,
2337
+ _request_auth,
2338
+ _content_type,
2339
+ _headers,
2340
+ _host_index,
2341
+ ) -> RequestSerialized:
2342
+ _host = None
2343
+
2344
+ _collection_formats: Dict[str, str] = {}
2345
+
2346
+ _path_params: Dict[str, str] = {}
2347
+ _query_params: List[Tuple[str, str]] = []
2348
+ _header_params: Dict[str, Optional[str]] = _headers or {}
2349
+ _form_params: List[Tuple[str, str]] = []
2350
+ _files: Dict[
2351
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
2352
+ ] = {}
2353
+ _body_params: Optional[bytes] = None
2354
+
2355
+ # process the path parameters
2356
+ if device_id is not None:
2357
+ _path_params["deviceId"] = device_id
2358
+ # process the query parameters
2359
+ # process the header parameters
2360
+ # process the form parameters
2361
+ # process the body parameter
2362
+
2363
+ # set the HTTP header `Accept`
2364
+ if "Accept" not in _header_params:
2365
+ _header_params["Accept"] = self.api_client.select_header_accept(
2366
+ ["application/json"]
2367
+ )
2368
+
2369
+ # authentication setting
2370
+ _auth_settings: List[str] = ["cookie", "api_key", "bearer"]
2371
+
2372
+ return self.api_client.param_serialize(
2373
+ method="GET",
2374
+ resource_path="/assets/device/{deviceId}",
2375
+ path_params=_path_params,
2376
+ query_params=_query_params,
2377
+ header_params=_header_params,
2378
+ body=_body_params,
2379
+ post_params=_form_params,
2380
+ files=_files,
2381
+ auth_settings=_auth_settings,
2382
+ collection_formats=_collection_formats,
2383
+ _host=_host,
2384
+ _request_auth=_request_auth,
2385
+ )
2386
+
2387
+ @validate_call
2388
+ async def get_asset_edits(
2389
+ self,
2390
+ id: UUID,
2391
+ _request_timeout: Union[
2392
+ None,
2393
+ Annotated[StrictFloat, Field(gt=0)],
2394
+ Tuple[
2395
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
2396
+ ],
2397
+ ] = None,
2398
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2399
+ _content_type: Optional[StrictStr] = None,
2400
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2401
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2402
+ ) -> AssetEditsDto:
2403
+ """Retrieve edits for an existing asset
2404
+
2405
+ Retrieve a series of edit actions (crop, rotate, mirror) associated with the specified asset.
2406
+
2407
+ :param id: (required)
2408
+ :type id: UUID
2409
+ :param _request_timeout: timeout setting for this request. If one
2410
+ number provided, it will be total request
2411
+ timeout. It can also be a pair (tuple) of
2412
+ (connection, read) timeouts.
2413
+ :type _request_timeout: int, tuple(int, int), optional
2414
+ :param _request_auth: set to override the auth_settings for an a single
2415
+ request; this effectively ignores the
2416
+ authentication in the spec for a single request.
2417
+ :type _request_auth: dict, optional
2418
+ :param _content_type: force content-type for the request.
2419
+ :type _content_type: str, Optional
2420
+ :param _headers: set to override the headers for a single
2421
+ request; this effectively ignores the headers
2422
+ in the spec for a single request.
2423
+ :type _headers: dict, optional
2424
+ :param _host_index: set to override the host_index for a single
2425
+ request; this effectively ignores the host_index
2426
+ in the spec for a single request.
2427
+ :type _host_index: int, optional
2428
+ :return: Returns the result object.
2429
+ """ # noqa: E501
2430
+
2431
+ _param = self._get_asset_edits_serialize(
2432
+ id=id,
2433
+ _request_auth=_request_auth,
2434
+ _content_type=_content_type,
2435
+ _headers=_headers,
2436
+ _host_index=_host_index,
2437
+ )
2438
+
2439
+ _response_types_map: Dict[str, Optional[str]] = {
2440
+ "200": "AssetEditsDto",
2441
+ }
2442
+ response_data = await self.api_client.call_api(
2443
+ *_param, _request_timeout=_request_timeout
2444
+ )
2445
+ await response_data.read()
2446
+ return self.api_client.response_deserialize(
2447
+ response_data=response_data,
2448
+ response_types_map=_response_types_map,
2449
+ ).data
2450
+
2451
+ @validate_call
2452
+ async def get_asset_edits_with_http_info(
2453
+ self,
2454
+ id: UUID,
2455
+ _request_timeout: Union[
2456
+ None,
2457
+ Annotated[StrictFloat, Field(gt=0)],
2458
+ Tuple[
2459
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
2460
+ ],
2461
+ ] = None,
2462
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2463
+ _content_type: Optional[StrictStr] = None,
2464
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2465
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2466
+ ) -> ApiResponse[AssetEditsDto]:
2467
+ """Retrieve edits for an existing asset
2468
+
2469
+ Retrieve a series of edit actions (crop, rotate, mirror) associated with the specified asset.
2470
+
2471
+ :param id: (required)
2472
+ :type id: UUID
2473
+ :param _request_timeout: timeout setting for this request. If one
2474
+ number provided, it will be total request
2475
+ timeout. It can also be a pair (tuple) of
2476
+ (connection, read) timeouts.
2477
+ :type _request_timeout: int, tuple(int, int), optional
2478
+ :param _request_auth: set to override the auth_settings for an a single
2479
+ request; this effectively ignores the
2480
+ authentication in the spec for a single request.
2481
+ :type _request_auth: dict, optional
2482
+ :param _content_type: force content-type for the request.
2483
+ :type _content_type: str, Optional
2484
+ :param _headers: set to override the headers for a single
2485
+ request; this effectively ignores the headers
2486
+ in the spec for a single request.
2487
+ :type _headers: dict, optional
2488
+ :param _host_index: set to override the host_index for a single
2489
+ request; this effectively ignores the host_index
2490
+ in the spec for a single request.
2491
+ :type _host_index: int, optional
2492
+ :return: Returns the result object.
2493
+ """ # noqa: E501
2494
+
2495
+ _param = self._get_asset_edits_serialize(
2496
+ id=id,
2497
+ _request_auth=_request_auth,
2498
+ _content_type=_content_type,
2499
+ _headers=_headers,
2500
+ _host_index=_host_index,
2501
+ )
2502
+
2503
+ _response_types_map: Dict[str, Optional[str]] = {
2504
+ "200": "AssetEditsDto",
2505
+ }
2506
+ response_data = await self.api_client.call_api(
2507
+ *_param, _request_timeout=_request_timeout
2508
+ )
2509
+ await response_data.read()
2510
+ return self.api_client.response_deserialize(
2511
+ response_data=response_data,
2512
+ response_types_map=_response_types_map,
2513
+ )
2514
+
2515
+ @validate_call
2516
+ async def get_asset_edits_without_preload_content(
2517
+ self,
2518
+ id: UUID,
2519
+ _request_timeout: Union[
2520
+ None,
2521
+ Annotated[StrictFloat, Field(gt=0)],
2522
+ Tuple[
2523
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
2524
+ ],
2525
+ ] = None,
2526
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2527
+ _content_type: Optional[StrictStr] = None,
2528
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2529
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2530
+ ) -> RESTResponseType:
2531
+ """Retrieve edits for an existing asset
2532
+
2533
+ Retrieve a series of edit actions (crop, rotate, mirror) associated with the specified asset.
2534
+
2535
+ :param id: (required)
2536
+ :type id: UUID
2537
+ :param _request_timeout: timeout setting for this request. If one
2538
+ number provided, it will be total request
2539
+ timeout. It can also be a pair (tuple) of
2540
+ (connection, read) timeouts.
2541
+ :type _request_timeout: int, tuple(int, int), optional
2542
+ :param _request_auth: set to override the auth_settings for an a single
2543
+ request; this effectively ignores the
2544
+ authentication in the spec for a single request.
2545
+ :type _request_auth: dict, optional
2546
+ :param _content_type: force content-type for the request.
2547
+ :type _content_type: str, Optional
2548
+ :param _headers: set to override the headers for a single
2549
+ request; this effectively ignores the headers
2550
+ in the spec for a single request.
2551
+ :type _headers: dict, optional
2552
+ :param _host_index: set to override the host_index for a single
2553
+ request; this effectively ignores the host_index
2554
+ in the spec for a single request.
2555
+ :type _host_index: int, optional
2556
+ :return: Returns the result object.
2557
+ """ # noqa: E501
2558
+
2559
+ _param = self._get_asset_edits_serialize(
2560
+ id=id,
2561
+ _request_auth=_request_auth,
2562
+ _content_type=_content_type,
2563
+ _headers=_headers,
2564
+ _host_index=_host_index,
2565
+ )
2566
+
2567
+ _response_types_map: Dict[str, Optional[str]] = {
2568
+ "200": "AssetEditsDto",
2569
+ }
2570
+ response_data = await self.api_client.call_api(
2571
+ *_param, _request_timeout=_request_timeout
2572
+ )
2573
+ return response_data.response
2574
+
2575
+ def _get_asset_edits_serialize(
2576
+ self,
2577
+ id,
2578
+ _request_auth,
2579
+ _content_type,
2580
+ _headers,
2581
+ _host_index,
2582
+ ) -> RequestSerialized:
2583
+ _host = None
2584
+
2585
+ _collection_formats: Dict[str, str] = {}
2586
+
2587
+ _path_params: Dict[str, str] = {}
2588
+ _query_params: List[Tuple[str, str]] = []
2589
+ _header_params: Dict[str, Optional[str]] = _headers or {}
2590
+ _form_params: List[Tuple[str, str]] = []
2591
+ _files: Dict[
2592
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
2593
+ ] = {}
2594
+ _body_params: Optional[bytes] = None
2595
+
2596
+ # process the path parameters
2597
+ if id is not None:
2598
+ _path_params["id"] = id
2599
+ # process the query parameters
2600
+ # process the header parameters
2601
+ # process the form parameters
2602
+ # process the body parameter
2603
+
2604
+ # set the HTTP header `Accept`
2605
+ if "Accept" not in _header_params:
2606
+ _header_params["Accept"] = self.api_client.select_header_accept(
2607
+ ["application/json"]
2608
+ )
2609
+
2610
+ # authentication setting
2611
+ _auth_settings: List[str] = ["cookie", "api_key", "bearer"]
2612
+
2613
+ return self.api_client.param_serialize(
2614
+ method="GET",
2615
+ resource_path="/assets/{id}/edits",
2616
+ path_params=_path_params,
2617
+ query_params=_query_params,
2618
+ header_params=_header_params,
2619
+ body=_body_params,
2620
+ post_params=_form_params,
2621
+ files=_files,
2622
+ auth_settings=_auth_settings,
2623
+ collection_formats=_collection_formats,
2624
+ _host=_host,
2625
+ _request_auth=_request_auth,
2626
+ )
2627
+
2628
+ @validate_call
2629
+ async def get_asset_info(
2630
+ self,
2631
+ id: UUID,
2632
+ key: Optional[StrictStr] = None,
2633
+ slug: Optional[StrictStr] = None,
2634
+ _request_timeout: Union[
2635
+ None,
2636
+ Annotated[StrictFloat, Field(gt=0)],
2637
+ Tuple[
2638
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
2639
+ ],
2640
+ ] = None,
2641
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2642
+ _content_type: Optional[StrictStr] = None,
2643
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2644
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2645
+ ) -> AssetResponseDto:
2646
+ """Retrieve an asset
2647
+
2648
+ Retrieve detailed information about a specific asset.
2649
+
2650
+ :param id: (required)
2651
+ :type id: UUID
2652
+ :param key:
2653
+ :type key: str
2654
+ :param slug:
2655
+ :type slug: str
2656
+ :param _request_timeout: timeout setting for this request. If one
2657
+ number provided, it will be total request
2658
+ timeout. It can also be a pair (tuple) of
2659
+ (connection, read) timeouts.
2660
+ :type _request_timeout: int, tuple(int, int), optional
2661
+ :param _request_auth: set to override the auth_settings for an a single
2662
+ request; this effectively ignores the
2663
+ authentication in the spec for a single request.
2664
+ :type _request_auth: dict, optional
2665
+ :param _content_type: force content-type for the request.
2666
+ :type _content_type: str, Optional
2667
+ :param _headers: set to override the headers for a single
2668
+ request; this effectively ignores the headers
2669
+ in the spec for a single request.
2670
+ :type _headers: dict, optional
2671
+ :param _host_index: set to override the host_index for a single
2672
+ request; this effectively ignores the host_index
2673
+ in the spec for a single request.
2674
+ :type _host_index: int, optional
2675
+ :return: Returns the result object.
2676
+ """ # noqa: E501
2677
+
2678
+ _param = self._get_asset_info_serialize(
2679
+ id=id,
2680
+ key=key,
2681
+ slug=slug,
2682
+ _request_auth=_request_auth,
2683
+ _content_type=_content_type,
2684
+ _headers=_headers,
2685
+ _host_index=_host_index,
2686
+ )
2687
+
2688
+ _response_types_map: Dict[str, Optional[str]] = {
2689
+ "200": "AssetResponseDto",
2690
+ }
2691
+ response_data = await self.api_client.call_api(
2692
+ *_param, _request_timeout=_request_timeout
2693
+ )
2694
+ await response_data.read()
2695
+ return self.api_client.response_deserialize(
2696
+ response_data=response_data,
2697
+ response_types_map=_response_types_map,
2698
+ ).data
2699
+
2700
+ @validate_call
2701
+ async def get_asset_info_with_http_info(
2702
+ self,
2703
+ id: UUID,
2704
+ key: Optional[StrictStr] = None,
2705
+ slug: Optional[StrictStr] = None,
2706
+ _request_timeout: Union[
2707
+ None,
2708
+ Annotated[StrictFloat, Field(gt=0)],
2709
+ Tuple[
2710
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
2711
+ ],
2712
+ ] = None,
2713
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2714
+ _content_type: Optional[StrictStr] = None,
2715
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2716
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2717
+ ) -> ApiResponse[AssetResponseDto]:
2718
+ """Retrieve an asset
2719
+
2720
+ Retrieve detailed information about a specific asset.
2721
+
2722
+ :param id: (required)
2723
+ :type id: UUID
2724
+ :param key:
2725
+ :type key: str
2726
+ :param slug:
2727
+ :type slug: str
2728
+ :param _request_timeout: timeout setting for this request. If one
2729
+ number provided, it will be total request
2730
+ timeout. It can also be a pair (tuple) of
2731
+ (connection, read) timeouts.
2732
+ :type _request_timeout: int, tuple(int, int), optional
2733
+ :param _request_auth: set to override the auth_settings for an a single
2734
+ request; this effectively ignores the
2735
+ authentication in the spec for a single request.
2736
+ :type _request_auth: dict, optional
2737
+ :param _content_type: force content-type for the request.
2738
+ :type _content_type: str, Optional
2739
+ :param _headers: set to override the headers for a single
2740
+ request; this effectively ignores the headers
2741
+ in the spec for a single request.
2742
+ :type _headers: dict, optional
2743
+ :param _host_index: set to override the host_index for a single
2744
+ request; this effectively ignores the host_index
2745
+ in the spec for a single request.
2746
+ :type _host_index: int, optional
2747
+ :return: Returns the result object.
2748
+ """ # noqa: E501
2749
+
2750
+ _param = self._get_asset_info_serialize(
2751
+ id=id,
2752
+ key=key,
2753
+ slug=slug,
2754
+ _request_auth=_request_auth,
2755
+ _content_type=_content_type,
2756
+ _headers=_headers,
2757
+ _host_index=_host_index,
2758
+ )
2759
+
2760
+ _response_types_map: Dict[str, Optional[str]] = {
2761
+ "200": "AssetResponseDto",
2762
+ }
2763
+ response_data = await self.api_client.call_api(
2764
+ *_param, _request_timeout=_request_timeout
2765
+ )
2766
+ await response_data.read()
2767
+ return self.api_client.response_deserialize(
2768
+ response_data=response_data,
2769
+ response_types_map=_response_types_map,
2770
+ )
2771
+
2772
+ @validate_call
2773
+ async def get_asset_info_without_preload_content(
2774
+ self,
2775
+ id: UUID,
2776
+ key: Optional[StrictStr] = None,
2777
+ slug: Optional[StrictStr] = None,
2778
+ _request_timeout: Union[
2779
+ None,
2780
+ Annotated[StrictFloat, Field(gt=0)],
2781
+ Tuple[
2782
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
2783
+ ],
2784
+ ] = None,
2785
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2786
+ _content_type: Optional[StrictStr] = None,
2787
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2788
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2789
+ ) -> RESTResponseType:
2790
+ """Retrieve an asset
2791
+
2792
+ Retrieve detailed information about a specific asset.
2793
+
2794
+ :param id: (required)
2795
+ :type id: UUID
2796
+ :param key:
2797
+ :type key: str
2798
+ :param slug:
2799
+ :type slug: str
2800
+ :param _request_timeout: timeout setting for this request. If one
2801
+ number provided, it will be total request
2802
+ timeout. It can also be a pair (tuple) of
2803
+ (connection, read) timeouts.
2804
+ :type _request_timeout: int, tuple(int, int), optional
2805
+ :param _request_auth: set to override the auth_settings for an a single
2806
+ request; this effectively ignores the
2807
+ authentication in the spec for a single request.
2808
+ :type _request_auth: dict, optional
2809
+ :param _content_type: force content-type for the request.
2810
+ :type _content_type: str, Optional
2811
+ :param _headers: set to override the headers for a single
2812
+ request; this effectively ignores the headers
2813
+ in the spec for a single request.
2814
+ :type _headers: dict, optional
2815
+ :param _host_index: set to override the host_index for a single
2816
+ request; this effectively ignores the host_index
2817
+ in the spec for a single request.
2818
+ :type _host_index: int, optional
2819
+ :return: Returns the result object.
2820
+ """ # noqa: E501
2821
+
2822
+ _param = self._get_asset_info_serialize(
2823
+ id=id,
2824
+ key=key,
2825
+ slug=slug,
2826
+ _request_auth=_request_auth,
2827
+ _content_type=_content_type,
2828
+ _headers=_headers,
2829
+ _host_index=_host_index,
2830
+ )
2831
+
2832
+ _response_types_map: Dict[str, Optional[str]] = {
2833
+ "200": "AssetResponseDto",
2834
+ }
2835
+ response_data = await self.api_client.call_api(
2836
+ *_param, _request_timeout=_request_timeout
2837
+ )
2838
+ return response_data.response
2839
+
2840
+ def _get_asset_info_serialize(
2841
+ self,
2842
+ id,
2843
+ key,
2844
+ slug,
2845
+ _request_auth,
2846
+ _content_type,
2847
+ _headers,
2848
+ _host_index,
2849
+ ) -> RequestSerialized:
2850
+ _host = None
2851
+
2852
+ _collection_formats: Dict[str, str] = {}
2853
+
2854
+ _path_params: Dict[str, str] = {}
2855
+ _query_params: List[Tuple[str, str]] = []
2856
+ _header_params: Dict[str, Optional[str]] = _headers or {}
2857
+ _form_params: List[Tuple[str, str]] = []
2858
+ _files: Dict[
2859
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
2860
+ ] = {}
2861
+ _body_params: Optional[bytes] = None
2862
+
2863
+ # process the path parameters
2864
+ if id is not None:
2865
+ _path_params["id"] = id
2866
+ # process the query parameters
2867
+ if key is not None:
2868
+ _query_params.append(("key", key))
2083
2869
 
2084
2870
  if slug is not None:
2085
2871
  _query_params.append(("slug", slug))
@@ -2356,8 +3142,8 @@ class AssetsApi:
2356
3142
  @validate_call
2357
3143
  async def get_asset_metadata_by_key(
2358
3144
  self,
2359
- id: UUID,
2360
- key: AssetMetadataKey,
3145
+ id: Annotated[UUID, Field(description="Asset ID")],
3146
+ key: Annotated[StrictStr, Field(description="Metadata key")],
2361
3147
  _request_timeout: Union[
2362
3148
  None,
2363
3149
  Annotated[StrictFloat, Field(gt=0)],
@@ -2374,10 +3160,10 @@ class AssetsApi:
2374
3160
 
2375
3161
  Retrieve the value of a specific metadata key associated with the specified asset.
2376
3162
 
2377
- :param id: (required)
3163
+ :param id: Asset ID (required)
2378
3164
  :type id: UUID
2379
- :param key: (required)
2380
- :type key: AssetMetadataKey
3165
+ :param key: Metadata key (required)
3166
+ :type key: str
2381
3167
  :param _request_timeout: timeout setting for this request. If one
2382
3168
  number provided, it will be total request
2383
3169
  timeout. It can also be a pair (tuple) of
@@ -2424,8 +3210,8 @@ class AssetsApi:
2424
3210
  @validate_call
2425
3211
  async def get_asset_metadata_by_key_with_http_info(
2426
3212
  self,
2427
- id: UUID,
2428
- key: AssetMetadataKey,
3213
+ id: Annotated[UUID, Field(description="Asset ID")],
3214
+ key: Annotated[StrictStr, Field(description="Metadata key")],
2429
3215
  _request_timeout: Union[
2430
3216
  None,
2431
3217
  Annotated[StrictFloat, Field(gt=0)],
@@ -2442,10 +3228,10 @@ class AssetsApi:
2442
3228
 
2443
3229
  Retrieve the value of a specific metadata key associated with the specified asset.
2444
3230
 
2445
- :param id: (required)
3231
+ :param id: Asset ID (required)
2446
3232
  :type id: UUID
2447
- :param key: (required)
2448
- :type key: AssetMetadataKey
3233
+ :param key: Metadata key (required)
3234
+ :type key: str
2449
3235
  :param _request_timeout: timeout setting for this request. If one
2450
3236
  number provided, it will be total request
2451
3237
  timeout. It can also be a pair (tuple) of
@@ -2492,8 +3278,8 @@ class AssetsApi:
2492
3278
  @validate_call
2493
3279
  async def get_asset_metadata_by_key_without_preload_content(
2494
3280
  self,
2495
- id: UUID,
2496
- key: AssetMetadataKey,
3281
+ id: Annotated[UUID, Field(description="Asset ID")],
3282
+ key: Annotated[StrictStr, Field(description="Metadata key")],
2497
3283
  _request_timeout: Union[
2498
3284
  None,
2499
3285
  Annotated[StrictFloat, Field(gt=0)],
@@ -2510,10 +3296,10 @@ class AssetsApi:
2510
3296
 
2511
3297
  Retrieve the value of a specific metadata key associated with the specified asset.
2512
3298
 
2513
- :param id: (required)
3299
+ :param id: Asset ID (required)
2514
3300
  :type id: UUID
2515
- :param key: (required)
2516
- :type key: AssetMetadataKey
3301
+ :param key: Metadata key (required)
3302
+ :type key: str
2517
3303
  :param _request_timeout: timeout setting for this request. If one
2518
3304
  number provided, it will be total request
2519
3305
  timeout. It can also be a pair (tuple) of
@@ -2579,7 +3365,7 @@ class AssetsApi:
2579
3365
  if id is not None:
2580
3366
  _path_params["id"] = id
2581
3367
  if key is not None:
2582
- _path_params["key"] = key.value
3368
+ _path_params["key"] = key
2583
3369
  # process the query parameters
2584
3370
  # process the header parameters
2585
3371
  # process the form parameters
@@ -2853,9 +3639,15 @@ class AssetsApi:
2853
3639
  @validate_call
2854
3640
  async def get_asset_statistics(
2855
3641
  self,
2856
- is_favorite: Optional[StrictBool] = None,
2857
- is_trashed: Optional[StrictBool] = None,
2858
- visibility: Optional[AssetVisibility] = None,
3642
+ is_favorite: Annotated[
3643
+ Optional[StrictBool], Field(description="Filter by favorite status")
3644
+ ] = None,
3645
+ is_trashed: Annotated[
3646
+ Optional[StrictBool], Field(description="Filter by trash status")
3647
+ ] = None,
3648
+ visibility: Annotated[
3649
+ Optional[AssetVisibility], Field(description="Filter by visibility")
3650
+ ] = None,
2859
3651
  _request_timeout: Union[
2860
3652
  None,
2861
3653
  Annotated[StrictFloat, Field(gt=0)],
@@ -2872,11 +3664,11 @@ class AssetsApi:
2872
3664
 
2873
3665
  Retrieve various statistics about the assets owned by the authenticated user.
2874
3666
 
2875
- :param is_favorite:
3667
+ :param is_favorite: Filter by favorite status
2876
3668
  :type is_favorite: bool
2877
- :param is_trashed:
3669
+ :param is_trashed: Filter by trash status
2878
3670
  :type is_trashed: bool
2879
- :param visibility:
3671
+ :param visibility: Filter by visibility
2880
3672
  :type visibility: AssetVisibility
2881
3673
  :param _request_timeout: timeout setting for this request. If one
2882
3674
  number provided, it will be total request
@@ -2925,9 +3717,15 @@ class AssetsApi:
2925
3717
  @validate_call
2926
3718
  async def get_asset_statistics_with_http_info(
2927
3719
  self,
2928
- is_favorite: Optional[StrictBool] = None,
2929
- is_trashed: Optional[StrictBool] = None,
2930
- visibility: Optional[AssetVisibility] = None,
3720
+ is_favorite: Annotated[
3721
+ Optional[StrictBool], Field(description="Filter by favorite status")
3722
+ ] = None,
3723
+ is_trashed: Annotated[
3724
+ Optional[StrictBool], Field(description="Filter by trash status")
3725
+ ] = None,
3726
+ visibility: Annotated[
3727
+ Optional[AssetVisibility], Field(description="Filter by visibility")
3728
+ ] = None,
2931
3729
  _request_timeout: Union[
2932
3730
  None,
2933
3731
  Annotated[StrictFloat, Field(gt=0)],
@@ -2944,11 +3742,11 @@ class AssetsApi:
2944
3742
 
2945
3743
  Retrieve various statistics about the assets owned by the authenticated user.
2946
3744
 
2947
- :param is_favorite:
3745
+ :param is_favorite: Filter by favorite status
2948
3746
  :type is_favorite: bool
2949
- :param is_trashed:
3747
+ :param is_trashed: Filter by trash status
2950
3748
  :type is_trashed: bool
2951
- :param visibility:
3749
+ :param visibility: Filter by visibility
2952
3750
  :type visibility: AssetVisibility
2953
3751
  :param _request_timeout: timeout setting for this request. If one
2954
3752
  number provided, it will be total request
@@ -2997,9 +3795,15 @@ class AssetsApi:
2997
3795
  @validate_call
2998
3796
  async def get_asset_statistics_without_preload_content(
2999
3797
  self,
3000
- is_favorite: Optional[StrictBool] = None,
3001
- is_trashed: Optional[StrictBool] = None,
3002
- visibility: Optional[AssetVisibility] = None,
3798
+ is_favorite: Annotated[
3799
+ Optional[StrictBool], Field(description="Filter by favorite status")
3800
+ ] = None,
3801
+ is_trashed: Annotated[
3802
+ Optional[StrictBool], Field(description="Filter by trash status")
3803
+ ] = None,
3804
+ visibility: Annotated[
3805
+ Optional[AssetVisibility], Field(description="Filter by visibility")
3806
+ ] = None,
3003
3807
  _request_timeout: Union[
3004
3808
  None,
3005
3809
  Annotated[StrictFloat, Field(gt=0)],
@@ -3016,11 +3820,11 @@ class AssetsApi:
3016
3820
 
3017
3821
  Retrieve various statistics about the assets owned by the authenticated user.
3018
3822
 
3019
- :param is_favorite:
3823
+ :param is_favorite: Filter by favorite status
3020
3824
  :type is_favorite: bool
3021
- :param is_trashed:
3825
+ :param is_trashed: Filter by trash status
3022
3826
  :type is_trashed: bool
3023
- :param visibility:
3827
+ :param visibility: Filter by visibility
3024
3828
  :type visibility: AssetVisibility
3025
3829
  :param _request_timeout: timeout setting for this request. If one
3026
3830
  number provided, it will be total request
@@ -3127,11 +3931,14 @@ class AssetsApi:
3127
3931
  @validate_call
3128
3932
  async def get_random(
3129
3933
  self,
3130
- count: Optional[
3131
- Union[
3132
- Annotated[float, Field(strict=True, ge=1)],
3133
- Annotated[int, Field(strict=True, ge=1)],
3134
- ]
3934
+ count: Annotated[
3935
+ Optional[
3936
+ Union[
3937
+ Annotated[float, Field(strict=True, ge=1)],
3938
+ Annotated[int, Field(strict=True, ge=1)],
3939
+ ]
3940
+ ],
3941
+ Field(description="Number of random assets to return"),
3135
3942
  ] = None,
3136
3943
  _request_timeout: Union[
3137
3944
  None,
@@ -3149,7 +3956,7 @@ class AssetsApi:
3149
3956
 
3150
3957
  Retrieve a specified number of random assets for the authenticated user.
3151
3958
 
3152
- :param count:
3959
+ :param count: Number of random assets to return
3153
3960
  :type count: float
3154
3961
  :param _request_timeout: timeout setting for this request. If one
3155
3962
  number provided, it will be total request
@@ -3197,11 +4004,14 @@ class AssetsApi:
3197
4004
  @validate_call
3198
4005
  async def get_random_with_http_info(
3199
4006
  self,
3200
- count: Optional[
3201
- Union[
3202
- Annotated[float, Field(strict=True, ge=1)],
3203
- Annotated[int, Field(strict=True, ge=1)],
3204
- ]
4007
+ count: Annotated[
4008
+ Optional[
4009
+ Union[
4010
+ Annotated[float, Field(strict=True, ge=1)],
4011
+ Annotated[int, Field(strict=True, ge=1)],
4012
+ ]
4013
+ ],
4014
+ Field(description="Number of random assets to return"),
3205
4015
  ] = None,
3206
4016
  _request_timeout: Union[
3207
4017
  None,
@@ -3219,7 +4029,7 @@ class AssetsApi:
3219
4029
 
3220
4030
  Retrieve a specified number of random assets for the authenticated user.
3221
4031
 
3222
- :param count:
4032
+ :param count: Number of random assets to return
3223
4033
  :type count: float
3224
4034
  :param _request_timeout: timeout setting for this request. If one
3225
4035
  number provided, it will be total request
@@ -3267,11 +4077,14 @@ class AssetsApi:
3267
4077
  @validate_call
3268
4078
  async def get_random_without_preload_content(
3269
4079
  self,
3270
- count: Optional[
3271
- Union[
3272
- Annotated[float, Field(strict=True, ge=1)],
3273
- Annotated[int, Field(strict=True, ge=1)],
3274
- ]
4080
+ count: Annotated[
4081
+ Optional[
4082
+ Union[
4083
+ Annotated[float, Field(strict=True, ge=1)],
4084
+ Annotated[int, Field(strict=True, ge=1)],
4085
+ ]
4086
+ ],
4087
+ Field(description="Number of random assets to return"),
3275
4088
  ] = None,
3276
4089
  _request_timeout: Union[
3277
4090
  None,
@@ -3289,7 +4102,7 @@ class AssetsApi:
3289
4102
 
3290
4103
  Retrieve a specified number of random assets for the authenticated user.
3291
4104
 
3292
- :param count:
4105
+ :param count: Number of random assets to return
3293
4106
  :type count: float
3294
4107
  :param _request_timeout: timeout setting for this request. If one
3295
4108
  number provided, it will be total request
@@ -3643,8 +4456,243 @@ class AssetsApi:
3643
4456
  _auth_settings: List[str] = ["cookie", "api_key", "bearer"]
3644
4457
 
3645
4458
  return self.api_client.param_serialize(
3646
- method="GET",
3647
- resource_path="/assets/{id}/video/playback",
4459
+ method="GET",
4460
+ resource_path="/assets/{id}/video/playback",
4461
+ path_params=_path_params,
4462
+ query_params=_query_params,
4463
+ header_params=_header_params,
4464
+ body=_body_params,
4465
+ post_params=_form_params,
4466
+ files=_files,
4467
+ auth_settings=_auth_settings,
4468
+ collection_formats=_collection_formats,
4469
+ _host=_host,
4470
+ _request_auth=_request_auth,
4471
+ )
4472
+
4473
+ @validate_call
4474
+ async def remove_asset_edits(
4475
+ self,
4476
+ id: UUID,
4477
+ _request_timeout: Union[
4478
+ None,
4479
+ Annotated[StrictFloat, Field(gt=0)],
4480
+ Tuple[
4481
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
4482
+ ],
4483
+ ] = None,
4484
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
4485
+ _content_type: Optional[StrictStr] = None,
4486
+ _headers: Optional[Dict[StrictStr, Any]] = None,
4487
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
4488
+ ) -> None:
4489
+ """Remove edits from an existing asset
4490
+
4491
+ Removes all edit actions (crop, rotate, mirror) associated with the specified asset.
4492
+
4493
+ :param id: (required)
4494
+ :type id: UUID
4495
+ :param _request_timeout: timeout setting for this request. If one
4496
+ number provided, it will be total request
4497
+ timeout. It can also be a pair (tuple) of
4498
+ (connection, read) timeouts.
4499
+ :type _request_timeout: int, tuple(int, int), optional
4500
+ :param _request_auth: set to override the auth_settings for an a single
4501
+ request; this effectively ignores the
4502
+ authentication in the spec for a single request.
4503
+ :type _request_auth: dict, optional
4504
+ :param _content_type: force content-type for the request.
4505
+ :type _content_type: str, Optional
4506
+ :param _headers: set to override the headers for a single
4507
+ request; this effectively ignores the headers
4508
+ in the spec for a single request.
4509
+ :type _headers: dict, optional
4510
+ :param _host_index: set to override the host_index for a single
4511
+ request; this effectively ignores the host_index
4512
+ in the spec for a single request.
4513
+ :type _host_index: int, optional
4514
+ :return: Returns the result object.
4515
+ """ # noqa: E501
4516
+
4517
+ _param = self._remove_asset_edits_serialize(
4518
+ id=id,
4519
+ _request_auth=_request_auth,
4520
+ _content_type=_content_type,
4521
+ _headers=_headers,
4522
+ _host_index=_host_index,
4523
+ )
4524
+
4525
+ _response_types_map: Dict[str, Optional[str]] = {
4526
+ "204": None,
4527
+ }
4528
+ response_data = await self.api_client.call_api(
4529
+ *_param, _request_timeout=_request_timeout
4530
+ )
4531
+ await response_data.read()
4532
+ return self.api_client.response_deserialize(
4533
+ response_data=response_data,
4534
+ response_types_map=_response_types_map,
4535
+ ).data
4536
+
4537
+ @validate_call
4538
+ async def remove_asset_edits_with_http_info(
4539
+ self,
4540
+ id: UUID,
4541
+ _request_timeout: Union[
4542
+ None,
4543
+ Annotated[StrictFloat, Field(gt=0)],
4544
+ Tuple[
4545
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
4546
+ ],
4547
+ ] = None,
4548
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
4549
+ _content_type: Optional[StrictStr] = None,
4550
+ _headers: Optional[Dict[StrictStr, Any]] = None,
4551
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
4552
+ ) -> ApiResponse[None]:
4553
+ """Remove edits from an existing asset
4554
+
4555
+ Removes all edit actions (crop, rotate, mirror) associated with the specified asset.
4556
+
4557
+ :param id: (required)
4558
+ :type id: UUID
4559
+ :param _request_timeout: timeout setting for this request. If one
4560
+ number provided, it will be total request
4561
+ timeout. It can also be a pair (tuple) of
4562
+ (connection, read) timeouts.
4563
+ :type _request_timeout: int, tuple(int, int), optional
4564
+ :param _request_auth: set to override the auth_settings for an a single
4565
+ request; this effectively ignores the
4566
+ authentication in the spec for a single request.
4567
+ :type _request_auth: dict, optional
4568
+ :param _content_type: force content-type for the request.
4569
+ :type _content_type: str, Optional
4570
+ :param _headers: set to override the headers for a single
4571
+ request; this effectively ignores the headers
4572
+ in the spec for a single request.
4573
+ :type _headers: dict, optional
4574
+ :param _host_index: set to override the host_index for a single
4575
+ request; this effectively ignores the host_index
4576
+ in the spec for a single request.
4577
+ :type _host_index: int, optional
4578
+ :return: Returns the result object.
4579
+ """ # noqa: E501
4580
+
4581
+ _param = self._remove_asset_edits_serialize(
4582
+ id=id,
4583
+ _request_auth=_request_auth,
4584
+ _content_type=_content_type,
4585
+ _headers=_headers,
4586
+ _host_index=_host_index,
4587
+ )
4588
+
4589
+ _response_types_map: Dict[str, Optional[str]] = {
4590
+ "204": None,
4591
+ }
4592
+ response_data = await self.api_client.call_api(
4593
+ *_param, _request_timeout=_request_timeout
4594
+ )
4595
+ await response_data.read()
4596
+ return self.api_client.response_deserialize(
4597
+ response_data=response_data,
4598
+ response_types_map=_response_types_map,
4599
+ )
4600
+
4601
+ @validate_call
4602
+ async def remove_asset_edits_without_preload_content(
4603
+ self,
4604
+ id: UUID,
4605
+ _request_timeout: Union[
4606
+ None,
4607
+ Annotated[StrictFloat, Field(gt=0)],
4608
+ Tuple[
4609
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
4610
+ ],
4611
+ ] = None,
4612
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
4613
+ _content_type: Optional[StrictStr] = None,
4614
+ _headers: Optional[Dict[StrictStr, Any]] = None,
4615
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
4616
+ ) -> RESTResponseType:
4617
+ """Remove edits from an existing asset
4618
+
4619
+ Removes all edit actions (crop, rotate, mirror) associated with the specified asset.
4620
+
4621
+ :param id: (required)
4622
+ :type id: UUID
4623
+ :param _request_timeout: timeout setting for this request. If one
4624
+ number provided, it will be total request
4625
+ timeout. It can also be a pair (tuple) of
4626
+ (connection, read) timeouts.
4627
+ :type _request_timeout: int, tuple(int, int), optional
4628
+ :param _request_auth: set to override the auth_settings for an a single
4629
+ request; this effectively ignores the
4630
+ authentication in the spec for a single request.
4631
+ :type _request_auth: dict, optional
4632
+ :param _content_type: force content-type for the request.
4633
+ :type _content_type: str, Optional
4634
+ :param _headers: set to override the headers for a single
4635
+ request; this effectively ignores the headers
4636
+ in the spec for a single request.
4637
+ :type _headers: dict, optional
4638
+ :param _host_index: set to override the host_index for a single
4639
+ request; this effectively ignores the host_index
4640
+ in the spec for a single request.
4641
+ :type _host_index: int, optional
4642
+ :return: Returns the result object.
4643
+ """ # noqa: E501
4644
+
4645
+ _param = self._remove_asset_edits_serialize(
4646
+ id=id,
4647
+ _request_auth=_request_auth,
4648
+ _content_type=_content_type,
4649
+ _headers=_headers,
4650
+ _host_index=_host_index,
4651
+ )
4652
+
4653
+ _response_types_map: Dict[str, Optional[str]] = {
4654
+ "204": None,
4655
+ }
4656
+ response_data = await self.api_client.call_api(
4657
+ *_param, _request_timeout=_request_timeout
4658
+ )
4659
+ return response_data.response
4660
+
4661
+ def _remove_asset_edits_serialize(
4662
+ self,
4663
+ id,
4664
+ _request_auth,
4665
+ _content_type,
4666
+ _headers,
4667
+ _host_index,
4668
+ ) -> RequestSerialized:
4669
+ _host = None
4670
+
4671
+ _collection_formats: Dict[str, str] = {}
4672
+
4673
+ _path_params: Dict[str, str] = {}
4674
+ _query_params: List[Tuple[str, str]] = []
4675
+ _header_params: Dict[str, Optional[str]] = _headers or {}
4676
+ _form_params: List[Tuple[str, str]] = []
4677
+ _files: Dict[
4678
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
4679
+ ] = {}
4680
+ _body_params: Optional[bytes] = None
4681
+
4682
+ # process the path parameters
4683
+ if id is not None:
4684
+ _path_params["id"] = id
4685
+ # process the query parameters
4686
+ # process the header parameters
4687
+ # process the form parameters
4688
+ # process the body parameter
4689
+
4690
+ # authentication setting
4691
+ _auth_settings: List[str] = ["cookie", "api_key", "bearer"]
4692
+
4693
+ return self.api_client.param_serialize(
4694
+ method="DELETE",
4695
+ resource_path="/assets/{id}/edits",
3648
4696
  path_params=_path_params,
3649
4697
  query_params=_query_params,
3650
4698
  header_params=_header_params,
@@ -3661,15 +4709,22 @@ class AssetsApi:
3661
4709
  async def replace_asset(
3662
4710
  self,
3663
4711
  id: UUID,
3664
- asset_data: Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]],
3665
- device_asset_id: StrictStr,
3666
- device_id: StrictStr,
3667
- file_created_at: datetime,
3668
- file_modified_at: datetime,
4712
+ asset_data: Annotated[
4713
+ Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]],
4714
+ Field(description="Asset file data"),
4715
+ ],
4716
+ device_asset_id: Annotated[StrictStr, Field(description="Device asset ID")],
4717
+ device_id: Annotated[StrictStr, Field(description="Device ID")],
4718
+ file_created_at: Annotated[datetime, Field(description="File creation date")],
4719
+ file_modified_at: Annotated[
4720
+ datetime, Field(description="File modification date")
4721
+ ],
3669
4722
  key: Optional[StrictStr] = None,
3670
4723
  slug: Optional[StrictStr] = None,
3671
- duration: Optional[StrictStr] = None,
3672
- filename: Optional[StrictStr] = None,
4724
+ duration: Annotated[
4725
+ Optional[StrictStr], Field(description="Duration (for videos)")
4726
+ ] = None,
4727
+ filename: Annotated[Optional[StrictStr], Field(description="Filename")] = None,
3673
4728
  _request_timeout: Union[
3674
4729
  None,
3675
4730
  Annotated[StrictFloat, Field(gt=0)],
@@ -3688,23 +4743,23 @@ class AssetsApi:
3688
4743
 
3689
4744
  :param id: (required)
3690
4745
  :type id: UUID
3691
- :param asset_data: (required)
4746
+ :param asset_data: Asset file data (required)
3692
4747
  :type asset_data: bytearray
3693
- :param device_asset_id: (required)
4748
+ :param device_asset_id: Device asset ID (required)
3694
4749
  :type device_asset_id: str
3695
- :param device_id: (required)
4750
+ :param device_id: Device ID (required)
3696
4751
  :type device_id: str
3697
- :param file_created_at: (required)
4752
+ :param file_created_at: File creation date (required)
3698
4753
  :type file_created_at: datetime
3699
- :param file_modified_at: (required)
4754
+ :param file_modified_at: File modification date (required)
3700
4755
  :type file_modified_at: datetime
3701
4756
  :param key:
3702
4757
  :type key: str
3703
4758
  :param slug:
3704
4759
  :type slug: str
3705
- :param duration:
4760
+ :param duration: Duration (for videos)
3706
4761
  :type duration: str
3707
- :param filename:
4762
+ :param filename: Filename
3708
4763
  :type filename: str
3709
4764
  :param _request_timeout: timeout setting for this request. If one
3710
4765
  number provided, it will be total request
@@ -3762,15 +4817,22 @@ class AssetsApi:
3762
4817
  async def replace_asset_with_http_info(
3763
4818
  self,
3764
4819
  id: UUID,
3765
- asset_data: Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]],
3766
- device_asset_id: StrictStr,
3767
- device_id: StrictStr,
3768
- file_created_at: datetime,
3769
- file_modified_at: datetime,
4820
+ asset_data: Annotated[
4821
+ Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]],
4822
+ Field(description="Asset file data"),
4823
+ ],
4824
+ device_asset_id: Annotated[StrictStr, Field(description="Device asset ID")],
4825
+ device_id: Annotated[StrictStr, Field(description="Device ID")],
4826
+ file_created_at: Annotated[datetime, Field(description="File creation date")],
4827
+ file_modified_at: Annotated[
4828
+ datetime, Field(description="File modification date")
4829
+ ],
3770
4830
  key: Optional[StrictStr] = None,
3771
4831
  slug: Optional[StrictStr] = None,
3772
- duration: Optional[StrictStr] = None,
3773
- filename: Optional[StrictStr] = None,
4832
+ duration: Annotated[
4833
+ Optional[StrictStr], Field(description="Duration (for videos)")
4834
+ ] = None,
4835
+ filename: Annotated[Optional[StrictStr], Field(description="Filename")] = None,
3774
4836
  _request_timeout: Union[
3775
4837
  None,
3776
4838
  Annotated[StrictFloat, Field(gt=0)],
@@ -3789,23 +4851,23 @@ class AssetsApi:
3789
4851
 
3790
4852
  :param id: (required)
3791
4853
  :type id: UUID
3792
- :param asset_data: (required)
4854
+ :param asset_data: Asset file data (required)
3793
4855
  :type asset_data: bytearray
3794
- :param device_asset_id: (required)
4856
+ :param device_asset_id: Device asset ID (required)
3795
4857
  :type device_asset_id: str
3796
- :param device_id: (required)
4858
+ :param device_id: Device ID (required)
3797
4859
  :type device_id: str
3798
- :param file_created_at: (required)
4860
+ :param file_created_at: File creation date (required)
3799
4861
  :type file_created_at: datetime
3800
- :param file_modified_at: (required)
4862
+ :param file_modified_at: File modification date (required)
3801
4863
  :type file_modified_at: datetime
3802
4864
  :param key:
3803
4865
  :type key: str
3804
4866
  :param slug:
3805
4867
  :type slug: str
3806
- :param duration:
4868
+ :param duration: Duration (for videos)
3807
4869
  :type duration: str
3808
- :param filename:
4870
+ :param filename: Filename
3809
4871
  :type filename: str
3810
4872
  :param _request_timeout: timeout setting for this request. If one
3811
4873
  number provided, it will be total request
@@ -3863,15 +4925,22 @@ class AssetsApi:
3863
4925
  async def replace_asset_without_preload_content(
3864
4926
  self,
3865
4927
  id: UUID,
3866
- asset_data: Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]],
3867
- device_asset_id: StrictStr,
3868
- device_id: StrictStr,
3869
- file_created_at: datetime,
3870
- file_modified_at: datetime,
4928
+ asset_data: Annotated[
4929
+ Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]],
4930
+ Field(description="Asset file data"),
4931
+ ],
4932
+ device_asset_id: Annotated[StrictStr, Field(description="Device asset ID")],
4933
+ device_id: Annotated[StrictStr, Field(description="Device ID")],
4934
+ file_created_at: Annotated[datetime, Field(description="File creation date")],
4935
+ file_modified_at: Annotated[
4936
+ datetime, Field(description="File modification date")
4937
+ ],
3871
4938
  key: Optional[StrictStr] = None,
3872
4939
  slug: Optional[StrictStr] = None,
3873
- duration: Optional[StrictStr] = None,
3874
- filename: Optional[StrictStr] = None,
4940
+ duration: Annotated[
4941
+ Optional[StrictStr], Field(description="Duration (for videos)")
4942
+ ] = None,
4943
+ filename: Annotated[Optional[StrictStr], Field(description="Filename")] = None,
3875
4944
  _request_timeout: Union[
3876
4945
  None,
3877
4946
  Annotated[StrictFloat, Field(gt=0)],
@@ -3890,23 +4959,23 @@ class AssetsApi:
3890
4959
 
3891
4960
  :param id: (required)
3892
4961
  :type id: UUID
3893
- :param asset_data: (required)
4962
+ :param asset_data: Asset file data (required)
3894
4963
  :type asset_data: bytearray
3895
- :param device_asset_id: (required)
4964
+ :param device_asset_id: Device asset ID (required)
3896
4965
  :type device_asset_id: str
3897
- :param device_id: (required)
4966
+ :param device_id: Device ID (required)
3898
4967
  :type device_id: str
3899
- :param file_created_at: (required)
4968
+ :param file_created_at: File creation date (required)
3900
4969
  :type file_created_at: datetime
3901
- :param file_modified_at: (required)
4970
+ :param file_modified_at: File modification date (required)
3902
4971
  :type file_modified_at: datetime
3903
4972
  :param key:
3904
4973
  :type key: str
3905
4974
  :param slug:
3906
4975
  :type slug: str
3907
- :param duration:
4976
+ :param duration: Duration (for videos)
3908
4977
  :type duration: str
3909
- :param filename:
4978
+ :param filename: Filename
3910
4979
  :type filename: str
3911
4980
  :param _request_timeout: timeout setting for this request. If one
3912
4981
  number provided, it will be total request
@@ -5070,15 +6139,270 @@ class AssetsApi:
5070
6139
  _request_auth=_request_auth,
5071
6140
  )
5072
6141
 
6142
+ @validate_call
6143
+ async def update_bulk_asset_metadata(
6144
+ self,
6145
+ asset_metadata_bulk_upsert_dto: AssetMetadataBulkUpsertDto,
6146
+ _request_timeout: Union[
6147
+ None,
6148
+ Annotated[StrictFloat, Field(gt=0)],
6149
+ Tuple[
6150
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
6151
+ ],
6152
+ ] = None,
6153
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
6154
+ _content_type: Optional[StrictStr] = None,
6155
+ _headers: Optional[Dict[StrictStr, Any]] = None,
6156
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
6157
+ ) -> List[AssetMetadataBulkResponseDto]:
6158
+ """Upsert asset metadata
6159
+
6160
+ Upsert metadata key-value pairs for multiple assets.
6161
+
6162
+ :param asset_metadata_bulk_upsert_dto: (required)
6163
+ :type asset_metadata_bulk_upsert_dto: AssetMetadataBulkUpsertDto
6164
+ :param _request_timeout: timeout setting for this request. If one
6165
+ number provided, it will be total request
6166
+ timeout. It can also be a pair (tuple) of
6167
+ (connection, read) timeouts.
6168
+ :type _request_timeout: int, tuple(int, int), optional
6169
+ :param _request_auth: set to override the auth_settings for an a single
6170
+ request; this effectively ignores the
6171
+ authentication in the spec for a single request.
6172
+ :type _request_auth: dict, optional
6173
+ :param _content_type: force content-type for the request.
6174
+ :type _content_type: str, Optional
6175
+ :param _headers: set to override the headers for a single
6176
+ request; this effectively ignores the headers
6177
+ in the spec for a single request.
6178
+ :type _headers: dict, optional
6179
+ :param _host_index: set to override the host_index for a single
6180
+ request; this effectively ignores the host_index
6181
+ in the spec for a single request.
6182
+ :type _host_index: int, optional
6183
+ :return: Returns the result object.
6184
+ """ # noqa: E501
6185
+
6186
+ _param = self._update_bulk_asset_metadata_serialize(
6187
+ asset_metadata_bulk_upsert_dto=asset_metadata_bulk_upsert_dto,
6188
+ _request_auth=_request_auth,
6189
+ _content_type=_content_type,
6190
+ _headers=_headers,
6191
+ _host_index=_host_index,
6192
+ )
6193
+
6194
+ _response_types_map: Dict[str, Optional[str]] = {
6195
+ "200": "List[AssetMetadataBulkResponseDto]",
6196
+ }
6197
+ response_data = await self.api_client.call_api(
6198
+ *_param, _request_timeout=_request_timeout
6199
+ )
6200
+ await response_data.read()
6201
+ return self.api_client.response_deserialize(
6202
+ response_data=response_data,
6203
+ response_types_map=_response_types_map,
6204
+ ).data
6205
+
6206
+ @validate_call
6207
+ async def update_bulk_asset_metadata_with_http_info(
6208
+ self,
6209
+ asset_metadata_bulk_upsert_dto: AssetMetadataBulkUpsertDto,
6210
+ _request_timeout: Union[
6211
+ None,
6212
+ Annotated[StrictFloat, Field(gt=0)],
6213
+ Tuple[
6214
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
6215
+ ],
6216
+ ] = None,
6217
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
6218
+ _content_type: Optional[StrictStr] = None,
6219
+ _headers: Optional[Dict[StrictStr, Any]] = None,
6220
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
6221
+ ) -> ApiResponse[List[AssetMetadataBulkResponseDto]]:
6222
+ """Upsert asset metadata
6223
+
6224
+ Upsert metadata key-value pairs for multiple assets.
6225
+
6226
+ :param asset_metadata_bulk_upsert_dto: (required)
6227
+ :type asset_metadata_bulk_upsert_dto: AssetMetadataBulkUpsertDto
6228
+ :param _request_timeout: timeout setting for this request. If one
6229
+ number provided, it will be total request
6230
+ timeout. It can also be a pair (tuple) of
6231
+ (connection, read) timeouts.
6232
+ :type _request_timeout: int, tuple(int, int), optional
6233
+ :param _request_auth: set to override the auth_settings for an a single
6234
+ request; this effectively ignores the
6235
+ authentication in the spec for a single request.
6236
+ :type _request_auth: dict, optional
6237
+ :param _content_type: force content-type for the request.
6238
+ :type _content_type: str, Optional
6239
+ :param _headers: set to override the headers for a single
6240
+ request; this effectively ignores the headers
6241
+ in the spec for a single request.
6242
+ :type _headers: dict, optional
6243
+ :param _host_index: set to override the host_index for a single
6244
+ request; this effectively ignores the host_index
6245
+ in the spec for a single request.
6246
+ :type _host_index: int, optional
6247
+ :return: Returns the result object.
6248
+ """ # noqa: E501
6249
+
6250
+ _param = self._update_bulk_asset_metadata_serialize(
6251
+ asset_metadata_bulk_upsert_dto=asset_metadata_bulk_upsert_dto,
6252
+ _request_auth=_request_auth,
6253
+ _content_type=_content_type,
6254
+ _headers=_headers,
6255
+ _host_index=_host_index,
6256
+ )
6257
+
6258
+ _response_types_map: Dict[str, Optional[str]] = {
6259
+ "200": "List[AssetMetadataBulkResponseDto]",
6260
+ }
6261
+ response_data = await self.api_client.call_api(
6262
+ *_param, _request_timeout=_request_timeout
6263
+ )
6264
+ await response_data.read()
6265
+ return self.api_client.response_deserialize(
6266
+ response_data=response_data,
6267
+ response_types_map=_response_types_map,
6268
+ )
6269
+
6270
+ @validate_call
6271
+ async def update_bulk_asset_metadata_without_preload_content(
6272
+ self,
6273
+ asset_metadata_bulk_upsert_dto: AssetMetadataBulkUpsertDto,
6274
+ _request_timeout: Union[
6275
+ None,
6276
+ Annotated[StrictFloat, Field(gt=0)],
6277
+ Tuple[
6278
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
6279
+ ],
6280
+ ] = None,
6281
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
6282
+ _content_type: Optional[StrictStr] = None,
6283
+ _headers: Optional[Dict[StrictStr, Any]] = None,
6284
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
6285
+ ) -> RESTResponseType:
6286
+ """Upsert asset metadata
6287
+
6288
+ Upsert metadata key-value pairs for multiple assets.
6289
+
6290
+ :param asset_metadata_bulk_upsert_dto: (required)
6291
+ :type asset_metadata_bulk_upsert_dto: AssetMetadataBulkUpsertDto
6292
+ :param _request_timeout: timeout setting for this request. If one
6293
+ number provided, it will be total request
6294
+ timeout. It can also be a pair (tuple) of
6295
+ (connection, read) timeouts.
6296
+ :type _request_timeout: int, tuple(int, int), optional
6297
+ :param _request_auth: set to override the auth_settings for an a single
6298
+ request; this effectively ignores the
6299
+ authentication in the spec for a single request.
6300
+ :type _request_auth: dict, optional
6301
+ :param _content_type: force content-type for the request.
6302
+ :type _content_type: str, Optional
6303
+ :param _headers: set to override the headers for a single
6304
+ request; this effectively ignores the headers
6305
+ in the spec for a single request.
6306
+ :type _headers: dict, optional
6307
+ :param _host_index: set to override the host_index for a single
6308
+ request; this effectively ignores the host_index
6309
+ in the spec for a single request.
6310
+ :type _host_index: int, optional
6311
+ :return: Returns the result object.
6312
+ """ # noqa: E501
6313
+
6314
+ _param = self._update_bulk_asset_metadata_serialize(
6315
+ asset_metadata_bulk_upsert_dto=asset_metadata_bulk_upsert_dto,
6316
+ _request_auth=_request_auth,
6317
+ _content_type=_content_type,
6318
+ _headers=_headers,
6319
+ _host_index=_host_index,
6320
+ )
6321
+
6322
+ _response_types_map: Dict[str, Optional[str]] = {
6323
+ "200": "List[AssetMetadataBulkResponseDto]",
6324
+ }
6325
+ response_data = await self.api_client.call_api(
6326
+ *_param, _request_timeout=_request_timeout
6327
+ )
6328
+ return response_data.response
6329
+
6330
+ def _update_bulk_asset_metadata_serialize(
6331
+ self,
6332
+ asset_metadata_bulk_upsert_dto,
6333
+ _request_auth,
6334
+ _content_type,
6335
+ _headers,
6336
+ _host_index,
6337
+ ) -> RequestSerialized:
6338
+ _host = None
6339
+
6340
+ _collection_formats: Dict[str, str] = {}
6341
+
6342
+ _path_params: Dict[str, str] = {}
6343
+ _query_params: List[Tuple[str, str]] = []
6344
+ _header_params: Dict[str, Optional[str]] = _headers or {}
6345
+ _form_params: List[Tuple[str, str]] = []
6346
+ _files: Dict[
6347
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
6348
+ ] = {}
6349
+ _body_params: Optional[bytes] = None
6350
+
6351
+ # process the path parameters
6352
+ # process the query parameters
6353
+ # process the header parameters
6354
+ # process the form parameters
6355
+ # process the body parameter
6356
+ if asset_metadata_bulk_upsert_dto is not None:
6357
+ _body_params = asset_metadata_bulk_upsert_dto
6358
+
6359
+ # set the HTTP header `Accept`
6360
+ if "Accept" not in _header_params:
6361
+ _header_params["Accept"] = self.api_client.select_header_accept(
6362
+ ["application/json"]
6363
+ )
6364
+
6365
+ # set the HTTP header `Content-Type`
6366
+ if _content_type:
6367
+ _header_params["Content-Type"] = _content_type
6368
+ else:
6369
+ _default_content_type = self.api_client.select_header_content_type(
6370
+ ["application/json"]
6371
+ )
6372
+ if _default_content_type is not None:
6373
+ _header_params["Content-Type"] = _default_content_type
6374
+
6375
+ # authentication setting
6376
+ _auth_settings: List[str] = ["cookie", "api_key", "bearer"]
6377
+
6378
+ return self.api_client.param_serialize(
6379
+ method="PUT",
6380
+ resource_path="/assets/metadata",
6381
+ path_params=_path_params,
6382
+ query_params=_query_params,
6383
+ header_params=_header_params,
6384
+ body=_body_params,
6385
+ post_params=_form_params,
6386
+ files=_files,
6387
+ auth_settings=_auth_settings,
6388
+ collection_formats=_collection_formats,
6389
+ _host=_host,
6390
+ _request_auth=_request_auth,
6391
+ )
6392
+
5073
6393
  @validate_call
5074
6394
  async def upload_asset(
5075
6395
  self,
5076
- asset_data: Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]],
5077
- device_asset_id: StrictStr,
5078
- device_id: StrictStr,
5079
- file_created_at: datetime,
5080
- file_modified_at: datetime,
5081
- metadata: Optional[List[AssetMetadataUpsertItemDto]] = None,
6396
+ asset_data: Annotated[
6397
+ Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]],
6398
+ Field(description="Asset file data"),
6399
+ ],
6400
+ device_asset_id: Annotated[StrictStr, Field(description="Device asset ID")],
6401
+ device_id: Annotated[StrictStr, Field(description="Device ID")],
6402
+ file_created_at: Annotated[datetime, Field(description="File creation date")],
6403
+ file_modified_at: Annotated[
6404
+ datetime, Field(description="File modification date")
6405
+ ],
5082
6406
  key: Optional[StrictStr] = None,
5083
6407
  slug: Optional[StrictStr] = None,
5084
6408
  x_immich_checksum: Annotated[
@@ -5087,14 +6411,27 @@ class AssetsApi:
5087
6411
  description="sha1 checksum that can be used for duplicate detection before the file is uploaded"
5088
6412
  ),
5089
6413
  ] = None,
5090
- duration: Optional[StrictStr] = None,
5091
- filename: Optional[StrictStr] = None,
5092
- is_favorite: Optional[StrictBool] = None,
5093
- live_photo_video_id: Optional[UUID] = None,
5094
- sidecar_data: Optional[
5095
- Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]]
6414
+ duration: Annotated[
6415
+ Optional[StrictStr], Field(description="Duration (for videos)")
6416
+ ] = None,
6417
+ filename: Annotated[Optional[StrictStr], Field(description="Filename")] = None,
6418
+ is_favorite: Annotated[
6419
+ Optional[StrictBool], Field(description="Mark as favorite")
6420
+ ] = None,
6421
+ live_photo_video_id: Annotated[
6422
+ Optional[UUID], Field(description="Live photo video ID")
6423
+ ] = None,
6424
+ metadata: Annotated[
6425
+ Optional[List[AssetMetadataUpsertItemDto]],
6426
+ Field(description="Asset metadata items"),
6427
+ ] = None,
6428
+ sidecar_data: Annotated[
6429
+ Optional[Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]]],
6430
+ Field(description="Sidecar file data"),
6431
+ ] = None,
6432
+ visibility: Annotated[
6433
+ Optional[Any], Field(description="Asset visibility")
5096
6434
  ] = None,
5097
- visibility: Optional[Any] = None,
5098
6435
  _request_timeout: Union[
5099
6436
  None,
5100
6437
  Annotated[StrictFloat, Field(gt=0)],
@@ -5111,35 +6448,35 @@ class AssetsApi:
5111
6448
 
5112
6449
  Uploads a new asset to the server.
5113
6450
 
5114
- :param asset_data: (required)
6451
+ :param asset_data: Asset file data (required)
5115
6452
  :type asset_data: bytearray
5116
- :param device_asset_id: (required)
6453
+ :param device_asset_id: Device asset ID (required)
5117
6454
  :type device_asset_id: str
5118
- :param device_id: (required)
6455
+ :param device_id: Device ID (required)
5119
6456
  :type device_id: str
5120
- :param file_created_at: (required)
6457
+ :param file_created_at: File creation date (required)
5121
6458
  :type file_created_at: datetime
5122
- :param file_modified_at: (required)
6459
+ :param file_modified_at: File modification date (required)
5123
6460
  :type file_modified_at: datetime
5124
- :param metadata:
5125
- :type metadata: Optional[List[AssetMetadataUpsertItemDto]]
5126
6461
  :param key:
5127
6462
  :type key: str
5128
6463
  :param slug:
5129
6464
  :type slug: str
5130
6465
  :param x_immich_checksum: sha1 checksum that can be used for duplicate detection before the file is uploaded
5131
6466
  :type x_immich_checksum: str
5132
- :param duration:
6467
+ :param duration: Duration (for videos)
5133
6468
  :type duration: str
5134
- :param filename:
6469
+ :param filename: Filename
5135
6470
  :type filename: str
5136
- :param is_favorite:
6471
+ :param is_favorite: Mark as favorite
5137
6472
  :type is_favorite: bool
5138
- :param live_photo_video_id:
6473
+ :param live_photo_video_id: Live photo video ID
5139
6474
  :type live_photo_video_id: UUID
5140
- :param sidecar_data:
6475
+ :param metadata: Asset metadata items
6476
+ :type metadata: List[AssetMetadataUpsertItemDto]
6477
+ :param sidecar_data: Sidecar file data
5141
6478
  :type sidecar_data: bytearray
5142
- :param visibility:
6479
+ :param visibility: Asset visibility
5143
6480
  :type visibility: AssetVisibility
5144
6481
  :param _request_timeout: timeout setting for this request. If one
5145
6482
  number provided, it will be total request
@@ -5169,7 +6506,6 @@ class AssetsApi:
5169
6506
  device_id=device_id,
5170
6507
  file_created_at=file_created_at,
5171
6508
  file_modified_at=file_modified_at,
5172
- metadata=metadata,
5173
6509
  key=key,
5174
6510
  slug=slug,
5175
6511
  x_immich_checksum=x_immich_checksum,
@@ -5177,6 +6513,7 @@ class AssetsApi:
5177
6513
  filename=filename,
5178
6514
  is_favorite=is_favorite,
5179
6515
  live_photo_video_id=live_photo_video_id,
6516
+ metadata=metadata,
5180
6517
  sidecar_data=sidecar_data,
5181
6518
  visibility=visibility,
5182
6519
  _request_auth=_request_auth,
@@ -5186,6 +6523,7 @@ class AssetsApi:
5186
6523
  )
5187
6524
 
5188
6525
  _response_types_map: Dict[str, Optional[str]] = {
6526
+ "200": "AssetMediaResponseDto",
5189
6527
  "201": "AssetMediaResponseDto",
5190
6528
  }
5191
6529
  response_data = await self.api_client.call_api(
@@ -5200,12 +6538,16 @@ class AssetsApi:
5200
6538
  @validate_call
5201
6539
  async def upload_asset_with_http_info(
5202
6540
  self,
5203
- asset_data: Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]],
5204
- device_asset_id: StrictStr,
5205
- device_id: StrictStr,
5206
- file_created_at: datetime,
5207
- file_modified_at: datetime,
5208
- metadata: Optional[List[AssetMetadataUpsertItemDto]] = None,
6541
+ asset_data: Annotated[
6542
+ Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]],
6543
+ Field(description="Asset file data"),
6544
+ ],
6545
+ device_asset_id: Annotated[StrictStr, Field(description="Device asset ID")],
6546
+ device_id: Annotated[StrictStr, Field(description="Device ID")],
6547
+ file_created_at: Annotated[datetime, Field(description="File creation date")],
6548
+ file_modified_at: Annotated[
6549
+ datetime, Field(description="File modification date")
6550
+ ],
5209
6551
  key: Optional[StrictStr] = None,
5210
6552
  slug: Optional[StrictStr] = None,
5211
6553
  x_immich_checksum: Annotated[
@@ -5214,14 +6556,27 @@ class AssetsApi:
5214
6556
  description="sha1 checksum that can be used for duplicate detection before the file is uploaded"
5215
6557
  ),
5216
6558
  ] = None,
5217
- duration: Optional[StrictStr] = None,
5218
- filename: Optional[StrictStr] = None,
5219
- is_favorite: Optional[StrictBool] = None,
5220
- live_photo_video_id: Optional[UUID] = None,
5221
- sidecar_data: Optional[
5222
- Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]]
6559
+ duration: Annotated[
6560
+ Optional[StrictStr], Field(description="Duration (for videos)")
6561
+ ] = None,
6562
+ filename: Annotated[Optional[StrictStr], Field(description="Filename")] = None,
6563
+ is_favorite: Annotated[
6564
+ Optional[StrictBool], Field(description="Mark as favorite")
6565
+ ] = None,
6566
+ live_photo_video_id: Annotated[
6567
+ Optional[UUID], Field(description="Live photo video ID")
6568
+ ] = None,
6569
+ metadata: Annotated[
6570
+ Optional[List[AssetMetadataUpsertItemDto]],
6571
+ Field(description="Asset metadata items"),
6572
+ ] = None,
6573
+ sidecar_data: Annotated[
6574
+ Optional[Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]]],
6575
+ Field(description="Sidecar file data"),
6576
+ ] = None,
6577
+ visibility: Annotated[
6578
+ Optional[Any], Field(description="Asset visibility")
5223
6579
  ] = None,
5224
- visibility: Optional[Any] = None,
5225
6580
  _request_timeout: Union[
5226
6581
  None,
5227
6582
  Annotated[StrictFloat, Field(gt=0)],
@@ -5238,35 +6593,35 @@ class AssetsApi:
5238
6593
 
5239
6594
  Uploads a new asset to the server.
5240
6595
 
5241
- :param asset_data: (required)
6596
+ :param asset_data: Asset file data (required)
5242
6597
  :type asset_data: bytearray
5243
- :param device_asset_id: (required)
6598
+ :param device_asset_id: Device asset ID (required)
5244
6599
  :type device_asset_id: str
5245
- :param device_id: (required)
6600
+ :param device_id: Device ID (required)
5246
6601
  :type device_id: str
5247
- :param file_created_at: (required)
6602
+ :param file_created_at: File creation date (required)
5248
6603
  :type file_created_at: datetime
5249
- :param file_modified_at: (required)
6604
+ :param file_modified_at: File modification date (required)
5250
6605
  :type file_modified_at: datetime
5251
- :param metadata:
5252
- :type metadata: Optional[List[AssetMetadataUpsertItemDto]]
5253
6606
  :param key:
5254
6607
  :type key: str
5255
6608
  :param slug:
5256
6609
  :type slug: str
5257
6610
  :param x_immich_checksum: sha1 checksum that can be used for duplicate detection before the file is uploaded
5258
6611
  :type x_immich_checksum: str
5259
- :param duration:
6612
+ :param duration: Duration (for videos)
5260
6613
  :type duration: str
5261
- :param filename:
6614
+ :param filename: Filename
5262
6615
  :type filename: str
5263
- :param is_favorite:
6616
+ :param is_favorite: Mark as favorite
5264
6617
  :type is_favorite: bool
5265
- :param live_photo_video_id:
6618
+ :param live_photo_video_id: Live photo video ID
5266
6619
  :type live_photo_video_id: UUID
5267
- :param sidecar_data:
6620
+ :param metadata: Asset metadata items
6621
+ :type metadata: List[AssetMetadataUpsertItemDto]
6622
+ :param sidecar_data: Sidecar file data
5268
6623
  :type sidecar_data: bytearray
5269
- :param visibility:
6624
+ :param visibility: Asset visibility
5270
6625
  :type visibility: AssetVisibility
5271
6626
  :param _request_timeout: timeout setting for this request. If one
5272
6627
  number provided, it will be total request
@@ -5296,7 +6651,6 @@ class AssetsApi:
5296
6651
  device_id=device_id,
5297
6652
  file_created_at=file_created_at,
5298
6653
  file_modified_at=file_modified_at,
5299
- metadata=metadata,
5300
6654
  key=key,
5301
6655
  slug=slug,
5302
6656
  x_immich_checksum=x_immich_checksum,
@@ -5304,6 +6658,7 @@ class AssetsApi:
5304
6658
  filename=filename,
5305
6659
  is_favorite=is_favorite,
5306
6660
  live_photo_video_id=live_photo_video_id,
6661
+ metadata=metadata,
5307
6662
  sidecar_data=sidecar_data,
5308
6663
  visibility=visibility,
5309
6664
  _request_auth=_request_auth,
@@ -5313,6 +6668,7 @@ class AssetsApi:
5313
6668
  )
5314
6669
 
5315
6670
  _response_types_map: Dict[str, Optional[str]] = {
6671
+ "200": "AssetMediaResponseDto",
5316
6672
  "201": "AssetMediaResponseDto",
5317
6673
  }
5318
6674
  response_data = await self.api_client.call_api(
@@ -5327,12 +6683,16 @@ class AssetsApi:
5327
6683
  @validate_call
5328
6684
  async def upload_asset_without_preload_content(
5329
6685
  self,
5330
- asset_data: Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]],
5331
- device_asset_id: StrictStr,
5332
- device_id: StrictStr,
5333
- file_created_at: datetime,
5334
- file_modified_at: datetime,
5335
- metadata: Optional[List[AssetMetadataUpsertItemDto]] = None,
6686
+ asset_data: Annotated[
6687
+ Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]],
6688
+ Field(description="Asset file data"),
6689
+ ],
6690
+ device_asset_id: Annotated[StrictStr, Field(description="Device asset ID")],
6691
+ device_id: Annotated[StrictStr, Field(description="Device ID")],
6692
+ file_created_at: Annotated[datetime, Field(description="File creation date")],
6693
+ file_modified_at: Annotated[
6694
+ datetime, Field(description="File modification date")
6695
+ ],
5336
6696
  key: Optional[StrictStr] = None,
5337
6697
  slug: Optional[StrictStr] = None,
5338
6698
  x_immich_checksum: Annotated[
@@ -5341,14 +6701,27 @@ class AssetsApi:
5341
6701
  description="sha1 checksum that can be used for duplicate detection before the file is uploaded"
5342
6702
  ),
5343
6703
  ] = None,
5344
- duration: Optional[StrictStr] = None,
5345
- filename: Optional[StrictStr] = None,
5346
- is_favorite: Optional[StrictBool] = None,
5347
- live_photo_video_id: Optional[UUID] = None,
5348
- sidecar_data: Optional[
5349
- Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]]
6704
+ duration: Annotated[
6705
+ Optional[StrictStr], Field(description="Duration (for videos)")
6706
+ ] = None,
6707
+ filename: Annotated[Optional[StrictStr], Field(description="Filename")] = None,
6708
+ is_favorite: Annotated[
6709
+ Optional[StrictBool], Field(description="Mark as favorite")
6710
+ ] = None,
6711
+ live_photo_video_id: Annotated[
6712
+ Optional[UUID], Field(description="Live photo video ID")
6713
+ ] = None,
6714
+ metadata: Annotated[
6715
+ Optional[List[AssetMetadataUpsertItemDto]],
6716
+ Field(description="Asset metadata items"),
6717
+ ] = None,
6718
+ sidecar_data: Annotated[
6719
+ Optional[Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]]],
6720
+ Field(description="Sidecar file data"),
6721
+ ] = None,
6722
+ visibility: Annotated[
6723
+ Optional[Any], Field(description="Asset visibility")
5350
6724
  ] = None,
5351
- visibility: Optional[Any] = None,
5352
6725
  _request_timeout: Union[
5353
6726
  None,
5354
6727
  Annotated[StrictFloat, Field(gt=0)],
@@ -5365,35 +6738,35 @@ class AssetsApi:
5365
6738
 
5366
6739
  Uploads a new asset to the server.
5367
6740
 
5368
- :param asset_data: (required)
6741
+ :param asset_data: Asset file data (required)
5369
6742
  :type asset_data: bytearray
5370
- :param device_asset_id: (required)
6743
+ :param device_asset_id: Device asset ID (required)
5371
6744
  :type device_asset_id: str
5372
- :param device_id: (required)
6745
+ :param device_id: Device ID (required)
5373
6746
  :type device_id: str
5374
- :param file_created_at: (required)
6747
+ :param file_created_at: File creation date (required)
5375
6748
  :type file_created_at: datetime
5376
- :param file_modified_at: (required)
6749
+ :param file_modified_at: File modification date (required)
5377
6750
  :type file_modified_at: datetime
5378
- :param metadata:
5379
- :type metadata: Optional[List[AssetMetadataUpsertItemDto]]
5380
6751
  :param key:
5381
6752
  :type key: str
5382
6753
  :param slug:
5383
6754
  :type slug: str
5384
6755
  :param x_immich_checksum: sha1 checksum that can be used for duplicate detection before the file is uploaded
5385
6756
  :type x_immich_checksum: str
5386
- :param duration:
6757
+ :param duration: Duration (for videos)
5387
6758
  :type duration: str
5388
- :param filename:
6759
+ :param filename: Filename
5389
6760
  :type filename: str
5390
- :param is_favorite:
6761
+ :param is_favorite: Mark as favorite
5391
6762
  :type is_favorite: bool
5392
- :param live_photo_video_id:
6763
+ :param live_photo_video_id: Live photo video ID
5393
6764
  :type live_photo_video_id: UUID
5394
- :param sidecar_data:
6765
+ :param metadata: Asset metadata items
6766
+ :type metadata: List[AssetMetadataUpsertItemDto]
6767
+ :param sidecar_data: Sidecar file data
5395
6768
  :type sidecar_data: bytearray
5396
- :param visibility:
6769
+ :param visibility: Asset visibility
5397
6770
  :type visibility: AssetVisibility
5398
6771
  :param _request_timeout: timeout setting for this request. If one
5399
6772
  number provided, it will be total request
@@ -5423,7 +6796,6 @@ class AssetsApi:
5423
6796
  device_id=device_id,
5424
6797
  file_created_at=file_created_at,
5425
6798
  file_modified_at=file_modified_at,
5426
- metadata=metadata,
5427
6799
  key=key,
5428
6800
  slug=slug,
5429
6801
  x_immich_checksum=x_immich_checksum,
@@ -5431,6 +6803,7 @@ class AssetsApi:
5431
6803
  filename=filename,
5432
6804
  is_favorite=is_favorite,
5433
6805
  live_photo_video_id=live_photo_video_id,
6806
+ metadata=metadata,
5434
6807
  sidecar_data=sidecar_data,
5435
6808
  visibility=visibility,
5436
6809
  _request_auth=_request_auth,
@@ -5440,6 +6813,7 @@ class AssetsApi:
5440
6813
  )
5441
6814
 
5442
6815
  _response_types_map: Dict[str, Optional[str]] = {
6816
+ "200": "AssetMediaResponseDto",
5443
6817
  "201": "AssetMediaResponseDto",
5444
6818
  }
5445
6819
  response_data = await self.api_client.call_api(
@@ -5454,7 +6828,6 @@ class AssetsApi:
5454
6828
  device_id,
5455
6829
  file_created_at,
5456
6830
  file_modified_at,
5457
- metadata,
5458
6831
  key,
5459
6832
  slug,
5460
6833
  x_immich_checksum,
@@ -5462,6 +6835,7 @@ class AssetsApi:
5462
6835
  filename,
5463
6836
  is_favorite,
5464
6837
  live_photo_video_id,
6838
+ metadata,
5465
6839
  sidecar_data,
5466
6840
  visibility,
5467
6841
  _request_auth,
@@ -5560,8 +6934,13 @@ class AssetsApi:
5560
6934
  async def view_asset(
5561
6935
  self,
5562
6936
  id: UUID,
6937
+ edited: Annotated[
6938
+ Optional[StrictBool], Field(description="Return edited asset if available")
6939
+ ] = None,
5563
6940
  key: Optional[StrictStr] = None,
5564
- size: Optional[AssetMediaSize] = None,
6941
+ size: Annotated[
6942
+ Optional[AssetMediaSize], Field(description="Asset media size")
6943
+ ] = None,
5565
6944
  slug: Optional[StrictStr] = None,
5566
6945
  _request_timeout: Union[
5567
6946
  None,
@@ -5577,13 +6956,15 @@ class AssetsApi:
5577
6956
  ) -> bytearray:
5578
6957
  """View asset thumbnail
5579
6958
 
5580
- Retrieve the thumbnail image for the specified asset.
6959
+ Retrieve the thumbnail image for the specified asset. Viewing the fullsize thumbnail might redirect to downloadAsset, which requires a different permission.
5581
6960
 
5582
6961
  :param id: (required)
5583
6962
  :type id: UUID
6963
+ :param edited: Return edited asset if available
6964
+ :type edited: bool
5584
6965
  :param key:
5585
6966
  :type key: str
5586
- :param size:
6967
+ :param size: Asset media size
5587
6968
  :type size: AssetMediaSize
5588
6969
  :param slug:
5589
6970
  :type slug: str
@@ -5611,6 +6992,7 @@ class AssetsApi:
5611
6992
 
5612
6993
  _param = self._view_asset_serialize(
5613
6994
  id=id,
6995
+ edited=edited,
5614
6996
  key=key,
5615
6997
  size=size,
5616
6998
  slug=slug,
@@ -5636,8 +7018,13 @@ class AssetsApi:
5636
7018
  async def view_asset_with_http_info(
5637
7019
  self,
5638
7020
  id: UUID,
7021
+ edited: Annotated[
7022
+ Optional[StrictBool], Field(description="Return edited asset if available")
7023
+ ] = None,
5639
7024
  key: Optional[StrictStr] = None,
5640
- size: Optional[AssetMediaSize] = None,
7025
+ size: Annotated[
7026
+ Optional[AssetMediaSize], Field(description="Asset media size")
7027
+ ] = None,
5641
7028
  slug: Optional[StrictStr] = None,
5642
7029
  _request_timeout: Union[
5643
7030
  None,
@@ -5653,13 +7040,15 @@ class AssetsApi:
5653
7040
  ) -> ApiResponse[bytearray]:
5654
7041
  """View asset thumbnail
5655
7042
 
5656
- Retrieve the thumbnail image for the specified asset.
7043
+ Retrieve the thumbnail image for the specified asset. Viewing the fullsize thumbnail might redirect to downloadAsset, which requires a different permission.
5657
7044
 
5658
7045
  :param id: (required)
5659
7046
  :type id: UUID
7047
+ :param edited: Return edited asset if available
7048
+ :type edited: bool
5660
7049
  :param key:
5661
7050
  :type key: str
5662
- :param size:
7051
+ :param size: Asset media size
5663
7052
  :type size: AssetMediaSize
5664
7053
  :param slug:
5665
7054
  :type slug: str
@@ -5687,6 +7076,7 @@ class AssetsApi:
5687
7076
 
5688
7077
  _param = self._view_asset_serialize(
5689
7078
  id=id,
7079
+ edited=edited,
5690
7080
  key=key,
5691
7081
  size=size,
5692
7082
  slug=slug,
@@ -5712,8 +7102,13 @@ class AssetsApi:
5712
7102
  async def view_asset_without_preload_content(
5713
7103
  self,
5714
7104
  id: UUID,
7105
+ edited: Annotated[
7106
+ Optional[StrictBool], Field(description="Return edited asset if available")
7107
+ ] = None,
5715
7108
  key: Optional[StrictStr] = None,
5716
- size: Optional[AssetMediaSize] = None,
7109
+ size: Annotated[
7110
+ Optional[AssetMediaSize], Field(description="Asset media size")
7111
+ ] = None,
5717
7112
  slug: Optional[StrictStr] = None,
5718
7113
  _request_timeout: Union[
5719
7114
  None,
@@ -5729,13 +7124,15 @@ class AssetsApi:
5729
7124
  ) -> RESTResponseType:
5730
7125
  """View asset thumbnail
5731
7126
 
5732
- Retrieve the thumbnail image for the specified asset.
7127
+ Retrieve the thumbnail image for the specified asset. Viewing the fullsize thumbnail might redirect to downloadAsset, which requires a different permission.
5733
7128
 
5734
7129
  :param id: (required)
5735
7130
  :type id: UUID
7131
+ :param edited: Return edited asset if available
7132
+ :type edited: bool
5736
7133
  :param key:
5737
7134
  :type key: str
5738
- :param size:
7135
+ :param size: Asset media size
5739
7136
  :type size: AssetMediaSize
5740
7137
  :param slug:
5741
7138
  :type slug: str
@@ -5763,6 +7160,7 @@ class AssetsApi:
5763
7160
 
5764
7161
  _param = self._view_asset_serialize(
5765
7162
  id=id,
7163
+ edited=edited,
5766
7164
  key=key,
5767
7165
  size=size,
5768
7166
  slug=slug,
@@ -5783,6 +7181,7 @@ class AssetsApi:
5783
7181
  def _view_asset_serialize(
5784
7182
  self,
5785
7183
  id,
7184
+ edited,
5786
7185
  key,
5787
7186
  size,
5788
7187
  slug,
@@ -5808,6 +7207,9 @@ class AssetsApi:
5808
7207
  if id is not None:
5809
7208
  _path_params["id"] = id
5810
7209
  # process the query parameters
7210
+ if edited is not None:
7211
+ _query_params.append(("edited", edited))
7212
+
5811
7213
  if key is not None:
5812
7214
  _query_params.append(("key", key))
5813
7215