getstream-ruby 2.1.0 → 3.0.0.beta.1

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 (279) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -0
  3. data/lib/getstream_ruby/generated/common_client.rb +169 -0
  4. data/lib/getstream_ruby/generated/feed.rb +10 -0
  5. data/lib/getstream_ruby/generated/feeds_client.rb +58 -3
  6. data/lib/getstream_ruby/generated/models/activity_feedback_event_payload.rb +1 -1
  7. data/lib/getstream_ruby/generated/models/activity_request.rb +7 -2
  8. data/lib/getstream_ruby/generated/models/activity_response.rb +13 -3
  9. data/lib/getstream_ruby/generated/models/activity_restored_event.rb +66 -0
  10. data/lib/getstream_ruby/generated/models/activity_selector_config.rb +1 -1
  11. data/lib/getstream_ruby/generated/models/add_activity_request.rb +7 -2
  12. data/lib/getstream_ruby/generated/models/add_comment_reaction_request.rb +5 -0
  13. data/lib/getstream_ruby/generated/models/add_comment_request.rb +5 -0
  14. data/lib/getstream_ruby/generated/models/add_reaction_request.rb +5 -0
  15. data/lib/getstream_ruby/generated/models/add_user_group_members_request.rb +36 -0
  16. data/lib/getstream_ruby/generated/models/add_user_group_members_response.rb +36 -0
  17. data/lib/getstream_ruby/generated/models/api_error.rb +5 -5
  18. data/lib/getstream_ruby/generated/models/apn_config.rb +5 -5
  19. data/lib/getstream_ruby/generated/models/apns_payload.rb +56 -0
  20. data/lib/getstream_ruby/generated/models/app_response_fields.rb +9 -4
  21. data/lib/getstream_ruby/generated/models/async_export_error_event.rb +1 -1
  22. data/lib/getstream_ruby/generated/models/automod_details_response.rb +51 -0
  23. data/lib/getstream_ruby/generated/models/aws_rekognition_rule.rb +6 -1
  24. data/lib/getstream_ruby/generated/models/ban_action_request_payload.rb +61 -0
  25. data/lib/getstream_ruby/generated/models/ban_info_response.rb +56 -0
  26. data/lib/getstream_ruby/generated/models/block_action_request_payload.rb +31 -0
  27. data/lib/getstream_ruby/generated/models/block_list_options.rb +1 -1
  28. data/lib/getstream_ruby/generated/models/block_list_response.rb +1 -1
  29. data/lib/getstream_ruby/generated/models/call_action_options.rb +61 -0
  30. data/lib/getstream_ruby/generated/models/call_custom_property_parameters.rb +36 -0
  31. data/lib/getstream_ruby/generated/models/call_dtmf_event.rb +66 -0
  32. data/lib/getstream_ruby/generated/models/call_reaction_event.rb +1 -1
  33. data/lib/getstream_ruby/generated/models/call_rule_action_sequence.rb +41 -0
  34. data/lib/getstream_ruby/generated/models/call_stats_report_ready_event.rb +11 -1
  35. data/lib/getstream_ruby/generated/models/call_type_response.rb +1 -1
  36. data/lib/getstream_ruby/generated/models/call_type_rule_parameters.rb +31 -0
  37. data/lib/getstream_ruby/generated/models/call_violation_count_parameters.rb +36 -0
  38. data/lib/getstream_ruby/generated/models/channel_config.rb +5 -0
  39. data/lib/getstream_ruby/generated/models/channel_config_with_info.rb +5 -0
  40. data/lib/getstream_ruby/generated/models/channel_created_event.rb +59 -4
  41. data/lib/getstream_ruby/generated/models/channel_deleted_event.rb +47 -22
  42. data/lib/getstream_ruby/generated/models/channel_frozen_event.rb +24 -14
  43. data/lib/getstream_ruby/generated/models/channel_hidden_event.rb +51 -26
  44. data/lib/getstream_ruby/generated/models/channel_input_request.rb +4 -4
  45. data/lib/getstream_ruby/generated/models/channel_member_response.rb +1 -1
  46. data/lib/getstream_ruby/generated/models/channel_messages_response.rb +36 -0
  47. data/lib/getstream_ruby/generated/models/channel_muted_event.rb +29 -4
  48. data/lib/getstream_ruby/generated/models/channel_truncated_event.rb +61 -21
  49. data/lib/getstream_ruby/generated/models/channel_type_config.rb +5 -0
  50. data/lib/getstream_ruby/generated/models/channel_un_frozen_event.rb +24 -14
  51. data/lib/getstream_ruby/generated/models/channel_unmuted_event.rb +29 -4
  52. data/lib/getstream_ruby/generated/models/channel_updated_event.rb +49 -24
  53. data/lib/getstream_ruby/generated/models/channel_visible_event.rb +50 -15
  54. data/lib/getstream_ruby/generated/models/chat_activity_stats_response.rb +4 -4
  55. data/lib/getstream_ruby/generated/models/check_push_request.rb +2 -2
  56. data/lib/getstream_ruby/generated/models/check_sns_response.rb +1 -1
  57. data/lib/getstream_ruby/generated/models/check_sqs_response.rb +1 -1
  58. data/lib/getstream_ruby/generated/models/closed_caption_rule_parameters.rb +41 -0
  59. data/lib/getstream_ruby/generated/models/comment_response.rb +3 -3
  60. data/lib/getstream_ruby/generated/models/config_overrides_request.rb +96 -0
  61. data/lib/getstream_ruby/generated/models/config_response.rb +5 -0
  62. data/lib/getstream_ruby/generated/models/coordinates_response.rb +36 -0
  63. data/lib/getstream_ruby/generated/models/create_block_list_request.rb +1 -1
  64. data/lib/getstream_ruby/generated/models/create_call_type_request.rb +1 -1
  65. data/lib/getstream_ruby/generated/models/create_call_type_response.rb +1 -1
  66. data/lib/getstream_ruby/generated/models/create_channel_type_request.rb +9 -4
  67. data/lib/getstream_ruby/generated/models/create_channel_type_response.rb +5 -0
  68. data/lib/getstream_ruby/generated/models/create_import_request.rb +6 -1
  69. data/lib/getstream_ruby/generated/models/create_poll_option_request.rb +4 -4
  70. data/lib/getstream_ruby/generated/models/create_poll_request.rb +4 -4
  71. data/lib/getstream_ruby/generated/models/create_user_group_request.rb +51 -0
  72. data/lib/getstream_ruby/generated/models/create_user_group_response.rb +36 -0
  73. data/lib/getstream_ruby/generated/models/custom_action_request_payload.rb +36 -0
  74. data/lib/getstream_ruby/generated/models/custom_check_request.rb +1 -1
  75. data/lib/getstream_ruby/generated/models/custom_event.rb +46 -0
  76. data/lib/getstream_ruby/generated/models/daily_value.rb +36 -0
  77. data/lib/getstream_ruby/generated/models/delete_activity_request_payload.rb +46 -0
  78. data/lib/getstream_ruby/generated/models/delete_comment_request_payload.rb +46 -0
  79. data/lib/getstream_ruby/generated/models/delete_message_request_payload.rb +46 -0
  80. data/lib/getstream_ruby/generated/models/delete_reaction_request_payload.rb +46 -0
  81. data/lib/getstream_ruby/generated/models/delete_user_request_payload.rb +61 -0
  82. data/lib/getstream_ruby/generated/models/draft_payload_response.rb +12 -12
  83. data/lib/getstream_ruby/generated/models/enriched_collection_response.rb +1 -1
  84. data/lib/getstream_ruby/generated/models/event_notification_settings_request.rb +41 -0
  85. data/lib/getstream_ruby/generated/models/event_notification_settings_response.rb +41 -0
  86. data/lib/getstream_ruby/generated/models/fcm_payload.rb +31 -0
  87. data/lib/getstream_ruby/generated/models/feed_group_response.rb +1 -1
  88. data/lib/getstream_ruby/generated/models/feed_group_restored_event.rb +61 -0
  89. data/lib/getstream_ruby/generated/models/feed_member_response.rb +1 -1
  90. data/lib/getstream_ruby/generated/models/feed_request.rb +1 -1
  91. data/lib/getstream_ruby/generated/models/feeds_moderation_template_config_payload.rb +36 -0
  92. data/lib/getstream_ruby/generated/models/feeds_preferences.rb +6 -6
  93. data/lib/getstream_ruby/generated/models/feeds_preferences_response.rb +5 -0
  94. data/lib/getstream_ruby/generated/models/feeds_reaction_group_response.rb +41 -0
  95. data/lib/getstream_ruby/generated/models/firebase_config.rb +5 -5
  96. data/lib/getstream_ruby/generated/models/flag_details_response.rb +41 -0
  97. data/lib/getstream_ruby/generated/models/flag_feedback_response.rb +41 -0
  98. data/lib/getstream_ruby/generated/models/flag_message_details_response.rb +46 -0
  99. data/lib/getstream_ruby/generated/models/flag_updated_event.rb +12 -12
  100. data/lib/getstream_ruby/generated/models/follow_request.rb +6 -1
  101. data/lib/getstream_ruby/generated/models/follow_response.rb +2 -2
  102. data/lib/getstream_ruby/generated/models/friend_reactions_options.rb +41 -0
  103. data/lib/getstream_ruby/generated/models/get_call_participant_session_metrics_response.rb +71 -0
  104. data/lib/getstream_ruby/generated/models/get_call_type_response.rb +1 -1
  105. data/lib/getstream_ruby/generated/models/get_channel_type_response.rb +5 -0
  106. data/lib/getstream_ruby/generated/models/get_comment_replies_response.rb +5 -0
  107. data/lib/getstream_ruby/generated/models/get_comments_response.rb +5 -0
  108. data/lib/getstream_ruby/generated/models/get_feeds_rate_limits_response.rb +4 -4
  109. data/lib/getstream_ruby/generated/models/get_or_create_feed_request.rb +5 -0
  110. data/lib/getstream_ruby/generated/models/get_push_templates_response.rb +1 -1
  111. data/lib/getstream_ruby/generated/models/get_rate_limits_response.rb +4 -4
  112. data/lib/getstream_ruby/generated/models/get_user_group_response.rb +36 -0
  113. data/lib/getstream_ruby/generated/models/hls_settings_request.rb +3 -3
  114. data/lib/getstream_ruby/generated/models/huawei_config.rb +4 -4
  115. data/lib/getstream_ruby/generated/models/image_size.rb +2 -2
  116. data/lib/getstream_ruby/generated/models/import_v2_task_settings.rb +5 -0
  117. data/lib/getstream_ruby/generated/models/individual_record_settings.rb +6 -1
  118. data/lib/getstream_ruby/generated/models/individual_recording_settings_request.rb +7 -2
  119. data/lib/getstream_ruby/generated/models/individual_recording_settings_response.rb +6 -1
  120. data/lib/getstream_ruby/generated/models/keyframe_rule_parameters.rb +41 -0
  121. data/lib/getstream_ruby/generated/models/label_response.rb +41 -0
  122. data/lib/getstream_ruby/generated/models/limit_info_response.rb +41 -0
  123. data/lib/getstream_ruby/generated/models/list_user_groups_response.rb +36 -0
  124. data/lib/getstream_ruby/generated/models/location_response.rb +41 -0
  125. data/lib/getstream_ruby/generated/models/mark_read_response.rb +1 -1
  126. data/lib/getstream_ruby/generated/models/mark_read_response_event.rb +81 -0
  127. data/lib/getstream_ruby/generated/models/mark_reviewed_request_payload.rb +41 -0
  128. data/lib/getstream_ruby/generated/models/max_streak_changed_event.rb +46 -0
  129. data/lib/getstream_ruby/generated/models/member_added_event.rb +51 -21
  130. data/lib/getstream_ruby/generated/models/member_removed_event.rb +55 -20
  131. data/lib/getstream_ruby/generated/models/member_updated_event.rb +51 -21
  132. data/lib/getstream_ruby/generated/models/message_action_response.rb +36 -0
  133. data/lib/getstream_ruby/generated/models/message_deleted_event.rb +57 -32
  134. data/lib/getstream_ruby/generated/models/message_flag_response.rb +3 -3
  135. data/lib/getstream_ruby/generated/models/message_flagged_event.rb +75 -20
  136. data/lib/getstream_ruby/generated/models/message_history_entry_response.rb +4 -4
  137. data/lib/getstream_ruby/generated/models/message_new_event.rb +81 -26
  138. data/lib/getstream_ruby/generated/models/message_read_event.rb +42 -22
  139. data/lib/getstream_ruby/generated/models/message_request.rb +31 -16
  140. data/lib/getstream_ruby/generated/models/message_response.rb +16 -1
  141. data/lib/getstream_ruby/generated/models/message_unblocked_event.rb +28 -18
  142. data/lib/getstream_ruby/generated/models/message_undeleted_event.rb +50 -30
  143. data/lib/getstream_ruby/generated/models/message_updated_event.rb +56 -26
  144. data/lib/getstream_ruby/generated/models/message_with_channel_response.rb +16 -1
  145. data/lib/getstream_ruby/generated/models/metric_stats.rb +36 -0
  146. data/lib/getstream_ruby/generated/models/metric_time_series.rb +31 -0
  147. data/lib/getstream_ruby/generated/models/moderation_action_config_response.rb +56 -0
  148. data/lib/getstream_ruby/generated/models/moderation_dashboard_preferences.rb +10 -0
  149. data/lib/getstream_ruby/generated/models/moderation_flag_response.rb +1 -1
  150. data/lib/getstream_ruby/generated/models/moderation_flagged_event.rb +21 -16
  151. data/lib/getstream_ruby/generated/models/moderation_payload_request.rb +46 -0
  152. data/lib/getstream_ruby/generated/models/moderation_payload_response.rb +46 -0
  153. data/lib/getstream_ruby/generated/models/moderation_rule_info.rb +46 -0
  154. data/lib/getstream_ruby/generated/models/moderation_rule_v2_response.rb +11 -6
  155. data/lib/getstream_ruby/generated/models/moderation_rules_triggered_event.rb +81 -0
  156. data/lib/getstream_ruby/generated/models/moderation_v2_response.rb +5 -0
  157. data/lib/getstream_ruby/generated/models/mute_channel_response.rb +1 -1
  158. data/lib/getstream_ruby/generated/models/mute_response.rb +2 -2
  159. data/lib/getstream_ruby/generated/models/notification_mark_unread_event.rb +69 -44
  160. data/lib/getstream_ruby/generated/models/notification_parent_activity.rb +51 -0
  161. data/lib/getstream_ruby/generated/models/notification_settings_request.rb +56 -0
  162. data/lib/getstream_ruby/generated/models/notification_settings_response.rb +56 -0
  163. data/lib/getstream_ruby/generated/models/notification_target.rb +6 -1
  164. data/lib/getstream_ruby/generated/models/notification_thread_message_new_event.rb +126 -0
  165. data/lib/getstream_ruby/generated/models/parsed_predefined_filter_response.rb +41 -0
  166. data/lib/getstream_ruby/generated/models/pending_message_event.rb +4 -4
  167. data/lib/getstream_ruby/generated/models/permission.rb +1 -1
  168. data/lib/getstream_ruby/generated/models/published_track_metrics.rb +61 -0
  169. data/lib/getstream_ruby/generated/models/push_preference_input.rb +3 -3
  170. data/lib/getstream_ruby/generated/models/push_provider_request.rb +146 -0
  171. data/lib/getstream_ruby/generated/models/push_template_response.rb +56 -0
  172. data/lib/getstream_ruby/generated/models/query_activities_request.rb +5 -0
  173. data/lib/getstream_ruby/generated/models/query_comments_request.rb +1 -1
  174. data/lib/getstream_ruby/generated/models/query_feed_moderation_template.rb +1 -1
  175. data/lib/getstream_ruby/generated/models/query_moderation_flags_request.rb +1 -1
  176. data/lib/getstream_ruby/generated/models/query_moderation_rules_response.rb +10 -0
  177. data/lib/getstream_ruby/generated/models/query_pinned_activities_request.rb +51 -0
  178. data/lib/getstream_ruby/generated/models/query_pinned_activities_response.rb +46 -0
  179. data/lib/getstream_ruby/generated/models/query_review_queue_response.rb +1 -1
  180. data/lib/getstream_ruby/generated/models/query_segment_targets_request.rb +8 -8
  181. data/lib/getstream_ruby/generated/models/query_team_usage_stats_request.rb +51 -0
  182. data/lib/getstream_ruby/generated/models/query_team_usage_stats_response.rb +41 -0
  183. data/lib/getstream_ruby/generated/models/query_users_payload.rb +1 -1
  184. data/lib/getstream_ruby/generated/models/ranking_config.rb +1 -1
  185. data/lib/getstream_ruby/generated/models/raw_recording_settings_request.rb +1 -1
  186. data/lib/getstream_ruby/generated/models/reaction.rb +65 -20
  187. data/lib/getstream_ruby/generated/models/reaction_deleted_event.rb +54 -19
  188. data/lib/getstream_ruby/generated/models/reaction_new_event.rb +54 -19
  189. data/lib/getstream_ruby/generated/models/reaction_updated_event.rb +60 -25
  190. data/lib/getstream_ruby/generated/models/read_collections_response.rb +11 -1
  191. data/lib/getstream_ruby/generated/models/record_settings_request.rb +3 -3
  192. data/lib/getstream_ruby/generated/models/reject_appeal_request_payload.rb +31 -0
  193. data/lib/getstream_ruby/generated/models/remove_user_group_members_request.rb +36 -0
  194. data/lib/getstream_ruby/generated/models/remove_user_group_members_response.rb +36 -0
  195. data/lib/getstream_ruby/generated/models/resolution_metrics_time_series.rb +36 -0
  196. data/lib/getstream_ruby/generated/models/resolve_sip_inbound_request.rb +1 -1
  197. data/lib/getstream_ruby/generated/models/restore_action_request_payload.rb +31 -0
  198. data/lib/getstream_ruby/generated/models/restore_activity_request.rb +36 -0
  199. data/lib/getstream_ruby/generated/models/restore_activity_response.rb +36 -0
  200. data/lib/getstream_ruby/generated/models/restore_feed_group_request.rb +14 -0
  201. data/lib/getstream_ruby/generated/models/restore_feed_group_response.rb +36 -0
  202. data/lib/getstream_ruby/generated/models/review_queue_item_response.rb +2 -2
  203. data/lib/getstream_ruby/generated/models/rtmp_broadcast_request.rb +1 -1
  204. data/lib/getstream_ruby/generated/models/rtmp_settings_request.rb +2 -2
  205. data/lib/getstream_ruby/generated/models/rule_builder_action.rb +6 -1
  206. data/lib/getstream_ruby/generated/models/rule_builder_condition.rb +25 -0
  207. data/lib/getstream_ruby/generated/models/rule_builder_rule.rb +11 -6
  208. data/lib/getstream_ruby/generated/models/search_result_message.rb +15 -0
  209. data/lib/getstream_ruby/generated/models/search_user_groups_response.rb +36 -0
  210. data/lib/getstream_ruby/generated/models/session_client.rb +51 -0
  211. data/lib/getstream_ruby/generated/models/session_warning_response.rb +41 -0
  212. data/lib/getstream_ruby/generated/models/sfu_location_response.rb +2 -2
  213. data/lib/getstream_ruby/generated/models/shadow_block_action_request_payload.rb +31 -0
  214. data/lib/getstream_ruby/generated/models/sip_challenge_request.rb +106 -0
  215. data/lib/getstream_ruby/generated/models/sip_inbound_credentials.rb +5 -0
  216. data/lib/getstream_ruby/generated/models/sort_param_request.rb +2 -2
  217. data/lib/getstream_ruby/generated/models/start_closed_captions_request.rb +1 -1
  218. data/lib/getstream_ruby/generated/models/start_transcription_request.rb +1 -1
  219. data/lib/getstream_ruby/generated/models/submit_action_request.rb +20 -15
  220. data/lib/getstream_ruby/generated/models/team_usage_stats.rb +111 -0
  221. data/lib/getstream_ruby/generated/models/thread_updated_event.rb +21 -16
  222. data/lib/getstream_ruby/generated/models/threaded_comment_response.rb +2 -2
  223. data/lib/getstream_ruby/generated/models/transcription_settings.rb +1 -1
  224. data/lib/getstream_ruby/generated/models/unban_action_request_payload.rb +36 -0
  225. data/lib/getstream_ruby/generated/models/unblock_action_request_payload.rb +31 -0
  226. data/lib/getstream_ruby/generated/models/undelete_message_request.rb +31 -0
  227. data/lib/getstream_ruby/generated/models/undelete_message_response.rb +36 -0
  228. data/lib/getstream_ruby/generated/models/unmute_response.rb +3 -3
  229. data/lib/getstream_ruby/generated/models/update_activities_partial_batch_request.rb +31 -0
  230. data/lib/getstream_ruby/generated/models/update_activities_partial_batch_response.rb +36 -0
  231. data/lib/getstream_ruby/generated/models/update_activity_partial_change_request.rb +51 -0
  232. data/lib/getstream_ruby/generated/models/update_activity_partial_request.rb +12 -2
  233. data/lib/getstream_ruby/generated/models/update_activity_request.rb +16 -1
  234. data/lib/getstream_ruby/generated/models/update_app_request.rb +5 -0
  235. data/lib/getstream_ruby/generated/models/update_call_type_request.rb +1 -1
  236. data/lib/getstream_ruby/generated/models/update_call_type_response.rb +1 -1
  237. data/lib/getstream_ruby/generated/models/update_channel_type_request.rb +5 -0
  238. data/lib/getstream_ruby/generated/models/update_channel_type_response.rb +5 -0
  239. data/lib/getstream_ruby/generated/models/update_comment_request.rb +5 -0
  240. data/lib/getstream_ruby/generated/models/update_feed_members_request.rb +1 -1
  241. data/lib/getstream_ruby/generated/models/update_follow_request.rb +6 -1
  242. data/lib/getstream_ruby/generated/models/update_message_partial_request.rb +5 -0
  243. data/lib/getstream_ruby/generated/models/update_poll_option_request.rb +4 -4
  244. data/lib/getstream_ruby/generated/models/update_poll_request.rb +4 -4
  245. data/lib/getstream_ruby/generated/models/update_user_group_request.rb +41 -0
  246. data/lib/getstream_ruby/generated/models/update_user_group_response.rb +36 -0
  247. data/lib/getstream_ruby/generated/models/upsert_moderation_rule_request.rb +11 -6
  248. data/lib/getstream_ruby/generated/models/upsert_moderation_template_request.rb +1 -1
  249. data/lib/getstream_ruby/generated/models/upsert_moderation_template_response.rb +1 -1
  250. data/lib/getstream_ruby/generated/models/upsert_push_preferences_response.rb +2 -2
  251. data/lib/getstream_ruby/generated/models/upsert_push_provider_request.rb +1 -1
  252. data/lib/getstream_ruby/generated/models/upsert_push_template_request.rb +2 -2
  253. data/lib/getstream_ruby/generated/models/upsert_push_template_response.rb +1 -1
  254. data/lib/getstream_ruby/generated/models/user.rb +4 -49
  255. data/lib/getstream_ruby/generated/models/user_banned_event.rb +63 -33
  256. data/lib/getstream_ruby/generated/models/user_deactivated_event.rb +23 -13
  257. data/lib/getstream_ruby/generated/models/user_deleted_event.rb +36 -11
  258. data/lib/getstream_ruby/generated/models/user_flagged_event.rb +30 -15
  259. data/lib/getstream_ruby/generated/models/user_group.rb +71 -0
  260. data/lib/getstream_ruby/generated/models/user_group_created_event.rb +56 -0
  261. data/lib/getstream_ruby/generated/models/user_group_deleted_event.rb +56 -0
  262. data/lib/getstream_ruby/generated/models/user_group_member.rb +51 -0
  263. data/lib/getstream_ruby/generated/models/user_group_member_added_event.rb +61 -0
  264. data/lib/getstream_ruby/generated/models/user_group_member_removed_event.rb +61 -0
  265. data/lib/getstream_ruby/generated/models/user_group_response.rb +66 -0
  266. data/lib/getstream_ruby/generated/models/user_group_updated_event.rb +56 -0
  267. data/lib/getstream_ruby/generated/models/user_muted_event.rb +24 -14
  268. data/lib/getstream_ruby/generated/models/user_reactivated_event.rb +23 -8
  269. data/lib/getstream_ruby/generated/models/user_unbanned_event.rb +52 -22
  270. data/lib/getstream_ruby/generated/models/user_unmuted_event.rb +24 -14
  271. data/lib/getstream_ruby/generated/models/user_unread_reminder_event.rb +19 -9
  272. data/lib/getstream_ruby/generated/models/video_end_call_request_payload.rb +14 -0
  273. data/lib/getstream_ruby/generated/models/video_kick_user_request_payload.rb +14 -0
  274. data/lib/getstream_ruby/generated/models/video_reaction_response.rb +46 -0
  275. data/lib/getstream_ruby/generated/models/wh_event.rb +31 -0
  276. data/lib/getstream_ruby/generated/models/xiaomi_config.rb +4 -4
  277. data/lib/getstream_ruby/generated/webhook.rb +737 -0
  278. data/lib/getstream_ruby/version.rb +1 -1
  279. metadata +109 -4
@@ -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