immich 1.2.1__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 (387) hide show
  1. immich/.openapi-generator/FILES +372 -0
  2. immich/.openapi-generator/VERSION +1 -0
  3. immich/.openapi-generator-ignore +48 -0
  4. immich/__init__.py +3 -0
  5. immich/client/__init__.py +1162 -0
  6. immich/client/api/__init__.py +39 -0
  7. immich/client/api/activities_api.py +1092 -0
  8. immich/client/api/albums_api.py +3228 -0
  9. immich/client/api/api_keys_api.py +1484 -0
  10. immich/client/api/assets_api.py +5834 -0
  11. immich/client/api/authentication_admin_api.py +254 -0
  12. immich/client/api/authentication_api.py +3881 -0
  13. immich/client/api/deprecated_api.py +2199 -0
  14. immich/client/api/download_api.py +603 -0
  15. immich/client/api/duplicates_api.py +743 -0
  16. immich/client/api/faces_api.py +1053 -0
  17. immich/client/api/jobs_api.py +783 -0
  18. immich/client/api/libraries_api.py +2004 -0
  19. immich/client/api/maintenance_admin_api.py +533 -0
  20. immich/client/api/map_api.py +640 -0
  21. immich/client/api/memories_api.py +2250 -0
  22. immich/client/api/notifications_admin_api.py +808 -0
  23. immich/client/api/notifications_api.py +1564 -0
  24. immich/client/api/partners_api.py +1278 -0
  25. immich/client/api/people_api.py +2905 -0
  26. immich/client/api/plugins_api.py +730 -0
  27. immich/client/api/queues_api.py +1292 -0
  28. immich/client/api/search_api.py +3198 -0
  29. immich/client/api/server_api.py +3466 -0
  30. immich/client/api/sessions_api.py +1472 -0
  31. immich/client/api/shared_links_api.py +2177 -0
  32. immich/client/api/stacks_api.py +1769 -0
  33. immich/client/api/sync_api.py +1512 -0
  34. immich/client/api/system_config_api.py +967 -0
  35. immich/client/api/system_metadata_api.py +964 -0
  36. immich/client/api/tags_api.py +2296 -0
  37. immich/client/api/timeline_api.py +1193 -0
  38. immich/client/api/trash_api.py +739 -0
  39. immich/client/api/users_admin_api.py +2607 -0
  40. immich/client/api/users_api.py +3577 -0
  41. immich/client/api/views_api.py +503 -0
  42. immich/client/api/workflows_api.py +1257 -0
  43. immich/client/api_client.py +756 -0
  44. immich/client/api_response.py +20 -0
  45. immich/client/configuration.py +638 -0
  46. immich/client/exceptions.py +222 -0
  47. immich/client/models/__init__.py +424 -0
  48. immich/client/models/activity_create_dto.py +94 -0
  49. immich/client/models/activity_response_dto.py +121 -0
  50. immich/client/models/activity_statistics_response_dto.py +85 -0
  51. immich/client/models/add_users_dto.py +101 -0
  52. immich/client/models/admin_onboarding_update_dto.py +82 -0
  53. immich/client/models/album_response_dto.py +199 -0
  54. immich/client/models/album_statistics_response_dto.py +90 -0
  55. immich/client/models/album_user_add_dto.py +87 -0
  56. immich/client/models/album_user_create_dto.py +87 -0
  57. immich/client/models/album_user_response_dto.py +95 -0
  58. immich/client/models/album_user_role.py +34 -0
  59. immich/client/models/albums_add_assets_dto.py +86 -0
  60. immich/client/models/albums_add_assets_response_dto.py +86 -0
  61. immich/client/models/albums_response.py +83 -0
  62. immich/client/models/albums_update.py +85 -0
  63. immich/client/models/api_key_create_dto.py +87 -0
  64. immich/client/models/api_key_create_response_dto.py +94 -0
  65. immich/client/models/api_key_response_dto.py +102 -0
  66. immich/client/models/api_key_update_dto.py +87 -0
  67. immich/client/models/asset_bulk_delete_dto.py +84 -0
  68. immich/client/models/asset_bulk_update_dto.py +143 -0
  69. immich/client/models/asset_bulk_upload_check_dto.py +98 -0
  70. immich/client/models/asset_bulk_upload_check_item.py +85 -0
  71. immich/client/models/asset_bulk_upload_check_response_dto.py +101 -0
  72. immich/client/models/asset_bulk_upload_check_result.py +126 -0
  73. immich/client/models/asset_copy_dto.py +113 -0
  74. immich/client/models/asset_delta_sync_dto.py +87 -0
  75. immich/client/models/asset_delta_sync_response_dto.py +102 -0
  76. immich/client/models/asset_face_create_dto.py +110 -0
  77. immich/client/models/asset_face_delete_dto.py +82 -0
  78. immich/client/models/asset_face_response_dto.py +125 -0
  79. immich/client/models/asset_face_update_dto.py +96 -0
  80. immich/client/models/asset_face_update_item.py +86 -0
  81. immich/client/models/asset_face_without_person_response_dto.py +111 -0
  82. immich/client/models/asset_full_sync_dto.py +95 -0
  83. immich/client/models/asset_ids_dto.py +83 -0
  84. immich/client/models/asset_ids_response_dto.py +109 -0
  85. immich/client/models/asset_job_name.py +36 -0
  86. immich/client/models/asset_jobs_dto.py +87 -0
  87. immich/client/models/asset_media_response_dto.py +84 -0
  88. immich/client/models/asset_media_size.py +35 -0
  89. immich/client/models/asset_media_status.py +35 -0
  90. immich/client/models/asset_metadata_key.py +33 -0
  91. immich/client/models/asset_metadata_response_dto.py +92 -0
  92. immich/client/models/asset_metadata_upsert_dto.py +101 -0
  93. immich/client/models/asset_metadata_upsert_item_dto.py +84 -0
  94. immich/client/models/asset_ocr_response_dto.py +145 -0
  95. immich/client/models/asset_order.py +34 -0
  96. immich/client/models/asset_response_dto.py +291 -0
  97. immich/client/models/asset_stack_response_dto.py +90 -0
  98. immich/client/models/asset_stats_response_dto.py +90 -0
  99. immich/client/models/asset_type_enum.py +36 -0
  100. immich/client/models/asset_visibility.py +36 -0
  101. immich/client/models/audio_codec.py +36 -0
  102. immich/client/models/auth_status_response_dto.py +100 -0
  103. immich/client/models/avatar_update.py +83 -0
  104. immich/client/models/bulk_id_error_reason.py +36 -0
  105. immich/client/models/bulk_id_response_dto.py +102 -0
  106. immich/client/models/bulk_ids_dto.py +83 -0
  107. immich/client/models/cast_response.py +88 -0
  108. immich/client/models/cast_update.py +82 -0
  109. immich/client/models/change_password_dto.py +101 -0
  110. immich/client/models/check_existing_assets_dto.py +91 -0
  111. immich/client/models/check_existing_assets_response_dto.py +82 -0
  112. immich/client/models/clip_config.py +85 -0
  113. immich/client/models/colorspace.py +34 -0
  114. immich/client/models/contributor_count_response_dto.py +85 -0
  115. immich/client/models/cq_mode.py +35 -0
  116. immich/client/models/create_album_dto.py +112 -0
  117. immich/client/models/create_library_dto.py +103 -0
  118. immich/client/models/create_profile_image_response_dto.py +95 -0
  119. immich/client/models/database_backup_config.py +94 -0
  120. immich/client/models/download_archive_info.py +85 -0
  121. immich/client/models/download_info_dto.py +96 -0
  122. immich/client/models/download_response.py +90 -0
  123. immich/client/models/download_response_dto.py +100 -0
  124. immich/client/models/download_update.py +93 -0
  125. immich/client/models/duplicate_detection_config.py +89 -0
  126. immich/client/models/duplicate_response_dto.py +98 -0
  127. immich/client/models/email_notifications_response.py +90 -0
  128. immich/client/models/email_notifications_update.py +90 -0
  129. immich/client/models/exif_response_dto.py +284 -0
  130. immich/client/models/face_dto.py +83 -0
  131. immich/client/models/facial_recognition_config.py +107 -0
  132. immich/client/models/folders_response.py +92 -0
  133. immich/client/models/folders_update.py +85 -0
  134. immich/client/models/image_format.py +34 -0
  135. immich/client/models/job_create_dto.py +83 -0
  136. immich/client/models/job_name.py +87 -0
  137. immich/client/models/job_settings_dto.py +83 -0
  138. immich/client/models/library_response_dto.py +118 -0
  139. immich/client/models/library_stats_response_dto.py +92 -0
  140. immich/client/models/license_key_dto.py +98 -0
  141. immich/client/models/license_response_dto.py +101 -0
  142. immich/client/models/log_level.py +38 -0
  143. immich/client/models/login_credential_dto.py +85 -0
  144. immich/client/models/login_response_dto.py +109 -0
  145. immich/client/models/logout_response_dto.py +85 -0
  146. immich/client/models/machine_learning_availability_checks_dto.py +90 -0
  147. immich/client/models/maintenance_action.py +34 -0
  148. immich/client/models/maintenance_auth_dto.py +82 -0
  149. immich/client/models/maintenance_login_dto.py +82 -0
  150. immich/client/models/manual_job_name.py +38 -0
  151. immich/client/models/map_marker_response_dto.py +111 -0
  152. immich/client/models/map_reverse_geocode_response_dto.py +105 -0
  153. immich/client/models/memories_response.py +92 -0
  154. immich/client/models/memories_update.py +86 -0
  155. immich/client/models/memory_create_dto.py +112 -0
  156. immich/client/models/memory_response_dto.py +142 -0
  157. immich/client/models/memory_search_order.py +35 -0
  158. immich/client/models/memory_statistics_response_dto.py +82 -0
  159. immich/client/models/memory_type.py +33 -0
  160. immich/client/models/memory_update_dto.py +91 -0
  161. immich/client/models/merge_person_dto.py +83 -0
  162. immich/client/models/metadata_search_dto.py +277 -0
  163. immich/client/models/notification_create_dto.py +120 -0
  164. immich/client/models/notification_delete_all_dto.py +83 -0
  165. immich/client/models/notification_dto.py +112 -0
  166. immich/client/models/notification_level.py +36 -0
  167. immich/client/models/notification_type.py +38 -0
  168. immich/client/models/notification_update_all_dto.py +90 -0
  169. immich/client/models/notification_update_dto.py +88 -0
  170. immich/client/models/o_auth_authorize_response_dto.py +82 -0
  171. immich/client/models/o_auth_callback_dto.py +90 -0
  172. immich/client/models/o_auth_config_dto.py +90 -0
  173. immich/client/models/o_auth_token_endpoint_auth_method.py +34 -0
  174. immich/client/models/ocr_config.py +109 -0
  175. immich/client/models/on_this_day_dto.py +86 -0
  176. immich/client/models/onboarding_dto.py +82 -0
  177. immich/client/models/onboarding_response_dto.py +82 -0
  178. immich/client/models/partner_create_dto.py +83 -0
  179. immich/client/models/partner_direction.py +34 -0
  180. immich/client/models/partner_response_dto.py +108 -0
  181. immich/client/models/partner_update_dto.py +82 -0
  182. immich/client/models/people_response.py +92 -0
  183. immich/client/models/people_response_dto.py +104 -0
  184. immich/client/models/people_update.py +85 -0
  185. immich/client/models/people_update_dto.py +96 -0
  186. immich/client/models/people_update_item.py +128 -0
  187. immich/client/models/permission.py +177 -0
  188. immich/client/models/person_create_dto.py +117 -0
  189. immich/client/models/person_response_dto.py +115 -0
  190. immich/client/models/person_statistics_response_dto.py +82 -0
  191. immich/client/models/person_update_dto.py +125 -0
  192. immich/client/models/person_with_faces_response_dto.py +133 -0
  193. immich/client/models/pin_code_change_dto.py +90 -0
  194. immich/client/models/pin_code_reset_dto.py +85 -0
  195. immich/client/models/pin_code_setup_dto.py +82 -0
  196. immich/client/models/places_response_dto.py +100 -0
  197. immich/client/models/plugin_action_response_dto.py +112 -0
  198. immich/client/models/plugin_context_type.py +35 -0
  199. immich/client/models/plugin_filter_response_dto.py +112 -0
  200. immich/client/models/plugin_response_dto.py +139 -0
  201. immich/client/models/plugin_trigger_response_dto.py +87 -0
  202. immich/client/models/plugin_trigger_type.py +34 -0
  203. immich/client/models/purchase_response.py +88 -0
  204. immich/client/models/purchase_update.py +92 -0
  205. immich/client/models/queue_command.py +37 -0
  206. immich/client/models/queue_command_dto.py +86 -0
  207. immich/client/models/queue_delete_dto.py +85 -0
  208. immich/client/models/queue_job_response_dto.py +93 -0
  209. immich/client/models/queue_job_status.py +38 -0
  210. immich/client/models/queue_name.py +49 -0
  211. immich/client/models/queue_response_dto.py +97 -0
  212. immich/client/models/queue_response_legacy_dto.py +100 -0
  213. immich/client/models/queue_statistics_dto.py +103 -0
  214. immich/client/models/queue_status_legacy_dto.py +85 -0
  215. immich/client/models/queue_update_dto.py +82 -0
  216. immich/client/models/queues_response_legacy_dto.py +242 -0
  217. immich/client/models/random_search_dto.py +234 -0
  218. immich/client/models/ratings_response.py +84 -0
  219. immich/client/models/ratings_update.py +82 -0
  220. immich/client/models/reaction_level.py +34 -0
  221. immich/client/models/reaction_type.py +34 -0
  222. immich/client/models/reverse_geocoding_state_response_dto.py +101 -0
  223. immich/client/models/search_album_response_dto.py +114 -0
  224. immich/client/models/search_asset_response_dto.py +127 -0
  225. immich/client/models/search_explore_item.py +94 -0
  226. immich/client/models/search_explore_response_dto.py +98 -0
  227. immich/client/models/search_facet_count_response_dto.py +85 -0
  228. immich/client/models/search_facet_response_dto.py +103 -0
  229. immich/client/models/search_response_dto.py +100 -0
  230. immich/client/models/search_statistics_response_dto.py +82 -0
  231. immich/client/models/search_suggestion_type.py +38 -0
  232. immich/client/models/server_about_response_dto.py +156 -0
  233. immich/client/models/server_apk_links_dto.py +97 -0
  234. immich/client/models/server_config_dto.py +118 -0
  235. immich/client/models/server_features_dto.py +130 -0
  236. immich/client/models/server_media_types_response_dto.py +90 -0
  237. immich/client/models/server_ping_response.py +87 -0
  238. immich/client/models/server_stats_response_dto.py +119 -0
  239. immich/client/models/server_storage_response_dto.py +108 -0
  240. immich/client/models/server_theme_dto.py +82 -0
  241. immich/client/models/server_version_history_response_dto.py +91 -0
  242. immich/client/models/server_version_response_dto.py +90 -0
  243. immich/client/models/session_create_dto.py +96 -0
  244. immich/client/models/session_create_response_dto.py +120 -0
  245. immich/client/models/session_response_dto.py +117 -0
  246. immich/client/models/session_unlock_dto.py +85 -0
  247. immich/client/models/session_update_dto.py +84 -0
  248. immich/client/models/set_maintenance_mode_dto.py +83 -0
  249. immich/client/models/shared_link_create_dto.py +142 -0
  250. immich/client/models/shared_link_edit_dto.py +134 -0
  251. immich/client/models/shared_link_response_dto.py +173 -0
  252. immich/client/models/shared_link_type.py +34 -0
  253. immich/client/models/shared_links_response.py +92 -0
  254. immich/client/models/shared_links_update.py +85 -0
  255. immich/client/models/sign_up_dto.py +90 -0
  256. immich/client/models/smart_search_dto.py +245 -0
  257. immich/client/models/source_type.py +35 -0
  258. immich/client/models/stack_create_dto.py +86 -0
  259. immich/client/models/stack_response_dto.py +100 -0
  260. immich/client/models/stack_update_dto.py +83 -0
  261. immich/client/models/statistics_search_dto.py +217 -0
  262. immich/client/models/sync_ack_delete_dto.py +83 -0
  263. immich/client/models/sync_ack_dto.py +84 -0
  264. immich/client/models/sync_ack_set_dto.py +83 -0
  265. immich/client/models/sync_album_delete_v1.py +82 -0
  266. immich/client/models/sync_album_to_asset_delete_v1.py +85 -0
  267. immich/client/models/sync_album_to_asset_v1.py +85 -0
  268. immich/client/models/sync_album_user_delete_v1.py +85 -0
  269. immich/client/models/sync_album_user_v1.py +91 -0
  270. immich/client/models/sync_album_v1.py +122 -0
  271. immich/client/models/sync_asset_delete_v1.py +82 -0
  272. immich/client/models/sync_asset_exif_v1.py +296 -0
  273. immich/client/models/sync_asset_face_delete_v1.py +82 -0
  274. immich/client/models/sync_asset_face_v1.py +120 -0
  275. immich/client/models/sync_asset_metadata_delete_v1.py +86 -0
  276. immich/client/models/sync_asset_metadata_v1.py +91 -0
  277. immich/client/models/sync_asset_v1.py +187 -0
  278. immich/client/models/sync_auth_user_v1.py +154 -0
  279. immich/client/models/sync_entity_type.py +79 -0
  280. immich/client/models/sync_memory_asset_delete_v1.py +85 -0
  281. immich/client/models/sync_memory_asset_v1.py +85 -0
  282. immich/client/models/sync_memory_delete_v1.py +82 -0
  283. immich/client/models/sync_memory_v1.py +143 -0
  284. immich/client/models/sync_partner_delete_v1.py +88 -0
  285. immich/client/models/sync_partner_v1.py +90 -0
  286. immich/client/models/sync_person_delete_v1.py +82 -0
  287. immich/client/models/sync_person_v1.py +131 -0
  288. immich/client/models/sync_request_type.py +52 -0
  289. immich/client/models/sync_stack_delete_v1.py +82 -0
  290. immich/client/models/sync_stack_v1.py +101 -0
  291. immich/client/models/sync_stream_dto.py +86 -0
  292. immich/client/models/sync_user_delete_v1.py +82 -0
  293. immich/client/models/sync_user_metadata_delete_v1.py +84 -0
  294. immich/client/models/sync_user_metadata_v1.py +91 -0
  295. immich/client/models/sync_user_v1.py +118 -0
  296. immich/client/models/system_config_backups_dto.py +92 -0
  297. immich/client/models/system_config_dto.py +302 -0
  298. immich/client/models/system_config_f_fmpeg_dto.py +156 -0
  299. immich/client/models/system_config_faces_dto.py +82 -0
  300. immich/client/models/system_config_generated_fullsize_image_dto.py +92 -0
  301. immich/client/models/system_config_generated_image_dto.py +92 -0
  302. immich/client/models/system_config_image_dto.py +124 -0
  303. immich/client/models/system_config_job_dto.py +194 -0
  304. immich/client/models/system_config_library_dto.py +104 -0
  305. immich/client/models/system_config_library_scan_dto.py +85 -0
  306. immich/client/models/system_config_library_watch_dto.py +82 -0
  307. immich/client/models/system_config_logging_dto.py +86 -0
  308. immich/client/models/system_config_machine_learning_dto.py +147 -0
  309. immich/client/models/system_config_map_dto.py +90 -0
  310. immich/client/models/system_config_metadata_dto.py +92 -0
  311. immich/client/models/system_config_new_version_check_dto.py +82 -0
  312. immich/client/models/system_config_nightly_tasks_dto.py +103 -0
  313. immich/client/models/system_config_notifications_dto.py +92 -0
  314. immich/client/models/system_config_o_auth_dto.py +155 -0
  315. immich/client/models/system_config_password_login_dto.py +82 -0
  316. immich/client/models/system_config_reverse_geocoding_dto.py +82 -0
  317. immich/client/models/system_config_server_dto.py +94 -0
  318. immich/client/models/system_config_smtp_dto.py +100 -0
  319. immich/client/models/system_config_smtp_transport_dto.py +107 -0
  320. immich/client/models/system_config_storage_template_dto.py +94 -0
  321. immich/client/models/system_config_template_emails_dto.py +94 -0
  322. immich/client/models/system_config_template_storage_option_dto.py +109 -0
  323. immich/client/models/system_config_templates_dto.py +94 -0
  324. immich/client/models/system_config_theme_dto.py +82 -0
  325. immich/client/models/system_config_trash_dto.py +86 -0
  326. immich/client/models/system_config_user_dto.py +83 -0
  327. immich/client/models/tag_bulk_assets_dto.py +86 -0
  328. immich/client/models/tag_bulk_assets_response_dto.py +82 -0
  329. immich/client/models/tag_create_dto.py +111 -0
  330. immich/client/models/tag_response_dto.py +107 -0
  331. immich/client/models/tag_update_dto.py +87 -0
  332. immich/client/models/tag_upsert_dto.py +82 -0
  333. immich/client/models/tags_response.py +92 -0
  334. immich/client/models/tags_update.py +85 -0
  335. immich/client/models/template_dto.py +82 -0
  336. immich/client/models/template_response_dto.py +83 -0
  337. immich/client/models/test_email_response_dto.py +82 -0
  338. immich/client/models/time_bucket_asset_response_dto.py +195 -0
  339. immich/client/models/time_buckets_response_dto.py +88 -0
  340. immich/client/models/tone_mapping.py +36 -0
  341. immich/client/models/transcode_hw_accel.py +37 -0
  342. immich/client/models/transcode_policy.py +37 -0
  343. immich/client/models/trash_response_dto.py +82 -0
  344. immich/client/models/update_album_dto.py +106 -0
  345. immich/client/models/update_album_user_dto.py +83 -0
  346. immich/client/models/update_asset_dto.py +135 -0
  347. immich/client/models/update_library_dto.py +95 -0
  348. immich/client/models/usage_by_user_dto.py +117 -0
  349. immich/client/models/user_admin_create_dto.py +136 -0
  350. immich/client/models/user_admin_delete_dto.py +82 -0
  351. immich/client/models/user_admin_response_dto.py +176 -0
  352. immich/client/models/user_admin_update_dto.py +141 -0
  353. immich/client/models/user_avatar_color.py +42 -0
  354. immich/client/models/user_license.py +91 -0
  355. immich/client/models/user_metadata_key.py +35 -0
  356. immich/client/models/user_preferences_response_dto.py +186 -0
  357. immich/client/models/user_preferences_update_dto.py +197 -0
  358. immich/client/models/user_response_dto.py +105 -0
  359. immich/client/models/user_status.py +35 -0
  360. immich/client/models/user_update_me_dto.py +98 -0
  361. immich/client/models/validate_access_token_response_dto.py +82 -0
  362. immich/client/models/validate_library_dto.py +93 -0
  363. immich/client/models/validate_library_import_path_response_dto.py +92 -0
  364. immich/client/models/validate_library_response_dto.py +103 -0
  365. immich/client/models/version_check_state_response_dto.py +98 -0
  366. immich/client/models/video_codec.py +36 -0
  367. immich/client/models/video_container.py +36 -0
  368. immich/client/models/workflow_action_item_dto.py +89 -0
  369. immich/client/models/workflow_action_response_dto.py +105 -0
  370. immich/client/models/workflow_create_dto.py +128 -0
  371. immich/client/models/workflow_filter_item_dto.py +89 -0
  372. immich/client/models/workflow_filter_response_dto.py +105 -0
  373. immich/client/models/workflow_response_dto.py +144 -0
  374. immich/client/models/workflow_update_dto.py +128 -0
  375. immich/client/py.typed +0 -0
  376. immich/client/rest.py +199 -0
  377. immich/client_wrapper/__init__.py +15 -0
  378. immich/client_wrapper/assets_api_wrapped.py +87 -0
  379. immich/client_wrapper/download_api_wrapped.py +111 -0
  380. immich/client_wrapper/users_api_wrapped.py +41 -0
  381. immich/py.typed +0 -0
  382. immich/sdk.py +365 -0
  383. immich/utils.py +100 -0
  384. immich-1.2.1.dist-info/METADATA +166 -0
  385. immich-1.2.1.dist-info/RECORD +387 -0
  386. immich-1.2.1.dist-info/WHEEL +4 -0
  387. immich-1.2.1.dist-info/licenses/LICENSE +9 -0
@@ -0,0 +1,1193 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Immich
5
+
6
+ Immich API
7
+
8
+ The version of the OpenAPI document: 2.4.1
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+ from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
15
+ from typing import Any, Dict, List, Optional, Tuple, Union
16
+ from typing_extensions import Annotated
17
+
18
+ from pydantic import StrictBool
19
+ from uuid import UUID
20
+ from immich.client.models.asset_order import AssetOrder
21
+ from immich.client.models.asset_visibility import AssetVisibility
22
+ from immich.client.models.time_bucket_asset_response_dto import (
23
+ TimeBucketAssetResponseDto,
24
+ )
25
+ from immich.client.models.time_buckets_response_dto import TimeBucketsResponseDto
26
+
27
+ from immich.client.api_client import ApiClient, RequestSerialized
28
+ from immich.client.api_response import ApiResponse
29
+ from immich.client.rest import RESTResponseType
30
+
31
+
32
+ class TimelineApi:
33
+ """NOTE: This class is auto generated by OpenAPI Generator
34
+ Ref: https://openapi-generator.tech
35
+
36
+ Do not edit the class manually.
37
+ """
38
+
39
+ def __init__(self, api_client=None) -> None:
40
+ if api_client is None:
41
+ api_client = ApiClient.get_default()
42
+ self.api_client = api_client
43
+
44
+ @validate_call
45
+ async def get_time_bucket(
46
+ self,
47
+ time_bucket: Annotated[
48
+ StrictStr,
49
+ Field(
50
+ description='Time bucket identifier in YYYY-MM-DD format (e.g., "2024-01-01" for January 2024)'
51
+ ),
52
+ ],
53
+ album_id: Annotated[
54
+ Optional[UUID],
55
+ Field(description="Filter assets belonging to a specific album"),
56
+ ] = None,
57
+ is_favorite: Annotated[
58
+ Optional[StrictBool],
59
+ Field(
60
+ description="Filter by favorite status (true for favorites only, false for non-favorites only)"
61
+ ),
62
+ ] = None,
63
+ is_trashed: Annotated[
64
+ Optional[StrictBool],
65
+ Field(
66
+ description="Filter by trash status (true for trashed assets only, false for non-trashed only)"
67
+ ),
68
+ ] = None,
69
+ key: Optional[StrictStr] = None,
70
+ order: Annotated[
71
+ Optional[AssetOrder],
72
+ Field(
73
+ description="Sort order for assets within time buckets (ASC for oldest first, DESC for newest first)"
74
+ ),
75
+ ] = None,
76
+ person_id: Annotated[
77
+ Optional[UUID],
78
+ Field(
79
+ description="Filter assets containing a specific person (face recognition)"
80
+ ),
81
+ ] = None,
82
+ slug: Optional[StrictStr] = None,
83
+ tag_id: Annotated[
84
+ Optional[UUID], Field(description="Filter assets with a specific tag")
85
+ ] = None,
86
+ user_id: Annotated[
87
+ Optional[UUID], Field(description="Filter assets by specific user ID")
88
+ ] = None,
89
+ visibility: Annotated[
90
+ Optional[AssetVisibility],
91
+ Field(
92
+ description="Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED)"
93
+ ),
94
+ ] = None,
95
+ with_coordinates: Annotated[
96
+ Optional[StrictBool],
97
+ Field(description="Include location data in the response"),
98
+ ] = None,
99
+ with_partners: Annotated[
100
+ Optional[StrictBool], Field(description="Include assets shared by partners")
101
+ ] = None,
102
+ with_stacked: Annotated[
103
+ Optional[StrictBool],
104
+ Field(
105
+ description="Include stacked assets in the response. When true, only primary assets from stacks are returned."
106
+ ),
107
+ ] = None,
108
+ _request_timeout: Union[
109
+ None,
110
+ Annotated[StrictFloat, Field(gt=0)],
111
+ Tuple[
112
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
113
+ ],
114
+ ] = None,
115
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
116
+ _content_type: Optional[StrictStr] = None,
117
+ _headers: Optional[Dict[StrictStr, Any]] = None,
118
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
119
+ ) -> TimeBucketAssetResponseDto:
120
+ """Get time bucket
121
+
122
+ Retrieve a string of all asset ids in a given time bucket.
123
+
124
+ :param time_bucket: Time bucket identifier in YYYY-MM-DD format (e.g., \"2024-01-01\" for January 2024) (required)
125
+ :type time_bucket: str
126
+ :param album_id: Filter assets belonging to a specific album
127
+ :type album_id: UUID
128
+ :param is_favorite: Filter by favorite status (true for favorites only, false for non-favorites only)
129
+ :type is_favorite: bool
130
+ :param is_trashed: Filter by trash status (true for trashed assets only, false for non-trashed only)
131
+ :type is_trashed: bool
132
+ :param key:
133
+ :type key: str
134
+ :param order: Sort order for assets within time buckets (ASC for oldest first, DESC for newest first)
135
+ :type order: AssetOrder
136
+ :param person_id: Filter assets containing a specific person (face recognition)
137
+ :type person_id: UUID
138
+ :param slug:
139
+ :type slug: str
140
+ :param tag_id: Filter assets with a specific tag
141
+ :type tag_id: UUID
142
+ :param user_id: Filter assets by specific user ID
143
+ :type user_id: UUID
144
+ :param visibility: Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED)
145
+ :type visibility: AssetVisibility
146
+ :param with_coordinates: Include location data in the response
147
+ :type with_coordinates: bool
148
+ :param with_partners: Include assets shared by partners
149
+ :type with_partners: bool
150
+ :param with_stacked: Include stacked assets in the response. When true, only primary assets from stacks are returned.
151
+ :type with_stacked: bool
152
+ :param _request_timeout: timeout setting for this request. If one
153
+ number provided, it will be total request
154
+ timeout. It can also be a pair (tuple) of
155
+ (connection, read) timeouts.
156
+ :type _request_timeout: int, tuple(int, int), optional
157
+ :param _request_auth: set to override the auth_settings for an a single
158
+ request; this effectively ignores the
159
+ authentication in the spec for a single request.
160
+ :type _request_auth: dict, optional
161
+ :param _content_type: force content-type for the request.
162
+ :type _content_type: str, Optional
163
+ :param _headers: set to override the headers for a single
164
+ request; this effectively ignores the headers
165
+ in the spec for a single request.
166
+ :type _headers: dict, optional
167
+ :param _host_index: set to override the host_index for a single
168
+ request; this effectively ignores the host_index
169
+ in the spec for a single request.
170
+ :type _host_index: int, optional
171
+ :return: Returns the result object.
172
+ """ # noqa: E501
173
+
174
+ _param = self._get_time_bucket_serialize(
175
+ time_bucket=time_bucket,
176
+ album_id=album_id,
177
+ is_favorite=is_favorite,
178
+ is_trashed=is_trashed,
179
+ key=key,
180
+ order=order,
181
+ person_id=person_id,
182
+ slug=slug,
183
+ tag_id=tag_id,
184
+ user_id=user_id,
185
+ visibility=visibility,
186
+ with_coordinates=with_coordinates,
187
+ with_partners=with_partners,
188
+ with_stacked=with_stacked,
189
+ _request_auth=_request_auth,
190
+ _content_type=_content_type,
191
+ _headers=_headers,
192
+ _host_index=_host_index,
193
+ )
194
+
195
+ _response_types_map: Dict[str, Optional[str]] = {
196
+ "200": "TimeBucketAssetResponseDto",
197
+ }
198
+ response_data = await self.api_client.call_api(
199
+ *_param, _request_timeout=_request_timeout
200
+ )
201
+ await response_data.read()
202
+ return self.api_client.response_deserialize(
203
+ response_data=response_data,
204
+ response_types_map=_response_types_map,
205
+ ).data
206
+
207
+ @validate_call
208
+ async def get_time_bucket_with_http_info(
209
+ self,
210
+ time_bucket: Annotated[
211
+ StrictStr,
212
+ Field(
213
+ description='Time bucket identifier in YYYY-MM-DD format (e.g., "2024-01-01" for January 2024)'
214
+ ),
215
+ ],
216
+ album_id: Annotated[
217
+ Optional[UUID],
218
+ Field(description="Filter assets belonging to a specific album"),
219
+ ] = None,
220
+ is_favorite: Annotated[
221
+ Optional[StrictBool],
222
+ Field(
223
+ description="Filter by favorite status (true for favorites only, false for non-favorites only)"
224
+ ),
225
+ ] = None,
226
+ is_trashed: Annotated[
227
+ Optional[StrictBool],
228
+ Field(
229
+ description="Filter by trash status (true for trashed assets only, false for non-trashed only)"
230
+ ),
231
+ ] = None,
232
+ key: Optional[StrictStr] = None,
233
+ order: Annotated[
234
+ Optional[AssetOrder],
235
+ Field(
236
+ description="Sort order for assets within time buckets (ASC for oldest first, DESC for newest first)"
237
+ ),
238
+ ] = None,
239
+ person_id: Annotated[
240
+ Optional[UUID],
241
+ Field(
242
+ description="Filter assets containing a specific person (face recognition)"
243
+ ),
244
+ ] = None,
245
+ slug: Optional[StrictStr] = None,
246
+ tag_id: Annotated[
247
+ Optional[UUID], Field(description="Filter assets with a specific tag")
248
+ ] = None,
249
+ user_id: Annotated[
250
+ Optional[UUID], Field(description="Filter assets by specific user ID")
251
+ ] = None,
252
+ visibility: Annotated[
253
+ Optional[AssetVisibility],
254
+ Field(
255
+ description="Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED)"
256
+ ),
257
+ ] = None,
258
+ with_coordinates: Annotated[
259
+ Optional[StrictBool],
260
+ Field(description="Include location data in the response"),
261
+ ] = None,
262
+ with_partners: Annotated[
263
+ Optional[StrictBool], Field(description="Include assets shared by partners")
264
+ ] = None,
265
+ with_stacked: Annotated[
266
+ Optional[StrictBool],
267
+ Field(
268
+ description="Include stacked assets in the response. When true, only primary assets from stacks are returned."
269
+ ),
270
+ ] = None,
271
+ _request_timeout: Union[
272
+ None,
273
+ Annotated[StrictFloat, Field(gt=0)],
274
+ Tuple[
275
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
276
+ ],
277
+ ] = None,
278
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
279
+ _content_type: Optional[StrictStr] = None,
280
+ _headers: Optional[Dict[StrictStr, Any]] = None,
281
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
282
+ ) -> ApiResponse[TimeBucketAssetResponseDto]:
283
+ """Get time bucket
284
+
285
+ Retrieve a string of all asset ids in a given time bucket.
286
+
287
+ :param time_bucket: Time bucket identifier in YYYY-MM-DD format (e.g., \"2024-01-01\" for January 2024) (required)
288
+ :type time_bucket: str
289
+ :param album_id: Filter assets belonging to a specific album
290
+ :type album_id: UUID
291
+ :param is_favorite: Filter by favorite status (true for favorites only, false for non-favorites only)
292
+ :type is_favorite: bool
293
+ :param is_trashed: Filter by trash status (true for trashed assets only, false for non-trashed only)
294
+ :type is_trashed: bool
295
+ :param key:
296
+ :type key: str
297
+ :param order: Sort order for assets within time buckets (ASC for oldest first, DESC for newest first)
298
+ :type order: AssetOrder
299
+ :param person_id: Filter assets containing a specific person (face recognition)
300
+ :type person_id: UUID
301
+ :param slug:
302
+ :type slug: str
303
+ :param tag_id: Filter assets with a specific tag
304
+ :type tag_id: UUID
305
+ :param user_id: Filter assets by specific user ID
306
+ :type user_id: UUID
307
+ :param visibility: Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED)
308
+ :type visibility: AssetVisibility
309
+ :param with_coordinates: Include location data in the response
310
+ :type with_coordinates: bool
311
+ :param with_partners: Include assets shared by partners
312
+ :type with_partners: bool
313
+ :param with_stacked: Include stacked assets in the response. When true, only primary assets from stacks are returned.
314
+ :type with_stacked: bool
315
+ :param _request_timeout: timeout setting for this request. If one
316
+ number provided, it will be total request
317
+ timeout. It can also be a pair (tuple) of
318
+ (connection, read) timeouts.
319
+ :type _request_timeout: int, tuple(int, int), optional
320
+ :param _request_auth: set to override the auth_settings for an a single
321
+ request; this effectively ignores the
322
+ authentication in the spec for a single request.
323
+ :type _request_auth: dict, optional
324
+ :param _content_type: force content-type for the request.
325
+ :type _content_type: str, Optional
326
+ :param _headers: set to override the headers for a single
327
+ request; this effectively ignores the headers
328
+ in the spec for a single request.
329
+ :type _headers: dict, optional
330
+ :param _host_index: set to override the host_index for a single
331
+ request; this effectively ignores the host_index
332
+ in the spec for a single request.
333
+ :type _host_index: int, optional
334
+ :return: Returns the result object.
335
+ """ # noqa: E501
336
+
337
+ _param = self._get_time_bucket_serialize(
338
+ time_bucket=time_bucket,
339
+ album_id=album_id,
340
+ is_favorite=is_favorite,
341
+ is_trashed=is_trashed,
342
+ key=key,
343
+ order=order,
344
+ person_id=person_id,
345
+ slug=slug,
346
+ tag_id=tag_id,
347
+ user_id=user_id,
348
+ visibility=visibility,
349
+ with_coordinates=with_coordinates,
350
+ with_partners=with_partners,
351
+ with_stacked=with_stacked,
352
+ _request_auth=_request_auth,
353
+ _content_type=_content_type,
354
+ _headers=_headers,
355
+ _host_index=_host_index,
356
+ )
357
+
358
+ _response_types_map: Dict[str, Optional[str]] = {
359
+ "200": "TimeBucketAssetResponseDto",
360
+ }
361
+ response_data = await self.api_client.call_api(
362
+ *_param, _request_timeout=_request_timeout
363
+ )
364
+ await response_data.read()
365
+ return self.api_client.response_deserialize(
366
+ response_data=response_data,
367
+ response_types_map=_response_types_map,
368
+ )
369
+
370
+ @validate_call
371
+ async def get_time_bucket_without_preload_content(
372
+ self,
373
+ time_bucket: Annotated[
374
+ StrictStr,
375
+ Field(
376
+ description='Time bucket identifier in YYYY-MM-DD format (e.g., "2024-01-01" for January 2024)'
377
+ ),
378
+ ],
379
+ album_id: Annotated[
380
+ Optional[UUID],
381
+ Field(description="Filter assets belonging to a specific album"),
382
+ ] = None,
383
+ is_favorite: Annotated[
384
+ Optional[StrictBool],
385
+ Field(
386
+ description="Filter by favorite status (true for favorites only, false for non-favorites only)"
387
+ ),
388
+ ] = None,
389
+ is_trashed: Annotated[
390
+ Optional[StrictBool],
391
+ Field(
392
+ description="Filter by trash status (true for trashed assets only, false for non-trashed only)"
393
+ ),
394
+ ] = None,
395
+ key: Optional[StrictStr] = None,
396
+ order: Annotated[
397
+ Optional[AssetOrder],
398
+ Field(
399
+ description="Sort order for assets within time buckets (ASC for oldest first, DESC for newest first)"
400
+ ),
401
+ ] = None,
402
+ person_id: Annotated[
403
+ Optional[UUID],
404
+ Field(
405
+ description="Filter assets containing a specific person (face recognition)"
406
+ ),
407
+ ] = None,
408
+ slug: Optional[StrictStr] = None,
409
+ tag_id: Annotated[
410
+ Optional[UUID], Field(description="Filter assets with a specific tag")
411
+ ] = None,
412
+ user_id: Annotated[
413
+ Optional[UUID], Field(description="Filter assets by specific user ID")
414
+ ] = None,
415
+ visibility: Annotated[
416
+ Optional[AssetVisibility],
417
+ Field(
418
+ description="Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED)"
419
+ ),
420
+ ] = None,
421
+ with_coordinates: Annotated[
422
+ Optional[StrictBool],
423
+ Field(description="Include location data in the response"),
424
+ ] = None,
425
+ with_partners: Annotated[
426
+ Optional[StrictBool], Field(description="Include assets shared by partners")
427
+ ] = None,
428
+ with_stacked: Annotated[
429
+ Optional[StrictBool],
430
+ Field(
431
+ description="Include stacked assets in the response. When true, only primary assets from stacks are returned."
432
+ ),
433
+ ] = None,
434
+ _request_timeout: Union[
435
+ None,
436
+ Annotated[StrictFloat, Field(gt=0)],
437
+ Tuple[
438
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
439
+ ],
440
+ ] = None,
441
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
442
+ _content_type: Optional[StrictStr] = None,
443
+ _headers: Optional[Dict[StrictStr, Any]] = None,
444
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
445
+ ) -> RESTResponseType:
446
+ """Get time bucket
447
+
448
+ Retrieve a string of all asset ids in a given time bucket.
449
+
450
+ :param time_bucket: Time bucket identifier in YYYY-MM-DD format (e.g., \"2024-01-01\" for January 2024) (required)
451
+ :type time_bucket: str
452
+ :param album_id: Filter assets belonging to a specific album
453
+ :type album_id: UUID
454
+ :param is_favorite: Filter by favorite status (true for favorites only, false for non-favorites only)
455
+ :type is_favorite: bool
456
+ :param is_trashed: Filter by trash status (true for trashed assets only, false for non-trashed only)
457
+ :type is_trashed: bool
458
+ :param key:
459
+ :type key: str
460
+ :param order: Sort order for assets within time buckets (ASC for oldest first, DESC for newest first)
461
+ :type order: AssetOrder
462
+ :param person_id: Filter assets containing a specific person (face recognition)
463
+ :type person_id: UUID
464
+ :param slug:
465
+ :type slug: str
466
+ :param tag_id: Filter assets with a specific tag
467
+ :type tag_id: UUID
468
+ :param user_id: Filter assets by specific user ID
469
+ :type user_id: UUID
470
+ :param visibility: Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED)
471
+ :type visibility: AssetVisibility
472
+ :param with_coordinates: Include location data in the response
473
+ :type with_coordinates: bool
474
+ :param with_partners: Include assets shared by partners
475
+ :type with_partners: bool
476
+ :param with_stacked: Include stacked assets in the response. When true, only primary assets from stacks are returned.
477
+ :type with_stacked: bool
478
+ :param _request_timeout: timeout setting for this request. If one
479
+ number provided, it will be total request
480
+ timeout. It can also be a pair (tuple) of
481
+ (connection, read) timeouts.
482
+ :type _request_timeout: int, tuple(int, int), optional
483
+ :param _request_auth: set to override the auth_settings for an a single
484
+ request; this effectively ignores the
485
+ authentication in the spec for a single request.
486
+ :type _request_auth: dict, optional
487
+ :param _content_type: force content-type for the request.
488
+ :type _content_type: str, Optional
489
+ :param _headers: set to override the headers for a single
490
+ request; this effectively ignores the headers
491
+ in the spec for a single request.
492
+ :type _headers: dict, optional
493
+ :param _host_index: set to override the host_index for a single
494
+ request; this effectively ignores the host_index
495
+ in the spec for a single request.
496
+ :type _host_index: int, optional
497
+ :return: Returns the result object.
498
+ """ # noqa: E501
499
+
500
+ _param = self._get_time_bucket_serialize(
501
+ time_bucket=time_bucket,
502
+ album_id=album_id,
503
+ is_favorite=is_favorite,
504
+ is_trashed=is_trashed,
505
+ key=key,
506
+ order=order,
507
+ person_id=person_id,
508
+ slug=slug,
509
+ tag_id=tag_id,
510
+ user_id=user_id,
511
+ visibility=visibility,
512
+ with_coordinates=with_coordinates,
513
+ with_partners=with_partners,
514
+ with_stacked=with_stacked,
515
+ _request_auth=_request_auth,
516
+ _content_type=_content_type,
517
+ _headers=_headers,
518
+ _host_index=_host_index,
519
+ )
520
+
521
+ _response_types_map: Dict[str, Optional[str]] = {
522
+ "200": "TimeBucketAssetResponseDto",
523
+ }
524
+ response_data = await self.api_client.call_api(
525
+ *_param, _request_timeout=_request_timeout
526
+ )
527
+ return response_data.response
528
+
529
+ def _get_time_bucket_serialize(
530
+ self,
531
+ time_bucket,
532
+ album_id,
533
+ is_favorite,
534
+ is_trashed,
535
+ key,
536
+ order,
537
+ person_id,
538
+ slug,
539
+ tag_id,
540
+ user_id,
541
+ visibility,
542
+ with_coordinates,
543
+ with_partners,
544
+ with_stacked,
545
+ _request_auth,
546
+ _content_type,
547
+ _headers,
548
+ _host_index,
549
+ ) -> RequestSerialized:
550
+ _host = None
551
+
552
+ _collection_formats: Dict[str, str] = {}
553
+
554
+ _path_params: Dict[str, str] = {}
555
+ _query_params: List[Tuple[str, str]] = []
556
+ _header_params: Dict[str, Optional[str]] = _headers or {}
557
+ _form_params: List[Tuple[str, str]] = []
558
+ _files: Dict[
559
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
560
+ ] = {}
561
+ _body_params: Optional[bytes] = None
562
+
563
+ # process the path parameters
564
+ # process the query parameters
565
+ if album_id is not None:
566
+ _query_params.append(("albumId", album_id))
567
+
568
+ if is_favorite is not None:
569
+ _query_params.append(("isFavorite", is_favorite))
570
+
571
+ if is_trashed is not None:
572
+ _query_params.append(("isTrashed", is_trashed))
573
+
574
+ if key is not None:
575
+ _query_params.append(("key", key))
576
+
577
+ if order is not None:
578
+ _query_params.append(("order", order.value))
579
+
580
+ if person_id is not None:
581
+ _query_params.append(("personId", person_id))
582
+
583
+ if slug is not None:
584
+ _query_params.append(("slug", slug))
585
+
586
+ if tag_id is not None:
587
+ _query_params.append(("tagId", tag_id))
588
+
589
+ if time_bucket is not None:
590
+ _query_params.append(("timeBucket", time_bucket))
591
+
592
+ if user_id is not None:
593
+ _query_params.append(("userId", user_id))
594
+
595
+ if visibility is not None:
596
+ _query_params.append(("visibility", visibility.value))
597
+
598
+ if with_coordinates is not None:
599
+ _query_params.append(("withCoordinates", with_coordinates))
600
+
601
+ if with_partners is not None:
602
+ _query_params.append(("withPartners", with_partners))
603
+
604
+ if with_stacked is not None:
605
+ _query_params.append(("withStacked", with_stacked))
606
+
607
+ # process the header parameters
608
+ # process the form parameters
609
+ # process the body parameter
610
+
611
+ # set the HTTP header `Accept`
612
+ if "Accept" not in _header_params:
613
+ _header_params["Accept"] = self.api_client.select_header_accept(
614
+ ["application/json"]
615
+ )
616
+
617
+ # authentication setting
618
+ _auth_settings: List[str] = ["cookie", "api_key", "bearer"]
619
+
620
+ return self.api_client.param_serialize(
621
+ method="GET",
622
+ resource_path="/timeline/bucket",
623
+ path_params=_path_params,
624
+ query_params=_query_params,
625
+ header_params=_header_params,
626
+ body=_body_params,
627
+ post_params=_form_params,
628
+ files=_files,
629
+ auth_settings=_auth_settings,
630
+ collection_formats=_collection_formats,
631
+ _host=_host,
632
+ _request_auth=_request_auth,
633
+ )
634
+
635
+ @validate_call
636
+ async def get_time_buckets(
637
+ self,
638
+ album_id: Annotated[
639
+ Optional[UUID],
640
+ Field(description="Filter assets belonging to a specific album"),
641
+ ] = None,
642
+ is_favorite: Annotated[
643
+ Optional[StrictBool],
644
+ Field(
645
+ description="Filter by favorite status (true for favorites only, false for non-favorites only)"
646
+ ),
647
+ ] = None,
648
+ is_trashed: Annotated[
649
+ Optional[StrictBool],
650
+ Field(
651
+ description="Filter by trash status (true for trashed assets only, false for non-trashed only)"
652
+ ),
653
+ ] = None,
654
+ key: Optional[StrictStr] = None,
655
+ order: Annotated[
656
+ Optional[AssetOrder],
657
+ Field(
658
+ description="Sort order for assets within time buckets (ASC for oldest first, DESC for newest first)"
659
+ ),
660
+ ] = None,
661
+ person_id: Annotated[
662
+ Optional[UUID],
663
+ Field(
664
+ description="Filter assets containing a specific person (face recognition)"
665
+ ),
666
+ ] = None,
667
+ slug: Optional[StrictStr] = None,
668
+ tag_id: Annotated[
669
+ Optional[UUID], Field(description="Filter assets with a specific tag")
670
+ ] = None,
671
+ user_id: Annotated[
672
+ Optional[UUID], Field(description="Filter assets by specific user ID")
673
+ ] = None,
674
+ visibility: Annotated[
675
+ Optional[AssetVisibility],
676
+ Field(
677
+ description="Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED)"
678
+ ),
679
+ ] = None,
680
+ with_coordinates: Annotated[
681
+ Optional[StrictBool],
682
+ Field(description="Include location data in the response"),
683
+ ] = None,
684
+ with_partners: Annotated[
685
+ Optional[StrictBool], Field(description="Include assets shared by partners")
686
+ ] = None,
687
+ with_stacked: Annotated[
688
+ Optional[StrictBool],
689
+ Field(
690
+ description="Include stacked assets in the response. When true, only primary assets from stacks are returned."
691
+ ),
692
+ ] = None,
693
+ _request_timeout: Union[
694
+ None,
695
+ Annotated[StrictFloat, Field(gt=0)],
696
+ Tuple[
697
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
698
+ ],
699
+ ] = None,
700
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
701
+ _content_type: Optional[StrictStr] = None,
702
+ _headers: Optional[Dict[StrictStr, Any]] = None,
703
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
704
+ ) -> List[TimeBucketsResponseDto]:
705
+ """Get time buckets
706
+
707
+ Retrieve a list of all minimal time buckets.
708
+
709
+ :param album_id: Filter assets belonging to a specific album
710
+ :type album_id: UUID
711
+ :param is_favorite: Filter by favorite status (true for favorites only, false for non-favorites only)
712
+ :type is_favorite: bool
713
+ :param is_trashed: Filter by trash status (true for trashed assets only, false for non-trashed only)
714
+ :type is_trashed: bool
715
+ :param key:
716
+ :type key: str
717
+ :param order: Sort order for assets within time buckets (ASC for oldest first, DESC for newest first)
718
+ :type order: AssetOrder
719
+ :param person_id: Filter assets containing a specific person (face recognition)
720
+ :type person_id: UUID
721
+ :param slug:
722
+ :type slug: str
723
+ :param tag_id: Filter assets with a specific tag
724
+ :type tag_id: UUID
725
+ :param user_id: Filter assets by specific user ID
726
+ :type user_id: UUID
727
+ :param visibility: Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED)
728
+ :type visibility: AssetVisibility
729
+ :param with_coordinates: Include location data in the response
730
+ :type with_coordinates: bool
731
+ :param with_partners: Include assets shared by partners
732
+ :type with_partners: bool
733
+ :param with_stacked: Include stacked assets in the response. When true, only primary assets from stacks are returned.
734
+ :type with_stacked: bool
735
+ :param _request_timeout: timeout setting for this request. If one
736
+ number provided, it will be total request
737
+ timeout. It can also be a pair (tuple) of
738
+ (connection, read) timeouts.
739
+ :type _request_timeout: int, tuple(int, int), optional
740
+ :param _request_auth: set to override the auth_settings for an a single
741
+ request; this effectively ignores the
742
+ authentication in the spec for a single request.
743
+ :type _request_auth: dict, optional
744
+ :param _content_type: force content-type for the request.
745
+ :type _content_type: str, Optional
746
+ :param _headers: set to override the headers for a single
747
+ request; this effectively ignores the headers
748
+ in the spec for a single request.
749
+ :type _headers: dict, optional
750
+ :param _host_index: set to override the host_index for a single
751
+ request; this effectively ignores the host_index
752
+ in the spec for a single request.
753
+ :type _host_index: int, optional
754
+ :return: Returns the result object.
755
+ """ # noqa: E501
756
+
757
+ _param = self._get_time_buckets_serialize(
758
+ album_id=album_id,
759
+ is_favorite=is_favorite,
760
+ is_trashed=is_trashed,
761
+ key=key,
762
+ order=order,
763
+ person_id=person_id,
764
+ slug=slug,
765
+ tag_id=tag_id,
766
+ user_id=user_id,
767
+ visibility=visibility,
768
+ with_coordinates=with_coordinates,
769
+ with_partners=with_partners,
770
+ with_stacked=with_stacked,
771
+ _request_auth=_request_auth,
772
+ _content_type=_content_type,
773
+ _headers=_headers,
774
+ _host_index=_host_index,
775
+ )
776
+
777
+ _response_types_map: Dict[str, Optional[str]] = {
778
+ "200": "List[TimeBucketsResponseDto]",
779
+ }
780
+ response_data = await self.api_client.call_api(
781
+ *_param, _request_timeout=_request_timeout
782
+ )
783
+ await response_data.read()
784
+ return self.api_client.response_deserialize(
785
+ response_data=response_data,
786
+ response_types_map=_response_types_map,
787
+ ).data
788
+
789
+ @validate_call
790
+ async def get_time_buckets_with_http_info(
791
+ self,
792
+ album_id: Annotated[
793
+ Optional[UUID],
794
+ Field(description="Filter assets belonging to a specific album"),
795
+ ] = None,
796
+ is_favorite: Annotated[
797
+ Optional[StrictBool],
798
+ Field(
799
+ description="Filter by favorite status (true for favorites only, false for non-favorites only)"
800
+ ),
801
+ ] = None,
802
+ is_trashed: Annotated[
803
+ Optional[StrictBool],
804
+ Field(
805
+ description="Filter by trash status (true for trashed assets only, false for non-trashed only)"
806
+ ),
807
+ ] = None,
808
+ key: Optional[StrictStr] = None,
809
+ order: Annotated[
810
+ Optional[AssetOrder],
811
+ Field(
812
+ description="Sort order for assets within time buckets (ASC for oldest first, DESC for newest first)"
813
+ ),
814
+ ] = None,
815
+ person_id: Annotated[
816
+ Optional[UUID],
817
+ Field(
818
+ description="Filter assets containing a specific person (face recognition)"
819
+ ),
820
+ ] = None,
821
+ slug: Optional[StrictStr] = None,
822
+ tag_id: Annotated[
823
+ Optional[UUID], Field(description="Filter assets with a specific tag")
824
+ ] = None,
825
+ user_id: Annotated[
826
+ Optional[UUID], Field(description="Filter assets by specific user ID")
827
+ ] = None,
828
+ visibility: Annotated[
829
+ Optional[AssetVisibility],
830
+ Field(
831
+ description="Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED)"
832
+ ),
833
+ ] = None,
834
+ with_coordinates: Annotated[
835
+ Optional[StrictBool],
836
+ Field(description="Include location data in the response"),
837
+ ] = None,
838
+ with_partners: Annotated[
839
+ Optional[StrictBool], Field(description="Include assets shared by partners")
840
+ ] = None,
841
+ with_stacked: Annotated[
842
+ Optional[StrictBool],
843
+ Field(
844
+ description="Include stacked assets in the response. When true, only primary assets from stacks are returned."
845
+ ),
846
+ ] = None,
847
+ _request_timeout: Union[
848
+ None,
849
+ Annotated[StrictFloat, Field(gt=0)],
850
+ Tuple[
851
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
852
+ ],
853
+ ] = None,
854
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
855
+ _content_type: Optional[StrictStr] = None,
856
+ _headers: Optional[Dict[StrictStr, Any]] = None,
857
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
858
+ ) -> ApiResponse[List[TimeBucketsResponseDto]]:
859
+ """Get time buckets
860
+
861
+ Retrieve a list of all minimal time buckets.
862
+
863
+ :param album_id: Filter assets belonging to a specific album
864
+ :type album_id: UUID
865
+ :param is_favorite: Filter by favorite status (true for favorites only, false for non-favorites only)
866
+ :type is_favorite: bool
867
+ :param is_trashed: Filter by trash status (true for trashed assets only, false for non-trashed only)
868
+ :type is_trashed: bool
869
+ :param key:
870
+ :type key: str
871
+ :param order: Sort order for assets within time buckets (ASC for oldest first, DESC for newest first)
872
+ :type order: AssetOrder
873
+ :param person_id: Filter assets containing a specific person (face recognition)
874
+ :type person_id: UUID
875
+ :param slug:
876
+ :type slug: str
877
+ :param tag_id: Filter assets with a specific tag
878
+ :type tag_id: UUID
879
+ :param user_id: Filter assets by specific user ID
880
+ :type user_id: UUID
881
+ :param visibility: Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED)
882
+ :type visibility: AssetVisibility
883
+ :param with_coordinates: Include location data in the response
884
+ :type with_coordinates: bool
885
+ :param with_partners: Include assets shared by partners
886
+ :type with_partners: bool
887
+ :param with_stacked: Include stacked assets in the response. When true, only primary assets from stacks are returned.
888
+ :type with_stacked: bool
889
+ :param _request_timeout: timeout setting for this request. If one
890
+ number provided, it will be total request
891
+ timeout. It can also be a pair (tuple) of
892
+ (connection, read) timeouts.
893
+ :type _request_timeout: int, tuple(int, int), optional
894
+ :param _request_auth: set to override the auth_settings for an a single
895
+ request; this effectively ignores the
896
+ authentication in the spec for a single request.
897
+ :type _request_auth: dict, optional
898
+ :param _content_type: force content-type for the request.
899
+ :type _content_type: str, Optional
900
+ :param _headers: set to override the headers for a single
901
+ request; this effectively ignores the headers
902
+ in the spec for a single request.
903
+ :type _headers: dict, optional
904
+ :param _host_index: set to override the host_index for a single
905
+ request; this effectively ignores the host_index
906
+ in the spec for a single request.
907
+ :type _host_index: int, optional
908
+ :return: Returns the result object.
909
+ """ # noqa: E501
910
+
911
+ _param = self._get_time_buckets_serialize(
912
+ album_id=album_id,
913
+ is_favorite=is_favorite,
914
+ is_trashed=is_trashed,
915
+ key=key,
916
+ order=order,
917
+ person_id=person_id,
918
+ slug=slug,
919
+ tag_id=tag_id,
920
+ user_id=user_id,
921
+ visibility=visibility,
922
+ with_coordinates=with_coordinates,
923
+ with_partners=with_partners,
924
+ with_stacked=with_stacked,
925
+ _request_auth=_request_auth,
926
+ _content_type=_content_type,
927
+ _headers=_headers,
928
+ _host_index=_host_index,
929
+ )
930
+
931
+ _response_types_map: Dict[str, Optional[str]] = {
932
+ "200": "List[TimeBucketsResponseDto]",
933
+ }
934
+ response_data = await self.api_client.call_api(
935
+ *_param, _request_timeout=_request_timeout
936
+ )
937
+ await response_data.read()
938
+ return self.api_client.response_deserialize(
939
+ response_data=response_data,
940
+ response_types_map=_response_types_map,
941
+ )
942
+
943
+ @validate_call
944
+ async def get_time_buckets_without_preload_content(
945
+ self,
946
+ album_id: Annotated[
947
+ Optional[UUID],
948
+ Field(description="Filter assets belonging to a specific album"),
949
+ ] = None,
950
+ is_favorite: Annotated[
951
+ Optional[StrictBool],
952
+ Field(
953
+ description="Filter by favorite status (true for favorites only, false for non-favorites only)"
954
+ ),
955
+ ] = None,
956
+ is_trashed: Annotated[
957
+ Optional[StrictBool],
958
+ Field(
959
+ description="Filter by trash status (true for trashed assets only, false for non-trashed only)"
960
+ ),
961
+ ] = None,
962
+ key: Optional[StrictStr] = None,
963
+ order: Annotated[
964
+ Optional[AssetOrder],
965
+ Field(
966
+ description="Sort order for assets within time buckets (ASC for oldest first, DESC for newest first)"
967
+ ),
968
+ ] = None,
969
+ person_id: Annotated[
970
+ Optional[UUID],
971
+ Field(
972
+ description="Filter assets containing a specific person (face recognition)"
973
+ ),
974
+ ] = None,
975
+ slug: Optional[StrictStr] = None,
976
+ tag_id: Annotated[
977
+ Optional[UUID], Field(description="Filter assets with a specific tag")
978
+ ] = None,
979
+ user_id: Annotated[
980
+ Optional[UUID], Field(description="Filter assets by specific user ID")
981
+ ] = None,
982
+ visibility: Annotated[
983
+ Optional[AssetVisibility],
984
+ Field(
985
+ description="Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED)"
986
+ ),
987
+ ] = None,
988
+ with_coordinates: Annotated[
989
+ Optional[StrictBool],
990
+ Field(description="Include location data in the response"),
991
+ ] = None,
992
+ with_partners: Annotated[
993
+ Optional[StrictBool], Field(description="Include assets shared by partners")
994
+ ] = None,
995
+ with_stacked: Annotated[
996
+ Optional[StrictBool],
997
+ Field(
998
+ description="Include stacked assets in the response. When true, only primary assets from stacks are returned."
999
+ ),
1000
+ ] = None,
1001
+ _request_timeout: Union[
1002
+ None,
1003
+ Annotated[StrictFloat, Field(gt=0)],
1004
+ Tuple[
1005
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
1006
+ ],
1007
+ ] = None,
1008
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1009
+ _content_type: Optional[StrictStr] = None,
1010
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1011
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1012
+ ) -> RESTResponseType:
1013
+ """Get time buckets
1014
+
1015
+ Retrieve a list of all minimal time buckets.
1016
+
1017
+ :param album_id: Filter assets belonging to a specific album
1018
+ :type album_id: UUID
1019
+ :param is_favorite: Filter by favorite status (true for favorites only, false for non-favorites only)
1020
+ :type is_favorite: bool
1021
+ :param is_trashed: Filter by trash status (true for trashed assets only, false for non-trashed only)
1022
+ :type is_trashed: bool
1023
+ :param key:
1024
+ :type key: str
1025
+ :param order: Sort order for assets within time buckets (ASC for oldest first, DESC for newest first)
1026
+ :type order: AssetOrder
1027
+ :param person_id: Filter assets containing a specific person (face recognition)
1028
+ :type person_id: UUID
1029
+ :param slug:
1030
+ :type slug: str
1031
+ :param tag_id: Filter assets with a specific tag
1032
+ :type tag_id: UUID
1033
+ :param user_id: Filter assets by specific user ID
1034
+ :type user_id: UUID
1035
+ :param visibility: Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED)
1036
+ :type visibility: AssetVisibility
1037
+ :param with_coordinates: Include location data in the response
1038
+ :type with_coordinates: bool
1039
+ :param with_partners: Include assets shared by partners
1040
+ :type with_partners: bool
1041
+ :param with_stacked: Include stacked assets in the response. When true, only primary assets from stacks are returned.
1042
+ :type with_stacked: bool
1043
+ :param _request_timeout: timeout setting for this request. If one
1044
+ number provided, it will be total request
1045
+ timeout. It can also be a pair (tuple) of
1046
+ (connection, read) timeouts.
1047
+ :type _request_timeout: int, tuple(int, int), optional
1048
+ :param _request_auth: set to override the auth_settings for an a single
1049
+ request; this effectively ignores the
1050
+ authentication in the spec for a single request.
1051
+ :type _request_auth: dict, optional
1052
+ :param _content_type: force content-type for the request.
1053
+ :type _content_type: str, Optional
1054
+ :param _headers: set to override the headers for a single
1055
+ request; this effectively ignores the headers
1056
+ in the spec for a single request.
1057
+ :type _headers: dict, optional
1058
+ :param _host_index: set to override the host_index for a single
1059
+ request; this effectively ignores the host_index
1060
+ in the spec for a single request.
1061
+ :type _host_index: int, optional
1062
+ :return: Returns the result object.
1063
+ """ # noqa: E501
1064
+
1065
+ _param = self._get_time_buckets_serialize(
1066
+ album_id=album_id,
1067
+ is_favorite=is_favorite,
1068
+ is_trashed=is_trashed,
1069
+ key=key,
1070
+ order=order,
1071
+ person_id=person_id,
1072
+ slug=slug,
1073
+ tag_id=tag_id,
1074
+ user_id=user_id,
1075
+ visibility=visibility,
1076
+ with_coordinates=with_coordinates,
1077
+ with_partners=with_partners,
1078
+ with_stacked=with_stacked,
1079
+ _request_auth=_request_auth,
1080
+ _content_type=_content_type,
1081
+ _headers=_headers,
1082
+ _host_index=_host_index,
1083
+ )
1084
+
1085
+ _response_types_map: Dict[str, Optional[str]] = {
1086
+ "200": "List[TimeBucketsResponseDto]",
1087
+ }
1088
+ response_data = await self.api_client.call_api(
1089
+ *_param, _request_timeout=_request_timeout
1090
+ )
1091
+ return response_data.response
1092
+
1093
+ def _get_time_buckets_serialize(
1094
+ self,
1095
+ album_id,
1096
+ is_favorite,
1097
+ is_trashed,
1098
+ key,
1099
+ order,
1100
+ person_id,
1101
+ slug,
1102
+ tag_id,
1103
+ user_id,
1104
+ visibility,
1105
+ with_coordinates,
1106
+ with_partners,
1107
+ with_stacked,
1108
+ _request_auth,
1109
+ _content_type,
1110
+ _headers,
1111
+ _host_index,
1112
+ ) -> RequestSerialized:
1113
+ _host = None
1114
+
1115
+ _collection_formats: Dict[str, str] = {}
1116
+
1117
+ _path_params: Dict[str, str] = {}
1118
+ _query_params: List[Tuple[str, str]] = []
1119
+ _header_params: Dict[str, Optional[str]] = _headers or {}
1120
+ _form_params: List[Tuple[str, str]] = []
1121
+ _files: Dict[
1122
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
1123
+ ] = {}
1124
+ _body_params: Optional[bytes] = None
1125
+
1126
+ # process the path parameters
1127
+ # process the query parameters
1128
+ if album_id is not None:
1129
+ _query_params.append(("albumId", album_id))
1130
+
1131
+ if is_favorite is not None:
1132
+ _query_params.append(("isFavorite", is_favorite))
1133
+
1134
+ if is_trashed is not None:
1135
+ _query_params.append(("isTrashed", is_trashed))
1136
+
1137
+ if key is not None:
1138
+ _query_params.append(("key", key))
1139
+
1140
+ if order is not None:
1141
+ _query_params.append(("order", order.value))
1142
+
1143
+ if person_id is not None:
1144
+ _query_params.append(("personId", person_id))
1145
+
1146
+ if slug is not None:
1147
+ _query_params.append(("slug", slug))
1148
+
1149
+ if tag_id is not None:
1150
+ _query_params.append(("tagId", tag_id))
1151
+
1152
+ if user_id is not None:
1153
+ _query_params.append(("userId", user_id))
1154
+
1155
+ if visibility is not None:
1156
+ _query_params.append(("visibility", visibility.value))
1157
+
1158
+ if with_coordinates is not None:
1159
+ _query_params.append(("withCoordinates", with_coordinates))
1160
+
1161
+ if with_partners is not None:
1162
+ _query_params.append(("withPartners", with_partners))
1163
+
1164
+ if with_stacked is not None:
1165
+ _query_params.append(("withStacked", with_stacked))
1166
+
1167
+ # process the header parameters
1168
+ # process the form parameters
1169
+ # process the body parameter
1170
+
1171
+ # set the HTTP header `Accept`
1172
+ if "Accept" not in _header_params:
1173
+ _header_params["Accept"] = self.api_client.select_header_accept(
1174
+ ["application/json"]
1175
+ )
1176
+
1177
+ # authentication setting
1178
+ _auth_settings: List[str] = ["cookie", "api_key", "bearer"]
1179
+
1180
+ return self.api_client.param_serialize(
1181
+ method="GET",
1182
+ resource_path="/timeline/buckets",
1183
+ path_params=_path_params,
1184
+ query_params=_query_params,
1185
+ header_params=_header_params,
1186
+ body=_body_params,
1187
+ post_params=_form_params,
1188
+ files=_files,
1189
+ auth_settings=_auth_settings,
1190
+ collection_formats=_collection_formats,
1191
+ _host=_host,
1192
+ _request_auth=_request_auth,
1193
+ )