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,55 @@
1
+ # typed: strong
2
+
3
+ module SafetyKit
4
+ module Models
5
+ class StreamAddParams < SafetyKit::Internal::Type::BaseModel
6
+ extend SafetyKit::Internal::Type::RequestParameters::Converter
7
+ include SafetyKit::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(SafetyKit::StreamAddParams, SafetyKit::Internal::AnyHash)
12
+ end
13
+
14
+ # The namespace to ingest stream data into
15
+ sig { returns(String) }
16
+ attr_accessor :namespace
17
+
18
+ sig { returns(String) }
19
+ attr_accessor :id
20
+
21
+ sig { returns(String) }
22
+ attr_accessor :stream_url
23
+
24
+ sig do
25
+ params(
26
+ namespace: String,
27
+ id: String,
28
+ stream_url: String,
29
+ request_options: SafetyKit::RequestOptions::OrHash
30
+ ).returns(T.attached_class)
31
+ end
32
+ def self.new(
33
+ # The namespace to ingest stream data into
34
+ namespace:,
35
+ id:,
36
+ stream_url:,
37
+ request_options: {}
38
+ )
39
+ end
40
+
41
+ sig do
42
+ override.returns(
43
+ {
44
+ namespace: String,
45
+ id: String,
46
+ stream_url: String,
47
+ request_options: SafetyKit::RequestOptions
48
+ }
49
+ )
50
+ end
51
+ def to_hash
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,68 @@
1
+ # typed: strong
2
+
3
+ module SafetyKit
4
+ module Models
5
+ class StreamAddResponse < SafetyKit::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ SafetyKit::Models::StreamAddResponse,
10
+ SafetyKit::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ sig { returns(String) }
15
+ attr_accessor :request_id
16
+
17
+ sig do
18
+ returns(SafetyKit::Models::StreamAddResponse::Status::TaggedSymbol)
19
+ end
20
+ attr_accessor :status
21
+
22
+ # Stream ingestion request accepted for asynchronous processing.
23
+ sig do
24
+ params(
25
+ request_id: String,
26
+ status: SafetyKit::Models::StreamAddResponse::Status::OrSymbol
27
+ ).returns(T.attached_class)
28
+ end
29
+ def self.new(request_id:, status:)
30
+ end
31
+
32
+ sig do
33
+ override.returns(
34
+ {
35
+ request_id: String,
36
+ status: SafetyKit::Models::StreamAddResponse::Status::TaggedSymbol
37
+ }
38
+ )
39
+ end
40
+ def to_hash
41
+ end
42
+
43
+ module Status
44
+ extend SafetyKit::Internal::Type::Enum
45
+
46
+ TaggedSymbol =
47
+ T.type_alias do
48
+ T.all(Symbol, SafetyKit::Models::StreamAddResponse::Status)
49
+ end
50
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
51
+
52
+ ACCEPTED =
53
+ T.let(
54
+ :accepted,
55
+ SafetyKit::Models::StreamAddResponse::Status::TaggedSymbol
56
+ )
57
+
58
+ sig do
59
+ override.returns(
60
+ T::Array[SafetyKit::Models::StreamAddResponse::Status::TaggedSymbol]
61
+ )
62
+ end
63
+ def self.values
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,64 @@
1
+ # typed: strong
2
+
3
+ module SafetyKit
4
+ module Models
5
+ class StreamAddTranscriptParams < SafetyKit::Internal::Type::BaseModel
6
+ extend SafetyKit::Internal::Type::RequestParameters::Converter
7
+ include SafetyKit::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(
12
+ SafetyKit::StreamAddTranscriptParams,
13
+ SafetyKit::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # The namespace to ingest stream data into
18
+ sig { returns(String) }
19
+ attr_accessor :namespace
20
+
21
+ sig { returns(String) }
22
+ attr_accessor :stream_id
23
+
24
+ sig { returns(String) }
25
+ attr_accessor :text
26
+
27
+ sig { returns(Integer) }
28
+ attr_accessor :timestamp
29
+
30
+ sig do
31
+ params(
32
+ namespace: String,
33
+ stream_id: String,
34
+ text: String,
35
+ timestamp: Integer,
36
+ request_options: SafetyKit::RequestOptions::OrHash
37
+ ).returns(T.attached_class)
38
+ end
39
+ def self.new(
40
+ # The namespace to ingest stream data into
41
+ namespace:,
42
+ stream_id:,
43
+ text:,
44
+ timestamp:,
45
+ request_options: {}
46
+ )
47
+ end
48
+
49
+ sig do
50
+ override.returns(
51
+ {
52
+ namespace: String,
53
+ stream_id: String,
54
+ text: String,
55
+ timestamp: Integer,
56
+ request_options: SafetyKit::RequestOptions
57
+ }
58
+ )
59
+ end
60
+ def to_hash
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,77 @@
1
+ # typed: strong
2
+
3
+ module SafetyKit
4
+ module Models
5
+ class StreamAddTranscriptResponse < SafetyKit::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ SafetyKit::Models::StreamAddTranscriptResponse,
10
+ SafetyKit::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ sig { returns(String) }
15
+ attr_accessor :request_id
16
+
17
+ sig do
18
+ returns(
19
+ SafetyKit::Models::StreamAddTranscriptResponse::Status::TaggedSymbol
20
+ )
21
+ end
22
+ attr_accessor :status
23
+
24
+ # Stream ingestion request accepted for asynchronous processing.
25
+ sig do
26
+ params(
27
+ request_id: String,
28
+ status:
29
+ SafetyKit::Models::StreamAddTranscriptResponse::Status::OrSymbol
30
+ ).returns(T.attached_class)
31
+ end
32
+ def self.new(request_id:, status:)
33
+ end
34
+
35
+ sig do
36
+ override.returns(
37
+ {
38
+ request_id: String,
39
+ status:
40
+ SafetyKit::Models::StreamAddTranscriptResponse::Status::TaggedSymbol
41
+ }
42
+ )
43
+ end
44
+ def to_hash
45
+ end
46
+
47
+ module Status
48
+ extend SafetyKit::Internal::Type::Enum
49
+
50
+ TaggedSymbol =
51
+ T.type_alias do
52
+ T.all(
53
+ Symbol,
54
+ SafetyKit::Models::StreamAddTranscriptResponse::Status
55
+ )
56
+ end
57
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
58
+
59
+ ACCEPTED =
60
+ T.let(
61
+ :accepted,
62
+ SafetyKit::Models::StreamAddTranscriptResponse::Status::TaggedSymbol
63
+ )
64
+
65
+ sig do
66
+ override.returns(
67
+ T::Array[
68
+ SafetyKit::Models::StreamAddTranscriptResponse::Status::TaggedSymbol
69
+ ]
70
+ )
71
+ end
72
+ def self.values
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,29 @@
1
+ # typed: strong
2
+
3
+ module SafetyKit
4
+ AgentDecisionCreateAgentDecisionParams =
5
+ SafetyKit::Models::AgentDecisionCreateAgentDecisionParams
6
+
7
+ Beta = SafetyKit::Models::Beta
8
+
9
+ ClientSessionCreateSessionParams =
10
+ SafetyKit::Models::ClientSessionCreateSessionParams
11
+
12
+ DataAddParams = SafetyKit::Models::DataAddParams
13
+
14
+ DataCreateUploadURLParams = SafetyKit::Models::DataCreateUploadURLParams
15
+
16
+ DataGetDownloadURLParams = SafetyKit::Models::DataGetDownloadURLParams
17
+
18
+ DataGetStatusParams = SafetyKit::Models::DataGetStatusParams
19
+
20
+ DataObject = SafetyKit::Models::DataObject
21
+
22
+ DataUpdateSettingsParams = SafetyKit::Models::DataUpdateSettingsParams
23
+
24
+ StreamAddFrameParams = SafetyKit::Models::StreamAddFrameParams
25
+
26
+ StreamAddParams = SafetyKit::Models::StreamAddParams
27
+
28
+ StreamAddTranscriptParams = SafetyKit::Models::StreamAddTranscriptParams
29
+ end
@@ -0,0 +1,59 @@
1
+ # typed: strong
2
+
3
+ module SafetyKit
4
+ # Specify HTTP behaviour to use for a specific request. These options supplement
5
+ # or override those provided at the client level.
6
+ #
7
+ # When making a request, you can pass an actual {RequestOptions} instance, or
8
+ # simply pass a Hash with symbol keys matching the attributes on this class.
9
+ class RequestOptions < SafetyKit::Internal::Type::BaseModel
10
+ OrHash =
11
+ T.type_alias do
12
+ T.any(SafetyKit::RequestOptions, SafetyKit::Internal::AnyHash)
13
+ end
14
+
15
+ # @api private
16
+ sig { params(opts: SafetyKit::RequestOptions::OrHash).void }
17
+ def self.validate!(opts)
18
+ end
19
+
20
+ # Idempotency key to send with request and all associated retries. Will only be
21
+ # sent for write requests.
22
+ sig { returns(T.nilable(String)) }
23
+ attr_accessor :idempotency_key
24
+
25
+ # Extra query params to send with the request. These are `.merge`’d into any
26
+ # `query` given at the client level.
27
+ sig do
28
+ returns(
29
+ T.nilable(T::Hash[String, T.nilable(T.any(T::Array[String], String))])
30
+ )
31
+ end
32
+ attr_accessor :extra_query
33
+
34
+ # Extra headers to send with the request. These are `.merged`’d into any
35
+ # `extra_headers` given at the client level.
36
+ sig { returns(T.nilable(T::Hash[String, T.nilable(String)])) }
37
+ attr_accessor :extra_headers
38
+
39
+ # Extra data to send with the request. These are deep merged into any data
40
+ # generated as part of the normal request.
41
+ sig { returns(T.nilable(T.anything)) }
42
+ attr_accessor :extra_body
43
+
44
+ # Maximum number of retries to attempt after a failed initial request.
45
+ sig { returns(T.nilable(Integer)) }
46
+ attr_accessor :max_retries
47
+
48
+ # Request timeout in seconds.
49
+ sig { returns(T.nilable(Float)) }
50
+ attr_accessor :timeout
51
+
52
+ # Returns a new instance of RequestOptions.
53
+ sig do
54
+ params(values: SafetyKit::Internal::AnyHash).returns(T.attached_class)
55
+ end
56
+ def self.new(values = {})
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,50 @@
1
+ # typed: strong
2
+
3
+ module SafetyKit
4
+ module Resources
5
+ # Send human reviewer final verdicts to SafetyKit. This feedback improves the
6
+ # accuracy of SafetyKit's automated decisions over time.
7
+ class AgentDecisions
8
+ # Record a human reviewer's final verdict for content that SafetyKit has
9
+ # previously reviewed. This ground truth feedback allows SafetyKit to improve the
10
+ # accuracy of automated decisions. Each call provides feedback on whether a given
11
+ # piece of content violates a specific policy category. If content is reviewed for
12
+ # multiple policies, send one call per policy.
13
+ sig do
14
+ params(
15
+ content_type: String,
16
+ decision: String,
17
+ policy_id: String,
18
+ reference_id: String,
19
+ action: String,
20
+ comment: T.nilable(String),
21
+ request_options: SafetyKit::RequestOptions::OrHash
22
+ ).returns(SafetyKit::Models::AgentDecisionCreateAgentDecisionResponse)
23
+ end
24
+ def create_agent_decision(
25
+ # The dataapi namespace of the content being reviewed
26
+ content_type:,
27
+ # The human reviewer's verdict on whether the content violates the specified
28
+ # policy ('match'/'no_match').
29
+ decision:,
30
+ # The SafetyKit policy category ID that was evaluated, as configured for your
31
+ # account
32
+ policy_id:,
33
+ # The external id for the content being reviewed
34
+ reference_id:,
35
+ # The correct enforcement action for this content (e.g. 'reduce_visibility',
36
+ # 'unpublish')
37
+ action: nil,
38
+ # Additional context or details from the human reviewer
39
+ comment: nil,
40
+ request_options: {}
41
+ )
42
+ end
43
+
44
+ # @api private
45
+ sig { params(client: SafetyKit::Client).returns(T.attached_class) }
46
+ def self.new(client:)
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,40 @@
1
+ # typed: strong
2
+
3
+ module SafetyKit
4
+ module Resources
5
+ class Beta
6
+ # Beta. Send backend events for account, content, and user interaction activity.
7
+ class Events
8
+ # Beta. Send a backend event after a meaningful product action happens in your
9
+ # system. Use events for durable server-side context such as account creation,
10
+ # account updates, user-to-user contact, and content uploads. Do not send browser
11
+ # pageviews, button clicks, or other client-only telemetry through this endpoint.
12
+ sig do
13
+ params(
14
+ body:
15
+ T.any(
16
+ SafetyKit::Beta::EventCreateParams::Body::UserContact::OrHash,
17
+ SafetyKit::Beta::EventCreateParams::Body::ContentUploaded::OrHash,
18
+ SafetyKit::Beta::EventCreateParams::Body::CreateAccount::OrHash,
19
+ SafetyKit::Beta::EventCreateParams::Body::UpdateAccount::OrHash
20
+ ),
21
+ request_options: SafetyKit::RequestOptions::OrHash
22
+ ).returns(SafetyKit::Models::Beta::EventCreateResponse)
23
+ end
24
+ def create(
25
+ # Backend event to send to SafetyKit. Send events from your server after an action
26
+ # has happened in your product. Do not send these events directly from a browser
27
+ # or mobile client.
28
+ body:,
29
+ request_options: {}
30
+ )
31
+ end
32
+
33
+ # @api private
34
+ sig { params(client: SafetyKit::Client).returns(T.attached_class) }
35
+ def self.new(client:)
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,16 @@
1
+ # typed: strong
2
+
3
+ module SafetyKit
4
+ module Resources
5
+ class Beta
6
+ # Beta. Send backend events for account, content, and user interaction activity.
7
+ sig { returns(SafetyKit::Resources::Beta::Events) }
8
+ attr_reader :events
9
+
10
+ # @api private
11
+ sig { params(client: SafetyKit::Client).returns(T.attached_class) }
12
+ def self.new(client:)
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,33 @@
1
+ # typed: strong
2
+
3
+ module SafetyKit
4
+ module Resources
5
+ # Create browser-safe webapp SDK session tokens from authenticated server-side
6
+ # code.
7
+ class ClientSessions
8
+ # Create a browser-safe SafetyKit webapp SDK session token from server-side code
9
+ # before rendering pages that load the browser SDK. The request must be
10
+ # authenticated with a valid Bearer token.
11
+ sig do
12
+ params(
13
+ customer_session_hash: String,
14
+ customer_user_id: String,
15
+ request_options: SafetyKit::RequestOptions::OrHash
16
+ ).returns(SafetyKit::Models::ClientSessionCreateSessionResponse)
17
+ end
18
+ def create_session(
19
+ # Hashed customer browser session value associated with the browser SDK session.
20
+ customer_session_hash: nil,
21
+ # Customer user identifier associated with the browser SDK session.
22
+ customer_user_id: nil,
23
+ request_options: {}
24
+ )
25
+ end
26
+
27
+ # @api private
28
+ sig { params(client: SafetyKit::Client).returns(T.attached_class) }
29
+ def self.new(client:)
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,126 @@
1
+ # typed: strong
2
+
3
+ module SafetyKit
4
+ module Resources
5
+ # Ingest data for fraud detection and risk analysis.
6
+ class Data
7
+ # Add data to a namespace, returning immediately. Processing happens
8
+ # asynchronously in the background.
9
+ sig do
10
+ params(
11
+ namespace: String,
12
+ data:
13
+ T.any(
14
+ SafetyKit::DataObject::OrHash,
15
+ T::Array[SafetyKit::DataObject::OrHash]
16
+ ),
17
+ request_options: SafetyKit::RequestOptions::OrHash
18
+ ).returns(SafetyKit::Models::DataAddResponse)
19
+ end
20
+ def add(
21
+ # The namespace to ingest data into
22
+ namespace,
23
+ # A data object to ingest. It must include an id field. All other fields are
24
+ # flexible and can be any JSON type.
25
+ data:,
26
+ request_options: {}
27
+ )
28
+ end
29
+
30
+ # Request a pre-signed upload URL for large JSONL batches into a namespace. After
31
+ # receiving `upload_url`, upload your JSONL file using `PUT {upload_url}` with
32
+ # header `Content-Type: application/json`; put each JSON object on a new line.
33
+ sig do
34
+ params(
35
+ namespace: String,
36
+ schema:
37
+ T::Hash[
38
+ Symbol,
39
+ SafetyKit::DataCreateUploadURLParams::Schema::OrHash
40
+ ],
41
+ request_options: SafetyKit::RequestOptions::OrHash
42
+ ).returns(SafetyKit::Models::DataCreateUploadURLResponse)
43
+ end
44
+ def create_upload_url(
45
+ # The namespace to ingest data into
46
+ namespace,
47
+ # Schema mapping field names to their definitions. Use content_type to specify
48
+ # which fields contain URLs that should be processed (images, videos, or
49
+ # websites), datetime fields, or 'metadata' for fields that should be stored but
50
+ # not indexed. Use display_hint to provide UI rendering hints.
51
+ schema: nil,
52
+ request_options: {}
53
+ )
54
+ end
55
+
56
+ # Retrieve the status of a data ingestion request and, once complete, a temporary
57
+ # S3 URL for the full result file. This endpoint always uses the URL-based
58
+ # response shape regardless of request size.
59
+ sig do
60
+ params(
61
+ request_id: String,
62
+ namespace: String,
63
+ request_options: SafetyKit::RequestOptions::OrHash
64
+ ).returns(SafetyKit::Models::DataGetDownloadURLResponse)
65
+ end
66
+ def get_download_url(
67
+ # The request ID returned when the ingest request was created
68
+ request_id,
69
+ # The namespace the data was ingested into
70
+ namespace:,
71
+ request_options: {}
72
+ )
73
+ end
74
+
75
+ # Retrieve the status of a data ingestion request and, once complete, return
76
+ # processed objects inline. If the processed output exceeds the 5 MiB inline
77
+ # response limit, this endpoint returns an error instructing you to use the
78
+ # download endpoint instead.
79
+ sig do
80
+ params(
81
+ request_id: String,
82
+ namespace: String,
83
+ request_options: SafetyKit::RequestOptions::OrHash
84
+ ).returns(SafetyKit::Models::DataGetStatusResponse)
85
+ end
86
+ def get_status(
87
+ # The request ID returned when the ingest request was created
88
+ request_id,
89
+ # The namespace the data was ingested into
90
+ namespace:,
91
+ request_options: {}
92
+ )
93
+ end
94
+
95
+ # Create or replace settings for a namespace, primarily used to change the schema
96
+ # associated with the namespace.
97
+ sig do
98
+ params(
99
+ namespace: String,
100
+ schema:
101
+ T::Hash[
102
+ Symbol,
103
+ SafetyKit::DataUpdateSettingsParams::Schema::OrHash
104
+ ],
105
+ request_options: SafetyKit::RequestOptions::OrHash
106
+ ).returns(SafetyKit::Models::DataUpdateSettingsResponse)
107
+ end
108
+ def update_settings(
109
+ # The namespace to ingest data into
110
+ namespace,
111
+ # Schema mapping field names to their definitions. Use content_type to specify
112
+ # which fields contain URLs that should be processed (images, videos, or
113
+ # websites), datetime fields, or 'metadata' for fields that should be stored but
114
+ # not indexed. Use display_hint to provide UI rendering hints.
115
+ schema:,
116
+ request_options: {}
117
+ )
118
+ end
119
+
120
+ # @api private
121
+ sig { params(client: SafetyKit::Client).returns(T.attached_class) }
122
+ def self.new(client:)
123
+ end
124
+ end
125
+ end
126
+ end