symphony_bdk_python 2.10.dev0__py3-none-any.whl → 2.11.0b0__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 (368) hide show
  1. symphony/bdk/core/auth/auth_session.py +20 -1
  2. symphony/bdk/core/auth/bot_authenticator.py +11 -0
  3. symphony/bdk/core/auth/jwt_helper.py +10 -0
  4. symphony/bdk/core/config/model/bdk_config.py +1 -0
  5. symphony/bdk/core/service/stream/stream_service.py +40 -3
  6. symphony/bdk/core/service/user/user_service.py +43 -1
  7. symphony/bdk/core/service/version/__init__.py +0 -0
  8. symphony/bdk/core/service/version/agent_version_service.py +67 -0
  9. symphony/bdk/core/service_factory.py +11 -1
  10. symphony/bdk/core/symphony_bdk.py +3 -1
  11. symphony/bdk/gen/agent_api/attachments_api.py +10 -18
  12. symphony/bdk/gen/agent_api/audit_trail_api.py +8 -12
  13. symphony/bdk/gen/agent_api/datafeed_api.py +34 -219
  14. symphony/bdk/gen/agent_api/datahose_api.py +184 -0
  15. symphony/bdk/gen/agent_api/dlp_policies_and_dictionary_management_api.py +130 -214
  16. symphony/bdk/gen/agent_api/messages_api.py +99 -119
  17. symphony/bdk/gen/agent_api/share_api.py +7 -11
  18. symphony/bdk/gen/agent_api/signals_api.py +1 -1
  19. symphony/bdk/gen/agent_api/system_api.py +1 -1
  20. symphony/bdk/gen/agent_api/util_api.py +13 -21
  21. symphony/bdk/gen/agent_api/violations_api.py +45 -73
  22. symphony/bdk/gen/agent_model/ack_id.py +1 -1
  23. symphony/bdk/gen/agent_model/agent_info.py +1 -1
  24. symphony/bdk/gen/agent_model/attachment_info.py +1 -1
  25. symphony/bdk/gen/agent_model/base_message.py +1 -1
  26. symphony/bdk/gen/agent_model/base_signal.py +1 -1
  27. symphony/bdk/gen/agent_model/channel_subscriber.py +1 -1
  28. symphony/bdk/gen/agent_model/channel_subscriber_response.py +1 -1
  29. symphony/bdk/gen/agent_model/channel_subscription_error.py +1 -1
  30. symphony/bdk/gen/agent_model/channel_subscription_response.py +1 -1
  31. symphony/bdk/gen/agent_model/connection_request_message.py +1 -1
  32. symphony/bdk/gen/agent_model/connection_request_message_all_of.py +1 -1
  33. symphony/bdk/gen/agent_model/datafeed.py +1 -1
  34. symphony/bdk/gen/agent_model/error.py +1 -1
  35. symphony/bdk/gen/agent_model/import_response.py +1 -1
  36. symphony/bdk/gen/agent_model/import_response_list.py +1 -1
  37. symphony/bdk/gen/agent_model/imported_message.py +1 -1
  38. symphony/bdk/gen/agent_model/ingestion_error.py +266 -0
  39. symphony/bdk/gen/agent_model/message.py +1 -1
  40. symphony/bdk/gen/agent_model/message_all_of.py +1 -1
  41. symphony/bdk/gen/agent_model/message_import_list.py +1 -1
  42. symphony/bdk/gen/agent_model/message_list.py +1 -1
  43. symphony/bdk/gen/agent_model/message_search_query.py +1 -1
  44. symphony/bdk/gen/agent_model/message_submission.py +1 -1
  45. symphony/bdk/gen/agent_model/pagination.py +1 -1
  46. symphony/bdk/gen/agent_model/pagination_cursors.py +1 -1
  47. symphony/bdk/gen/agent_model/room_created_message.py +1 -1
  48. symphony/bdk/gen/agent_model/room_created_message_all_of.py +1 -1
  49. symphony/bdk/gen/agent_model/room_deactivated_message.py +1 -1
  50. symphony/bdk/gen/agent_model/room_deactivated_message_all_of.py +1 -1
  51. symphony/bdk/gen/agent_model/room_member_demoted_from_owner_message.py +1 -1
  52. symphony/bdk/gen/agent_model/room_member_demoted_from_owner_message_all_of.py +1 -1
  53. symphony/bdk/gen/agent_model/room_member_promoted_to_owner_message.py +1 -1
  54. symphony/bdk/gen/agent_model/room_member_promoted_to_owner_message_all_of.py +1 -1
  55. symphony/bdk/gen/agent_model/room_reactivated_message.py +1 -1
  56. symphony/bdk/gen/agent_model/room_reactivated_message_all_of.py +1 -1
  57. symphony/bdk/gen/agent_model/room_tag.py +1 -1
  58. symphony/bdk/gen/agent_model/room_updated_message.py +1 -1
  59. symphony/bdk/gen/agent_model/room_updated_message_all_of.py +1 -1
  60. symphony/bdk/gen/agent_model/share_article.py +1 -1
  61. symphony/bdk/gen/agent_model/share_content.py +1 -1
  62. symphony/bdk/gen/agent_model/signal.py +1 -1
  63. symphony/bdk/gen/agent_model/signal_all_of.py +1 -6
  64. symphony/bdk/gen/agent_model/signal_list.py +1 -1
  65. symphony/bdk/gen/agent_model/simple_message.py +1 -1
  66. symphony/bdk/gen/agent_model/success_response.py +1 -1
  67. symphony/bdk/gen/agent_model/user_joined_room_message.py +1 -1
  68. symphony/bdk/gen/agent_model/user_joined_room_message_all_of.py +1 -1
  69. symphony/bdk/gen/agent_model/user_left_room_message.py +1 -1
  70. symphony/bdk/gen/agent_model/user_left_room_message_all_of.py +1 -1
  71. symphony/bdk/gen/agent_model/v1_audit_trail_initiator_list.py +1 -1
  72. symphony/bdk/gen/agent_model/v1_audit_trail_initiator_response.py +1 -1
  73. symphony/bdk/gen/agent_model/v1_dlp_content_type.py +1 -1
  74. symphony/bdk/gen/agent_model/v1_dlp_dictionary.py +1 -1
  75. symphony/bdk/gen/agent_model/v1_dlp_dictionary_content.py +1 -1
  76. symphony/bdk/gen/agent_model/v1_dlp_dictionary_metadata.py +1 -1
  77. symphony/bdk/gen/agent_model/v1_dlp_dictionary_metadata_collection_response.py +1 -1
  78. symphony/bdk/gen/agent_model/v1_dlp_dictionary_metadata_create_request.py +1 -1
  79. symphony/bdk/gen/agent_model/v1_dlp_dictionary_metadata_response.py +1 -1
  80. symphony/bdk/gen/agent_model/v1_dlp_dictionary_metadata_update_request.py +1 -1
  81. symphony/bdk/gen/agent_model/v1_dlp_dictionary_ref.py +1 -1
  82. symphony/bdk/gen/agent_model/v1_dlp_matched_policy.py +1 -1
  83. symphony/bdk/gen/agent_model/v1_dlp_matched_policy_list.py +1 -1
  84. symphony/bdk/gen/agent_model/v1_dlp_outcome.py +1 -1
  85. symphony/bdk/gen/agent_model/v1_dlp_policies_collection_response.py +1 -1
  86. symphony/bdk/gen/agent_model/v1_dlp_policy.py +1 -1
  87. symphony/bdk/gen/agent_model/v1_dlp_policy_request.py +9 -8
  88. symphony/bdk/gen/agent_model/v1_dlp_policy_response.py +1 -1
  89. symphony/bdk/gen/agent_model/v1_dlp_signal.py +6 -1
  90. symphony/bdk/gen/agent_model/v1_dlp_stream.py +1 -1
  91. symphony/bdk/gen/agent_model/v1_dlp_violation.py +1 -1
  92. symphony/bdk/gen/agent_model/v1_dlp_violation_message.py +1 -1
  93. symphony/bdk/gen/agent_model/v1_dlp_violation_message_response.py +1 -1
  94. symphony/bdk/gen/agent_model/v1_dlp_violation_signal.py +1 -1
  95. symphony/bdk/gen/agent_model/v1_dlp_violation_signal_response.py +1 -1
  96. symphony/bdk/gen/agent_model/v1_dlp_violation_stream.py +1 -1
  97. symphony/bdk/gen/agent_model/v1_dlp_violation_stream_response.py +1 -1
  98. symphony/bdk/gen/agent_model/v1_health_check_response.py +1 -1
  99. symphony/bdk/gen/agent_model/v2_base_message.py +1 -1
  100. symphony/bdk/gen/agent_model/v2_error.py +1 -1
  101. symphony/bdk/gen/agent_model/v2_health_check_response.py +1 -1
  102. symphony/bdk/gen/agent_model/v2_import_response.py +1 -1
  103. symphony/bdk/gen/agent_model/v2_import_response_list.py +1 -1
  104. symphony/bdk/gen/agent_model/v2_imported_message.py +1 -1
  105. symphony/bdk/gen/agent_model/v2_message.py +1 -1
  106. symphony/bdk/gen/agent_model/v2_message_all_of.py +1 -1
  107. symphony/bdk/gen/agent_model/v2_message_import_list.py +1 -1
  108. symphony/bdk/gen/agent_model/v2_message_list.py +1 -1
  109. symphony/bdk/gen/agent_model/v2_message_submission.py +1 -1
  110. symphony/bdk/gen/agent_model/v3_dlp_dictionary_meta.py +1 -1
  111. symphony/bdk/gen/agent_model/v3_dlp_file_classifier_config.py +1 -1
  112. symphony/bdk/gen/agent_model/v3_dlp_file_extension_config.py +1 -1
  113. symphony/bdk/gen/agent_model/v3_dlp_file_password_config.py +1 -1
  114. symphony/bdk/gen/agent_model/v3_dlp_file_size_config.py +1 -1
  115. symphony/bdk/gen/agent_model/v3_dlp_policies_collection_response.py +1 -1
  116. symphony/bdk/gen/agent_model/v3_dlp_policy.py +1 -1
  117. symphony/bdk/gen/agent_model/v3_dlp_policy_applies_to.py +1 -1
  118. symphony/bdk/gen/agent_model/v3_dlp_policy_request.py +1 -1
  119. symphony/bdk/gen/agent_model/v3_dlp_policy_response.py +1 -1
  120. symphony/bdk/gen/agent_model/v3_dlp_rule.py +1 -1
  121. symphony/bdk/gen/agent_model/v3_dlp_text_match_config.py +1 -1
  122. symphony/bdk/gen/agent_model/v3_dlp_violation.py +1 -1
  123. symphony/bdk/gen/agent_model/v3_dlp_violation_message.py +1 -1
  124. symphony/bdk/gen/agent_model/v3_dlp_violation_message_response.py +1 -1
  125. symphony/bdk/gen/agent_model/v3_dlp_violation_signal.py +1 -1
  126. symphony/bdk/gen/agent_model/v3_dlp_violation_signal_response.py +1 -1
  127. symphony/bdk/gen/agent_model/v3_dlp_violation_stream.py +1 -1
  128. symphony/bdk/gen/agent_model/v3_dlp_violation_stream_response.py +1 -1
  129. symphony/bdk/gen/agent_model/v3_health.py +1 -1
  130. symphony/bdk/gen/agent_model/v3_health_auth_type.py +1 -1
  131. symphony/bdk/gen/agent_model/v3_health_component.py +1 -1
  132. symphony/bdk/gen/agent_model/v3_health_status.py +1 -1
  133. symphony/bdk/gen/agent_model/v4_attachment_info.py +1 -1
  134. symphony/bdk/gen/agent_model/v4_connection_accepted.py +1 -1
  135. symphony/bdk/gen/agent_model/v4_connection_requested.py +1 -1
  136. symphony/bdk/gen/agent_model/v4_event.py +3 -3
  137. symphony/bdk/gen/agent_model/v4_event_list.py +1 -1
  138. symphony/bdk/gen/agent_model/v4_generic_system_event.py +279 -0
  139. symphony/bdk/gen/agent_model/v4_import_response.py +1 -1
  140. symphony/bdk/gen/agent_model/v4_import_response_list.py +1 -1
  141. symphony/bdk/gen/agent_model/v4_imported_message.py +1 -1
  142. symphony/bdk/gen/agent_model/v4_imported_message_attachment.py +1 -1
  143. symphony/bdk/gen/agent_model/v4_initiator.py +1 -1
  144. symphony/bdk/gen/agent_model/v4_instant_message_created.py +1 -1
  145. symphony/bdk/gen/agent_model/v4_key_value_pair.py +1 -1
  146. symphony/bdk/gen/agent_model/v4_message.py +1 -1
  147. symphony/bdk/gen/agent_model/v4_message_blast_response.py +1 -1
  148. symphony/bdk/gen/agent_model/v4_message_import_list.py +1 -1
  149. symphony/bdk/gen/agent_model/v4_message_list.py +1 -1
  150. symphony/bdk/gen/agent_model/v4_message_sent.py +1 -1
  151. symphony/bdk/gen/agent_model/v4_message_suppressed.py +1 -1
  152. symphony/bdk/gen/agent_model/v4_payload.py +8 -1
  153. symphony/bdk/gen/agent_model/v4_room_created.py +1 -1
  154. symphony/bdk/gen/agent_model/v4_room_deactivated.py +1 -1
  155. symphony/bdk/gen/agent_model/v4_room_member_demoted_from_owner.py +1 -1
  156. symphony/bdk/gen/agent_model/v4_room_member_promoted_to_owner.py +1 -1
  157. symphony/bdk/gen/agent_model/v4_room_properties.py +1 -1
  158. symphony/bdk/gen/agent_model/v4_room_reactivated.py +1 -1
  159. symphony/bdk/gen/agent_model/v4_room_updated.py +1 -1
  160. symphony/bdk/gen/agent_model/v4_shared_post.py +1 -1
  161. symphony/bdk/gen/agent_model/v4_stream.py +6 -1
  162. symphony/bdk/gen/agent_model/v4_symphony_elements_action.py +1 -1
  163. symphony/bdk/gen/agent_model/v4_thumbnail_info.py +1 -1
  164. symphony/bdk/gen/agent_model/v4_user.py +1 -1
  165. symphony/bdk/gen/agent_model/v4_user_joined_room.py +1 -1
  166. symphony/bdk/gen/agent_model/v4_user_left_room.py +1 -1
  167. symphony/bdk/gen/agent_model/v4_user_requested_to_join_room.py +1 -1
  168. symphony/bdk/gen/agent_model/v5_datafeed.py +3 -3
  169. symphony/bdk/gen/agent_model/v5_datafeed_create_body.py +1 -1
  170. symphony/bdk/gen/agent_model/v5_event_list.py +1 -1
  171. symphony/bdk/gen/agent_model/v5_events_read_body.py +5 -5
  172. symphony/bdk/gen/pod_api/app_entitlement_api.py +1 -1
  173. symphony/bdk/gen/pod_api/application_api.py +1 -1
  174. symphony/bdk/gen/pod_api/connection_api.py +1 -1
  175. symphony/bdk/gen/pod_api/default_api.py +1 -1
  176. symphony/bdk/gen/pod_api/disclaimer_api.py +1 -1
  177. symphony/bdk/gen/pod_api/info_barriers_api.py +1 -1
  178. symphony/bdk/gen/pod_api/message_api.py +1 -1
  179. symphony/bdk/gen/pod_api/message_suppression_api.py +1 -1
  180. symphony/bdk/gen/pod_api/pod_api.py +1 -1
  181. symphony/bdk/gen/pod_api/presence_api.py +1 -1
  182. symphony/bdk/gen/pod_api/room_membership_api.py +1 -1
  183. symphony/bdk/gen/pod_api/security_api.py +1 -1
  184. symphony/bdk/gen/pod_api/session_api.py +1 -1
  185. symphony/bdk/gen/pod_api/streams_api.py +162 -1
  186. symphony/bdk/gen/pod_api/system_api.py +1 -1
  187. symphony/bdk/gen/pod_api/user_api.py +264 -2
  188. symphony/bdk/gen/pod_api/users_api.py +421 -1
  189. symphony/bdk/gen/pod_model/admin_justified_action.py +1 -1
  190. symphony/bdk/gen/pod_model/admin_justified_user_action.py +1 -1
  191. symphony/bdk/gen/pod_model/app_authentication_key.py +1 -1
  192. symphony/bdk/gen/pod_model/app_authentication_keys.py +1 -1
  193. symphony/bdk/gen/pod_model/app_notification.py +1 -1
  194. symphony/bdk/gen/pod_model/app_properties.py +1 -1
  195. symphony/bdk/gen/pod_model/app_property.py +1 -1
  196. symphony/bdk/gen/pod_model/application_detail.py +1 -1
  197. symphony/bdk/gen/pod_model/application_info.py +1 -1
  198. symphony/bdk/gen/pod_model/assignee_candidate.py +1 -1
  199. symphony/bdk/gen/pod_model/assignee_candidates.py +1 -1
  200. symphony/bdk/gen/pod_model/attachment_preview.py +1 -1
  201. symphony/bdk/gen/pod_model/avatar.py +1 -1
  202. symphony/bdk/gen/pod_model/avatar_list.py +1 -1
  203. symphony/bdk/gen/pod_model/avatar_update.py +1 -1
  204. symphony/bdk/gen/pod_model/bulk_action_result.py +1 -1
  205. symphony/bdk/gen/pod_model/cert_info.py +1 -1
  206. symphony/bdk/gen/pod_model/cert_info_item.py +1 -1
  207. symphony/bdk/gen/pod_model/company_cert.py +1 -1
  208. symphony/bdk/gen/pod_model/company_cert_attributes.py +1 -1
  209. symphony/bdk/gen/pod_model/company_cert_detail.py +1 -1
  210. symphony/bdk/gen/pod_model/company_cert_info.py +1 -1
  211. symphony/bdk/gen/pod_model/company_cert_info_list.py +1 -1
  212. symphony/bdk/gen/pod_model/company_cert_status.py +1 -1
  213. symphony/bdk/gen/pod_model/company_cert_type.py +1 -1
  214. symphony/bdk/gen/pod_model/company_cert_type_list.py +1 -1
  215. symphony/bdk/gen/pod_model/conversation_specific_stream_attributes.py +1 -1
  216. symphony/bdk/gen/pod_model/delegate_action.py +1 -1
  217. symphony/bdk/gen/pod_model/disclaimer.py +1 -1
  218. symphony/bdk/gen/pod_model/disclaimer_list.py +1 -1
  219. symphony/bdk/gen/pod_model/download_receipt_count.py +1 -1
  220. symphony/bdk/gen/pod_model/error.py +1 -1
  221. symphony/bdk/gen/pod_model/faceted_match_count.py +1 -1
  222. symphony/bdk/gen/pod_model/feature.py +1 -1
  223. symphony/bdk/gen/pod_model/feature_list.py +1 -1
  224. symphony/bdk/gen/pod_model/file_extension.py +6 -1
  225. symphony/bdk/gen/pod_model/file_extensions_response.py +1 -1
  226. symphony/bdk/gen/pod_model/followers_list.py +1 -1
  227. symphony/bdk/gen/pod_model/followers_list_response.py +1 -1
  228. symphony/bdk/gen/pod_model/following_list_response.py +1 -1
  229. symphony/bdk/gen/pod_model/group.py +1 -1
  230. symphony/bdk/gen/pod_model/group_item.py +1 -1
  231. symphony/bdk/gen/pod_model/group_list.py +1 -1
  232. symphony/bdk/gen/pod_model/group_role_scope.py +1 -1
  233. symphony/bdk/gen/pod_model/im_system_info.py +1 -1
  234. symphony/bdk/gen/pod_model/immutable_room_attributes.py +1 -1
  235. symphony/bdk/gen/pod_model/integer_list.py +1 -1
  236. symphony/bdk/gen/pod_model/languages.py +1 -1
  237. symphony/bdk/gen/pod_model/member_info.py +1 -1
  238. symphony/bdk/gen/pod_model/membership_data.py +1 -1
  239. symphony/bdk/gen/pod_model/membership_list.py +1 -1
  240. symphony/bdk/gen/pod_model/message_detail.py +1 -1
  241. symphony/bdk/gen/pod_model/message_details.py +1 -1
  242. symphony/bdk/gen/pod_model/message_download_receipt_count.py +1 -1
  243. symphony/bdk/gen/pod_model/message_ids.py +1 -1
  244. symphony/bdk/gen/pod_model/message_metadata_response.py +1 -1
  245. symphony/bdk/gen/pod_model/message_metadata_response_parent.py +1 -1
  246. symphony/bdk/gen/pod_model/message_receipt_detail.py +1 -1
  247. symphony/bdk/gen/pod_model/message_receipt_detail_response.py +1 -1
  248. symphony/bdk/gen/pod_model/message_status.py +1 -1
  249. symphony/bdk/gen/pod_model/message_status_user.py +1 -1
  250. symphony/bdk/gen/pod_model/message_stream.py +1 -1
  251. symphony/bdk/gen/pod_model/message_suppression_response.py +1 -1
  252. symphony/bdk/gen/pod_model/message_user.py +1 -1
  253. symphony/bdk/gen/pod_model/name_value_pair.py +1 -1
  254. symphony/bdk/gen/pod_model/pagination.py +1 -1
  255. symphony/bdk/gen/pod_model/pagination_cursors.py +1 -1
  256. symphony/bdk/gen/pod_model/password.py +1 -1
  257. symphony/bdk/gen/pod_model/password_reset.py +1 -1
  258. symphony/bdk/gen/pod_model/pod_app_entitlement.py +1 -1
  259. symphony/bdk/gen/pod_model/pod_app_entitlement_list.py +1 -1
  260. symphony/bdk/gen/pod_model/pod_certificate.py +1 -1
  261. symphony/bdk/gen/pod_model/policy.py +1 -1
  262. symphony/bdk/gen/pod_model/policy_list.py +1 -1
  263. symphony/bdk/gen/pod_model/product.py +1 -1
  264. symphony/bdk/gen/pod_model/product_list.py +1 -1
  265. symphony/bdk/gen/pod_model/protocol.py +1 -1
  266. symphony/bdk/gen/pod_model/role.py +1 -1
  267. symphony/bdk/gen/pod_model/role_detail.py +1 -1
  268. symphony/bdk/gen/pod_model/role_detail_list.py +1 -1
  269. symphony/bdk/gen/pod_model/role_list.py +1 -1
  270. symphony/bdk/gen/pod_model/room_attributes.py +1 -1
  271. symphony/bdk/gen/pod_model/room_detail.py +1 -1
  272. symphony/bdk/gen/pod_model/room_search_criteria.py +1 -1
  273. symphony/bdk/gen/pod_model/room_specific_stream_attributes.py +1 -1
  274. symphony/bdk/gen/pod_model/room_system_info.py +1 -1
  275. symphony/bdk/gen/pod_model/room_tag.py +1 -1
  276. symphony/bdk/gen/pod_model/service_account_manifest.py +264 -0
  277. symphony/bdk/gen/pod_model/stream.py +1 -1
  278. symphony/bdk/gen/pod_model/stream_attachment_item.py +1 -1
  279. symphony/bdk/gen/pod_model/stream_attachment_response.py +1 -1
  280. symphony/bdk/gen/pod_model/stream_attributes.py +1 -1
  281. symphony/bdk/gen/pod_model/stream_filter.py +1 -1
  282. symphony/bdk/gen/pod_model/stream_list.py +1 -1
  283. symphony/bdk/gen/pod_model/stream_type.py +1 -1
  284. symphony/bdk/gen/pod_model/string_id.py +1 -1
  285. symphony/bdk/gen/pod_model/string_list.py +1 -1
  286. symphony/bdk/gen/pod_model/success_response.py +1 -1
  287. symphony/bdk/gen/pod_model/user_app_entitlement.py +1 -1
  288. symphony/bdk/gen/pod_model/user_app_entitlement_list.py +1 -1
  289. symphony/bdk/gen/pod_model/user_app_entitlement_patch.py +1 -1
  290. symphony/bdk/gen/pod_model/user_app_entitlement_patch_enum.py +1 -1
  291. symphony/bdk/gen/pod_model/user_app_entitlements_patch_list.py +1 -1
  292. symphony/bdk/gen/pod_model/user_attributes.py +1 -1
  293. symphony/bdk/gen/pod_model/user_compp.py +1 -1
  294. symphony/bdk/gen/pod_model/user_connection.py +1 -1
  295. symphony/bdk/gen/pod_model/user_connection_list.py +1 -1
  296. symphony/bdk/gen/pod_model/user_connection_request.py +1 -1
  297. symphony/bdk/gen/pod_model/user_data.py +1 -1
  298. symphony/bdk/gen/pod_model/user_detail.py +1 -1
  299. symphony/bdk/gen/pod_model/user_detail_list.py +1 -1
  300. symphony/bdk/gen/pod_model/user_error.py +1 -1
  301. symphony/bdk/gen/pod_model/user_filter.py +1 -1
  302. symphony/bdk/gen/pod_model/user_group_assignee.py +1 -1
  303. symphony/bdk/gen/pod_model/user_group_assignee_response.py +1 -1
  304. symphony/bdk/gen/pod_model/user_group_assignee_update.py +1 -1
  305. symphony/bdk/gen/pod_model/user_group_assignment_response.py +1 -1
  306. symphony/bdk/gen/pod_model/user_group_create.py +1 -1
  307. symphony/bdk/gen/pod_model/user_group_data.py +1 -1
  308. symphony/bdk/gen/pod_model/user_group_membership_data.py +1 -1
  309. symphony/bdk/gen/pod_model/user_group_membership_request.py +1 -1
  310. symphony/bdk/gen/pod_model/user_group_membership_response.py +1 -1
  311. symphony/bdk/gen/pod_model/user_group_membership_response_data.py +1 -1
  312. symphony/bdk/gen/pod_model/user_group_membership_update.py +1 -1
  313. symphony/bdk/gen/pod_model/user_group_response.py +1 -1
  314. symphony/bdk/gen/pod_model/user_group_response_list.py +1 -1
  315. symphony/bdk/gen/pod_model/user_group_update.py +1 -1
  316. symphony/bdk/gen/pod_model/user_id.py +1 -1
  317. symphony/bdk/gen/pod_model/user_id_list.py +1 -1
  318. symphony/bdk/gen/pod_model/user_info.py +1 -1
  319. symphony/bdk/gen/pod_model/user_name.py +1 -1
  320. symphony/bdk/gen/pod_model/user_name_list.py +1 -1
  321. symphony/bdk/gen/pod_model/user_search_filter.py +1 -1
  322. symphony/bdk/gen/pod_model/user_search_query.py +1 -1
  323. symphony/bdk/gen/pod_model/user_search_results.py +1 -1
  324. symphony/bdk/gen/pod_model/user_status.py +1 -1
  325. symphony/bdk/gen/pod_model/user_suspension.py +1 -1
  326. symphony/bdk/gen/pod_model/user_system_info.py +1 -1
  327. symphony/bdk/gen/pod_model/user_v2.py +1 -1
  328. symphony/bdk/gen/pod_model/v1_im_attributes.py +1 -1
  329. symphony/bdk/gen/pod_model/v1_im_detail.py +1 -1
  330. symphony/bdk/gen/pod_model/v1_session.py +301 -0
  331. symphony/bdk/gen/pod_model/v1_user_sessions.py +259 -0
  332. symphony/bdk/gen/pod_model/v2_admin_stream_attributes.py +6 -1
  333. symphony/bdk/gen/pod_model/v2_admin_stream_filter.py +1 -1
  334. symphony/bdk/gen/pod_model/v2_admin_stream_info.py +1 -1
  335. symphony/bdk/gen/pod_model/v2_admin_stream_info_list.py +1 -1
  336. symphony/bdk/gen/pod_model/v2_admin_stream_list.py +1 -1
  337. symphony/bdk/gen/pod_model/v2_admin_stream_type.py +1 -1
  338. symphony/bdk/gen/pod_model/v2_conversation_specific_stream_attributes.py +1 -1
  339. symphony/bdk/gen/pod_model/v2_member_info.py +1 -1
  340. symphony/bdk/gen/pod_model/v2_member_info_list.py +1 -1
  341. symphony/bdk/gen/pod_model/v2_member_user_detail.py +1 -1
  342. symphony/bdk/gen/pod_model/v2_membership_list.py +1 -1
  343. symphony/bdk/gen/pod_model/v2_presence.py +1 -1
  344. symphony/bdk/gen/pod_model/v2_presence_all_of.py +1 -1
  345. symphony/bdk/gen/pod_model/v2_presence_list.py +1 -1
  346. symphony/bdk/gen/pod_model/v2_presence_status.py +1 -1
  347. symphony/bdk/gen/pod_model/v2_room_search_criteria.py +1 -1
  348. symphony/bdk/gen/pod_model/v2_room_search_criteria_all_of.py +1 -1
  349. symphony/bdk/gen/pod_model/v2_room_specific_stream_attributes.py +1 -1
  350. symphony/bdk/gen/pod_model/v2_stream_attributes.py +1 -1
  351. symphony/bdk/gen/pod_model/v2_stream_type.py +1 -1
  352. symphony/bdk/gen/pod_model/v2_user_attributes.py +1 -1
  353. symphony/bdk/gen/pod_model/v2_user_create.py +1 -1
  354. symphony/bdk/gen/pod_model/v2_user_detail.py +1 -1
  355. symphony/bdk/gen/pod_model/v2_user_detail_list.py +1 -1
  356. symphony/bdk/gen/pod_model/v2_user_key_request.py +1 -1
  357. symphony/bdk/gen/pod_model/v2_user_list.py +1 -1
  358. symphony/bdk/gen/pod_model/v2_user_presence.py +1 -1
  359. symphony/bdk/gen/pod_model/v2_user_presence_all_of.py +1 -1
  360. symphony/bdk/gen/pod_model/v3_room_attributes.py +6 -1
  361. symphony/bdk/gen/pod_model/v3_room_detail.py +1 -1
  362. symphony/bdk/gen/pod_model/v3_room_search_results.py +1 -1
  363. {symphony_bdk_python-2.10.dev0.dist-info → symphony_bdk_python-2.11.0b0.dist-info}/METADATA +3 -3
  364. symphony_bdk_python-2.11.0b0.dist-info/RECORD +546 -0
  365. symphony_bdk_python-2.10.dev0.dist-info/RECORD +0 -538
  366. {symphony_bdk_python-2.10.dev0.dist-info → symphony_bdk_python-2.11.0b0.dist-info}/LICENSE +0 -0
  367. {symphony_bdk_python-2.10.dev0.dist-info → symphony_bdk_python-2.11.0b0.dist-info}/NOTICE +0 -0
  368. {symphony_bdk_python-2.10.dev0.dist-info → symphony_bdk_python-2.11.0b0.dist-info}/WHEEL +0 -0
@@ -5,10 +5,13 @@ from datetime import datetime, timezone
5
5
  import logging
6
6
 
7
7
  from symphony.bdk.core.auth.exception import AuthInitializationError
8
+ from symphony.bdk.core.auth.jwt_helper import extract_token_claims
9
+
8
10
 
9
11
  logger = logging.getLogger(__name__)
10
12
 
11
13
  EXPIRATION_SAFETY_BUFFER_SECONDS = 5
14
+ SKD_FLAG_NAME = "canUseSimplifiedKeyDelivery"
12
15
 
13
16
 
14
17
  class AuthSession:
@@ -33,7 +36,10 @@ class AuthSession:
33
36
  """
34
37
  logger.debug("Authenticate")
35
38
  self._session_token = await self._authenticator.retrieve_session_token()
36
- self._key_manager_token = await self._authenticator.retrieve_key_manager_token()
39
+ if await self.skd_enabled:
40
+ self._key_manager_token = ""
41
+ return
42
+ self.key_manager_token = await self._authenticator.retrieve_key_manager_token()
37
43
 
38
44
  @property
39
45
  async def session_token(self):
@@ -71,6 +77,10 @@ class AuthSession:
71
77
 
72
78
  :return: the key manager token
73
79
  """
80
+
81
+ if await self.skd_enabled:
82
+ return ""
83
+
74
84
  if self._key_manager_token is None:
75
85
  self._key_manager_token = await self._authenticator.retrieve_key_manager_token()
76
86
  return self._key_manager_token
@@ -91,6 +101,15 @@ class AuthSession:
91
101
  """
92
102
  self._key_manager_token = value
93
103
 
104
+ @property
105
+ async def skd_enabled(self):
106
+
107
+ token_data = extract_token_claims(await self.session_token)
108
+ if not token_data.get(SKD_FLAG_NAME, False):
109
+ return False
110
+ return await self._authenticator.agent_version_service.is_skd_supported()
111
+
112
+
94
113
 
95
114
  class OboAuthSession(AuthSession):
96
115
  """RSA OBO Authentication session handle to get the OBO session token from.
@@ -8,6 +8,7 @@ from symphony.bdk.core.config.model.bdk_bot_config import BdkBotConfig
8
8
  from symphony.bdk.core.config.model.bdk_retry_config import BdkRetryConfig
9
9
  from symphony.bdk.core.retry import retry
10
10
  from symphony.bdk.core.retry.strategy import authentication_retry
11
+ from symphony.bdk.core.service.version.agent_version_service import AgentVersionService
11
12
  from symphony.bdk.gen.api_client import ApiClient
12
13
  from symphony.bdk.gen.auth_api.certificate_authentication_api import CertificateAuthenticationApi
13
14
  from symphony.bdk.gen.login_api.authentication_api import AuthenticationApi
@@ -24,6 +25,7 @@ class BotAuthenticator(ABC):
24
25
  self._session_auth_client = session_auth_client
25
26
  self._key_manager_auth_client = key_manager_auth_client
26
27
  self._retry_config = retry_config
28
+ self._agent_version_service = None
27
29
 
28
30
  async def retrieve_session_token(self) -> str:
29
31
  """Authenticates and retrieves a new session token.
@@ -59,6 +61,15 @@ class BotAuthenticator(ABC):
59
61
  :return: the token as a string
60
62
  """
61
63
 
64
+ @property
65
+ def agent_version_service(self) -> Optional[AgentVersionService]:
66
+ return self._agent_version_service
67
+
68
+ @agent_version_service.setter
69
+ def agent_version_service(self, agent_version_service: AgentVersionService):
70
+ self._agent_version_service = agent_version_service
71
+
72
+
62
73
 
63
74
  class BotAuthenticatorRsa(BotAuthenticator):
64
75
  """Bot authenticator RSA implementation.
@@ -83,3 +83,13 @@ def _parse_public_key_from_x509_cert(certificate: str) -> str:
83
83
  return public_key.public_bytes(Encoding.PEM, PublicFormat.SubjectPublicKeyInfo).decode()
84
84
  except ValueError as exc:
85
85
  raise AuthInitializationError("Unable to parse the certificate. Check certificate format.") from exc
86
+
87
+
88
+ def extract_token_claims(session_token):
89
+ try:
90
+ return jwt.decode(session_token,
91
+ algorithms=[JWT_ENCRYPTION_ALGORITHM],
92
+ options={"verify_signature": False}
93
+ )
94
+ except DecodeError:
95
+ return {}
@@ -30,6 +30,7 @@ class BdkConfig(BdkServerConfig):
30
30
  self.datafeed = BdkDatafeedConfig(config.get("datafeed"))
31
31
  self.datahose = BdkDatahoseConfig(config.get("datahose"))
32
32
  self.retry = BdkRetryConfig(config.get("retry"))
33
+ self.manifest = config.get("manifest")
33
34
 
34
35
  def is_bot_configured(self) -> bool:
35
36
  """
@@ -136,31 +136,35 @@ class OboStreamService:
136
136
 
137
137
  @retry
138
138
  async def search_rooms(self, query: V2RoomSearchCriteria, skip: int = 0,
139
- limit: int = 50) -> V3RoomSearchResults:
139
+ limit: int = 50, include_non_discoverable=False) -> V3RoomSearchResults:
140
140
  """Search for rooms according to the specified criteria.
141
141
  Wraps the `Search Rooms V3 <https://developers.symphony.com/restapi/reference/search-rooms-v3>`_ endpoint.
142
142
 
143
143
  :param query: the search criteria.
144
144
  :param skip: number of rooms to skip, defaults to 0.
145
145
  :param limit: number of maximum rooms to return. Must be a positive integer that does not exceed 100.
146
+ :param include_non_discoverable: set to `True` to include rooms not publicly searchable, false by default.
146
147
  :return: the rooms matching search criteria.
147
148
  """
148
149
  return await self._streams_api.v3_room_search_post(query=query, skip=skip, limit=limit,
150
+ include_non_discoverable=include_non_discoverable,
149
151
  session_token=await self._auth_session.session_token)
150
152
 
151
153
  async def search_all_rooms(self, query: V2RoomSearchCriteria, chunk_size: int = 50,
152
- max_number: int = None) -> AsyncGenerator[V3RoomDetail, None]:
154
+ max_number: int = None, include_non_discoverable : bool = False)\
155
+ -> AsyncGenerator[V3RoomDetail, None]:
153
156
  """Search for rooms according to the specified criteria.
154
157
  Wraps the `Search Rooms V3 <https://developers.symphony.com/restapi/reference/search-rooms-v3>`_ endpoint.
155
158
 
156
159
  :param query: the search criteria.
157
160
  :param chunk_size: the maximum number of elements to retrieve in one underlying HTTP call.
158
161
  :param max_number: the total maximum number of elements to retrieve.
162
+ :param include_non_discoverable: set to `True` to include rooms not publicly searchable, false by default.
159
163
  :return: an asynchronous generator of the rooms matching the search criteria.
160
164
  """
161
165
 
162
166
  async def search_rooms_one_page(skip, limit):
163
- result = await self.search_rooms(query, skip, limit)
167
+ result = await self.search_rooms(query, skip, limit, include_non_discoverable)
164
168
  return result.rooms if result.rooms else None
165
169
 
166
170
  return offset_based_pagination(search_rooms_one_page, chunk_size, max_number)
@@ -346,6 +350,39 @@ class StreamService(OboStreamService):
346
350
 
347
351
  return offset_based_pagination(list_streams_admin_one_page, chunk_size, max_number)
348
352
 
353
+ @retry
354
+ async def list_user_streams_admin(self, uid: int, stream_filter: StreamFilter = None, skip: int = 0,
355
+ limit: int = 50) -> StreamList:
356
+ """Retrieve a list of all streams of which a user is a member.
357
+ Wraps the `User Streams <https://developers.symphony.com/restapi/v20.16/reference#user-streams>`_ endpoint.
358
+
359
+ :param uid: the ID of the user.
360
+ :param stream_filter: the filtering criteria for the streams.
361
+ :param skip: the number of streams to skip.
362
+ :param limit: the maximum number of streams to retrieve. Must be less or equal than 1000.
363
+ :return: the list of streams for the specified user.
364
+ """
365
+ return await self._streams_api.v1_admin_user_uid_streams_list_post(
366
+ uid=uid, filter=stream_filter, skip=skip, limit=limit, session_token=await self._auth_session.session_token
367
+ )
368
+
369
+ async def list_all_user_streams_admin(self, uid: int, stream_filter: StreamFilter = None, chunk_size: int = 50,
370
+ max_number: int = None) -> AsyncGenerator[StreamAttributes, None]:
371
+ """Retrieves all streams of which a user is a member, handling pagination automatically.
372
+ Wraps the `User Streams <https://developers.symphony.com/restapi/v20.16/reference#user-streams>`_ endpoint.
373
+
374
+ :param uid: the ID of the user.
375
+ :param stream_filter: the filtering criteria for the streams.
376
+ :param chunk_size: the maximum number of streams to retrieve in one underlying HTTP call.
377
+ :param max_number: the total maximum number of streams to retrieve.
378
+ :return: an asynchronous generator of the streams.
379
+ """
380
+ async def list_streams_one_page(skip, limit):
381
+ result = await self.list_user_streams_admin(uid, stream_filter, skip, limit)
382
+ return result.value if result else None
383
+
384
+ return offset_based_pagination(list_streams_one_page, chunk_size, max_number)
385
+
349
386
  @retry
350
387
  async def list_stream_members(self, stream_id: str, skip: int = 0, limit: int = 100) -> V2MembershipList:
351
388
  """List the current members of an existing stream. The stream can be of type IM, MIM, or ROOM.
@@ -1,4 +1,6 @@
1
1
  import base64
2
+ import json
3
+ from pathlib import Path
2
4
  from typing import Union, AsyncGenerator
3
5
 
4
6
  from symphony.bdk.core.auth.auth_session import AuthSession
@@ -21,6 +23,7 @@ from symphony.bdk.gen.pod_model.followers_list import FollowersList
21
23
  from symphony.bdk.gen.pod_model.followers_list_response import FollowersListResponse
22
24
  from symphony.bdk.gen.pod_model.following_list_response import FollowingListResponse
23
25
  from symphony.bdk.gen.pod_model.role_detail import RoleDetail
26
+ from symphony.bdk.gen.pod_model.service_account_manifest import ServiceAccountManifest
24
27
  from symphony.bdk.gen.pod_model.string_id import StringId
25
28
  from symphony.bdk.gen.pod_model.user_filter import UserFilter
26
29
  from symphony.bdk.gen.pod_model.user_id_list import UserIdList
@@ -260,10 +263,12 @@ class UserService(OboUserService):
260
263
  audit_trail_api: AuditTrailApi,
261
264
  system_api: SystemApi,
262
265
  auth_session: AuthSession,
263
- retry_config: BdkRetryConfig):
266
+ retry_config: BdkRetryConfig,
267
+ manifest: str):
264
268
  super().__init__(user_api, users_api, auth_session, retry_config)
265
269
  self._audit_trail_api = audit_trail_api
266
270
  self._system_api = system_api
271
+ self._manifest = manifest
267
272
 
268
273
  @retry
269
274
  async def get_user_detail(
@@ -898,3 +903,40 @@ class UserService(OboUserService):
898
903
  }
899
904
 
900
905
  await self._user_api.v1_admin_user_user_id_suspension_update_put(**params)
906
+
907
+ @retry
908
+ async def update_manifest_from_json(self, manifest_data: str) -> None:
909
+ """
910
+ Updates the user manifest from a JSON string.
911
+
912
+ :param manifest_data: A JSON string.
913
+ :raises json.JSONDecodeError: If the string is not valid JSON.
914
+ """
915
+ await self._user_api.v1_user_manifest_own_post(
916
+ session_token=await self._auth_session.session_token,
917
+ manifest=ServiceAccountManifest(manifest_data)
918
+ )
919
+
920
+ async def update_manifest_from_file(self) -> None:
921
+ """
922
+ Updates the user manifest using the file mentioned in config.yaml under 'manifest'.
923
+
924
+ :raises FileNotFoundError: If the file does not exist.
925
+ :raises json.JSONDecodeError: If the file content is not valid JSON.
926
+ :raises IOError: If the file can't be read.
927
+ """
928
+ file_path = Path(self._manifest)
929
+
930
+ with file_path.open('r', encoding='utf-8') as f:
931
+ content = json.load(f)
932
+ manifest_text = json.dumps(content)
933
+
934
+ await self._user_api.v1_user_manifest_own_post(
935
+ session_token=await self._auth_session.session_token,
936
+ manifest=ServiceAccountManifest(manifest_text)
937
+ )
938
+
939
+ @retry
940
+ async def get_manifest(self) -> ServiceAccountManifest:
941
+ """Retrieves own user manifest"""
942
+ return await self._user_api.v1_user_manifest_own_get(session_token=await self._auth_session.session_token)
File without changes
@@ -0,0 +1,67 @@
1
+ import re
2
+ from datetime import datetime, timezone
3
+
4
+ from symphony.bdk.core.auth.auth_session import AuthSession
5
+ from symphony.bdk.core.auth.jwt_helper import generate_expiration_time
6
+ from symphony.bdk.core.config.model.bdk_retry_config import BdkRetryConfig
7
+ from symphony.bdk.core.retry import retry
8
+ from symphony.bdk.gen.agent_api.signals_api import SignalsApi
9
+ from symphony.bdk.gen.exceptions import ApiException
10
+
11
+ MIN_MAJOR_VERSION = 24
12
+ MIN_MINOR_VERSION = 12
13
+ VERSION_REGEXP = r"Agent-(\d+)\.(\d+)\..*"
14
+
15
+
16
+ class AgentVersionService:
17
+ """Service class has one purpose only. It checks if version of agents supports simplified key delivery mechanism
18
+
19
+ """
20
+
21
+ def __init__(self, signals_api: SignalsApi, retry_config: BdkRetryConfig):
22
+ self._signals_api = signals_api
23
+ self._retry_config = retry_config
24
+ self._is_skd_supported = None
25
+ self._expire_at = -1
26
+
27
+ async def is_skd_supported(self) -> bool:
28
+ """ AgentVersionService stores cached version flag.
29
+ Caching interval is the same as in to session token caching.
30
+ Once cache is expired it calls agent info api to update version.
31
+
32
+ :return: boolean flag if skd supported for agent
33
+ """
34
+ if (
35
+ self._is_skd_supported is not None
36
+ and self._expire_at
37
+ > datetime.now(timezone.utc).timestamp()
38
+ ):
39
+ return self._is_skd_supported
40
+ self._expire_at = generate_expiration_time()
41
+ self._is_skd_supported = await self._get_agent_skd_support()
42
+ return self._is_skd_supported
43
+
44
+
45
+ @retry
46
+ async def _get_agent_skd_support(self) -> bool:
47
+ try:
48
+ agent_info = await self._signals_api.v1_info_get()
49
+ if not agent_info or not agent_info.version:
50
+ return False
51
+ except ApiException:
52
+ return False
53
+ agent_major_version, agent_minor_version = self._parse_version(agent_info.version)
54
+ if not agent_major_version:
55
+ return False
56
+ if agent_major_version == MIN_MAJOR_VERSION:
57
+ return agent_minor_version >= MIN_MINOR_VERSION
58
+ return agent_major_version > MIN_MAJOR_VERSION
59
+
60
+ @staticmethod
61
+ def _parse_version(version_string):
62
+ if not version_string:
63
+ return None, None
64
+ match = re.match(VERSION_REGEXP, version_string)
65
+ if match:
66
+ return int(match.group(1)), int(match.group(2))
67
+ return None, None
@@ -18,6 +18,7 @@ from symphony.bdk.core.service.session.session_service import SessionService
18
18
  from symphony.bdk.core.service.signal.signal_service import SignalService, OboSignalService
19
19
  from symphony.bdk.core.service.stream.stream_service import StreamService, OboStreamService
20
20
  from symphony.bdk.core.service.user.user_service import UserService, OboUserService
21
+ from symphony.bdk.core.service.version.agent_version_service import AgentVersionService
21
22
  from symphony.bdk.gen.agent_api.attachments_api import AttachmentsApi
22
23
  from symphony.bdk.gen.agent_api.audit_trail_api import AuditTrailApi
23
24
  from symphony.bdk.gen.agent_api.datafeed_api import DatafeedApi
@@ -74,7 +75,8 @@ class ServiceFactory:
74
75
  AuditTrailApi(self._agent_client),
75
76
  PodSystemApi(self._pod_client),
76
77
  self._auth_session,
77
- self._config.retry
78
+ self._config.retry,
79
+ self._config.manifest
78
80
  )
79
81
 
80
82
  def get_message_service(self) -> MessageService:
@@ -202,6 +204,14 @@ class ServiceFactory:
202
204
  self._config.retry
203
205
  )
204
206
 
207
+ def get_agent_version_service(self) -> AgentVersionService:
208
+ """Returns a fully initialized AgentVersionService
209
+
210
+ :return: a new AgentVersionService instance
211
+ """
212
+ return AgentVersionService(SignalsApi(self._agent_client),
213
+ self._config.retry)
214
+
205
215
 
206
216
  class OboServiceFactory:
207
217
  """Factory responsible for creating BDK service instances for OBO-enabled endpoints only:
@@ -105,7 +105,8 @@ class SymphonyBdk:
105
105
  "You can however use services in OBO mode if app authentication is configured.")
106
106
 
107
107
  def _initialize_bot_services(self):
108
- self._bot_session = AuthSession(self._authenticator_factory.get_bot_authenticator())
108
+ bot_authenticator = self._authenticator_factory.get_bot_authenticator()
109
+ self._bot_session = AuthSession(bot_authenticator)
109
110
  self._service_factory = ServiceFactory(self._api_client_factory, self._bot_session, self._config)
110
111
  self._user_service = self._service_factory.get_user_service()
111
112
  self._message_service = self._service_factory.get_message_service()
@@ -123,6 +124,7 @@ class SymphonyBdk:
123
124
  self._datafeed_loop.subscribe(self._activity_registry)
124
125
  # initialises extension service and register decorated extensions
125
126
  self._extension_service = ExtensionService(self._api_client_factory, self._bot_session, self._config)
127
+ bot_authenticator.agent_version_service = self._service_factory.get_agent_version_service()
126
128
 
127
129
  @bot_service
128
130
  def bot_session(self) -> AuthSession:
@@ -3,7 +3,7 @@
3
3
 
4
4
  This document refers to Symphony API calls to send and receive messages and content. They need the on-premise Agent installed to perform decryption/encryption of content. - sessionToken and keyManagerToken can be obtained by calling the authenticationAPI on the symphony back end and the key manager respectively. Refer to the methods described in authenticatorAPI.yaml. - Actions are defined to be atomic, ie will succeed in their entirety or fail and have changed nothing. - If it returns a 40X status then it will have sent no message to any stream even if a request to some subset of the requested streams would have succeeded. - If this contract cannot be met for any reason then this is an error and the response code will be 50X. - MessageML is a markup language for messages. See reference here: https://rest-api.symphony.com/docs/messagemlv2 - **Real Time Events**: The following events are returned when reading from a real time messages and events stream (\"datafeed\"). These events will be returned for datafeeds created with the v5 endpoints. To know more about the endpoints, refer to Create Messages/Events Stream and Read Messages/Events Stream. Unless otherwise specified, all events were added in 1.46. # noqa: E501
5
5
 
6
- The version of the OpenAPI document: 22.9.1
6
+ The version of the OpenAPI document: 24.12.1
7
7
  Generated by: https://openapi-generator.tech
8
8
  """
9
9
 
@@ -49,13 +49,12 @@ class AttachmentsApi(object):
49
49
  'all': [
50
50
  'sid',
51
51
  'session_token',
52
- 'key_manager_token',
53
52
  'file',
53
+ 'key_manager_token',
54
54
  ],
55
55
  'required': [
56
56
  'sid',
57
57
  'session_token',
58
- 'key_manager_token',
59
58
  'file',
60
59
  ],
61
60
  'nullable': [
@@ -75,22 +74,22 @@ class AttachmentsApi(object):
75
74
  (str,),
76
75
  'session_token':
77
76
  (str,),
78
- 'key_manager_token':
79
- (str,),
80
77
  'file':
81
78
  (file_type,),
79
+ 'key_manager_token':
80
+ (str,),
82
81
  },
83
82
  'attribute_map': {
84
83
  'sid': 'sid',
85
84
  'session_token': 'sessionToken',
86
- 'key_manager_token': 'keyManagerToken',
87
85
  'file': 'file',
86
+ 'key_manager_token': 'keyManagerToken',
88
87
  },
89
88
  'location_map': {
90
89
  'sid': 'path',
91
90
  'session_token': 'header',
92
- 'key_manager_token': 'header',
93
91
  'file': 'form',
92
+ 'key_manager_token': 'header',
94
93
  },
95
94
  'collection_format_map': {
96
95
  }
@@ -127,7 +126,6 @@ class AttachmentsApi(object):
127
126
  'file_id',
128
127
  'message_id',
129
128
  'session_token',
130
- 'key_manager_token',
131
129
  ],
132
130
  'nullable': [
133
131
  ],
@@ -251,7 +249,6 @@ class AttachmentsApi(object):
251
249
  self,
252
250
  sid,
253
251
  session_token,
254
- key_manager_token,
255
252
  file,
256
253
  **kwargs
257
254
  ):
@@ -261,16 +258,16 @@ class AttachmentsApi(object):
261
258
  This method makes a synchronous HTTP request by default. To make an
262
259
  asynchronous HTTP request, please pass async_req=True
263
260
 
264
- >>> thread = agent_api.v1_stream_sid_attachment_create_post(sid, session_token, key_manager_token, file, async_req=True)
261
+ >>> thread = agent_api.v1_stream_sid_attachment_create_post(sid, session_token, file, async_req=True)
265
262
  >>> result = thread.get()
266
263
 
267
264
  Args:
268
265
  sid (str): Stream ID
269
266
  session_token (str): Session authentication token.
270
- key_manager_token (str): Key Manager authentication token.
271
267
  file (file_type): The attachment body.
272
268
 
273
269
  Keyword Args:
270
+ key_manager_token (str): Key Manager authentication token.. [optional]
274
271
  _return_http_data_only (bool): response data without head status
275
272
  code and headers. Default is True.
276
273
  _preload_content (bool): if False, the urllib3.HTTPResponse object
@@ -331,8 +328,6 @@ class AttachmentsApi(object):
331
328
  sid
332
329
  kwargs['session_token'] = \
333
330
  session_token
334
- kwargs['key_manager_token'] = \
335
- key_manager_token
336
331
  kwargs['file'] = \
337
332
  file
338
333
  return self.v1_stream_sid_attachment_create_post_endpoint.call_with_http_info(**kwargs)
@@ -343,7 +338,6 @@ class AttachmentsApi(object):
343
338
  file_id,
344
339
  message_id,
345
340
  session_token,
346
- key_manager_token,
347
341
  **kwargs
348
342
  ):
349
343
  """Download an attachment. # noqa: E501
@@ -352,7 +346,7 @@ class AttachmentsApi(object):
352
346
  This method makes a synchronous HTTP request by default. To make an
353
347
  asynchronous HTTP request, please pass async_req=True
354
348
 
355
- >>> thread = agent_api.v1_stream_sid_attachment_get(sid, file_id, message_id, session_token, key_manager_token, async_req=True)
349
+ >>> thread = agent_api.v1_stream_sid_attachment_get(sid, file_id, message_id, session_token, async_req=True)
356
350
  >>> result = thread.get()
357
351
 
358
352
  Args:
@@ -360,9 +354,9 @@ class AttachmentsApi(object):
360
354
  file_id (str): The attachment ID (Base64-encoded)
361
355
  message_id (str): The ID of the message containing the attachment
362
356
  session_token (str): Session authentication token.
363
- key_manager_token (str): Key Manager authentication token.
364
357
 
365
358
  Keyword Args:
359
+ key_manager_token (str): Key Manager authentication token.. [optional]
366
360
  _return_http_data_only (bool): response data without head status
367
361
  code and headers. Default is True.
368
362
  _preload_content (bool): if False, the urllib3.HTTPResponse object
@@ -427,8 +421,6 @@ class AttachmentsApi(object):
427
421
  message_id
428
422
  kwargs['session_token'] = \
429
423
  session_token
430
- kwargs['key_manager_token'] = \
431
- key_manager_token
432
424
  return self.v1_stream_sid_attachment_get_endpoint.call_with_http_info(**kwargs)
433
425
 
434
426
  def v3_stream_sid_attachment_create_post(
@@ -3,7 +3,7 @@
3
3
 
4
4
  This document refers to Symphony API calls to send and receive messages and content. They need the on-premise Agent installed to perform decryption/encryption of content. - sessionToken and keyManagerToken can be obtained by calling the authenticationAPI on the symphony back end and the key manager respectively. Refer to the methods described in authenticatorAPI.yaml. - Actions are defined to be atomic, ie will succeed in their entirety or fail and have changed nothing. - If it returns a 40X status then it will have sent no message to any stream even if a request to some subset of the requested streams would have succeeded. - If this contract cannot be met for any reason then this is an error and the response code will be 50X. - MessageML is a markup language for messages. See reference here: https://rest-api.symphony.com/docs/messagemlv2 - **Real Time Events**: The following events are returned when reading from a real time messages and events stream (\"datafeed\"). These events will be returned for datafeeds created with the v5 endpoints. To know more about the endpoints, refer to Create Messages/Events Stream and Read Messages/Events Stream. Unless otherwise specified, all events were added in 1.46. # noqa: E501
5
5
 
6
- The version of the OpenAPI document: 22.9.1
6
+ The version of the OpenAPI document: 24.12.1
7
7
  Generated by: https://openapi-generator.tech
8
8
  """
9
9
 
@@ -48,8 +48,8 @@ class AuditTrailApi(object):
48
48
  params_map={
49
49
  'all': [
50
50
  'session_token',
51
- 'key_manager_token',
52
51
  'start_timestamp',
52
+ 'key_manager_token',
53
53
  'end_timestamp',
54
54
  'before',
55
55
  'after',
@@ -59,7 +59,6 @@ class AuditTrailApi(object):
59
59
  ],
60
60
  'required': [
61
61
  'session_token',
62
- 'key_manager_token',
63
62
  'start_timestamp',
64
63
  ],
65
64
  'nullable': [
@@ -77,10 +76,10 @@ class AuditTrailApi(object):
77
76
  'openapi_types': {
78
77
  'session_token':
79
78
  (str,),
80
- 'key_manager_token':
81
- (str,),
82
79
  'start_timestamp':
83
80
  (int,),
81
+ 'key_manager_token':
82
+ (str,),
84
83
  'end_timestamp':
85
84
  (int,),
86
85
  'before':
@@ -96,8 +95,8 @@ class AuditTrailApi(object):
96
95
  },
97
96
  'attribute_map': {
98
97
  'session_token': 'sessionToken',
99
- 'key_manager_token': 'keyManagerToken',
100
98
  'start_timestamp': 'startTimestamp',
99
+ 'key_manager_token': 'keyManagerToken',
101
100
  'end_timestamp': 'endTimestamp',
102
101
  'before': 'before',
103
102
  'after': 'after',
@@ -107,8 +106,8 @@ class AuditTrailApi(object):
107
106
  },
108
107
  'location_map': {
109
108
  'session_token': 'header',
110
- 'key_manager_token': 'header',
111
109
  'start_timestamp': 'query',
110
+ 'key_manager_token': 'header',
112
111
  'end_timestamp': 'query',
113
112
  'before': 'query',
114
113
  'after': 'query',
@@ -131,7 +130,6 @@ class AuditTrailApi(object):
131
130
  def v1_audittrail_privilegeduser_get(
132
131
  self,
133
132
  session_token,
134
- key_manager_token,
135
133
  start_timestamp,
136
134
  **kwargs
137
135
  ):
@@ -141,15 +139,15 @@ class AuditTrailApi(object):
141
139
  This method makes a synchronous HTTP request by default. To make an
142
140
  asynchronous HTTP request, please pass async_req=True
143
141
 
144
- >>> thread = agent_api.v1_audittrail_privilegeduser_get(session_token, key_manager_token, start_timestamp, async_req=True)
142
+ >>> thread = agent_api.v1_audittrail_privilegeduser_get(session_token, start_timestamp, async_req=True)
145
143
  >>> result = thread.get()
146
144
 
147
145
  Args:
148
146
  session_token (str): Session authentication token.
149
- key_manager_token (str): Key Manager authentication token.
150
147
  start_timestamp (int): Start timestamp in unix timestamp in millseconds.
151
148
 
152
149
  Keyword Args:
150
+ key_manager_token (str): Key Manager authentication token.. [optional]
153
151
  end_timestamp (int): End timestamp in unix timestamp in millseconds. If not specified, it assumes to be current time.. [optional]
154
152
  before (str): Return results from an opaque “before” cursor value as presented via a response cursor.. [optional]
155
153
  after (str): Return results from an opaque “after” cursor value as presented via a response cursor.. [optional]
@@ -214,8 +212,6 @@ class AuditTrailApi(object):
214
212
  kwargs['_host_index'] = kwargs.get('_host_index')
215
213
  kwargs['session_token'] = \
216
214
  session_token
217
- kwargs['key_manager_token'] = \
218
- key_manager_token
219
215
  kwargs['start_timestamp'] = \
220
216
  start_timestamp
221
217
  return self.v1_audittrail_privilegeduser_get_endpoint.call_with_http_info(**kwargs)