symphony_bdk_python 2.10.dev0__py3-none-any.whl → 2.11.0__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. symphony/bdk/core/__init__.py +1 -0
  2. symphony/bdk/core/activity/__init__.py +1 -2
  3. symphony/bdk/core/activity/api.py +4 -4
  4. symphony/bdk/core/activity/command.py +17 -9
  5. symphony/bdk/core/activity/exception.py +2 -4
  6. symphony/bdk/core/activity/help_command.py +3 -2
  7. symphony/bdk/core/activity/parsing/arguments.py +1 -1
  8. symphony/bdk/core/activity/parsing/command_token.py +5 -4
  9. symphony/bdk/core/activity/parsing/input_tokenizer.py +13 -5
  10. symphony/bdk/core/activity/parsing/match_result.py +5 -3
  11. symphony/bdk/core/activity/parsing/message_entities.py +7 -6
  12. symphony/bdk/core/activity/parsing/slash_command_pattern.py +22 -7
  13. symphony/bdk/core/activity/registry.py +17 -7
  14. symphony/bdk/core/auth/__init__.py +1 -2
  15. symphony/bdk/core/auth/auth_session.py +33 -14
  16. symphony/bdk/core/auth/authenticator_factory.py +41 -21
  17. symphony/bdk/core/auth/bot_authenticator.py +33 -21
  18. symphony/bdk/core/auth/exception.py +3 -6
  19. symphony/bdk/core/auth/ext_app_authenticator.py +40 -30
  20. symphony/bdk/core/auth/jwt_helper.py +36 -15
  21. symphony/bdk/core/auth/obo_authenticator.py +27 -18
  22. symphony/bdk/core/auth/tokens_repository.py +5 -6
  23. symphony/bdk/core/client/__init__.py +2 -2
  24. symphony/bdk/core/client/api_client_factory.py +40 -22
  25. symphony/bdk/core/client/trace_id.py +3 -4
  26. symphony/bdk/core/config/__init__.py +1 -2
  27. symphony/bdk/core/config/exception.py +2 -4
  28. symphony/bdk/core/config/loader.py +2 -2
  29. symphony/bdk/core/config/model/bdk_app_config.py +5 -3
  30. symphony/bdk/core/config/model/bdk_authentication_config.py +13 -7
  31. symphony/bdk/core/config/model/bdk_bot_config.py +6 -3
  32. symphony/bdk/core/config/model/bdk_client_config.py +1 -1
  33. symphony/bdk/core/config/model/bdk_config.py +12 -7
  34. symphony/bdk/core/config/model/bdk_datafeed_config.py +7 -6
  35. symphony/bdk/core/config/model/bdk_datahose_config.py +1 -2
  36. symphony/bdk/core/config/model/bdk_retry_config.py +7 -3
  37. symphony/bdk/core/config/model/bdk_rsa_key_config.py +4 -5
  38. symphony/bdk/core/config/model/bdk_server_config.py +7 -2
  39. symphony/bdk/core/extension.py +15 -13
  40. symphony/bdk/core/retry/__init__.py +13 -9
  41. symphony/bdk/core/retry/_asyncio.py +10 -7
  42. symphony/bdk/core/retry/strategy.py +5 -2
  43. symphony/bdk/core/service/__init__.py +1 -2
  44. symphony/bdk/core/service/application/application_service.py +51 -41
  45. symphony/bdk/core/service/connection/connection_service.py +14 -23
  46. symphony/bdk/core/service/connection/model/connection_status.py +1 -0
  47. symphony/bdk/core/service/datafeed/abstract_ackId_event_loop.py +24 -14
  48. symphony/bdk/core/service/datafeed/abstract_datafeed_loop.py +16 -7
  49. symphony/bdk/core/service/datafeed/abstract_datahose_loop.py +2 -2
  50. symphony/bdk/core/service/datafeed/datafeed_loop_v1.py +18 -10
  51. symphony/bdk/core/service/datafeed/datafeed_loop_v2.py +31 -21
  52. symphony/bdk/core/service/datafeed/datahose_loop.py +22 -11
  53. symphony/bdk/core/service/datafeed/on_disk_datafeed_id_repository.py +10 -4
  54. symphony/bdk/core/service/datafeed/real_time_event_listener.py +32 -18
  55. symphony/bdk/core/service/exception.py +3 -6
  56. symphony/bdk/core/service/health/health_service.py +5 -4
  57. symphony/bdk/core/service/message/message_parser.py +10 -8
  58. symphony/bdk/core/service/message/message_service.py +196 -161
  59. symphony/bdk/core/service/message/messageml_util.py +6 -6
  60. symphony/bdk/core/service/message/model.py +15 -5
  61. symphony/bdk/core/service/message/multi_attachments_messages_api.py +134 -219
  62. symphony/bdk/core/service/obo_services.py +5 -4
  63. symphony/bdk/core/service/pagination.py +9 -6
  64. symphony/bdk/core/service/presence/presence_service.py +40 -28
  65. symphony/bdk/core/service/session/session_service.py +7 -13
  66. symphony/bdk/core/service/signal/signal_service.py +66 -33
  67. symphony/bdk/core/service/stream/stream_service.py +186 -69
  68. symphony/bdk/core/service/stream/stream_util.py +1 -0
  69. symphony/bdk/core/service/user/model/delegate_action_enum.py +1 -0
  70. symphony/bdk/core/service/user/model/role_id.py +1 -0
  71. symphony/bdk/core/service/user/user_service.py +225 -313
  72. symphony/bdk/core/service/user/user_util.py +4 -6
  73. symphony/bdk/core/service/version/__init__.py +0 -0
  74. symphony/bdk/core/service/version/agent_version_service.py +62 -0
  75. symphony/bdk/core/service_factory.py +50 -53
  76. symphony/bdk/core/symphony_bdk.py +34 -18
  77. symphony/bdk/ext/group.py +52 -37
  78. symphony/bdk/gen/agent_api/attachments_api.py +10 -18
  79. symphony/bdk/gen/agent_api/audit_trail_api.py +8 -12
  80. symphony/bdk/gen/agent_api/datafeed_api.py +34 -219
  81. symphony/bdk/gen/agent_api/datahose_api.py +184 -0
  82. symphony/bdk/gen/agent_api/dlp_policies_and_dictionary_management_api.py +130 -214
  83. symphony/bdk/gen/agent_api/messages_api.py +99 -119
  84. symphony/bdk/gen/agent_api/share_api.py +7 -11
  85. symphony/bdk/gen/agent_api/signals_api.py +1 -1
  86. symphony/bdk/gen/agent_api/system_api.py +1 -1
  87. symphony/bdk/gen/agent_api/util_api.py +13 -21
  88. symphony/bdk/gen/agent_api/violations_api.py +45 -73
  89. symphony/bdk/gen/agent_model/ack_id.py +1 -1
  90. symphony/bdk/gen/agent_model/agent_info.py +1 -1
  91. symphony/bdk/gen/agent_model/attachment_info.py +1 -1
  92. symphony/bdk/gen/agent_model/base_message.py +1 -1
  93. symphony/bdk/gen/agent_model/base_signal.py +1 -1
  94. symphony/bdk/gen/agent_model/channel_subscriber.py +1 -1
  95. symphony/bdk/gen/agent_model/channel_subscriber_response.py +1 -1
  96. symphony/bdk/gen/agent_model/channel_subscription_error.py +1 -1
  97. symphony/bdk/gen/agent_model/channel_subscription_response.py +1 -1
  98. symphony/bdk/gen/agent_model/connection_request_message.py +1 -1
  99. symphony/bdk/gen/agent_model/connection_request_message_all_of.py +1 -1
  100. symphony/bdk/gen/agent_model/datafeed.py +1 -1
  101. symphony/bdk/gen/agent_model/error.py +1 -1
  102. symphony/bdk/gen/agent_model/import_response.py +1 -1
  103. symphony/bdk/gen/agent_model/import_response_list.py +1 -1
  104. symphony/bdk/gen/agent_model/imported_message.py +1 -1
  105. symphony/bdk/gen/agent_model/ingestion_error.py +266 -0
  106. symphony/bdk/gen/agent_model/message.py +1 -1
  107. symphony/bdk/gen/agent_model/message_all_of.py +1 -1
  108. symphony/bdk/gen/agent_model/message_import_list.py +1 -1
  109. symphony/bdk/gen/agent_model/message_list.py +1 -1
  110. symphony/bdk/gen/agent_model/message_search_query.py +1 -1
  111. symphony/bdk/gen/agent_model/message_submission.py +1 -1
  112. symphony/bdk/gen/agent_model/pagination.py +1 -1
  113. symphony/bdk/gen/agent_model/pagination_cursors.py +1 -1
  114. symphony/bdk/gen/agent_model/room_created_message.py +1 -1
  115. symphony/bdk/gen/agent_model/room_created_message_all_of.py +1 -1
  116. symphony/bdk/gen/agent_model/room_deactivated_message.py +1 -1
  117. symphony/bdk/gen/agent_model/room_deactivated_message_all_of.py +1 -1
  118. symphony/bdk/gen/agent_model/room_member_demoted_from_owner_message.py +1 -1
  119. symphony/bdk/gen/agent_model/room_member_demoted_from_owner_message_all_of.py +1 -1
  120. symphony/bdk/gen/agent_model/room_member_promoted_to_owner_message.py +1 -1
  121. symphony/bdk/gen/agent_model/room_member_promoted_to_owner_message_all_of.py +1 -1
  122. symphony/bdk/gen/agent_model/room_reactivated_message.py +1 -1
  123. symphony/bdk/gen/agent_model/room_reactivated_message_all_of.py +1 -1
  124. symphony/bdk/gen/agent_model/room_tag.py +1 -1
  125. symphony/bdk/gen/agent_model/room_updated_message.py +1 -1
  126. symphony/bdk/gen/agent_model/room_updated_message_all_of.py +1 -1
  127. symphony/bdk/gen/agent_model/share_article.py +1 -1
  128. symphony/bdk/gen/agent_model/share_content.py +1 -1
  129. symphony/bdk/gen/agent_model/signal.py +1 -1
  130. symphony/bdk/gen/agent_model/signal_all_of.py +1 -6
  131. symphony/bdk/gen/agent_model/signal_list.py +1 -1
  132. symphony/bdk/gen/agent_model/simple_message.py +1 -1
  133. symphony/bdk/gen/agent_model/success_response.py +1 -1
  134. symphony/bdk/gen/agent_model/user_joined_room_message.py +1 -1
  135. symphony/bdk/gen/agent_model/user_joined_room_message_all_of.py +1 -1
  136. symphony/bdk/gen/agent_model/user_left_room_message.py +1 -1
  137. symphony/bdk/gen/agent_model/user_left_room_message_all_of.py +1 -1
  138. symphony/bdk/gen/agent_model/v1_audit_trail_initiator_list.py +1 -1
  139. symphony/bdk/gen/agent_model/v1_audit_trail_initiator_response.py +1 -1
  140. symphony/bdk/gen/agent_model/v1_dlp_content_type.py +1 -1
  141. symphony/bdk/gen/agent_model/v1_dlp_dictionary.py +1 -1
  142. symphony/bdk/gen/agent_model/v1_dlp_dictionary_content.py +1 -1
  143. symphony/bdk/gen/agent_model/v1_dlp_dictionary_metadata.py +1 -1
  144. symphony/bdk/gen/agent_model/v1_dlp_dictionary_metadata_collection_response.py +1 -1
  145. symphony/bdk/gen/agent_model/v1_dlp_dictionary_metadata_create_request.py +1 -1
  146. symphony/bdk/gen/agent_model/v1_dlp_dictionary_metadata_response.py +1 -1
  147. symphony/bdk/gen/agent_model/v1_dlp_dictionary_metadata_update_request.py +1 -1
  148. symphony/bdk/gen/agent_model/v1_dlp_dictionary_ref.py +1 -1
  149. symphony/bdk/gen/agent_model/v1_dlp_matched_policy.py +1 -1
  150. symphony/bdk/gen/agent_model/v1_dlp_matched_policy_list.py +1 -1
  151. symphony/bdk/gen/agent_model/v1_dlp_outcome.py +1 -1
  152. symphony/bdk/gen/agent_model/v1_dlp_policies_collection_response.py +1 -1
  153. symphony/bdk/gen/agent_model/v1_dlp_policy.py +1 -1
  154. symphony/bdk/gen/agent_model/v1_dlp_policy_request.py +9 -8
  155. symphony/bdk/gen/agent_model/v1_dlp_policy_response.py +1 -1
  156. symphony/bdk/gen/agent_model/v1_dlp_signal.py +6 -1
  157. symphony/bdk/gen/agent_model/v1_dlp_stream.py +1 -1
  158. symphony/bdk/gen/agent_model/v1_dlp_violation.py +1 -1
  159. symphony/bdk/gen/agent_model/v1_dlp_violation_message.py +1 -1
  160. symphony/bdk/gen/agent_model/v1_dlp_violation_message_response.py +1 -1
  161. symphony/bdk/gen/agent_model/v1_dlp_violation_signal.py +1 -1
  162. symphony/bdk/gen/agent_model/v1_dlp_violation_signal_response.py +1 -1
  163. symphony/bdk/gen/agent_model/v1_dlp_violation_stream.py +1 -1
  164. symphony/bdk/gen/agent_model/v1_dlp_violation_stream_response.py +1 -1
  165. symphony/bdk/gen/agent_model/v1_health_check_response.py +1 -1
  166. symphony/bdk/gen/agent_model/v2_base_message.py +1 -1
  167. symphony/bdk/gen/agent_model/v2_error.py +1 -1
  168. symphony/bdk/gen/agent_model/v2_health_check_response.py +1 -1
  169. symphony/bdk/gen/agent_model/v2_import_response.py +1 -1
  170. symphony/bdk/gen/agent_model/v2_import_response_list.py +1 -1
  171. symphony/bdk/gen/agent_model/v2_imported_message.py +1 -1
  172. symphony/bdk/gen/agent_model/v2_message.py +1 -1
  173. symphony/bdk/gen/agent_model/v2_message_all_of.py +1 -1
  174. symphony/bdk/gen/agent_model/v2_message_import_list.py +1 -1
  175. symphony/bdk/gen/agent_model/v2_message_list.py +1 -1
  176. symphony/bdk/gen/agent_model/v2_message_submission.py +1 -1
  177. symphony/bdk/gen/agent_model/v3_dlp_dictionary_meta.py +1 -1
  178. symphony/bdk/gen/agent_model/v3_dlp_file_classifier_config.py +1 -1
  179. symphony/bdk/gen/agent_model/v3_dlp_file_extension_config.py +1 -1
  180. symphony/bdk/gen/agent_model/v3_dlp_file_password_config.py +1 -1
  181. symphony/bdk/gen/agent_model/v3_dlp_file_size_config.py +1 -1
  182. symphony/bdk/gen/agent_model/v3_dlp_policies_collection_response.py +1 -1
  183. symphony/bdk/gen/agent_model/v3_dlp_policy.py +1 -1
  184. symphony/bdk/gen/agent_model/v3_dlp_policy_applies_to.py +1 -1
  185. symphony/bdk/gen/agent_model/v3_dlp_policy_request.py +1 -1
  186. symphony/bdk/gen/agent_model/v3_dlp_policy_response.py +1 -1
  187. symphony/bdk/gen/agent_model/v3_dlp_rule.py +1 -1
  188. symphony/bdk/gen/agent_model/v3_dlp_text_match_config.py +1 -1
  189. symphony/bdk/gen/agent_model/v3_dlp_violation.py +1 -1
  190. symphony/bdk/gen/agent_model/v3_dlp_violation_message.py +1 -1
  191. symphony/bdk/gen/agent_model/v3_dlp_violation_message_response.py +1 -1
  192. symphony/bdk/gen/agent_model/v3_dlp_violation_signal.py +1 -1
  193. symphony/bdk/gen/agent_model/v3_dlp_violation_signal_response.py +1 -1
  194. symphony/bdk/gen/agent_model/v3_dlp_violation_stream.py +1 -1
  195. symphony/bdk/gen/agent_model/v3_dlp_violation_stream_response.py +1 -1
  196. symphony/bdk/gen/agent_model/v3_health.py +1 -1
  197. symphony/bdk/gen/agent_model/v3_health_auth_type.py +1 -1
  198. symphony/bdk/gen/agent_model/v3_health_component.py +1 -1
  199. symphony/bdk/gen/agent_model/v3_health_status.py +1 -1
  200. symphony/bdk/gen/agent_model/v4_attachment_info.py +1 -1
  201. symphony/bdk/gen/agent_model/v4_connection_accepted.py +1 -1
  202. symphony/bdk/gen/agent_model/v4_connection_requested.py +1 -1
  203. symphony/bdk/gen/agent_model/v4_event.py +3 -3
  204. symphony/bdk/gen/agent_model/v4_event_list.py +1 -1
  205. symphony/bdk/gen/agent_model/v4_generic_system_event.py +279 -0
  206. symphony/bdk/gen/agent_model/v4_import_response.py +1 -1
  207. symphony/bdk/gen/agent_model/v4_import_response_list.py +1 -1
  208. symphony/bdk/gen/agent_model/v4_imported_message.py +1 -1
  209. symphony/bdk/gen/agent_model/v4_imported_message_attachment.py +1 -1
  210. symphony/bdk/gen/agent_model/v4_initiator.py +1 -1
  211. symphony/bdk/gen/agent_model/v4_instant_message_created.py +1 -1
  212. symphony/bdk/gen/agent_model/v4_key_value_pair.py +1 -1
  213. symphony/bdk/gen/agent_model/v4_message.py +1 -1
  214. symphony/bdk/gen/agent_model/v4_message_blast_response.py +1 -1
  215. symphony/bdk/gen/agent_model/v4_message_import_list.py +1 -1
  216. symphony/bdk/gen/agent_model/v4_message_list.py +1 -1
  217. symphony/bdk/gen/agent_model/v4_message_sent.py +1 -1
  218. symphony/bdk/gen/agent_model/v4_message_suppressed.py +1 -1
  219. symphony/bdk/gen/agent_model/v4_payload.py +8 -1
  220. symphony/bdk/gen/agent_model/v4_room_created.py +1 -1
  221. symphony/bdk/gen/agent_model/v4_room_deactivated.py +1 -1
  222. symphony/bdk/gen/agent_model/v4_room_member_demoted_from_owner.py +1 -1
  223. symphony/bdk/gen/agent_model/v4_room_member_promoted_to_owner.py +1 -1
  224. symphony/bdk/gen/agent_model/v4_room_properties.py +1 -1
  225. symphony/bdk/gen/agent_model/v4_room_reactivated.py +1 -1
  226. symphony/bdk/gen/agent_model/v4_room_updated.py +1 -1
  227. symphony/bdk/gen/agent_model/v4_shared_post.py +1 -1
  228. symphony/bdk/gen/agent_model/v4_stream.py +6 -1
  229. symphony/bdk/gen/agent_model/v4_symphony_elements_action.py +1 -1
  230. symphony/bdk/gen/agent_model/v4_thumbnail_info.py +1 -1
  231. symphony/bdk/gen/agent_model/v4_user.py +1 -1
  232. symphony/bdk/gen/agent_model/v4_user_joined_room.py +1 -1
  233. symphony/bdk/gen/agent_model/v4_user_left_room.py +1 -1
  234. symphony/bdk/gen/agent_model/v4_user_requested_to_join_room.py +1 -1
  235. symphony/bdk/gen/agent_model/v5_datafeed.py +3 -3
  236. symphony/bdk/gen/agent_model/v5_datafeed_create_body.py +1 -1
  237. symphony/bdk/gen/agent_model/v5_event_list.py +1 -1
  238. symphony/bdk/gen/agent_model/v5_events_read_body.py +5 -5
  239. symphony/bdk/gen/pod_api/app_entitlement_api.py +1 -1
  240. symphony/bdk/gen/pod_api/application_api.py +1 -1
  241. symphony/bdk/gen/pod_api/connection_api.py +1 -1
  242. symphony/bdk/gen/pod_api/default_api.py +1 -1
  243. symphony/bdk/gen/pod_api/disclaimer_api.py +1 -1
  244. symphony/bdk/gen/pod_api/info_barriers_api.py +1 -1
  245. symphony/bdk/gen/pod_api/message_api.py +1 -1
  246. symphony/bdk/gen/pod_api/message_suppression_api.py +1 -1
  247. symphony/bdk/gen/pod_api/pod_api.py +1 -1
  248. symphony/bdk/gen/pod_api/presence_api.py +1 -1
  249. symphony/bdk/gen/pod_api/room_membership_api.py +1 -1
  250. symphony/bdk/gen/pod_api/security_api.py +1 -1
  251. symphony/bdk/gen/pod_api/session_api.py +1 -1
  252. symphony/bdk/gen/pod_api/streams_api.py +162 -1
  253. symphony/bdk/gen/pod_api/system_api.py +1 -1
  254. symphony/bdk/gen/pod_api/user_api.py +264 -2
  255. symphony/bdk/gen/pod_api/users_api.py +421 -1
  256. symphony/bdk/gen/pod_model/admin_justified_action.py +1 -1
  257. symphony/bdk/gen/pod_model/admin_justified_user_action.py +1 -1
  258. symphony/bdk/gen/pod_model/app_authentication_key.py +1 -1
  259. symphony/bdk/gen/pod_model/app_authentication_keys.py +1 -1
  260. symphony/bdk/gen/pod_model/app_notification.py +1 -1
  261. symphony/bdk/gen/pod_model/app_properties.py +1 -1
  262. symphony/bdk/gen/pod_model/app_property.py +1 -1
  263. symphony/bdk/gen/pod_model/application_detail.py +1 -1
  264. symphony/bdk/gen/pod_model/application_info.py +1 -1
  265. symphony/bdk/gen/pod_model/assignee_candidate.py +1 -1
  266. symphony/bdk/gen/pod_model/assignee_candidates.py +1 -1
  267. symphony/bdk/gen/pod_model/attachment_preview.py +1 -1
  268. symphony/bdk/gen/pod_model/avatar.py +1 -1
  269. symphony/bdk/gen/pod_model/avatar_list.py +1 -1
  270. symphony/bdk/gen/pod_model/avatar_update.py +1 -1
  271. symphony/bdk/gen/pod_model/bulk_action_result.py +1 -1
  272. symphony/bdk/gen/pod_model/cert_info.py +1 -1
  273. symphony/bdk/gen/pod_model/cert_info_item.py +1 -1
  274. symphony/bdk/gen/pod_model/company_cert.py +1 -1
  275. symphony/bdk/gen/pod_model/company_cert_attributes.py +1 -1
  276. symphony/bdk/gen/pod_model/company_cert_detail.py +1 -1
  277. symphony/bdk/gen/pod_model/company_cert_info.py +1 -1
  278. symphony/bdk/gen/pod_model/company_cert_info_list.py +1 -1
  279. symphony/bdk/gen/pod_model/company_cert_status.py +1 -1
  280. symphony/bdk/gen/pod_model/company_cert_type.py +1 -1
  281. symphony/bdk/gen/pod_model/company_cert_type_list.py +1 -1
  282. symphony/bdk/gen/pod_model/conversation_specific_stream_attributes.py +1 -1
  283. symphony/bdk/gen/pod_model/delegate_action.py +1 -1
  284. symphony/bdk/gen/pod_model/disclaimer.py +1 -1
  285. symphony/bdk/gen/pod_model/disclaimer_list.py +1 -1
  286. symphony/bdk/gen/pod_model/download_receipt_count.py +1 -1
  287. symphony/bdk/gen/pod_model/error.py +1 -1
  288. symphony/bdk/gen/pod_model/faceted_match_count.py +1 -1
  289. symphony/bdk/gen/pod_model/feature.py +1 -1
  290. symphony/bdk/gen/pod_model/feature_list.py +1 -1
  291. symphony/bdk/gen/pod_model/file_extension.py +6 -1
  292. symphony/bdk/gen/pod_model/file_extensions_response.py +1 -1
  293. symphony/bdk/gen/pod_model/followers_list.py +1 -1
  294. symphony/bdk/gen/pod_model/followers_list_response.py +1 -1
  295. symphony/bdk/gen/pod_model/following_list_response.py +1 -1
  296. symphony/bdk/gen/pod_model/group.py +1 -1
  297. symphony/bdk/gen/pod_model/group_item.py +1 -1
  298. symphony/bdk/gen/pod_model/group_list.py +1 -1
  299. symphony/bdk/gen/pod_model/group_role_scope.py +1 -1
  300. symphony/bdk/gen/pod_model/im_system_info.py +1 -1
  301. symphony/bdk/gen/pod_model/immutable_room_attributes.py +1 -1
  302. symphony/bdk/gen/pod_model/integer_list.py +1 -1
  303. symphony/bdk/gen/pod_model/languages.py +1 -1
  304. symphony/bdk/gen/pod_model/member_info.py +1 -1
  305. symphony/bdk/gen/pod_model/membership_data.py +1 -1
  306. symphony/bdk/gen/pod_model/membership_list.py +1 -1
  307. symphony/bdk/gen/pod_model/message_detail.py +1 -1
  308. symphony/bdk/gen/pod_model/message_details.py +1 -1
  309. symphony/bdk/gen/pod_model/message_download_receipt_count.py +1 -1
  310. symphony/bdk/gen/pod_model/message_ids.py +1 -1
  311. symphony/bdk/gen/pod_model/message_metadata_response.py +1 -1
  312. symphony/bdk/gen/pod_model/message_metadata_response_parent.py +1 -1
  313. symphony/bdk/gen/pod_model/message_receipt_detail.py +1 -1
  314. symphony/bdk/gen/pod_model/message_receipt_detail_response.py +1 -1
  315. symphony/bdk/gen/pod_model/message_status.py +1 -1
  316. symphony/bdk/gen/pod_model/message_status_user.py +1 -1
  317. symphony/bdk/gen/pod_model/message_stream.py +1 -1
  318. symphony/bdk/gen/pod_model/message_suppression_response.py +1 -1
  319. symphony/bdk/gen/pod_model/message_user.py +1 -1
  320. symphony/bdk/gen/pod_model/name_value_pair.py +1 -1
  321. symphony/bdk/gen/pod_model/pagination.py +1 -1
  322. symphony/bdk/gen/pod_model/pagination_cursors.py +1 -1
  323. symphony/bdk/gen/pod_model/password.py +1 -1
  324. symphony/bdk/gen/pod_model/password_reset.py +1 -1
  325. symphony/bdk/gen/pod_model/pod_app_entitlement.py +1 -1
  326. symphony/bdk/gen/pod_model/pod_app_entitlement_list.py +1 -1
  327. symphony/bdk/gen/pod_model/pod_certificate.py +1 -1
  328. symphony/bdk/gen/pod_model/policy.py +1 -1
  329. symphony/bdk/gen/pod_model/policy_list.py +1 -1
  330. symphony/bdk/gen/pod_model/product.py +1 -1
  331. symphony/bdk/gen/pod_model/product_list.py +1 -1
  332. symphony/bdk/gen/pod_model/protocol.py +1 -1
  333. symphony/bdk/gen/pod_model/role.py +1 -1
  334. symphony/bdk/gen/pod_model/role_detail.py +1 -1
  335. symphony/bdk/gen/pod_model/role_detail_list.py +1 -1
  336. symphony/bdk/gen/pod_model/role_list.py +1 -1
  337. symphony/bdk/gen/pod_model/room_attributes.py +1 -1
  338. symphony/bdk/gen/pod_model/room_detail.py +1 -1
  339. symphony/bdk/gen/pod_model/room_search_criteria.py +1 -1
  340. symphony/bdk/gen/pod_model/room_specific_stream_attributes.py +1 -1
  341. symphony/bdk/gen/pod_model/room_system_info.py +1 -1
  342. symphony/bdk/gen/pod_model/room_tag.py +1 -1
  343. symphony/bdk/gen/pod_model/service_account_manifest.py +264 -0
  344. symphony/bdk/gen/pod_model/stream.py +1 -1
  345. symphony/bdk/gen/pod_model/stream_attachment_item.py +1 -1
  346. symphony/bdk/gen/pod_model/stream_attachment_response.py +1 -1
  347. symphony/bdk/gen/pod_model/stream_attributes.py +1 -1
  348. symphony/bdk/gen/pod_model/stream_filter.py +1 -1
  349. symphony/bdk/gen/pod_model/stream_list.py +1 -1
  350. symphony/bdk/gen/pod_model/stream_type.py +1 -1
  351. symphony/bdk/gen/pod_model/string_id.py +1 -1
  352. symphony/bdk/gen/pod_model/string_list.py +1 -1
  353. symphony/bdk/gen/pod_model/success_response.py +1 -1
  354. symphony/bdk/gen/pod_model/user_app_entitlement.py +1 -1
  355. symphony/bdk/gen/pod_model/user_app_entitlement_list.py +1 -1
  356. symphony/bdk/gen/pod_model/user_app_entitlement_patch.py +1 -1
  357. symphony/bdk/gen/pod_model/user_app_entitlement_patch_enum.py +1 -1
  358. symphony/bdk/gen/pod_model/user_app_entitlements_patch_list.py +1 -1
  359. symphony/bdk/gen/pod_model/user_attributes.py +1 -1
  360. symphony/bdk/gen/pod_model/user_compp.py +1 -1
  361. symphony/bdk/gen/pod_model/user_connection.py +1 -1
  362. symphony/bdk/gen/pod_model/user_connection_list.py +1 -1
  363. symphony/bdk/gen/pod_model/user_connection_request.py +1 -1
  364. symphony/bdk/gen/pod_model/user_data.py +1 -1
  365. symphony/bdk/gen/pod_model/user_detail.py +1 -1
  366. symphony/bdk/gen/pod_model/user_detail_list.py +1 -1
  367. symphony/bdk/gen/pod_model/user_error.py +1 -1
  368. symphony/bdk/gen/pod_model/user_filter.py +1 -1
  369. symphony/bdk/gen/pod_model/user_group_assignee.py +1 -1
  370. symphony/bdk/gen/pod_model/user_group_assignee_response.py +1 -1
  371. symphony/bdk/gen/pod_model/user_group_assignee_update.py +1 -1
  372. symphony/bdk/gen/pod_model/user_group_assignment_response.py +1 -1
  373. symphony/bdk/gen/pod_model/user_group_create.py +1 -1
  374. symphony/bdk/gen/pod_model/user_group_data.py +1 -1
  375. symphony/bdk/gen/pod_model/user_group_membership_data.py +1 -1
  376. symphony/bdk/gen/pod_model/user_group_membership_request.py +1 -1
  377. symphony/bdk/gen/pod_model/user_group_membership_response.py +1 -1
  378. symphony/bdk/gen/pod_model/user_group_membership_response_data.py +1 -1
  379. symphony/bdk/gen/pod_model/user_group_membership_update.py +1 -1
  380. symphony/bdk/gen/pod_model/user_group_response.py +1 -1
  381. symphony/bdk/gen/pod_model/user_group_response_list.py +1 -1
  382. symphony/bdk/gen/pod_model/user_group_update.py +1 -1
  383. symphony/bdk/gen/pod_model/user_id.py +1 -1
  384. symphony/bdk/gen/pod_model/user_id_list.py +1 -1
  385. symphony/bdk/gen/pod_model/user_info.py +1 -1
  386. symphony/bdk/gen/pod_model/user_name.py +1 -1
  387. symphony/bdk/gen/pod_model/user_name_list.py +1 -1
  388. symphony/bdk/gen/pod_model/user_search_filter.py +1 -1
  389. symphony/bdk/gen/pod_model/user_search_query.py +1 -1
  390. symphony/bdk/gen/pod_model/user_search_results.py +1 -1
  391. symphony/bdk/gen/pod_model/user_status.py +1 -1
  392. symphony/bdk/gen/pod_model/user_suspension.py +1 -1
  393. symphony/bdk/gen/pod_model/user_system_info.py +1 -1
  394. symphony/bdk/gen/pod_model/user_v2.py +1 -1
  395. symphony/bdk/gen/pod_model/v1_im_attributes.py +1 -1
  396. symphony/bdk/gen/pod_model/v1_im_detail.py +1 -1
  397. symphony/bdk/gen/pod_model/v1_session.py +301 -0
  398. symphony/bdk/gen/pod_model/v1_user_sessions.py +259 -0
  399. symphony/bdk/gen/pod_model/v2_admin_stream_attributes.py +6 -1
  400. symphony/bdk/gen/pod_model/v2_admin_stream_filter.py +1 -1
  401. symphony/bdk/gen/pod_model/v2_admin_stream_info.py +1 -1
  402. symphony/bdk/gen/pod_model/v2_admin_stream_info_list.py +1 -1
  403. symphony/bdk/gen/pod_model/v2_admin_stream_list.py +1 -1
  404. symphony/bdk/gen/pod_model/v2_admin_stream_type.py +1 -1
  405. symphony/bdk/gen/pod_model/v2_conversation_specific_stream_attributes.py +1 -1
  406. symphony/bdk/gen/pod_model/v2_member_info.py +1 -1
  407. symphony/bdk/gen/pod_model/v2_member_info_list.py +1 -1
  408. symphony/bdk/gen/pod_model/v2_member_user_detail.py +1 -1
  409. symphony/bdk/gen/pod_model/v2_membership_list.py +1 -1
  410. symphony/bdk/gen/pod_model/v2_presence.py +1 -1
  411. symphony/bdk/gen/pod_model/v2_presence_all_of.py +1 -1
  412. symphony/bdk/gen/pod_model/v2_presence_list.py +1 -1
  413. symphony/bdk/gen/pod_model/v2_presence_status.py +1 -1
  414. symphony/bdk/gen/pod_model/v2_room_search_criteria.py +1 -1
  415. symphony/bdk/gen/pod_model/v2_room_search_criteria_all_of.py +1 -1
  416. symphony/bdk/gen/pod_model/v2_room_specific_stream_attributes.py +1 -1
  417. symphony/bdk/gen/pod_model/v2_stream_attributes.py +1 -1
  418. symphony/bdk/gen/pod_model/v2_stream_type.py +1 -1
  419. symphony/bdk/gen/pod_model/v2_user_attributes.py +1 -1
  420. symphony/bdk/gen/pod_model/v2_user_create.py +1 -1
  421. symphony/bdk/gen/pod_model/v2_user_detail.py +1 -1
  422. symphony/bdk/gen/pod_model/v2_user_detail_list.py +1 -1
  423. symphony/bdk/gen/pod_model/v2_user_key_request.py +1 -1
  424. symphony/bdk/gen/pod_model/v2_user_list.py +1 -1
  425. symphony/bdk/gen/pod_model/v2_user_presence.py +1 -1
  426. symphony/bdk/gen/pod_model/v2_user_presence_all_of.py +1 -1
  427. symphony/bdk/gen/pod_model/v3_room_attributes.py +6 -1
  428. symphony/bdk/gen/pod_model/v3_room_detail.py +1 -1
  429. symphony/bdk/gen/pod_model/v3_room_search_results.py +1 -1
  430. {symphony_bdk_python-2.10.dev0.dist-info → symphony_bdk_python-2.11.0.dist-info}/METADATA +19 -5
  431. symphony_bdk_python-2.11.0.dist-info/RECORD +546 -0
  432. symphony_bdk_python-2.10.dev0.dist-info/RECORD +0 -538
  433. {symphony_bdk_python-2.10.dev0.dist-info → symphony_bdk_python-2.11.0.dist-info}/LICENSE +0 -0
  434. {symphony_bdk_python-2.10.dev0.dist-info → symphony_bdk_python-2.11.0.dist-info}/NOTICE +0 -0
  435. {symphony_bdk_python-2.10.dev0.dist-info → symphony_bdk_python-2.11.0.dist-info}/WHEEL +0 -0
@@ -6,31 +6,25 @@ from symphony.bdk.gen.pod_model.user_v2 import UserV2
6
6
 
7
7
 
8
8
  class OboSessionService:
9
- """Service interface exposing OBO-enabled endpoints to get user session information.
10
- """
9
+ """Service interface exposing OBO-enabled endpoints to get user session information."""
11
10
 
12
- def __init__(self, session_api: SessionApi,
13
- auth_session: AuthSession,
14
- retry_config: BdkRetryConfig):
11
+ def __init__(
12
+ self, session_api: SessionApi, auth_session: AuthSession, retry_config: BdkRetryConfig
13
+ ):
15
14
  self._session_api = session_api
16
15
  self._auth_session = auth_session
17
16
  self._retry_config = retry_config
18
17
 
19
18
  @retry
20
- async def get_session(
21
- self
22
- ) -> UserV2:
19
+ async def get_session(self) -> UserV2:
23
20
  """
24
21
  Retrieves the {@link UserV2} session from the pod using an {@link AuthSession} holder.
25
22
 
26
23
  Returns: User session info
27
24
  """
28
- params = {
29
- 'session_token': await self._auth_session.session_token
30
- }
25
+ params = {"session_token": await self._auth_session.session_token}
31
26
  return await self._session_api.v2_sessioninfo_get(**params)
32
27
 
33
28
 
34
29
  class SessionService(OboSessionService):
35
- """Service class for exposing endpoints to get user session information.
36
- """
30
+ """Service class for exposing endpoints to get user session information."""
@@ -27,7 +27,9 @@ class OboSignalService:
27
27
  * Subscribe or unsubscribe a signal
28
28
  """
29
29
 
30
- def __init__(self, signals_api: SignalsApi, auth_session: AuthSession, retry_config: BdkRetryConfig):
30
+ def __init__(
31
+ self, signals_api: SignalsApi, auth_session: AuthSession, retry_config: BdkRetryConfig
32
+ ):
31
33
  self._signals_api = signals_api
32
34
  self._auth_session = auth_session
33
35
  self._retry_config = retry_config
@@ -45,10 +47,15 @@ class OboSignalService:
45
47
  """
46
48
 
47
49
  return await self._signals_api.v1_signals_list_get(
48
- skip=skip, limit=limit, session_token=await self._auth_session.session_token,
49
- key_manager_token=await self._auth_session.key_manager_token)
50
-
51
- async def list_all_signals(self, chunk_size: int = 50, max_number: int = None) -> AsyncGenerator[Signal, None]:
50
+ skip=skip,
51
+ limit=limit,
52
+ session_token=await self._auth_session.session_token,
53
+ key_manager_token=await self._auth_session.key_manager_token,
54
+ )
55
+
56
+ async def list_all_signals(
57
+ self, chunk_size: int = 50, max_number: int = None
58
+ ) -> AsyncGenerator[Signal, None]:
52
59
  """Lists all signals on behalf of the user. The response includes signals that the user has created and
53
60
  public signals to which they have subscribed.
54
61
 
@@ -67,7 +74,7 @@ class OboSignalService:
67
74
 
68
75
  @retry
69
76
  async def get_signal(self, signal_id: str) -> Signal:
70
- """ Gets details about the specified signal.
77
+ """Gets details about the specified signal.
71
78
 
72
79
  See: 'Get signal <https://developers.symphony.com/restapi/reference/get-signal>'_
73
80
 
@@ -76,12 +83,14 @@ class OboSignalService:
76
83
  """
77
84
 
78
85
  return await self._signals_api.v1_signals_id_get_get(
79
- id=signal_id, session_token=await self._auth_session.session_token,
80
- key_manager_token=await self._auth_session.key_manager_token)
86
+ id=signal_id,
87
+ session_token=await self._auth_session.session_token,
88
+ key_manager_token=await self._auth_session.key_manager_token,
89
+ )
81
90
 
82
91
  @retry
83
92
  async def create_signal(self, signal: BaseSignal) -> Signal:
84
- """ Creates a new Signal.
93
+ """Creates a new Signal.
85
94
 
86
95
  See: 'Create signal <https://developers.symphony.com/restapi/reference/create-signal>'_
87
96
 
@@ -90,12 +99,14 @@ class OboSignalService:
90
99
  """
91
100
 
92
101
  return await self._signals_api.v1_signals_create_post(
93
- signal=signal, session_token=await self._auth_session.session_token,
94
- key_manager_token=await self._auth_session.key_manager_token)
102
+ signal=signal,
103
+ session_token=await self._auth_session.session_token,
104
+ key_manager_token=await self._auth_session.key_manager_token,
105
+ )
95
106
 
96
107
  @retry
97
108
  async def update_signal(self, signal_id: str, signal: BaseSignal) -> Signal:
98
- """ Updates an existing Signal.
109
+ """Updates an existing Signal.
99
110
 
100
111
  See: 'Update signal <https://developers.symphony.com/restapi/reference/update-signal>'_
101
112
 
@@ -105,26 +116,32 @@ class OboSignalService:
105
116
  """
106
117
 
107
118
  return await self._signals_api.v1_signals_id_update_post(
108
- id=signal_id, signal=signal, session_token=await self._auth_session.session_token,
109
- key_manager_token=await self._auth_session.key_manager_token)
119
+ id=signal_id,
120
+ signal=signal,
121
+ session_token=await self._auth_session.session_token,
122
+ key_manager_token=await self._auth_session.key_manager_token,
123
+ )
110
124
 
111
125
  @retry
112
126
  async def delete_signal(self, signal_id: str) -> None:
113
- """ Deletes an existing Signal.
127
+ """Deletes an existing Signal.
114
128
 
115
129
  See: 'Delete signal <https://developers.symphony.com/restapi/reference/delete-signal>'_
116
130
 
117
131
  :param signal_id: The Id of the existing signal to be deleted.
118
132
  """
119
133
 
120
- await self._signals_api.v1_signals_id_delete_post(id=signal_id,
121
- session_token=await self._auth_session.session_token,
122
- key_manager_token=await self._auth_session.key_manager_token)
134
+ await self._signals_api.v1_signals_id_delete_post(
135
+ id=signal_id,
136
+ session_token=await self._auth_session.session_token,
137
+ key_manager_token=await self._auth_session.key_manager_token,
138
+ )
123
139
 
124
140
  @retry
125
- async def subscribe_users_to_signal(self, signal_id: str, pushed: bool,
126
- user_ids: [int]) -> ChannelSubscriptionResponse:
127
- """ Subscribe an array of users to a Signal.
141
+ async def subscribe_users_to_signal(
142
+ self, signal_id: str, pushed: bool, user_ids: [int]
143
+ ) -> ChannelSubscriptionResponse:
144
+ """Subscribe an array of users to a Signal.
128
145
 
129
146
  See: 'Subscribe signal <https://developers.symphony.com/restapi/reference/subscribe-signal>'_
130
147
 
@@ -135,12 +152,18 @@ class OboSignalService:
135
152
  """
136
153
 
137
154
  return await self._signals_api.v1_signals_id_subscribe_post(
138
- id=signal_id, pushed=pushed, users=user_ids, session_token=await self._auth_session.session_token,
139
- key_manager_token=await self._auth_session.key_manager_token)
155
+ id=signal_id,
156
+ pushed=pushed,
157
+ users=user_ids,
158
+ session_token=await self._auth_session.session_token,
159
+ key_manager_token=await self._auth_session.key_manager_token,
160
+ )
140
161
 
141
162
  @retry
142
- async def unsubscribe_users_to_signal(self, signal_id: str, user_ids: [int]) -> ChannelSubscriptionResponse:
143
- """ Unsubscribes an array of users from the specified Signal.
163
+ async def unsubscribe_users_to_signal(
164
+ self, signal_id: str, user_ids: [int]
165
+ ) -> ChannelSubscriptionResponse:
166
+ """Unsubscribes an array of users from the specified Signal.
144
167
 
145
168
  See: 'Unsubscribe signal <https://developers.symphony.com/restapi/reference/unsubscribe-signal>'_
146
169
 
@@ -150,11 +173,16 @@ class OboSignalService:
150
173
  """
151
174
 
152
175
  return await self._signals_api.v1_signals_id_unsubscribe_post(
153
- id=signal_id, users=user_ids, session_token=await self._auth_session.session_token,
154
- key_manager_token=await self._auth_session.key_manager_token)
176
+ id=signal_id,
177
+ users=user_ids,
178
+ session_token=await self._auth_session.session_token,
179
+ key_manager_token=await self._auth_session.key_manager_token,
180
+ )
155
181
 
156
182
  @retry
157
- async def list_subscribers(self, signal_id: str, skip: int = 0, limit: int = 50) -> ChannelSubscriberResponse:
183
+ async def list_subscribers(
184
+ self, signal_id: str, skip: int = 0, limit: int = 50
185
+ ) -> ChannelSubscriberResponse:
158
186
  """Gets the subscribers for the specified signal.
159
187
 
160
188
  See: 'Subscribers <https://developers.symphony.com/restapi/reference/subscribers>'_
@@ -167,11 +195,16 @@ class OboSignalService:
167
195
  """
168
196
 
169
197
  return await self._signals_api.v1_signals_id_subscribers_get(
170
- id=signal_id, skip=skip, limit=limit, session_token=await self._auth_session.session_token,
171
- key_manager_token=await self._auth_session.key_manager_token)
172
-
173
- async def list_all_subscribers(self, signal_id: str, chunk_size: int = 50, max_number: int = None) \
174
- -> AsyncGenerator[ChannelSubscriber, None]:
198
+ id=signal_id,
199
+ skip=skip,
200
+ limit=limit,
201
+ session_token=await self._auth_session.session_token,
202
+ key_manager_token=await self._auth_session.key_manager_token,
203
+ )
204
+
205
+ async def list_all_subscribers(
206
+ self, signal_id: str, chunk_size: int = 50, max_number: int = None
207
+ ) -> AsyncGenerator[ChannelSubscriber, None]:
175
208
  """Gets all the subscribers for the specified signal.
176
209
 
177
210
  See: 'Subscribers <https://developers.symphony.com/restapi/reference/subscribers>'_
@@ -34,8 +34,14 @@ from symphony.bdk.gen.pod_model.v3_room_search_results import V3RoomSearchResult
34
34
  class OboStreamService:
35
35
  """Class exposing OBO-enabled endpoints for stream management."""
36
36
 
37
- def __init__(self, streams_api: StreamsApi, room_membership_api: RoomMembershipApi, share_api: ShareApi,
38
- auth_session: AuthSession, retry_config: BdkRetryConfig):
37
+ def __init__(
38
+ self,
39
+ streams_api: StreamsApi,
40
+ room_membership_api: RoomMembershipApi,
41
+ share_api: ShareApi,
42
+ auth_session: AuthSession,
43
+ retry_config: BdkRetryConfig,
44
+ ):
39
45
  """
40
46
 
41
47
  :param streams_api: a generated StreamsApi instance.
@@ -50,21 +56,19 @@ class OboStreamService:
50
56
  self._retry_config = retry_config
51
57
 
52
58
  @retry
53
- async def create_im_or_mim(self, user_ids: [int]) -> Stream:
54
- """Create a new single or multi party instant message conversation between the caller and specified users.
59
+ async def create_im(self, user_id: int) -> Stream:
60
+ """Create a new single party instant message conversation between the caller and specified user.
55
61
  The caller is implicitly included in the members of the created chat.
56
- Duplicate users will be included in the membership of the chat but the duplication will be silently ignored.
57
- If there is an existing IM conversation with the same set of participants then the id of that existing stream
58
- will be returned.
59
- If the given list of user ids contains only one id, an IM will be created, otherwise, a MIM will be created.
60
62
 
61
- Wraps the `Create IM or MIM <https://developers.symphony.com/restapi/reference/create-im-or-mim>`_ endpoint.
63
+ Wraps the `Create IM <https://rest-api.symphony.com/main/streams-conversations/im-mim-endpoints/create-im-or-mim>`_ endpoint.
62
64
 
63
- :param user_ids: the list of user ids ti be put as room participants.
65
+ :param user_id: the user id to be put as room participant.
64
66
  :return: the created stream.
65
67
  """
66
- return await self._streams_api.v1_im_create_post(uid_list=UserIdList(value=user_ids),
67
- session_token=await self._auth_session.session_token)
68
+ return await self._streams_api.v1_im_create_post(
69
+ uid_list=UserIdList(value=[user_id]),
70
+ session_token=await self._auth_session.session_token,
71
+ )
68
72
 
69
73
  @retry
70
74
  async def create_room(self, room_attributes: V3RoomAttributes) -> V3RoomDetail:
@@ -75,8 +79,10 @@ class OboStreamService:
75
79
  :param room_attributes: attributes of the room to be created.
76
80
  :return: details of created room.
77
81
  """
78
- return await self._streams_api.v3_room_create_post(payload=room_attributes,
79
- session_token=await self._auth_session.session_token)
82
+ return await self._streams_api.v3_room_create_post(
83
+ payload=room_attributes,
84
+ session_token=await self._auth_session.session_token,
85
+ )
80
86
 
81
87
  @retry
82
88
  async def get_stream(self, stream_id: str) -> V2StreamAttributes:
@@ -86,8 +92,9 @@ class OboStreamService:
86
92
  :param stream_id: the ID of the stream to be retrieved.
87
93
  :return: the information about the given stream.
88
94
  """
89
- return await self._streams_api.v2_streams_sid_info_get(sid=stream_id,
90
- session_token=await self._auth_session.session_token)
95
+ return await self._streams_api.v2_streams_sid_info_get(
96
+ sid=stream_id, session_token=await self._auth_session.session_token
97
+ )
91
98
 
92
99
  @retry
93
100
  async def get_room_info(self, room_id: str) -> V3RoomDetail:
@@ -97,12 +104,14 @@ class OboStreamService:
97
104
  :param room_id: the id of the room.
98
105
  :return: the room details.
99
106
  """
100
- return await self._streams_api.v3_room_id_info_get(id=room_id,
101
- session_token=await self._auth_session.session_token)
107
+ return await self._streams_api.v3_room_id_info_get(
108
+ id=room_id, session_token=await self._auth_session.session_token
109
+ )
102
110
 
103
111
  @retry
104
- async def list_streams(self, stream_filter: StreamFilter, skip: int = 0,
105
- limit: int = 50) -> StreamList:
112
+ async def list_streams(
113
+ self, stream_filter: StreamFilter, skip: int = 0, limit: int = 50
114
+ ) -> StreamList:
106
115
  """Returns a list of all the streams of which the requesting user is a member,
107
116
  sorted by creation date (ascending - oldest to newest).
108
117
  Wraps the `List User Streams <https://developers.symphony.com/restapi/reference/list-user-streams>`_ endpoint.
@@ -112,12 +121,17 @@ class OboStreamService:
112
121
  :param limit: maximum number of streams to return.
113
122
  :return: the list of stream retrieved matching the search filter.
114
123
  """
115
- return await self._streams_api.v1_streams_list_post(filter=stream_filter, skip=skip, limit=limit,
116
- session_token=await self._auth_session.session_token)
124
+ return await self._streams_api.v1_streams_list_post(
125
+ filter=stream_filter,
126
+ skip=skip,
127
+ limit=limit,
128
+ session_token=await self._auth_session.session_token,
129
+ )
117
130
 
118
131
  @retry
119
- async def list_all_streams(self, stream_filter: StreamFilter, chunk_size: int = 50, max_number: int = None) \
120
- -> AsyncGenerator[StreamAttributes, None]:
132
+ async def list_all_streams(
133
+ self, stream_filter: StreamFilter, chunk_size: int = 50, max_number: int = None
134
+ ) -> AsyncGenerator[StreamAttributes, None]:
121
135
  """Returns an asynchronous of all the streams of which the requesting user is a member,
122
136
  sorted by creation date (ascending - oldest to newest).
123
137
  Wraps the `List User Streams <https://developers.symphony.com/restapi/reference/list-user-streams>`_ endpoint.
@@ -135,32 +149,49 @@ class OboStreamService:
135
149
  return offset_based_pagination(list_streams_one_page, chunk_size, max_number)
136
150
 
137
151
  @retry
138
- async def search_rooms(self, query: V2RoomSearchCriteria, skip: int = 0,
139
- limit: int = 50) -> V3RoomSearchResults:
152
+ async def search_rooms(
153
+ self,
154
+ query: V2RoomSearchCriteria,
155
+ skip: int = 0,
156
+ limit: int = 50,
157
+ include_non_discoverable=False,
158
+ ) -> V3RoomSearchResults:
140
159
  """Search for rooms according to the specified criteria.
141
160
  Wraps the `Search Rooms V3 <https://developers.symphony.com/restapi/reference/search-rooms-v3>`_ endpoint.
142
161
 
143
162
  :param query: the search criteria.
144
163
  :param skip: number of rooms to skip, defaults to 0.
145
164
  :param limit: number of maximum rooms to return. Must be a positive integer that does not exceed 100.
165
+ :param include_non_discoverable: set to `True` to include rooms not publicly searchable, false by default.
146
166
  :return: the rooms matching search criteria.
147
167
  """
148
- return await self._streams_api.v3_room_search_post(query=query, skip=skip, limit=limit,
149
- session_token=await self._auth_session.session_token)
150
-
151
- async def search_all_rooms(self, query: V2RoomSearchCriteria, chunk_size: int = 50,
152
- max_number: int = None) -> AsyncGenerator[V3RoomDetail, None]:
168
+ return await self._streams_api.v3_room_search_post(
169
+ query=query,
170
+ skip=skip,
171
+ limit=limit,
172
+ include_non_discoverable=include_non_discoverable,
173
+ session_token=await self._auth_session.session_token,
174
+ )
175
+
176
+ async def search_all_rooms(
177
+ self,
178
+ query: V2RoomSearchCriteria,
179
+ chunk_size: int = 50,
180
+ max_number: int = None,
181
+ include_non_discoverable: bool = False,
182
+ ) -> AsyncGenerator[V3RoomDetail, None]:
153
183
  """Search for rooms according to the specified criteria.
154
184
  Wraps the `Search Rooms V3 <https://developers.symphony.com/restapi/reference/search-rooms-v3>`_ endpoint.
155
185
 
156
186
  :param query: the search criteria.
157
187
  :param chunk_size: the maximum number of elements to retrieve in one underlying HTTP call.
158
188
  :param max_number: the total maximum number of elements to retrieve.
189
+ :param include_non_discoverable: set to `True` to include rooms not publicly searchable, false by default.
159
190
  :return: an asynchronous generator of the rooms matching the search criteria.
160
191
  """
161
192
 
162
193
  async def search_rooms_one_page(skip, limit):
163
- result = await self.search_rooms(query, skip, limit)
194
+ result = await self.search_rooms(query, skip, limit, include_non_discoverable)
164
195
  return result.rooms if result.rooms else None
165
196
 
166
197
  return offset_based_pagination(search_rooms_one_page, chunk_size, max_number)
@@ -174,8 +205,11 @@ class OboStreamService:
174
205
  :param room_attributes: the attributes of the room to be updated.
175
206
  :return: the details of the updated room.
176
207
  """
177
- return await self._streams_api.v3_room_id_update_post(id=room_id, payload=room_attributes,
178
- session_token=await self._auth_session.session_token)
208
+ return await self._streams_api.v3_room_id_update_post(
209
+ id=room_id,
210
+ payload=room_attributes,
211
+ session_token=await self._auth_session.session_token,
212
+ )
179
213
 
180
214
  @retry
181
215
  async def add_member_to_room(self, user_id: int, room_id: str):
@@ -187,8 +221,10 @@ class OboStreamService:
187
221
  :return: None
188
222
  """
189
223
  await self._room_membership_api.v1_room_id_membership_add_post(
190
- payload=UserId(id=user_id), id=room_id,
191
- session_token=await self._auth_session.session_token)
224
+ payload=UserId(id=user_id),
225
+ id=room_id,
226
+ session_token=await self._auth_session.session_token,
227
+ )
192
228
 
193
229
  @retry
194
230
  async def remove_member_from_room(self, user_id: int, room_id: str):
@@ -200,8 +236,10 @@ class OboStreamService:
200
236
  :return: None
201
237
  """
202
238
  await self._room_membership_api.v1_room_id_membership_remove_post(
203
- payload=UserId(id=user_id), id=room_id,
204
- session_token=await self._auth_session.session_token)
239
+ payload=UserId(id=user_id),
240
+ id=room_id,
241
+ session_token=await self._auth_session.session_token,
242
+ )
205
243
 
206
244
  @retry
207
245
  async def share(self, stream_id: str, content: ShareContent) -> V2Message:
@@ -214,8 +252,11 @@ class OboStreamService:
214
252
  :return: the created message.
215
253
  """
216
254
  return await self._share_api.v3_stream_sid_share_post(
217
- sid=stream_id, share_content=content, session_token=await self._auth_session.session_token,
218
- key_manager_token=await self._auth_session.key_manager_token)
255
+ sid=stream_id,
256
+ share_content=content,
257
+ session_token=await self._auth_session.session_token,
258
+ key_manager_token=await self._auth_session.key_manager_token,
259
+ )
219
260
 
220
261
  @retry
221
262
  async def promote_user_to_room_owner(self, user_id: int, room_id: str):
@@ -227,7 +268,10 @@ class OboStreamService:
227
268
  :return: None
228
269
  """
229
270
  await self._room_membership_api.v1_room_id_membership_promote_owner_post(
230
- id=room_id, payload=UserId(id=user_id), session_token=await self._auth_session.session_token)
271
+ id=room_id,
272
+ payload=UserId(id=user_id),
273
+ session_token=await self._auth_session.session_token,
274
+ )
231
275
 
232
276
  @retry
233
277
  async def demote_owner_to_room_participant(self, user_id: int, room_id: str):
@@ -239,12 +283,14 @@ class OboStreamService:
239
283
  :return: None
240
284
  """
241
285
  await self._room_membership_api.v1_room_id_membership_demote_owner_post(
242
- id=room_id, payload=UserId(id=user_id), session_token=await self._auth_session.session_token)
286
+ id=room_id,
287
+ payload=UserId(id=user_id),
288
+ session_token=await self._auth_session.session_token,
289
+ )
243
290
 
244
291
 
245
292
  class StreamService(OboStreamService):
246
- """Service class to manage streams.
247
- """
293
+ """Service class to manage streams."""
248
294
 
249
295
  @retry
250
296
  async def get_im_info(self, im_id: str) -> V1IMDetail:
@@ -254,8 +300,9 @@ class StreamService(OboStreamService):
254
300
  :param im_id: the id of the IM.
255
301
  :return: the im details.
256
302
  """
257
- return await self._streams_api.v1_im_id_info_get(id=im_id,
258
- session_token=await self._auth_session.session_token)
303
+ return await self._streams_api.v1_im_id_info_get(
304
+ id=im_id, session_token=await self._auth_session.session_token
305
+ )
259
306
 
260
307
  @retry
261
308
  async def set_room_active(self, room_id: str, active: bool) -> RoomDetail:
@@ -267,8 +314,11 @@ class StreamService(OboStreamService):
267
314
  :param active: the new active status (True to reactivate, false to deactivate).
268
315
  :return: the details of the updated room.
269
316
  """
270
- return await self._streams_api.v1_room_id_set_active_post(id=room_id, active=active,
271
- session_token=await self._auth_session.session_token)
317
+ return await self._streams_api.v1_room_id_set_active_post(
318
+ id=room_id,
319
+ active=active,
320
+ session_token=await self._auth_session.session_token,
321
+ )
272
322
 
273
323
  @retry
274
324
  async def update_im(self, im_id: str, im_attributes: V1IMAttributes) -> V1IMDetail:
@@ -279,8 +329,11 @@ class StreamService(OboStreamService):
279
329
  :param im_attributes: the attributes of the im to be updated.
280
330
  :return: the details of the updated im.
281
331
  """
282
- return await self._streams_api.v1_im_id_update_post(id=im_id, payload=im_attributes,
283
- session_token=await self._auth_session.session_token)
332
+ return await self._streams_api.v1_im_id_update_post(
333
+ id=im_id,
334
+ payload=im_attributes,
335
+ session_token=await self._auth_session.session_token,
336
+ )
284
337
 
285
338
  @retry
286
339
  async def create_im_admin(self, user_ids: [int]) -> Stream:
@@ -298,8 +351,10 @@ class StreamService(OboStreamService):
298
351
  :param user_ids: the list of user IDs to be put as participants. At least two user IDs must be provided.
299
352
  :return: the created IM or MIM.
300
353
  """
301
- return await self._streams_api.v1_admin_im_create_post(uid_list=UserIdList(value=user_ids),
302
- session_token=await self._auth_session.session_token)
354
+ return await self._streams_api.v1_admin_im_create_post(
355
+ uid_list=UserIdList(value=user_ids),
356
+ session_token=await self._auth_session.session_token,
357
+ )
303
358
 
304
359
  @retry
305
360
  async def set_room_active_admin(self, room_id: str, active: bool) -> RoomDetail:
@@ -310,12 +365,15 @@ class StreamService(OboStreamService):
310
365
  :return: the details of the updated room.
311
366
  """
312
367
  return await self._streams_api.v1_admin_room_id_set_active_post(
313
- id=room_id, active=active,
314
- session_token=await self._auth_session.session_token)
368
+ id=room_id,
369
+ active=active,
370
+ session_token=await self._auth_session.session_token,
371
+ )
315
372
 
316
373
  @retry
317
- async def list_streams_admin(self, stream_filter: V2AdminStreamFilter, skip: int = 0,
318
- limit: int = 50) -> V2AdminStreamList:
374
+ async def list_streams_admin(
375
+ self, stream_filter: V2AdminStreamFilter, skip: int = 0, limit: int = 50
376
+ ) -> V2AdminStreamList:
319
377
  """Retrieves all the streams across the enterprise.
320
378
  Wraps the `List Streams for Enterprise V2
321
379
  <https://developers.symphony.com/restapi/reference/list-streams-for-enterprise-v2>`_ endpoint.
@@ -325,11 +383,16 @@ class StreamService(OboStreamService):
325
383
  :param limit: the maximum number of streams to retrieve. Must be a positive integer less or equal than 100.
326
384
  :return: the list of streams matching the search criteria.
327
385
  """
328
- return await self._streams_api.v2_admin_streams_list_post(filter=stream_filter, skip=skip, limit=limit,
329
- session_token=await self._auth_session.session_token)
330
-
331
- async def list_all_streams_admin(self, stream_filter: V2AdminStreamFilter, chunk_size=50, max_number=None) \
332
- -> AsyncGenerator[V2AdminStreamInfo, None]:
386
+ return await self._streams_api.v2_admin_streams_list_post(
387
+ filter=stream_filter,
388
+ skip=skip,
389
+ limit=limit,
390
+ session_token=await self._auth_session.session_token,
391
+ )
392
+
393
+ async def list_all_streams_admin(
394
+ self, stream_filter: V2AdminStreamFilter, chunk_size=50, max_number=None
395
+ ) -> AsyncGenerator[V2AdminStreamInfo, None]:
333
396
  """Retrieves all the streams across the enterprise.
334
397
  Wraps the `List Streams for Enterprise V2
335
398
  <https://developers.symphony.com/restapi/reference/list-streams-for-enterprise-v2>`_ endpoint.
@@ -347,7 +410,57 @@ class StreamService(OboStreamService):
347
410
  return offset_based_pagination(list_streams_admin_one_page, chunk_size, max_number)
348
411
 
349
412
  @retry
350
- async def list_stream_members(self, stream_id: str, skip: int = 0, limit: int = 100) -> V2MembershipList:
413
+ async def list_user_streams_admin(
414
+ self,
415
+ uid: int,
416
+ stream_filter: StreamFilter = None,
417
+ skip: int = 0,
418
+ limit: int = 50,
419
+ ) -> StreamList:
420
+ """Retrieve a list of all streams of which a user is a member.
421
+ Wraps the `User Streams <https://developers.symphony.com/restapi/v20.16/reference#user-streams>`_ endpoint.
422
+
423
+ :param uid: the ID of the user.
424
+ :param stream_filter: the filtering criteria for the streams.
425
+ :param skip: the number of streams to skip.
426
+ :param limit: the maximum number of streams to retrieve. Must be less or equal than 1000.
427
+ :return: the list of streams for the specified user.
428
+ """
429
+ return await self._streams_api.v1_admin_user_uid_streams_list_post(
430
+ uid=uid,
431
+ filter=stream_filter,
432
+ skip=skip,
433
+ limit=limit,
434
+ session_token=await self._auth_session.session_token,
435
+ )
436
+
437
+ async def list_all_user_streams_admin(
438
+ self,
439
+ uid: int,
440
+ stream_filter: StreamFilter = None,
441
+ chunk_size: int = 50,
442
+ max_number: int = None,
443
+ ) -> AsyncGenerator[StreamAttributes, None]:
444
+ """Retrieves all streams of which a user is a member, handling pagination automatically.
445
+ Wraps the `User Streams <https://developers.symphony.com/restapi/v20.16/reference#user-streams>`_ endpoint.
446
+
447
+ :param uid: the ID of the user.
448
+ :param stream_filter: the filtering criteria for the streams.
449
+ :param chunk_size: the maximum number of streams to retrieve in one underlying HTTP call.
450
+ :param max_number: the total maximum number of streams to retrieve.
451
+ :return: an asynchronous generator of the streams.
452
+ """
453
+
454
+ async def list_streams_one_page(skip, limit):
455
+ result = await self.list_user_streams_admin(uid, stream_filter, skip, limit)
456
+ return result.value if result else None
457
+
458
+ return offset_based_pagination(list_streams_one_page, chunk_size, max_number)
459
+
460
+ @retry
461
+ async def list_stream_members(
462
+ self, stream_id: str, skip: int = 0, limit: int = 100
463
+ ) -> V2MembershipList:
351
464
  """List the current members of an existing stream. The stream can be of type IM, MIM, or ROOM.
352
465
  Wraps the `Stream Members <https://developers.symphony.com/restapi/reference#stream-members>`_ endpoint.
353
466
 
@@ -357,11 +470,15 @@ class StreamService(OboStreamService):
357
470
  :return: the list of stream members.
358
471
  """
359
472
  return await self._streams_api.v1_admin_stream_id_membership_list_get(
360
- id=stream_id, skip=skip, limit=limit,
361
- session_token=await self._auth_session.session_token)
362
-
363
- async def list_all_stream_members(self, stream_id: str, chunk_size: int = 50, max_number=None) \
364
- -> AsyncGenerator[V2MemberInfo, None]:
473
+ id=stream_id,
474
+ skip=skip,
475
+ limit=limit,
476
+ session_token=await self._auth_session.session_token,
477
+ )
478
+
479
+ async def list_all_stream_members(
480
+ self, stream_id: str, chunk_size: int = 50, max_number=None
481
+ ) -> AsyncGenerator[V2MemberInfo, None]:
365
482
  """List the current members of an existing stream. The stream can be of type IM, MIM, or ROOM.
366
483
  Wraps the `Stream Members <https://developers.symphony.com/restapi/reference#stream-members>`_ endpoint.
367
484
 
@@ -386,5 +503,5 @@ class StreamService(OboStreamService):
386
503
  :return: the list of room members.
387
504
  """
388
505
  return await self._room_membership_api.v2_room_id_membership_list_get(
389
- id=room_id,
390
- session_token=await self._auth_session.session_token)
506
+ id=room_id, session_token=await self._auth_session.session_token
507
+ )
@@ -1,6 +1,7 @@
1
1
  """This module contains a set of util functions providing stream id conversion.
2
2
  It is possible to make conversion from the original stream id to the URLSafe encoded stream id and viceversa.
3
3
  """
4
+
4
5
  import base64
5
6
 
6
7