getstream-ruby 7.1.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. checksums.yaml +4 -4
  2. data/lib/getstream_ruby/client.rb +11 -1
  3. data/lib/getstream_ruby/generated/chat_client.rb +57 -0
  4. data/lib/getstream_ruby/generated/common_client.rb +16 -0
  5. data/lib/getstream_ruby/generated/feeds_client.rb +55 -0
  6. data/lib/getstream_ruby/generated/models/add_segment_targets_request.rb +31 -0
  7. data/lib/getstream_ruby/generated/models/analyze_image_field.rb +56 -0
  8. data/lib/getstream_ruby/generated/models/analyze_request.rb +81 -0
  9. data/lib/getstream_ruby/generated/models/analyze_response.rb +46 -0
  10. data/lib/getstream_ruby/generated/models/analyze_text_field.rb +56 -0
  11. data/lib/getstream_ruby/generated/models/app_response_fields.rb +15 -0
  12. data/lib/getstream_ruby/generated/models/appeal_item_response.rb +60 -0
  13. data/lib/getstream_ruby/generated/models/appeal_request.rb +5 -0
  14. data/lib/getstream_ruby/generated/models/block_list_response.rb +10 -0
  15. data/lib/getstream_ruby/generated/models/bulk_action_appeals_request.rb +71 -0
  16. data/lib/getstream_ruby/generated/models/bulk_action_appeals_response.rb +41 -0
  17. data/lib/getstream_ruby/generated/models/bulk_appeal_error.rb +36 -0
  18. data/lib/getstream_ruby/generated/models/bulk_appeal_result.rb +36 -0
  19. data/lib/getstream_ruby/generated/models/call_stats_participant_counts.rb +10 -0
  20. data/lib/getstream_ruby/generated/models/cancel_import_v2_task_request.rb +14 -0
  21. data/lib/getstream_ruby/generated/models/cancel_import_v2_task_response.rb +31 -0
  22. data/lib/getstream_ruby/generated/models/channel_config_overrides.rb +106 -0
  23. data/lib/getstream_ruby/generated/models/channel_data_update.rb +1 -1
  24. data/lib/getstream_ruby/generated/models/channel_input.rb +1 -1
  25. data/lib/getstream_ruby/generated/models/chat_message_response.rb +5 -0
  26. data/lib/getstream_ruby/generated/models/classification.rb +46 -0
  27. data/lib/getstream_ruby/generated/models/client_event.rb +156 -0
  28. data/lib/getstream_ruby/generated/models/closed_caption_rule_parameters.rb +5 -0
  29. data/lib/getstream_ruby/generated/models/config_response.rb +5 -0
  30. data/lib/getstream_ruby/generated/models/content_custom_property_count_parameters.rb +46 -0
  31. data/lib/getstream_ruby/generated/models/content_custom_property_parameters.rb +36 -0
  32. data/lib/getstream_ruby/generated/models/create_block_list_request.rb +10 -0
  33. data/lib/getstream_ruby/generated/models/create_device_request.rb +5 -0
  34. data/lib/getstream_ruby/generated/models/create_segment_request.rb +61 -0
  35. data/lib/getstream_ruby/generated/models/create_segment_response.rb +36 -0
  36. data/lib/getstream_ruby/generated/models/delivery_receipts_response.rb +1 -1
  37. data/lib/getstream_ruby/generated/models/device_response.rb +5 -0
  38. data/lib/getstream_ruby/generated/models/filter_config_response.rb +9 -4
  39. data/lib/getstream_ruby/generated/models/flag_details.rb +36 -0
  40. data/lib/getstream_ruby/generated/models/flag_item_response.rb +36 -0
  41. data/lib/getstream_ruby/generated/models/flag_response.rb +69 -9
  42. data/lib/getstream_ruby/generated/models/flood_config.rb +36 -0
  43. data/lib/getstream_ruby/generated/models/flood_identical_config.rb +46 -0
  44. data/lib/getstream_ruby/generated/models/flood_similar_config.rb +51 -0
  45. data/lib/getstream_ruby/generated/models/follow_request.rb +1 -1
  46. data/lib/getstream_ruby/generated/models/get_or_create_feed_request.rb +5 -0
  47. data/lib/getstream_ruby/generated/models/get_or_create_follow_response.rb +46 -0
  48. data/lib/getstream_ruby/generated/models/get_or_create_unfollow_request.rb +51 -0
  49. data/lib/getstream_ruby/generated/models/get_or_create_unfollow_response.rb +41 -0
  50. data/lib/getstream_ruby/generated/models/get_setup_session_response.rb +36 -0
  51. data/lib/getstream_ruby/generated/models/get_user_interests_response.rb +36 -0
  52. data/lib/getstream_ruby/generated/models/grouped_channels_bucket.rb +10 -0
  53. data/lib/getstream_ruby/generated/models/grouped_channels_group_request.rb +41 -0
  54. data/lib/getstream_ruby/generated/models/grouped_query_channels_request.rb +6 -1
  55. data/lib/getstream_ruby/generated/models/import_v2_task_settings.rb +5 -0
  56. data/lib/getstream_ruby/generated/models/interest_tag_response.rb +36 -0
  57. data/lib/getstream_ruby/generated/models/keyframe_ocr_rule_parameters.rb +41 -0
  58. data/lib/getstream_ruby/generated/models/keyframe_rule_parameters.rb +5 -0
  59. data/lib/getstream_ruby/generated/models/label_result_response.rb +5 -0
  60. data/lib/getstream_ruby/generated/models/labels_request.rb +1 -1
  61. data/lib/getstream_ruby/generated/models/labels_response.rb +5 -0
  62. data/lib/getstream_ruby/generated/models/llm_rule.rb +5 -5
  63. data/lib/getstream_ruby/generated/models/matched_content.rb +61 -0
  64. data/lib/getstream_ruby/generated/models/message_response.rb +5 -0
  65. data/lib/getstream_ruby/generated/models/message_with_channel_response.rb +5 -0
  66. data/lib/getstream_ruby/generated/models/moderation_ban_response.rb +31 -0
  67. data/lib/getstream_ruby/generated/models/moderation_config.rb +5 -0
  68. data/lib/getstream_ruby/generated/models/moderation_dashboard_preferences.rb +15 -0
  69. data/lib/getstream_ruby/generated/models/moderation_image_analysis_complete_event.rb +81 -0
  70. data/lib/getstream_ruby/generated/models/moderation_rules_triggered_event.rb +6 -1
  71. data/lib/getstream_ruby/generated/models/moderation_text_analysis_complete_event.rb +76 -0
  72. data/lib/getstream_ruby/generated/models/query_moderation_rules_response.rb +10 -0
  73. data/lib/getstream_ruby/generated/models/query_review_queue_request.rb +1 -1
  74. data/lib/getstream_ruby/generated/models/read_receipts_response.rb +1 -1
  75. data/lib/getstream_ruby/generated/models/report_client_event_request.rb +31 -0
  76. data/lib/getstream_ruby/generated/models/report_client_event_response.rb +31 -0
  77. data/lib/getstream_ruby/generated/models/rule_builder_action.rb +5 -0
  78. data/lib/getstream_ruby/generated/models/rule_builder_condition.rb +15 -0
  79. data/lib/getstream_ruby/generated/models/search_result_message.rb +5 -0
  80. data/lib/getstream_ruby/generated/models/setup_session.rb +56 -0
  81. data/lib/getstream_ruby/generated/models/submit_action_response.rb +5 -0
  82. data/lib/getstream_ruby/generated/models/target_resolution.rb +6 -6
  83. data/lib/getstream_ruby/generated/models/text_content_parameters.rb +10 -0
  84. data/lib/getstream_ruby/generated/models/translation_settings.rb +2 -2
  85. data/lib/getstream_ruby/generated/models/typing_indicators_response.rb +1 -1
  86. data/lib/getstream_ruby/generated/models/update_app_request.rb +15 -0
  87. data/lib/getstream_ruby/generated/models/update_block_list_request.rb +10 -0
  88. data/lib/getstream_ruby/generated/models/update_follow_request.rb +1 -1
  89. data/lib/getstream_ruby/generated/models/update_segment_request.rb +41 -0
  90. data/lib/getstream_ruby/generated/models/update_segment_response.rb +36 -0
  91. data/lib/getstream_ruby/generated/models/upsert_config_request.rb +5 -0
  92. data/lib/getstream_ruby/generated/models/upsert_setup_session_request.rb +41 -0
  93. data/lib/getstream_ruby/generated/models/upsert_setup_session_response.rb +36 -0
  94. data/lib/getstream_ruby/generated/models/user_banned_event.rb +5 -0
  95. data/lib/getstream_ruby/generated/moderation_client.rb +66 -2
  96. data/lib/getstream_ruby/generated/video_client.rb +17 -0
  97. data/lib/getstream_ruby/generated/webhook.rb +8 -0
  98. data/lib/getstream_ruby/version.rb +1 -1
  99. metadata +44 -2
@@ -0,0 +1,41 @@
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 KeyframeOCRRuleParameters < GetStream::BaseModel
10
+
11
+ # Model attributes
12
+ # @!attribute threshold
13
+ # @return [Integer]
14
+ attr_accessor :threshold
15
+ # @!attribute time_window
16
+ # @return [String]
17
+ attr_accessor :time_window
18
+ # @!attribute harm_labels
19
+ # @return [Array<String>]
20
+ attr_accessor :harm_labels
21
+
22
+ # Initialize with attributes
23
+ def initialize(attributes = {})
24
+ super(attributes)
25
+ @threshold = attributes[:threshold] || attributes['threshold'] || nil
26
+ @time_window = attributes[:time_window] || attributes['time_window'] || nil
27
+ @harm_labels = attributes[:harm_labels] || attributes['harm_labels'] || nil
28
+ end
29
+
30
+ # Override field mappings for JSON serialization
31
+ def self.json_field_mappings
32
+ {
33
+ threshold: 'threshold',
34
+ time_window: 'time_window',
35
+ harm_labels: 'harm_labels'
36
+ }
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -15,6 +15,9 @@ module GetStream
15
15
  # @!attribute threshold
16
16
  # @return [Integer]
17
17
  attr_accessor :threshold
18
+ # @!attribute time_window
19
+ # @return [String]
20
+ attr_accessor :time_window
18
21
  # @!attribute harm_labels
19
22
  # @return [Array<String>]
20
23
  attr_accessor :harm_labels
@@ -24,6 +27,7 @@ module GetStream
24
27
  super(attributes)
25
28
  @min_confidence = attributes[:min_confidence] || attributes['min_confidence'] || nil
26
29
  @threshold = attributes[:threshold] || attributes['threshold'] || nil
30
+ @time_window = attributes[:time_window] || attributes['time_window'] || nil
27
31
  @harm_labels = attributes[:harm_labels] || attributes['harm_labels'] || nil
28
32
  end
29
33
 
@@ -32,6 +36,7 @@ module GetStream
32
36
  {
33
37
  min_confidence: 'min_confidence',
34
38
  threshold: 'threshold',
39
+ time_window: 'time_window',
35
40
  harm_labels: 'harm_labels'
36
41
  }
37
42
  end
@@ -45,6 +45,9 @@ module GetStream
45
45
  # @!attribute directed_at
46
46
  # @return [String] Who the content is directed at (USER, GROUP, EVERYONE, NONE, etc.)
47
47
  attr_accessor :directed_at
48
+ # @!attribute fully_masked_content
49
+ # @return [String] The stored content with every non-whitespace character masked. Present only when recommended_action is not 'keep'. Derived at runtime and never stored.
50
+ attr_accessor :fully_masked_content
48
51
  # @!attribute masked_content
49
52
  # @return [String] Content with blocklisted tokens masked (when a blocklist rule with action=mask rewrote the original)
50
53
  attr_accessor :masked_content
@@ -70,6 +73,7 @@ module GetStream
70
73
  @labels = attributes[:labels] || attributes['labels']
71
74
  @content_id = attributes[:content_id] || attributes['content_id'] || nil
72
75
  @directed_at = attributes[:directed_at] || attributes['directed_at'] || nil
76
+ @fully_masked_content = attributes[:fully_masked_content] || attributes['fully_masked_content'] || nil
73
77
  @masked_content = attributes[:masked_content] || attributes['masked_content'] || nil
74
78
  @policy = attributes[:policy] || attributes['policy'] || nil
75
79
  @user_id = attributes[:user_id] || attributes['user_id'] || nil
@@ -90,6 +94,7 @@ module GetStream
90
94
  labels: 'labels',
91
95
  content_id: 'content_id',
92
96
  directed_at: 'directed_at',
97
+ fully_masked_content: 'fully_masked_content',
93
98
  masked_content: 'masked_content',
94
99
  policy: 'policy',
95
100
  user_id: 'user_id'
@@ -25,7 +25,7 @@ module GetStream
25
25
  # @return [Boolean] When true, run moderation and return labels without persisting the result. Useful for one-off checks (e.g. UI testers) that should not be recorded in the stored history.
26
26
  attr_accessor :dry_run
27
27
  # @!attribute policy
28
- # @return [String] Optional moderation policy key (max 128 chars)
28
+ # @return [String] Optional moderation policy key (max 128 chars). For username moderation, set this to a policy whose key starts with 'username:' (e.g. 'username:default') to opt into the low-latency fast-path: blocklists (customer + Stream-managed defaults) short-circuit the LLM, and the LLM fallback uses gpt-4.1-nano with a 24h Valkey verdict cache. Without a 'username:' prefix the request falls through to the standard Bodyguard Analyze v1 username path.
29
29
  attr_accessor :policy
30
30
  # @!attribute user_id
31
31
  # @return [String] Optional customer-supplied user identifier for the content author (max 256 chars). Enables filtering stored results by user_id.
@@ -21,6 +21,9 @@ module GetStream
21
21
  # @!attribute directed_at
22
22
  # @return [String] Who the content is directed at (USER, GROUP, EVERYONE, NONE, etc.), when the provider exposes it
23
23
  attr_accessor :directed_at
24
+ # @!attribute fully_masked_content
25
+ # @return [String] The original content with every non-whitespace character masked. Present only when recommended_action is not 'keep'. Derived at runtime and never stored.
26
+ attr_accessor :fully_masked_content
24
27
  # @!attribute harm_type
25
28
  # @return [String] High-level harm category
26
29
  attr_accessor :harm_type
@@ -44,6 +47,7 @@ module GetStream
44
47
  @recommended_action = attributes[:recommended_action] || attributes['recommended_action']
45
48
  @content_id = attributes[:content_id] || attributes['content_id'] || nil
46
49
  @directed_at = attributes[:directed_at] || attributes['directed_at'] || nil
50
+ @fully_masked_content = attributes[:fully_masked_content] || attributes['fully_masked_content'] || nil
47
51
  @harm_type = attributes[:harm_type] || attributes['harm_type'] || nil
48
52
  @language = attributes[:language] || attributes['language'] || nil
49
53
  @masked_content = attributes[:masked_content] || attributes['masked_content'] || nil
@@ -58,6 +62,7 @@ module GetStream
58
62
  recommended_action: 'recommended_action',
59
63
  content_id: 'content_id',
60
64
  directed_at: 'directed_at',
65
+ fully_masked_content: 'fully_masked_content',
61
66
  harm_type: 'harm_type',
62
67
  language: 'language',
63
68
  masked_content: 'masked_content',
@@ -9,15 +9,15 @@ module GetStream
9
9
  class LLMRule < GetStream::BaseModel
10
10
 
11
11
  # Model attributes
12
- # @!attribute description
13
- # @return [String]
14
- attr_accessor :description
15
12
  # @!attribute label
16
13
  # @return [String]
17
14
  attr_accessor :label
18
15
  # @!attribute action
19
16
  # @return [String]
20
17
  attr_accessor :action
18
+ # @!attribute description
19
+ # @return [String]
20
+ attr_accessor :description
21
21
  # @!attribute severity_rules
22
22
  # @return [Array<BodyguardSeverityRule>]
23
23
  attr_accessor :severity_rules
@@ -25,18 +25,18 @@ module GetStream
25
25
  # Initialize with attributes
26
26
  def initialize(attributes = {})
27
27
  super(attributes)
28
- @description = attributes[:description] || attributes['description']
29
28
  @label = attributes[:label] || attributes['label']
30
29
  @action = attributes[:action] || attributes['action'] || nil
30
+ @description = attributes[:description] || attributes['description'] || nil
31
31
  @severity_rules = attributes[:severity_rules] || attributes['severity_rules'] || nil
32
32
  end
33
33
 
34
34
  # Override field mappings for JSON serialization
35
35
  def self.json_field_mappings
36
36
  {
37
- description: 'description',
38
37
  label: 'label',
39
38
  action: 'action',
39
+ description: 'description',
40
40
  severity_rules: 'severity_rules'
41
41
  }
42
42
  end
@@ -0,0 +1,61 @@
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 MatchedContent < GetStream::BaseModel
10
+
11
+ # Model attributes
12
+ # @!attribute id
13
+ # @return [String] The `content_ids[label]` value supplied on the `/analyze` request that contributed this entry.
14
+ attr_accessor :id
15
+ # @!attribute published_at
16
+ # @return [DateTime] `content_published_at` from the contributing `/analyze` request, or server receive time when that field was omitted.
17
+ attr_accessor :published_at
18
+ # @!attribute type
19
+ # @return [String] Content type that contributed this entry: `image` or `text`.
20
+ attr_accessor :type
21
+ # @!attribute confidence
22
+ # @return [Float] Image-classification entries only. Aggregate (max) confidence score across the entry's classifications + sub-classifications. Absent on text and OCR entries.
23
+ attr_accessor :confidence
24
+ # @!attribute severity
25
+ # @return [String] Text and OCR entries. Aggregate (max) Bodyguard severity level (`LOW` / `MEDIUM` / `HIGH` / `CRITICAL`). Absent on image-classification entries.
26
+ attr_accessor :severity
27
+ # @!attribute classifications
28
+ # @return [Array<Classification>] Image-classification entries (keyframe rule, Type=image) carry nested L1 → L2 classifications. Text entries (closed_caption rule, Type=text) carry flat label + severity. Resolved against the app's effective taxonomy on the image side.
29
+ attr_accessor :classifications
30
+ # @!attribute ocr_classifications
31
+ # @return [Array<Classification>] OCR entries only (keyframe_ocr rule, Type=image). Bodyguard labels that fired against the keyframe's OCR-extracted text (e.g. `INSULT`, `HATE_SPEECH`). Distinct from `classifications` so consumers can route OCR matches separately from image-classification matches.
32
+ attr_accessor :ocr_classifications
33
+
34
+ # Initialize with attributes
35
+ def initialize(attributes = {})
36
+ super(attributes)
37
+ @id = attributes[:id] || attributes['id']
38
+ @published_at = attributes[:published_at] || attributes['published_at']
39
+ @type = attributes[:type] || attributes['type']
40
+ @confidence = attributes[:confidence] || attributes['confidence'] || nil
41
+ @severity = attributes[:severity] || attributes['severity'] || nil
42
+ @classifications = attributes[:classifications] || attributes['classifications'] || nil
43
+ @ocr_classifications = attributes[:ocr_classifications] || attributes['ocr_classifications'] || nil
44
+ end
45
+
46
+ # Override field mappings for JSON serialization
47
+ def self.json_field_mappings
48
+ {
49
+ id: 'id',
50
+ published_at: 'published_at',
51
+ type: 'type',
52
+ confidence: 'confidence',
53
+ severity: 'severity',
54
+ classifications: 'classifications',
55
+ ocr_classifications: 'ocr_classifications'
56
+ }
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -114,6 +114,9 @@ module GetStream
114
114
  # @!attribute mentioned_group_ids
115
115
  # @return [Array<String>] List of user group IDs mentioned in the message. Group members who are also channel members will receive push notifications based on their push preferences. Max 10 groups
116
116
  attr_accessor :mentioned_group_ids
117
+ # @!attribute mentioned_groups
118
+ # @return [Array<UserGroupResponse>] List of mentioned user group objects.
119
+ attr_accessor :mentioned_groups
117
120
  # @!attribute mentioned_roles
118
121
  # @return [Array<String>] List of roles mentioned in the message (e.g. admin, channel_moderator, custom roles). Members with matching roles will receive push notifications based on their push preferences. Max 10 roles
119
122
  attr_accessor :mentioned_roles
@@ -192,6 +195,7 @@ module GetStream
192
195
  @quoted_message_id = attributes[:quoted_message_id] || attributes['quoted_message_id'] || nil
193
196
  @show_in_channel = attributes[:show_in_channel] || attributes['show_in_channel'] || nil
194
197
  @mentioned_group_ids = attributes[:mentioned_group_ids] || attributes['mentioned_group_ids'] || nil
198
+ @mentioned_groups = attributes[:mentioned_groups] || attributes['mentioned_groups'] || nil
195
199
  @mentioned_roles = attributes[:mentioned_roles] || attributes['mentioned_roles'] || nil
196
200
  @thread_participants = attributes[:thread_participants] || attributes['thread_participants'] || nil
197
201
  @draft = attributes[:draft] || attributes['draft'] || nil
@@ -245,6 +249,7 @@ module GetStream
245
249
  quoted_message_id: 'quoted_message_id',
246
250
  show_in_channel: 'show_in_channel',
247
251
  mentioned_group_ids: 'mentioned_group_ids',
252
+ mentioned_groups: 'mentioned_groups',
248
253
  mentioned_roles: 'mentioned_roles',
249
254
  thread_participants: 'thread_participants',
250
255
  draft: 'draft',
@@ -117,6 +117,9 @@ module GetStream
117
117
  # @!attribute mentioned_group_ids
118
118
  # @return [Array<String>] List of user group IDs mentioned in the message. Group members who are also channel members will receive push notifications based on their push preferences. Max 10 groups
119
119
  attr_accessor :mentioned_group_ids
120
+ # @!attribute mentioned_groups
121
+ # @return [Array<UserGroupResponse>] List of mentioned user group objects.
122
+ attr_accessor :mentioned_groups
120
123
  # @!attribute mentioned_roles
121
124
  # @return [Array<String>] List of roles mentioned in the message (e.g. admin, channel_moderator, custom roles). Members with matching roles will receive push notifications based on their push preferences. Max 10 roles
122
125
  attr_accessor :mentioned_roles
@@ -196,6 +199,7 @@ module GetStream
196
199
  @quoted_message_id = attributes[:quoted_message_id] || attributes['quoted_message_id'] || nil
197
200
  @show_in_channel = attributes[:show_in_channel] || attributes['show_in_channel'] || nil
198
201
  @mentioned_group_ids = attributes[:mentioned_group_ids] || attributes['mentioned_group_ids'] || nil
202
+ @mentioned_groups = attributes[:mentioned_groups] || attributes['mentioned_groups'] || nil
199
203
  @mentioned_roles = attributes[:mentioned_roles] || attributes['mentioned_roles'] || nil
200
204
  @thread_participants = attributes[:thread_participants] || attributes['thread_participants'] || nil
201
205
  @draft = attributes[:draft] || attributes['draft'] || nil
@@ -250,6 +254,7 @@ module GetStream
250
254
  quoted_message_id: 'quoted_message_id',
251
255
  show_in_channel: 'show_in_channel',
252
256
  mentioned_group_ids: 'mentioned_group_ids',
257
+ mentioned_groups: 'mentioned_groups',
253
258
  mentioned_roles: 'mentioned_roles',
254
259
  thread_participants: 'thread_participants',
255
260
  draft: 'draft',
@@ -0,0 +1,31 @@
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 ModerationBanResponse < GetStream::BaseModel
10
+
11
+ # Model attributes
12
+ # @!attribute duration
13
+ # @return [String]
14
+ attr_accessor :duration
15
+
16
+ # Initialize with attributes
17
+ def initialize(attributes = {})
18
+ super(attributes)
19
+ @duration = attributes[:duration] || attributes['duration']
20
+ end
21
+
22
+ # Override field mappings for JSON serialization
23
+ def self.json_field_mappings
24
+ {
25
+ duration: 'duration'
26
+ }
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -51,6 +51,9 @@ module GetStream
51
51
  # @!attribute block_list_config
52
52
  # @return [BlockListConfig]
53
53
  attr_accessor :block_list_config
54
+ # @!attribute flood_config
55
+ # @return [FloodConfig]
56
+ attr_accessor :flood_config
54
57
  # @!attribute google_vision_config
55
58
  # @return [GoogleVisionConfig]
56
59
  attr_accessor :google_vision_config
@@ -81,6 +84,7 @@ module GetStream
81
84
  @automod_semantic_filters_config = attributes[:automod_semantic_filters_config] || attributes['automod_semantic_filters_config'] || nil
82
85
  @automod_toxicity_config = attributes[:automod_toxicity_config] || attributes['automod_toxicity_config'] || nil
83
86
  @block_list_config = attributes[:block_list_config] || attributes['block_list_config'] || nil
87
+ @flood_config = attributes[:flood_config] || attributes['flood_config'] || nil
84
88
  @google_vision_config = attributes[:google_vision_config] || attributes['google_vision_config'] || nil
85
89
  @llm_config = attributes[:llm_config] || attributes['llm_config'] || nil
86
90
  @velocity_filter_config = attributes[:velocity_filter_config] || attributes['velocity_filter_config'] || nil
@@ -104,6 +108,7 @@ module GetStream
104
108
  automod_semantic_filters_config: 'automod_semantic_filters_config',
105
109
  automod_toxicity_config: 'automod_toxicity_config',
106
110
  block_list_config: 'block_list_config',
111
+ flood_config: 'flood_config',
107
112
  google_vision_config: 'google_vision_config',
108
113
  llm_config: 'llm_config',
109
114
  velocity_filter_config: 'velocity_filter_config',
@@ -9,6 +9,9 @@ module GetStream
9
9
  class ModerationDashboardPreferences < GetStream::BaseModel
10
10
 
11
11
  # Model attributes
12
+ # @!attribute analyze_max_image_size_bytes
13
+ # @return [Integer]
14
+ attr_accessor :analyze_max_image_size_bytes
12
15
  # @!attribute async_review_queue_upsert
13
16
  # @return [Boolean]
14
17
  attr_accessor :async_review_queue_upsert
@@ -30,12 +33,18 @@ module GetStream
30
33
  # @!attribute media_queue_blur_enabled
31
34
  # @return [Boolean]
32
35
  attr_accessor :media_queue_blur_enabled
36
+ # @!attribute webhook_header_client_request_id_key
37
+ # @return [String]
38
+ attr_accessor :webhook_header_client_request_id_key
33
39
  # @!attribute allowed_moderation_action_reasons
34
40
  # @return [Array<String>]
35
41
  attr_accessor :allowed_moderation_action_reasons
36
42
  # @!attribute escalation_reasons
37
43
  # @return [Array<String>]
38
44
  attr_accessor :escalation_reasons
45
+ # @!attribute filterable_custom_keys
46
+ # @return [Array<String>]
47
+ attr_accessor :filterable_custom_keys
39
48
  # @!attribute keyframe_classifications_map
40
49
  # @return [Hash<String, Hash<String, Boolean>>]
41
50
  attr_accessor :keyframe_classifications_map
@@ -46,6 +55,7 @@ module GetStream
46
55
  # Initialize with attributes
47
56
  def initialize(attributes = {})
48
57
  super(attributes)
58
+ @analyze_max_image_size_bytes = attributes[:analyze_max_image_size_bytes] || attributes['analyze_max_image_size_bytes'] || nil
49
59
  @async_review_queue_upsert = attributes[:async_review_queue_upsert] || attributes['async_review_queue_upsert'] || nil
50
60
  @disable_audit_logs = attributes[:disable_audit_logs] || attributes['disable_audit_logs'] || nil
51
61
  @disable_flagging_reviewed_entity = attributes[:disable_flagging_reviewed_entity] || attributes['disable_flagging_reviewed_entity'] || nil
@@ -53,8 +63,10 @@ module GetStream
53
63
  @flag_user_on_flagged_content = attributes[:flag_user_on_flagged_content] || attributes['flag_user_on_flagged_content'] || nil
54
64
  @include_attachment_payload = attributes[:include_attachment_payload] || attributes['include_attachment_payload'] || nil
55
65
  @media_queue_blur_enabled = attributes[:media_queue_blur_enabled] || attributes['media_queue_blur_enabled'] || nil
66
+ @webhook_header_client_request_id_key = attributes[:webhook_header_client_request_id_key] || attributes['webhook_header_client_request_id_key'] || nil
56
67
  @allowed_moderation_action_reasons = attributes[:allowed_moderation_action_reasons] || attributes['allowed_moderation_action_reasons'] || nil
57
68
  @escalation_reasons = attributes[:escalation_reasons] || attributes['escalation_reasons'] || nil
69
+ @filterable_custom_keys = attributes[:filterable_custom_keys] || attributes['filterable_custom_keys'] || nil
58
70
  @keyframe_classifications_map = attributes[:keyframe_classifications_map] || attributes['keyframe_classifications_map'] || nil
59
71
  @overview_dashboard = attributes[:overview_dashboard] || attributes['overview_dashboard'] || nil
60
72
  end
@@ -62,6 +74,7 @@ module GetStream
62
74
  # Override field mappings for JSON serialization
63
75
  def self.json_field_mappings
64
76
  {
77
+ analyze_max_image_size_bytes: 'analyze_max_image_size_bytes',
65
78
  async_review_queue_upsert: 'async_review_queue_upsert',
66
79
  disable_audit_logs: 'disable_audit_logs',
67
80
  disable_flagging_reviewed_entity: 'disable_flagging_reviewed_entity',
@@ -69,8 +82,10 @@ module GetStream
69
82
  flag_user_on_flagged_content: 'flag_user_on_flagged_content',
70
83
  include_attachment_payload: 'include_attachment_payload',
71
84
  media_queue_blur_enabled: 'media_queue_blur_enabled',
85
+ webhook_header_client_request_id_key: 'webhook_header_client_request_id_key',
72
86
  allowed_moderation_action_reasons: 'allowed_moderation_action_reasons',
73
87
  escalation_reasons: 'escalation_reasons',
88
+ filterable_custom_keys: 'filterable_custom_keys',
74
89
  keyframe_classifications_map: 'keyframe_classifications_map',
75
90
  overview_dashboard: 'overview_dashboard'
76
91
  }
@@ -0,0 +1,81 @@
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
+ # Per-image moderation verdict from /analyze. Fires on every /analyze call that included image inputs (callers also get the verdict on the HTTP response — this event is the audit / reconciliation tap). For the /analyze origin it replaces the legacy review_queue_item.* + moderation_check.completed events.
9
+ class ModerationImageAnalysisCompleteEvent < GetStream::BaseModel
10
+
11
+ # Model attributes
12
+ # @!attribute created_at
13
+ # @return [DateTime]
14
+ attr_accessor :created_at
15
+ # @!attribute type
16
+ # @return [String]
17
+ attr_accessor :type
18
+ # @!attribute config_key
19
+ # @return [String] The moderation policy key that was applied.
20
+ attr_accessor :config_key
21
+ # @!attribute entity_creator_id
22
+ # @return [String] Echo of the `entity_creator_id` on the /analyze request.
23
+ attr_accessor :entity_creator_id
24
+ # @!attribute entity_id
25
+ # @return [String] Echo of the `entity_id` on the /analyze request.
26
+ attr_accessor :entity_id
27
+ # @!attribute entity_type
28
+ # @return [String] Echo of the `entity_type` on the /analyze request.
29
+ attr_accessor :entity_type
30
+ # @!attribute received_at
31
+ # @return [DateTime]
32
+ attr_accessor :received_at
33
+ # @!attribute review_queue_item_id
34
+ # @return [String] Review queue row ID for deep-linking into the dashboard.
35
+ attr_accessor :review_queue_item_id
36
+ # @!attribute custom
37
+ # @return [Object] Echo of the `custom` metadata on the /analyze request.
38
+ attr_accessor :custom
39
+ # @!attribute images
40
+ # @return [Hash<String, AnalyzeImageField>] Per-image verdicts, same shape as the /analyze HTTP response. Each entry carries `id` when the request supplied `content_ids`.
41
+ attr_accessor :images
42
+ # @!attribute texts
43
+ # @return [Hash<String, AnalyzeTextField>] Per-text-field verdicts, same shape as the /analyze HTTP response. Each entry carries `id` when the request supplied `content_ids`.
44
+ attr_accessor :texts
45
+
46
+ # Initialize with attributes
47
+ def initialize(attributes = {})
48
+ super(attributes)
49
+ @created_at = attributes[:created_at] || attributes['created_at']
50
+ @type = attributes[:type] || attributes['type'] || "moderation.image_analysis.complete"
51
+ @config_key = attributes[:config_key] || attributes['config_key'] || nil
52
+ @entity_creator_id = attributes[:entity_creator_id] || attributes['entity_creator_id'] || nil
53
+ @entity_id = attributes[:entity_id] || attributes['entity_id'] || nil
54
+ @entity_type = attributes[:entity_type] || attributes['entity_type'] || nil
55
+ @received_at = attributes[:received_at] || attributes['received_at'] || nil
56
+ @review_queue_item_id = attributes[:review_queue_item_id] || attributes['review_queue_item_id'] || nil
57
+ @custom = attributes[:custom] || attributes['custom'] || nil
58
+ @images = attributes[:images] || attributes['images'] || nil
59
+ @texts = attributes[:texts] || attributes['texts'] || nil
60
+ end
61
+
62
+ # Override field mappings for JSON serialization
63
+ def self.json_field_mappings
64
+ {
65
+ created_at: 'created_at',
66
+ type: 'type',
67
+ config_key: 'config_key',
68
+ entity_creator_id: 'entity_creator_id',
69
+ entity_id: 'entity_id',
70
+ entity_type: 'entity_type',
71
+ received_at: 'received_at',
72
+ review_queue_item_id: 'review_queue_item_id',
73
+ custom: 'custom',
74
+ images: 'images',
75
+ texts: 'texts'
76
+ }
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -42,6 +42,9 @@ module GetStream
42
42
  # @!attribute violation_number
43
43
  # @return [Integer] The violation number for call rules (optional)
44
44
  attr_accessor :violation_number
45
+ # @!attribute matched_contents
46
+ # @return [Array<MatchedContent>] Ordered list of contents whose verdicts contributed to an aggregation rule's threshold. Populated only for aggregation rules when callers supplied `content_ids`.
47
+ attr_accessor :matched_contents
45
48
 
46
49
  # Initialize with attributes
47
50
  def initialize(attributes = {})
@@ -57,6 +60,7 @@ module GetStream
57
60
  @received_at = attributes[:received_at] || attributes['received_at'] || nil
58
61
  @review_queue_item_id = attributes[:review_queue_item_id] || attributes['review_queue_item_id'] || nil
59
62
  @violation_number = attributes[:violation_number] || attributes['violation_number'] || nil
63
+ @matched_contents = attributes[:matched_contents] || attributes['matched_contents'] || nil
60
64
  end
61
65
 
62
66
  # Override field mappings for JSON serialization
@@ -72,7 +76,8 @@ module GetStream
72
76
  type: 'type',
73
77
  received_at: 'received_at',
74
78
  review_queue_item_id: 'review_queue_item_id',
75
- violation_number: 'violation_number'
79
+ violation_number: 'violation_number',
80
+ matched_contents: 'matched_contents'
76
81
  }
77
82
  end
78
83
  end
@@ -0,0 +1,76 @@
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
+ # Per-text moderation verdict from /analyze. Fires on every /analyze call that included text inputs. Sibling of moderation.image_analysis.complete with the same audit / reconciliation purpose; for the /analyze origin this event replaces the legacy review_queue_item.* + moderation_check.completed events.
9
+ class ModerationTextAnalysisCompleteEvent < GetStream::BaseModel
10
+
11
+ # Model attributes
12
+ # @!attribute created_at
13
+ # @return [DateTime]
14
+ attr_accessor :created_at
15
+ # @!attribute type
16
+ # @return [String]
17
+ attr_accessor :type
18
+ # @!attribute config_key
19
+ # @return [String] The moderation policy key that was applied.
20
+ attr_accessor :config_key
21
+ # @!attribute entity_creator_id
22
+ # @return [String] Echo of the `entity_creator_id` on the /analyze request.
23
+ attr_accessor :entity_creator_id
24
+ # @!attribute entity_id
25
+ # @return [String] Echo of the `entity_id` on the /analyze request.
26
+ attr_accessor :entity_id
27
+ # @!attribute entity_type
28
+ # @return [String] Echo of the `entity_type` on the /analyze request.
29
+ attr_accessor :entity_type
30
+ # @!attribute received_at
31
+ # @return [DateTime]
32
+ attr_accessor :received_at
33
+ # @!attribute review_queue_item_id
34
+ # @return [String] Review queue row ID for deep-linking into the dashboard.
35
+ attr_accessor :review_queue_item_id
36
+ # @!attribute custom
37
+ # @return [Object] Echo of the `custom` metadata on the /analyze request.
38
+ attr_accessor :custom
39
+ # @!attribute texts
40
+ # @return [Hash<String, AnalyzeTextField>] Per-text-field verdicts, same shape as the /analyze HTTP response. Each entry carries `id` when the request supplied `content_ids`.
41
+ attr_accessor :texts
42
+
43
+ # Initialize with attributes
44
+ def initialize(attributes = {})
45
+ super(attributes)
46
+ @created_at = attributes[:created_at] || attributes['created_at']
47
+ @type = attributes[:type] || attributes['type'] || "moderation.text_analysis.complete"
48
+ @config_key = attributes[:config_key] || attributes['config_key'] || nil
49
+ @entity_creator_id = attributes[:entity_creator_id] || attributes['entity_creator_id'] || nil
50
+ @entity_id = attributes[:entity_id] || attributes['entity_id'] || nil
51
+ @entity_type = attributes[:entity_type] || attributes['entity_type'] || nil
52
+ @received_at = attributes[:received_at] || attributes['received_at'] || nil
53
+ @review_queue_item_id = attributes[:review_queue_item_id] || attributes['review_queue_item_id'] || nil
54
+ @custom = attributes[:custom] || attributes['custom'] || nil
55
+ @texts = attributes[:texts] || attributes['texts'] || nil
56
+ end
57
+
58
+ # Override field mappings for JSON serialization
59
+ def self.json_field_mappings
60
+ {
61
+ created_at: 'created_at',
62
+ type: 'type',
63
+ config_key: 'config_key',
64
+ entity_creator_id: 'entity_creator_id',
65
+ entity_id: 'entity_id',
66
+ entity_type: 'entity_type',
67
+ received_at: 'received_at',
68
+ review_queue_item_id: 'review_queue_item_id',
69
+ custom: 'custom',
70
+ texts: 'texts'
71
+ }
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
@@ -21,6 +21,9 @@ module GetStream
21
21
  # @!attribute keyframe_labels
22
22
  # @return [Array<String>] Deprecated: use keyframe_label_classifications instead. Available L1 harm labels for keyframe rules
23
23
  attr_accessor :keyframe_labels
24
+ # @!attribute ocr_labels
25
+ # @return [Array<String>] Available harm labels for keyframe OCR rules. Mirrors `closed_caption_labels` today but kept as a separate field so the two pickers can diverge later.
26
+ attr_accessor :ocr_labels
24
27
  # @!attribute rules
25
28
  # @return [Array<ModerationRuleV2Response>] List of moderation rules
26
29
  attr_accessor :rules
@@ -30,6 +33,9 @@ module GetStream
30
33
  # @!attribute default_llm_labels
31
34
  # @return [Hash<String, String>] Default LLM label descriptions
32
35
  attr_accessor :default_llm_labels
36
+ # @!attribute default_username_llm_labels
37
+ # @return [Hash<String, String>] Recommended LLM label descriptions for username-scoped policies (key starts with 'username:'). Used by /moderation/v2/labels fast-path.
38
+ attr_accessor :default_username_llm_labels
33
39
  # @!attribute keyframe_label_classifications
34
40
  # @return [Hash<String, Array<String>>] L1 to L2 mapping of keyframe harm label classifications
35
41
  attr_accessor :keyframe_label_classifications
@@ -47,9 +53,11 @@ module GetStream
47
53
  @ai_image_label_definitions = attributes[:ai_image_label_definitions] || attributes['ai_image_label_definitions']
48
54
  @closed_caption_labels = attributes[:closed_caption_labels] || attributes['closed_caption_labels']
49
55
  @keyframe_labels = attributes[:keyframe_labels] || attributes['keyframe_labels']
56
+ @ocr_labels = attributes[:ocr_labels] || attributes['ocr_labels']
50
57
  @rules = attributes[:rules] || attributes['rules']
51
58
  @ai_image_subclassifications = attributes[:ai_image_subclassifications] || attributes['ai_image_subclassifications']
52
59
  @default_llm_labels = attributes[:default_llm_labels] || attributes['default_llm_labels']
60
+ @default_username_llm_labels = attributes[:default_username_llm_labels] || attributes['default_username_llm_labels']
53
61
  @keyframe_label_classifications = attributes[:keyframe_label_classifications] || attributes['keyframe_label_classifications']
54
62
  @next = attributes[:next] || attributes['next'] || nil
55
63
  @prev = attributes[:prev] || attributes['prev'] || nil
@@ -62,9 +70,11 @@ module GetStream
62
70
  ai_image_label_definitions: 'ai_image_label_definitions',
63
71
  closed_caption_labels: 'closed_caption_labels',
64
72
  keyframe_labels: 'keyframe_labels',
73
+ ocr_labels: 'ocr_labels',
65
74
  rules: 'rules',
66
75
  ai_image_subclassifications: 'ai_image_subclassifications',
67
76
  default_llm_labels: 'default_llm_labels',
77
+ default_username_llm_labels: 'default_username_llm_labels',
68
78
  keyframe_label_classifications: 'keyframe_label_classifications',
69
79
  next: 'next',
70
80
  prev: 'prev'
@@ -40,7 +40,7 @@ module GetStream
40
40
  # @return [Array<SortParamRequest>] Sorting parameters for the results
41
41
  attr_accessor :sort
42
42
  # @!attribute filter
43
- # @return [Object] Filter conditions for review queue items
43
+ # @return [Object] Filter conditions for review queue items. Accepts built-in fields (e.g. status, channel_cid, severity, recommended_action) and customer-supplied moderation_payload.custom keys: any key that is not a built-in field is matched against the item's custom moderation data (e.g. {"location_id": "loc-42"}). Use filter_config.filterable_custom_keys to discover which custom keys the app exposes as chips.
44
44
  attr_accessor :filter
45
45
  # @!attribute user
46
46
  # @return [UserRequest]