getstream-ruby 2.1.0 → 3.0.0

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 (345) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -0
  3. data/lib/getstream_ruby/client.rb +12 -0
  4. data/lib/getstream_ruby/generated/chat_client.rb +1652 -0
  5. data/lib/getstream_ruby/generated/common_client.rb +171 -2
  6. data/lib/getstream_ruby/generated/feed.rb +13 -1
  7. data/lib/getstream_ruby/generated/feeds_client.rb +87 -6
  8. data/lib/getstream_ruby/generated/models/activity_feedback_event_payload.rb +1 -1
  9. data/lib/getstream_ruby/generated/models/activity_request.rb +7 -2
  10. data/lib/getstream_ruby/generated/models/activity_response.rb +28 -3
  11. data/lib/getstream_ruby/generated/models/activity_restored_event.rb +66 -0
  12. data/lib/getstream_ruby/generated/models/activity_selector_config.rb +1 -1
  13. data/lib/getstream_ruby/generated/models/add_activity_request.rb +12 -2
  14. data/lib/getstream_ruby/generated/models/add_comment_reaction_request.rb +5 -0
  15. data/lib/getstream_ruby/generated/models/add_comment_request.rb +5 -0
  16. data/lib/getstream_ruby/generated/models/add_reaction_request.rb +5 -0
  17. data/lib/getstream_ruby/generated/models/add_user_group_members_request.rb +36 -0
  18. data/lib/getstream_ruby/generated/models/add_user_group_members_response.rb +36 -0
  19. data/lib/getstream_ruby/generated/models/aggregated_activity_response.rb +10 -0
  20. data/lib/getstream_ruby/generated/models/api_error.rb +5 -5
  21. data/lib/getstream_ruby/generated/models/apn_config.rb +5 -5
  22. data/lib/getstream_ruby/generated/models/apns_payload.rb +56 -0
  23. data/lib/getstream_ruby/generated/models/app_response_fields.rb +14 -4
  24. data/lib/getstream_ruby/generated/models/async_export_error_event.rb +1 -1
  25. data/lib/getstream_ruby/generated/models/automod_details_response.rb +51 -0
  26. data/lib/getstream_ruby/generated/models/aws_rekognition_rule.rb +6 -1
  27. data/lib/getstream_ruby/generated/models/ban_action_request_payload.rb +61 -0
  28. data/lib/getstream_ruby/generated/models/ban_info_response.rb +56 -0
  29. data/lib/getstream_ruby/generated/models/block_action_request_payload.rb +31 -0
  30. data/lib/getstream_ruby/generated/models/block_list_config.rb +5 -0
  31. data/lib/getstream_ruby/generated/models/block_list_options.rb +1 -1
  32. data/lib/getstream_ruby/generated/models/block_list_response.rb +1 -1
  33. data/lib/getstream_ruby/generated/models/call_action_options.rb +61 -0
  34. data/lib/getstream_ruby/generated/models/call_custom_property_parameters.rb +36 -0
  35. data/lib/getstream_ruby/generated/models/call_dtmf_event.rb +66 -0
  36. data/lib/getstream_ruby/generated/models/call_reaction_event.rb +1 -1
  37. data/lib/getstream_ruby/generated/models/call_rule_action_sequence.rb +41 -0
  38. data/lib/getstream_ruby/generated/models/call_stats_report_ready_event.rb +11 -1
  39. data/lib/getstream_ruby/generated/models/call_type_response.rb +1 -1
  40. data/lib/getstream_ruby/generated/models/call_type_rule_parameters.rb +31 -0
  41. data/lib/getstream_ruby/generated/models/call_violation_count_parameters.rb +36 -0
  42. data/lib/getstream_ruby/generated/models/channel_batch_member_request.rb +36 -0
  43. data/lib/getstream_ruby/generated/models/channel_batch_update_request.rb +46 -0
  44. data/lib/getstream_ruby/generated/models/channel_batch_update_response.rb +36 -0
  45. data/lib/getstream_ruby/generated/models/channel_config.rb +5 -0
  46. data/lib/getstream_ruby/generated/models/channel_config_with_info.rb +5 -0
  47. data/lib/getstream_ruby/generated/models/channel_created_event.rb +59 -4
  48. data/lib/getstream_ruby/generated/models/channel_data_update.rb +61 -0
  49. data/lib/getstream_ruby/generated/models/channel_deleted_event.rb +47 -22
  50. data/lib/getstream_ruby/generated/models/channel_frozen_event.rb +24 -14
  51. data/lib/getstream_ruby/generated/models/channel_hidden_event.rb +51 -26
  52. data/lib/getstream_ruby/generated/models/channel_input_request.rb +4 -4
  53. data/lib/getstream_ruby/generated/models/channel_member_response.rb +1 -1
  54. data/lib/getstream_ruby/generated/models/channel_messages_response.rb +36 -0
  55. data/lib/getstream_ruby/generated/models/channel_muted_event.rb +29 -4
  56. data/lib/getstream_ruby/generated/models/channel_truncated_event.rb +61 -21
  57. data/lib/getstream_ruby/generated/models/channel_type_config.rb +5 -0
  58. data/lib/getstream_ruby/generated/models/channel_un_frozen_event.rb +24 -14
  59. data/lib/getstream_ruby/generated/models/channel_unmuted_event.rb +29 -4
  60. data/lib/getstream_ruby/generated/models/channel_updated_event.rb +49 -24
  61. data/lib/getstream_ruby/generated/models/channel_visible_event.rb +50 -15
  62. data/lib/getstream_ruby/generated/models/chat_activity_stats_response.rb +4 -4
  63. data/lib/getstream_ruby/generated/models/check_push_request.rb +2 -2
  64. data/lib/getstream_ruby/generated/models/check_s3_access_request.rb +31 -0
  65. data/lib/getstream_ruby/generated/models/check_s3_access_response.rb +41 -0
  66. data/lib/getstream_ruby/generated/models/check_sns_response.rb +1 -1
  67. data/lib/getstream_ruby/generated/models/check_sqs_response.rb +1 -1
  68. data/lib/getstream_ruby/generated/models/closed_caption_rule_parameters.rb +41 -0
  69. data/lib/getstream_ruby/generated/models/comment_response.rb +3 -3
  70. data/lib/getstream_ruby/generated/models/config_overrides_request.rb +96 -0
  71. data/lib/getstream_ruby/generated/models/config_response.rb +5 -0
  72. data/lib/getstream_ruby/generated/models/coordinates_response.rb +36 -0
  73. data/lib/getstream_ruby/generated/models/create_block_list_request.rb +1 -1
  74. data/lib/getstream_ruby/generated/models/create_call_type_request.rb +1 -1
  75. data/lib/getstream_ruby/generated/models/create_call_type_response.rb +1 -1
  76. data/lib/getstream_ruby/generated/models/create_channel_type_request.rb +9 -4
  77. data/lib/getstream_ruby/generated/models/create_channel_type_response.rb +5 -0
  78. data/lib/getstream_ruby/generated/models/create_feeds_batch_request.rb +6 -1
  79. data/lib/getstream_ruby/generated/models/create_import_request.rb +6 -1
  80. data/lib/getstream_ruby/generated/models/create_poll_option_request.rb +4 -4
  81. data/lib/getstream_ruby/generated/models/create_poll_request.rb +4 -4
  82. data/lib/getstream_ruby/generated/models/create_user_group_request.rb +51 -0
  83. data/lib/getstream_ruby/generated/models/create_user_group_response.rb +36 -0
  84. data/lib/getstream_ruby/generated/models/custom_action_request_payload.rb +36 -0
  85. data/lib/getstream_ruby/generated/models/custom_check_request.rb +1 -1
  86. data/lib/getstream_ruby/generated/models/custom_event.rb +46 -0
  87. data/lib/getstream_ruby/generated/models/daily_value.rb +36 -0
  88. data/lib/getstream_ruby/generated/models/delete_activity_reaction_request.rb +14 -0
  89. data/lib/getstream_ruby/generated/models/delete_activity_request.rb +1 -23
  90. data/lib/getstream_ruby/generated/models/delete_activity_request_payload.rb +46 -0
  91. data/lib/getstream_ruby/generated/models/delete_block_list_request.rb +14 -0
  92. data/lib/getstream_ruby/generated/models/delete_bookmark_folder_request.rb +36 -0
  93. data/lib/getstream_ruby/generated/models/delete_bookmark_request.rb +14 -0
  94. data/lib/getstream_ruby/generated/models/delete_call_type_request.rb +14 -0
  95. data/lib/getstream_ruby/generated/models/delete_channel_request.rb +14 -0
  96. data/lib/getstream_ruby/generated/models/delete_collections_request.rb +36 -0
  97. data/lib/getstream_ruby/generated/models/delete_command_request.rb +14 -0
  98. data/lib/getstream_ruby/generated/models/delete_comment_reaction_request.rb +14 -0
  99. data/lib/getstream_ruby/generated/models/delete_comment_request.rb +1 -23
  100. data/lib/getstream_ruby/generated/models/delete_comment_request_payload.rb +46 -0
  101. data/lib/getstream_ruby/generated/models/delete_custom_role_request.rb +14 -0
  102. data/lib/getstream_ruby/generated/models/delete_device_request.rb +14 -0
  103. data/lib/getstream_ruby/generated/models/delete_draft_request.rb +14 -0
  104. data/lib/getstream_ruby/generated/models/delete_external_storage_request.rb +14 -0
  105. data/lib/getstream_ruby/generated/models/delete_feed_group_request.rb +14 -0
  106. data/lib/getstream_ruby/generated/models/delete_feed_request.rb +14 -0
  107. data/lib/getstream_ruby/generated/models/delete_feed_view_request.rb +14 -0
  108. data/lib/getstream_ruby/generated/models/delete_import_v2_task_request.rb +14 -0
  109. data/lib/getstream_ruby/generated/models/delete_membership_level_request.rb +14 -0
  110. data/lib/getstream_ruby/generated/models/delete_message_request.rb +1 -23
  111. data/lib/getstream_ruby/generated/models/delete_message_request_payload.rb +46 -0
  112. data/lib/getstream_ruby/generated/models/delete_moderation_config_request.rb +14 -0
  113. data/lib/getstream_ruby/generated/models/delete_moderation_template_request.rb +31 -0
  114. data/lib/getstream_ruby/generated/models/delete_poll_option_request.rb +14 -0
  115. data/lib/getstream_ruby/generated/models/delete_poll_request.rb +14 -0
  116. data/lib/getstream_ruby/generated/models/delete_poll_vote_request.rb +14 -0
  117. data/lib/getstream_ruby/generated/models/delete_push_provider_request.rb +14 -0
  118. data/lib/getstream_ruby/generated/models/delete_reaction_request.rb +2 -24
  119. data/lib/getstream_ruby/generated/models/delete_reaction_request_payload.rb +46 -0
  120. data/lib/getstream_ruby/generated/models/delete_recording_request.rb +14 -0
  121. data/lib/getstream_ruby/generated/models/delete_reminder_request.rb +14 -0
  122. data/lib/getstream_ruby/generated/models/delete_segment_request.rb +14 -0
  123. data/lib/getstream_ruby/generated/models/delete_sip_inbound_routing_rule_request.rb +14 -0
  124. data/lib/getstream_ruby/generated/models/delete_sip_trunk_request.rb +14 -0
  125. data/lib/getstream_ruby/generated/models/delete_transcription_request.rb +14 -0
  126. data/lib/getstream_ruby/generated/models/delete_user_group_request.rb +14 -0
  127. data/lib/getstream_ruby/generated/models/delete_user_request_payload.rb +61 -0
  128. data/lib/getstream_ruby/generated/models/draft_payload_response.rb +12 -12
  129. data/lib/getstream_ruby/generated/models/enriched_collection_response.rb +1 -1
  130. data/lib/getstream_ruby/generated/models/event_notification_settings_request.rb +41 -0
  131. data/lib/getstream_ruby/generated/models/event_notification_settings_response.rb +41 -0
  132. data/lib/getstream_ruby/generated/models/fcm_payload.rb +31 -0
  133. data/lib/getstream_ruby/generated/models/feed_group_response.rb +1 -1
  134. data/lib/getstream_ruby/generated/models/feed_group_restored_event.rb +61 -0
  135. data/lib/getstream_ruby/generated/models/feed_member_response.rb +1 -1
  136. data/lib/getstream_ruby/generated/models/feed_own_capability.rb +1 -1
  137. data/lib/getstream_ruby/generated/models/feed_request.rb +1 -1
  138. data/lib/getstream_ruby/generated/models/feed_updated_event.rb +1 -1
  139. data/lib/getstream_ruby/generated/models/feeds_moderation_template_config_payload.rb +36 -0
  140. data/lib/getstream_ruby/generated/models/feeds_preferences.rb +6 -6
  141. data/lib/getstream_ruby/generated/models/feeds_preferences_response.rb +5 -0
  142. data/lib/getstream_ruby/generated/models/feeds_reaction_group_response.rb +41 -0
  143. data/lib/getstream_ruby/generated/models/file_delete_request.rb +14 -0
  144. data/lib/getstream_ruby/generated/models/firebase_config.rb +5 -5
  145. data/lib/getstream_ruby/generated/models/flag_details_response.rb +41 -0
  146. data/lib/getstream_ruby/generated/models/flag_feedback_response.rb +41 -0
  147. data/lib/getstream_ruby/generated/models/flag_message_details_response.rb +46 -0
  148. data/lib/getstream_ruby/generated/models/flag_updated_event.rb +12 -12
  149. data/lib/getstream_ruby/generated/models/follow_batch_request.rb +6 -1
  150. data/lib/getstream_ruby/generated/models/follow_request.rb +11 -1
  151. data/lib/getstream_ruby/generated/models/follow_response.rb +2 -2
  152. data/lib/getstream_ruby/generated/models/friend_reactions_options.rb +41 -0
  153. data/lib/getstream_ruby/generated/models/get_call_participant_session_metrics_response.rb +71 -0
  154. data/lib/getstream_ruby/generated/models/get_call_type_response.rb +1 -1
  155. data/lib/getstream_ruby/generated/models/get_channel_type_request.rb +14 -0
  156. data/lib/getstream_ruby/generated/models/get_channel_type_response.rb +5 -0
  157. data/lib/getstream_ruby/generated/models/get_comment_replies_response.rb +5 -0
  158. data/lib/getstream_ruby/generated/models/get_comments_response.rb +5 -0
  159. data/lib/getstream_ruby/generated/models/get_feeds_rate_limits_response.rb +4 -4
  160. data/lib/getstream_ruby/generated/models/get_or_create_feed_request.rb +5 -0
  161. data/lib/getstream_ruby/generated/models/get_push_templates_response.rb +1 -1
  162. data/lib/getstream_ruby/generated/models/get_rate_limits_response.rb +4 -4
  163. data/lib/getstream_ruby/generated/models/get_user_group_response.rb +36 -0
  164. data/lib/getstream_ruby/generated/models/hls_settings_request.rb +3 -3
  165. data/lib/getstream_ruby/generated/models/huawei_config.rb +4 -4
  166. data/lib/getstream_ruby/generated/models/image_size.rb +2 -2
  167. data/lib/getstream_ruby/generated/models/import_v2_task_settings.rb +5 -0
  168. data/lib/getstream_ruby/generated/models/individual_record_settings.rb +6 -1
  169. data/lib/getstream_ruby/generated/models/individual_recording_settings_request.rb +7 -2
  170. data/lib/getstream_ruby/generated/models/individual_recording_settings_response.rb +6 -1
  171. data/lib/getstream_ruby/generated/models/keyframe_rule_parameters.rb +41 -0
  172. data/lib/getstream_ruby/generated/models/label_response.rb +41 -0
  173. data/lib/getstream_ruby/generated/models/limit_info_response.rb +41 -0
  174. data/lib/getstream_ruby/generated/models/list_user_groups_response.rb +36 -0
  175. data/lib/getstream_ruby/generated/models/location_response.rb +41 -0
  176. data/lib/getstream_ruby/generated/models/mark_read_response.rb +1 -1
  177. data/lib/getstream_ruby/generated/models/mark_read_response_event.rb +81 -0
  178. data/lib/getstream_ruby/generated/models/mark_reviewed_request_payload.rb +41 -0
  179. data/lib/getstream_ruby/generated/models/max_streak_changed_event.rb +46 -0
  180. data/lib/getstream_ruby/generated/models/member_added_event.rb +51 -21
  181. data/lib/getstream_ruby/generated/models/member_removed_event.rb +55 -20
  182. data/lib/getstream_ruby/generated/models/member_updated_event.rb +51 -21
  183. data/lib/getstream_ruby/generated/models/message_action_response.rb +36 -0
  184. data/lib/getstream_ruby/generated/models/message_deleted_event.rb +57 -32
  185. data/lib/getstream_ruby/generated/models/message_flag_response.rb +3 -3
  186. data/lib/getstream_ruby/generated/models/message_flagged_event.rb +75 -20
  187. data/lib/getstream_ruby/generated/models/message_history_entry_response.rb +4 -4
  188. data/lib/getstream_ruby/generated/models/message_new_event.rb +81 -26
  189. data/lib/getstream_ruby/generated/models/message_read_event.rb +42 -22
  190. data/lib/getstream_ruby/generated/models/message_request.rb +31 -16
  191. data/lib/getstream_ruby/generated/models/message_response.rb +16 -1
  192. data/lib/getstream_ruby/generated/models/message_unblocked_event.rb +28 -18
  193. data/lib/getstream_ruby/generated/models/message_undeleted_event.rb +50 -30
  194. data/lib/getstream_ruby/generated/models/message_updated_event.rb +56 -26
  195. data/lib/getstream_ruby/generated/models/message_with_channel_response.rb +16 -1
  196. data/lib/getstream_ruby/generated/models/metric_stats.rb +36 -0
  197. data/lib/getstream_ruby/generated/models/metric_time_series.rb +31 -0
  198. data/lib/getstream_ruby/generated/models/moderation_action_config_response.rb +56 -0
  199. data/lib/getstream_ruby/generated/models/moderation_dashboard_preferences.rb +10 -0
  200. data/lib/getstream_ruby/generated/models/moderation_flag_response.rb +1 -1
  201. data/lib/getstream_ruby/generated/models/moderation_flagged_event.rb +21 -16
  202. data/lib/getstream_ruby/generated/models/moderation_payload_request.rb +46 -0
  203. data/lib/getstream_ruby/generated/models/moderation_payload_response.rb +46 -0
  204. data/lib/getstream_ruby/generated/models/moderation_rule_info.rb +46 -0
  205. data/lib/getstream_ruby/generated/models/moderation_rule_v2_response.rb +11 -6
  206. data/lib/getstream_ruby/generated/models/moderation_rules_triggered_event.rb +81 -0
  207. data/lib/getstream_ruby/generated/models/moderation_v2_response.rb +5 -0
  208. data/lib/getstream_ruby/generated/models/mute_channel_response.rb +1 -1
  209. data/lib/getstream_ruby/generated/models/mute_response.rb +2 -2
  210. data/lib/getstream_ruby/generated/models/notification_mark_unread_event.rb +69 -44
  211. data/lib/getstream_ruby/generated/models/notification_parent_activity.rb +51 -0
  212. data/lib/getstream_ruby/generated/models/notification_settings_request.rb +56 -0
  213. data/lib/getstream_ruby/generated/models/notification_settings_response.rb +56 -0
  214. data/lib/getstream_ruby/generated/models/notification_status_response.rb +3 -3
  215. data/lib/getstream_ruby/generated/models/notification_target.rb +6 -1
  216. data/lib/getstream_ruby/generated/models/notification_thread_message_new_event.rb +126 -0
  217. data/lib/getstream_ruby/generated/models/parsed_predefined_filter_response.rb +41 -0
  218. data/lib/getstream_ruby/generated/models/pending_message_event.rb +4 -4
  219. data/lib/getstream_ruby/generated/models/permission.rb +1 -1
  220. data/lib/getstream_ruby/generated/models/pin_activity_request.rb +5 -0
  221. data/lib/getstream_ruby/generated/models/published_track_metrics.rb +61 -0
  222. data/lib/getstream_ruby/generated/models/push_preference_input.rb +3 -3
  223. data/lib/getstream_ruby/generated/models/push_provider_request.rb +146 -0
  224. data/lib/getstream_ruby/generated/models/push_template_response.rb +56 -0
  225. data/lib/getstream_ruby/generated/models/query_activities_request.rb +10 -0
  226. data/lib/getstream_ruby/generated/models/query_bookmarks_request.rb +5 -0
  227. data/lib/getstream_ruby/generated/models/query_comments_request.rb +17 -2
  228. data/lib/getstream_ruby/generated/models/query_feed_moderation_template.rb +1 -1
  229. data/lib/getstream_ruby/generated/models/query_feeds_request.rb +5 -0
  230. data/lib/getstream_ruby/generated/models/query_moderation_flags_request.rb +1 -1
  231. data/lib/getstream_ruby/generated/models/query_moderation_rules_response.rb +15 -0
  232. data/lib/getstream_ruby/generated/models/query_pinned_activities_request.rb +56 -0
  233. data/lib/getstream_ruby/generated/models/query_pinned_activities_response.rb +46 -0
  234. data/lib/getstream_ruby/generated/models/query_review_queue_response.rb +1 -1
  235. data/lib/getstream_ruby/generated/models/query_segment_targets_request.rb +8 -8
  236. data/lib/getstream_ruby/generated/models/query_team_usage_stats_request.rb +51 -0
  237. data/lib/getstream_ruby/generated/models/query_team_usage_stats_response.rb +41 -0
  238. data/lib/getstream_ruby/generated/models/query_users_payload.rb +1 -1
  239. data/lib/getstream_ruby/generated/models/ranking_config.rb +1 -1
  240. data/lib/getstream_ruby/generated/models/raw_recording_settings_request.rb +1 -1
  241. data/lib/getstream_ruby/generated/models/reaction.rb +65 -20
  242. data/lib/getstream_ruby/generated/models/reaction_deleted_event.rb +54 -19
  243. data/lib/getstream_ruby/generated/models/reaction_new_event.rb +54 -19
  244. data/lib/getstream_ruby/generated/models/reaction_updated_event.rb +60 -25
  245. data/lib/getstream_ruby/generated/models/read_collections_response.rb +11 -1
  246. data/lib/getstream_ruby/generated/models/record_settings_request.rb +3 -3
  247. data/lib/getstream_ruby/generated/models/reject_appeal_request_payload.rb +31 -0
  248. data/lib/getstream_ruby/generated/models/remove_user_group_members_request.rb +36 -0
  249. data/lib/getstream_ruby/generated/models/remove_user_group_members_response.rb +36 -0
  250. data/lib/getstream_ruby/generated/models/resolution_metrics_time_series.rb +36 -0
  251. data/lib/getstream_ruby/generated/models/resolve_sip_inbound_request.rb +1 -1
  252. data/lib/getstream_ruby/generated/models/restore_action_request_payload.rb +31 -0
  253. data/lib/getstream_ruby/generated/models/restore_activity_request.rb +36 -0
  254. data/lib/getstream_ruby/generated/models/restore_activity_response.rb +36 -0
  255. data/lib/getstream_ruby/generated/models/restore_feed_group_request.rb +14 -0
  256. data/lib/getstream_ruby/generated/models/restore_feed_group_response.rb +36 -0
  257. data/lib/getstream_ruby/generated/models/review_queue_item_response.rb +2 -2
  258. data/lib/getstream_ruby/generated/models/rtmp_broadcast_request.rb +1 -1
  259. data/lib/getstream_ruby/generated/models/rtmp_settings_request.rb +2 -2
  260. data/lib/getstream_ruby/generated/models/rule_builder_action.rb +6 -1
  261. data/lib/getstream_ruby/generated/models/rule_builder_condition.rb +25 -0
  262. data/lib/getstream_ruby/generated/models/rule_builder_rule.rb +11 -6
  263. data/lib/getstream_ruby/generated/models/search_result_message.rb +15 -0
  264. data/lib/getstream_ruby/generated/models/search_user_groups_response.rb +36 -0
  265. data/lib/getstream_ruby/generated/models/session_client.rb +51 -0
  266. data/lib/getstream_ruby/generated/models/session_warning_response.rb +41 -0
  267. data/lib/getstream_ruby/generated/models/sfu_location_response.rb +2 -2
  268. data/lib/getstream_ruby/generated/models/shadow_block_action_request_payload.rb +31 -0
  269. data/lib/getstream_ruby/generated/models/sip_challenge_request.rb +106 -0
  270. data/lib/getstream_ruby/generated/models/sip_inbound_credentials.rb +5 -0
  271. data/lib/getstream_ruby/generated/models/sort_param_request.rb +2 -2
  272. data/lib/getstream_ruby/generated/models/start_closed_captions_request.rb +1 -1
  273. data/lib/getstream_ruby/generated/models/start_transcription_request.rb +1 -1
  274. data/lib/getstream_ruby/generated/models/submit_action_request.rb +20 -15
  275. data/lib/getstream_ruby/generated/models/team_usage_stats.rb +111 -0
  276. data/lib/getstream_ruby/generated/models/thread_updated_event.rb +21 -16
  277. data/lib/getstream_ruby/generated/models/threaded_comment_response.rb +2 -2
  278. data/lib/getstream_ruby/generated/models/track_activity_metrics_event.rb +41 -0
  279. data/lib/getstream_ruby/generated/models/track_activity_metrics_event_result.rb +46 -0
  280. data/lib/getstream_ruby/generated/models/track_activity_metrics_request.rb +41 -0
  281. data/lib/getstream_ruby/generated/models/track_activity_metrics_response.rb +36 -0
  282. data/lib/getstream_ruby/generated/models/transcription_settings.rb +1 -1
  283. data/lib/getstream_ruby/generated/models/unban_action_request_payload.rb +36 -0
  284. data/lib/getstream_ruby/generated/models/unblock_action_request_payload.rb +31 -0
  285. data/lib/getstream_ruby/generated/models/undelete_message_request.rb +31 -0
  286. data/lib/getstream_ruby/generated/models/undelete_message_response.rb +36 -0
  287. data/lib/getstream_ruby/generated/models/unfollow_batch_request.rb +6 -1
  288. data/lib/getstream_ruby/generated/models/unfollow_request.rb +14 -0
  289. data/lib/getstream_ruby/generated/models/unmute_response.rb +3 -3
  290. data/lib/getstream_ruby/generated/models/unpin_activity_request.rb +14 -0
  291. data/lib/getstream_ruby/generated/models/update_activities_partial_batch_request.rb +31 -0
  292. data/lib/getstream_ruby/generated/models/update_activities_partial_batch_response.rb +36 -0
  293. data/lib/getstream_ruby/generated/models/update_activity_partial_change_request.rb +51 -0
  294. data/lib/getstream_ruby/generated/models/update_activity_partial_request.rb +17 -2
  295. data/lib/getstream_ruby/generated/models/update_activity_request.rb +21 -1
  296. data/lib/getstream_ruby/generated/models/update_app_request.rb +10 -0
  297. data/lib/getstream_ruby/generated/models/update_call_type_request.rb +1 -1
  298. data/lib/getstream_ruby/generated/models/update_call_type_response.rb +1 -1
  299. data/lib/getstream_ruby/generated/models/update_channel_type_request.rb +5 -0
  300. data/lib/getstream_ruby/generated/models/update_channel_type_response.rb +5 -0
  301. data/lib/getstream_ruby/generated/models/update_comment_request.rb +5 -0
  302. data/lib/getstream_ruby/generated/models/update_feed_members_request.rb +1 -1
  303. data/lib/getstream_ruby/generated/models/update_feed_request.rb +5 -0
  304. data/lib/getstream_ruby/generated/models/update_follow_request.rb +11 -1
  305. data/lib/getstream_ruby/generated/models/update_message_partial_request.rb +5 -0
  306. data/lib/getstream_ruby/generated/models/update_poll_option_request.rb +4 -4
  307. data/lib/getstream_ruby/generated/models/update_poll_request.rb +4 -4
  308. data/lib/getstream_ruby/generated/models/update_user_group_request.rb +41 -0
  309. data/lib/getstream_ruby/generated/models/update_user_group_response.rb +36 -0
  310. data/lib/getstream_ruby/generated/models/upsert_activities_request.rb +6 -1
  311. data/lib/getstream_ruby/generated/models/upsert_moderation_rule_request.rb +11 -6
  312. data/lib/getstream_ruby/generated/models/upsert_moderation_template_request.rb +1 -1
  313. data/lib/getstream_ruby/generated/models/upsert_moderation_template_response.rb +1 -1
  314. data/lib/getstream_ruby/generated/models/upsert_push_preferences_response.rb +2 -2
  315. data/lib/getstream_ruby/generated/models/upsert_push_provider_request.rb +1 -1
  316. data/lib/getstream_ruby/generated/models/upsert_push_template_request.rb +2 -2
  317. data/lib/getstream_ruby/generated/models/upsert_push_template_response.rb +1 -1
  318. data/lib/getstream_ruby/generated/models/user.rb +4 -49
  319. data/lib/getstream_ruby/generated/models/user_banned_event.rb +63 -33
  320. data/lib/getstream_ruby/generated/models/user_deactivated_event.rb +23 -13
  321. data/lib/getstream_ruby/generated/models/user_deleted_event.rb +36 -11
  322. data/lib/getstream_ruby/generated/models/user_flagged_event.rb +30 -15
  323. data/lib/getstream_ruby/generated/models/user_group.rb +71 -0
  324. data/lib/getstream_ruby/generated/models/user_group_created_event.rb +56 -0
  325. data/lib/getstream_ruby/generated/models/user_group_deleted_event.rb +56 -0
  326. data/lib/getstream_ruby/generated/models/user_group_member.rb +51 -0
  327. data/lib/getstream_ruby/generated/models/user_group_member_added_event.rb +61 -0
  328. data/lib/getstream_ruby/generated/models/user_group_member_removed_event.rb +61 -0
  329. data/lib/getstream_ruby/generated/models/user_group_response.rb +66 -0
  330. data/lib/getstream_ruby/generated/models/user_group_updated_event.rb +56 -0
  331. data/lib/getstream_ruby/generated/models/user_muted_event.rb +24 -14
  332. data/lib/getstream_ruby/generated/models/user_reactivated_event.rb +23 -8
  333. data/lib/getstream_ruby/generated/models/user_unbanned_event.rb +52 -22
  334. data/lib/getstream_ruby/generated/models/user_unmuted_event.rb +24 -14
  335. data/lib/getstream_ruby/generated/models/user_unread_reminder_event.rb +19 -9
  336. data/lib/getstream_ruby/generated/models/video_end_call_request_payload.rb +14 -0
  337. data/lib/getstream_ruby/generated/models/video_kick_user_request_payload.rb +14 -0
  338. data/lib/getstream_ruby/generated/models/video_reaction_response.rb +46 -0
  339. data/lib/getstream_ruby/generated/models/wh_event.rb +31 -0
  340. data/lib/getstream_ruby/generated/models/xiaomi_config.rb +4 -4
  341. data/lib/getstream_ruby/generated/moderation_client.rb +17 -0
  342. data/lib/getstream_ruby/generated/video_client.rb +1385 -0
  343. data/lib/getstream_ruby/generated/webhook.rb +737 -0
  344. data/lib/getstream_ruby/version.rb +1 -1
  345. metadata +154 -2
@@ -0,0 +1,737 @@
1
+ # Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT.
2
+
3
+ require 'openssl'
4
+ require 'json'
5
+ require_relative 'models/activity_added_event'
6
+ require_relative 'models/activity_deleted_event'
7
+ require_relative 'models/activity_feedback_event'
8
+ require_relative 'models/activity_mark_event'
9
+ require_relative 'models/activity_pinned_event'
10
+ require_relative 'models/activity_reaction_added_event'
11
+ require_relative 'models/activity_reaction_deleted_event'
12
+ require_relative 'models/activity_reaction_updated_event'
13
+ require_relative 'models/activity_removed_from_feed_event'
14
+ require_relative 'models/activity_restored_event'
15
+ require_relative 'models/activity_unpinned_event'
16
+ require_relative 'models/activity_updated_event'
17
+ require_relative 'models/appeal_accepted_event'
18
+ require_relative 'models/appeal_created_event'
19
+ require_relative 'models/appeal_rejected_event'
20
+ require_relative 'models/async_bulk_image_moderation_event'
21
+ require_relative 'models/async_export_channels_event'
22
+ require_relative 'models/async_export_error_event'
23
+ require_relative 'models/async_export_moderation_logs_event'
24
+ require_relative 'models/async_export_users_event'
25
+ require_relative 'models/blocked_user_event'
26
+ require_relative 'models/bookmark_added_event'
27
+ require_relative 'models/bookmark_deleted_event'
28
+ require_relative 'models/bookmark_folder_deleted_event'
29
+ require_relative 'models/bookmark_folder_updated_event'
30
+ require_relative 'models/bookmark_updated_event'
31
+ require_relative 'models/call_accepted_event'
32
+ require_relative 'models/call_closed_captions_failed_event'
33
+ require_relative 'models/call_closed_captions_started_event'
34
+ require_relative 'models/call_closed_captions_stopped_event'
35
+ require_relative 'models/call_created_event'
36
+ require_relative 'models/call_dtmf_event'
37
+ require_relative 'models/call_deleted_event'
38
+ require_relative 'models/call_ended_event'
39
+ require_relative 'models/call_frame_recording_failed_event'
40
+ require_relative 'models/call_frame_recording_frame_ready_event'
41
+ require_relative 'models/call_frame_recording_started_event'
42
+ require_relative 'models/call_frame_recording_stopped_event'
43
+ require_relative 'models/call_hls_broadcasting_failed_event'
44
+ require_relative 'models/call_hls_broadcasting_started_event'
45
+ require_relative 'models/call_hls_broadcasting_stopped_event'
46
+ require_relative 'models/call_live_started_event'
47
+ require_relative 'models/call_member_added_event'
48
+ require_relative 'models/call_member_removed_event'
49
+ require_relative 'models/call_member_updated_event'
50
+ require_relative 'models/call_member_updated_permission_event'
51
+ require_relative 'models/call_missed_event'
52
+ require_relative 'models/call_moderation_blur_event'
53
+ require_relative 'models/call_moderation_warning_event'
54
+ require_relative 'models/call_notification_event'
55
+ require_relative 'models/call_reaction_event'
56
+ require_relative 'models/call_recording_failed_event'
57
+ require_relative 'models/call_recording_ready_event'
58
+ require_relative 'models/call_recording_started_event'
59
+ require_relative 'models/call_recording_stopped_event'
60
+ require_relative 'models/call_rejected_event'
61
+ require_relative 'models/call_ring_event'
62
+ require_relative 'models/call_rtmp_broadcast_failed_event'
63
+ require_relative 'models/call_rtmp_broadcast_started_event'
64
+ require_relative 'models/call_rtmp_broadcast_stopped_event'
65
+ require_relative 'models/call_session_ended_event'
66
+ require_relative 'models/call_session_participant_counts_updated_event'
67
+ require_relative 'models/call_session_participant_joined_event'
68
+ require_relative 'models/call_session_participant_left_event'
69
+ require_relative 'models/call_session_started_event'
70
+ require_relative 'models/call_stats_report_ready_event'
71
+ require_relative 'models/call_transcription_failed_event'
72
+ require_relative 'models/call_transcription_ready_event'
73
+ require_relative 'models/call_transcription_started_event'
74
+ require_relative 'models/call_transcription_stopped_event'
75
+ require_relative 'models/call_updated_event'
76
+ require_relative 'models/call_user_feedback_submitted_event'
77
+ require_relative 'models/call_user_muted_event'
78
+ require_relative 'models/campaign_completed_event'
79
+ require_relative 'models/campaign_started_event'
80
+ require_relative 'models/channel_batch_completed_event'
81
+ require_relative 'models/channel_batch_started_event'
82
+ require_relative 'models/channel_created_event'
83
+ require_relative 'models/channel_deleted_event'
84
+ require_relative 'models/channel_frozen_event'
85
+ require_relative 'models/channel_hidden_event'
86
+ require_relative 'models/channel_muted_event'
87
+ require_relative 'models/channel_truncated_event'
88
+ require_relative 'models/channel_un_frozen_event'
89
+ require_relative 'models/channel_unmuted_event'
90
+ require_relative 'models/channel_updated_event'
91
+ require_relative 'models/channel_visible_event'
92
+ require_relative 'models/closed_caption_event'
93
+ require_relative 'models/comment_added_event'
94
+ require_relative 'models/comment_deleted_event'
95
+ require_relative 'models/comment_reaction_added_event'
96
+ require_relative 'models/comment_reaction_deleted_event'
97
+ require_relative 'models/comment_reaction_updated_event'
98
+ require_relative 'models/comment_updated_event'
99
+ require_relative 'models/custom_event'
100
+ require_relative 'models/custom_video_event'
101
+ require_relative 'models/feed_created_event'
102
+ require_relative 'models/feed_deleted_event'
103
+ require_relative 'models/feed_group_changed_event'
104
+ require_relative 'models/feed_group_deleted_event'
105
+ require_relative 'models/feed_group_restored_event'
106
+ require_relative 'models/feed_member_added_event'
107
+ require_relative 'models/feed_member_removed_event'
108
+ require_relative 'models/feed_member_updated_event'
109
+ require_relative 'models/feed_updated_event'
110
+ require_relative 'models/flag_updated_event'
111
+ require_relative 'models/follow_created_event'
112
+ require_relative 'models/follow_deleted_event'
113
+ require_relative 'models/follow_updated_event'
114
+ require_relative 'models/ingress_error_event'
115
+ require_relative 'models/ingress_started_event'
116
+ require_relative 'models/ingress_stopped_event'
117
+ require_relative 'models/kicked_user_event'
118
+ require_relative 'models/max_streak_changed_event'
119
+ require_relative 'models/member_added_event'
120
+ require_relative 'models/member_removed_event'
121
+ require_relative 'models/member_updated_event'
122
+ require_relative 'models/message_deleted_event'
123
+ require_relative 'models/message_flagged_event'
124
+ require_relative 'models/message_new_event'
125
+ require_relative 'models/message_read_event'
126
+ require_relative 'models/message_unblocked_event'
127
+ require_relative 'models/message_undeleted_event'
128
+ require_relative 'models/message_updated_event'
129
+ require_relative 'models/moderation_check_completed_event'
130
+ require_relative 'models/moderation_custom_action_event'
131
+ require_relative 'models/moderation_flagged_event'
132
+ require_relative 'models/moderation_mark_reviewed_event'
133
+ require_relative 'models/moderation_rules_triggered_event'
134
+ require_relative 'models/notification_feed_updated_event'
135
+ require_relative 'models/notification_mark_unread_event'
136
+ require_relative 'models/notification_thread_message_new_event'
137
+ require_relative 'models/pending_message_event'
138
+ require_relative 'models/permission_request_event'
139
+ require_relative 'models/reaction_deleted_event'
140
+ require_relative 'models/reaction_new_event'
141
+ require_relative 'models/reaction_updated_event'
142
+ require_relative 'models/reminder_created_event'
143
+ require_relative 'models/reminder_deleted_event'
144
+ require_relative 'models/reminder_notification_event'
145
+ require_relative 'models/reminder_updated_event'
146
+ require_relative 'models/review_queue_item_new_event'
147
+ require_relative 'models/review_queue_item_updated_event'
148
+ require_relative 'models/stories_feed_updated_event'
149
+ require_relative 'models/thread_updated_event'
150
+ require_relative 'models/unblocked_user_event'
151
+ require_relative 'models/updated_call_permissions_event'
152
+ require_relative 'models/user_banned_event'
153
+ require_relative 'models/user_deactivated_event'
154
+ require_relative 'models/user_deleted_event'
155
+ require_relative 'models/user_flagged_event'
156
+ require_relative 'models/user_group_created_event'
157
+ require_relative 'models/user_group_deleted_event'
158
+ require_relative 'models/user_group_member_added_event'
159
+ require_relative 'models/user_group_member_removed_event'
160
+ require_relative 'models/user_group_updated_event'
161
+ require_relative 'models/user_messages_deleted_event'
162
+ require_relative 'models/user_muted_event'
163
+ require_relative 'models/user_reactivated_event'
164
+ require_relative 'models/user_unbanned_event'
165
+ require_relative 'models/user_unmuted_event'
166
+ require_relative 'models/user_unread_reminder_event'
167
+ require_relative 'models/user_updated_event'
168
+
169
+ module StreamChat
170
+ module Webhook
171
+ # Webhook event type constants
172
+ EVENT_TYPE_WILDCARD = '*'
173
+ EVENT_TYPE_APPEAL_ACCEPTED = 'appeal.accepted'
174
+ EVENT_TYPE_APPEAL_CREATED = 'appeal.created'
175
+ EVENT_TYPE_APPEAL_REJECTED = 'appeal.rejected'
176
+ EVENT_TYPE_CALL_ACCEPTED = 'call.accepted'
177
+ EVENT_TYPE_CALL_BLOCKED_USER = 'call.blocked_user'
178
+ EVENT_TYPE_CALL_CLOSED_CAPTION = 'call.closed_caption'
179
+ EVENT_TYPE_CALL_CLOSED_CAPTIONS_FAILED = 'call.closed_captions_failed'
180
+ EVENT_TYPE_CALL_CLOSED_CAPTIONS_STARTED = 'call.closed_captions_started'
181
+ EVENT_TYPE_CALL_CLOSED_CAPTIONS_STOPPED = 'call.closed_captions_stopped'
182
+ EVENT_TYPE_CALL_CREATED = 'call.created'
183
+ EVENT_TYPE_CALL_DELETED = 'call.deleted'
184
+ EVENT_TYPE_CALL_DTMF = 'call.dtmf'
185
+ EVENT_TYPE_CALL_ENDED = 'call.ended'
186
+ EVENT_TYPE_CALL_FRAME_RECORDING_FAILED = 'call.frame_recording_failed'
187
+ EVENT_TYPE_CALL_FRAME_RECORDING_READY = 'call.frame_recording_ready'
188
+ EVENT_TYPE_CALL_FRAME_RECORDING_STARTED = 'call.frame_recording_started'
189
+ EVENT_TYPE_CALL_FRAME_RECORDING_STOPPED = 'call.frame_recording_stopped'
190
+ EVENT_TYPE_CALL_HLS_BROADCASTING_FAILED = 'call.hls_broadcasting_failed'
191
+ EVENT_TYPE_CALL_HLS_BROADCASTING_STARTED = 'call.hls_broadcasting_started'
192
+ EVENT_TYPE_CALL_HLS_BROADCASTING_STOPPED = 'call.hls_broadcasting_stopped'
193
+ EVENT_TYPE_CALL_KICKED_USER = 'call.kicked_user'
194
+ EVENT_TYPE_CALL_LIVE_STARTED = 'call.live_started'
195
+ EVENT_TYPE_CALL_MEMBER_ADDED = 'call.member_added'
196
+ EVENT_TYPE_CALL_MEMBER_REMOVED = 'call.member_removed'
197
+ EVENT_TYPE_CALL_MEMBER_UPDATED = 'call.member_updated'
198
+ EVENT_TYPE_CALL_MEMBER_UPDATED_PERMISSION = 'call.member_updated_permission'
199
+ EVENT_TYPE_CALL_MISSED = 'call.missed'
200
+ EVENT_TYPE_CALL_MODERATION_BLUR = 'call.moderation_blur'
201
+ EVENT_TYPE_CALL_MODERATION_WARNING = 'call.moderation_warning'
202
+ EVENT_TYPE_CALL_NOTIFICATION = 'call.notification'
203
+ EVENT_TYPE_CALL_PERMISSION_REQUEST = 'call.permission_request'
204
+ EVENT_TYPE_CALL_PERMISSIONS_UPDATED = 'call.permissions_updated'
205
+ EVENT_TYPE_CALL_REACTION_NEW = 'call.reaction_new'
206
+ EVENT_TYPE_CALL_RECORDING_FAILED = 'call.recording_failed'
207
+ EVENT_TYPE_CALL_RECORDING_READY = 'call.recording_ready'
208
+ EVENT_TYPE_CALL_RECORDING_STARTED = 'call.recording_started'
209
+ EVENT_TYPE_CALL_RECORDING_STOPPED = 'call.recording_stopped'
210
+ EVENT_TYPE_CALL_REJECTED = 'call.rejected'
211
+ EVENT_TYPE_CALL_RING = 'call.ring'
212
+ EVENT_TYPE_CALL_RTMP_BROADCAST_FAILED = 'call.rtmp_broadcast_failed'
213
+ EVENT_TYPE_CALL_RTMP_BROADCAST_STARTED = 'call.rtmp_broadcast_started'
214
+ EVENT_TYPE_CALL_RTMP_BROADCAST_STOPPED = 'call.rtmp_broadcast_stopped'
215
+ EVENT_TYPE_CALL_SESSION_ENDED = 'call.session_ended'
216
+ EVENT_TYPE_CALL_SESSION_PARTICIPANT_COUNT_UPDATED = 'call.session_participant_count_updated'
217
+ EVENT_TYPE_CALL_SESSION_PARTICIPANT_JOINED = 'call.session_participant_joined'
218
+ EVENT_TYPE_CALL_SESSION_PARTICIPANT_LEFT = 'call.session_participant_left'
219
+ EVENT_TYPE_CALL_SESSION_STARTED = 'call.session_started'
220
+ EVENT_TYPE_CALL_STATS_REPORT_READY = 'call.stats_report_ready'
221
+ EVENT_TYPE_CALL_TRANSCRIPTION_FAILED = 'call.transcription_failed'
222
+ EVENT_TYPE_CALL_TRANSCRIPTION_READY = 'call.transcription_ready'
223
+ EVENT_TYPE_CALL_TRANSCRIPTION_STARTED = 'call.transcription_started'
224
+ EVENT_TYPE_CALL_TRANSCRIPTION_STOPPED = 'call.transcription_stopped'
225
+ EVENT_TYPE_CALL_UNBLOCKED_USER = 'call.unblocked_user'
226
+ EVENT_TYPE_CALL_UPDATED = 'call.updated'
227
+ EVENT_TYPE_CALL_USER_FEEDBACK_SUBMITTED = 'call.user_feedback_submitted'
228
+ EVENT_TYPE_CALL_USER_MUTED = 'call.user_muted'
229
+ EVENT_TYPE_CAMPAIGN_COMPLETED = 'campaign.completed'
230
+ EVENT_TYPE_CAMPAIGN_STARTED = 'campaign.started'
231
+ EVENT_TYPE_CHANNEL_CREATED = 'channel.created'
232
+ EVENT_TYPE_CHANNEL_DELETED = 'channel.deleted'
233
+ EVENT_TYPE_CHANNEL_FROZEN = 'channel.frozen'
234
+ EVENT_TYPE_CHANNEL_HIDDEN = 'channel.hidden'
235
+ EVENT_TYPE_CHANNEL_MAX_STREAK_CHANGED = 'channel.max_streak_changed'
236
+ EVENT_TYPE_CHANNEL_MUTED = 'channel.muted'
237
+ EVENT_TYPE_CHANNEL_TRUNCATED = 'channel.truncated'
238
+ EVENT_TYPE_CHANNEL_UNFROZEN = 'channel.unfrozen'
239
+ EVENT_TYPE_CHANNEL_UNMUTED = 'channel.unmuted'
240
+ EVENT_TYPE_CHANNEL_UPDATED = 'channel.updated'
241
+ EVENT_TYPE_CHANNEL_VISIBLE = 'channel.visible'
242
+ EVENT_TYPE_CHANNEL_BATCH_UPDATE_COMPLETED = 'channel_batch_update.completed'
243
+ EVENT_TYPE_CHANNEL_BATCH_UPDATE_STARTED = 'channel_batch_update.started'
244
+ EVENT_TYPE_CUSTOM = 'custom'
245
+ EVENT_TYPE_EXPORT_BULK_IMAGE_MODERATION_ERROR = 'export.bulk_image_moderation.error'
246
+ EVENT_TYPE_EXPORT_BULK_IMAGE_MODERATION_SUCCESS = 'export.bulk_image_moderation.success'
247
+ EVENT_TYPE_EXPORT_CHANNELS_ERROR = 'export.channels.error'
248
+ EVENT_TYPE_EXPORT_CHANNELS_SUCCESS = 'export.channels.success'
249
+ EVENT_TYPE_EXPORT_MODERATION_LOGS_ERROR = 'export.moderation_logs.error'
250
+ EVENT_TYPE_EXPORT_MODERATION_LOGS_SUCCESS = 'export.moderation_logs.success'
251
+ EVENT_TYPE_EXPORT_USERS_ERROR = 'export.users.error'
252
+ EVENT_TYPE_EXPORT_USERS_SUCCESS = 'export.users.success'
253
+ EVENT_TYPE_FEEDS_ACTIVITY_ADDED = 'feeds.activity.added'
254
+ EVENT_TYPE_FEEDS_ACTIVITY_DELETED = 'feeds.activity.deleted'
255
+ EVENT_TYPE_FEEDS_ACTIVITY_FEEDBACK = 'feeds.activity.feedback'
256
+ EVENT_TYPE_FEEDS_ACTIVITY_MARKED = 'feeds.activity.marked'
257
+ EVENT_TYPE_FEEDS_ACTIVITY_PINNED = 'feeds.activity.pinned'
258
+ EVENT_TYPE_FEEDS_ACTIVITY_REACTION_ADDED = 'feeds.activity.reaction.added'
259
+ EVENT_TYPE_FEEDS_ACTIVITY_REACTION_DELETED = 'feeds.activity.reaction.deleted'
260
+ EVENT_TYPE_FEEDS_ACTIVITY_REACTION_UPDATED = 'feeds.activity.reaction.updated'
261
+ EVENT_TYPE_FEEDS_ACTIVITY_REMOVED_FROM_FEED = 'feeds.activity.removed_from_feed'
262
+ EVENT_TYPE_FEEDS_ACTIVITY_RESTORED = 'feeds.activity.restored'
263
+ EVENT_TYPE_FEEDS_ACTIVITY_UNPINNED = 'feeds.activity.unpinned'
264
+ EVENT_TYPE_FEEDS_ACTIVITY_UPDATED = 'feeds.activity.updated'
265
+ EVENT_TYPE_FEEDS_BOOKMARK_ADDED = 'feeds.bookmark.added'
266
+ EVENT_TYPE_FEEDS_BOOKMARK_DELETED = 'feeds.bookmark.deleted'
267
+ EVENT_TYPE_FEEDS_BOOKMARK_UPDATED = 'feeds.bookmark.updated'
268
+ EVENT_TYPE_FEEDS_BOOKMARK_FOLDER_DELETED = 'feeds.bookmark_folder.deleted'
269
+ EVENT_TYPE_FEEDS_BOOKMARK_FOLDER_UPDATED = 'feeds.bookmark_folder.updated'
270
+ EVENT_TYPE_FEEDS_COMMENT_ADDED = 'feeds.comment.added'
271
+ EVENT_TYPE_FEEDS_COMMENT_DELETED = 'feeds.comment.deleted'
272
+ EVENT_TYPE_FEEDS_COMMENT_REACTION_ADDED = 'feeds.comment.reaction.added'
273
+ EVENT_TYPE_FEEDS_COMMENT_REACTION_DELETED = 'feeds.comment.reaction.deleted'
274
+ EVENT_TYPE_FEEDS_COMMENT_REACTION_UPDATED = 'feeds.comment.reaction.updated'
275
+ EVENT_TYPE_FEEDS_COMMENT_UPDATED = 'feeds.comment.updated'
276
+ EVENT_TYPE_FEEDS_FEED_CREATED = 'feeds.feed.created'
277
+ EVENT_TYPE_FEEDS_FEED_DELETED = 'feeds.feed.deleted'
278
+ EVENT_TYPE_FEEDS_FEED_UPDATED = 'feeds.feed.updated'
279
+ EVENT_TYPE_FEEDS_FEED_GROUP_CHANGED = 'feeds.feed_group.changed'
280
+ EVENT_TYPE_FEEDS_FEED_GROUP_DELETED = 'feeds.feed_group.deleted'
281
+ EVENT_TYPE_FEEDS_FEED_GROUP_RESTORED = 'feeds.feed_group.restored'
282
+ EVENT_TYPE_FEEDS_FEED_MEMBER_ADDED = 'feeds.feed_member.added'
283
+ EVENT_TYPE_FEEDS_FEED_MEMBER_REMOVED = 'feeds.feed_member.removed'
284
+ EVENT_TYPE_FEEDS_FEED_MEMBER_UPDATED = 'feeds.feed_member.updated'
285
+ EVENT_TYPE_FEEDS_FOLLOW_CREATED = 'feeds.follow.created'
286
+ EVENT_TYPE_FEEDS_FOLLOW_DELETED = 'feeds.follow.deleted'
287
+ EVENT_TYPE_FEEDS_FOLLOW_UPDATED = 'feeds.follow.updated'
288
+ EVENT_TYPE_FEEDS_NOTIFICATION_FEED_UPDATED = 'feeds.notification_feed.updated'
289
+ EVENT_TYPE_FEEDS_STORIES_FEED_UPDATED = 'feeds.stories_feed.updated'
290
+ EVENT_TYPE_FLAG_UPDATED = 'flag.updated'
291
+ EVENT_TYPE_INGRESS_ERROR = 'ingress.error'
292
+ EVENT_TYPE_INGRESS_STARTED = 'ingress.started'
293
+ EVENT_TYPE_INGRESS_STOPPED = 'ingress.stopped'
294
+ EVENT_TYPE_MEMBER_ADDED = 'member.added'
295
+ EVENT_TYPE_MEMBER_REMOVED = 'member.removed'
296
+ EVENT_TYPE_MEMBER_UPDATED = 'member.updated'
297
+ EVENT_TYPE_MESSAGE_DELETED = 'message.deleted'
298
+ EVENT_TYPE_MESSAGE_FLAGGED = 'message.flagged'
299
+ EVENT_TYPE_MESSAGE_NEW = 'message.new'
300
+ EVENT_TYPE_MESSAGE_PENDING = 'message.pending'
301
+ EVENT_TYPE_MESSAGE_READ = 'message.read'
302
+ EVENT_TYPE_MESSAGE_UNBLOCKED = 'message.unblocked'
303
+ EVENT_TYPE_MESSAGE_UNDELETED = 'message.undeleted'
304
+ EVENT_TYPE_MESSAGE_UPDATED = 'message.updated'
305
+ EVENT_TYPE_MODERATION_CUSTOM_ACTION = 'moderation.custom_action'
306
+ EVENT_TYPE_MODERATION_FLAGGED = 'moderation.flagged'
307
+ EVENT_TYPE_MODERATION_MARK_REVIEWED = 'moderation.mark_reviewed'
308
+ EVENT_TYPE_MODERATION_CHECK_COMPLETED = 'moderation_check.completed'
309
+ EVENT_TYPE_MODERATION_RULE_TRIGGERED = 'moderation_rule.triggered'
310
+ EVENT_TYPE_NOTIFICATION_MARK_UNREAD = 'notification.mark_unread'
311
+ EVENT_TYPE_NOTIFICATION_REMINDER_DUE = 'notification.reminder_due'
312
+ EVENT_TYPE_NOTIFICATION_THREAD_MESSAGE_NEW = 'notification.thread_message_new'
313
+ EVENT_TYPE_REACTION_DELETED = 'reaction.deleted'
314
+ EVENT_TYPE_REACTION_NEW = 'reaction.new'
315
+ EVENT_TYPE_REACTION_UPDATED = 'reaction.updated'
316
+ EVENT_TYPE_REMINDER_CREATED = 'reminder.created'
317
+ EVENT_TYPE_REMINDER_DELETED = 'reminder.deleted'
318
+ EVENT_TYPE_REMINDER_UPDATED = 'reminder.updated'
319
+ EVENT_TYPE_REVIEW_QUEUE_ITEM_NEW = 'review_queue_item.new'
320
+ EVENT_TYPE_REVIEW_QUEUE_ITEM_UPDATED = 'review_queue_item.updated'
321
+ EVENT_TYPE_THREAD_UPDATED = 'thread.updated'
322
+ EVENT_TYPE_USER_BANNED = 'user.banned'
323
+ EVENT_TYPE_USER_DEACTIVATED = 'user.deactivated'
324
+ EVENT_TYPE_USER_DELETED = 'user.deleted'
325
+ EVENT_TYPE_USER_FLAGGED = 'user.flagged'
326
+ EVENT_TYPE_USER_MESSAGES_DELETED = 'user.messages.deleted'
327
+ EVENT_TYPE_USER_MUTED = 'user.muted'
328
+ EVENT_TYPE_USER_REACTIVATED = 'user.reactivated'
329
+ EVENT_TYPE_USER_UNBANNED = 'user.unbanned'
330
+ EVENT_TYPE_USER_UNMUTED = 'user.unmuted'
331
+ EVENT_TYPE_USER_UNREAD_MESSAGE_REMINDER = 'user.unread_message_reminder'
332
+ EVENT_TYPE_USER_UPDATED = 'user.updated'
333
+ EVENT_TYPE_USER_GROUP_CREATED = 'user_group.created'
334
+ EVENT_TYPE_USER_GROUP_DELETED = 'user_group.deleted'
335
+ EVENT_TYPE_USER_GROUP_MEMBER_ADDED = 'user_group.member_added'
336
+ EVENT_TYPE_USER_GROUP_MEMBER_REMOVED = 'user_group.member_removed'
337
+ EVENT_TYPE_USER_GROUP_UPDATED = 'user_group.updated'
338
+
339
+ # Extract the event type from a raw webhook payload.
340
+ #
341
+ # @param raw_event [String, Hash] The raw webhook payload
342
+ # @return [String, nil] The event type string (e.g., "message.new")
343
+ def self.get_event_type(raw_event)
344
+ data = parse_to_hash(raw_event)
345
+ data&.fetch('type', nil)
346
+ end
347
+
348
+ # Deserialize a raw webhook payload into a typed event object.
349
+ #
350
+ # @param raw_event [String, Hash] The raw webhook payload
351
+ # @return [Object] A typed event object corresponding to the event type
352
+ # @raise [ArgumentError] if the event type is unknown or deserialization fails
353
+ def self.parse_webhook_event(raw_event)
354
+ data = parse_to_hash(raw_event)
355
+ raise ArgumentError, 'Invalid webhook payload' unless data
356
+
357
+ event_type = data['type']
358
+ raise ArgumentError, "Webhook payload missing 'type' field" unless event_type
359
+
360
+ event_class = event_class_for_type(event_type)
361
+ raise ArgumentError, "Unknown webhook event type: #{event_type}" unless event_class
362
+
363
+ event_class.new(data)
364
+ rescue JSON::ParserError => e
365
+ raise ArgumentError, "Invalid JSON in webhook payload: #{e.message}"
366
+ rescue StandardError => e
367
+ raise ArgumentError, "Failed to deserialize webhook event: #{e.message}"
368
+ end
369
+
370
+ private_class_method def self.parse_to_hash(raw_event)
371
+ case raw_event
372
+ when Hash
373
+ raw_event
374
+ when String
375
+ JSON.parse(raw_event)
376
+ else
377
+ nil
378
+ end
379
+ end
380
+
381
+ private_class_method def self.event_class_for_type(event_type)
382
+ case event_type
383
+ when '*'
384
+ StreamChat::CustomEvent
385
+ when 'appeal.accepted'
386
+ StreamChat::AppealAcceptedEvent
387
+ when 'appeal.created'
388
+ StreamChat::AppealCreatedEvent
389
+ when 'appeal.rejected'
390
+ StreamChat::AppealRejectedEvent
391
+ when 'call.accepted'
392
+ StreamChat::CallAcceptedEvent
393
+ when 'call.blocked_user'
394
+ StreamChat::BlockedUserEvent
395
+ when 'call.closed_caption'
396
+ StreamChat::ClosedCaptionEvent
397
+ when 'call.closed_captions_failed'
398
+ StreamChat::CallClosedCaptionsFailedEvent
399
+ when 'call.closed_captions_started'
400
+ StreamChat::CallClosedCaptionsStartedEvent
401
+ when 'call.closed_captions_stopped'
402
+ StreamChat::CallClosedCaptionsStoppedEvent
403
+ when 'call.created'
404
+ StreamChat::CallCreatedEvent
405
+ when 'call.deleted'
406
+ StreamChat::CallDeletedEvent
407
+ when 'call.dtmf'
408
+ StreamChat::CallDTMFEvent
409
+ when 'call.ended'
410
+ StreamChat::CallEndedEvent
411
+ when 'call.frame_recording_failed'
412
+ StreamChat::CallFrameRecordingFailedEvent
413
+ when 'call.frame_recording_ready'
414
+ StreamChat::CallFrameRecordingFrameReadyEvent
415
+ when 'call.frame_recording_started'
416
+ StreamChat::CallFrameRecordingStartedEvent
417
+ when 'call.frame_recording_stopped'
418
+ StreamChat::CallFrameRecordingStoppedEvent
419
+ when 'call.hls_broadcasting_failed'
420
+ StreamChat::CallHLSBroadcastingFailedEvent
421
+ when 'call.hls_broadcasting_started'
422
+ StreamChat::CallHLSBroadcastingStartedEvent
423
+ when 'call.hls_broadcasting_stopped'
424
+ StreamChat::CallHLSBroadcastingStoppedEvent
425
+ when 'call.kicked_user'
426
+ StreamChat::KickedUserEvent
427
+ when 'call.live_started'
428
+ StreamChat::CallLiveStartedEvent
429
+ when 'call.member_added'
430
+ StreamChat::CallMemberAddedEvent
431
+ when 'call.member_removed'
432
+ StreamChat::CallMemberRemovedEvent
433
+ when 'call.member_updated'
434
+ StreamChat::CallMemberUpdatedEvent
435
+ when 'call.member_updated_permission'
436
+ StreamChat::CallMemberUpdatedPermissionEvent
437
+ when 'call.missed'
438
+ StreamChat::CallMissedEvent
439
+ when 'call.moderation_blur'
440
+ StreamChat::CallModerationBlurEvent
441
+ when 'call.moderation_warning'
442
+ StreamChat::CallModerationWarningEvent
443
+ when 'call.notification'
444
+ StreamChat::CallNotificationEvent
445
+ when 'call.permission_request'
446
+ StreamChat::PermissionRequestEvent
447
+ when 'call.permissions_updated'
448
+ StreamChat::UpdatedCallPermissionsEvent
449
+ when 'call.reaction_new'
450
+ StreamChat::CallReactionEvent
451
+ when 'call.recording_failed'
452
+ StreamChat::CallRecordingFailedEvent
453
+ when 'call.recording_ready'
454
+ StreamChat::CallRecordingReadyEvent
455
+ when 'call.recording_started'
456
+ StreamChat::CallRecordingStartedEvent
457
+ when 'call.recording_stopped'
458
+ StreamChat::CallRecordingStoppedEvent
459
+ when 'call.rejected'
460
+ StreamChat::CallRejectedEvent
461
+ when 'call.ring'
462
+ StreamChat::CallRingEvent
463
+ when 'call.rtmp_broadcast_failed'
464
+ StreamChat::CallRtmpBroadcastFailedEvent
465
+ when 'call.rtmp_broadcast_started'
466
+ StreamChat::CallRtmpBroadcastStartedEvent
467
+ when 'call.rtmp_broadcast_stopped'
468
+ StreamChat::CallRtmpBroadcastStoppedEvent
469
+ when 'call.session_ended'
470
+ StreamChat::CallSessionEndedEvent
471
+ when 'call.session_participant_count_updated'
472
+ StreamChat::CallSessionParticipantCountsUpdatedEvent
473
+ when 'call.session_participant_joined'
474
+ StreamChat::CallSessionParticipantJoinedEvent
475
+ when 'call.session_participant_left'
476
+ StreamChat::CallSessionParticipantLeftEvent
477
+ when 'call.session_started'
478
+ StreamChat::CallSessionStartedEvent
479
+ when 'call.stats_report_ready'
480
+ StreamChat::CallStatsReportReadyEvent
481
+ when 'call.transcription_failed'
482
+ StreamChat::CallTranscriptionFailedEvent
483
+ when 'call.transcription_ready'
484
+ StreamChat::CallTranscriptionReadyEvent
485
+ when 'call.transcription_started'
486
+ StreamChat::CallTranscriptionStartedEvent
487
+ when 'call.transcription_stopped'
488
+ StreamChat::CallTranscriptionStoppedEvent
489
+ when 'call.unblocked_user'
490
+ StreamChat::UnblockedUserEvent
491
+ when 'call.updated'
492
+ StreamChat::CallUpdatedEvent
493
+ when 'call.user_feedback_submitted'
494
+ StreamChat::CallUserFeedbackSubmittedEvent
495
+ when 'call.user_muted'
496
+ StreamChat::CallUserMutedEvent
497
+ when 'campaign.completed'
498
+ StreamChat::CampaignCompletedEvent
499
+ when 'campaign.started'
500
+ StreamChat::CampaignStartedEvent
501
+ when 'channel.created'
502
+ StreamChat::ChannelCreatedEvent
503
+ when 'channel.deleted'
504
+ StreamChat::ChannelDeletedEvent
505
+ when 'channel.frozen'
506
+ StreamChat::ChannelFrozenEvent
507
+ when 'channel.hidden'
508
+ StreamChat::ChannelHiddenEvent
509
+ when 'channel.max_streak_changed'
510
+ StreamChat::MaxStreakChangedEvent
511
+ when 'channel.muted'
512
+ StreamChat::ChannelMutedEvent
513
+ when 'channel.truncated'
514
+ StreamChat::ChannelTruncatedEvent
515
+ when 'channel.unfrozen'
516
+ StreamChat::ChannelUnFrozenEvent
517
+ when 'channel.unmuted'
518
+ StreamChat::ChannelUnmutedEvent
519
+ when 'channel.updated'
520
+ StreamChat::ChannelUpdatedEvent
521
+ when 'channel.visible'
522
+ StreamChat::ChannelVisibleEvent
523
+ when 'channel_batch_update.completed'
524
+ StreamChat::ChannelBatchCompletedEvent
525
+ when 'channel_batch_update.started'
526
+ StreamChat::ChannelBatchStartedEvent
527
+ when 'custom'
528
+ StreamChat::CustomVideoEvent
529
+ when 'export.bulk_image_moderation.error'
530
+ StreamChat::AsyncExportErrorEvent
531
+ when 'export.bulk_image_moderation.success'
532
+ StreamChat::AsyncBulkImageModerationEvent
533
+ when 'export.channels.error'
534
+ StreamChat::AsyncExportErrorEvent
535
+ when 'export.channels.success'
536
+ StreamChat::AsyncExportChannelsEvent
537
+ when 'export.moderation_logs.error'
538
+ StreamChat::AsyncExportErrorEvent
539
+ when 'export.moderation_logs.success'
540
+ StreamChat::AsyncExportModerationLogsEvent
541
+ when 'export.users.error'
542
+ StreamChat::AsyncExportErrorEvent
543
+ when 'export.users.success'
544
+ StreamChat::AsyncExportUsersEvent
545
+ when 'feeds.activity.added'
546
+ StreamChat::ActivityAddedEvent
547
+ when 'feeds.activity.deleted'
548
+ StreamChat::ActivityDeletedEvent
549
+ when 'feeds.activity.feedback'
550
+ StreamChat::ActivityFeedbackEvent
551
+ when 'feeds.activity.marked'
552
+ StreamChat::ActivityMarkEvent
553
+ when 'feeds.activity.pinned'
554
+ StreamChat::ActivityPinnedEvent
555
+ when 'feeds.activity.reaction.added'
556
+ StreamChat::ActivityReactionAddedEvent
557
+ when 'feeds.activity.reaction.deleted'
558
+ StreamChat::ActivityReactionDeletedEvent
559
+ when 'feeds.activity.reaction.updated'
560
+ StreamChat::ActivityReactionUpdatedEvent
561
+ when 'feeds.activity.removed_from_feed'
562
+ StreamChat::ActivityRemovedFromFeedEvent
563
+ when 'feeds.activity.restored'
564
+ StreamChat::ActivityRestoredEvent
565
+ when 'feeds.activity.unpinned'
566
+ StreamChat::ActivityUnpinnedEvent
567
+ when 'feeds.activity.updated'
568
+ StreamChat::ActivityUpdatedEvent
569
+ when 'feeds.bookmark.added'
570
+ StreamChat::BookmarkAddedEvent
571
+ when 'feeds.bookmark.deleted'
572
+ StreamChat::BookmarkDeletedEvent
573
+ when 'feeds.bookmark.updated'
574
+ StreamChat::BookmarkUpdatedEvent
575
+ when 'feeds.bookmark_folder.deleted'
576
+ StreamChat::BookmarkFolderDeletedEvent
577
+ when 'feeds.bookmark_folder.updated'
578
+ StreamChat::BookmarkFolderUpdatedEvent
579
+ when 'feeds.comment.added'
580
+ StreamChat::CommentAddedEvent
581
+ when 'feeds.comment.deleted'
582
+ StreamChat::CommentDeletedEvent
583
+ when 'feeds.comment.reaction.added'
584
+ StreamChat::CommentReactionAddedEvent
585
+ when 'feeds.comment.reaction.deleted'
586
+ StreamChat::CommentReactionDeletedEvent
587
+ when 'feeds.comment.reaction.updated'
588
+ StreamChat::CommentReactionUpdatedEvent
589
+ when 'feeds.comment.updated'
590
+ StreamChat::CommentUpdatedEvent
591
+ when 'feeds.feed.created'
592
+ StreamChat::FeedCreatedEvent
593
+ when 'feeds.feed.deleted'
594
+ StreamChat::FeedDeletedEvent
595
+ when 'feeds.feed.updated'
596
+ StreamChat::FeedUpdatedEvent
597
+ when 'feeds.feed_group.changed'
598
+ StreamChat::FeedGroupChangedEvent
599
+ when 'feeds.feed_group.deleted'
600
+ StreamChat::FeedGroupDeletedEvent
601
+ when 'feeds.feed_group.restored'
602
+ StreamChat::FeedGroupRestoredEvent
603
+ when 'feeds.feed_member.added'
604
+ StreamChat::FeedMemberAddedEvent
605
+ when 'feeds.feed_member.removed'
606
+ StreamChat::FeedMemberRemovedEvent
607
+ when 'feeds.feed_member.updated'
608
+ StreamChat::FeedMemberUpdatedEvent
609
+ when 'feeds.follow.created'
610
+ StreamChat::FollowCreatedEvent
611
+ when 'feeds.follow.deleted'
612
+ StreamChat::FollowDeletedEvent
613
+ when 'feeds.follow.updated'
614
+ StreamChat::FollowUpdatedEvent
615
+ when 'feeds.notification_feed.updated'
616
+ StreamChat::NotificationFeedUpdatedEvent
617
+ when 'feeds.stories_feed.updated'
618
+ StreamChat::StoriesFeedUpdatedEvent
619
+ when 'flag.updated'
620
+ StreamChat::FlagUpdatedEvent
621
+ when 'ingress.error'
622
+ StreamChat::IngressErrorEvent
623
+ when 'ingress.started'
624
+ StreamChat::IngressStartedEvent
625
+ when 'ingress.stopped'
626
+ StreamChat::IngressStoppedEvent
627
+ when 'member.added'
628
+ StreamChat::MemberAddedEvent
629
+ when 'member.removed'
630
+ StreamChat::MemberRemovedEvent
631
+ when 'member.updated'
632
+ StreamChat::MemberUpdatedEvent
633
+ when 'message.deleted'
634
+ StreamChat::MessageDeletedEvent
635
+ when 'message.flagged'
636
+ StreamChat::MessageFlaggedEvent
637
+ when 'message.new'
638
+ StreamChat::MessageNewEvent
639
+ when 'message.pending'
640
+ StreamChat::PendingMessageEvent
641
+ when 'message.read'
642
+ StreamChat::MessageReadEvent
643
+ when 'message.unblocked'
644
+ StreamChat::MessageUnblockedEvent
645
+ when 'message.undeleted'
646
+ StreamChat::MessageUndeletedEvent
647
+ when 'message.updated'
648
+ StreamChat::MessageUpdatedEvent
649
+ when 'moderation.custom_action'
650
+ StreamChat::ModerationCustomActionEvent
651
+ when 'moderation.flagged'
652
+ StreamChat::ModerationFlaggedEvent
653
+ when 'moderation.mark_reviewed'
654
+ StreamChat::ModerationMarkReviewedEvent
655
+ when 'moderation_check.completed'
656
+ StreamChat::ModerationCheckCompletedEvent
657
+ when 'moderation_rule.triggered'
658
+ StreamChat::ModerationRulesTriggeredEvent
659
+ when 'notification.mark_unread'
660
+ StreamChat::NotificationMarkUnreadEvent
661
+ when 'notification.reminder_due'
662
+ StreamChat::ReminderNotificationEvent
663
+ when 'notification.thread_message_new'
664
+ StreamChat::NotificationThreadMessageNewEvent
665
+ when 'reaction.deleted'
666
+ StreamChat::ReactionDeletedEvent
667
+ when 'reaction.new'
668
+ StreamChat::ReactionNewEvent
669
+ when 'reaction.updated'
670
+ StreamChat::ReactionUpdatedEvent
671
+ when 'reminder.created'
672
+ StreamChat::ReminderCreatedEvent
673
+ when 'reminder.deleted'
674
+ StreamChat::ReminderDeletedEvent
675
+ when 'reminder.updated'
676
+ StreamChat::ReminderUpdatedEvent
677
+ when 'review_queue_item.new'
678
+ StreamChat::ReviewQueueItemNewEvent
679
+ when 'review_queue_item.updated'
680
+ StreamChat::ReviewQueueItemUpdatedEvent
681
+ when 'thread.updated'
682
+ StreamChat::ThreadUpdatedEvent
683
+ when 'user.banned'
684
+ StreamChat::UserBannedEvent
685
+ when 'user.deactivated'
686
+ StreamChat::UserDeactivatedEvent
687
+ when 'user.deleted'
688
+ StreamChat::UserDeletedEvent
689
+ when 'user.flagged'
690
+ StreamChat::UserFlaggedEvent
691
+ when 'user.messages.deleted'
692
+ StreamChat::UserMessagesDeletedEvent
693
+ when 'user.muted'
694
+ StreamChat::UserMutedEvent
695
+ when 'user.reactivated'
696
+ StreamChat::UserReactivatedEvent
697
+ when 'user.unbanned'
698
+ StreamChat::UserUnbannedEvent
699
+ when 'user.unmuted'
700
+ StreamChat::UserUnmutedEvent
701
+ when 'user.unread_message_reminder'
702
+ StreamChat::UserUnreadReminderEvent
703
+ when 'user.updated'
704
+ StreamChat::UserUpdatedEvent
705
+ when 'user_group.created'
706
+ StreamChat::UserGroupCreatedEvent
707
+ when 'user_group.deleted'
708
+ StreamChat::UserGroupDeletedEvent
709
+ when 'user_group.member_added'
710
+ StreamChat::UserGroupMemberAddedEvent
711
+ when 'user_group.member_removed'
712
+ StreamChat::UserGroupMemberRemovedEvent
713
+ when 'user_group.updated'
714
+ StreamChat::UserGroupUpdatedEvent
715
+ else
716
+ nil
717
+ end
718
+ end
719
+
720
+ public
721
+
722
+ # Verify the HMAC-SHA256 signature of a webhook payload.
723
+ #
724
+ # @param body [String] The raw request body
725
+ # @param signature [String] The signature from the X-Signature header
726
+ # @param secret [String] Your webhook secret (found in the Stream Dashboard)
727
+ # @return [Boolean] true if the signature is valid, false otherwise
728
+ def self.verify_signature(body, signature, secret)
729
+ return false if signature.nil? || signature.bytesize != 64
730
+
731
+ expected = OpenSSL::HMAC.hexdigest('SHA256', secret, body)
732
+ OpenSSL.fixed_length_secure_compare(signature, expected)
733
+ rescue ArgumentError
734
+ false
735
+ end
736
+ end
737
+ end