openai 0.70.0 → 0.72.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 (172) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +20 -0
  3. data/README.md +51 -1
  4. data/lib/openai/client.rb +62 -8
  5. data/lib/openai/internal/provider.rb +31 -0
  6. data/lib/openai/internal/transport/base_client.rb +65 -21
  7. data/lib/openai/models/admin/organization/audit_log_list_params.rb +84 -0
  8. data/lib/openai/models/admin/organization/audit_log_list_response.rb +84 -0
  9. data/lib/openai/models/admin/organization/organization_spend_limit.rb +151 -0
  10. data/lib/openai/models/admin/organization/organization_spend_limit_deleted.rb +33 -0
  11. data/lib/openai/models/admin/organization/projects/project_service_account.rb +4 -3
  12. data/lib/openai/models/admin/organization/projects/project_spend_limit.rb +155 -0
  13. data/lib/openai/models/admin/organization/projects/project_spend_limit_deleted.rb +35 -0
  14. data/lib/openai/models/admin/organization/projects/service_account_create_params.rb +9 -1
  15. data/lib/openai/models/admin/organization/projects/service_account_create_response.rb +26 -6
  16. data/lib/openai/models/admin/organization/projects/service_accounts/api_key_create_params.rb +54 -0
  17. data/lib/openai/models/admin/organization/projects/service_accounts/api_key_create_response.rb +57 -0
  18. data/lib/openai/models/admin/organization/projects/spend_limit_delete_params.rb +26 -0
  19. data/lib/openai/models/admin/organization/projects/spend_limit_retrieve_params.rb +26 -0
  20. data/lib/openai/models/admin/organization/projects/spend_limit_update_params.rb +77 -0
  21. data/lib/openai/models/admin/organization/spend_limit_delete_params.rb +18 -0
  22. data/lib/openai/models/admin/organization/spend_limit_retrieve_params.rb +18 -0
  23. data/lib/openai/models/admin/organization/spend_limit_update_params.rb +67 -0
  24. data/lib/openai/models/admin/organization/usage_audio_speeches_response.rb +88 -13
  25. data/lib/openai/models/admin/organization/usage_audio_transcriptions_response.rb +88 -13
  26. data/lib/openai/models/admin/organization/usage_code_interpreter_sessions_response.rb +88 -13
  27. data/lib/openai/models/admin/organization/usage_completions_response.rb +88 -13
  28. data/lib/openai/models/admin/organization/usage_costs_response.rb +88 -13
  29. data/lib/openai/models/admin/organization/usage_embeddings_response.rb +88 -13
  30. data/lib/openai/models/admin/organization/usage_file_search_calls_response.rb +88 -13
  31. data/lib/openai/models/admin/organization/usage_images_response.rb +88 -13
  32. data/lib/openai/models/admin/organization/usage_moderations_response.rb +88 -13
  33. data/lib/openai/models/admin/organization/usage_vector_stores_response.rb +88 -13
  34. data/lib/openai/models/admin/organization/usage_web_search_calls_response.rb +88 -13
  35. data/lib/openai/models/beta/beta_response.rb +12 -6
  36. data/lib/openai/models/beta/beta_response_error.rb +1 -0
  37. data/lib/openai/models/beta/beta_response_input_item.rb +16 -32
  38. data/lib/openai/models/beta/beta_response_text_config.rb +4 -2
  39. data/lib/openai/models/beta/beta_responses_client_event.rb +12 -6
  40. data/lib/openai/models/beta/response_create_params.rb +12 -6
  41. data/lib/openai/models/beta/responses/input_token_count_params.rb +12 -4
  42. data/lib/openai/models/chat/completion_create_params.rb +8 -6
  43. data/lib/openai/models/reasoning.rb +8 -2
  44. data/lib/openai/models/responses/input_token_count_params.rb +4 -2
  45. data/lib/openai/models/responses/response.rb +4 -4
  46. data/lib/openai/models/responses/response_create_params.rb +4 -4
  47. data/lib/openai/models/responses/response_error.rb +1 -0
  48. data/lib/openai/models/responses/response_text_config.rb +4 -2
  49. data/lib/openai/models/responses/responses_client_event.rb +4 -4
  50. data/lib/openai/provider.rb +18 -0
  51. data/lib/openai/providers/bedrock.rb +489 -0
  52. data/lib/openai/resources/admin/organization/projects/service_accounts/api_keys.rb +60 -0
  53. data/lib/openai/resources/admin/organization/projects/service_accounts.rb +10 -3
  54. data/lib/openai/resources/admin/organization/projects/spend_limit.rb +95 -0
  55. data/lib/openai/resources/admin/organization/projects.rb +4 -0
  56. data/lib/openai/resources/admin/organization/spend_limit.rb +86 -0
  57. data/lib/openai/resources/admin/organization.rb +4 -0
  58. data/lib/openai/resources/beta/responses.rb +4 -4
  59. data/lib/openai/resources/chat/completions.rb +4 -4
  60. data/lib/openai/resources/responses.rb +4 -4
  61. data/lib/openai/version.rb +1 -1
  62. data/lib/openai.rb +18 -0
  63. data/rbi/openai/client.rbi +17 -0
  64. data/rbi/openai/internal/provider.rbi +51 -0
  65. data/rbi/openai/internal/transport/base_client.rbi +32 -0
  66. data/rbi/openai/models/admin/organization/audit_log_list_params.rbi +420 -0
  67. data/rbi/openai/models/admin/organization/audit_log_list_response.rbi +420 -0
  68. data/rbi/openai/models/admin/organization/organization_spend_limit.rbi +278 -0
  69. data/rbi/openai/models/admin/organization/organization_spend_limit_deleted.rbi +48 -0
  70. data/rbi/openai/models/admin/organization/projects/project_service_account.rbi +8 -3
  71. data/rbi/openai/models/admin/organization/projects/project_spend_limit.rbi +280 -0
  72. data/rbi/openai/models/admin/organization/projects/project_spend_limit_deleted.rbi +49 -0
  73. data/rbi/openai/models/admin/organization/projects/service_account_create_params.rbi +8 -0
  74. data/rbi/openai/models/admin/organization/projects/service_account_create_response.rbi +52 -8
  75. data/rbi/openai/models/admin/organization/projects/service_accounts/api_key_create_params.rbi +84 -0
  76. data/rbi/openai/models/admin/organization/projects/service_accounts/api_key_create_response.rbi +80 -0
  77. data/rbi/openai/models/admin/organization/projects/spend_limit_delete_params.rbi +44 -0
  78. data/rbi/openai/models/admin/organization/projects/spend_limit_retrieve_params.rbi +44 -0
  79. data/rbi/openai/models/admin/organization/projects/spend_limit_update_params.rbi +149 -0
  80. data/rbi/openai/models/admin/organization/spend_limit_delete_params.rbi +34 -0
  81. data/rbi/openai/models/admin/organization/spend_limit_retrieve_params.rbi +34 -0
  82. data/rbi/openai/models/admin/organization/spend_limit_update_params.rbi +141 -0
  83. data/rbi/openai/models/admin/organization/usage_audio_speeches_response.rbi +121 -16
  84. data/rbi/openai/models/admin/organization/usage_audio_transcriptions_response.rbi +121 -16
  85. data/rbi/openai/models/admin/organization/usage_code_interpreter_sessions_response.rbi +121 -16
  86. data/rbi/openai/models/admin/organization/usage_completions_response.rbi +121 -16
  87. data/rbi/openai/models/admin/organization/usage_costs_response.rbi +121 -16
  88. data/rbi/openai/models/admin/organization/usage_embeddings_response.rbi +121 -16
  89. data/rbi/openai/models/admin/organization/usage_file_search_calls_response.rbi +121 -16
  90. data/rbi/openai/models/admin/organization/usage_images_response.rbi +121 -16
  91. data/rbi/openai/models/admin/organization/usage_moderations_response.rbi +121 -16
  92. data/rbi/openai/models/admin/organization/usage_vector_stores_response.rbi +121 -16
  93. data/rbi/openai/models/admin/organization/usage_web_search_calls_response.rbi +121 -16
  94. data/rbi/openai/models/beta/beta_response.rbi +18 -15
  95. data/rbi/openai/models/beta/beta_response_error.rbi +5 -0
  96. data/rbi/openai/models/beta/beta_response_input_item.rbi +39 -46
  97. data/rbi/openai/models/beta/beta_response_text_config.rbi +6 -3
  98. data/rbi/openai/models/beta/beta_responses_client_event.rbi +18 -15
  99. data/rbi/openai/models/beta/response_create_params.rbi +18 -15
  100. data/rbi/openai/models/beta/responses/input_token_count_params.rbi +18 -6
  101. data/rbi/openai/models/chat/completion_create_params.rbi +12 -15
  102. data/rbi/openai/models/reasoning.rbi +12 -3
  103. data/rbi/openai/models/responses/input_token_count_params.rbi +6 -3
  104. data/rbi/openai/models/responses/response.rbi +6 -12
  105. data/rbi/openai/models/responses/response_create_params.rbi +6 -12
  106. data/rbi/openai/models/responses/response_error.rbi +5 -0
  107. data/rbi/openai/models/responses/response_text_config.rbi +6 -3
  108. data/rbi/openai/models/responses/responses_client_event.rbi +6 -12
  109. data/rbi/openai/provider.rbi +9 -0
  110. data/rbi/openai/providers.rbi +33 -0
  111. data/rbi/openai/resources/admin/organization/projects/service_accounts/api_keys.rbi +45 -0
  112. data/rbi/openai/resources/admin/organization/projects/service_accounts.rbi +12 -2
  113. data/rbi/openai/resources/admin/organization/projects/spend_limit.rbi +78 -0
  114. data/rbi/openai/resources/admin/organization/projects.rbi +7 -0
  115. data/rbi/openai/resources/admin/organization/spend_limit.rbi +57 -0
  116. data/rbi/openai/resources/admin/organization.rbi +3 -0
  117. data/rbi/openai/resources/beta/responses.rbi +4 -4
  118. data/rbi/openai/resources/chat/completions.rbi +8 -6
  119. data/rbi/openai/resources/responses.rbi +4 -4
  120. data/sig/openai/client.rbs +7 -0
  121. data/sig/openai/internal/provider.rbs +29 -0
  122. data/sig/openai/internal/transport/base_client.rbs +17 -1
  123. data/sig/openai/models/admin/organization/audit_log_list_params.rbs +168 -0
  124. data/sig/openai/models/admin/organization/audit_log_list_response.rbs +168 -0
  125. data/sig/openai/models/admin/organization/organization_spend_limit.rbs +94 -0
  126. data/sig/openai/models/admin/organization/organization_spend_limit_deleted.rbs +28 -0
  127. data/sig/openai/models/admin/organization/projects/project_service_account.rbs +2 -1
  128. data/sig/openai/models/admin/organization/projects/project_spend_limit.rbs +96 -0
  129. data/sig/openai/models/admin/organization/projects/project_spend_limit_deleted.rbs +30 -0
  130. data/sig/openai/models/admin/organization/projects/service_account_create_params.rbs +9 -1
  131. data/sig/openai/models/admin/organization/projects/service_account_create_response.rbs +16 -5
  132. data/sig/openai/models/admin/organization/projects/service_accounts/api_key_create_params.rbs +53 -0
  133. data/sig/openai/models/admin/organization/projects/service_accounts/api_key_create_response.rbs +48 -0
  134. data/sig/openai/models/admin/organization/projects/spend_limit_delete_params.rbs +29 -0
  135. data/sig/openai/models/admin/organization/projects/spend_limit_retrieve_params.rbs +29 -0
  136. data/sig/openai/models/admin/organization/projects/spend_limit_update_params.rbs +67 -0
  137. data/sig/openai/models/admin/organization/spend_limit_delete_params.rbs +19 -0
  138. data/sig/openai/models/admin/organization/spend_limit_retrieve_params.rbs +19 -0
  139. data/sig/openai/models/admin/organization/spend_limit_update_params.rbs +60 -0
  140. data/sig/openai/models/admin/organization/usage_audio_speeches_response.rbs +63 -0
  141. data/sig/openai/models/admin/organization/usage_audio_transcriptions_response.rbs +63 -0
  142. data/sig/openai/models/admin/organization/usage_code_interpreter_sessions_response.rbs +63 -0
  143. data/sig/openai/models/admin/organization/usage_completions_response.rbs +63 -0
  144. data/sig/openai/models/admin/organization/usage_costs_response.rbs +63 -0
  145. data/sig/openai/models/admin/organization/usage_embeddings_response.rbs +63 -0
  146. data/sig/openai/models/admin/organization/usage_file_search_calls_response.rbs +63 -0
  147. data/sig/openai/models/admin/organization/usage_images_response.rbs +63 -0
  148. data/sig/openai/models/admin/organization/usage_moderations_response.rbs +63 -0
  149. data/sig/openai/models/admin/organization/usage_vector_stores_response.rbs +63 -0
  150. data/sig/openai/models/admin/organization/usage_web_search_calls_response.rbs +63 -0
  151. data/sig/openai/models/beta/beta_response.rbs +8 -12
  152. data/sig/openai/models/beta/beta_response_error.rbs +2 -0
  153. data/sig/openai/models/beta/beta_response_input_item.rbs +18 -24
  154. data/sig/openai/models/beta/beta_responses_client_event.rbs +8 -12
  155. data/sig/openai/models/beta/response_create_params.rbs +8 -12
  156. data/sig/openai/models/chat/completion_create_params.rbs +8 -12
  157. data/sig/openai/models/responses/response.rbs +8 -12
  158. data/sig/openai/models/responses/response_create_params.rbs +8 -12
  159. data/sig/openai/models/responses/response_error.rbs +2 -0
  160. data/sig/openai/models/responses/responses_client_event.rbs +8 -12
  161. data/sig/openai/provider.rbs +5 -0
  162. data/sig/openai/providers.rbs +15 -0
  163. data/sig/openai/resources/admin/organization/projects/service_accounts/api_keys.rbs +23 -0
  164. data/sig/openai/resources/admin/organization/projects/service_accounts.rbs +3 -0
  165. data/sig/openai/resources/admin/organization/projects/spend_limit.rbs +31 -0
  166. data/sig/openai/resources/admin/organization/projects.rbs +2 -0
  167. data/sig/openai/resources/admin/organization/spend_limit.rbs +26 -0
  168. data/sig/openai/resources/admin/organization.rbs +2 -0
  169. data/sig/openai/resources/beta/responses.rbs +4 -4
  170. data/sig/openai/resources/chat/completions.rbs +4 -4
  171. data/sig/openai/resources/responses.rbs +4 -4
  172. metadata +56 -2
@@ -0,0 +1,278 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Admin
6
+ OrganizationSpendLimit = Organization::OrganizationSpendLimit
7
+
8
+ module Organization
9
+ class OrganizationSpendLimit < OpenAI::Internal::Type::BaseModel
10
+ OrHash =
11
+ T.type_alias do
12
+ T.any(
13
+ OpenAI::Admin::Organization::OrganizationSpendLimit,
14
+ OpenAI::Internal::AnyHash
15
+ )
16
+ end
17
+
18
+ # The currency for the threshold amount. Currently, only `USD` is supported.
19
+ sig do
20
+ returns(
21
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Currency::Variants
22
+ )
23
+ end
24
+ attr_accessor :currency
25
+
26
+ # The current enforcement state of the hard spend limit.
27
+ sig do
28
+ returns(
29
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Enforcement
30
+ )
31
+ end
32
+ attr_reader :enforcement
33
+
34
+ sig do
35
+ params(
36
+ enforcement:
37
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Enforcement::OrHash
38
+ ).void
39
+ end
40
+ attr_writer :enforcement
41
+
42
+ # The time interval for evaluating spend against the threshold. Currently, only
43
+ # `month` is supported.
44
+ sig do
45
+ returns(
46
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Interval::Variants
47
+ )
48
+ end
49
+ attr_accessor :interval
50
+
51
+ # The object type, which is always `organization.spend_limit`.
52
+ sig { returns(Symbol) }
53
+ attr_accessor :object
54
+
55
+ # The hard spend limit amount, in cents.
56
+ sig { returns(Integer) }
57
+ attr_accessor :threshold_amount
58
+
59
+ # Represents a hard spend limit configured at the organization level.
60
+ sig do
61
+ params(
62
+ currency:
63
+ T.any(
64
+ String,
65
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Currency::OrSymbol
66
+ ),
67
+ enforcement:
68
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Enforcement::OrHash,
69
+ interval:
70
+ T.any(
71
+ String,
72
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Interval::OrSymbol
73
+ ),
74
+ threshold_amount: Integer,
75
+ object: Symbol
76
+ ).returns(T.attached_class)
77
+ end
78
+ def self.new(
79
+ # The currency for the threshold amount. Currently, only `USD` is supported.
80
+ currency:,
81
+ # The current enforcement state of the hard spend limit.
82
+ enforcement:,
83
+ # The time interval for evaluating spend against the threshold. Currently, only
84
+ # `month` is supported.
85
+ interval:,
86
+ # The hard spend limit amount, in cents.
87
+ threshold_amount:,
88
+ # The object type, which is always `organization.spend_limit`.
89
+ object: :"organization.spend_limit"
90
+ )
91
+ end
92
+
93
+ sig do
94
+ override.returns(
95
+ {
96
+ currency:
97
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Currency::Variants,
98
+ enforcement:
99
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Enforcement,
100
+ interval:
101
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Interval::Variants,
102
+ object: Symbol,
103
+ threshold_amount: Integer
104
+ }
105
+ )
106
+ end
107
+ def to_hash
108
+ end
109
+
110
+ # The currency for the threshold amount. Currently, only `USD` is supported.
111
+ module Currency
112
+ extend OpenAI::Internal::Type::Union
113
+
114
+ Variants =
115
+ T.type_alias do
116
+ T.any(
117
+ String,
118
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Currency::TaggedSymbol
119
+ )
120
+ end
121
+
122
+ sig do
123
+ override.returns(
124
+ T::Array[
125
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Currency::Variants
126
+ ]
127
+ )
128
+ end
129
+ def self.variants
130
+ end
131
+
132
+ TaggedSymbol =
133
+ T.type_alias do
134
+ T.all(
135
+ Symbol,
136
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Currency
137
+ )
138
+ end
139
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
140
+
141
+ USD =
142
+ T.let(
143
+ :USD,
144
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Currency::TaggedSymbol
145
+ )
146
+ end
147
+
148
+ class Enforcement < OpenAI::Internal::Type::BaseModel
149
+ OrHash =
150
+ T.type_alias do
151
+ T.any(
152
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Enforcement,
153
+ OpenAI::Internal::AnyHash
154
+ )
155
+ end
156
+
157
+ # Whether the hard spend limit is currently enforcing.
158
+ sig do
159
+ returns(
160
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Enforcement::Status::Variants
161
+ )
162
+ end
163
+ attr_accessor :status
164
+
165
+ # The current enforcement state of the hard spend limit.
166
+ sig do
167
+ params(
168
+ status:
169
+ T.any(
170
+ String,
171
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Enforcement::Status::OrSymbol
172
+ )
173
+ ).returns(T.attached_class)
174
+ end
175
+ def self.new(
176
+ # Whether the hard spend limit is currently enforcing.
177
+ status:
178
+ )
179
+ end
180
+
181
+ sig do
182
+ override.returns(
183
+ {
184
+ status:
185
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Enforcement::Status::Variants
186
+ }
187
+ )
188
+ end
189
+ def to_hash
190
+ end
191
+
192
+ # Whether the hard spend limit is currently enforcing.
193
+ module Status
194
+ extend OpenAI::Internal::Type::Union
195
+
196
+ Variants =
197
+ T.type_alias do
198
+ T.any(
199
+ String,
200
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Enforcement::Status::TaggedSymbol
201
+ )
202
+ end
203
+
204
+ sig do
205
+ override.returns(
206
+ T::Array[
207
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Enforcement::Status::Variants
208
+ ]
209
+ )
210
+ end
211
+ def self.variants
212
+ end
213
+
214
+ TaggedSymbol =
215
+ T.type_alias do
216
+ T.all(
217
+ Symbol,
218
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Enforcement::Status
219
+ )
220
+ end
221
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
222
+
223
+ INACTIVE =
224
+ T.let(
225
+ :inactive,
226
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Enforcement::Status::TaggedSymbol
227
+ )
228
+ ENFORCING =
229
+ T.let(
230
+ :enforcing,
231
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Enforcement::Status::TaggedSymbol
232
+ )
233
+ end
234
+ end
235
+
236
+ # The time interval for evaluating spend against the threshold. Currently, only
237
+ # `month` is supported.
238
+ module Interval
239
+ extend OpenAI::Internal::Type::Union
240
+
241
+ Variants =
242
+ T.type_alias do
243
+ T.any(
244
+ String,
245
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Interval::TaggedSymbol
246
+ )
247
+ end
248
+
249
+ sig do
250
+ override.returns(
251
+ T::Array[
252
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Interval::Variants
253
+ ]
254
+ )
255
+ end
256
+ def self.variants
257
+ end
258
+
259
+ TaggedSymbol =
260
+ T.type_alias do
261
+ T.all(
262
+ Symbol,
263
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Interval
264
+ )
265
+ end
266
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
267
+
268
+ MONTH =
269
+ T.let(
270
+ :month,
271
+ OpenAI::Admin::Organization::OrganizationSpendLimit::Interval::TaggedSymbol
272
+ )
273
+ end
274
+ end
275
+ end
276
+ end
277
+ end
278
+ end
@@ -0,0 +1,48 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Admin
6
+ OrganizationSpendLimitDeleted =
7
+ Organization::OrganizationSpendLimitDeleted
8
+
9
+ module Organization
10
+ class OrganizationSpendLimitDeleted < OpenAI::Internal::Type::BaseModel
11
+ OrHash =
12
+ T.type_alias do
13
+ T.any(
14
+ OpenAI::Admin::Organization::OrganizationSpendLimitDeleted,
15
+ OpenAI::Internal::AnyHash
16
+ )
17
+ end
18
+
19
+ # Whether the hard spend limit was deleted.
20
+ sig { returns(T::Boolean) }
21
+ attr_accessor :deleted
22
+
23
+ # The object type, which is always `organization.spend_limit.deleted`.
24
+ sig { returns(Symbol) }
25
+ attr_accessor :object
26
+
27
+ # Confirmation payload returned after deleting an organization hard spend limit.
28
+ sig do
29
+ params(deleted: T::Boolean, object: Symbol).returns(
30
+ T.attached_class
31
+ )
32
+ end
33
+ def self.new(
34
+ # Whether the hard spend limit was deleted.
35
+ deleted:,
36
+ # The object type, which is always `organization.spend_limit.deleted`.
37
+ object: :"organization.spend_limit.deleted"
38
+ )
39
+ end
40
+
41
+ sig { override.returns({ deleted: T::Boolean, object: Symbol }) }
42
+ def to_hash
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -32,7 +32,7 @@ module OpenAI
32
32
  sig { returns(Symbol) }
33
33
  attr_accessor :object
34
34
 
35
- # `owner` or `member`
35
+ # `owner`, `member`, or `none`
36
36
  sig do
37
37
  returns(
38
38
  OpenAI::Admin::Organization::Projects::ProjectServiceAccount::Role::TaggedSymbol
@@ -58,7 +58,7 @@ module OpenAI
58
58
  created_at:,
59
59
  # The name of the service account
60
60
  name:,
61
- # `owner` or `member`
61
+ # `owner`, `member`, or `none`
62
62
  role:,
63
63
  # The object type, which is always `organization.project.service_account`
64
64
  object: :"organization.project.service_account"
@@ -80,7 +80,7 @@ module OpenAI
80
80
  def to_hash
81
81
  end
82
82
 
83
- # `owner` or `member`
83
+ # `owner`, `member`, or `none`
84
84
  module Role
85
85
  extend OpenAI::Internal::Type::Enum
86
86
 
@@ -103,6 +103,11 @@ module OpenAI
103
103
  :member,
104
104
  OpenAI::Admin::Organization::Projects::ProjectServiceAccount::Role::TaggedSymbol
105
105
  )
106
+ NONE =
107
+ T.let(
108
+ :none,
109
+ OpenAI::Admin::Organization::Projects::ProjectServiceAccount::Role::TaggedSymbol
110
+ )
106
111
 
107
112
  sig do
108
113
  override.returns(
@@ -0,0 +1,280 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Admin
6
+ module Organization
7
+ ProjectSpendLimit = Projects::ProjectSpendLimit
8
+
9
+ module Projects
10
+ class ProjectSpendLimit < OpenAI::Internal::Type::BaseModel
11
+ OrHash =
12
+ T.type_alias do
13
+ T.any(
14
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit,
15
+ OpenAI::Internal::AnyHash
16
+ )
17
+ end
18
+
19
+ # The currency for the threshold amount. Currently, only `USD` is supported.
20
+ sig do
21
+ returns(
22
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Currency::Variants
23
+ )
24
+ end
25
+ attr_accessor :currency
26
+
27
+ # The current enforcement state of the hard spend limit.
28
+ sig do
29
+ returns(
30
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Enforcement
31
+ )
32
+ end
33
+ attr_reader :enforcement
34
+
35
+ sig do
36
+ params(
37
+ enforcement:
38
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Enforcement::OrHash
39
+ ).void
40
+ end
41
+ attr_writer :enforcement
42
+
43
+ # The time interval for evaluating spend against the threshold. Currently, only
44
+ # `month` is supported.
45
+ sig do
46
+ returns(
47
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Interval::Variants
48
+ )
49
+ end
50
+ attr_accessor :interval
51
+
52
+ # The object type, which is always `project.spend_limit`.
53
+ sig { returns(Symbol) }
54
+ attr_accessor :object
55
+
56
+ # The hard spend limit amount, in cents.
57
+ sig { returns(Integer) }
58
+ attr_accessor :threshold_amount
59
+
60
+ # Represents a hard spend limit configured at the project level.
61
+ sig do
62
+ params(
63
+ currency:
64
+ T.any(
65
+ String,
66
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Currency::OrSymbol
67
+ ),
68
+ enforcement:
69
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Enforcement::OrHash,
70
+ interval:
71
+ T.any(
72
+ String,
73
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Interval::OrSymbol
74
+ ),
75
+ threshold_amount: Integer,
76
+ object: Symbol
77
+ ).returns(T.attached_class)
78
+ end
79
+ def self.new(
80
+ # The currency for the threshold amount. Currently, only `USD` is supported.
81
+ currency:,
82
+ # The current enforcement state of the hard spend limit.
83
+ enforcement:,
84
+ # The time interval for evaluating spend against the threshold. Currently, only
85
+ # `month` is supported.
86
+ interval:,
87
+ # The hard spend limit amount, in cents.
88
+ threshold_amount:,
89
+ # The object type, which is always `project.spend_limit`.
90
+ object: :"project.spend_limit"
91
+ )
92
+ end
93
+
94
+ sig do
95
+ override.returns(
96
+ {
97
+ currency:
98
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Currency::Variants,
99
+ enforcement:
100
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Enforcement,
101
+ interval:
102
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Interval::Variants,
103
+ object: Symbol,
104
+ threshold_amount: Integer
105
+ }
106
+ )
107
+ end
108
+ def to_hash
109
+ end
110
+
111
+ # The currency for the threshold amount. Currently, only `USD` is supported.
112
+ module Currency
113
+ extend OpenAI::Internal::Type::Union
114
+
115
+ Variants =
116
+ T.type_alias do
117
+ T.any(
118
+ String,
119
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Currency::TaggedSymbol
120
+ )
121
+ end
122
+
123
+ sig do
124
+ override.returns(
125
+ T::Array[
126
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Currency::Variants
127
+ ]
128
+ )
129
+ end
130
+ def self.variants
131
+ end
132
+
133
+ TaggedSymbol =
134
+ T.type_alias do
135
+ T.all(
136
+ Symbol,
137
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Currency
138
+ )
139
+ end
140
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
141
+
142
+ USD =
143
+ T.let(
144
+ :USD,
145
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Currency::TaggedSymbol
146
+ )
147
+ end
148
+
149
+ class Enforcement < OpenAI::Internal::Type::BaseModel
150
+ OrHash =
151
+ T.type_alias do
152
+ T.any(
153
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Enforcement,
154
+ OpenAI::Internal::AnyHash
155
+ )
156
+ end
157
+
158
+ # Whether the hard spend limit is currently enforcing.
159
+ sig do
160
+ returns(
161
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Enforcement::Status::Variants
162
+ )
163
+ end
164
+ attr_accessor :status
165
+
166
+ # The current enforcement state of the hard spend limit.
167
+ sig do
168
+ params(
169
+ status:
170
+ T.any(
171
+ String,
172
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Enforcement::Status::OrSymbol
173
+ )
174
+ ).returns(T.attached_class)
175
+ end
176
+ def self.new(
177
+ # Whether the hard spend limit is currently enforcing.
178
+ status:
179
+ )
180
+ end
181
+
182
+ sig do
183
+ override.returns(
184
+ {
185
+ status:
186
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Enforcement::Status::Variants
187
+ }
188
+ )
189
+ end
190
+ def to_hash
191
+ end
192
+
193
+ # Whether the hard spend limit is currently enforcing.
194
+ module Status
195
+ extend OpenAI::Internal::Type::Union
196
+
197
+ Variants =
198
+ T.type_alias do
199
+ T.any(
200
+ String,
201
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Enforcement::Status::TaggedSymbol
202
+ )
203
+ end
204
+
205
+ sig do
206
+ override.returns(
207
+ T::Array[
208
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Enforcement::Status::Variants
209
+ ]
210
+ )
211
+ end
212
+ def self.variants
213
+ end
214
+
215
+ TaggedSymbol =
216
+ T.type_alias do
217
+ T.all(
218
+ Symbol,
219
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Enforcement::Status
220
+ )
221
+ end
222
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
223
+
224
+ INACTIVE =
225
+ T.let(
226
+ :inactive,
227
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Enforcement::Status::TaggedSymbol
228
+ )
229
+ ENFORCING =
230
+ T.let(
231
+ :enforcing,
232
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Enforcement::Status::TaggedSymbol
233
+ )
234
+ end
235
+ end
236
+
237
+ # The time interval for evaluating spend against the threshold. Currently, only
238
+ # `month` is supported.
239
+ module Interval
240
+ extend OpenAI::Internal::Type::Union
241
+
242
+ Variants =
243
+ T.type_alias do
244
+ T.any(
245
+ String,
246
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Interval::TaggedSymbol
247
+ )
248
+ end
249
+
250
+ sig do
251
+ override.returns(
252
+ T::Array[
253
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Interval::Variants
254
+ ]
255
+ )
256
+ end
257
+ def self.variants
258
+ end
259
+
260
+ TaggedSymbol =
261
+ T.type_alias do
262
+ T.all(
263
+ Symbol,
264
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Interval
265
+ )
266
+ end
267
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
268
+
269
+ MONTH =
270
+ T.let(
271
+ :month,
272
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimit::Interval::TaggedSymbol
273
+ )
274
+ end
275
+ end
276
+ end
277
+ end
278
+ end
279
+ end
280
+ end
@@ -0,0 +1,49 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Admin
6
+ module Organization
7
+ ProjectSpendLimitDeleted = Projects::ProjectSpendLimitDeleted
8
+
9
+ module Projects
10
+ class ProjectSpendLimitDeleted < OpenAI::Internal::Type::BaseModel
11
+ OrHash =
12
+ T.type_alias do
13
+ T.any(
14
+ OpenAI::Admin::Organization::Projects::ProjectSpendLimitDeleted,
15
+ OpenAI::Internal::AnyHash
16
+ )
17
+ end
18
+
19
+ # Whether the hard spend limit was deleted.
20
+ sig { returns(T::Boolean) }
21
+ attr_accessor :deleted
22
+
23
+ # The object type, which is always `project.spend_limit.deleted`.
24
+ sig { returns(Symbol) }
25
+ attr_accessor :object
26
+
27
+ # Confirmation payload returned after deleting a project hard spend limit.
28
+ sig do
29
+ params(deleted: T::Boolean, object: Symbol).returns(
30
+ T.attached_class
31
+ )
32
+ end
33
+ def self.new(
34
+ # Whether the hard spend limit was deleted.
35
+ deleted:,
36
+ # The object type, which is always `project.spend_limit.deleted`.
37
+ object: :"project.spend_limit.deleted"
38
+ )
39
+ end
40
+
41
+ sig { override.returns({ deleted: T::Boolean, object: Symbol }) }
42
+ def to_hash
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end