openai 0.90.0 → 0.92.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 (143) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +31 -0
  3. data/README.md +1 -1
  4. data/examples/realtime/README.md +8 -0
  5. data/examples/realtime/browser/README.md +167 -0
  6. data/examples/realtime/browser/index.html +19 -0
  7. data/examples/realtime/browser/page.js +21 -0
  8. data/examples/realtime/browser/peer.js +180 -0
  9. data/examples/realtime/browser/server.rb +281 -0
  10. data/examples/responses/websocket_workflows.rb +66 -6
  11. data/lib/openai/auth/workload_identity.rb +5 -1
  12. data/lib/openai/auth/workload_identity_auth.rb +2 -2
  13. data/lib/openai/auth/x509_token_exchange.rb +1 -1
  14. data/lib/openai/helpers/local_audio/process.rb +1 -1
  15. data/lib/openai/helpers/responses_websocket/connection.rb +2 -1
  16. data/lib/openai/helpers/responses_websocket/session.rb +551 -0
  17. data/lib/openai/helpers/responses_websocket.rb +1 -0
  18. data/lib/openai/helpers/sorbet.rb +1 -1
  19. data/lib/openai/helpers/websocket/async_websocket_transport.rb +6 -1
  20. data/lib/openai/internal/poller.rb +2 -2
  21. data/lib/openai/internal/transport/base_client.rb +1 -1
  22. data/lib/openai/internal/util.rb +1 -1
  23. data/lib/openai/models/beta/agents/session_update_params.rb +108 -1
  24. data/lib/openai/models/beta/beta_response.rb +9 -3
  25. data/lib/openai/models/beta/beta_response_compaction_compacting_event.rb +75 -0
  26. data/lib/openai/models/beta/beta_response_stream_event.rb +4 -1
  27. data/lib/openai/models/beta/beta_responses_client_event.rb +25 -4
  28. data/lib/openai/models/beta/beta_responses_server_event.rb +39 -1
  29. data/lib/openai/models/beta/beta_tool.rb +16 -0
  30. data/lib/openai/models/beta/response_compact_params.rb +9 -3
  31. data/lib/openai/models/beta/response_create_params.rb +21 -4
  32. data/lib/openai/models/beta/session_turn_error.rb +3 -0
  33. data/lib/openai/models/chat_model.rb +3 -1
  34. data/lib/openai/models/realtime/realtime_response_create_mcp_tool.rb +16 -0
  35. data/lib/openai/models/realtime/realtime_session_create_response.rb +16 -0
  36. data/lib/openai/models/realtime/realtime_tools_config_union.rb +16 -0
  37. data/lib/openai/models/responses/response_compact_params.rb +9 -3
  38. data/lib/openai/models/responses/response_compaction_compacting_event.rb +49 -0
  39. data/lib/openai/models/responses/response_create_params.rb +12 -1
  40. data/lib/openai/models/responses/response_stream_event.rb +4 -1
  41. data/lib/openai/models/responses/responses_client_event.rb +12 -1
  42. data/lib/openai/models/responses/responses_server_event.rb +36 -1
  43. data/lib/openai/models/responses/tool.rb +16 -0
  44. data/lib/openai/models/webhooks/deleted_webhook_endpoint.rb +38 -0
  45. data/lib/openai/models/webhooks/event_type_list_params.rb +16 -0
  46. data/lib/openai/models/webhooks/realtime_call_incoming_webhook_event.rb +6 -8
  47. data/lib/openai/models/webhooks/webhook_create_params.rb +73 -0
  48. data/lib/openai/models/webhooks/webhook_delete_params.rb +22 -0
  49. data/lib/openai/models/webhooks/webhook_endpoint.rb +85 -0
  50. data/lib/openai/models/webhooks/webhook_endpoint_list.rb +55 -0
  51. data/lib/openai/models/webhooks/webhook_endpoint_test_result.rb +58 -0
  52. data/lib/openai/models/webhooks/webhook_endpoint_with_secret.rb +105 -0
  53. data/lib/openai/models/webhooks/webhook_event_type_list.rb +28 -0
  54. data/lib/openai/models/webhooks/webhook_list_params.rb +34 -0
  55. data/lib/openai/models/webhooks/webhook_retrieve_params.rb +22 -0
  56. data/lib/openai/models/webhooks/webhook_rotate_secret_params.rb +34 -0
  57. data/lib/openai/models/webhooks/webhook_test_params.rb +59 -0
  58. data/lib/openai/models/webhooks/webhook_update_params.rb +80 -0
  59. data/lib/openai/resources/beta/agents/sessions.rb +6 -2
  60. data/lib/openai/resources/beta/responses.rb +2 -2
  61. data/lib/openai/resources/responses.rb +2 -2
  62. data/lib/openai/resources/webhooks/event_types.rb +35 -0
  63. data/lib/openai/resources/webhooks.rb +195 -0
  64. data/lib/openai/version.rb +1 -1
  65. data/lib/openai.rb +17 -0
  66. data/rbi/openai/helpers/responses_websocket/connection.rbi +5 -0
  67. data/rbi/openai/helpers/responses_websocket/session.rbi +206 -0
  68. data/rbi/openai/models/beta/agents/session_update_params.rbi +178 -0
  69. data/rbi/openai/models/beta/beta_response.rbi +6 -1
  70. data/rbi/openai/models/beta/beta_response_compaction_compacting_event.rbi +136 -0
  71. data/rbi/openai/models/beta/beta_response_stream_event.rbi +1 -0
  72. data/rbi/openai/models/beta/beta_responses_client_event.rbi +27 -4
  73. data/rbi/openai/models/beta/beta_responses_server_event.rbi +77 -0
  74. data/rbi/openai/models/beta/beta_tool.rbi +12 -0
  75. data/rbi/openai/models/beta/response_compact_params.rbi +6 -1
  76. data/rbi/openai/models/beta/response_create_params.rbi +21 -1
  77. data/rbi/openai/models/beta/session_turn_error.rbi +6 -0
  78. data/rbi/openai/models/chat_model.rbi +3 -1
  79. data/rbi/openai/models/realtime/realtime_response_create_mcp_tool.rbi +12 -0
  80. data/rbi/openai/models/realtime/realtime_session_create_response.rbi +12 -0
  81. data/rbi/openai/models/realtime/realtime_tools_config_union.rbi +12 -0
  82. data/rbi/openai/models/responses/response_compact_params.rbi +6 -1
  83. data/rbi/openai/models/responses/response_compaction_compacting_event.rbi +78 -0
  84. data/rbi/openai/models/responses/response_create_params.rbi +15 -0
  85. data/rbi/openai/models/responses/response_stream_event.rbi +1 -0
  86. data/rbi/openai/models/responses/responses_client_event.rbi +15 -0
  87. data/rbi/openai/models/responses/responses_server_event.rbi +71 -0
  88. data/rbi/openai/models/responses/tool.rbi +12 -0
  89. data/rbi/openai/models/webhooks/deleted_webhook_endpoint.rbi +67 -0
  90. data/rbi/openai/models/webhooks/event_type_list_params.rbi +37 -0
  91. data/rbi/openai/models/webhooks/realtime_call_incoming_webhook_event.rbi +6 -8
  92. data/rbi/openai/models/webhooks/webhook_create_params.rbi +139 -0
  93. data/rbi/openai/models/webhooks/webhook_delete_params.rbi +53 -0
  94. data/rbi/openai/models/webhooks/webhook_endpoint.rbi +126 -0
  95. data/rbi/openai/models/webhooks/webhook_endpoint_list.rbi +91 -0
  96. data/rbi/openai/models/webhooks/webhook_endpoint_test_result.rbi +87 -0
  97. data/rbi/openai/models/webhooks/webhook_endpoint_with_secret.rbi +138 -0
  98. data/rbi/openai/models/webhooks/webhook_event_type_list.rbi +58 -0
  99. data/rbi/openai/models/webhooks/webhook_list_params.rbi +67 -0
  100. data/rbi/openai/models/webhooks/webhook_retrieve_params.rbi +53 -0
  101. data/rbi/openai/models/webhooks/webhook_rotate_secret_params.rbi +71 -0
  102. data/rbi/openai/models/webhooks/webhook_test_params.rbi +124 -0
  103. data/rbi/openai/models/webhooks/webhook_update_params.rbi +156 -0
  104. data/rbi/openai/resources/beta/agents/sessions.rbi +5 -1
  105. data/rbi/openai/resources/webhooks/event_types.rbi +24 -0
  106. data/rbi/openai/resources/webhooks.rbi +126 -0
  107. data/responses-websocket.md +117 -10
  108. data/sig/openai/helpers/responses_websocket/connection.rbs +5 -0
  109. data/sig/openai/helpers/responses_websocket/session.rbs +123 -0
  110. data/sig/openai/models/beta/agents/session_update_params.rbs +99 -0
  111. data/sig/openai/models/beta/beta_response.rbs +6 -2
  112. data/sig/openai/models/beta/beta_response_compaction_compacting_event.rbs +58 -0
  113. data/sig/openai/models/beta/beta_response_stream_event.rbs +1 -0
  114. data/sig/openai/models/beta/beta_responses_client_event.rbs +13 -2
  115. data/sig/openai/models/beta/beta_responses_server_event.rbs +35 -0
  116. data/sig/openai/models/beta/response_compact_params.rbs +6 -2
  117. data/sig/openai/models/beta/response_create_params.rbs +13 -2
  118. data/sig/openai/models/beta/session_turn_error.rbs +4 -0
  119. data/sig/openai/models/chat_model.rbs +6 -2
  120. data/sig/openai/models/responses/response_compact_params.rbs +6 -2
  121. data/sig/openai/models/responses/response_compaction_compacting_event.rbs +37 -0
  122. data/sig/openai/models/responses/response_create_params.rbs +7 -0
  123. data/sig/openai/models/responses/response_stream_event.rbs +1 -0
  124. data/sig/openai/models/responses/responses_client_event.rbs +7 -0
  125. data/sig/openai/models/responses/responses_server_event.rbs +32 -0
  126. data/sig/openai/models/webhooks/deleted_webhook_endpoint.rbs +28 -0
  127. data/sig/openai/models/webhooks/event_type_list_params.rbs +16 -0
  128. data/sig/openai/models/webhooks/webhook_create_params.rbs +83 -0
  129. data/sig/openai/models/webhooks/webhook_delete_params.rbs +25 -0
  130. data/sig/openai/models/webhooks/webhook_endpoint.rbs +59 -0
  131. data/sig/openai/models/webhooks/webhook_endpoint_list.rbs +42 -0
  132. data/sig/openai/models/webhooks/webhook_endpoint_test_result.rbs +42 -0
  133. data/sig/openai/models/webhooks/webhook_endpoint_with_secret.rbs +64 -0
  134. data/sig/openai/models/webhooks/webhook_event_type_list.rbs +17 -0
  135. data/sig/openai/models/webhooks/webhook_list_params.rbs +35 -0
  136. data/sig/openai/models/webhooks/webhook_retrieve_params.rbs +25 -0
  137. data/sig/openai/models/webhooks/webhook_rotate_secret_params.rbs +35 -0
  138. data/sig/openai/models/webhooks/webhook_test_params.rbs +78 -0
  139. data/sig/openai/models/webhooks/webhook_update_params.rbs +96 -0
  140. data/sig/openai/resources/beta/agents/sessions.rbs +1 -0
  141. data/sig/openai/resources/webhooks/event_types.rbs +13 -0
  142. data/sig/openai/resources/webhooks.rbs +45 -0
  143. metadata +61 -2
@@ -0,0 +1,67 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Webhooks
7
+
8
+ class WebhookListParams < OpenAI::Internal::Type::BaseModel
9
+
10
+ extend OpenAI::Internal::Type::RequestParameters::Converter
11
+ include OpenAI::Internal::Type::RequestParameters
12
+
13
+ OrHash = T.type_alias do
14
+ T.any(
15
+ OpenAI::Webhooks::WebhookListParams,
16
+ OpenAI::Internal::AnyHash
17
+ )
18
+ end
19
+
20
+ # ID of the last webhook endpoint from the previous page.
21
+ sig { returns(T.nilable(String)) }
22
+ attr_accessor :after
23
+
24
+ # Maximum number of webhook endpoints to return. Defaults to 20.
25
+ sig { returns(T.nilable(Integer)) }
26
+ attr_reader :limit
27
+
28
+ sig { params(limit: Integer).void }
29
+ attr_writer :limit
30
+
31
+ sig do
32
+ params(
33
+
34
+ after: T.nilable(String),
35
+
36
+ limit: Integer,
37
+
38
+ request_options: OpenAI::RequestOptions::OrHash
39
+ )
40
+ .returns(T.attached_class)
41
+ end
42
+ def self.new(
43
+
44
+ # ID of the last webhook endpoint from the previous page.
45
+ after: nil,
46
+
47
+ # Maximum number of webhook endpoints to return. Defaults to 20.
48
+ limit: nil,
49
+
50
+ request_options: {}
51
+ )
52
+ end
53
+
54
+ sig do
55
+ override.returns(
56
+ {after: T.nilable(String), limit: Integer, request_options: OpenAI::RequestOptions}
57
+ )
58
+ end
59
+ def to_hash
60
+ end
61
+
62
+ end
63
+
64
+ end
65
+
66
+ end
67
+ end
@@ -0,0 +1,53 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Webhooks
7
+
8
+ class WebhookRetrieveParams < OpenAI::Internal::Type::BaseModel
9
+
10
+ extend OpenAI::Internal::Type::RequestParameters::Converter
11
+ include OpenAI::Internal::Type::RequestParameters
12
+
13
+ OrHash = T.type_alias do
14
+ T.any(
15
+ OpenAI::Webhooks::WebhookRetrieveParams,
16
+ OpenAI::Internal::AnyHash
17
+ )
18
+ end
19
+
20
+ sig { returns(String) }
21
+ attr_accessor :webhook_endpoint_id
22
+
23
+ sig do
24
+ params(
25
+
26
+ webhook_endpoint_id: String,
27
+
28
+ request_options: OpenAI::RequestOptions::OrHash
29
+ )
30
+ .returns(T.attached_class)
31
+ end
32
+ def self.new(
33
+
34
+ webhook_endpoint_id:,
35
+
36
+ request_options: {}
37
+ )
38
+ end
39
+
40
+ sig do
41
+ override.returns(
42
+ {webhook_endpoint_id: String, request_options: OpenAI::RequestOptions}
43
+ )
44
+ end
45
+ def to_hash
46
+ end
47
+
48
+ end
49
+
50
+ end
51
+
52
+ end
53
+ end
@@ -0,0 +1,71 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Webhooks
7
+
8
+ class WebhookRotateSecretParams < OpenAI::Internal::Type::BaseModel
9
+
10
+ extend OpenAI::Internal::Type::RequestParameters::Converter
11
+ include OpenAI::Internal::Type::RequestParameters
12
+
13
+ OrHash = T.type_alias do
14
+ T.any(
15
+ OpenAI::Webhooks::WebhookRotateSecretParams,
16
+ OpenAI::Internal::AnyHash
17
+ )
18
+ end
19
+
20
+ sig { returns(String) }
21
+ attr_accessor :webhook_endpoint_id
22
+
23
+ # Whether to keep the previous signing secret valid for 24 hours after rotation.
24
+ # Defaults to false, which invalidates the previous secret immediately.
25
+ sig { returns(T.nilable(T::Boolean)) }
26
+ attr_reader :keep_old_secret_active_for_24_hours
27
+
28
+ sig { params(keep_old_secret_active_for_24_hours: T::Boolean).void }
29
+ attr_writer :keep_old_secret_active_for_24_hours
30
+
31
+ sig do
32
+ params(
33
+
34
+ webhook_endpoint_id: String,
35
+
36
+ keep_old_secret_active_for_24_hours: T::Boolean,
37
+
38
+ request_options: OpenAI::RequestOptions::OrHash
39
+ )
40
+ .returns(T.attached_class)
41
+ end
42
+ def self.new(
43
+
44
+ webhook_endpoint_id:,
45
+
46
+ # Whether to keep the previous signing secret valid for 24 hours after rotation.
47
+ # Defaults to false, which invalidates the previous secret immediately.
48
+ keep_old_secret_active_for_24_hours: nil,
49
+
50
+ request_options: {}
51
+ )
52
+ end
53
+
54
+ sig do
55
+ override.returns(
56
+ {
57
+ webhook_endpoint_id: String,
58
+ keep_old_secret_active_for_24_hours: T::Boolean,
59
+ request_options: OpenAI::RequestOptions
60
+ }
61
+ )
62
+ end
63
+ def to_hash
64
+ end
65
+
66
+ end
67
+
68
+ end
69
+
70
+ end
71
+ end
@@ -0,0 +1,124 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Webhooks
7
+
8
+ class WebhookTestParams < OpenAI::Internal::Type::BaseModel
9
+
10
+ extend OpenAI::Internal::Type::RequestParameters::Converter
11
+ include OpenAI::Internal::Type::RequestParameters
12
+
13
+ OrHash = T.type_alias do
14
+ T.any(
15
+ OpenAI::Webhooks::WebhookTestParams,
16
+ OpenAI::Internal::AnyHash
17
+ )
18
+ end
19
+
20
+ sig { returns(String) }
21
+ attr_accessor :webhook_endpoint_id
22
+
23
+ # The event type to send as a sample delivery.
24
+ sig { returns(OpenAI::Webhooks::WebhookTestParams::EventType::OrSymbol) }
25
+ attr_accessor :event_type
26
+
27
+ sig do
28
+ params(
29
+
30
+ webhook_endpoint_id: String,
31
+
32
+ event_type: OpenAI::Webhooks::WebhookTestParams::EventType::OrSymbol,
33
+
34
+ request_options: OpenAI::RequestOptions::OrHash
35
+ )
36
+ .returns(T.attached_class)
37
+ end
38
+ def self.new(
39
+
40
+ webhook_endpoint_id:,
41
+
42
+ # The event type to send as a sample delivery.
43
+ event_type:,
44
+
45
+ request_options: {}
46
+ )
47
+ end
48
+
49
+ sig do
50
+ override.returns(
51
+ {
52
+ webhook_endpoint_id: String,
53
+ event_type: OpenAI::Webhooks::WebhookTestParams::EventType::OrSymbol,
54
+ request_options: OpenAI::RequestOptions
55
+ }
56
+ )
57
+ end
58
+ def to_hash
59
+ end
60
+
61
+ # The event type to send as a sample delivery.
62
+ module EventType
63
+ extend OpenAI::Internal::Type::Enum
64
+
65
+ TaggedSymbol = T.type_alias { T.all(Symbol, OpenAI::Webhooks::WebhookTestParams::EventType) }
66
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
67
+
68
+ BATCH_COMPLETED = T.let(:"batch.completed", OpenAI::Webhooks::WebhookTestParams::EventType::TaggedSymbol)
69
+ BATCH_FAILED = T.let(:"batch.failed", OpenAI::Webhooks::WebhookTestParams::EventType::TaggedSymbol)
70
+ BATCH_EXPIRED = T.let(:"batch.expired", OpenAI::Webhooks::WebhookTestParams::EventType::TaggedSymbol)
71
+ BATCH_CANCELLED = T.let(:"batch.cancelled", OpenAI::Webhooks::WebhookTestParams::EventType::TaggedSymbol)
72
+ RESPONSE_COMPLETED = T.let(
73
+ :"response.completed",
74
+ OpenAI::Webhooks::WebhookTestParams::EventType::TaggedSymbol
75
+ )
76
+ RESPONSE_FAILED = T.let(:"response.failed", OpenAI::Webhooks::WebhookTestParams::EventType::TaggedSymbol)
77
+ RESPONSE_CANCELLED = T.let(
78
+ :"response.cancelled",
79
+ OpenAI::Webhooks::WebhookTestParams::EventType::TaggedSymbol
80
+ )
81
+ RESPONSE_INCOMPLETE = T.let(
82
+ :"response.incomplete",
83
+ OpenAI::Webhooks::WebhookTestParams::EventType::TaggedSymbol
84
+ )
85
+ EVAL_RUN_SUCCEEDED = T.let(
86
+ :"eval.run.succeeded",
87
+ OpenAI::Webhooks::WebhookTestParams::EventType::TaggedSymbol
88
+ )
89
+ EVAL_RUN_FAILED = T.let(:"eval.run.failed", OpenAI::Webhooks::WebhookTestParams::EventType::TaggedSymbol)
90
+ EVAL_RUN_CANCELED = T.let(:"eval.run.canceled", OpenAI::Webhooks::WebhookTestParams::EventType::TaggedSymbol)
91
+ FINE_TUNING_JOB_SUCCEEDED = T.let(
92
+ :"fine_tuning.job.succeeded",
93
+ OpenAI::Webhooks::WebhookTestParams::EventType::TaggedSymbol
94
+ )
95
+ FINE_TUNING_JOB_FAILED = T.let(
96
+ :"fine_tuning.job.failed",
97
+ OpenAI::Webhooks::WebhookTestParams::EventType::TaggedSymbol
98
+ )
99
+ FINE_TUNING_JOB_CANCELLED = T.let(
100
+ :"fine_tuning.job.cancelled",
101
+ OpenAI::Webhooks::WebhookTestParams::EventType::TaggedSymbol
102
+ )
103
+ REALTIME_CALL_INCOMING = T.let(
104
+ :"realtime.call.incoming",
105
+ OpenAI::Webhooks::WebhookTestParams::EventType::TaggedSymbol
106
+ )
107
+ VIDEO_COMPLETED = T.let(:"video.completed", OpenAI::Webhooks::WebhookTestParams::EventType::TaggedSymbol)
108
+ VIDEO_FAILED = T.let(:"video.failed", OpenAI::Webhooks::WebhookTestParams::EventType::TaggedSymbol)
109
+ SAFETY_ALERT_CREATED = T.let(
110
+ :"safety.alert.created",
111
+ OpenAI::Webhooks::WebhookTestParams::EventType::TaggedSymbol
112
+ )
113
+
114
+ sig { override.returns(T::Array[OpenAI::Webhooks::WebhookTestParams::EventType::TaggedSymbol]) }
115
+ def self.values
116
+ end
117
+ end
118
+
119
+ end
120
+
121
+ end
122
+
123
+ end
124
+ end
@@ -0,0 +1,156 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Webhooks
7
+
8
+ class WebhookUpdateParams < OpenAI::Internal::Type::BaseModel
9
+
10
+ extend OpenAI::Internal::Type::RequestParameters::Converter
11
+ include OpenAI::Internal::Type::RequestParameters
12
+
13
+ OrHash = T.type_alias do
14
+ T.any(
15
+ OpenAI::Webhooks::WebhookUpdateParams,
16
+ OpenAI::Internal::AnyHash
17
+ )
18
+ end
19
+
20
+ sig { returns(String) }
21
+ attr_accessor :webhook_endpoint_id
22
+
23
+ # The complete set of event types that should trigger deliveries.
24
+ sig { returns(T.nilable(T::Array[OpenAI::Webhooks::WebhookUpdateParams::EventType::OrSymbol])) }
25
+ attr_reader :event_types
26
+
27
+ sig { params(event_types: T::Array[OpenAI::Webhooks::WebhookUpdateParams::EventType::OrSymbol]).void }
28
+ attr_writer :event_types
29
+
30
+ # A new human-readable name for the webhook endpoint.
31
+ sig { returns(T.nilable(String)) }
32
+ attr_reader :name
33
+
34
+ sig { params(name: String).void }
35
+ attr_writer :name
36
+
37
+ # A new HTTPS URL that receives webhook deliveries.
38
+ sig { returns(T.nilable(String)) }
39
+ attr_reader :url
40
+
41
+ sig { params(url: String).void }
42
+ attr_writer :url
43
+
44
+ sig do
45
+ params(
46
+
47
+ webhook_endpoint_id: String,
48
+
49
+ event_types: T::Array[OpenAI::Webhooks::WebhookUpdateParams::EventType::OrSymbol],
50
+
51
+ name: String,
52
+
53
+ url: String,
54
+
55
+ request_options: OpenAI::RequestOptions::OrHash
56
+ )
57
+ .returns(T.attached_class)
58
+ end
59
+ def self.new(
60
+
61
+ webhook_endpoint_id:,
62
+
63
+ # The complete set of event types that should trigger deliveries.
64
+ event_types: nil,
65
+
66
+ # A new human-readable name for the webhook endpoint.
67
+ name: nil,
68
+
69
+ # A new HTTPS URL that receives webhook deliveries.
70
+ url: nil,
71
+
72
+ request_options: {}
73
+ )
74
+ end
75
+
76
+ sig do
77
+ override.returns(
78
+ {
79
+ webhook_endpoint_id: String,
80
+ event_types: T::Array[OpenAI::Webhooks::WebhookUpdateParams::EventType::OrSymbol],
81
+ name: String,
82
+ url: String,
83
+ request_options: OpenAI::RequestOptions
84
+ }
85
+ )
86
+ end
87
+ def to_hash
88
+ end
89
+
90
+ # The event type to send as a sample delivery.
91
+ module EventType
92
+ extend OpenAI::Internal::Type::Enum
93
+
94
+ TaggedSymbol = T.type_alias { T.all(Symbol, OpenAI::Webhooks::WebhookUpdateParams::EventType) }
95
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
96
+
97
+ BATCH_COMPLETED = T.let(:"batch.completed", OpenAI::Webhooks::WebhookUpdateParams::EventType::TaggedSymbol)
98
+ BATCH_FAILED = T.let(:"batch.failed", OpenAI::Webhooks::WebhookUpdateParams::EventType::TaggedSymbol)
99
+ BATCH_EXPIRED = T.let(:"batch.expired", OpenAI::Webhooks::WebhookUpdateParams::EventType::TaggedSymbol)
100
+ BATCH_CANCELLED = T.let(:"batch.cancelled", OpenAI::Webhooks::WebhookUpdateParams::EventType::TaggedSymbol)
101
+ RESPONSE_COMPLETED = T.let(
102
+ :"response.completed",
103
+ OpenAI::Webhooks::WebhookUpdateParams::EventType::TaggedSymbol
104
+ )
105
+ RESPONSE_FAILED = T.let(:"response.failed", OpenAI::Webhooks::WebhookUpdateParams::EventType::TaggedSymbol)
106
+ RESPONSE_CANCELLED = T.let(
107
+ :"response.cancelled",
108
+ OpenAI::Webhooks::WebhookUpdateParams::EventType::TaggedSymbol
109
+ )
110
+ RESPONSE_INCOMPLETE = T.let(
111
+ :"response.incomplete",
112
+ OpenAI::Webhooks::WebhookUpdateParams::EventType::TaggedSymbol
113
+ )
114
+ EVAL_RUN_SUCCEEDED = T.let(
115
+ :"eval.run.succeeded",
116
+ OpenAI::Webhooks::WebhookUpdateParams::EventType::TaggedSymbol
117
+ )
118
+ EVAL_RUN_FAILED = T.let(:"eval.run.failed", OpenAI::Webhooks::WebhookUpdateParams::EventType::TaggedSymbol)
119
+ EVAL_RUN_CANCELED = T.let(
120
+ :"eval.run.canceled",
121
+ OpenAI::Webhooks::WebhookUpdateParams::EventType::TaggedSymbol
122
+ )
123
+ FINE_TUNING_JOB_SUCCEEDED = T.let(
124
+ :"fine_tuning.job.succeeded",
125
+ OpenAI::Webhooks::WebhookUpdateParams::EventType::TaggedSymbol
126
+ )
127
+ FINE_TUNING_JOB_FAILED = T.let(
128
+ :"fine_tuning.job.failed",
129
+ OpenAI::Webhooks::WebhookUpdateParams::EventType::TaggedSymbol
130
+ )
131
+ FINE_TUNING_JOB_CANCELLED = T.let(
132
+ :"fine_tuning.job.cancelled",
133
+ OpenAI::Webhooks::WebhookUpdateParams::EventType::TaggedSymbol
134
+ )
135
+ REALTIME_CALL_INCOMING = T.let(
136
+ :"realtime.call.incoming",
137
+ OpenAI::Webhooks::WebhookUpdateParams::EventType::TaggedSymbol
138
+ )
139
+ VIDEO_COMPLETED = T.let(:"video.completed", OpenAI::Webhooks::WebhookUpdateParams::EventType::TaggedSymbol)
140
+ VIDEO_FAILED = T.let(:"video.failed", OpenAI::Webhooks::WebhookUpdateParams::EventType::TaggedSymbol)
141
+ SAFETY_ALERT_CREATED = T.let(
142
+ :"safety.alert.created",
143
+ OpenAI::Webhooks::WebhookUpdateParams::EventType::TaggedSymbol
144
+ )
145
+
146
+ sig { override.returns(T::Array[OpenAI::Webhooks::WebhookUpdateParams::EventType::TaggedSymbol]) }
147
+ def self.values
148
+ end
149
+ end
150
+
151
+ end
152
+
153
+ end
154
+
155
+ end
156
+ end
@@ -130,11 +130,13 @@ module OpenAI
130
130
  )
131
131
  end
132
132
 
133
- # Updates session metadata. Omitted fields are unchanged. See
133
+ # Updates session metadata, model, reasoning effort, or service tier. Model
134
+ # settings apply to subsequent turns. Omitted fields are unchanged. See
134
135
  # [managing sessions](https://developers.openai.com/api/docs/guides/agents-api/sessions/manage).
135
136
  sig {
136
137
  params(
137
138
  session_id: String,
139
+ agent: OpenAI::Beta::Agents::SessionUpdateParams::Agent::OrHash,
138
140
  metadata: T.nilable(T::Hash[Symbol, String]),
139
141
  request_options: OpenAI::RequestOptions::OrHash
140
142
  )
@@ -143,6 +145,8 @@ module OpenAI
143
145
  def update(
144
146
  # The ID of the session.
145
147
  session_id,
148
+ # Model settings for subsequent turns. Omitted fields stay unchanged.
149
+ agent: nil,
146
150
  # Replaces all metadata. Omit to leave unchanged, or pass null or {} to clear it.
147
151
  # Up to 16 string key-value pairs, with keys up to 64 and values up to 512
148
152
  # characters.
@@ -0,0 +1,24 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Resources
5
+
6
+ class Webhooks
7
+
8
+ class EventTypes
9
+
10
+ # Returns webhook event types visible to the authenticated project.
11
+ sig { params(request_options: OpenAI::RequestOptions::OrHash).returns(OpenAI::Webhooks::WebhookEventTypeList) }
12
+ def list(request_options: {})
13
+ end
14
+
15
+ # @api private
16
+ sig { params(client: OpenAI::Client).returns(T.attached_class) }
17
+ def self.new(client:)
18
+ end
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+ end
@@ -5,6 +5,132 @@ module OpenAI
5
5
 
6
6
  class Webhooks
7
7
 
8
+ sig { returns(OpenAI::Resources::Webhooks::EventTypes) }
9
+ attr_reader :event_types
10
+
11
+ # Creates a webhook endpoint for the authenticated project.
12
+ sig {
13
+ params(
14
+ event_types: T::Array[OpenAI::Webhooks::WebhookCreateParams::EventType::OrSymbol],
15
+ name: String,
16
+ url: String,
17
+ request_options: OpenAI::RequestOptions::OrHash
18
+ )
19
+ .returns(OpenAI::Webhooks::WebhookEndpointWithSecret)
20
+ }
21
+ def create(
22
+ # The event types that trigger deliveries to this endpoint.
23
+ event_types:,
24
+ # A human-readable name for the webhook endpoint.
25
+ name:,
26
+ # The HTTPS URL that receives webhook deliveries.
27
+ url:,
28
+ request_options: {}
29
+ )
30
+ end
31
+
32
+ # Retrieves a webhook endpoint for the authenticated project.
33
+ sig {
34
+ params(webhook_endpoint_id: String, request_options: OpenAI::RequestOptions::OrHash).returns(
35
+ OpenAI::Webhooks::WebhookEndpoint
36
+ )
37
+ }
38
+ def retrieve(
39
+ # The ID of the webhook endpoint to retrieve.
40
+ webhook_endpoint_id,
41
+ request_options: {}
42
+ )
43
+ end
44
+
45
+ # Updates a webhook endpoint for the authenticated project.
46
+ sig {
47
+ params(
48
+ webhook_endpoint_id: String,
49
+ event_types: T::Array[OpenAI::Webhooks::WebhookUpdateParams::EventType::OrSymbol],
50
+ name: String,
51
+ url: String,
52
+ request_options: OpenAI::RequestOptions::OrHash
53
+ )
54
+ .returns(OpenAI::Webhooks::WebhookEndpoint)
55
+ }
56
+ def update(
57
+ # The ID of the webhook endpoint to update.
58
+ webhook_endpoint_id,
59
+ # The complete set of event types that should trigger deliveries.
60
+ event_types: nil,
61
+ # A new human-readable name for the webhook endpoint.
62
+ name: nil,
63
+ # A new HTTPS URL that receives webhook deliveries.
64
+ url: nil,
65
+ request_options: {}
66
+ )
67
+ end
68
+
69
+ # Returns webhook endpoints for the authenticated project in newest-first order.
70
+ sig {
71
+ params(after: T.nilable(String), limit: Integer, request_options: OpenAI::RequestOptions::OrHash).returns(
72
+ OpenAI::Internal::CursorPage[OpenAI::Webhooks::WebhookEndpoint]
73
+ )
74
+ }
75
+ def list(
76
+ # ID of the last webhook endpoint from the previous page.
77
+ after: nil,
78
+ # Maximum number of webhook endpoints to return. Defaults to 20.
79
+ limit: nil,
80
+ request_options: {}
81
+ )
82
+ end
83
+
84
+ # Deletes a webhook endpoint for the authenticated project.
85
+ sig {
86
+ params(webhook_endpoint_id: String, request_options: OpenAI::RequestOptions::OrHash).returns(
87
+ OpenAI::Webhooks::DeletedWebhookEndpoint
88
+ )
89
+ }
90
+ def delete(
91
+ # The ID of the webhook endpoint to delete.
92
+ webhook_endpoint_id,
93
+ request_options: {}
94
+ )
95
+ end
96
+
97
+ # Rotates the signing secret for a webhook endpoint in the authenticated project.
98
+ sig {
99
+ params(
100
+ webhook_endpoint_id: String,
101
+ keep_old_secret_active_for_24_hours: T::Boolean,
102
+ request_options: OpenAI::RequestOptions::OrHash
103
+ )
104
+ .returns(OpenAI::Webhooks::WebhookEndpointWithSecret)
105
+ }
106
+ def rotate_secret(
107
+ # The ID of the webhook endpoint whose signing secret will be rotated.
108
+ webhook_endpoint_id,
109
+ # Whether to keep the previous signing secret valid for 24 hours after rotation.
110
+ # Defaults to false, which invalidates the previous secret immediately.
111
+ keep_old_secret_active_for_24_hours: nil,
112
+ request_options: {}
113
+ )
114
+ end
115
+
116
+ # Sends a sample event to a webhook endpoint for the authenticated project.
117
+ sig {
118
+ params(
119
+ webhook_endpoint_id: String,
120
+ event_type: OpenAI::Webhooks::WebhookTestParams::EventType::OrSymbol,
121
+ request_options: OpenAI::RequestOptions::OrHash
122
+ )
123
+ .returns(OpenAI::Webhooks::WebhookEndpointTestResult)
124
+ }
125
+ def test_(
126
+ # The ID of the webhook endpoint to test.
127
+ webhook_endpoint_id,
128
+ # The event type to send as a sample delivery.
129
+ event_type:,
130
+ request_options: {}
131
+ )
132
+ end
133
+
8
134
  # Validates that the given payload was sent by OpenAI and parses the payload.
9
135
  sig {
10
136
  params(