safetykit 0.5.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 (158) hide show
  1. checksums.yaml +7 -0
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +47 -0
  4. data/README.md +208 -0
  5. data/SECURITY.md +27 -0
  6. data/lib/safety_kit/client.rb +111 -0
  7. data/lib/safety_kit/errors.rb +228 -0
  8. data/lib/safety_kit/file_part.rb +58 -0
  9. data/lib/safety_kit/internal/transport/base_client.rb +575 -0
  10. data/lib/safety_kit/internal/transport/pooled_net_requester.rb +210 -0
  11. data/lib/safety_kit/internal/type/array_of.rb +168 -0
  12. data/lib/safety_kit/internal/type/base_model.rb +529 -0
  13. data/lib/safety_kit/internal/type/base_page.rb +55 -0
  14. data/lib/safety_kit/internal/type/boolean.rb +77 -0
  15. data/lib/safety_kit/internal/type/converter.rb +327 -0
  16. data/lib/safety_kit/internal/type/enum.rb +131 -0
  17. data/lib/safety_kit/internal/type/file_input.rb +111 -0
  18. data/lib/safety_kit/internal/type/hash_of.rb +188 -0
  19. data/lib/safety_kit/internal/type/request_parameters.rb +42 -0
  20. data/lib/safety_kit/internal/type/union.rb +237 -0
  21. data/lib/safety_kit/internal/type/unknown.rb +81 -0
  22. data/lib/safety_kit/internal/util.rb +966 -0
  23. data/lib/safety_kit/internal.rb +20 -0
  24. data/lib/safety_kit/models/agent_decision_create_agent_decision_params.rb +68 -0
  25. data/lib/safety_kit/models/agent_decision_create_agent_decision_response.rb +19 -0
  26. data/lib/safety_kit/models/beta/event_create_params.rb +1140 -0
  27. data/lib/safety_kit/models/beta/event_create_response.rb +41 -0
  28. data/lib/safety_kit/models/client_session_create_session_params.rb +30 -0
  29. data/lib/safety_kit/models/client_session_create_session_response.rb +19 -0
  30. data/lib/safety_kit/models/data_add_params.rb +52 -0
  31. data/lib/safety_kit/models/data_add_response.rb +44 -0
  32. data/lib/safety_kit/models/data_create_upload_url_params.rb +176 -0
  33. data/lib/safety_kit/models/data_create_upload_url_response.rb +69 -0
  34. data/lib/safety_kit/models/data_get_download_url_params.rb +30 -0
  35. data/lib/safety_kit/models/data_get_download_url_response.rb +80 -0
  36. data/lib/safety_kit/models/data_get_status_params.rb +30 -0
  37. data/lib/safety_kit/models/data_get_status_response.rb +128 -0
  38. data/lib/safety_kit/models/data_object.rb +24 -0
  39. data/lib/safety_kit/models/data_update_settings_params.rb +176 -0
  40. data/lib/safety_kit/models/data_update_settings_response.rb +34 -0
  41. data/lib/safety_kit/models/stream_add_frame_params.rb +50 -0
  42. data/lib/safety_kit/models/stream_add_frame_response.rb +34 -0
  43. data/lib/safety_kit/models/stream_add_params.rb +36 -0
  44. data/lib/safety_kit/models/stream_add_response.rb +34 -0
  45. data/lib/safety_kit/models/stream_add_transcript_params.rb +43 -0
  46. data/lib/safety_kit/models/stream_add_transcript_response.rb +34 -0
  47. data/lib/safety_kit/models.rb +65 -0
  48. data/lib/safety_kit/request_options.rb +77 -0
  49. data/lib/safety_kit/resources/agent_decisions.rb +55 -0
  50. data/lib/safety_kit/resources/beta/events.rb +45 -0
  51. data/lib/safety_kit/resources/beta.rb +19 -0
  52. data/lib/safety_kit/resources/client_sessions.rb +42 -0
  53. data/lib/safety_kit/resources/data.rb +159 -0
  54. data/lib/safety_kit/resources/streams.rb +113 -0
  55. data/lib/safety_kit/version.rb +5 -0
  56. data/lib/safety_kit.rb +84 -0
  57. data/manifest.yaml +17 -0
  58. data/rbi/safety_kit/client.rbi +68 -0
  59. data/rbi/safety_kit/errors.rbi +205 -0
  60. data/rbi/safety_kit/file_part.rbi +37 -0
  61. data/rbi/safety_kit/internal/transport/base_client.rbi +298 -0
  62. data/rbi/safety_kit/internal/transport/pooled_net_requester.rbi +83 -0
  63. data/rbi/safety_kit/internal/type/array_of.rbi +104 -0
  64. data/rbi/safety_kit/internal/type/base_model.rbi +308 -0
  65. data/rbi/safety_kit/internal/type/base_page.rbi +42 -0
  66. data/rbi/safety_kit/internal/type/boolean.rbi +58 -0
  67. data/rbi/safety_kit/internal/type/converter.rbi +216 -0
  68. data/rbi/safety_kit/internal/type/enum.rbi +82 -0
  69. data/rbi/safety_kit/internal/type/file_input.rbi +59 -0
  70. data/rbi/safety_kit/internal/type/hash_of.rbi +104 -0
  71. data/rbi/safety_kit/internal/type/request_parameters.rbi +29 -0
  72. data/rbi/safety_kit/internal/type/union.rbi +128 -0
  73. data/rbi/safety_kit/internal/type/unknown.rbi +58 -0
  74. data/rbi/safety_kit/internal/util.rbi +515 -0
  75. data/rbi/safety_kit/internal.rbi +18 -0
  76. data/rbi/safety_kit/models/agent_decision_create_agent_decision_params.rbi +95 -0
  77. data/rbi/safety_kit/models/agent_decision_create_agent_decision_response.rbi +31 -0
  78. data/rbi/safety_kit/models/beta/event_create_params.rbi +2379 -0
  79. data/rbi/safety_kit/models/beta/event_create_response.rbi +87 -0
  80. data/rbi/safety_kit/models/client_session_create_session_params.rbi +60 -0
  81. data/rbi/safety_kit/models/client_session_create_session_response.rbi +31 -0
  82. data/rbi/safety_kit/models/data_add_params.rbi +82 -0
  83. data/rbi/safety_kit/models/data_add_response.rbi +77 -0
  84. data/rbi/safety_kit/models/data_create_upload_url_params.rbi +473 -0
  85. data/rbi/safety_kit/models/data_create_upload_url_response.rbi +113 -0
  86. data/rbi/safety_kit/models/data_get_download_url_params.rbi +54 -0
  87. data/rbi/safety_kit/models/data_get_download_url_response.rbi +136 -0
  88. data/rbi/safety_kit/models/data_get_status_params.rbi +51 -0
  89. data/rbi/safety_kit/models/data_get_status_response.rbi +264 -0
  90. data/rbi/safety_kit/models/data_object.rbi +33 -0
  91. data/rbi/safety_kit/models/data_update_settings_params.rbi +458 -0
  92. data/rbi/safety_kit/models/data_update_settings_response.rbi +74 -0
  93. data/rbi/safety_kit/models/stream_add_frame_params.rbi +69 -0
  94. data/rbi/safety_kit/models/stream_add_frame_response.rbi +71 -0
  95. data/rbi/safety_kit/models/stream_add_params.rbi +55 -0
  96. data/rbi/safety_kit/models/stream_add_response.rbi +68 -0
  97. data/rbi/safety_kit/models/stream_add_transcript_params.rbi +64 -0
  98. data/rbi/safety_kit/models/stream_add_transcript_response.rbi +77 -0
  99. data/rbi/safety_kit/models.rbi +29 -0
  100. data/rbi/safety_kit/request_options.rbi +59 -0
  101. data/rbi/safety_kit/resources/agent_decisions.rbi +50 -0
  102. data/rbi/safety_kit/resources/beta/events.rbi +40 -0
  103. data/rbi/safety_kit/resources/beta.rbi +16 -0
  104. data/rbi/safety_kit/resources/client_sessions.rbi +33 -0
  105. data/rbi/safety_kit/resources/data.rbi +126 -0
  106. data/rbi/safety_kit/resources/streams.rbi +88 -0
  107. data/rbi/safety_kit/version.rbi +5 -0
  108. data/sig/safety_kit/client.rbs +34 -0
  109. data/sig/safety_kit/errors.rbs +117 -0
  110. data/sig/safety_kit/file_part.rbs +21 -0
  111. data/sig/safety_kit/internal/transport/base_client.rbs +133 -0
  112. data/sig/safety_kit/internal/transport/pooled_net_requester.rbs +48 -0
  113. data/sig/safety_kit/internal/type/array_of.rbs +48 -0
  114. data/sig/safety_kit/internal/type/base_model.rbs +102 -0
  115. data/sig/safety_kit/internal/type/base_page.rbs +24 -0
  116. data/sig/safety_kit/internal/type/boolean.rbs +26 -0
  117. data/sig/safety_kit/internal/type/converter.rbs +79 -0
  118. data/sig/safety_kit/internal/type/enum.rbs +32 -0
  119. data/sig/safety_kit/internal/type/file_input.rbs +25 -0
  120. data/sig/safety_kit/internal/type/hash_of.rbs +48 -0
  121. data/sig/safety_kit/internal/type/request_parameters.rbs +19 -0
  122. data/sig/safety_kit/internal/type/union.rbs +52 -0
  123. data/sig/safety_kit/internal/type/unknown.rbs +26 -0
  124. data/sig/safety_kit/internal/util.rbs +199 -0
  125. data/sig/safety_kit/internal.rbs +9 -0
  126. data/sig/safety_kit/models/agent_decision_create_agent_decision_params.rbs +53 -0
  127. data/sig/safety_kit/models/agent_decision_create_agent_decision_response.rbs +14 -0
  128. data/sig/safety_kit/models/beta/event_create_params.rbs +891 -0
  129. data/sig/safety_kit/models/beta/event_create_response.rbs +37 -0
  130. data/sig/safety_kit/models/client_session_create_session_params.rbs +32 -0
  131. data/sig/safety_kit/models/client_session_create_session_response.rbs +13 -0
  132. data/sig/safety_kit/models/data_add_params.rbs +38 -0
  133. data/sig/safety_kit/models/data_add_response.rbs +32 -0
  134. data/sig/safety_kit/models/data_create_upload_url_params.rbs +193 -0
  135. data/sig/safety_kit/models/data_create_upload_url_response.rbs +50 -0
  136. data/sig/safety_kit/models/data_get_download_url_params.rbs +28 -0
  137. data/sig/safety_kit/models/data_get_download_url_response.rbs +59 -0
  138. data/sig/safety_kit/models/data_get_status_params.rbs +28 -0
  139. data/sig/safety_kit/models/data_get_status_response.rbs +120 -0
  140. data/sig/safety_kit/models/data_object.rbs +13 -0
  141. data/sig/safety_kit/models/data_update_settings_params.rbs +189 -0
  142. data/sig/safety_kit/models/data_update_settings_response.rbs +35 -0
  143. data/sig/safety_kit/models/stream_add_frame_params.rbs +41 -0
  144. data/sig/safety_kit/models/stream_add_frame_response.rbs +35 -0
  145. data/sig/safety_kit/models/stream_add_params.rbs +32 -0
  146. data/sig/safety_kit/models/stream_add_response.rbs +35 -0
  147. data/sig/safety_kit/models/stream_add_transcript_params.rbs +36 -0
  148. data/sig/safety_kit/models/stream_add_transcript_response.rbs +35 -0
  149. data/sig/safety_kit/models.rbs +25 -0
  150. data/sig/safety_kit/request_options.rbs +34 -0
  151. data/sig/safety_kit/resources/agent_decisions.rbs +17 -0
  152. data/sig/safety_kit/resources/beta/events.rbs +14 -0
  153. data/sig/safety_kit/resources/beta.rbs +9 -0
  154. data/sig/safety_kit/resources/client_sessions.rbs +13 -0
  155. data/sig/safety_kit/resources/data.rbs +37 -0
  156. data/sig/safety_kit/resources/streams.rbs +30 -0
  157. data/sig/safety_kit/version.rbs +3 -0
  158. metadata +228 -0
@@ -0,0 +1,2379 @@
1
+ # typed: strong
2
+
3
+ module SafetyKit
4
+ module Models
5
+ module Beta
6
+ class EventCreateParams < SafetyKit::Internal::Type::BaseModel
7
+ extend SafetyKit::Internal::Type::RequestParameters::Converter
8
+ include SafetyKit::Internal::Type::RequestParameters
9
+
10
+ OrHash =
11
+ T.type_alias do
12
+ T.any(
13
+ SafetyKit::Beta::EventCreateParams,
14
+ SafetyKit::Internal::AnyHash
15
+ )
16
+ end
17
+
18
+ # Backend event to send to SafetyKit. Send events from your server after an action
19
+ # has happened in your product. Do not send these events directly from a browser
20
+ # or mobile client.
21
+ sig do
22
+ returns(
23
+ T.any(
24
+ SafetyKit::Beta::EventCreateParams::Body::UserContact,
25
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded,
26
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount,
27
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount
28
+ )
29
+ )
30
+ end
31
+ attr_accessor :body
32
+
33
+ sig do
34
+ params(
35
+ body:
36
+ T.any(
37
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::OrHash,
38
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::OrHash,
39
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::OrHash,
40
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::OrHash
41
+ ),
42
+ request_options: SafetyKit::RequestOptions::OrHash
43
+ ).returns(T.attached_class)
44
+ end
45
+ def self.new(
46
+ # Backend event to send to SafetyKit. Send events from your server after an action
47
+ # has happened in your product. Do not send these events directly from a browser
48
+ # or mobile client.
49
+ body:,
50
+ request_options: {}
51
+ )
52
+ end
53
+
54
+ sig do
55
+ override.returns(
56
+ {
57
+ body:
58
+ T.any(
59
+ SafetyKit::Beta::EventCreateParams::Body::UserContact,
60
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded,
61
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount,
62
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount
63
+ ),
64
+ request_options: SafetyKit::RequestOptions
65
+ }
66
+ )
67
+ end
68
+ def to_hash
69
+ end
70
+
71
+ # Backend event to send to SafetyKit. Send events from your server after an action
72
+ # has happened in your product. Do not send these events directly from a browser
73
+ # or mobile client.
74
+ module Body
75
+ extend SafetyKit::Internal::Type::Union
76
+
77
+ Variants =
78
+ T.type_alias do
79
+ T.any(
80
+ SafetyKit::Beta::EventCreateParams::Body::UserContact,
81
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded,
82
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount,
83
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount
84
+ )
85
+ end
86
+
87
+ class UserContact < SafetyKit::Internal::Type::BaseModel
88
+ OrHash =
89
+ T.type_alias do
90
+ T.any(
91
+ SafetyKit::Beta::EventCreateParams::Body::UserContact,
92
+ SafetyKit::Internal::AnyHash
93
+ )
94
+ end
95
+
96
+ # Your stable canonical identifier for the other user in a user-to-user
97
+ # interaction.
98
+ sig { returns(String) }
99
+ attr_accessor :counterparty_user_id
100
+
101
+ # Stable, low-cardinality product action name. Use snake_case and put dynamic
102
+ # values in typed fields, content, resources_used, or metadata.
103
+ sig { returns(String) }
104
+ attr_accessor :event_name
105
+
106
+ # The time the event occurred in your system, as an ISO 8601 datetime string.
107
+ sig { returns(Time) }
108
+ attr_accessor :timestamp
109
+
110
+ sig { returns(Symbol) }
111
+ attr_accessor :type
112
+
113
+ # Your stable canonical identifier for the user or account.
114
+ sig { returns(String) }
115
+ attr_accessor :user_id
116
+
117
+ # User-authored or user-uploaded content parts. Use this for message bodies, bios,
118
+ # listing text, image URLs, and similar content SafetyKit should compare or
119
+ # analyze.
120
+ sig do
121
+ returns(
122
+ T.nilable(
123
+ T::Array[
124
+ T.any(
125
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventTextContent,
126
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventImageContent
127
+ )
128
+ ]
129
+ )
130
+ )
131
+ end
132
+ attr_reader :content
133
+
134
+ sig do
135
+ params(
136
+ content:
137
+ T::Array[
138
+ T.any(
139
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventTextContent::OrHash,
140
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventImageContent::OrHash
141
+ )
142
+ ]
143
+ ).void
144
+ end
145
+ attr_writer :content
146
+
147
+ # Non-PII product context for filtering, segmentation, and debugging. Values may
148
+ # be strings, numbers, booleans, or arrays of those scalar values.
149
+ sig do
150
+ returns(
151
+ T.nilable(
152
+ T::Hash[
153
+ Symbol,
154
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Metadata::Variants
155
+ ]
156
+ )
157
+ )
158
+ end
159
+ attr_reader :metadata
160
+
161
+ sig do
162
+ params(
163
+ metadata:
164
+ T::Hash[
165
+ Symbol,
166
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Metadata::Variants
167
+ ]
168
+ ).void
169
+ end
170
+ attr_writer :metadata
171
+
172
+ # Reusable resources observed during the event. Use this for emails, phone
173
+ # numbers, names, addresses, social handles, URLs, payment identifiers, or similar
174
+ # identifiers.
175
+ sig do
176
+ returns(
177
+ T.nilable(
178
+ T::Array[
179
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::ResourcesUsed
180
+ ]
181
+ )
182
+ )
183
+ end
184
+ attr_reader :resources_used
185
+
186
+ sig do
187
+ params(
188
+ resources_used:
189
+ T::Array[
190
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::ResourcesUsed::OrHash
191
+ ]
192
+ ).void
193
+ end
194
+ attr_writer :resources_used
195
+
196
+ # A user contacts, transacts with, or otherwise interacts with another user.
197
+ # SafetyKit records both users' perspectives with a shared event_id.
198
+ sig do
199
+ params(
200
+ counterparty_user_id: String,
201
+ event_name: String,
202
+ timestamp: Time,
203
+ user_id: String,
204
+ content:
205
+ T::Array[
206
+ T.any(
207
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventTextContent::OrHash,
208
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventImageContent::OrHash
209
+ )
210
+ ],
211
+ metadata:
212
+ T::Hash[
213
+ Symbol,
214
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Metadata::Variants
215
+ ],
216
+ resources_used:
217
+ T::Array[
218
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::ResourcesUsed::OrHash
219
+ ],
220
+ type: Symbol
221
+ ).returns(T.attached_class)
222
+ end
223
+ def self.new(
224
+ # Your stable canonical identifier for the other user in a user-to-user
225
+ # interaction.
226
+ counterparty_user_id:,
227
+ # Stable, low-cardinality product action name. Use snake_case and put dynamic
228
+ # values in typed fields, content, resources_used, or metadata.
229
+ event_name:,
230
+ # The time the event occurred in your system, as an ISO 8601 datetime string.
231
+ timestamp:,
232
+ # Your stable canonical identifier for the user or account.
233
+ user_id:,
234
+ # User-authored or user-uploaded content parts. Use this for message bodies, bios,
235
+ # listing text, image URLs, and similar content SafetyKit should compare or
236
+ # analyze.
237
+ content: nil,
238
+ # Non-PII product context for filtering, segmentation, and debugging. Values may
239
+ # be strings, numbers, booleans, or arrays of those scalar values.
240
+ metadata: nil,
241
+ # Reusable resources observed during the event. Use this for emails, phone
242
+ # numbers, names, addresses, social handles, URLs, payment identifiers, or similar
243
+ # identifiers.
244
+ resources_used: nil,
245
+ type: :user_contact
246
+ )
247
+ end
248
+
249
+ sig do
250
+ override.returns(
251
+ {
252
+ counterparty_user_id: String,
253
+ event_name: String,
254
+ timestamp: Time,
255
+ type: Symbol,
256
+ user_id: String,
257
+ content:
258
+ T::Array[
259
+ T.any(
260
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventTextContent,
261
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventImageContent
262
+ )
263
+ ],
264
+ metadata:
265
+ T::Hash[
266
+ Symbol,
267
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Metadata::Variants
268
+ ],
269
+ resources_used:
270
+ T::Array[
271
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::ResourcesUsed
272
+ ]
273
+ }
274
+ )
275
+ end
276
+ def to_hash
277
+ end
278
+
279
+ # User-authored text content associated with an event.
280
+ module Content
281
+ extend SafetyKit::Internal::Type::Union
282
+
283
+ Variants =
284
+ T.type_alias do
285
+ T.any(
286
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventTextContent,
287
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventImageContent
288
+ )
289
+ end
290
+
291
+ class EventTextContent < SafetyKit::Internal::Type::BaseModel
292
+ OrHash =
293
+ T.type_alias do
294
+ T.any(
295
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventTextContent,
296
+ SafetyKit::Internal::AnyHash
297
+ )
298
+ end
299
+
300
+ # User-authored text SafetyKit should compare or analyze.
301
+ sig { returns(String) }
302
+ attr_accessor :text
303
+
304
+ # Text content part.
305
+ sig do
306
+ returns(
307
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventTextContent::Type::OrSymbol
308
+ )
309
+ end
310
+ attr_accessor :type
311
+
312
+ # Stable field key for this content part.
313
+ sig { returns(T.nilable(String)) }
314
+ attr_reader :key
315
+
316
+ sig { params(key: String).void }
317
+ attr_writer :key
318
+
319
+ # User-authored text content associated with an event.
320
+ sig do
321
+ params(
322
+ text: String,
323
+ type:
324
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventTextContent::Type::OrSymbol,
325
+ key: String
326
+ ).returns(T.attached_class)
327
+ end
328
+ def self.new(
329
+ # User-authored text SafetyKit should compare or analyze.
330
+ text:,
331
+ # Text content part.
332
+ type:,
333
+ # Stable field key for this content part.
334
+ key: nil
335
+ )
336
+ end
337
+
338
+ sig do
339
+ override.returns(
340
+ {
341
+ text: String,
342
+ type:
343
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventTextContent::Type::OrSymbol,
344
+ key: String
345
+ }
346
+ )
347
+ end
348
+ def to_hash
349
+ end
350
+
351
+ # Text content part.
352
+ module Type
353
+ extend SafetyKit::Internal::Type::Enum
354
+
355
+ TaggedSymbol =
356
+ T.type_alias do
357
+ T.all(
358
+ Symbol,
359
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventTextContent::Type
360
+ )
361
+ end
362
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
363
+
364
+ TEXT =
365
+ T.let(
366
+ :text,
367
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventTextContent::Type::TaggedSymbol
368
+ )
369
+
370
+ sig do
371
+ override.returns(
372
+ T::Array[
373
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventTextContent::Type::TaggedSymbol
374
+ ]
375
+ )
376
+ end
377
+ def self.values
378
+ end
379
+ end
380
+ end
381
+
382
+ class EventImageContent < SafetyKit::Internal::Type::BaseModel
383
+ OrHash =
384
+ T.type_alias do
385
+ T.any(
386
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventImageContent,
387
+ SafetyKit::Internal::AnyHash
388
+ )
389
+ end
390
+
391
+ # Image source information.
392
+ sig do
393
+ returns(
394
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventImageContent::Source
395
+ )
396
+ end
397
+ attr_reader :source
398
+
399
+ sig do
400
+ params(
401
+ source:
402
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventImageContent::Source::OrHash
403
+ ).void
404
+ end
405
+ attr_writer :source
406
+
407
+ # Image content part.
408
+ sig do
409
+ returns(
410
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventImageContent::Type::OrSymbol
411
+ )
412
+ end
413
+ attr_accessor :type
414
+
415
+ # Stable field key for this content part.
416
+ sig { returns(T.nilable(String)) }
417
+ attr_reader :key
418
+
419
+ sig { params(key: String).void }
420
+ attr_writer :key
421
+
422
+ # User-uploaded image content associated with an event.
423
+ sig do
424
+ params(
425
+ source:
426
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventImageContent::Source::OrHash,
427
+ type:
428
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventImageContent::Type::OrSymbol,
429
+ key: String
430
+ ).returns(T.attached_class)
431
+ end
432
+ def self.new(
433
+ # Image source information.
434
+ source:,
435
+ # Image content part.
436
+ type:,
437
+ # Stable field key for this content part.
438
+ key: nil
439
+ )
440
+ end
441
+
442
+ sig do
443
+ override.returns(
444
+ {
445
+ source:
446
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventImageContent::Source,
447
+ type:
448
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventImageContent::Type::OrSymbol,
449
+ key: String
450
+ }
451
+ )
452
+ end
453
+ def to_hash
454
+ end
455
+
456
+ class Source < SafetyKit::Internal::Type::BaseModel
457
+ OrHash =
458
+ T.type_alias do
459
+ T.any(
460
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventImageContent::Source,
461
+ SafetyKit::Internal::AnyHash
462
+ )
463
+ end
464
+
465
+ # URL image source.
466
+ sig do
467
+ returns(
468
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventImageContent::Source::Type::OrSymbol
469
+ )
470
+ end
471
+ attr_accessor :type
472
+
473
+ # URL of the image SafetyKit should compare or analyze.
474
+ sig { returns(String) }
475
+ attr_accessor :url
476
+
477
+ # Image source information.
478
+ sig do
479
+ params(
480
+ type:
481
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventImageContent::Source::Type::OrSymbol,
482
+ url: String
483
+ ).returns(T.attached_class)
484
+ end
485
+ def self.new(
486
+ # URL image source.
487
+ type:,
488
+ # URL of the image SafetyKit should compare or analyze.
489
+ url:
490
+ )
491
+ end
492
+
493
+ sig do
494
+ override.returns(
495
+ {
496
+ type:
497
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventImageContent::Source::Type::OrSymbol,
498
+ url: String
499
+ }
500
+ )
501
+ end
502
+ def to_hash
503
+ end
504
+
505
+ # URL image source.
506
+ module Type
507
+ extend SafetyKit::Internal::Type::Enum
508
+
509
+ TaggedSymbol =
510
+ T.type_alias do
511
+ T.all(
512
+ Symbol,
513
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventImageContent::Source::Type
514
+ )
515
+ end
516
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
517
+
518
+ URL =
519
+ T.let(
520
+ :url,
521
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventImageContent::Source::Type::TaggedSymbol
522
+ )
523
+
524
+ sig do
525
+ override.returns(
526
+ T::Array[
527
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventImageContent::Source::Type::TaggedSymbol
528
+ ]
529
+ )
530
+ end
531
+ def self.values
532
+ end
533
+ end
534
+ end
535
+
536
+ # Image content part.
537
+ module Type
538
+ extend SafetyKit::Internal::Type::Enum
539
+
540
+ TaggedSymbol =
541
+ T.type_alias do
542
+ T.all(
543
+ Symbol,
544
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventImageContent::Type
545
+ )
546
+ end
547
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
548
+
549
+ IMAGE =
550
+ T.let(
551
+ :image,
552
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventImageContent::Type::TaggedSymbol
553
+ )
554
+
555
+ sig do
556
+ override.returns(
557
+ T::Array[
558
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::EventImageContent::Type::TaggedSymbol
559
+ ]
560
+ )
561
+ end
562
+ def self.values
563
+ end
564
+ end
565
+ end
566
+
567
+ sig do
568
+ override.returns(
569
+ T::Array[
570
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Content::Variants
571
+ ]
572
+ )
573
+ end
574
+ def self.variants
575
+ end
576
+ end
577
+
578
+ module Metadata
579
+ extend SafetyKit::Internal::Type::Union
580
+
581
+ Variants =
582
+ T.type_alias do
583
+ T.any(
584
+ String,
585
+ Float,
586
+ T::Boolean,
587
+ T::Array[
588
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Metadata::UnionMember3::Variants
589
+ ]
590
+ )
591
+ end
592
+
593
+ module UnionMember3
594
+ extend SafetyKit::Internal::Type::Union
595
+
596
+ Variants = T.type_alias { T.any(String, Float, T::Boolean) }
597
+
598
+ sig do
599
+ override.returns(
600
+ T::Array[
601
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Metadata::UnionMember3::Variants
602
+ ]
603
+ )
604
+ end
605
+ def self.variants
606
+ end
607
+ end
608
+
609
+ sig do
610
+ override.returns(
611
+ T::Array[
612
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Metadata::Variants
613
+ ]
614
+ )
615
+ end
616
+ def self.variants
617
+ end
618
+
619
+ UnionMember3Array =
620
+ T.let(
621
+ SafetyKit::Internal::Type::ArrayOf[
622
+ union:
623
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::Metadata::UnionMember3
624
+ ],
625
+ SafetyKit::Internal::Type::Converter
626
+ )
627
+ end
628
+
629
+ class ResourcesUsed < SafetyKit::Internal::Type::BaseModel
630
+ OrHash =
631
+ T.type_alias do
632
+ T.any(
633
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::ResourcesUsed,
634
+ SafetyKit::Internal::AnyHash
635
+ )
636
+ end
637
+
638
+ # Resource family, such as email, phone, name, address, url, instagram, tiktok,
639
+ # youtube, linkedin, or another stable snake_case identifier.
640
+ sig { returns(String) }
641
+ attr_accessor :type
642
+
643
+ # Resource value used during the event. SafetyKit stores a normalized hash of this
644
+ # value, not the raw value.
645
+ sig { returns(String) }
646
+ attr_accessor :value
647
+
648
+ # Real-world or account resource used during the event, such as an email, phone
649
+ # number, address, URL, social handle, or payment identifier.
650
+ sig do
651
+ params(type: String, value: String).returns(T.attached_class)
652
+ end
653
+ def self.new(
654
+ # Resource family, such as email, phone, name, address, url, instagram, tiktok,
655
+ # youtube, linkedin, or another stable snake_case identifier.
656
+ type:,
657
+ # Resource value used during the event. SafetyKit stores a normalized hash of this
658
+ # value, not the raw value.
659
+ value:
660
+ )
661
+ end
662
+
663
+ sig { override.returns({ type: String, value: String }) }
664
+ def to_hash
665
+ end
666
+ end
667
+ end
668
+
669
+ class ContentUploaded < SafetyKit::Internal::Type::BaseModel
670
+ OrHash =
671
+ T.type_alias do
672
+ T.any(
673
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded,
674
+ SafetyKit::Internal::AnyHash
675
+ )
676
+ end
677
+
678
+ # User-authored or user-uploaded content parts. Use this for message bodies, bios,
679
+ # listing text, image URLs, and similar content SafetyKit should compare or
680
+ # analyze.
681
+ sig do
682
+ returns(
683
+ T::Array[
684
+ T.any(
685
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventTextContent,
686
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventImageContent
687
+ )
688
+ ]
689
+ )
690
+ end
691
+ attr_accessor :content
692
+
693
+ # Stable, low-cardinality product action name. Use snake_case and put dynamic
694
+ # values in typed fields, content, resources_used, or metadata.
695
+ sig { returns(String) }
696
+ attr_accessor :event_name
697
+
698
+ # The time the event occurred in your system, as an ISO 8601 datetime string.
699
+ sig { returns(Time) }
700
+ attr_accessor :timestamp
701
+
702
+ sig { returns(Symbol) }
703
+ attr_accessor :type
704
+
705
+ # Your stable canonical identifier for the user or account.
706
+ sig { returns(String) }
707
+ attr_accessor :user_id
708
+
709
+ # Non-PII product context for filtering, segmentation, and debugging. Values may
710
+ # be strings, numbers, booleans, or arrays of those scalar values.
711
+ sig do
712
+ returns(
713
+ T.nilable(
714
+ T::Hash[
715
+ Symbol,
716
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Metadata::Variants
717
+ ]
718
+ )
719
+ )
720
+ end
721
+ attr_reader :metadata
722
+
723
+ sig do
724
+ params(
725
+ metadata:
726
+ T::Hash[
727
+ Symbol,
728
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Metadata::Variants
729
+ ]
730
+ ).void
731
+ end
732
+ attr_writer :metadata
733
+
734
+ # Reusable resources observed during the event. Use this for emails, phone
735
+ # numbers, names, addresses, social handles, URLs, payment identifiers, or similar
736
+ # identifiers.
737
+ sig do
738
+ returns(
739
+ T.nilable(
740
+ T::Array[
741
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::ResourcesUsed
742
+ ]
743
+ )
744
+ )
745
+ end
746
+ attr_reader :resources_used
747
+
748
+ sig do
749
+ params(
750
+ resources_used:
751
+ T::Array[
752
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::ResourcesUsed::OrHash
753
+ ]
754
+ ).void
755
+ end
756
+ attr_writer :resources_used
757
+
758
+ # A user posts, uploads, publishes, edits, or replaces content.
759
+ sig do
760
+ params(
761
+ content:
762
+ T::Array[
763
+ T.any(
764
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventTextContent::OrHash,
765
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventImageContent::OrHash
766
+ )
767
+ ],
768
+ event_name: String,
769
+ timestamp: Time,
770
+ user_id: String,
771
+ metadata:
772
+ T::Hash[
773
+ Symbol,
774
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Metadata::Variants
775
+ ],
776
+ resources_used:
777
+ T::Array[
778
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::ResourcesUsed::OrHash
779
+ ],
780
+ type: Symbol
781
+ ).returns(T.attached_class)
782
+ end
783
+ def self.new(
784
+ # User-authored or user-uploaded content parts. Use this for message bodies, bios,
785
+ # listing text, image URLs, and similar content SafetyKit should compare or
786
+ # analyze.
787
+ content:,
788
+ # Stable, low-cardinality product action name. Use snake_case and put dynamic
789
+ # values in typed fields, content, resources_used, or metadata.
790
+ event_name:,
791
+ # The time the event occurred in your system, as an ISO 8601 datetime string.
792
+ timestamp:,
793
+ # Your stable canonical identifier for the user or account.
794
+ user_id:,
795
+ # Non-PII product context for filtering, segmentation, and debugging. Values may
796
+ # be strings, numbers, booleans, or arrays of those scalar values.
797
+ metadata: nil,
798
+ # Reusable resources observed during the event. Use this for emails, phone
799
+ # numbers, names, addresses, social handles, URLs, payment identifiers, or similar
800
+ # identifiers.
801
+ resources_used: nil,
802
+ type: :content_uploaded
803
+ )
804
+ end
805
+
806
+ sig do
807
+ override.returns(
808
+ {
809
+ content:
810
+ T::Array[
811
+ T.any(
812
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventTextContent,
813
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventImageContent
814
+ )
815
+ ],
816
+ event_name: String,
817
+ timestamp: Time,
818
+ type: Symbol,
819
+ user_id: String,
820
+ metadata:
821
+ T::Hash[
822
+ Symbol,
823
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Metadata::Variants
824
+ ],
825
+ resources_used:
826
+ T::Array[
827
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::ResourcesUsed
828
+ ]
829
+ }
830
+ )
831
+ end
832
+ def to_hash
833
+ end
834
+
835
+ # User-authored text content associated with an event.
836
+ module Content
837
+ extend SafetyKit::Internal::Type::Union
838
+
839
+ Variants =
840
+ T.type_alias do
841
+ T.any(
842
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventTextContent,
843
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventImageContent
844
+ )
845
+ end
846
+
847
+ class EventTextContent < SafetyKit::Internal::Type::BaseModel
848
+ OrHash =
849
+ T.type_alias do
850
+ T.any(
851
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventTextContent,
852
+ SafetyKit::Internal::AnyHash
853
+ )
854
+ end
855
+
856
+ # User-authored text SafetyKit should compare or analyze.
857
+ sig { returns(String) }
858
+ attr_accessor :text
859
+
860
+ # Text content part.
861
+ sig do
862
+ returns(
863
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventTextContent::Type::OrSymbol
864
+ )
865
+ end
866
+ attr_accessor :type
867
+
868
+ # Stable field key for this content part.
869
+ sig { returns(T.nilable(String)) }
870
+ attr_reader :key
871
+
872
+ sig { params(key: String).void }
873
+ attr_writer :key
874
+
875
+ # User-authored text content associated with an event.
876
+ sig do
877
+ params(
878
+ text: String,
879
+ type:
880
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventTextContent::Type::OrSymbol,
881
+ key: String
882
+ ).returns(T.attached_class)
883
+ end
884
+ def self.new(
885
+ # User-authored text SafetyKit should compare or analyze.
886
+ text:,
887
+ # Text content part.
888
+ type:,
889
+ # Stable field key for this content part.
890
+ key: nil
891
+ )
892
+ end
893
+
894
+ sig do
895
+ override.returns(
896
+ {
897
+ text: String,
898
+ type:
899
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventTextContent::Type::OrSymbol,
900
+ key: String
901
+ }
902
+ )
903
+ end
904
+ def to_hash
905
+ end
906
+
907
+ # Text content part.
908
+ module Type
909
+ extend SafetyKit::Internal::Type::Enum
910
+
911
+ TaggedSymbol =
912
+ T.type_alias do
913
+ T.all(
914
+ Symbol,
915
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventTextContent::Type
916
+ )
917
+ end
918
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
919
+
920
+ TEXT =
921
+ T.let(
922
+ :text,
923
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventTextContent::Type::TaggedSymbol
924
+ )
925
+
926
+ sig do
927
+ override.returns(
928
+ T::Array[
929
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventTextContent::Type::TaggedSymbol
930
+ ]
931
+ )
932
+ end
933
+ def self.values
934
+ end
935
+ end
936
+ end
937
+
938
+ class EventImageContent < SafetyKit::Internal::Type::BaseModel
939
+ OrHash =
940
+ T.type_alias do
941
+ T.any(
942
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventImageContent,
943
+ SafetyKit::Internal::AnyHash
944
+ )
945
+ end
946
+
947
+ # Image source information.
948
+ sig do
949
+ returns(
950
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventImageContent::Source
951
+ )
952
+ end
953
+ attr_reader :source
954
+
955
+ sig do
956
+ params(
957
+ source:
958
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventImageContent::Source::OrHash
959
+ ).void
960
+ end
961
+ attr_writer :source
962
+
963
+ # Image content part.
964
+ sig do
965
+ returns(
966
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventImageContent::Type::OrSymbol
967
+ )
968
+ end
969
+ attr_accessor :type
970
+
971
+ # Stable field key for this content part.
972
+ sig { returns(T.nilable(String)) }
973
+ attr_reader :key
974
+
975
+ sig { params(key: String).void }
976
+ attr_writer :key
977
+
978
+ # User-uploaded image content associated with an event.
979
+ sig do
980
+ params(
981
+ source:
982
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventImageContent::Source::OrHash,
983
+ type:
984
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventImageContent::Type::OrSymbol,
985
+ key: String
986
+ ).returns(T.attached_class)
987
+ end
988
+ def self.new(
989
+ # Image source information.
990
+ source:,
991
+ # Image content part.
992
+ type:,
993
+ # Stable field key for this content part.
994
+ key: nil
995
+ )
996
+ end
997
+
998
+ sig do
999
+ override.returns(
1000
+ {
1001
+ source:
1002
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventImageContent::Source,
1003
+ type:
1004
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventImageContent::Type::OrSymbol,
1005
+ key: String
1006
+ }
1007
+ )
1008
+ end
1009
+ def to_hash
1010
+ end
1011
+
1012
+ class Source < SafetyKit::Internal::Type::BaseModel
1013
+ OrHash =
1014
+ T.type_alias do
1015
+ T.any(
1016
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventImageContent::Source,
1017
+ SafetyKit::Internal::AnyHash
1018
+ )
1019
+ end
1020
+
1021
+ # URL image source.
1022
+ sig do
1023
+ returns(
1024
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventImageContent::Source::Type::OrSymbol
1025
+ )
1026
+ end
1027
+ attr_accessor :type
1028
+
1029
+ # URL of the image SafetyKit should compare or analyze.
1030
+ sig { returns(String) }
1031
+ attr_accessor :url
1032
+
1033
+ # Image source information.
1034
+ sig do
1035
+ params(
1036
+ type:
1037
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventImageContent::Source::Type::OrSymbol,
1038
+ url: String
1039
+ ).returns(T.attached_class)
1040
+ end
1041
+ def self.new(
1042
+ # URL image source.
1043
+ type:,
1044
+ # URL of the image SafetyKit should compare or analyze.
1045
+ url:
1046
+ )
1047
+ end
1048
+
1049
+ sig do
1050
+ override.returns(
1051
+ {
1052
+ type:
1053
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventImageContent::Source::Type::OrSymbol,
1054
+ url: String
1055
+ }
1056
+ )
1057
+ end
1058
+ def to_hash
1059
+ end
1060
+
1061
+ # URL image source.
1062
+ module Type
1063
+ extend SafetyKit::Internal::Type::Enum
1064
+
1065
+ TaggedSymbol =
1066
+ T.type_alias do
1067
+ T.all(
1068
+ Symbol,
1069
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventImageContent::Source::Type
1070
+ )
1071
+ end
1072
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1073
+
1074
+ URL =
1075
+ T.let(
1076
+ :url,
1077
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventImageContent::Source::Type::TaggedSymbol
1078
+ )
1079
+
1080
+ sig do
1081
+ override.returns(
1082
+ T::Array[
1083
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventImageContent::Source::Type::TaggedSymbol
1084
+ ]
1085
+ )
1086
+ end
1087
+ def self.values
1088
+ end
1089
+ end
1090
+ end
1091
+
1092
+ # Image content part.
1093
+ module Type
1094
+ extend SafetyKit::Internal::Type::Enum
1095
+
1096
+ TaggedSymbol =
1097
+ T.type_alias do
1098
+ T.all(
1099
+ Symbol,
1100
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventImageContent::Type
1101
+ )
1102
+ end
1103
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1104
+
1105
+ IMAGE =
1106
+ T.let(
1107
+ :image,
1108
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventImageContent::Type::TaggedSymbol
1109
+ )
1110
+
1111
+ sig do
1112
+ override.returns(
1113
+ T::Array[
1114
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::EventImageContent::Type::TaggedSymbol
1115
+ ]
1116
+ )
1117
+ end
1118
+ def self.values
1119
+ end
1120
+ end
1121
+ end
1122
+
1123
+ sig do
1124
+ override.returns(
1125
+ T::Array[
1126
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Content::Variants
1127
+ ]
1128
+ )
1129
+ end
1130
+ def self.variants
1131
+ end
1132
+ end
1133
+
1134
+ module Metadata
1135
+ extend SafetyKit::Internal::Type::Union
1136
+
1137
+ Variants =
1138
+ T.type_alias do
1139
+ T.any(
1140
+ String,
1141
+ Float,
1142
+ T::Boolean,
1143
+ T::Array[
1144
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Metadata::UnionMember3::Variants
1145
+ ]
1146
+ )
1147
+ end
1148
+
1149
+ module UnionMember3
1150
+ extend SafetyKit::Internal::Type::Union
1151
+
1152
+ Variants = T.type_alias { T.any(String, Float, T::Boolean) }
1153
+
1154
+ sig do
1155
+ override.returns(
1156
+ T::Array[
1157
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Metadata::UnionMember3::Variants
1158
+ ]
1159
+ )
1160
+ end
1161
+ def self.variants
1162
+ end
1163
+ end
1164
+
1165
+ sig do
1166
+ override.returns(
1167
+ T::Array[
1168
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Metadata::Variants
1169
+ ]
1170
+ )
1171
+ end
1172
+ def self.variants
1173
+ end
1174
+
1175
+ UnionMember3Array =
1176
+ T.let(
1177
+ SafetyKit::Internal::Type::ArrayOf[
1178
+ union:
1179
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::Metadata::UnionMember3
1180
+ ],
1181
+ SafetyKit::Internal::Type::Converter
1182
+ )
1183
+ end
1184
+
1185
+ class ResourcesUsed < SafetyKit::Internal::Type::BaseModel
1186
+ OrHash =
1187
+ T.type_alias do
1188
+ T.any(
1189
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::ResourcesUsed,
1190
+ SafetyKit::Internal::AnyHash
1191
+ )
1192
+ end
1193
+
1194
+ # Resource family, such as email, phone, name, address, url, instagram, tiktok,
1195
+ # youtube, linkedin, or another stable snake_case identifier.
1196
+ sig { returns(String) }
1197
+ attr_accessor :type
1198
+
1199
+ # Resource value used during the event. SafetyKit stores a normalized hash of this
1200
+ # value, not the raw value.
1201
+ sig { returns(String) }
1202
+ attr_accessor :value
1203
+
1204
+ # Real-world or account resource used during the event, such as an email, phone
1205
+ # number, address, URL, social handle, or payment identifier.
1206
+ sig do
1207
+ params(type: String, value: String).returns(T.attached_class)
1208
+ end
1209
+ def self.new(
1210
+ # Resource family, such as email, phone, name, address, url, instagram, tiktok,
1211
+ # youtube, linkedin, or another stable snake_case identifier.
1212
+ type:,
1213
+ # Resource value used during the event. SafetyKit stores a normalized hash of this
1214
+ # value, not the raw value.
1215
+ value:
1216
+ )
1217
+ end
1218
+
1219
+ sig { override.returns({ type: String, value: String }) }
1220
+ def to_hash
1221
+ end
1222
+ end
1223
+ end
1224
+
1225
+ class CreateAccount < SafetyKit::Internal::Type::BaseModel
1226
+ OrHash =
1227
+ T.type_alias do
1228
+ T.any(
1229
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount,
1230
+ SafetyKit::Internal::AnyHash
1231
+ )
1232
+ end
1233
+
1234
+ # Stable, low-cardinality product action name. Use snake_case and put dynamic
1235
+ # values in typed fields, content, resources_used, or metadata.
1236
+ sig { returns(String) }
1237
+ attr_accessor :event_name
1238
+
1239
+ # The time the event occurred in your system, as an ISO 8601 datetime string.
1240
+ sig { returns(Time) }
1241
+ attr_accessor :timestamp
1242
+
1243
+ sig { returns(Symbol) }
1244
+ attr_accessor :type
1245
+
1246
+ # Your stable canonical identifier for the user or account.
1247
+ sig { returns(String) }
1248
+ attr_accessor :user_id
1249
+
1250
+ # User-authored or user-uploaded content parts. Use this for message bodies, bios,
1251
+ # listing text, image URLs, and similar content SafetyKit should compare or
1252
+ # analyze.
1253
+ sig do
1254
+ returns(
1255
+ T.nilable(
1256
+ T::Array[
1257
+ T.any(
1258
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventTextContent,
1259
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventImageContent
1260
+ )
1261
+ ]
1262
+ )
1263
+ )
1264
+ end
1265
+ attr_reader :content
1266
+
1267
+ sig do
1268
+ params(
1269
+ content:
1270
+ T::Array[
1271
+ T.any(
1272
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventTextContent::OrHash,
1273
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventImageContent::OrHash
1274
+ )
1275
+ ]
1276
+ ).void
1277
+ end
1278
+ attr_writer :content
1279
+
1280
+ # Non-PII product context for filtering, segmentation, and debugging. Values may
1281
+ # be strings, numbers, booleans, or arrays of those scalar values.
1282
+ sig do
1283
+ returns(
1284
+ T.nilable(
1285
+ T::Hash[
1286
+ Symbol,
1287
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Metadata::Variants
1288
+ ]
1289
+ )
1290
+ )
1291
+ end
1292
+ attr_reader :metadata
1293
+
1294
+ sig do
1295
+ params(
1296
+ metadata:
1297
+ T::Hash[
1298
+ Symbol,
1299
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Metadata::Variants
1300
+ ]
1301
+ ).void
1302
+ end
1303
+ attr_writer :metadata
1304
+
1305
+ # Reusable resources observed during the event. Use this for emails, phone
1306
+ # numbers, names, addresses, social handles, URLs, payment identifiers, or similar
1307
+ # identifiers.
1308
+ sig do
1309
+ returns(
1310
+ T.nilable(
1311
+ T::Array[
1312
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::ResourcesUsed
1313
+ ]
1314
+ )
1315
+ )
1316
+ end
1317
+ attr_reader :resources_used
1318
+
1319
+ sig do
1320
+ params(
1321
+ resources_used:
1322
+ T::Array[
1323
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::ResourcesUsed::OrHash
1324
+ ]
1325
+ ).void
1326
+ end
1327
+ attr_writer :resources_used
1328
+
1329
+ # A user or account is created.
1330
+ sig do
1331
+ params(
1332
+ event_name: String,
1333
+ timestamp: Time,
1334
+ user_id: String,
1335
+ content:
1336
+ T::Array[
1337
+ T.any(
1338
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventTextContent::OrHash,
1339
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventImageContent::OrHash
1340
+ )
1341
+ ],
1342
+ metadata:
1343
+ T::Hash[
1344
+ Symbol,
1345
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Metadata::Variants
1346
+ ],
1347
+ resources_used:
1348
+ T::Array[
1349
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::ResourcesUsed::OrHash
1350
+ ],
1351
+ type: Symbol
1352
+ ).returns(T.attached_class)
1353
+ end
1354
+ def self.new(
1355
+ # Stable, low-cardinality product action name. Use snake_case and put dynamic
1356
+ # values in typed fields, content, resources_used, or metadata.
1357
+ event_name:,
1358
+ # The time the event occurred in your system, as an ISO 8601 datetime string.
1359
+ timestamp:,
1360
+ # Your stable canonical identifier for the user or account.
1361
+ user_id:,
1362
+ # User-authored or user-uploaded content parts. Use this for message bodies, bios,
1363
+ # listing text, image URLs, and similar content SafetyKit should compare or
1364
+ # analyze.
1365
+ content: nil,
1366
+ # Non-PII product context for filtering, segmentation, and debugging. Values may
1367
+ # be strings, numbers, booleans, or arrays of those scalar values.
1368
+ metadata: nil,
1369
+ # Reusable resources observed during the event. Use this for emails, phone
1370
+ # numbers, names, addresses, social handles, URLs, payment identifiers, or similar
1371
+ # identifiers.
1372
+ resources_used: nil,
1373
+ type: :create_account
1374
+ )
1375
+ end
1376
+
1377
+ sig do
1378
+ override.returns(
1379
+ {
1380
+ event_name: String,
1381
+ timestamp: Time,
1382
+ type: Symbol,
1383
+ user_id: String,
1384
+ content:
1385
+ T::Array[
1386
+ T.any(
1387
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventTextContent,
1388
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventImageContent
1389
+ )
1390
+ ],
1391
+ metadata:
1392
+ T::Hash[
1393
+ Symbol,
1394
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Metadata::Variants
1395
+ ],
1396
+ resources_used:
1397
+ T::Array[
1398
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::ResourcesUsed
1399
+ ]
1400
+ }
1401
+ )
1402
+ end
1403
+ def to_hash
1404
+ end
1405
+
1406
+ # User-authored text content associated with an event.
1407
+ module Content
1408
+ extend SafetyKit::Internal::Type::Union
1409
+
1410
+ Variants =
1411
+ T.type_alias do
1412
+ T.any(
1413
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventTextContent,
1414
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventImageContent
1415
+ )
1416
+ end
1417
+
1418
+ class EventTextContent < SafetyKit::Internal::Type::BaseModel
1419
+ OrHash =
1420
+ T.type_alias do
1421
+ T.any(
1422
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventTextContent,
1423
+ SafetyKit::Internal::AnyHash
1424
+ )
1425
+ end
1426
+
1427
+ # User-authored text SafetyKit should compare or analyze.
1428
+ sig { returns(String) }
1429
+ attr_accessor :text
1430
+
1431
+ # Text content part.
1432
+ sig do
1433
+ returns(
1434
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventTextContent::Type::OrSymbol
1435
+ )
1436
+ end
1437
+ attr_accessor :type
1438
+
1439
+ # Stable field key for this content part.
1440
+ sig { returns(T.nilable(String)) }
1441
+ attr_reader :key
1442
+
1443
+ sig { params(key: String).void }
1444
+ attr_writer :key
1445
+
1446
+ # User-authored text content associated with an event.
1447
+ sig do
1448
+ params(
1449
+ text: String,
1450
+ type:
1451
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventTextContent::Type::OrSymbol,
1452
+ key: String
1453
+ ).returns(T.attached_class)
1454
+ end
1455
+ def self.new(
1456
+ # User-authored text SafetyKit should compare or analyze.
1457
+ text:,
1458
+ # Text content part.
1459
+ type:,
1460
+ # Stable field key for this content part.
1461
+ key: nil
1462
+ )
1463
+ end
1464
+
1465
+ sig do
1466
+ override.returns(
1467
+ {
1468
+ text: String,
1469
+ type:
1470
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventTextContent::Type::OrSymbol,
1471
+ key: String
1472
+ }
1473
+ )
1474
+ end
1475
+ def to_hash
1476
+ end
1477
+
1478
+ # Text content part.
1479
+ module Type
1480
+ extend SafetyKit::Internal::Type::Enum
1481
+
1482
+ TaggedSymbol =
1483
+ T.type_alias do
1484
+ T.all(
1485
+ Symbol,
1486
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventTextContent::Type
1487
+ )
1488
+ end
1489
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1490
+
1491
+ TEXT =
1492
+ T.let(
1493
+ :text,
1494
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventTextContent::Type::TaggedSymbol
1495
+ )
1496
+
1497
+ sig do
1498
+ override.returns(
1499
+ T::Array[
1500
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventTextContent::Type::TaggedSymbol
1501
+ ]
1502
+ )
1503
+ end
1504
+ def self.values
1505
+ end
1506
+ end
1507
+ end
1508
+
1509
+ class EventImageContent < SafetyKit::Internal::Type::BaseModel
1510
+ OrHash =
1511
+ T.type_alias do
1512
+ T.any(
1513
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventImageContent,
1514
+ SafetyKit::Internal::AnyHash
1515
+ )
1516
+ end
1517
+
1518
+ # Image source information.
1519
+ sig do
1520
+ returns(
1521
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventImageContent::Source
1522
+ )
1523
+ end
1524
+ attr_reader :source
1525
+
1526
+ sig do
1527
+ params(
1528
+ source:
1529
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventImageContent::Source::OrHash
1530
+ ).void
1531
+ end
1532
+ attr_writer :source
1533
+
1534
+ # Image content part.
1535
+ sig do
1536
+ returns(
1537
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventImageContent::Type::OrSymbol
1538
+ )
1539
+ end
1540
+ attr_accessor :type
1541
+
1542
+ # Stable field key for this content part.
1543
+ sig { returns(T.nilable(String)) }
1544
+ attr_reader :key
1545
+
1546
+ sig { params(key: String).void }
1547
+ attr_writer :key
1548
+
1549
+ # User-uploaded image content associated with an event.
1550
+ sig do
1551
+ params(
1552
+ source:
1553
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventImageContent::Source::OrHash,
1554
+ type:
1555
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventImageContent::Type::OrSymbol,
1556
+ key: String
1557
+ ).returns(T.attached_class)
1558
+ end
1559
+ def self.new(
1560
+ # Image source information.
1561
+ source:,
1562
+ # Image content part.
1563
+ type:,
1564
+ # Stable field key for this content part.
1565
+ key: nil
1566
+ )
1567
+ end
1568
+
1569
+ sig do
1570
+ override.returns(
1571
+ {
1572
+ source:
1573
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventImageContent::Source,
1574
+ type:
1575
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventImageContent::Type::OrSymbol,
1576
+ key: String
1577
+ }
1578
+ )
1579
+ end
1580
+ def to_hash
1581
+ end
1582
+
1583
+ class Source < SafetyKit::Internal::Type::BaseModel
1584
+ OrHash =
1585
+ T.type_alias do
1586
+ T.any(
1587
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventImageContent::Source,
1588
+ SafetyKit::Internal::AnyHash
1589
+ )
1590
+ end
1591
+
1592
+ # URL image source.
1593
+ sig do
1594
+ returns(
1595
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventImageContent::Source::Type::OrSymbol
1596
+ )
1597
+ end
1598
+ attr_accessor :type
1599
+
1600
+ # URL of the image SafetyKit should compare or analyze.
1601
+ sig { returns(String) }
1602
+ attr_accessor :url
1603
+
1604
+ # Image source information.
1605
+ sig do
1606
+ params(
1607
+ type:
1608
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventImageContent::Source::Type::OrSymbol,
1609
+ url: String
1610
+ ).returns(T.attached_class)
1611
+ end
1612
+ def self.new(
1613
+ # URL image source.
1614
+ type:,
1615
+ # URL of the image SafetyKit should compare or analyze.
1616
+ url:
1617
+ )
1618
+ end
1619
+
1620
+ sig do
1621
+ override.returns(
1622
+ {
1623
+ type:
1624
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventImageContent::Source::Type::OrSymbol,
1625
+ url: String
1626
+ }
1627
+ )
1628
+ end
1629
+ def to_hash
1630
+ end
1631
+
1632
+ # URL image source.
1633
+ module Type
1634
+ extend SafetyKit::Internal::Type::Enum
1635
+
1636
+ TaggedSymbol =
1637
+ T.type_alias do
1638
+ T.all(
1639
+ Symbol,
1640
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventImageContent::Source::Type
1641
+ )
1642
+ end
1643
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1644
+
1645
+ URL =
1646
+ T.let(
1647
+ :url,
1648
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventImageContent::Source::Type::TaggedSymbol
1649
+ )
1650
+
1651
+ sig do
1652
+ override.returns(
1653
+ T::Array[
1654
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventImageContent::Source::Type::TaggedSymbol
1655
+ ]
1656
+ )
1657
+ end
1658
+ def self.values
1659
+ end
1660
+ end
1661
+ end
1662
+
1663
+ # Image content part.
1664
+ module Type
1665
+ extend SafetyKit::Internal::Type::Enum
1666
+
1667
+ TaggedSymbol =
1668
+ T.type_alias do
1669
+ T.all(
1670
+ Symbol,
1671
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventImageContent::Type
1672
+ )
1673
+ end
1674
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1675
+
1676
+ IMAGE =
1677
+ T.let(
1678
+ :image,
1679
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventImageContent::Type::TaggedSymbol
1680
+ )
1681
+
1682
+ sig do
1683
+ override.returns(
1684
+ T::Array[
1685
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::EventImageContent::Type::TaggedSymbol
1686
+ ]
1687
+ )
1688
+ end
1689
+ def self.values
1690
+ end
1691
+ end
1692
+ end
1693
+
1694
+ sig do
1695
+ override.returns(
1696
+ T::Array[
1697
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Content::Variants
1698
+ ]
1699
+ )
1700
+ end
1701
+ def self.variants
1702
+ end
1703
+ end
1704
+
1705
+ module Metadata
1706
+ extend SafetyKit::Internal::Type::Union
1707
+
1708
+ Variants =
1709
+ T.type_alias do
1710
+ T.any(
1711
+ String,
1712
+ Float,
1713
+ T::Boolean,
1714
+ T::Array[
1715
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Metadata::UnionMember3::Variants
1716
+ ]
1717
+ )
1718
+ end
1719
+
1720
+ module UnionMember3
1721
+ extend SafetyKit::Internal::Type::Union
1722
+
1723
+ Variants = T.type_alias { T.any(String, Float, T::Boolean) }
1724
+
1725
+ sig do
1726
+ override.returns(
1727
+ T::Array[
1728
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Metadata::UnionMember3::Variants
1729
+ ]
1730
+ )
1731
+ end
1732
+ def self.variants
1733
+ end
1734
+ end
1735
+
1736
+ sig do
1737
+ override.returns(
1738
+ T::Array[
1739
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Metadata::Variants
1740
+ ]
1741
+ )
1742
+ end
1743
+ def self.variants
1744
+ end
1745
+
1746
+ UnionMember3Array =
1747
+ T.let(
1748
+ SafetyKit::Internal::Type::ArrayOf[
1749
+ union:
1750
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::Metadata::UnionMember3
1751
+ ],
1752
+ SafetyKit::Internal::Type::Converter
1753
+ )
1754
+ end
1755
+
1756
+ class ResourcesUsed < SafetyKit::Internal::Type::BaseModel
1757
+ OrHash =
1758
+ T.type_alias do
1759
+ T.any(
1760
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::ResourcesUsed,
1761
+ SafetyKit::Internal::AnyHash
1762
+ )
1763
+ end
1764
+
1765
+ # Resource family, such as email, phone, name, address, url, instagram, tiktok,
1766
+ # youtube, linkedin, or another stable snake_case identifier.
1767
+ sig { returns(String) }
1768
+ attr_accessor :type
1769
+
1770
+ # Resource value used during the event. SafetyKit stores a normalized hash of this
1771
+ # value, not the raw value.
1772
+ sig { returns(String) }
1773
+ attr_accessor :value
1774
+
1775
+ # Real-world or account resource used during the event, such as an email, phone
1776
+ # number, address, URL, social handle, or payment identifier.
1777
+ sig do
1778
+ params(type: String, value: String).returns(T.attached_class)
1779
+ end
1780
+ def self.new(
1781
+ # Resource family, such as email, phone, name, address, url, instagram, tiktok,
1782
+ # youtube, linkedin, or another stable snake_case identifier.
1783
+ type:,
1784
+ # Resource value used during the event. SafetyKit stores a normalized hash of this
1785
+ # value, not the raw value.
1786
+ value:
1787
+ )
1788
+ end
1789
+
1790
+ sig { override.returns({ type: String, value: String }) }
1791
+ def to_hash
1792
+ end
1793
+ end
1794
+ end
1795
+
1796
+ class UpdateAccount < SafetyKit::Internal::Type::BaseModel
1797
+ OrHash =
1798
+ T.type_alias do
1799
+ T.any(
1800
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount,
1801
+ SafetyKit::Internal::AnyHash
1802
+ )
1803
+ end
1804
+
1805
+ # Stable, low-cardinality product action name. Use snake_case and put dynamic
1806
+ # values in typed fields, content, resources_used, or metadata.
1807
+ sig { returns(String) }
1808
+ attr_accessor :event_name
1809
+
1810
+ # The time the event occurred in your system, as an ISO 8601 datetime string.
1811
+ sig { returns(Time) }
1812
+ attr_accessor :timestamp
1813
+
1814
+ sig { returns(Symbol) }
1815
+ attr_accessor :type
1816
+
1817
+ # Your stable canonical identifier for the user or account.
1818
+ sig { returns(String) }
1819
+ attr_accessor :user_id
1820
+
1821
+ # User-authored or user-uploaded content parts. Use this for message bodies, bios,
1822
+ # listing text, image URLs, and similar content SafetyKit should compare or
1823
+ # analyze.
1824
+ sig do
1825
+ returns(
1826
+ T.nilable(
1827
+ T::Array[
1828
+ T.any(
1829
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventTextContent,
1830
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventImageContent
1831
+ )
1832
+ ]
1833
+ )
1834
+ )
1835
+ end
1836
+ attr_reader :content
1837
+
1838
+ sig do
1839
+ params(
1840
+ content:
1841
+ T::Array[
1842
+ T.any(
1843
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventTextContent::OrHash,
1844
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventImageContent::OrHash
1845
+ )
1846
+ ]
1847
+ ).void
1848
+ end
1849
+ attr_writer :content
1850
+
1851
+ # Non-PII product context for filtering, segmentation, and debugging. Values may
1852
+ # be strings, numbers, booleans, or arrays of those scalar values.
1853
+ sig do
1854
+ returns(
1855
+ T.nilable(
1856
+ T::Hash[
1857
+ Symbol,
1858
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Metadata::Variants
1859
+ ]
1860
+ )
1861
+ )
1862
+ end
1863
+ attr_reader :metadata
1864
+
1865
+ sig do
1866
+ params(
1867
+ metadata:
1868
+ T::Hash[
1869
+ Symbol,
1870
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Metadata::Variants
1871
+ ]
1872
+ ).void
1873
+ end
1874
+ attr_writer :metadata
1875
+
1876
+ # Reusable resources observed during the event. Use this for emails, phone
1877
+ # numbers, names, addresses, social handles, URLs, payment identifiers, or similar
1878
+ # identifiers.
1879
+ sig do
1880
+ returns(
1881
+ T.nilable(
1882
+ T::Array[
1883
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::ResourcesUsed
1884
+ ]
1885
+ )
1886
+ )
1887
+ end
1888
+ attr_reader :resources_used
1889
+
1890
+ sig do
1891
+ params(
1892
+ resources_used:
1893
+ T::Array[
1894
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::ResourcesUsed::OrHash
1895
+ ]
1896
+ ).void
1897
+ end
1898
+ attr_writer :resources_used
1899
+
1900
+ # A user or account profile, contact detail, payment detail, or public bio
1901
+ # changes.
1902
+ sig do
1903
+ params(
1904
+ event_name: String,
1905
+ timestamp: Time,
1906
+ user_id: String,
1907
+ content:
1908
+ T::Array[
1909
+ T.any(
1910
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventTextContent::OrHash,
1911
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventImageContent::OrHash
1912
+ )
1913
+ ],
1914
+ metadata:
1915
+ T::Hash[
1916
+ Symbol,
1917
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Metadata::Variants
1918
+ ],
1919
+ resources_used:
1920
+ T::Array[
1921
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::ResourcesUsed::OrHash
1922
+ ],
1923
+ type: Symbol
1924
+ ).returns(T.attached_class)
1925
+ end
1926
+ def self.new(
1927
+ # Stable, low-cardinality product action name. Use snake_case and put dynamic
1928
+ # values in typed fields, content, resources_used, or metadata.
1929
+ event_name:,
1930
+ # The time the event occurred in your system, as an ISO 8601 datetime string.
1931
+ timestamp:,
1932
+ # Your stable canonical identifier for the user or account.
1933
+ user_id:,
1934
+ # User-authored or user-uploaded content parts. Use this for message bodies, bios,
1935
+ # listing text, image URLs, and similar content SafetyKit should compare or
1936
+ # analyze.
1937
+ content: nil,
1938
+ # Non-PII product context for filtering, segmentation, and debugging. Values may
1939
+ # be strings, numbers, booleans, or arrays of those scalar values.
1940
+ metadata: nil,
1941
+ # Reusable resources observed during the event. Use this for emails, phone
1942
+ # numbers, names, addresses, social handles, URLs, payment identifiers, or similar
1943
+ # identifiers.
1944
+ resources_used: nil,
1945
+ type: :update_account
1946
+ )
1947
+ end
1948
+
1949
+ sig do
1950
+ override.returns(
1951
+ {
1952
+ event_name: String,
1953
+ timestamp: Time,
1954
+ type: Symbol,
1955
+ user_id: String,
1956
+ content:
1957
+ T::Array[
1958
+ T.any(
1959
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventTextContent,
1960
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventImageContent
1961
+ )
1962
+ ],
1963
+ metadata:
1964
+ T::Hash[
1965
+ Symbol,
1966
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Metadata::Variants
1967
+ ],
1968
+ resources_used:
1969
+ T::Array[
1970
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::ResourcesUsed
1971
+ ]
1972
+ }
1973
+ )
1974
+ end
1975
+ def to_hash
1976
+ end
1977
+
1978
+ # User-authored text content associated with an event.
1979
+ module Content
1980
+ extend SafetyKit::Internal::Type::Union
1981
+
1982
+ Variants =
1983
+ T.type_alias do
1984
+ T.any(
1985
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventTextContent,
1986
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventImageContent
1987
+ )
1988
+ end
1989
+
1990
+ class EventTextContent < SafetyKit::Internal::Type::BaseModel
1991
+ OrHash =
1992
+ T.type_alias do
1993
+ T.any(
1994
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventTextContent,
1995
+ SafetyKit::Internal::AnyHash
1996
+ )
1997
+ end
1998
+
1999
+ # User-authored text SafetyKit should compare or analyze.
2000
+ sig { returns(String) }
2001
+ attr_accessor :text
2002
+
2003
+ # Text content part.
2004
+ sig do
2005
+ returns(
2006
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventTextContent::Type::OrSymbol
2007
+ )
2008
+ end
2009
+ attr_accessor :type
2010
+
2011
+ # Stable field key for this content part.
2012
+ sig { returns(T.nilable(String)) }
2013
+ attr_reader :key
2014
+
2015
+ sig { params(key: String).void }
2016
+ attr_writer :key
2017
+
2018
+ # User-authored text content associated with an event.
2019
+ sig do
2020
+ params(
2021
+ text: String,
2022
+ type:
2023
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventTextContent::Type::OrSymbol,
2024
+ key: String
2025
+ ).returns(T.attached_class)
2026
+ end
2027
+ def self.new(
2028
+ # User-authored text SafetyKit should compare or analyze.
2029
+ text:,
2030
+ # Text content part.
2031
+ type:,
2032
+ # Stable field key for this content part.
2033
+ key: nil
2034
+ )
2035
+ end
2036
+
2037
+ sig do
2038
+ override.returns(
2039
+ {
2040
+ text: String,
2041
+ type:
2042
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventTextContent::Type::OrSymbol,
2043
+ key: String
2044
+ }
2045
+ )
2046
+ end
2047
+ def to_hash
2048
+ end
2049
+
2050
+ # Text content part.
2051
+ module Type
2052
+ extend SafetyKit::Internal::Type::Enum
2053
+
2054
+ TaggedSymbol =
2055
+ T.type_alias do
2056
+ T.all(
2057
+ Symbol,
2058
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventTextContent::Type
2059
+ )
2060
+ end
2061
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
2062
+
2063
+ TEXT =
2064
+ T.let(
2065
+ :text,
2066
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventTextContent::Type::TaggedSymbol
2067
+ )
2068
+
2069
+ sig do
2070
+ override.returns(
2071
+ T::Array[
2072
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventTextContent::Type::TaggedSymbol
2073
+ ]
2074
+ )
2075
+ end
2076
+ def self.values
2077
+ end
2078
+ end
2079
+ end
2080
+
2081
+ class EventImageContent < SafetyKit::Internal::Type::BaseModel
2082
+ OrHash =
2083
+ T.type_alias do
2084
+ T.any(
2085
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventImageContent,
2086
+ SafetyKit::Internal::AnyHash
2087
+ )
2088
+ end
2089
+
2090
+ # Image source information.
2091
+ sig do
2092
+ returns(
2093
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventImageContent::Source
2094
+ )
2095
+ end
2096
+ attr_reader :source
2097
+
2098
+ sig do
2099
+ params(
2100
+ source:
2101
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventImageContent::Source::OrHash
2102
+ ).void
2103
+ end
2104
+ attr_writer :source
2105
+
2106
+ # Image content part.
2107
+ sig do
2108
+ returns(
2109
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventImageContent::Type::OrSymbol
2110
+ )
2111
+ end
2112
+ attr_accessor :type
2113
+
2114
+ # Stable field key for this content part.
2115
+ sig { returns(T.nilable(String)) }
2116
+ attr_reader :key
2117
+
2118
+ sig { params(key: String).void }
2119
+ attr_writer :key
2120
+
2121
+ # User-uploaded image content associated with an event.
2122
+ sig do
2123
+ params(
2124
+ source:
2125
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventImageContent::Source::OrHash,
2126
+ type:
2127
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventImageContent::Type::OrSymbol,
2128
+ key: String
2129
+ ).returns(T.attached_class)
2130
+ end
2131
+ def self.new(
2132
+ # Image source information.
2133
+ source:,
2134
+ # Image content part.
2135
+ type:,
2136
+ # Stable field key for this content part.
2137
+ key: nil
2138
+ )
2139
+ end
2140
+
2141
+ sig do
2142
+ override.returns(
2143
+ {
2144
+ source:
2145
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventImageContent::Source,
2146
+ type:
2147
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventImageContent::Type::OrSymbol,
2148
+ key: String
2149
+ }
2150
+ )
2151
+ end
2152
+ def to_hash
2153
+ end
2154
+
2155
+ class Source < SafetyKit::Internal::Type::BaseModel
2156
+ OrHash =
2157
+ T.type_alias do
2158
+ T.any(
2159
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventImageContent::Source,
2160
+ SafetyKit::Internal::AnyHash
2161
+ )
2162
+ end
2163
+
2164
+ # URL image source.
2165
+ sig do
2166
+ returns(
2167
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventImageContent::Source::Type::OrSymbol
2168
+ )
2169
+ end
2170
+ attr_accessor :type
2171
+
2172
+ # URL of the image SafetyKit should compare or analyze.
2173
+ sig { returns(String) }
2174
+ attr_accessor :url
2175
+
2176
+ # Image source information.
2177
+ sig do
2178
+ params(
2179
+ type:
2180
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventImageContent::Source::Type::OrSymbol,
2181
+ url: String
2182
+ ).returns(T.attached_class)
2183
+ end
2184
+ def self.new(
2185
+ # URL image source.
2186
+ type:,
2187
+ # URL of the image SafetyKit should compare or analyze.
2188
+ url:
2189
+ )
2190
+ end
2191
+
2192
+ sig do
2193
+ override.returns(
2194
+ {
2195
+ type:
2196
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventImageContent::Source::Type::OrSymbol,
2197
+ url: String
2198
+ }
2199
+ )
2200
+ end
2201
+ def to_hash
2202
+ end
2203
+
2204
+ # URL image source.
2205
+ module Type
2206
+ extend SafetyKit::Internal::Type::Enum
2207
+
2208
+ TaggedSymbol =
2209
+ T.type_alias do
2210
+ T.all(
2211
+ Symbol,
2212
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventImageContent::Source::Type
2213
+ )
2214
+ end
2215
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
2216
+
2217
+ URL =
2218
+ T.let(
2219
+ :url,
2220
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventImageContent::Source::Type::TaggedSymbol
2221
+ )
2222
+
2223
+ sig do
2224
+ override.returns(
2225
+ T::Array[
2226
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventImageContent::Source::Type::TaggedSymbol
2227
+ ]
2228
+ )
2229
+ end
2230
+ def self.values
2231
+ end
2232
+ end
2233
+ end
2234
+
2235
+ # Image content part.
2236
+ module Type
2237
+ extend SafetyKit::Internal::Type::Enum
2238
+
2239
+ TaggedSymbol =
2240
+ T.type_alias do
2241
+ T.all(
2242
+ Symbol,
2243
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventImageContent::Type
2244
+ )
2245
+ end
2246
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
2247
+
2248
+ IMAGE =
2249
+ T.let(
2250
+ :image,
2251
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventImageContent::Type::TaggedSymbol
2252
+ )
2253
+
2254
+ sig do
2255
+ override.returns(
2256
+ T::Array[
2257
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::EventImageContent::Type::TaggedSymbol
2258
+ ]
2259
+ )
2260
+ end
2261
+ def self.values
2262
+ end
2263
+ end
2264
+ end
2265
+
2266
+ sig do
2267
+ override.returns(
2268
+ T::Array[
2269
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Content::Variants
2270
+ ]
2271
+ )
2272
+ end
2273
+ def self.variants
2274
+ end
2275
+ end
2276
+
2277
+ module Metadata
2278
+ extend SafetyKit::Internal::Type::Union
2279
+
2280
+ Variants =
2281
+ T.type_alias do
2282
+ T.any(
2283
+ String,
2284
+ Float,
2285
+ T::Boolean,
2286
+ T::Array[
2287
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Metadata::UnionMember3::Variants
2288
+ ]
2289
+ )
2290
+ end
2291
+
2292
+ module UnionMember3
2293
+ extend SafetyKit::Internal::Type::Union
2294
+
2295
+ Variants = T.type_alias { T.any(String, Float, T::Boolean) }
2296
+
2297
+ sig do
2298
+ override.returns(
2299
+ T::Array[
2300
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Metadata::UnionMember3::Variants
2301
+ ]
2302
+ )
2303
+ end
2304
+ def self.variants
2305
+ end
2306
+ end
2307
+
2308
+ sig do
2309
+ override.returns(
2310
+ T::Array[
2311
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Metadata::Variants
2312
+ ]
2313
+ )
2314
+ end
2315
+ def self.variants
2316
+ end
2317
+
2318
+ UnionMember3Array =
2319
+ T.let(
2320
+ SafetyKit::Internal::Type::ArrayOf[
2321
+ union:
2322
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::Metadata::UnionMember3
2323
+ ],
2324
+ SafetyKit::Internal::Type::Converter
2325
+ )
2326
+ end
2327
+
2328
+ class ResourcesUsed < SafetyKit::Internal::Type::BaseModel
2329
+ OrHash =
2330
+ T.type_alias do
2331
+ T.any(
2332
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::ResourcesUsed,
2333
+ SafetyKit::Internal::AnyHash
2334
+ )
2335
+ end
2336
+
2337
+ # Resource family, such as email, phone, name, address, url, instagram, tiktok,
2338
+ # youtube, linkedin, or another stable snake_case identifier.
2339
+ sig { returns(String) }
2340
+ attr_accessor :type
2341
+
2342
+ # Resource value used during the event. SafetyKit stores a normalized hash of this
2343
+ # value, not the raw value.
2344
+ sig { returns(String) }
2345
+ attr_accessor :value
2346
+
2347
+ # Real-world or account resource used during the event, such as an email, phone
2348
+ # number, address, URL, social handle, or payment identifier.
2349
+ sig do
2350
+ params(type: String, value: String).returns(T.attached_class)
2351
+ end
2352
+ def self.new(
2353
+ # Resource family, such as email, phone, name, address, url, instagram, tiktok,
2354
+ # youtube, linkedin, or another stable snake_case identifier.
2355
+ type:,
2356
+ # Resource value used during the event. SafetyKit stores a normalized hash of this
2357
+ # value, not the raw value.
2358
+ value:
2359
+ )
2360
+ end
2361
+
2362
+ sig { override.returns({ type: String, value: String }) }
2363
+ def to_hash
2364
+ end
2365
+ end
2366
+ end
2367
+
2368
+ sig do
2369
+ override.returns(
2370
+ T::Array[SafetyKit::Beta::EventCreateParams::Body::Variants]
2371
+ )
2372
+ end
2373
+ def self.variants
2374
+ end
2375
+ end
2376
+ end
2377
+ end
2378
+ end
2379
+ end