getstream-ruby 6.0.0 → 6.1.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 (171) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +29 -0
  3. data/lib/getstream_ruby/client.rb +16 -5
  4. data/lib/getstream_ruby/configuration.rb +32 -5
  5. data/lib/getstream_ruby/generated/chat_client.rb +70 -0
  6. data/lib/getstream_ruby/generated/feed.rb +10 -0
  7. data/lib/getstream_ruby/generated/feeds_client.rb +41 -2
  8. data/lib/getstream_ruby/generated/models/action_log_response.rb +5 -0
  9. data/lib/getstream_ruby/generated/models/{coordinates.rb → activity_filter_config.rb} +6 -11
  10. data/lib/getstream_ruby/generated/models/activity_selector_config.rb +1 -1
  11. data/lib/getstream_ruby/generated/models/activity_selector_config_response.rb +1 -1
  12. data/lib/getstream_ruby/generated/models/add_activity_request.rb +5 -0
  13. data/lib/getstream_ruby/generated/models/add_reaction_request.rb +5 -0
  14. data/lib/getstream_ruby/generated/models/app_response_fields.rb +5 -0
  15. data/lib/getstream_ruby/generated/models/async_export_error_event.rb +1 -1
  16. data/lib/getstream_ruby/generated/models/{label.rb → bodyguard_profile_summary.rb} +11 -11
  17. data/lib/getstream_ruby/generated/models/{delete_bookmark_folder_request.rb → bulk_delete_action_config_request.rb} +6 -1
  18. data/lib/getstream_ruby/generated/models/bulk_delete_action_config_response.rb +36 -0
  19. data/lib/getstream_ruby/generated/models/bulk_upsert_action_config_request.rb +41 -0
  20. data/lib/getstream_ruby/generated/models/bulk_upsert_action_config_response.rb +36 -0
  21. data/lib/getstream_ruby/generated/models/call_stats_participant_session.rb +5 -0
  22. data/lib/getstream_ruby/generated/models/campaign_channel_template.rb +6 -6
  23. data/lib/getstream_ruby/generated/models/campaign_message_template.rb +8 -8
  24. data/lib/getstream_ruby/generated/models/change_feed_visibility_request.rb +36 -0
  25. data/lib/getstream_ruby/generated/models/{reject_appeal_request.rb → change_feed_visibility_response.rb} +10 -5
  26. data/lib/getstream_ruby/generated/models/{custom_action_request.rb → channel_message_count_rule_parameters.rb} +10 -10
  27. data/lib/getstream_ruby/generated/models/chat_draft_payload_response.rb +91 -0
  28. data/lib/getstream_ruby/generated/models/chat_draft_response.rb +56 -0
  29. data/lib/getstream_ruby/generated/models/{message.rb → chat_message_response.rb} +48 -28
  30. data/lib/getstream_ruby/generated/models/chat_moderation_v2_response.rb +66 -0
  31. data/lib/getstream_ruby/generated/models/chat_reaction_group_response.rb +51 -0
  32. data/lib/getstream_ruby/generated/models/{any_event.rb → chat_reaction_group_user_response.rb} +10 -5
  33. data/lib/getstream_ruby/generated/models/chat_reaction_response.rb +66 -0
  34. data/lib/getstream_ruby/generated/models/{message_reminder.rb → chat_reminder_response_data.rb} +3 -13
  35. data/lib/getstream_ruby/generated/models/chat_shared_location_response_data.rb +76 -0
  36. data/lib/getstream_ruby/generated/models/config_response.rb +5 -0
  37. data/lib/getstream_ruby/generated/models/create_campaign_request.rb +96 -0
  38. data/lib/getstream_ruby/generated/models/create_campaign_response.rb +41 -0
  39. data/lib/getstream_ruby/generated/models/create_feed_group_request.rb +5 -0
  40. data/lib/getstream_ruby/generated/models/delete_action_config_response.rb +36 -0
  41. data/lib/getstream_ruby/generated/models/{delivery_receipts.rb → delete_campaign_response.rb} +7 -7
  42. data/lib/getstream_ruby/generated/models/enrichment_options.rb +5 -0
  43. data/lib/getstream_ruby/generated/models/error_result.rb +5 -0
  44. data/lib/getstream_ruby/generated/models/event_hook.rb +6 -1
  45. data/lib/getstream_ruby/generated/models/feed_group.rb +5 -0
  46. data/lib/getstream_ruby/generated/models/feed_group_response.rb +5 -0
  47. data/lib/getstream_ruby/generated/models/{activity_location.rb → feeds_activity_location.rb} +3 -3
  48. data/lib/getstream_ruby/generated/models/feeds_bookmark_response.rb +61 -0
  49. data/lib/getstream_ruby/generated/models/{poll_vote.rb → feeds_enriched_collection_response.rb} +15 -25
  50. data/lib/getstream_ruby/generated/models/feeds_feed_response.rb +116 -0
  51. data/lib/getstream_ruby/generated/models/feeds_notification_comment.rb +46 -0
  52. data/lib/getstream_ruby/generated/models/{follow_pair.rb → feeds_notification_context.rb} +9 -9
  53. data/lib/getstream_ruby/generated/models/feeds_notification_parent_activity.rb +51 -0
  54. data/lib/getstream_ruby/generated/models/feeds_notification_target.rb +71 -0
  55. data/lib/getstream_ruby/generated/models/{poll_option.rb → feeds_notification_trigger.rb} +12 -7
  56. data/lib/getstream_ruby/generated/models/feeds_reaction_group_response.rb +3 -3
  57. data/lib/getstream_ruby/generated/models/feeds_reaction_response.rb +6 -6
  58. data/lib/getstream_ruby/generated/models/feeds_v3_activity_response.rb +66 -6
  59. data/lib/getstream_ruby/generated/models/feeds_v3_comment_response.rb +17 -2
  60. data/lib/getstream_ruby/generated/models/get_action_config_response.rb +36 -0
  61. data/lib/getstream_ruby/generated/models/get_or_create_feed_group_request.rb +5 -0
  62. data/lib/getstream_ruby/generated/models/grouped_channels_bucket.rb +36 -0
  63. data/lib/getstream_ruby/generated/models/{delete_collections_request.rb → grouped_query_channels_request.rb} +6 -1
  64. data/lib/getstream_ruby/generated/models/grouped_query_channels_response.rb +36 -0
  65. data/lib/getstream_ruby/generated/models/insert_action_log_request.rb +10 -0
  66. data/lib/getstream_ruby/generated/models/label_result_response.rb +101 -0
  67. data/lib/getstream_ruby/generated/models/labels_request.rb +56 -0
  68. data/lib/getstream_ruby/generated/models/labels_response.rb +71 -0
  69. data/lib/getstream_ruby/generated/models/message_new_event.rb +5 -0
  70. data/lib/getstream_ruby/generated/models/moderation_action_config_response.rb +5 -0
  71. data/lib/getstream_ruby/generated/models/moderation_dashboard_preferences.rb +5 -0
  72. data/lib/getstream_ruby/generated/models/notification_mark_unread_event.rb +5 -0
  73. data/lib/getstream_ruby/generated/models/query_label_results_request.rb +61 -0
  74. data/lib/getstream_ruby/generated/models/query_label_results_response.rb +46 -0
  75. data/lib/getstream_ruby/generated/models/query_review_queue_request.rb +5 -0
  76. data/lib/getstream_ruby/generated/models/query_review_queue_response.rb +5 -0
  77. data/lib/getstream_ruby/generated/models/query_revision_history_request.rb +51 -0
  78. data/lib/getstream_ruby/generated/models/query_revision_history_response.rb +46 -0
  79. data/lib/getstream_ruby/generated/models/review_queue_item_response.rb +1 -1
  80. data/lib/getstream_ruby/generated/models/revision_history_response.rb +66 -0
  81. data/lib/getstream_ruby/generated/models/rule_builder_condition.rb +5 -0
  82. data/lib/getstream_ruby/generated/models/submit_moderation_feedback_request.rb +71 -0
  83. data/lib/getstream_ruby/generated/models/{block_action_request.rb → submit_moderation_feedback_response.rb} +5 -5
  84. data/lib/getstream_ruby/generated/models/update_app_request.rb +5 -0
  85. data/lib/getstream_ruby/generated/models/update_campaign_request.rb +96 -0
  86. data/lib/getstream_ruby/generated/models/update_feed_group_request.rb +5 -0
  87. data/lib/getstream_ruby/generated/models/{moderation_action_config.rb → upsert_action_config_item.rb} +22 -12
  88. data/lib/getstream_ruby/generated/models/upsert_action_config_request.rb +76 -0
  89. data/lib/getstream_ruby/generated/models/upsert_action_config_response.rb +36 -0
  90. data/lib/getstream_ruby/generated/models/upsert_activities_request.rb +5 -0
  91. data/lib/getstream_ruby/generated/models/webhook_failover_config.rb +46 -0
  92. data/lib/getstream_ruby/generated/moderation_client.rb +149 -0
  93. data/lib/getstream_ruby/version.rb +1 -1
  94. data/lib/getstream_ruby.rb +2 -3
  95. metadata +52 -94
  96. data/lib/getstream_ruby/generated/models/activity_marked_event.rb +0 -66
  97. data/lib/getstream_ruby/generated/models/automod_details.rb +0 -51
  98. data/lib/getstream_ruby/generated/models/ban.rb +0 -61
  99. data/lib/getstream_ruby/generated/models/ban_action_request.rb +0 -56
  100. data/lib/getstream_ruby/generated/models/channel.rb +0 -161
  101. data/lib/getstream_ruby/generated/models/channel_batch_updated_completed_event.rb +0 -81
  102. data/lib/getstream_ruby/generated/models/channel_batch_updated_started_event.rb +0 -81
  103. data/lib/getstream_ruby/generated/models/channel_member.rb +0 -141
  104. data/lib/getstream_ruby/generated/models/channel_member_lookup.rb +0 -66
  105. data/lib/getstream_ruby/generated/models/channel_messages.rb +0 -36
  106. data/lib/getstream_ruby/generated/models/channel_push_preferences.rb +0 -36
  107. data/lib/getstream_ruby/generated/models/config_overrides.rb +0 -96
  108. data/lib/getstream_ruby/generated/models/delete_activity_reaction_request.rb +0 -14
  109. data/lib/getstream_ruby/generated/models/delete_activity_request.rb +0 -14
  110. data/lib/getstream_ruby/generated/models/delete_block_list_request.rb +0 -14
  111. data/lib/getstream_ruby/generated/models/delete_bookmark_request.rb +0 -14
  112. data/lib/getstream_ruby/generated/models/delete_call_type_request.rb +0 -14
  113. data/lib/getstream_ruby/generated/models/delete_channel_request.rb +0 -14
  114. data/lib/getstream_ruby/generated/models/delete_command_request.rb +0 -14
  115. data/lib/getstream_ruby/generated/models/delete_comment_reaction_request.rb +0 -14
  116. data/lib/getstream_ruby/generated/models/delete_comment_request.rb +0 -14
  117. data/lib/getstream_ruby/generated/models/delete_custom_role_request.rb +0 -14
  118. data/lib/getstream_ruby/generated/models/delete_device_request.rb +0 -14
  119. data/lib/getstream_ruby/generated/models/delete_draft_request.rb +0 -14
  120. data/lib/getstream_ruby/generated/models/delete_external_storage_request.rb +0 -14
  121. data/lib/getstream_ruby/generated/models/delete_feed_group_request.rb +0 -14
  122. data/lib/getstream_ruby/generated/models/delete_feed_request.rb +0 -14
  123. data/lib/getstream_ruby/generated/models/delete_feed_view_request.rb +0 -14
  124. data/lib/getstream_ruby/generated/models/delete_import_v2_task_request.rb +0 -14
  125. data/lib/getstream_ruby/generated/models/delete_membership_level_request.rb +0 -14
  126. data/lib/getstream_ruby/generated/models/delete_message_request.rb +0 -14
  127. data/lib/getstream_ruby/generated/models/delete_moderation_config_request.rb +0 -14
  128. data/lib/getstream_ruby/generated/models/delete_moderation_template_request.rb +0 -31
  129. data/lib/getstream_ruby/generated/models/delete_poll_option_request.rb +0 -14
  130. data/lib/getstream_ruby/generated/models/delete_poll_request.rb +0 -14
  131. data/lib/getstream_ruby/generated/models/delete_poll_vote_request.rb +0 -14
  132. data/lib/getstream_ruby/generated/models/delete_push_provider_request.rb +0 -14
  133. data/lib/getstream_ruby/generated/models/delete_reaction_request.rb +0 -14
  134. data/lib/getstream_ruby/generated/models/delete_recording_request.rb +0 -14
  135. data/lib/getstream_ruby/generated/models/delete_reminder_request.rb +0 -14
  136. data/lib/getstream_ruby/generated/models/delete_segment_request.rb +0 -14
  137. data/lib/getstream_ruby/generated/models/delete_sip_inbound_routing_rule_request.rb +0 -14
  138. data/lib/getstream_ruby/generated/models/delete_sip_trunk_request.rb +0 -14
  139. data/lib/getstream_ruby/generated/models/delete_transcription_request.rb +0 -14
  140. data/lib/getstream_ruby/generated/models/delete_user_group_request.rb +0 -14
  141. data/lib/getstream_ruby/generated/models/delete_user_request.rb +0 -51
  142. data/lib/getstream_ruby/generated/models/denormalized_channel_fields.rb +0 -81
  143. data/lib/getstream_ruby/generated/models/device.rb +0 -66
  144. data/lib/getstream_ruby/generated/models/feeds_moderation_template_config.rb +0 -36
  145. data/lib/getstream_ruby/generated/models/file_delete_request.rb +0 -14
  146. data/lib/getstream_ruby/generated/models/flag.rb +0 -96
  147. data/lib/getstream_ruby/generated/models/flag_details.rb +0 -41
  148. data/lib/getstream_ruby/generated/models/flag_feedback.rb +0 -41
  149. data/lib/getstream_ruby/generated/models/flag_message_details.rb +0 -46
  150. data/lib/getstream_ruby/generated/models/get_channel_type_request.rb +0 -14
  151. data/lib/getstream_ruby/generated/models/limit_info.rb +0 -41
  152. data/lib/getstream_ruby/generated/models/mark_reviewed_request.rb +0 -41
  153. data/lib/getstream_ruby/generated/models/own_user.rb +0 -166
  154. data/lib/getstream_ruby/generated/models/poll.rb +0 -131
  155. data/lib/getstream_ruby/generated/models/privacy_settings.rb +0 -41
  156. data/lib/getstream_ruby/generated/models/push_preferences.rb +0 -51
  157. data/lib/getstream_ruby/generated/models/read_receipts.rb +0 -31
  158. data/lib/getstream_ruby/generated/models/restore_action_request.rb +0 -31
  159. data/lib/getstream_ruby/generated/models/retention_cleanup_run.rb +0 -76
  160. data/lib/getstream_ruby/generated/models/shadow_block_action_request.rb +0 -31
  161. data/lib/getstream_ruby/generated/models/sip_challenge.rb +0 -106
  162. data/lib/getstream_ruby/generated/models/sort_param.rb +0 -41
  163. data/lib/getstream_ruby/generated/models/typing_indicators.rb +0 -31
  164. data/lib/getstream_ruby/generated/models/unban_action_request.rb +0 -31
  165. data/lib/getstream_ruby/generated/models/unblock_action_request.rb +0 -31
  166. data/lib/getstream_ruby/generated/models/unfollow_request.rb +0 -14
  167. data/lib/getstream_ruby/generated/models/unpin_activity_request.rb +0 -14
  168. data/lib/getstream_ruby/generated/models/user_mute.rb +0 -51
  169. data/lib/getstream_ruby/generated/models/video_end_call_request.rb +0 -14
  170. data/lib/getstream_ruby/generated/models/video_kick_user_request.rb +0 -14
  171. data/lib/getstream_ruby/generated/models/webhook_event.rb +0 -31
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 59378b9d494daa078a110dbbf3b4a3966540a92d519046328912d707e5d58c51
4
- data.tar.gz: 1ecc4e58ee556bac9dbec872aa0caa3ee678306a34b3e137b755d4fffa0e7baf
3
+ metadata.gz: 5f8a1dd8b4379c6af81682b352877f55c651f081265e87cc5ec08a477b19c91d
4
+ data.tar.gz: 7b46eb14dac0d23a0f76223244125ec4ff54ee2130f5b554fae68e363ac7ac00
5
5
  SHA512:
6
- metadata.gz: 36e1370906f8f491e5360ebafdca9ce5c08846ebb4ba5901744f10a45a863a7c6b2b9792578fe71166a7cc7bda3e08b523f0b3fbda69d723d723999b2b0bdb56
7
- data.tar.gz: 07d8cdcf47b41728081e35ab749e53a19ffba1daeed5206d178e0b44c2a64c195f02ba209666ca9f73f6641414b5238ec9452740dd8b60828e729a86a84f4989
6
+ metadata.gz: 4b88721605b6c6cc61769dee8c0940ad9b351676a7ed77c0ac9799f898dc3c297534dff333710617ebd4de527387b3273b66a31c7b49808d18f08f908b91d172
7
+ data.tar.gz: 58ccb9e4f16e22cce7dfff31c915f9c2c4c9be2a3f5a3e14ad6c31182f1ebb4da3cdecf63321ca19920abe15be0ce1a669e248ceaa80aab99c4a3413150669ea
data/README.md CHANGED
@@ -36,9 +36,23 @@ require 'getstream_ruby'
36
36
  client = GetStreamRuby.manual(
37
37
  api_key: "your_api_key",
38
38
  api_secret: "your_api_secret",
39
+ # Optional HTTP tuning for keep-alive / connection reuse
40
+ connection_keep_alive: true,
41
+ # Optional: bring your own Faraday adapter (default is Faraday.default_adapter)
42
+ faraday_adapter: :net_http,
43
+ faraday_adapter_options: {
44
+ # adapter-specific options
45
+ }
39
46
  )
40
47
  ```
41
48
 
49
+ You can also set these via environment variables:
50
+
51
+ ```bash
52
+ STREAM_CONNECTION_KEEP_ALIVE=true
53
+ STREAM_FARADAY_ADAPTER=net_http
54
+ ```
55
+
42
56
  ### Method 2: .env File
43
57
 
44
58
  Create a `.env` file in your project root:
@@ -334,6 +348,21 @@ To enable integration tests in CI, configure these GitHub repository settings:
334
348
 
335
349
  Bug reports and pull requests are welcome on GitHub at https://github.com/getstream/getstream-ruby.
336
350
 
351
+ ## Release Process
352
+
353
+ Releases use two paths:
354
+
355
+ - Default: automatic release when a PR is merged to `main`/`master`.
356
+ - Fallback: manual release using `.github/workflows/manual-release.yml` (admin use only).
357
+
358
+ Automatic semver bump rules are based on merged PR title/body:
359
+
360
+ - `feat:` -> minor
361
+ - `fix:` (or `bug:`) -> patch
362
+ - `feat!:` or `BREAKING CHANGE` in PR body -> major
363
+
364
+ PRs with other prefixes do not trigger a release.
365
+
337
366
  ## License
338
367
 
339
368
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -21,16 +21,15 @@ module GetStreamRuby
21
21
 
22
22
  attr_reader :configuration
23
23
 
24
- def initialize(config = nil, api_key: nil, api_secret: nil, base_url: nil, timeout: nil)
24
+ def initialize(config = nil, api_key: nil, api_secret: nil, **options)
25
25
  @configuration = config || GetStreamRuby.configuration
26
26
 
27
27
  # Create new configuration with overrides if any parameters provided
28
- if api_key || api_secret || base_url || timeout
28
+ if api_key || api_secret || !options.empty?
29
29
  @configuration = Configuration.with_overrides(
30
30
  api_key: api_key,
31
31
  api_secret: api_secret,
32
- base_url: base_url,
33
- timeout: timeout,
32
+ **options,
34
33
  )
35
34
  end
36
35
 
@@ -131,12 +130,24 @@ module GetStreamRuby
131
130
  backoff_factor: 2,
132
131
  }
133
132
  conn.response :json, content_type: /\bjson$/
134
- conn.adapter Faraday.default_adapter
133
+ conn.headers['Connection'] = 'keep-alive' if @configuration.connection_keep_alive
134
+ configure_adapter(conn)
135
135
  conn.options.timeout = @configuration.timeout
136
136
 
137
137
  end
138
138
  end
139
139
 
140
+ def configure_adapter(connection)
141
+ adapter = @configuration.faraday_adapter || Faraday.default_adapter
142
+ adapter_options = @configuration.faraday_adapter_options || {}
143
+ connection.adapter(adapter, **adapter_options)
144
+ rescue Faraday::Error, ArgumentError => e
145
+ @configuration.logger&.warn(
146
+ "Falling back to #{Faraday.default_adapter}: could not use adapter #{adapter} (#{e.message})",
147
+ )
148
+ connection.adapter Faraday.default_adapter
149
+ end
150
+
140
151
  def generate_auth_header
141
152
  JWT.encode(
142
153
  {
@@ -4,9 +4,21 @@ module GetStreamRuby
4
4
 
5
5
  class Configuration
6
6
 
7
- attr_accessor :api_key, :api_secret, :base_url, :timeout, :logger
7
+ attr_accessor :api_key, :api_secret, :base_url, :timeout, :logger, :faraday_adapter, :faraday_adapter_options,
8
+ :connection_keep_alive
9
+
10
+ def initialize(api_key: nil, api_secret: nil, use_env: true, **options)
11
+ base_url = options[:base_url]
12
+ timeout = options[:timeout]
13
+ http_options = options[:http_options] || {}
14
+ faraday_adapter = options[:faraday_adapter] || http_options[:faraday_adapter]
15
+ faraday_adapter_options = options[:faraday_adapter_options] || http_options[:faraday_adapter_options]
16
+ connection_keep_alive = if options.key?(:connection_keep_alive)
17
+ options[:connection_keep_alive]
18
+ else
19
+ http_options[:connection_keep_alive]
20
+ end
8
21
 
9
- def initialize(api_key: nil, api_secret: nil, base_url: nil, timeout: nil, use_env: true)
10
22
  if use_env
11
23
  @api_key = api_key || ENV.fetch('STREAM_API_KEY', nil)
12
24
  @api_secret = api_secret || ENV.fetch('STREAM_API_SECRET', nil)
@@ -20,6 +32,13 @@ module GetStreamRuby
20
32
  @timeout = timeout || 30
21
33
  end
22
34
 
35
+ @faraday_adapter = (faraday_adapter || ENV.fetch('STREAM_FARADAY_ADAPTER', nil))&.to_sym
36
+ @faraday_adapter_options = faraday_adapter_options || default_adapter_options
37
+ @connection_keep_alive = if connection_keep_alive.nil?
38
+ ENV.fetch('STREAM_CONNECTION_KEEP_ALIVE', 'true') == 'true'
39
+ else
40
+ connection_keep_alive
41
+ end
23
42
  @logger = nil
24
43
  end
25
44
 
@@ -38,6 +57,9 @@ module GetStreamRuby
38
57
  api_secret: @api_secret,
39
58
  base_url: @base_url,
40
59
  timeout: @timeout,
60
+ faraday_adapter: @faraday_adapter,
61
+ faraday_adapter_options: @faraday_adapter_options.dup,
62
+ connection_keep_alive: @connection_keep_alive,
41
63
  )
42
64
  end
43
65
 
@@ -47,9 +69,8 @@ module GetStreamRuby
47
69
  end
48
70
 
49
71
  # Method 1: Manual configuration (no environment variables)
50
- def self.manual(api_key:, api_secret:, base_url: nil, timeout: nil)
51
- new(api_key: api_key, api_secret: api_secret,
52
- base_url: base_url, timeout: timeout, use_env: false)
72
+ def self.manual(api_key:, api_secret:, **options)
73
+ new(api_key: api_key, api_secret: api_secret, use_env: false, **options)
53
74
  end
54
75
 
55
76
  # Method 2: .env file (loads .env file via dotenv gem, falls back to env vars)
@@ -63,6 +84,12 @@ module GetStreamRuby
63
84
  new(use_env: true)
64
85
  end
65
86
 
87
+ private
88
+
89
+ def default_adapter_options
90
+ {}
91
+ end
92
+
66
93
  end
67
94
 
68
95
  end
@@ -12,6 +12,23 @@ module GetStream
12
12
  def initialize(client)
13
13
  @client = client
14
14
  end
15
+ # Creates a campaign
16
+ #
17
+ # @param create_campaign_request [CreateCampaignRequest]
18
+ # @return [Models::CreateCampaignResponse]
19
+ def create_campaign(create_campaign_request)
20
+ path = '/api/v2/chat/campaigns'
21
+ # Build request body
22
+ body = create_campaign_request
23
+
24
+ # Make the API request
25
+ @client.make_request(
26
+ :post,
27
+ path,
28
+ body: body
29
+ )
30
+ end
31
+
15
32
  # Query campaigns with filter query
16
33
  #
17
34
  # @param query_campaigns_request [QueryCampaignsRequest]
@@ -29,6 +46,22 @@ module GetStream
29
46
  )
30
47
  end
31
48
 
49
+ # Delete campaign
50
+ #
51
+ # @param _id [String]
52
+ # @return [Models::DeleteCampaignResponse]
53
+ def delete_campaign(_id)
54
+ path = '/api/v2/chat/campaigns/{id}'
55
+ # Replace path parameters
56
+ path = path.gsub('{id}', _id.to_s)
57
+
58
+ # Make the API request
59
+ @client.make_request(
60
+ :delete,
61
+ path
62
+ )
63
+ end
64
+
32
65
  # Get campaign by ID.
33
66
  #
34
67
  # @param _id [String]
@@ -54,6 +87,26 @@ module GetStream
54
87
  )
55
88
  end
56
89
 
90
+ # Updates a campaign
91
+ #
92
+ # @param _id [String]
93
+ # @param update_campaign_request [UpdateCampaignRequest]
94
+ # @return [Models::CampaignResponse]
95
+ def update_campaign(_id, update_campaign_request)
96
+ path = '/api/v2/chat/campaigns/{id}'
97
+ # Replace path parameters
98
+ path = path.gsub('{id}', _id.to_s)
99
+ # Build request body
100
+ body = update_campaign_request
101
+
102
+ # Make the API request
103
+ @client.make_request(
104
+ :put,
105
+ path,
106
+ body: body
107
+ )
108
+ end
109
+
57
110
  # Starts or schedules a campaign
58
111
  #
59
112
  # @param _id [String]
@@ -167,6 +220,23 @@ module GetStream
167
220
  )
168
221
  end
169
222
 
223
+ # Query channels grouped into predefined buckets. Only available for enterprise apps.
224
+ #
225
+ # @param grouped_query_channels_request [GroupedQueryChannelsRequest]
226
+ # @return [Models::GroupedQueryChannelsResponse]
227
+ def grouped_query_channels(grouped_query_channels_request)
228
+ path = '/api/v2/chat/channels/grouped'
229
+ # Build request body
230
+ body = grouped_query_channels_request
231
+
232
+ # Make the API request
233
+ @client.make_request(
234
+ :post,
235
+ path,
236
+ body: body
237
+ )
238
+ end
239
+
170
240
  # Marks channels as read up to the specific message. If no channels is given, mark all channel as readSends events:- message.read
171
241
  #
172
242
  # @param mark_channels_read_request [MarkChannelsReadRequest]
@@ -84,6 +84,16 @@ module GetStream
84
84
  @client.feeds.pin_activity(@feed_group_id, @feed_id, activity_id, pin_activity_request)
85
85
  end
86
86
 
87
+ # Changes the visibility of an existing feed. Follow reconciliation (rewriting pending follows on loosening, or removing disallowed follows/members on tightening) runs asynchronously in the background; the response returns optimistically with the intended visibility.
88
+ #
89
+ # @param change_feed_visibility_request [ChangeFeedVisibilityRequest]
90
+ # @return [Models::ChangeFeedVisibilityResponse]
91
+ def change_feed_visibility(change_feed_visibility_request)
92
+
93
+ # Delegate to the FeedsClient
94
+ @client.feeds.change_feed_visibility(@feed_group_id, @feed_id, change_feed_visibility_request)
95
+ end
96
+
87
97
  # Add, remove, or set members for a feed
88
98
  #
89
99
  # @param update_feed_members_request [UpdateFeedMembersRequest]
@@ -397,7 +397,7 @@ module GetStream
397
397
  )
398
398
  end
399
399
 
400
- # Restores a soft-deleted activity by its ID. Only the activity owner can restore their own activities.
400
+ # Restores a soft-deleted, moderation-removed, or shadow-blocked activity by its ID. Deleted activities can be restored by the owner (client-side). Moderation-blocked activities can only be restored server-side.
401
401
  #
402
402
  # @param _id [String]
403
403
  # @param restore_activity_request [RestoreActivityRequest]
@@ -932,7 +932,7 @@ module GetStream
932
932
  )
933
933
  end
934
934
 
935
- # Restores a soft-deleted comment by its ID. The comment and all its descendants are restored. Requires moderator permissions.
935
+ # Restores a soft-deleted, moderation-removed, or shadow-blocked comment by its ID. The comment and all its descendants are restored. Deleted comments can be restored client-side. Moderation-blocked comments can only be restored server-side.
936
936
  #
937
937
  # @param _id [String]
938
938
  # @param restore_comment_request [RestoreCommentRequest]
@@ -1127,6 +1127,28 @@ module GetStream
1127
1127
  )
1128
1128
  end
1129
1129
 
1130
+ # Changes the visibility of an existing feed. Follow reconciliation (rewriting pending follows on loosening, or removing disallowed follows/members on tightening) runs asynchronously in the background; the response returns optimistically with the intended visibility.
1131
+ #
1132
+ # @param feed_group_id [String]
1133
+ # @param feed_id [String]
1134
+ # @param change_feed_visibility_request [ChangeFeedVisibilityRequest]
1135
+ # @return [Models::ChangeFeedVisibilityResponse]
1136
+ def change_feed_visibility(feed_group_id, feed_id, change_feed_visibility_request)
1137
+ path = '/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/change_visibility'
1138
+ # Replace path parameters
1139
+ path = path.gsub('{feed_group_id}', feed_group_id.to_s)
1140
+ path = path.gsub('{feed_id}', feed_id.to_s)
1141
+ # Build request body
1142
+ body = change_feed_visibility_request
1143
+
1144
+ # Make the API request
1145
+ @client.make_request(
1146
+ :post,
1147
+ path,
1148
+ body: body
1149
+ )
1150
+ end
1151
+
1130
1152
  # Add, remove, or set members for a feed
1131
1153
  #
1132
1154
  # @param feed_group_id [String]
@@ -1819,6 +1841,23 @@ module GetStream
1819
1841
  )
1820
1842
  end
1821
1843
 
1844
+ # Queries revision history for activities and comments
1845
+ #
1846
+ # @param query_revision_history_request [QueryRevisionHistoryRequest]
1847
+ # @return [Models::QueryRevisionHistoryResponse]
1848
+ def query_revision_history(query_revision_history_request)
1849
+ path = '/api/v2/feeds/revisions/query'
1850
+ # Build request body
1851
+ body = query_revision_history_request
1852
+
1853
+ # Make the API request
1854
+ @client.make_request(
1855
+ :post,
1856
+ path,
1857
+ body: body
1858
+ )
1859
+ end
1860
+
1822
1861
  # Retrieve usage statistics for feeds including activity count, follow count, and API request count.Returns data aggregated by day with pagination support via from/to date parameters.This endpoint is server-side only.
1823
1862
  #
1824
1863
  # @param query_feeds_usage_stats_request [QueryFeedsUsageStatsRequest]
@@ -18,6 +18,9 @@ module GetStream
18
18
  # @!attribute reason
19
19
  # @return [String] Reason for the moderation action
20
20
  attr_accessor :reason
21
+ # @!attribute reporter_type
22
+ # @return [String] Classification of who triggered the action (e.g. user, moderator, automod, api_integration)
23
+ attr_accessor :reporter_type
21
24
  # @!attribute target_user_id
22
25
  # @return [String] ID of the user who was the target of the action
23
26
  attr_accessor :target_user_id
@@ -49,6 +52,7 @@ module GetStream
49
52
  @created_at = attributes[:created_at] || attributes['created_at']
50
53
  @id = attributes[:id] || attributes['id']
51
54
  @reason = attributes[:reason] || attributes['reason']
55
+ @reporter_type = attributes[:reporter_type] || attributes['reporter_type']
52
56
  @target_user_id = attributes[:target_user_id] || attributes['target_user_id']
53
57
  @type = attributes[:type] || attributes['type']
54
58
  @user_id = attributes[:user_id] || attributes['user_id']
@@ -65,6 +69,7 @@ module GetStream
65
69
  created_at: 'created_at',
66
70
  id: 'id',
67
71
  reason: 'reason',
72
+ reporter_type: 'reporter_type',
68
73
  target_user_id: 'target_user_id',
69
74
  type: 'type',
70
75
  user_id: 'user_id',
@@ -6,28 +6,23 @@ module GetStream
6
6
  module Generated
7
7
  module Models
8
8
  #
9
- class Coordinates < GetStream::BaseModel
9
+ class ActivityFilterConfig < GetStream::BaseModel
10
10
 
11
11
  # Model attributes
12
- # @!attribute latitude
13
- # @return [Float]
14
- attr_accessor :latitude
15
- # @!attribute longitude
16
- # @return [Float]
17
- attr_accessor :longitude
12
+ # @!attribute exclude_owner_activities
13
+ # @return [Boolean] When true, activities authored by the feed owner are excluded from feed reads
14
+ attr_accessor :exclude_owner_activities
18
15
 
19
16
  # Initialize with attributes
20
17
  def initialize(attributes = {})
21
18
  super(attributes)
22
- @latitude = attributes[:latitude] || attributes['latitude']
23
- @longitude = attributes[:longitude] || attributes['longitude']
19
+ @exclude_owner_activities = attributes[:exclude_owner_activities] || attributes['exclude_owner_activities'] || nil
24
20
  end
25
21
 
26
22
  # Override field mappings for JSON serialization
27
23
  def self.json_field_mappings
28
24
  {
29
- latitude: 'latitude',
30
- longitude: 'longitude'
25
+ exclude_owner_activities: 'exclude_owner_activities'
31
26
  }
32
27
  end
33
28
  end
@@ -19,7 +19,7 @@ module GetStream
19
19
  # @return [String] Flexible relative time window for activity selection (e.g., '1h', '3d', '1y'). Activities older than this duration will be filtered out. Cannot be used together with cutoff_time
20
20
  attr_accessor :cutoff_window
21
21
  # @!attribute min_popularity
22
- # @return [Integer] Minimum popularity threshold
22
+ # @return [Integer] Minimum popularity threshold. For the 'popular' selector, omit to use the default (5); values below 1 are rejected
23
23
  attr_accessor :min_popularity
24
24
  # @!attribute sort
25
25
  # @return [Array<SortParamRequest>] Sort parameters for activity selection
@@ -19,7 +19,7 @@ module GetStream
19
19
  # @return [String] Flexible relative time window for activity selection (e.g., '1h', '3d', '1y')
20
20
  attr_accessor :cutoff_window
21
21
  # @!attribute min_popularity
22
- # @return [Integer] Minimum popularity threshold
22
+ # @return [Integer] Minimum popularity threshold. For the 'popular' selector, values below 1 are normalized to the default (5) at read time.
23
23
  attr_accessor :min_popularity
24
24
  # @!attribute sort
25
25
  # @return [Array<SortParamRequest>] Sort parameters for activity selection
@@ -22,6 +22,9 @@ module GetStream
22
22
  # @!attribute create_notification_activity
23
23
  # @return [Boolean] Whether to create notification activities for mentioned users
24
24
  attr_accessor :create_notification_activity
25
+ # @!attribute create_users
26
+ # @return [Boolean]
27
+ attr_accessor :create_users
25
28
  # @!attribute enrich_own_fields
26
29
  # @return [Boolean]
27
30
  attr_accessor :enrich_own_fields
@@ -93,6 +96,7 @@ module GetStream
93
96
  @feeds = attributes[:feeds] || attributes['feeds']
94
97
  @copy_custom_to_notification = attributes[:copy_custom_to_notification] || attributes['copy_custom_to_notification'] || nil
95
98
  @create_notification_activity = attributes[:create_notification_activity] || attributes['create_notification_activity'] || nil
99
+ @create_users = attributes[:create_users] || attributes['create_users'] || nil
96
100
  @enrich_own_fields = attributes[:enrich_own_fields] || attributes['enrich_own_fields'] || nil
97
101
  @expires_at = attributes[:expires_at] || attributes['expires_at'] || nil
98
102
  @force_moderation = attributes[:force_moderation] || attributes['force_moderation'] || nil
@@ -123,6 +127,7 @@ module GetStream
123
127
  feeds: 'feeds',
124
128
  copy_custom_to_notification: 'copy_custom_to_notification',
125
129
  create_notification_activity: 'create_notification_activity',
130
+ create_users: 'create_users',
126
131
  enrich_own_fields: 'enrich_own_fields',
127
132
  expires_at: 'expires_at',
128
133
  force_moderation: 'force_moderation',
@@ -19,6 +19,9 @@ module GetStream
19
19
  # @!attribute create_notification_activity
20
20
  # @return [Boolean] Whether to create a notification activity for this reaction
21
21
  attr_accessor :create_notification_activity
22
+ # @!attribute create_users
23
+ # @return [Boolean] Server-side only. If true, auto-creates the reacting user identified by user_id when they don't already exist. Default: false.
24
+ attr_accessor :create_users
22
25
  # @!attribute enforce_unique
23
26
  # @return [Boolean] Whether to enforce unique reactions per user (remove other reaction types from the user when adding this one)
24
27
  attr_accessor :enforce_unique
@@ -41,6 +44,7 @@ module GetStream
41
44
  @type = attributes[:type] || attributes['type']
42
45
  @copy_custom_to_notification = attributes[:copy_custom_to_notification] || attributes['copy_custom_to_notification'] || nil
43
46
  @create_notification_activity = attributes[:create_notification_activity] || attributes['create_notification_activity'] || nil
47
+ @create_users = attributes[:create_users] || attributes['create_users'] || nil
44
48
  @enforce_unique = attributes[:enforce_unique] || attributes['enforce_unique'] || nil
45
49
  @skip_push = attributes[:skip_push] || attributes['skip_push'] || nil
46
50
  @user_id = attributes[:user_id] || attributes['user_id'] || nil
@@ -54,6 +58,7 @@ module GetStream
54
58
  type: 'type',
55
59
  copy_custom_to_notification: 'copy_custom_to_notification',
56
60
  create_notification_activity: 'create_notification_activity',
61
+ create_users: 'create_users',
57
62
  enforce_unique: 'enforce_unique',
58
63
  skip_push: 'skip_push',
59
64
  user_id: 'user_id',
@@ -36,6 +36,9 @@ module GetStream
36
36
  # @!attribute enforce_unique_usernames
37
37
  # @return [String]
38
38
  attr_accessor :enforce_unique_usernames
39
+ # @!attribute feed_audit_logs_enabled
40
+ # @return [Boolean]
41
+ attr_accessor :feed_audit_logs_enabled
39
42
  # @!attribute guest_user_creation_disabled
40
43
  # @return [Boolean]
41
44
  attr_accessor :guest_user_creation_disabled
@@ -187,6 +190,7 @@ module GetStream
187
190
  @disable_auth_checks = attributes[:disable_auth_checks] || attributes['disable_auth_checks']
188
191
  @disable_permissions_checks = attributes[:disable_permissions_checks] || attributes['disable_permissions_checks']
189
192
  @enforce_unique_usernames = attributes[:enforce_unique_usernames] || attributes['enforce_unique_usernames']
193
+ @feed_audit_logs_enabled = attributes[:feed_audit_logs_enabled] || attributes['feed_audit_logs_enabled']
190
194
  @guest_user_creation_disabled = attributes[:guest_user_creation_disabled] || attributes['guest_user_creation_disabled']
191
195
  @id = attributes[:id] || attributes['id']
192
196
  @image_moderation_enabled = attributes[:image_moderation_enabled] || attributes['image_moderation_enabled']
@@ -247,6 +251,7 @@ module GetStream
247
251
  disable_auth_checks: 'disable_auth_checks',
248
252
  disable_permissions_checks: 'disable_permissions_checks',
249
253
  enforce_unique_usernames: 'enforce_unique_usernames',
254
+ feed_audit_logs_enabled: 'feed_audit_logs_enabled',
250
255
  guest_user_creation_disabled: 'guest_user_creation_disabled',
251
256
  id: 'id',
252
257
  image_moderation_enabled: 'image_moderation_enabled',
@@ -43,7 +43,7 @@ module GetStream
43
43
  @started_at = attributes[:started_at] || attributes['started_at']
44
44
  @task_id = attributes[:task_id] || attributes['task_id']
45
45
  @custom = attributes[:custom] || attributes['custom']
46
- @type = attributes[:type] || attributes['type'] || "export.moderation_logs.error"
46
+ @type = attributes[:type] || attributes['type'] || "export.users.error"
47
47
  @received_at = attributes[:received_at] || attributes['received_at'] || nil
48
48
  end
49
49
 
@@ -6,33 +6,33 @@ module GetStream
6
6
  module Generated
7
7
  module Models
8
8
  #
9
- class Label < GetStream::BaseModel
9
+ class BodyguardProfileSummary < GetStream::BaseModel
10
10
 
11
11
  # Model attributes
12
12
  # @!attribute name
13
13
  # @return [String]
14
14
  attr_accessor :name
15
- # @!attribute harm_labels
16
- # @return [Array<String>]
17
- attr_accessor :harm_labels
18
- # @!attribute phrase_list_ids
19
- # @return [Array<Integer>]
20
- attr_accessor :phrase_list_ids
15
+ # @!attribute display_name
16
+ # @return [String]
17
+ attr_accessor :display_name
18
+ # @!attribute text_type
19
+ # @return [String]
20
+ attr_accessor :text_type
21
21
 
22
22
  # Initialize with attributes
23
23
  def initialize(attributes = {})
24
24
  super(attributes)
25
25
  @name = attributes[:name] || attributes['name']
26
- @harm_labels = attributes[:harm_labels] || attributes['harm_labels'] || nil
27
- @phrase_list_ids = attributes[:phrase_list_ids] || attributes['phrase_list_ids'] || nil
26
+ @display_name = attributes[:display_name] || attributes['display_name'] || nil
27
+ @text_type = attributes[:text_type] || attributes['text_type'] || nil
28
28
  end
29
29
 
30
30
  # Override field mappings for JSON serialization
31
31
  def self.json_field_mappings
32
32
  {
33
33
  name: 'name',
34
- harm_labels: 'harm_labels',
35
- phrase_list_ids: 'phrase_list_ids'
34
+ display_name: 'display_name',
35
+ text_type: 'text_type'
36
36
  }
37
37
  end
38
38
  end
@@ -6,9 +6,12 @@ module GetStream
6
6
  module Generated
7
7
  module Models
8
8
  #
9
- class DeleteBookmarkFolderRequest < GetStream::BaseModel
9
+ class BulkDeleteActionConfigRequest < GetStream::BaseModel
10
10
 
11
11
  # Model attributes
12
+ # @!attribute ids
13
+ # @return [Array<String>] UUIDs of the action configs to delete
14
+ attr_accessor :ids
12
15
  # @!attribute user_id
13
16
  # @return [String]
14
17
  attr_accessor :user_id
@@ -19,6 +22,7 @@ module GetStream
19
22
  # Initialize with attributes
20
23
  def initialize(attributes = {})
21
24
  super(attributes)
25
+ @ids = attributes[:ids] || attributes['ids']
22
26
  @user_id = attributes[:user_id] || attributes['user_id'] || nil
23
27
  @user = attributes[:user] || attributes['user'] || nil
24
28
  end
@@ -26,6 +30,7 @@ module GetStream
26
30
  # Override field mappings for JSON serialization
27
31
  def self.json_field_mappings
28
32
  {
33
+ ids: 'ids',
29
34
  user_id: 'user_id',
30
35
  user: 'user'
31
36
  }
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT.
4
+
5
+ module GetStream
6
+ module Generated
7
+ module Models
8
+ #
9
+ class BulkDeleteActionConfigResponse < GetStream::BaseModel
10
+
11
+ # Model attributes
12
+ # @!attribute deleted
13
+ # @return [Integer] Number of action configs deleted
14
+ attr_accessor :deleted
15
+ # @!attribute duration
16
+ # @return [String]
17
+ attr_accessor :duration
18
+
19
+ # Initialize with attributes
20
+ def initialize(attributes = {})
21
+ super(attributes)
22
+ @deleted = attributes[:deleted] || attributes['deleted']
23
+ @duration = attributes[:duration] || attributes['duration']
24
+ end
25
+
26
+ # Override field mappings for JSON serialization
27
+ def self.json_field_mappings
28
+ {
29
+ deleted: 'deleted',
30
+ duration: 'duration'
31
+ }
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end