safetykit 0.44.0 → 0.46.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 (30) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -0
  3. data/README.md +1 -1
  4. data/lib/safety_kit/client.rb +6 -0
  5. data/lib/safety_kit/models/access_token_create_access_token_params.rb +43 -0
  6. data/lib/safety_kit/models/access_token_create_access_token_response.rb +59 -0
  7. data/lib/safety_kit/models/stream_add_frame_params.rb +4 -4
  8. data/lib/safety_kit/models/stream_add_transcript_params.rb +4 -4
  9. data/lib/safety_kit/models.rb +2 -0
  10. data/lib/safety_kit/resources/access_tokens.rb +48 -0
  11. data/lib/safety_kit/resources/streams.rb +4 -4
  12. data/lib/safety_kit/version.rb +1 -1
  13. data/lib/safety_kit.rb +3 -0
  14. data/rbi/safety_kit/client.rbi +5 -0
  15. data/rbi/safety_kit/models/access_token_create_access_token_params.rbi +75 -0
  16. data/rbi/safety_kit/models/access_token_create_access_token_response.rbi +103 -0
  17. data/rbi/safety_kit/models/stream_add_frame_params.rbi +6 -6
  18. data/rbi/safety_kit/models/stream_add_transcript_params.rbi +6 -6
  19. data/rbi/safety_kit/models.rbi +3 -0
  20. data/rbi/safety_kit/resources/access_tokens.rbi +39 -0
  21. data/rbi/safety_kit/resources/streams.rbi +4 -4
  22. data/sig/safety_kit/client.rbs +2 -0
  23. data/sig/safety_kit/models/access_token_create_access_token_params.rbs +38 -0
  24. data/sig/safety_kit/models/access_token_create_access_token_response.rbs +45 -0
  25. data/sig/safety_kit/models/stream_add_frame_params.rbs +5 -5
  26. data/sig/safety_kit/models/stream_add_transcript_params.rbs +5 -5
  27. data/sig/safety_kit/models.rbs +2 -0
  28. data/sig/safety_kit/resources/access_tokens.rbs +14 -0
  29. data/sig/safety_kit/resources/streams.rbs +2 -2
  30. metadata +11 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 207ad345a64fa1b890d3aaad33043e17859c09ce95bc203ecfb9ddadeb703c8c
4
- data.tar.gz: 57d104b1c3117be45e035aee0308c0f628d08bb5522b3af27e3b83e1c13df233
3
+ metadata.gz: 340c394a384325db1c560c08f7f33ffcebe3c7c0b0b39a9a9cce433e0ea83e0c
4
+ data.tar.gz: aa13a48e8e75de7178ebdf1656cdc88dc08b963b95f6555bf2914bdabba01927
5
5
  SHA512:
6
- metadata.gz: 487285a9bc781d67c5920ce0af7cd9998a11cb9e2cea9b8b6ccd3479b48b1ea38246783355b2956656be1524ce1a756e9187ed167594b1d2ddd0a65a349c392f
7
- data.tar.gz: 072efb531430625cba569586c125f5776ac077e33bae57cc68bab8e69431e4186ef802937ee6eaaa0fb7cda47c3561adcf7f18b45ac3ff9439a0417517976f6b
6
+ metadata.gz: cc2b7c83e15b3420fb0267a4d486f6504a3b28701c14e2a7b834ff4943db102fa7d30657305cd95d4407f45c408ddc8c6a78dd32527ab7c2bedc8d2d1537e9c0
7
+ data.tar.gz: bfc8f39fa22b6357769f611647dd1a96b66dacc94218b771ff3186c357490a516e5ae680f5f56823a23a0804fb0afb38fd9453179645d9207581074cbbfca4de
data/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.46.0 (2026-07-30)
4
+
5
+ Full Changelog: [v0.45.0...v0.46.0](https://github.com/GetSafetyKit/safetykit-ruby/compare/v0.45.0...v0.46.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** api update ([8b9fae0](https://github.com/GetSafetyKit/safetykit-ruby/commit/8b9fae0b71202015e14dfcaa009944d6b42fe10c))
10
+
11
+ ## 0.45.0 (2026-07-28)
12
+
13
+ Full Changelog: [v0.44.0...v0.45.0](https://github.com/GetSafetyKit/safetykit-ruby/compare/v0.44.0...v0.45.0)
14
+
15
+ ### Features
16
+
17
+ * **api:** api update ([8e44e07](https://github.com/GetSafetyKit/safetykit-ruby/commit/8e44e073b72a432bd3b914def5e44a215cf8d610))
18
+
3
19
  ## 0.44.0 (2026-07-28)
4
20
 
5
21
  Full Changelog: [v0.43.0...v0.44.0](https://github.com/GetSafetyKit/safetykit-ruby/compare/v0.43.0...v0.44.0)
data/README.md CHANGED
@@ -17,7 +17,7 @@ To use this gem, install via Bundler by adding the following to your application
17
17
  <!-- x-release-please-start-version -->
18
18
 
19
19
  ```ruby
20
- gem "safetykit", "~> 0.44.0"
20
+ gem "safetykit", "~> 0.46.0"
21
21
  ```
22
22
 
23
23
  <!-- x-release-please-end -->
@@ -32,6 +32,11 @@ module SafetyKit
32
32
  # @return [SafetyKit::Resources::AgentDecisions]
33
33
  attr_reader :agent_decisions
34
34
 
35
+ # Exchange a long-lived API key for a short-lived access token suitable for
36
+ # delegated or time-boxed use.
37
+ # @return [SafetyKit::Resources::AccessTokens]
38
+ attr_reader :access_tokens
39
+
35
40
  # Beta. Send backend events for account, content, user interaction, report,
36
41
  # appeal, and moderation activity.
37
42
  # @return [SafetyKit::Resources::Async]
@@ -121,6 +126,7 @@ module SafetyKit
121
126
  @data = SafetyKit::Resources::Data.new(client: self)
122
127
  @streams = SafetyKit::Resources::Streams.new(client: self)
123
128
  @agent_decisions = SafetyKit::Resources::AgentDecisions.new(client: self)
129
+ @access_tokens = SafetyKit::Resources::AccessTokens.new(client: self)
124
130
  @async = SafetyKit::Resources::Async.new(client: self)
125
131
  @deletion_requests = SafetyKit::Resources::DeletionRequests.new(client: self)
126
132
  @client_sessions = SafetyKit::Resources::ClientSessions.new(client: self)
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SafetyKit
4
+ module Models
5
+ # @see SafetyKit::Resources::AccessTokens#create_access_token
6
+ class AccessTokenCreateAccessTokenParams < SafetyKit::Internal::Type::BaseModel
7
+ extend SafetyKit::Internal::Type::RequestParameters::Converter
8
+ include SafetyKit::Internal::Type::RequestParameters
9
+
10
+ # @!attribute customer_session_id
11
+ # Optional opaque session identifier to associate with the access token.
12
+ #
13
+ # @return [String, nil]
14
+ optional :customer_session_id, String
15
+
16
+ # @!attribute expires_in
17
+ # Lifetime of the access token in seconds. Defaults to 3600 (1 hour). Minimum 300
18
+ # (5 minutes), maximum 43200 (12 hours).
19
+ #
20
+ # @return [Integer, nil]
21
+ optional :expires_in, Integer
22
+
23
+ # @!attribute user_id
24
+ # Optional user identifier to associate with the access token for attribution. Use
25
+ # the same canonical user ID string that you send in other SafetyKit API calls.
26
+ #
27
+ # @return [String, nil]
28
+ optional :user_id, String
29
+
30
+ # @!method initialize(customer_session_id: nil, expires_in: nil, user_id: nil, request_options: {})
31
+ # Some parameter documentations has been truncated, see
32
+ # {SafetyKit::Models::AccessTokenCreateAccessTokenParams} for more details.
33
+ #
34
+ # @param customer_session_id [String] Optional opaque session identifier to associate with the access token.
35
+ #
36
+ # @param expires_in [Integer] Lifetime of the access token in seconds. Defaults to 3600 (1 hour). Minimum 300
37
+ #
38
+ # @param user_id [String] Optional user identifier to associate with the access token for attribution. Use
39
+ #
40
+ # @param request_options [SafetyKit::RequestOptions, Hash{Symbol=>Object}]
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,59 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SafetyKit
4
+ module Models
5
+ # @see SafetyKit::Resources::AccessTokens#create_access_token
6
+ class AccessTokenCreateAccessTokenResponse < SafetyKit::Internal::Type::BaseModel
7
+ # @!attribute access_token
8
+ # Short-lived bearer token. Use it in the Authorization header exactly like a
9
+ # long-lived API key. It cannot be used to create additional access tokens.
10
+ #
11
+ # @return [String]
12
+ required :access_token, String
13
+
14
+ # @!attribute expires_at
15
+ # ISO 8601 timestamp at which the access token expires.
16
+ #
17
+ # @return [Time]
18
+ required :expires_at, Time
19
+
20
+ # @!attribute expires_in
21
+ # Number of seconds until the access token expires.
22
+ #
23
+ # @return [Integer]
24
+ required :expires_in, Integer
25
+
26
+ # @!attribute token_type
27
+ # Token type. Always Bearer.
28
+ #
29
+ # @return [Symbol, SafetyKit::Models::AccessTokenCreateAccessTokenResponse::TokenType]
30
+ required :token_type, enum: -> { SafetyKit::Models::AccessTokenCreateAccessTokenResponse::TokenType }
31
+
32
+ # @!method initialize(access_token:, expires_at:, expires_in:, token_type:)
33
+ # Some parameter documentations has been truncated, see
34
+ # {SafetyKit::Models::AccessTokenCreateAccessTokenResponse} for more details.
35
+ #
36
+ # Response containing the newly created short-lived access token.
37
+ #
38
+ # @param access_token [String] Short-lived bearer token. Use it in the Authorization header exactly like a long
39
+ #
40
+ # @param expires_at [Time] ISO 8601 timestamp at which the access token expires.
41
+ #
42
+ # @param expires_in [Integer] Number of seconds until the access token expires.
43
+ #
44
+ # @param token_type [Symbol, SafetyKit::Models::AccessTokenCreateAccessTokenResponse::TokenType] Token type. Always Bearer.
45
+
46
+ # Token type. Always Bearer.
47
+ #
48
+ # @see SafetyKit::Models::AccessTokenCreateAccessTokenResponse#token_type
49
+ module TokenType
50
+ extend SafetyKit::Internal::Type::Enum
51
+
52
+ BEARER = :Bearer
53
+
54
+ # @!method self.values
55
+ # @return [Array<Symbol>]
56
+ end
57
+ end
58
+ end
59
+ end
@@ -32,12 +32,12 @@ module SafetyKit
32
32
  # @return [Integer]
33
33
  required :timestamp, Integer
34
34
 
35
- # @!attribute artifact_id
35
+ # @!attribute frame_id
36
36
  #
37
37
  # @return [String, nil]
38
- optional :artifact_id, String
38
+ optional :frame_id, String
39
39
 
40
- # @!method initialize(namespace:, image_data_uri:, stream_id:, timestamp:, artifact_id: nil, request_options: {})
40
+ # @!method initialize(namespace:, image_data_uri:, stream_id:, timestamp:, frame_id: nil, request_options: {})
41
41
  # Some parameter documentations has been truncated, see
42
42
  # {SafetyKit::Models::StreamAddFrameParams} for more details.
43
43
  #
@@ -49,7 +49,7 @@ module SafetyKit
49
49
  #
50
50
  # @param timestamp [Integer]
51
51
  #
52
- # @param artifact_id [String]
52
+ # @param frame_id [String]
53
53
  #
54
54
  # @param request_options [SafetyKit::RequestOptions, Hash{Symbol=>Object}]
55
55
  end
@@ -28,12 +28,12 @@ module SafetyKit
28
28
  # @return [Integer]
29
29
  required :timestamp, Integer
30
30
 
31
- # @!attribute artifact_id
31
+ # @!attribute transcript_id
32
32
  #
33
33
  # @return [String, nil]
34
- optional :artifact_id, String
34
+ optional :transcript_id, String
35
35
 
36
- # @!method initialize(namespace:, stream_id:, text:, timestamp:, artifact_id: nil, request_options: {})
36
+ # @!method initialize(namespace:, stream_id:, text:, timestamp:, transcript_id: nil, request_options: {})
37
37
  # @param namespace [String] The namespace to ingest stream data into
38
38
  #
39
39
  # @param stream_id [String]
@@ -42,7 +42,7 @@ module SafetyKit
42
42
  #
43
43
  # @param timestamp [Integer]
44
44
  #
45
- # @param artifact_id [String]
45
+ # @param transcript_id [String]
46
46
  #
47
47
  # @param request_options [SafetyKit::RequestOptions, Hash{Symbol=>Object}]
48
48
  end
@@ -39,6 +39,8 @@ module SafetyKit
39
39
  mod.define_sorbet_constant!(const) { T.type_alias { mod.to_sorbet_type } }
40
40
  end
41
41
 
42
+ AccessTokenCreateAccessTokenParams = SafetyKit::Models::AccessTokenCreateAccessTokenParams
43
+
42
44
  AgentDecisionCreateAgentDecisionParams = SafetyKit::Models::AgentDecisionCreateAgentDecisionParams
43
45
 
44
46
  AsyncCreateAsyncParams = SafetyKit::Models::AsyncCreateAsyncParams
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SafetyKit
4
+ module Resources
5
+ # Exchange a long-lived API key for a short-lived access token suitable for
6
+ # delegated or time-boxed use.
7
+ class AccessTokens
8
+ # Some parameter documentations has been truncated, see
9
+ # {SafetyKit::Models::AccessTokenCreateAccessTokenParams} for more details.
10
+ #
11
+ # Exchange a long-lived API key for a short-lived access token. Authenticate with
12
+ # your long-lived API key as the Bearer token; the response contains a new token
13
+ # that authenticates the same team until it expires. Short-lived access tokens
14
+ # cannot be used to create additional access tokens.
15
+ #
16
+ # @overload create_access_token(customer_session_id: nil, expires_in: nil, user_id: nil, request_options: {})
17
+ #
18
+ # @param customer_session_id [String] Optional opaque session identifier to associate with the access token.
19
+ #
20
+ # @param expires_in [Integer] Lifetime of the access token in seconds. Defaults to 3600 (1 hour). Minimum 300
21
+ #
22
+ # @param user_id [String] Optional user identifier to associate with the access token for attribution. Use
23
+ #
24
+ # @param request_options [SafetyKit::RequestOptions, Hash{Symbol=>Object}, nil]
25
+ #
26
+ # @return [SafetyKit::Models::AccessTokenCreateAccessTokenResponse]
27
+ #
28
+ # @see SafetyKit::Models::AccessTokenCreateAccessTokenParams
29
+ def create_access_token(params = {})
30
+ parsed, options = SafetyKit::AccessTokenCreateAccessTokenParams.dump_request(params)
31
+ @client.request(
32
+ method: :post,
33
+ path: "v1/access_tokens",
34
+ body: parsed,
35
+ model: SafetyKit::Models::AccessTokenCreateAccessTokenResponse,
36
+ options: options
37
+ )
38
+ end
39
+
40
+ # @api private
41
+ #
42
+ # @param client [SafetyKit::Client]
43
+ def initialize(client:)
44
+ @client = client
45
+ end
46
+ end
47
+ end
48
+ end
@@ -43,7 +43,7 @@ module SafetyKit
43
43
  # ignored by downstream processing. This method returns immediately after the
44
44
  # frame has been accepted for processing.
45
45
  #
46
- # @overload add_frame(namespace, image_data_uri:, stream_id:, timestamp:, artifact_id: nil, request_options: {})
46
+ # @overload add_frame(namespace, image_data_uri:, stream_id:, timestamp:, frame_id: nil, request_options: {})
47
47
  #
48
48
  # @param namespace [String] The namespace to ingest stream data into
49
49
  #
@@ -53,7 +53,7 @@ module SafetyKit
53
53
  #
54
54
  # @param timestamp [Integer]
55
55
  #
56
- # @param artifact_id [String]
56
+ # @param frame_id [String]
57
57
  #
58
58
  # @param request_options [SafetyKit::RequestOptions, Hash{Symbol=>Object}, nil]
59
59
  #
@@ -78,7 +78,7 @@ module SafetyKit
78
78
  # correctly with later frames. This method returns immediately after the
79
79
  # transcript has been accepted for processing.
80
80
  #
81
- # @overload add_transcript(namespace, stream_id:, text:, timestamp:, artifact_id: nil, request_options: {})
81
+ # @overload add_transcript(namespace, stream_id:, text:, timestamp:, transcript_id: nil, request_options: {})
82
82
  #
83
83
  # @param namespace [String] The namespace to ingest stream data into
84
84
  #
@@ -88,7 +88,7 @@ module SafetyKit
88
88
  #
89
89
  # @param timestamp [Integer]
90
90
  #
91
- # @param artifact_id [String]
91
+ # @param transcript_id [String]
92
92
  #
93
93
  # @param request_options [SafetyKit::RequestOptions, Hash{Symbol=>Object}, nil]
94
94
  #
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SafetyKit
4
- VERSION = "0.44.0"
4
+ VERSION = "0.46.0"
5
5
  end
data/lib/safety_kit.rb CHANGED
@@ -52,6 +52,8 @@ require_relative "safety_kit/errors"
52
52
  require_relative "safety_kit/internal/transport/base_client"
53
53
  require_relative "safety_kit/internal/transport/pooled_net_requester"
54
54
  require_relative "safety_kit/client"
55
+ require_relative "safety_kit/models/access_token_create_access_token_params"
56
+ require_relative "safety_kit/models/access_token_create_access_token_response"
55
57
  require_relative "safety_kit/models/agent_decision_create_agent_decision_params"
56
58
  require_relative "safety_kit/models/agent_decision_create_agent_decision_response"
57
59
  require_relative "safety_kit/models/async_create_async_params"
@@ -80,6 +82,7 @@ require_relative "safety_kit/models/stream_add_response"
80
82
  require_relative "safety_kit/models/stream_add_transcript_params"
81
83
  require_relative "safety_kit/models/stream_add_transcript_response"
82
84
  require_relative "safety_kit/models"
85
+ require_relative "safety_kit/resources/access_tokens"
83
86
  require_relative "safety_kit/resources/agent_decisions"
84
87
  require_relative "safety_kit/resources/async"
85
88
  require_relative "safety_kit/resources/beta"
@@ -27,6 +27,11 @@ module SafetyKit
27
27
  sig { returns(SafetyKit::Resources::AgentDecisions) }
28
28
  attr_reader :agent_decisions
29
29
 
30
+ # Exchange a long-lived API key for a short-lived access token suitable for
31
+ # delegated or time-boxed use.
32
+ sig { returns(SafetyKit::Resources::AccessTokens) }
33
+ attr_reader :access_tokens
34
+
30
35
  # Beta. Send backend events for account, content, user interaction, report,
31
36
  # appeal, and moderation activity.
32
37
  sig { returns(SafetyKit::Resources::Async) }
@@ -0,0 +1,75 @@
1
+ # typed: strong
2
+
3
+ module SafetyKit
4
+ module Models
5
+ class AccessTokenCreateAccessTokenParams < 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::AccessTokenCreateAccessTokenParams,
13
+ SafetyKit::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # Optional opaque session identifier to associate with the access token.
18
+ sig { returns(T.nilable(String)) }
19
+ attr_reader :customer_session_id
20
+
21
+ sig { params(customer_session_id: String).void }
22
+ attr_writer :customer_session_id
23
+
24
+ # Lifetime of the access token in seconds. Defaults to 3600 (1 hour). Minimum 300
25
+ # (5 minutes), maximum 43200 (12 hours).
26
+ sig { returns(T.nilable(Integer)) }
27
+ attr_reader :expires_in
28
+
29
+ sig { params(expires_in: Integer).void }
30
+ attr_writer :expires_in
31
+
32
+ # Optional user identifier to associate with the access token for attribution. Use
33
+ # the same canonical user ID string that you send in other SafetyKit API calls.
34
+ sig { returns(T.nilable(String)) }
35
+ attr_reader :user_id
36
+
37
+ sig { params(user_id: String).void }
38
+ attr_writer :user_id
39
+
40
+ sig do
41
+ params(
42
+ customer_session_id: String,
43
+ expires_in: Integer,
44
+ user_id: String,
45
+ request_options: SafetyKit::RequestOptions::OrHash
46
+ ).returns(T.attached_class)
47
+ end
48
+ def self.new(
49
+ # Optional opaque session identifier to associate with the access token.
50
+ customer_session_id: nil,
51
+ # Lifetime of the access token in seconds. Defaults to 3600 (1 hour). Minimum 300
52
+ # (5 minutes), maximum 43200 (12 hours).
53
+ expires_in: nil,
54
+ # Optional user identifier to associate with the access token for attribution. Use
55
+ # the same canonical user ID string that you send in other SafetyKit API calls.
56
+ user_id: nil,
57
+ request_options: {}
58
+ )
59
+ end
60
+
61
+ sig do
62
+ override.returns(
63
+ {
64
+ customer_session_id: String,
65
+ expires_in: Integer,
66
+ user_id: String,
67
+ request_options: SafetyKit::RequestOptions
68
+ }
69
+ )
70
+ end
71
+ def to_hash
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,103 @@
1
+ # typed: strong
2
+
3
+ module SafetyKit
4
+ module Models
5
+ class AccessTokenCreateAccessTokenResponse < SafetyKit::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ SafetyKit::Models::AccessTokenCreateAccessTokenResponse,
10
+ SafetyKit::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # Short-lived bearer token. Use it in the Authorization header exactly like a
15
+ # long-lived API key. It cannot be used to create additional access tokens.
16
+ sig { returns(String) }
17
+ attr_accessor :access_token
18
+
19
+ # ISO 8601 timestamp at which the access token expires.
20
+ sig { returns(Time) }
21
+ attr_accessor :expires_at
22
+
23
+ # Number of seconds until the access token expires.
24
+ sig { returns(Integer) }
25
+ attr_accessor :expires_in
26
+
27
+ # Token type. Always Bearer.
28
+ sig do
29
+ returns(
30
+ SafetyKit::Models::AccessTokenCreateAccessTokenResponse::TokenType::TaggedSymbol
31
+ )
32
+ end
33
+ attr_accessor :token_type
34
+
35
+ # Response containing the newly created short-lived access token.
36
+ sig do
37
+ params(
38
+ access_token: String,
39
+ expires_at: Time,
40
+ expires_in: Integer,
41
+ token_type:
42
+ SafetyKit::Models::AccessTokenCreateAccessTokenResponse::TokenType::OrSymbol
43
+ ).returns(T.attached_class)
44
+ end
45
+ def self.new(
46
+ # Short-lived bearer token. Use it in the Authorization header exactly like a
47
+ # long-lived API key. It cannot be used to create additional access tokens.
48
+ access_token:,
49
+ # ISO 8601 timestamp at which the access token expires.
50
+ expires_at:,
51
+ # Number of seconds until the access token expires.
52
+ expires_in:,
53
+ # Token type. Always Bearer.
54
+ token_type:
55
+ )
56
+ end
57
+
58
+ sig do
59
+ override.returns(
60
+ {
61
+ access_token: String,
62
+ expires_at: Time,
63
+ expires_in: Integer,
64
+ token_type:
65
+ SafetyKit::Models::AccessTokenCreateAccessTokenResponse::TokenType::TaggedSymbol
66
+ }
67
+ )
68
+ end
69
+ def to_hash
70
+ end
71
+
72
+ # Token type. Always Bearer.
73
+ module TokenType
74
+ extend SafetyKit::Internal::Type::Enum
75
+
76
+ TaggedSymbol =
77
+ T.type_alias do
78
+ T.all(
79
+ Symbol,
80
+ SafetyKit::Models::AccessTokenCreateAccessTokenResponse::TokenType
81
+ )
82
+ end
83
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
84
+
85
+ BEARER =
86
+ T.let(
87
+ :Bearer,
88
+ SafetyKit::Models::AccessTokenCreateAccessTokenResponse::TokenType::TaggedSymbol
89
+ )
90
+
91
+ sig do
92
+ override.returns(
93
+ T::Array[
94
+ SafetyKit::Models::AccessTokenCreateAccessTokenResponse::TokenType::TaggedSymbol
95
+ ]
96
+ )
97
+ end
98
+ def self.values
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
@@ -29,10 +29,10 @@ module SafetyKit
29
29
  attr_accessor :timestamp
30
30
 
31
31
  sig { returns(T.nilable(String)) }
32
- attr_reader :artifact_id
32
+ attr_reader :frame_id
33
33
 
34
- sig { params(artifact_id: String).void }
35
- attr_writer :artifact_id
34
+ sig { params(frame_id: String).void }
35
+ attr_writer :frame_id
36
36
 
37
37
  sig do
38
38
  params(
@@ -40,7 +40,7 @@ module SafetyKit
40
40
  image_data_uri: String,
41
41
  stream_id: String,
42
42
  timestamp: Integer,
43
- artifact_id: String,
43
+ frame_id: String,
44
44
  request_options: SafetyKit::RequestOptions::OrHash
45
45
  ).returns(T.attached_class)
46
46
  end
@@ -54,7 +54,7 @@ module SafetyKit
54
54
  image_data_uri:,
55
55
  stream_id:,
56
56
  timestamp:,
57
- artifact_id: nil,
57
+ frame_id: nil,
58
58
  request_options: {}
59
59
  )
60
60
  end
@@ -66,7 +66,7 @@ module SafetyKit
66
66
  image_data_uri: String,
67
67
  stream_id: String,
68
68
  timestamp: Integer,
69
- artifact_id: String,
69
+ frame_id: String,
70
70
  request_options: SafetyKit::RequestOptions
71
71
  }
72
72
  )
@@ -28,10 +28,10 @@ module SafetyKit
28
28
  attr_accessor :timestamp
29
29
 
30
30
  sig { returns(T.nilable(String)) }
31
- attr_reader :artifact_id
31
+ attr_reader :transcript_id
32
32
 
33
- sig { params(artifact_id: String).void }
34
- attr_writer :artifact_id
33
+ sig { params(transcript_id: String).void }
34
+ attr_writer :transcript_id
35
35
 
36
36
  sig do
37
37
  params(
@@ -39,7 +39,7 @@ module SafetyKit
39
39
  stream_id: String,
40
40
  text: String,
41
41
  timestamp: Integer,
42
- artifact_id: String,
42
+ transcript_id: String,
43
43
  request_options: SafetyKit::RequestOptions::OrHash
44
44
  ).returns(T.attached_class)
45
45
  end
@@ -49,7 +49,7 @@ module SafetyKit
49
49
  stream_id:,
50
50
  text:,
51
51
  timestamp:,
52
- artifact_id: nil,
52
+ transcript_id: nil,
53
53
  request_options: {}
54
54
  )
55
55
  end
@@ -61,7 +61,7 @@ module SafetyKit
61
61
  stream_id: String,
62
62
  text: String,
63
63
  timestamp: Integer,
64
- artifact_id: String,
64
+ transcript_id: String,
65
65
  request_options: SafetyKit::RequestOptions
66
66
  }
67
67
  )
@@ -1,6 +1,9 @@
1
1
  # typed: strong
2
2
 
3
3
  module SafetyKit
4
+ AccessTokenCreateAccessTokenParams =
5
+ SafetyKit::Models::AccessTokenCreateAccessTokenParams
6
+
4
7
  AgentDecisionCreateAgentDecisionParams =
5
8
  SafetyKit::Models::AgentDecisionCreateAgentDecisionParams
6
9
 
@@ -0,0 +1,39 @@
1
+ # typed: strong
2
+
3
+ module SafetyKit
4
+ module Resources
5
+ # Exchange a long-lived API key for a short-lived access token suitable for
6
+ # delegated or time-boxed use.
7
+ class AccessTokens
8
+ # Exchange a long-lived API key for a short-lived access token. Authenticate with
9
+ # your long-lived API key as the Bearer token; the response contains a new token
10
+ # that authenticates the same team until it expires. Short-lived access tokens
11
+ # cannot be used to create additional access tokens.
12
+ sig do
13
+ params(
14
+ customer_session_id: String,
15
+ expires_in: Integer,
16
+ user_id: String,
17
+ request_options: SafetyKit::RequestOptions::OrHash
18
+ ).returns(SafetyKit::Models::AccessTokenCreateAccessTokenResponse)
19
+ end
20
+ def create_access_token(
21
+ # Optional opaque session identifier to associate with the access token.
22
+ customer_session_id: nil,
23
+ # Lifetime of the access token in seconds. Defaults to 3600 (1 hour). Minimum 300
24
+ # (5 minutes), maximum 43200 (12 hours).
25
+ expires_in: nil,
26
+ # Optional user identifier to associate with the access token for attribution. Use
27
+ # the same canonical user ID string that you send in other SafetyKit API calls.
28
+ user_id: nil,
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
@@ -37,7 +37,7 @@ module SafetyKit
37
37
  image_data_uri: String,
38
38
  stream_id: String,
39
39
  timestamp: Integer,
40
- artifact_id: String,
40
+ frame_id: String,
41
41
  request_options: SafetyKit::RequestOptions::OrHash
42
42
  ).returns(SafetyKit::Models::StreamAddFrameResponse)
43
43
  end
@@ -51,7 +51,7 @@ module SafetyKit
51
51
  image_data_uri:,
52
52
  stream_id:,
53
53
  timestamp:,
54
- artifact_id: nil,
54
+ frame_id: nil,
55
55
  request_options: {}
56
56
  )
57
57
  end
@@ -68,7 +68,7 @@ module SafetyKit
68
68
  stream_id: String,
69
69
  text: String,
70
70
  timestamp: Integer,
71
- artifact_id: String,
71
+ transcript_id: String,
72
72
  request_options: SafetyKit::RequestOptions::OrHash
73
73
  ).returns(SafetyKit::Models::StreamAddTranscriptResponse)
74
74
  end
@@ -78,7 +78,7 @@ module SafetyKit
78
78
  stream_id:,
79
79
  text:,
80
80
  timestamp:,
81
- artifact_id: nil,
81
+ transcript_id: nil,
82
82
  request_options: {}
83
83
  )
84
84
  end
@@ -16,6 +16,8 @@ module SafetyKit
16
16
 
17
17
  attr_reader agent_decisions: SafetyKit::Resources::AgentDecisions
18
18
 
19
+ attr_reader access_tokens: SafetyKit::Resources::AccessTokens
20
+
19
21
  attr_reader async: SafetyKit::Resources::Async
20
22
 
21
23
  attr_reader deletion_requests: SafetyKit::Resources::DeletionRequests
@@ -0,0 +1,38 @@
1
+ module SafetyKit
2
+ module Models
3
+ type access_token_create_access_token_params =
4
+ { customer_session_id: String, expires_in: Integer, user_id: String }
5
+ & SafetyKit::Internal::Type::request_parameters
6
+
7
+ class AccessTokenCreateAccessTokenParams < SafetyKit::Internal::Type::BaseModel
8
+ extend SafetyKit::Internal::Type::RequestParameters::Converter
9
+ include SafetyKit::Internal::Type::RequestParameters
10
+
11
+ attr_reader customer_session_id: String?
12
+
13
+ def customer_session_id=: (String) -> String
14
+
15
+ attr_reader expires_in: Integer?
16
+
17
+ def expires_in=: (Integer) -> Integer
18
+
19
+ attr_reader user_id: String?
20
+
21
+ def user_id=: (String) -> String
22
+
23
+ def initialize: (
24
+ ?customer_session_id: String,
25
+ ?expires_in: Integer,
26
+ ?user_id: String,
27
+ ?request_options: SafetyKit::request_opts
28
+ ) -> void
29
+
30
+ def to_hash: -> {
31
+ customer_session_id: String,
32
+ expires_in: Integer,
33
+ user_id: String,
34
+ request_options: SafetyKit::RequestOptions
35
+ }
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,45 @@
1
+ module SafetyKit
2
+ module Models
3
+ type access_token_create_access_token_response =
4
+ {
5
+ access_token: String,
6
+ expires_at: Time,
7
+ expires_in: Integer,
8
+ token_type: SafetyKit::Models::AccessTokenCreateAccessTokenResponse::token_type
9
+ }
10
+
11
+ class AccessTokenCreateAccessTokenResponse < SafetyKit::Internal::Type::BaseModel
12
+ attr_accessor access_token: String
13
+
14
+ attr_accessor expires_at: Time
15
+
16
+ attr_accessor expires_in: Integer
17
+
18
+ attr_accessor token_type: SafetyKit::Models::AccessTokenCreateAccessTokenResponse::token_type
19
+
20
+ def initialize: (
21
+ access_token: String,
22
+ expires_at: Time,
23
+ expires_in: Integer,
24
+ token_type: SafetyKit::Models::AccessTokenCreateAccessTokenResponse::token_type
25
+ ) -> void
26
+
27
+ def to_hash: -> {
28
+ access_token: String,
29
+ expires_at: Time,
30
+ expires_in: Integer,
31
+ token_type: SafetyKit::Models::AccessTokenCreateAccessTokenResponse::token_type
32
+ }
33
+
34
+ type token_type = :Bearer
35
+
36
+ module TokenType
37
+ extend SafetyKit::Internal::Type::Enum
38
+
39
+ BEARER: :Bearer
40
+
41
+ def self?.values: -> ::Array[SafetyKit::Models::AccessTokenCreateAccessTokenResponse::token_type]
42
+ end
43
+ end
44
+ end
45
+ end
@@ -6,7 +6,7 @@ module SafetyKit
6
6
  image_data_uri: String,
7
7
  stream_id: String,
8
8
  timestamp: Integer,
9
- artifact_id: String
9
+ frame_id: String
10
10
  }
11
11
  & SafetyKit::Internal::Type::request_parameters
12
12
 
@@ -22,16 +22,16 @@ module SafetyKit
22
22
 
23
23
  attr_accessor timestamp: Integer
24
24
 
25
- attr_reader artifact_id: String?
25
+ attr_reader frame_id: String?
26
26
 
27
- def artifact_id=: (String) -> String
27
+ def frame_id=: (String) -> String
28
28
 
29
29
  def initialize: (
30
30
  namespace: String,
31
31
  image_data_uri: String,
32
32
  stream_id: String,
33
33
  timestamp: Integer,
34
- ?artifact_id: String,
34
+ ?frame_id: String,
35
35
  ?request_options: SafetyKit::request_opts
36
36
  ) -> void
37
37
 
@@ -40,7 +40,7 @@ module SafetyKit
40
40
  image_data_uri: String,
41
41
  stream_id: String,
42
42
  timestamp: Integer,
43
- artifact_id: String,
43
+ frame_id: String,
44
44
  request_options: SafetyKit::RequestOptions
45
45
  }
46
46
  end
@@ -6,7 +6,7 @@ module SafetyKit
6
6
  stream_id: String,
7
7
  text: String,
8
8
  timestamp: Integer,
9
- artifact_id: String
9
+ transcript_id: String
10
10
  }
11
11
  & SafetyKit::Internal::Type::request_parameters
12
12
 
@@ -22,16 +22,16 @@ module SafetyKit
22
22
 
23
23
  attr_accessor timestamp: Integer
24
24
 
25
- attr_reader artifact_id: String?
25
+ attr_reader transcript_id: String?
26
26
 
27
- def artifact_id=: (String) -> String
27
+ def transcript_id=: (String) -> String
28
28
 
29
29
  def initialize: (
30
30
  namespace: String,
31
31
  stream_id: String,
32
32
  text: String,
33
33
  timestamp: Integer,
34
- ?artifact_id: String,
34
+ ?transcript_id: String,
35
35
  ?request_options: SafetyKit::request_opts
36
36
  ) -> void
37
37
 
@@ -40,7 +40,7 @@ module SafetyKit
40
40
  stream_id: String,
41
41
  text: String,
42
42
  timestamp: Integer,
43
- artifact_id: String,
43
+ transcript_id: String,
44
44
  request_options: SafetyKit::RequestOptions
45
45
  }
46
46
  end
@@ -1,4 +1,6 @@
1
1
  module SafetyKit
2
+ class AccessTokenCreateAccessTokenParams = SafetyKit::Models::AccessTokenCreateAccessTokenParams
3
+
2
4
  class AgentDecisionCreateAgentDecisionParams = SafetyKit::Models::AgentDecisionCreateAgentDecisionParams
3
5
 
4
6
  class AsyncCreateAsyncParams = SafetyKit::Models::AsyncCreateAsyncParams
@@ -0,0 +1,14 @@
1
+ module SafetyKit
2
+ module Resources
3
+ class AccessTokens
4
+ def create_access_token: (
5
+ ?customer_session_id: String,
6
+ ?expires_in: Integer,
7
+ ?user_id: String,
8
+ ?request_options: SafetyKit::request_opts
9
+ ) -> SafetyKit::Models::AccessTokenCreateAccessTokenResponse
10
+
11
+ def initialize: (client: SafetyKit::Client) -> void
12
+ end
13
+ end
14
+ end
@@ -13,7 +13,7 @@ module SafetyKit
13
13
  image_data_uri: String,
14
14
  stream_id: String,
15
15
  timestamp: Integer,
16
- ?artifact_id: String,
16
+ ?frame_id: String,
17
17
  ?request_options: SafetyKit::request_opts
18
18
  ) -> SafetyKit::Models::StreamAddFrameResponse
19
19
 
@@ -22,7 +22,7 @@ module SafetyKit
22
22
  stream_id: String,
23
23
  text: String,
24
24
  timestamp: Integer,
25
- ?artifact_id: String,
25
+ ?transcript_id: String,
26
26
  ?request_options: SafetyKit::request_opts
27
27
  ) -> SafetyKit::Models::StreamAddTranscriptResponse
28
28
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: safetykit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.44.0
4
+ version: 0.46.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Safetykit
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-07-28 00:00:00.000000000 Z
11
+ date: 2026-07-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cgi
@@ -69,6 +69,8 @@ files:
69
69
  - lib/safety_kit/internal/type/unknown.rb
70
70
  - lib/safety_kit/internal/util.rb
71
71
  - lib/safety_kit/models.rb
72
+ - lib/safety_kit/models/access_token_create_access_token_params.rb
73
+ - lib/safety_kit/models/access_token_create_access_token_response.rb
72
74
  - lib/safety_kit/models/agent_decision_create_agent_decision_params.rb
73
75
  - lib/safety_kit/models/agent_decision_create_agent_decision_response.rb
74
76
  - lib/safety_kit/models/async_create_async_params.rb
@@ -97,6 +99,7 @@ files:
97
99
  - lib/safety_kit/models/stream_add_transcript_params.rb
98
100
  - lib/safety_kit/models/stream_add_transcript_response.rb
99
101
  - lib/safety_kit/request_options.rb
102
+ - lib/safety_kit/resources/access_tokens.rb
100
103
  - lib/safety_kit/resources/agent_decisions.rb
101
104
  - lib/safety_kit/resources/async.rb
102
105
  - lib/safety_kit/resources/beta.rb
@@ -126,6 +129,8 @@ files:
126
129
  - rbi/safety_kit/internal/type/unknown.rbi
127
130
  - rbi/safety_kit/internal/util.rbi
128
131
  - rbi/safety_kit/models.rbi
132
+ - rbi/safety_kit/models/access_token_create_access_token_params.rbi
133
+ - rbi/safety_kit/models/access_token_create_access_token_response.rbi
129
134
  - rbi/safety_kit/models/agent_decision_create_agent_decision_params.rbi
130
135
  - rbi/safety_kit/models/agent_decision_create_agent_decision_response.rbi
131
136
  - rbi/safety_kit/models/async_create_async_params.rbi
@@ -154,6 +159,7 @@ files:
154
159
  - rbi/safety_kit/models/stream_add_transcript_params.rbi
155
160
  - rbi/safety_kit/models/stream_add_transcript_response.rbi
156
161
  - rbi/safety_kit/request_options.rbi
162
+ - rbi/safety_kit/resources/access_tokens.rbi
157
163
  - rbi/safety_kit/resources/agent_decisions.rbi
158
164
  - rbi/safety_kit/resources/async.rbi
159
165
  - rbi/safety_kit/resources/beta.rbi
@@ -182,6 +188,8 @@ files:
182
188
  - sig/safety_kit/internal/type/unknown.rbs
183
189
  - sig/safety_kit/internal/util.rbs
184
190
  - sig/safety_kit/models.rbs
191
+ - sig/safety_kit/models/access_token_create_access_token_params.rbs
192
+ - sig/safety_kit/models/access_token_create_access_token_response.rbs
185
193
  - sig/safety_kit/models/agent_decision_create_agent_decision_params.rbs
186
194
  - sig/safety_kit/models/agent_decision_create_agent_decision_response.rbs
187
195
  - sig/safety_kit/models/async_create_async_params.rbs
@@ -210,6 +218,7 @@ files:
210
218
  - sig/safety_kit/models/stream_add_transcript_params.rbs
211
219
  - sig/safety_kit/models/stream_add_transcript_response.rbs
212
220
  - sig/safety_kit/request_options.rbs
221
+ - sig/safety_kit/resources/access_tokens.rbs
213
222
  - sig/safety_kit/resources/agent_decisions.rbs
214
223
  - sig/safety_kit/resources/async.rbs
215
224
  - sig/safety_kit/resources/beta.rbs