daytona_api_client 0.203.0 → 0.205.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 (39) hide show
  1. checksums.yaml +4 -4
  2. data/.openapi-generator/FILES +13 -0
  3. data/lib/daytona_api_client/api/admin_api.rb +3 -0
  4. data/lib/daytona_api_client/api/audit_api.rb +57 -0
  5. data/lib/daytona_api_client/api/organizations_api.rb +485 -0
  6. data/lib/daytona_api_client/api/runners_api.rb +58 -0
  7. data/lib/daytona_api_client/api/sandbox_api.rb +2 -0
  8. data/lib/daytona_api_client/api/snapshots_api.rb +3 -0
  9. data/lib/daytona_api_client/api/users_api.rb +173 -0
  10. data/lib/daytona_api_client/models/audit_scenarios.rb +167 -0
  11. data/lib/daytona_api_client/models/audit_target_scenario.rb +208 -0
  12. data/lib/daytona_api_client/models/create_identity_provider.rb +269 -0
  13. data/lib/daytona_api_client/models/create_organization_region_quota.rb +16 -5
  14. data/lib/daytona_api_client/models/create_region.rb +16 -5
  15. data/lib/daytona_api_client/models/create_sandbox.rb +34 -2
  16. data/lib/daytona_api_client/models/create_user.rb +26 -21
  17. data/lib/daytona_api_client/models/daytona_configuration.rb +33 -1
  18. data/lib/daytona_api_client/models/identity_provider.rb +439 -0
  19. data/lib/daytona_api_client/models/oidc_id_p_config.rb +229 -0
  20. data/lib/daytona_api_client/models/oidc_id_p_config_response.rb +202 -0
  21. data/lib/daytona_api_client/models/organization.rb +28 -1
  22. data/lib/daytona_api_client/models/organization_sso_enabled.rb +165 -0
  23. data/lib/daytona_api_client/models/pending_sso_link.rb +283 -0
  24. data/lib/daytona_api_client/models/region.rb +16 -5
  25. data/lib/daytona_api_client/models/region_quota.rb +18 -5
  26. data/lib/daytona_api_client/models/sandbox.rb +43 -1
  27. data/lib/daytona_api_client/models/sandbox_list_item.rb +70 -1
  28. data/lib/daytona_api_client/models/snapshot_dto.rb +14 -1
  29. data/lib/daytona_api_client/models/sso_oidc_config.rb +192 -0
  30. data/lib/daytona_api_client/models/test_identity_provider_connection.rb +165 -0
  31. data/lib/daytona_api_client/models/test_identity_provider_connection_response.rb +185 -0
  32. data/lib/daytona_api_client/models/update_identity_provider.rb +212 -0
  33. data/lib/daytona_api_client/models/update_oidc_id_p_config.rb +178 -0
  34. data/lib/daytona_api_client/models/update_organization_region_quota.rb +16 -5
  35. data/lib/daytona_api_client/models/update_region.rb +16 -5
  36. data/lib/daytona_api_client/models/user.rb +38 -1
  37. data/lib/daytona_api_client/version.rb +1 -1
  38. data/lib/daytona_api_client.rb +13 -0
  39. metadata +16 -3
@@ -0,0 +1,283 @@
1
+ =begin
2
+ #Daytona
3
+
4
+ #Daytona AI platform API Docs
5
+
6
+ The version of the OpenAPI document: 1.0
7
+ Contact: support@daytona.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.21.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module DaytonaApiClient
17
+ class PendingSsoLink < ApiModelBase
18
+ attr_accessor :id
19
+
20
+ # Display name of the identity provider requesting to be linked
21
+ attr_accessor :idp_name
22
+
23
+ # Organization that configured the identity provider
24
+ attr_accessor :organization_id
25
+
26
+ # Email asserted by the identity provider
27
+ attr_accessor :provider_email
28
+
29
+ attr_accessor :created_at
30
+
31
+ attr_accessor :expires_at
32
+
33
+ # Attribute mapping from ruby-style variable name to JSON key.
34
+ def self.attribute_map
35
+ {
36
+ :'id' => :'id',
37
+ :'idp_name' => :'idpName',
38
+ :'organization_id' => :'organizationId',
39
+ :'provider_email' => :'providerEmail',
40
+ :'created_at' => :'createdAt',
41
+ :'expires_at' => :'expiresAt'
42
+ }
43
+ end
44
+
45
+ # Returns attribute mapping this model knows about
46
+ def self.acceptable_attribute_map
47
+ attribute_map
48
+ end
49
+
50
+ # Returns all the JSON keys this model knows about
51
+ def self.acceptable_attributes
52
+ acceptable_attribute_map.values
53
+ end
54
+
55
+ # Attribute type mapping.
56
+ def self.openapi_types
57
+ {
58
+ :'id' => :'String',
59
+ :'idp_name' => :'String',
60
+ :'organization_id' => :'String',
61
+ :'provider_email' => :'String',
62
+ :'created_at' => :'String',
63
+ :'expires_at' => :'String'
64
+ }
65
+ end
66
+
67
+ # List of attributes with nullable: true
68
+ def self.openapi_nullable
69
+ Set.new([
70
+ :'provider_email',
71
+ ])
72
+ end
73
+
74
+ # Initializes the object
75
+ # @param [Hash] attributes Model attributes in the form of hash
76
+ def initialize(attributes = {})
77
+ if (!attributes.is_a?(Hash))
78
+ fail ArgumentError, "The input argument (attributes) must be a hash in `DaytonaApiClient::PendingSsoLink` initialize method"
79
+ end
80
+
81
+ # check to see if the attribute exists and convert string to symbol for hash key
82
+ acceptable_attribute_map = self.class.acceptable_attribute_map
83
+ attributes = attributes.each_with_object({}) { |(k, v), h|
84
+ if (!acceptable_attribute_map.key?(k.to_sym))
85
+ fail ArgumentError, "`#{k}` is not a valid attribute in `DaytonaApiClient::PendingSsoLink`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
86
+ end
87
+ h[k.to_sym] = v
88
+ }
89
+
90
+ if attributes.key?(:'id')
91
+ self.id = attributes[:'id']
92
+ else
93
+ self.id = nil
94
+ end
95
+
96
+ if attributes.key?(:'idp_name')
97
+ self.idp_name = attributes[:'idp_name']
98
+ else
99
+ self.idp_name = nil
100
+ end
101
+
102
+ if attributes.key?(:'organization_id')
103
+ self.organization_id = attributes[:'organization_id']
104
+ else
105
+ self.organization_id = nil
106
+ end
107
+
108
+ if attributes.key?(:'provider_email')
109
+ self.provider_email = attributes[:'provider_email']
110
+ else
111
+ self.provider_email = nil
112
+ end
113
+
114
+ if attributes.key?(:'created_at')
115
+ self.created_at = attributes[:'created_at']
116
+ else
117
+ self.created_at = nil
118
+ end
119
+
120
+ if attributes.key?(:'expires_at')
121
+ self.expires_at = attributes[:'expires_at']
122
+ else
123
+ self.expires_at = nil
124
+ end
125
+ end
126
+
127
+ # Show invalid properties with the reasons. Usually used together with valid?
128
+ # @return Array for valid properties with the reasons
129
+ def list_invalid_properties
130
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
131
+ invalid_properties = Array.new
132
+ if @id.nil?
133
+ invalid_properties.push('invalid value for "id", id cannot be nil.')
134
+ end
135
+
136
+ if @idp_name.nil?
137
+ invalid_properties.push('invalid value for "idp_name", idp_name cannot be nil.')
138
+ end
139
+
140
+ if @organization_id.nil?
141
+ invalid_properties.push('invalid value for "organization_id", organization_id cannot be nil.')
142
+ end
143
+
144
+ if @created_at.nil?
145
+ invalid_properties.push('invalid value for "created_at", created_at cannot be nil.')
146
+ end
147
+
148
+ if @expires_at.nil?
149
+ invalid_properties.push('invalid value for "expires_at", expires_at cannot be nil.')
150
+ end
151
+
152
+ invalid_properties
153
+ end
154
+
155
+ # Check to see if the all the properties in the model are valid
156
+ # @return true if the model is valid
157
+ def valid?
158
+ warn '[DEPRECATED] the `valid?` method is obsolete'
159
+ return false if @id.nil?
160
+ return false if @idp_name.nil?
161
+ return false if @organization_id.nil?
162
+ return false if @created_at.nil?
163
+ return false if @expires_at.nil?
164
+ true
165
+ end
166
+
167
+ # Custom attribute writer method with validation
168
+ # @param [Object] id Value to be assigned
169
+ def id=(id)
170
+ if id.nil?
171
+ fail ArgumentError, 'id cannot be nil'
172
+ end
173
+
174
+ @id = id
175
+ end
176
+
177
+ # Custom attribute writer method with validation
178
+ # @param [Object] idp_name Value to be assigned
179
+ def idp_name=(idp_name)
180
+ if idp_name.nil?
181
+ fail ArgumentError, 'idp_name cannot be nil'
182
+ end
183
+
184
+ @idp_name = idp_name
185
+ end
186
+
187
+ # Custom attribute writer method with validation
188
+ # @param [Object] organization_id Value to be assigned
189
+ def organization_id=(organization_id)
190
+ if organization_id.nil?
191
+ fail ArgumentError, 'organization_id cannot be nil'
192
+ end
193
+
194
+ @organization_id = organization_id
195
+ end
196
+
197
+ # Custom attribute writer method with validation
198
+ # @param [Object] created_at Value to be assigned
199
+ def created_at=(created_at)
200
+ if created_at.nil?
201
+ fail ArgumentError, 'created_at cannot be nil'
202
+ end
203
+
204
+ @created_at = created_at
205
+ end
206
+
207
+ # Custom attribute writer method with validation
208
+ # @param [Object] expires_at Value to be assigned
209
+ def expires_at=(expires_at)
210
+ if expires_at.nil?
211
+ fail ArgumentError, 'expires_at cannot be nil'
212
+ end
213
+
214
+ @expires_at = expires_at
215
+ end
216
+
217
+ # Checks equality by comparing each attribute.
218
+ # @param [Object] Object to be compared
219
+ def ==(o)
220
+ return true if self.equal?(o)
221
+ self.class == o.class &&
222
+ id == o.id &&
223
+ idp_name == o.idp_name &&
224
+ organization_id == o.organization_id &&
225
+ provider_email == o.provider_email &&
226
+ created_at == o.created_at &&
227
+ expires_at == o.expires_at
228
+ end
229
+
230
+ # @see the `==` method
231
+ # @param [Object] Object to be compared
232
+ def eql?(o)
233
+ self == o
234
+ end
235
+
236
+ # Calculates hash code according to all attributes.
237
+ # @return [Integer] Hash code
238
+ def hash
239
+ [id, idp_name, organization_id, provider_email, created_at, expires_at].hash
240
+ end
241
+
242
+ # Builds the object from hash
243
+ # @param [Hash] attributes Model attributes in the form of hash
244
+ # @return [Object] Returns the model itself
245
+ def self.build_from_hash(attributes)
246
+ return nil unless attributes.is_a?(Hash)
247
+ attributes = attributes.transform_keys(&:to_sym)
248
+ transformed_hash = {}
249
+ openapi_types.each_pair do |key, type|
250
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
251
+ transformed_hash["#{key}"] = nil
252
+ elsif type =~ /\AArray<(.*)>/i
253
+ # check to ensure the input is an array given that the attribute
254
+ # is documented as an array but the input is not
255
+ if attributes[attribute_map[key]].is_a?(Array)
256
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
257
+ end
258
+ elsif !attributes[attribute_map[key]].nil?
259
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
260
+ end
261
+ end
262
+ new(transformed_hash)
263
+ end
264
+
265
+ # Returns the object in the form of hash
266
+ # @return [Hash] Returns the object in the form of hash
267
+ def to_hash
268
+ hash = {}
269
+ self.class.attribute_map.each_pair do |attr, param|
270
+ value = self.send(attr)
271
+ if value.nil?
272
+ is_nullable = self.class.openapi_nullable.include?(attr)
273
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
274
+ end
275
+
276
+ hash[param] = _to_hash(value)
277
+ end
278
+ hash
279
+ end
280
+
281
+ end
282
+
283
+ end
@@ -42,6 +42,9 @@ module DaytonaApiClient
42
42
  # Snapshot Manager URL for the region
43
43
  attr_accessor :snapshot_manager_url
44
44
 
45
+ # OTel collector endpoint for sandboxes created in this region. When set, sandbox OTel data is sent to this endpoint instead of the Daytona-hosted collector and will not be available in the Daytona analytics API or dashboard.
46
+ attr_accessor :otel_endpoint
47
+
45
48
  class EnumAttributeValidator
46
49
  attr_reader :datatype
47
50
  attr_reader :allowable_values
@@ -75,7 +78,8 @@ module DaytonaApiClient
75
78
  :'updated_at' => :'updatedAt',
76
79
  :'proxy_url' => :'proxyUrl',
77
80
  :'ssh_gateway_url' => :'sshGatewayUrl',
78
- :'snapshot_manager_url' => :'snapshotManagerUrl'
81
+ :'snapshot_manager_url' => :'snapshotManagerUrl',
82
+ :'otel_endpoint' => :'otelEndpoint'
79
83
  }
80
84
  end
81
85
 
@@ -100,7 +104,8 @@ module DaytonaApiClient
100
104
  :'updated_at' => :'String',
101
105
  :'proxy_url' => :'String',
102
106
  :'ssh_gateway_url' => :'String',
103
- :'snapshot_manager_url' => :'String'
107
+ :'snapshot_manager_url' => :'String',
108
+ :'otel_endpoint' => :'String'
104
109
  }
105
110
  end
106
111
 
@@ -110,7 +115,8 @@ module DaytonaApiClient
110
115
  :'organization_id',
111
116
  :'proxy_url',
112
117
  :'ssh_gateway_url',
113
- :'snapshot_manager_url'
118
+ :'snapshot_manager_url',
119
+ :'otel_endpoint'
114
120
  ])
115
121
  end
116
122
 
@@ -175,6 +181,10 @@ module DaytonaApiClient
175
181
  if attributes.key?(:'snapshot_manager_url')
176
182
  self.snapshot_manager_url = attributes[:'snapshot_manager_url']
177
183
  end
184
+
185
+ if attributes.key?(:'otel_endpoint')
186
+ self.otel_endpoint = attributes[:'otel_endpoint']
187
+ end
178
188
  end
179
189
 
180
190
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -280,7 +290,8 @@ module DaytonaApiClient
280
290
  updated_at == o.updated_at &&
281
291
  proxy_url == o.proxy_url &&
282
292
  ssh_gateway_url == o.ssh_gateway_url &&
283
- snapshot_manager_url == o.snapshot_manager_url
293
+ snapshot_manager_url == o.snapshot_manager_url &&
294
+ otel_endpoint == o.otel_endpoint
284
295
  end
285
296
 
286
297
  # @see the `==` method
@@ -292,7 +303,7 @@ module DaytonaApiClient
292
303
  # Calculates hash code according to all attributes.
293
304
  # @return [Integer] Hash code
294
305
  def hash
295
- [id, name, organization_id, region_type, created_at, updated_at, proxy_url, ssh_gateway_url, snapshot_manager_url].hash
306
+ [id, name, organization_id, region_type, created_at, updated_at, proxy_url, ssh_gateway_url, snapshot_manager_url, otel_endpoint].hash
296
307
  end
297
308
 
298
309
  # Builds the object from hash
@@ -48,6 +48,9 @@ module DaytonaApiClient
48
48
  # Disk maximum per requested GPU unit for GPU sandboxes.
49
49
  attr_accessor :max_disk_per_gpu
50
50
 
51
+ # Maximum sandbox lifespan in minutes, measured from sandbox creation to its auto-destroy deadline. If null or 0, lifespan is unrestricted. When set, sandboxes created without a TTL default to this lifespan and TTL cannot be disabled.
52
+ attr_accessor :max_sandbox_lifespan
53
+
51
54
  class EnumAttributeValidator
52
55
  attr_reader :datatype
53
56
  attr_reader :allowable_values
@@ -87,7 +90,8 @@ module DaytonaApiClient
87
90
  :'max_disk_per_non_ephemeral_sandbox' => :'maxDiskPerNonEphemeralSandbox',
88
91
  :'max_cpu_per_gpu' => :'maxCpuPerGpu',
89
92
  :'max_memory_per_gpu' => :'maxMemoryPerGpu',
90
- :'max_disk_per_gpu' => :'maxDiskPerGpu'
93
+ :'max_disk_per_gpu' => :'maxDiskPerGpu',
94
+ :'max_sandbox_lifespan' => :'maxSandboxLifespan'
91
95
  }
92
96
  end
93
97
 
@@ -118,7 +122,8 @@ module DaytonaApiClient
118
122
  :'max_disk_per_non_ephemeral_sandbox' => :'Float',
119
123
  :'max_cpu_per_gpu' => :'Float',
120
124
  :'max_memory_per_gpu' => :'Float',
121
- :'max_disk_per_gpu' => :'Float'
125
+ :'max_disk_per_gpu' => :'Float',
126
+ :'max_sandbox_lifespan' => :'Float'
122
127
  }
123
128
  end
124
129
 
@@ -131,7 +136,8 @@ module DaytonaApiClient
131
136
  :'max_disk_per_non_ephemeral_sandbox',
132
137
  :'max_cpu_per_gpu',
133
138
  :'max_memory_per_gpu',
134
- :'max_disk_per_gpu'
139
+ :'max_disk_per_gpu',
140
+ :'max_sandbox_lifespan'
135
141
  ])
136
142
  end
137
143
 
@@ -240,6 +246,12 @@ module DaytonaApiClient
240
246
  else
241
247
  self.max_disk_per_gpu = nil
242
248
  end
249
+
250
+ if attributes.key?(:'max_sandbox_lifespan')
251
+ self.max_sandbox_lifespan = attributes[:'max_sandbox_lifespan']
252
+ else
253
+ self.max_sandbox_lifespan = nil
254
+ end
243
255
  end
244
256
 
245
257
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -381,7 +393,8 @@ module DaytonaApiClient
381
393
  max_disk_per_non_ephemeral_sandbox == o.max_disk_per_non_ephemeral_sandbox &&
382
394
  max_cpu_per_gpu == o.max_cpu_per_gpu &&
383
395
  max_memory_per_gpu == o.max_memory_per_gpu &&
384
- max_disk_per_gpu == o.max_disk_per_gpu
396
+ max_disk_per_gpu == o.max_disk_per_gpu &&
397
+ max_sandbox_lifespan == o.max_sandbox_lifespan
385
398
  end
386
399
 
387
400
  # @see the `==` method
@@ -393,7 +406,7 @@ module DaytonaApiClient
393
406
  # Calculates hash code according to all attributes.
394
407
  # @return [Integer] Hash code
395
408
  def hash
396
- [organization_id, region_id, sandbox_class, total_cpu_quota, total_memory_quota, total_disk_quota, total_gpu_quota, allowed_gpu_types, max_cpu_per_sandbox, max_memory_per_sandbox, max_disk_per_sandbox, max_disk_per_non_ephemeral_sandbox, max_cpu_per_gpu, max_memory_per_gpu, max_disk_per_gpu].hash
409
+ [organization_id, region_id, sandbox_class, total_cpu_quota, total_memory_quota, total_disk_quota, total_gpu_quota, allowed_gpu_types, max_cpu_per_sandbox, max_memory_per_sandbox, max_disk_per_sandbox, max_disk_per_non_ephemeral_sandbox, max_cpu_per_gpu, max_memory_per_gpu, max_disk_per_gpu, max_sandbox_lifespan].hash
397
410
  end
398
411
 
399
412
  # Builds the object from hash
@@ -48,6 +48,12 @@ module DaytonaApiClient
48
48
  # Comma-separated list of allowed domains for the sandbox
49
49
  attr_accessor :domain_allow_list
50
50
 
51
+ # Outbound proxy URL the sandbox HTTP(S) traffic is routed through. Applied via the HTTP(S)_PROXY environment variables (convenience routing); network-layer enforcement applies only when the sandbox also has a domainAllowList. Only returned on single-sandbox reads — never on list responses.
52
+ attr_accessor :outbound_proxy_url
53
+
54
+ # OTel collector endpoint override for this sandbox. When set, sandbox OTel data is sent to this endpoint instead of the default collector and is not available in the Daytona analytics API or dashboard. Only returned on single-sandbox reads — never on list responses.
55
+ attr_accessor :otel_endpoint_override
56
+
51
57
  # The target environment for the sandbox
52
58
  attr_accessor :target
53
59
 
@@ -57,6 +63,12 @@ module DaytonaApiClient
57
63
  # The GPU quota for the sandbox
58
64
  attr_accessor :gpu
59
65
 
66
+ # Whether this is a spot GPU sandbox. Spot sandboxes may be instantly terminated to free capacity for on-demand GPU sandboxes. Absent on APIs that predate this field; treat as false.
67
+ attr_accessor :spot
68
+
69
+ # When this sandbox was destroyed by spot preemption. Set only for spot-evicted sandboxes, which stay retrievable by ID for 24 hours after eviction.
70
+ attr_accessor :spot_evicted_at
71
+
60
72
  # The GPU type assigned to the sandbox
61
73
  attr_accessor :gpu_type
62
74
 
@@ -168,9 +180,13 @@ module DaytonaApiClient
168
180
  :'network_block_all' => :'networkBlockAll',
169
181
  :'network_allow_list' => :'networkAllowList',
170
182
  :'domain_allow_list' => :'domainAllowList',
183
+ :'outbound_proxy_url' => :'outboundProxyUrl',
184
+ :'otel_endpoint_override' => :'otelEndpointOverride',
171
185
  :'target' => :'target',
172
186
  :'cpu' => :'cpu',
173
187
  :'gpu' => :'gpu',
188
+ :'spot' => :'spot',
189
+ :'spot_evicted_at' => :'spotEvictedAt',
174
190
  :'gpu_type' => :'gpuType',
175
191
  :'memory' => :'memory',
176
192
  :'disk' => :'disk',
@@ -223,9 +239,13 @@ module DaytonaApiClient
223
239
  :'network_block_all' => :'Boolean',
224
240
  :'network_allow_list' => :'String',
225
241
  :'domain_allow_list' => :'String',
242
+ :'outbound_proxy_url' => :'String',
243
+ :'otel_endpoint_override' => :'String',
226
244
  :'target' => :'String',
227
245
  :'cpu' => :'Float',
228
246
  :'gpu' => :'Float',
247
+ :'spot' => :'Boolean',
248
+ :'spot_evicted_at' => :'String',
229
249
  :'gpu_type' => :'GpuType',
230
250
  :'memory' => :'Float',
231
251
  :'disk' => :'Float',
@@ -340,6 +360,14 @@ module DaytonaApiClient
340
360
  self.domain_allow_list = attributes[:'domain_allow_list']
341
361
  end
342
362
 
363
+ if attributes.key?(:'outbound_proxy_url')
364
+ self.outbound_proxy_url = attributes[:'outbound_proxy_url']
365
+ end
366
+
367
+ if attributes.key?(:'otel_endpoint_override')
368
+ self.otel_endpoint_override = attributes[:'otel_endpoint_override']
369
+ end
370
+
343
371
  if attributes.key?(:'target')
344
372
  self.target = attributes[:'target']
345
373
  else
@@ -358,6 +386,16 @@ module DaytonaApiClient
358
386
  self.gpu = nil
359
387
  end
360
388
 
389
+ if attributes.key?(:'spot')
390
+ self.spot = attributes[:'spot']
391
+ else
392
+ self.spot = false
393
+ end
394
+
395
+ if attributes.key?(:'spot_evicted_at')
396
+ self.spot_evicted_at = attributes[:'spot_evicted_at']
397
+ end
398
+
361
399
  if attributes.key?(:'gpu_type')
362
400
  self.gpu_type = attributes[:'gpu_type']
363
401
  end
@@ -732,9 +770,13 @@ module DaytonaApiClient
732
770
  network_block_all == o.network_block_all &&
733
771
  network_allow_list == o.network_allow_list &&
734
772
  domain_allow_list == o.domain_allow_list &&
773
+ outbound_proxy_url == o.outbound_proxy_url &&
774
+ otel_endpoint_override == o.otel_endpoint_override &&
735
775
  target == o.target &&
736
776
  cpu == o.cpu &&
737
777
  gpu == o.gpu &&
778
+ spot == o.spot &&
779
+ spot_evicted_at == o.spot_evicted_at &&
738
780
  gpu_type == o.gpu_type &&
739
781
  memory == o.memory &&
740
782
  disk == o.disk &&
@@ -771,7 +813,7 @@ module DaytonaApiClient
771
813
  # Calculates hash code according to all attributes.
772
814
  # @return [Integer] Hash code
773
815
  def hash
774
- [id, organization_id, name, snapshot, user, env, labels, public, network_block_all, network_allow_list, domain_allow_list, target, cpu, gpu, gpu_type, memory, disk, state, desired_state, error_reason, recoverable, warm_pool_id, backup_state, backup_created_at, auto_stop_interval, auto_pause_interval, auto_archive_interval, auto_delete_interval, auto_destroy_at, volumes, build_info, created_at, updated_at, last_activity_at, sandbox_class, daemon_version, runner_id, linked_sandbox_id, toolbox_proxy_url].hash
816
+ [id, organization_id, name, snapshot, user, env, labels, public, network_block_all, network_allow_list, domain_allow_list, outbound_proxy_url, otel_endpoint_override, target, cpu, gpu, spot, spot_evicted_at, gpu_type, memory, disk, state, desired_state, error_reason, recoverable, warm_pool_id, backup_state, backup_created_at, auto_stop_interval, auto_pause_interval, auto_archive_interval, auto_delete_interval, auto_destroy_at, volumes, build_info, created_at, updated_at, last_activity_at, sandbox_class, daemon_version, runner_id, linked_sandbox_id, toolbox_proxy_url].hash
775
817
  end
776
818
 
777
819
  # Builds the object from hash
@@ -54,12 +54,27 @@ module DaytonaApiClient
54
54
  # Whether the sandbox http preview is public
55
55
  attr_accessor :public
56
56
 
57
+ # Whether to block all network access for the sandbox
58
+ attr_accessor :network_block_all
59
+
60
+ # Comma-separated list of allowed CIDR network addresses for the sandbox
61
+ attr_accessor :network_allow_list
62
+
63
+ # Comma-separated list of allowed domains for the sandbox
64
+ attr_accessor :domain_allow_list
65
+
57
66
  # The CPU quota for the sandbox
58
67
  attr_accessor :cpu
59
68
 
60
69
  # The GPU quota for the sandbox
61
70
  attr_accessor :gpu
62
71
 
72
+ # Whether this is a spot GPU sandbox. Spot sandboxes may be instantly terminated to free capacity for on-demand GPU sandboxes. Absent on APIs that predate this field; treat as false.
73
+ attr_accessor :spot
74
+
75
+ # When this sandbox was evicted by spot preemption. Set as soon as the sandbox is marked for eviction, so it is already present while the sandbox is still winding down.
76
+ attr_accessor :spot_evicted_at
77
+
63
78
  # The GPU type assigned to the sandbox
64
79
  attr_accessor :gpu_type
65
80
 
@@ -146,8 +161,13 @@ module DaytonaApiClient
146
161
  :'error_reason' => :'errorReason',
147
162
  :'recoverable' => :'recoverable',
148
163
  :'public' => :'public',
164
+ :'network_block_all' => :'networkBlockAll',
165
+ :'network_allow_list' => :'networkAllowList',
166
+ :'domain_allow_list' => :'domainAllowList',
149
167
  :'cpu' => :'cpu',
150
168
  :'gpu' => :'gpu',
169
+ :'spot' => :'spot',
170
+ :'spot_evicted_at' => :'spotEvictedAt',
151
171
  :'gpu_type' => :'gpuType',
152
172
  :'memory' => :'memory',
153
173
  :'disk' => :'disk',
@@ -193,8 +213,13 @@ module DaytonaApiClient
193
213
  :'error_reason' => :'String',
194
214
  :'recoverable' => :'Boolean',
195
215
  :'public' => :'Boolean',
216
+ :'network_block_all' => :'Boolean',
217
+ :'network_allow_list' => :'String',
218
+ :'domain_allow_list' => :'String',
196
219
  :'cpu' => :'Float',
197
220
  :'gpu' => :'Float',
221
+ :'spot' => :'Boolean',
222
+ :'spot_evicted_at' => :'String',
198
223
  :'gpu_type' => :'GpuType',
199
224
  :'memory' => :'Float',
200
225
  :'disk' => :'Float',
@@ -300,6 +325,20 @@ module DaytonaApiClient
300
325
  self.public = nil
301
326
  end
302
327
 
328
+ if attributes.key?(:'network_block_all')
329
+ self.network_block_all = attributes[:'network_block_all']
330
+ else
331
+ self.network_block_all = nil
332
+ end
333
+
334
+ if attributes.key?(:'network_allow_list')
335
+ self.network_allow_list = attributes[:'network_allow_list']
336
+ end
337
+
338
+ if attributes.key?(:'domain_allow_list')
339
+ self.domain_allow_list = attributes[:'domain_allow_list']
340
+ end
341
+
303
342
  if attributes.key?(:'cpu')
304
343
  self.cpu = attributes[:'cpu']
305
344
  else
@@ -312,6 +351,16 @@ module DaytonaApiClient
312
351
  self.gpu = nil
313
352
  end
314
353
 
354
+ if attributes.key?(:'spot')
355
+ self.spot = attributes[:'spot']
356
+ else
357
+ self.spot = false
358
+ end
359
+
360
+ if attributes.key?(:'spot_evicted_at')
361
+ self.spot_evicted_at = attributes[:'spot_evicted_at']
362
+ end
363
+
315
364
  if attributes.key?(:'gpu_type')
316
365
  self.gpu_type = attributes[:'gpu_type']
317
366
  end
@@ -416,6 +465,10 @@ module DaytonaApiClient
416
465
  invalid_properties.push('invalid value for "public", public cannot be nil.')
417
466
  end
418
467
 
468
+ if @network_block_all.nil?
469
+ invalid_properties.push('invalid value for "network_block_all", network_block_all cannot be nil.')
470
+ end
471
+
419
472
  if @cpu.nil?
420
473
  invalid_properties.push('invalid value for "cpu", cpu cannot be nil.')
421
474
  end
@@ -453,6 +506,7 @@ module DaytonaApiClient
453
506
  return false if @target.nil?
454
507
  return false if @user.nil?
455
508
  return false if @public.nil?
509
+ return false if @network_block_all.nil?
456
510
  return false if @cpu.nil?
457
511
  return false if @gpu.nil?
458
512
  return false if @memory.nil?
@@ -524,6 +578,16 @@ module DaytonaApiClient
524
578
  @public = public
525
579
  end
526
580
 
581
+ # Custom attribute writer method with validation
582
+ # @param [Object] network_block_all Value to be assigned
583
+ def network_block_all=(network_block_all)
584
+ if network_block_all.nil?
585
+ fail ArgumentError, 'network_block_all cannot be nil'
586
+ end
587
+
588
+ @network_block_all = network_block_all
589
+ end
590
+
527
591
  # Custom attribute writer method with validation
528
592
  # @param [Object] cpu Value to be assigned
529
593
  def cpu=(cpu)
@@ -612,8 +676,13 @@ module DaytonaApiClient
612
676
  error_reason == o.error_reason &&
613
677
  recoverable == o.recoverable &&
614
678
  public == o.public &&
679
+ network_block_all == o.network_block_all &&
680
+ network_allow_list == o.network_allow_list &&
681
+ domain_allow_list == o.domain_allow_list &&
615
682
  cpu == o.cpu &&
616
683
  gpu == o.gpu &&
684
+ spot == o.spot &&
685
+ spot_evicted_at == o.spot_evicted_at &&
617
686
  gpu_type == o.gpu_type &&
618
687
  memory == o.memory &&
619
688
  disk == o.disk &&
@@ -641,7 +710,7 @@ module DaytonaApiClient
641
710
  # Calculates hash code according to all attributes.
642
711
  # @return [Integer] Hash code
643
712
  def hash
644
- [id, organization_id, name, target, runner_id, sandbox_class, state, desired_state, snapshot, user, error_reason, recoverable, public, cpu, gpu, gpu_type, memory, disk, labels, backup_state, auto_stop_interval, auto_pause_interval, auto_archive_interval, auto_delete_interval, auto_destroy_at, created_at, updated_at, last_activity_at, daemon_version, warm_pool_id, toolbox_proxy_url].hash
713
+ [id, organization_id, name, target, runner_id, sandbox_class, state, desired_state, snapshot, user, error_reason, recoverable, public, network_block_all, network_allow_list, domain_allow_list, cpu, gpu, spot, spot_evicted_at, gpu_type, memory, disk, labels, backup_state, auto_stop_interval, auto_pause_interval, auto_archive_interval, auto_delete_interval, auto_destroy_at, created_at, updated_at, last_activity_at, daemon_version, warm_pool_id, toolbox_proxy_url].hash
645
714
  end
646
715
 
647
716
  # Builds the object from hash