daytona_api_client 0.203.0 → 0.204.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 (35) 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/snapshots_api.rb +3 -0
  8. data/lib/daytona_api_client/api/users_api.rb +173 -0
  9. data/lib/daytona_api_client/models/audit_scenarios.rb +167 -0
  10. data/lib/daytona_api_client/models/audit_target_scenario.rb +208 -0
  11. data/lib/daytona_api_client/models/create_identity_provider.rb +269 -0
  12. data/lib/daytona_api_client/models/create_organization_region_quota.rb +16 -5
  13. data/lib/daytona_api_client/models/create_sandbox.rb +12 -2
  14. data/lib/daytona_api_client/models/create_user.rb +26 -21
  15. data/lib/daytona_api_client/models/daytona_configuration.rb +33 -1
  16. data/lib/daytona_api_client/models/identity_provider.rb +439 -0
  17. data/lib/daytona_api_client/models/oidc_id_p_config.rb +229 -0
  18. data/lib/daytona_api_client/models/oidc_id_p_config_response.rb +202 -0
  19. data/lib/daytona_api_client/models/organization.rb +28 -1
  20. data/lib/daytona_api_client/models/organization_sso_enabled.rb +165 -0
  21. data/lib/daytona_api_client/models/pending_sso_link.rb +283 -0
  22. data/lib/daytona_api_client/models/region_quota.rb +18 -5
  23. data/lib/daytona_api_client/models/sandbox.rb +11 -1
  24. data/lib/daytona_api_client/models/sandbox_list_item.rb +48 -1
  25. data/lib/daytona_api_client/models/snapshot_dto.rb +14 -1
  26. data/lib/daytona_api_client/models/sso_oidc_config.rb +192 -0
  27. data/lib/daytona_api_client/models/test_identity_provider_connection.rb +165 -0
  28. data/lib/daytona_api_client/models/test_identity_provider_connection_response.rb +185 -0
  29. data/lib/daytona_api_client/models/update_identity_provider.rb +212 -0
  30. data/lib/daytona_api_client/models/update_oidc_id_p_config.rb +178 -0
  31. data/lib/daytona_api_client/models/update_organization_region_quota.rb +16 -5
  32. data/lib/daytona_api_client/models/user.rb +28 -1
  33. data/lib/daytona_api_client/version.rb +1 -1
  34. data/lib/daytona_api_client.rb +13 -0
  35. metadata +14 -1
@@ -0,0 +1,269 @@
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 CreateIdentityProvider < ApiModelBase
18
+ # Display name for the identity provider
19
+ attr_accessor :name
20
+
21
+ # OIDC configuration
22
+ attr_accessor :oidc_config
23
+
24
+ # Email domains used for IdP discovery on the login form and to validate the user identity returned by the IdP. Required and must be non-empty unless `allowAnyDomain` is true.
25
+ attr_accessor :email_domains
26
+
27
+ # When true, the IdP accepts any email domain returned by the external provider. Disables the post-callback domain check and allows `emailDomains` to be empty. Only enable for trusted IdPs that strictly control which users can authenticate.
28
+ attr_accessor :allow_any_domain
29
+
30
+ # When true, skip the `email_verified` claim check on SSO logins through this identity provider. Only intended for providers that never emit the claim (e.g. Microsoft Entra ID). Risky: only enable if the IdP strictly controls its users' email addresses.
31
+ attr_accessor :trust_email_verified
32
+
33
+ # Organization role IDs assigned to users who join the organization via SSO through this identity provider. Roles must be global or belong to this organization. Empty (default) grants the lowest access: membership with no resource permissions.
34
+ attr_accessor :default_assigned_role_ids
35
+
36
+ # Whether the identity provider is enabled
37
+ attr_accessor :enabled
38
+
39
+ # Attribute mapping from ruby-style variable name to JSON key.
40
+ def self.attribute_map
41
+ {
42
+ :'name' => :'name',
43
+ :'oidc_config' => :'oidcConfig',
44
+ :'email_domains' => :'emailDomains',
45
+ :'allow_any_domain' => :'allowAnyDomain',
46
+ :'trust_email_verified' => :'trustEmailVerified',
47
+ :'default_assigned_role_ids' => :'defaultAssignedRoleIds',
48
+ :'enabled' => :'enabled'
49
+ }
50
+ end
51
+
52
+ # Returns attribute mapping this model knows about
53
+ def self.acceptable_attribute_map
54
+ attribute_map
55
+ end
56
+
57
+ # Returns all the JSON keys this model knows about
58
+ def self.acceptable_attributes
59
+ acceptable_attribute_map.values
60
+ end
61
+
62
+ # Attribute type mapping.
63
+ def self.openapi_types
64
+ {
65
+ :'name' => :'String',
66
+ :'oidc_config' => :'OidcIdPConfig',
67
+ :'email_domains' => :'Array<String>',
68
+ :'allow_any_domain' => :'Boolean',
69
+ :'trust_email_verified' => :'Boolean',
70
+ :'default_assigned_role_ids' => :'Array<String>',
71
+ :'enabled' => :'Boolean'
72
+ }
73
+ end
74
+
75
+ # List of attributes with nullable: true
76
+ def self.openapi_nullable
77
+ Set.new([
78
+ ])
79
+ end
80
+
81
+ # Initializes the object
82
+ # @param [Hash] attributes Model attributes in the form of hash
83
+ def initialize(attributes = {})
84
+ if (!attributes.is_a?(Hash))
85
+ fail ArgumentError, "The input argument (attributes) must be a hash in `DaytonaApiClient::CreateIdentityProvider` initialize method"
86
+ end
87
+
88
+ # check to see if the attribute exists and convert string to symbol for hash key
89
+ acceptable_attribute_map = self.class.acceptable_attribute_map
90
+ attributes = attributes.each_with_object({}) { |(k, v), h|
91
+ if (!acceptable_attribute_map.key?(k.to_sym))
92
+ fail ArgumentError, "`#{k}` is not a valid attribute in `DaytonaApiClient::CreateIdentityProvider`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
93
+ end
94
+ h[k.to_sym] = v
95
+ }
96
+
97
+ if attributes.key?(:'name')
98
+ self.name = attributes[:'name']
99
+ else
100
+ self.name = nil
101
+ end
102
+
103
+ if attributes.key?(:'oidc_config')
104
+ self.oidc_config = attributes[:'oidc_config']
105
+ else
106
+ self.oidc_config = nil
107
+ end
108
+
109
+ if attributes.key?(:'email_domains')
110
+ if (value = attributes[:'email_domains']).is_a?(Array)
111
+ self.email_domains = value
112
+ end
113
+ else
114
+ self.email_domains = nil
115
+ end
116
+
117
+ if attributes.key?(:'allow_any_domain')
118
+ self.allow_any_domain = attributes[:'allow_any_domain']
119
+ else
120
+ self.allow_any_domain = false
121
+ end
122
+
123
+ if attributes.key?(:'trust_email_verified')
124
+ self.trust_email_verified = attributes[:'trust_email_verified']
125
+ else
126
+ self.trust_email_verified = false
127
+ end
128
+
129
+ if attributes.key?(:'default_assigned_role_ids')
130
+ if (value = attributes[:'default_assigned_role_ids']).is_a?(Array)
131
+ self.default_assigned_role_ids = value
132
+ end
133
+ end
134
+
135
+ if attributes.key?(:'enabled')
136
+ self.enabled = attributes[:'enabled']
137
+ else
138
+ self.enabled = true
139
+ end
140
+ end
141
+
142
+ # Show invalid properties with the reasons. Usually used together with valid?
143
+ # @return Array for valid properties with the reasons
144
+ def list_invalid_properties
145
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
146
+ invalid_properties = Array.new
147
+ if @name.nil?
148
+ invalid_properties.push('invalid value for "name", name cannot be nil.')
149
+ end
150
+
151
+ if @oidc_config.nil?
152
+ invalid_properties.push('invalid value for "oidc_config", oidc_config cannot be nil.')
153
+ end
154
+
155
+ if @email_domains.nil?
156
+ invalid_properties.push('invalid value for "email_domains", email_domains cannot be nil.')
157
+ end
158
+
159
+ invalid_properties
160
+ end
161
+
162
+ # Check to see if the all the properties in the model are valid
163
+ # @return true if the model is valid
164
+ def valid?
165
+ warn '[DEPRECATED] the `valid?` method is obsolete'
166
+ return false if @name.nil?
167
+ return false if @oidc_config.nil?
168
+ return false if @email_domains.nil?
169
+ true
170
+ end
171
+
172
+ # Custom attribute writer method with validation
173
+ # @param [Object] name Value to be assigned
174
+ def name=(name)
175
+ if name.nil?
176
+ fail ArgumentError, 'name cannot be nil'
177
+ end
178
+
179
+ @name = name
180
+ end
181
+
182
+ # Custom attribute writer method with validation
183
+ # @param [Object] oidc_config Value to be assigned
184
+ def oidc_config=(oidc_config)
185
+ if oidc_config.nil?
186
+ fail ArgumentError, 'oidc_config cannot be nil'
187
+ end
188
+
189
+ @oidc_config = oidc_config
190
+ end
191
+
192
+ # Custom attribute writer method with validation
193
+ # @param [Object] email_domains Value to be assigned
194
+ def email_domains=(email_domains)
195
+ if email_domains.nil?
196
+ fail ArgumentError, 'email_domains cannot be nil'
197
+ end
198
+
199
+ @email_domains = email_domains
200
+ end
201
+
202
+ # Checks equality by comparing each attribute.
203
+ # @param [Object] Object to be compared
204
+ def ==(o)
205
+ return true if self.equal?(o)
206
+ self.class == o.class &&
207
+ name == o.name &&
208
+ oidc_config == o.oidc_config &&
209
+ email_domains == o.email_domains &&
210
+ allow_any_domain == o.allow_any_domain &&
211
+ trust_email_verified == o.trust_email_verified &&
212
+ default_assigned_role_ids == o.default_assigned_role_ids &&
213
+ enabled == o.enabled
214
+ end
215
+
216
+ # @see the `==` method
217
+ # @param [Object] Object to be compared
218
+ def eql?(o)
219
+ self == o
220
+ end
221
+
222
+ # Calculates hash code according to all attributes.
223
+ # @return [Integer] Hash code
224
+ def hash
225
+ [name, oidc_config, email_domains, allow_any_domain, trust_email_verified, default_assigned_role_ids, enabled].hash
226
+ end
227
+
228
+ # Builds the object from hash
229
+ # @param [Hash] attributes Model attributes in the form of hash
230
+ # @return [Object] Returns the model itself
231
+ def self.build_from_hash(attributes)
232
+ return nil unless attributes.is_a?(Hash)
233
+ attributes = attributes.transform_keys(&:to_sym)
234
+ transformed_hash = {}
235
+ openapi_types.each_pair do |key, type|
236
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
237
+ transformed_hash["#{key}"] = nil
238
+ elsif type =~ /\AArray<(.*)>/i
239
+ # check to ensure the input is an array given that the attribute
240
+ # is documented as an array but the input is not
241
+ if attributes[attribute_map[key]].is_a?(Array)
242
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
243
+ end
244
+ elsif !attributes[attribute_map[key]].nil?
245
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
246
+ end
247
+ end
248
+ new(transformed_hash)
249
+ end
250
+
251
+ # Returns the object in the form of hash
252
+ # @return [Hash] Returns the object in the form of hash
253
+ def to_hash
254
+ hash = {}
255
+ self.class.attribute_map.each_pair do |attr, param|
256
+ value = self.send(attr)
257
+ if value.nil?
258
+ is_nullable = self.class.openapi_nullable.include?(attr)
259
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
260
+ end
261
+
262
+ hash[param] = _to_hash(value)
263
+ end
264
+ hash
265
+ end
266
+
267
+ end
268
+
269
+ end
@@ -44,6 +44,9 @@ module DaytonaApiClient
44
44
  # Disk maximum per requested GPU unit for GPU sandboxes.
45
45
  attr_accessor :max_disk_per_gpu
46
46
 
47
+ # 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.
48
+ attr_accessor :max_sandbox_lifespan
49
+
47
50
  class EnumAttributeValidator
48
51
  attr_reader :datatype
49
52
  attr_reader :allowable_values
@@ -81,7 +84,8 @@ module DaytonaApiClient
81
84
  :'max_disk_per_non_ephemeral_sandbox' => :'maxDiskPerNonEphemeralSandbox',
82
85
  :'max_cpu_per_gpu' => :'maxCpuPerGpu',
83
86
  :'max_memory_per_gpu' => :'maxMemoryPerGpu',
84
- :'max_disk_per_gpu' => :'maxDiskPerGpu'
87
+ :'max_disk_per_gpu' => :'maxDiskPerGpu',
88
+ :'max_sandbox_lifespan' => :'maxSandboxLifespan'
85
89
  }
86
90
  end
87
91
 
@@ -110,7 +114,8 @@ module DaytonaApiClient
110
114
  :'max_disk_per_non_ephemeral_sandbox' => :'Float',
111
115
  :'max_cpu_per_gpu' => :'Float',
112
116
  :'max_memory_per_gpu' => :'Float',
113
- :'max_disk_per_gpu' => :'Float'
117
+ :'max_disk_per_gpu' => :'Float',
118
+ :'max_sandbox_lifespan' => :'Float'
114
119
  }
115
120
  end
116
121
 
@@ -124,7 +129,8 @@ module DaytonaApiClient
124
129
  :'max_disk_per_non_ephemeral_sandbox',
125
130
  :'max_cpu_per_gpu',
126
131
  :'max_memory_per_gpu',
127
- :'max_disk_per_gpu'
132
+ :'max_disk_per_gpu',
133
+ :'max_sandbox_lifespan'
128
134
  ])
129
135
  end
130
136
 
@@ -207,6 +213,10 @@ module DaytonaApiClient
207
213
  if attributes.key?(:'max_disk_per_gpu')
208
214
  self.max_disk_per_gpu = attributes[:'max_disk_per_gpu']
209
215
  end
216
+
217
+ if attributes.key?(:'max_sandbox_lifespan')
218
+ self.max_sandbox_lifespan = attributes[:'max_sandbox_lifespan']
219
+ end
210
220
  end
211
221
 
212
222
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -316,7 +326,8 @@ module DaytonaApiClient
316
326
  max_disk_per_non_ephemeral_sandbox == o.max_disk_per_non_ephemeral_sandbox &&
317
327
  max_cpu_per_gpu == o.max_cpu_per_gpu &&
318
328
  max_memory_per_gpu == o.max_memory_per_gpu &&
319
- max_disk_per_gpu == o.max_disk_per_gpu
329
+ max_disk_per_gpu == o.max_disk_per_gpu &&
330
+ max_sandbox_lifespan == o.max_sandbox_lifespan
320
331
  end
321
332
 
322
333
  # @see the `==` method
@@ -328,7 +339,7 @@ module DaytonaApiClient
328
339
  # Calculates hash code according to all attributes.
329
340
  # @return [Integer] Hash code
330
341
  def hash
331
- [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
342
+ [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
332
343
  end
333
344
 
334
345
  # Builds the object from hash
@@ -42,6 +42,9 @@ module DaytonaApiClient
42
42
  # Comma-separated list of allowed domains for the sandbox
43
43
  attr_accessor :domain_allow_list
44
44
 
45
+ # Outbound proxy URL to route the sandbox HTTP(S) traffic through (http or https; credentials may be included in the URL). On its own this is convenience routing, not a security boundary: it is applied by injecting the standard HTTP(S)_PROXY environment variables at creation, so a process that clears those variables egresses directly. Combine with domainAllowList to have web-port (80/443) egress transparently redirected through the proxy chain at the network layer, which cannot be bypassed from inside the sandbox.
46
+ attr_accessor :outbound_proxy_url
47
+
45
48
  # The target (region) where the sandbox will be created
46
49
  attr_accessor :target
47
50
 
@@ -72,7 +75,7 @@ module DaytonaApiClient
72
75
  # Auto-delete interval in minutes (negative value means disabled, 0 means delete immediately upon stopping)
73
76
  attr_accessor :auto_delete_interval
74
77
 
75
- # Maximum time to live in minutes, counted as wall-clock time since creation regardless of sandbox state (0 means disabled). When it elapses the sandbox is destroyed, even if it is stopped, paused, or archived.
78
+ # Maximum time to live in minutes, counted as wall-clock time since creation regardless of sandbox state (0 means disabled). When it elapses the sandbox is destroyed, even if it is stopped, paused, or archived. Subject to the maximum sandbox lifespan configured for the organization region and sandbox class, in which case it also defaults to that maximum and cannot be disabled.
76
79
  attr_accessor :ttl_minutes
77
80
 
78
81
  # Array of volumes to attach to the sandbox
@@ -99,6 +102,7 @@ module DaytonaApiClient
99
102
  :'network_block_all' => :'networkBlockAll',
100
103
  :'network_allow_list' => :'networkAllowList',
101
104
  :'domain_allow_list' => :'domainAllowList',
105
+ :'outbound_proxy_url' => :'outboundProxyUrl',
102
106
  :'target' => :'target',
103
107
  :'cpu' => :'cpu',
104
108
  :'gpu' => :'gpu',
@@ -139,6 +143,7 @@ module DaytonaApiClient
139
143
  :'network_block_all' => :'Boolean',
140
144
  :'network_allow_list' => :'String',
141
145
  :'domain_allow_list' => :'String',
146
+ :'outbound_proxy_url' => :'String',
142
147
  :'target' => :'String',
143
148
  :'cpu' => :'Integer',
144
149
  :'gpu' => :'Integer',
@@ -219,6 +224,10 @@ module DaytonaApiClient
219
224
  self.domain_allow_list = attributes[:'domain_allow_list']
220
225
  end
221
226
 
227
+ if attributes.key?(:'outbound_proxy_url')
228
+ self.outbound_proxy_url = attributes[:'outbound_proxy_url']
229
+ end
230
+
222
231
  if attributes.key?(:'target')
223
232
  self.target = attributes[:'target']
224
233
  end
@@ -315,6 +324,7 @@ module DaytonaApiClient
315
324
  network_block_all == o.network_block_all &&
316
325
  network_allow_list == o.network_allow_list &&
317
326
  domain_allow_list == o.domain_allow_list &&
327
+ outbound_proxy_url == o.outbound_proxy_url &&
318
328
  target == o.target &&
319
329
  cpu == o.cpu &&
320
330
  gpu == o.gpu &&
@@ -341,7 +351,7 @@ module DaytonaApiClient
341
351
  # Calculates hash code according to all attributes.
342
352
  # @return [Integer] Hash code
343
353
  def hash
344
- [name, snapshot, user, env, labels, public, network_block_all, network_allow_list, domain_allow_list, target, cpu, gpu, gpu_type, memory, disk, auto_stop_interval, auto_pause_interval, auto_archive_interval, auto_delete_interval, ttl_minutes, volumes, build_info, linked_sandbox, secrets].hash
354
+ [name, snapshot, user, env, labels, public, network_block_all, network_allow_list, domain_allow_list, outbound_proxy_url, target, cpu, gpu, gpu_type, memory, disk, auto_stop_interval, auto_pause_interval, auto_archive_interval, auto_delete_interval, ttl_minutes, volumes, build_info, linked_sandbox, secrets].hash
345
355
  end
346
356
 
347
357
  # Builds the object from hash
@@ -29,6 +29,9 @@ module DaytonaApiClient
29
29
 
30
30
  attr_accessor :email_verified
31
31
 
32
+ # Provenance of the email verification. Defaults to auth0 when emailVerified is true and unset.
33
+ attr_accessor :email_verified_source
34
+
32
35
  class EnumAttributeValidator
33
36
  attr_reader :datatype
34
37
  attr_reader :allowable_values
@@ -60,7 +63,8 @@ module DaytonaApiClient
60
63
  :'personal_organization_quota' => :'personalOrganizationQuota',
61
64
  :'personal_organization_default_region_id' => :'personalOrganizationDefaultRegionId',
62
65
  :'role' => :'role',
63
- :'email_verified' => :'emailVerified'
66
+ :'email_verified' => :'emailVerified',
67
+ :'email_verified_source' => :'emailVerifiedSource'
64
68
  }
65
69
  end
66
70
 
@@ -83,7 +87,8 @@ module DaytonaApiClient
83
87
  :'personal_organization_quota' => :'CreateOrganizationQuota',
84
88
  :'personal_organization_default_region_id' => :'String',
85
89
  :'role' => :'String',
86
- :'email_verified' => :'Boolean'
90
+ :'email_verified' => :'Boolean',
91
+ :'email_verified_source' => :'String'
87
92
  }
88
93
  end
89
94
 
@@ -111,8 +116,6 @@ module DaytonaApiClient
111
116
 
112
117
  if attributes.key?(:'id')
113
118
  self.id = attributes[:'id']
114
- else
115
- self.id = nil
116
119
  end
117
120
 
118
121
  if attributes.key?(:'name')
@@ -140,6 +143,10 @@ module DaytonaApiClient
140
143
  if attributes.key?(:'email_verified')
141
144
  self.email_verified = attributes[:'email_verified']
142
145
  end
146
+
147
+ if attributes.key?(:'email_verified_source')
148
+ self.email_verified_source = attributes[:'email_verified_source']
149
+ end
143
150
  end
144
151
 
145
152
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -147,10 +154,6 @@ module DaytonaApiClient
147
154
  def list_invalid_properties
148
155
  warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
149
156
  invalid_properties = Array.new
150
- if @id.nil?
151
- invalid_properties.push('invalid value for "id", id cannot be nil.')
152
- end
153
-
154
157
  if @name.nil?
155
158
  invalid_properties.push('invalid value for "name", name cannot be nil.')
156
159
  end
@@ -162,23 +165,14 @@ module DaytonaApiClient
162
165
  # @return true if the model is valid
163
166
  def valid?
164
167
  warn '[DEPRECATED] the `valid?` method is obsolete'
165
- return false if @id.nil?
166
168
  return false if @name.nil?
167
169
  role_validator = EnumAttributeValidator.new('String', ["admin", "user", "unknown_default_open_api"])
168
170
  return false unless role_validator.valid?(@role)
171
+ email_verified_source_validator = EnumAttributeValidator.new('String', ["auth0", "admin", "sso", "unknown_default_open_api"])
172
+ return false unless email_verified_source_validator.valid?(@email_verified_source)
169
173
  true
170
174
  end
171
175
 
172
- # Custom attribute writer method with validation
173
- # @param [Object] id Value to be assigned
174
- def id=(id)
175
- if id.nil?
176
- fail ArgumentError, 'id cannot be nil'
177
- end
178
-
179
- @id = id
180
- end
181
-
182
176
  # Custom attribute writer method with validation
183
177
  # @param [Object] name Value to be assigned
184
178
  def name=(name)
@@ -199,6 +193,16 @@ module DaytonaApiClient
199
193
  @role = role
200
194
  end
201
195
 
196
+ # Custom attribute writer method checking allowed values (enum).
197
+ # @param [Object] email_verified_source Object to be assigned
198
+ def email_verified_source=(email_verified_source)
199
+ validator = EnumAttributeValidator.new('String', ["auth0", "admin", "sso", "unknown_default_open_api"])
200
+ unless validator.valid?(email_verified_source)
201
+ fail ArgumentError, "invalid value for \"email_verified_source\", must be one of #{validator.allowable_values}."
202
+ end
203
+ @email_verified_source = email_verified_source
204
+ end
205
+
202
206
  # Checks equality by comparing each attribute.
203
207
  # @param [Object] Object to be compared
204
208
  def ==(o)
@@ -210,7 +214,8 @@ module DaytonaApiClient
210
214
  personal_organization_quota == o.personal_organization_quota &&
211
215
  personal_organization_default_region_id == o.personal_organization_default_region_id &&
212
216
  role == o.role &&
213
- email_verified == o.email_verified
217
+ email_verified == o.email_verified &&
218
+ email_verified_source == o.email_verified_source
214
219
  end
215
220
 
216
221
  # @see the `==` method
@@ -222,7 +227,7 @@ module DaytonaApiClient
222
227
  # Calculates hash code according to all attributes.
223
228
  # @return [Integer] Hash code
224
229
  def hash
225
- [id, name, email, personal_organization_quota, personal_organization_default_region_id, role, email_verified].hash
230
+ [id, name, email, personal_organization_quota, personal_organization_default_region_id, role, email_verified, email_verified_source].hash
226
231
  end
227
232
 
228
233
  # Builds the object from hash
@@ -18,12 +18,21 @@ module DaytonaApiClient
18
18
  # Daytona version
19
19
  attr_accessor :version
20
20
 
21
+ # Commit sha of the source the app was built from
22
+ attr_accessor :build_sha
23
+
21
24
  # PostHog configuration
22
25
  attr_accessor :posthog
23
26
 
24
27
  # OIDC configuration
25
28
  attr_accessor :oidc
26
29
 
30
+ # OIDC configuration for org-SSO logins (Daytona Auth issuer). Present only when the dual-issuer setup is configured; the dashboard uses it as its authority when entered via an organization SSO link.
31
+ attr_accessor :sso_oidc
32
+
33
+ # Feature flags forced on for this deployment regardless of PostHog targeting. Lets environments without PostHog (previews, local dev) enable flag-gated dashboard features.
34
+ attr_accessor :forced_feature_flags
35
+
27
36
  # Whether linked accounts are enabled
28
37
  attr_accessor :linked_accounts_enabled
29
38
 
@@ -76,8 +85,11 @@ module DaytonaApiClient
76
85
  def self.attribute_map
77
86
  {
78
87
  :'version' => :'version',
88
+ :'build_sha' => :'buildSha',
79
89
  :'posthog' => :'posthog',
80
90
  :'oidc' => :'oidc',
91
+ :'sso_oidc' => :'ssoOidc',
92
+ :'forced_feature_flags' => :'forcedFeatureFlags',
81
93
  :'linked_accounts_enabled' => :'linkedAccountsEnabled',
82
94
  :'announcements' => :'announcements',
83
95
  :'pylon_app_id' => :'pylonAppId',
@@ -111,8 +123,11 @@ module DaytonaApiClient
111
123
  def self.openapi_types
112
124
  {
113
125
  :'version' => :'String',
126
+ :'build_sha' => :'String',
114
127
  :'posthog' => :'PosthogConfig',
115
128
  :'oidc' => :'OidcConfig',
129
+ :'sso_oidc' => :'SsoOidcConfig',
130
+ :'forced_feature_flags' => :'Array<String>',
116
131
  :'linked_accounts_enabled' => :'Boolean',
117
132
  :'announcements' => :'Hash<String, Announcement>',
118
133
  :'pylon_app_id' => :'String',
@@ -160,6 +175,10 @@ module DaytonaApiClient
160
175
  self.version = nil
161
176
  end
162
177
 
178
+ if attributes.key?(:'build_sha')
179
+ self.build_sha = attributes[:'build_sha']
180
+ end
181
+
163
182
  if attributes.key?(:'posthog')
164
183
  self.posthog = attributes[:'posthog']
165
184
  end
@@ -170,6 +189,16 @@ module DaytonaApiClient
170
189
  self.oidc = nil
171
190
  end
172
191
 
192
+ if attributes.key?(:'sso_oidc')
193
+ self.sso_oidc = attributes[:'sso_oidc']
194
+ end
195
+
196
+ if attributes.key?(:'forced_feature_flags')
197
+ if (value = attributes[:'forced_feature_flags']).is_a?(Array)
198
+ self.forced_feature_flags = value
199
+ end
200
+ end
201
+
173
202
  if attributes.key?(:'linked_accounts_enabled')
174
203
  self.linked_accounts_enabled = attributes[:'linked_accounts_enabled']
175
204
  else
@@ -441,8 +470,11 @@ module DaytonaApiClient
441
470
  return true if self.equal?(o)
442
471
  self.class == o.class &&
443
472
  version == o.version &&
473
+ build_sha == o.build_sha &&
444
474
  posthog == o.posthog &&
445
475
  oidc == o.oidc &&
476
+ sso_oidc == o.sso_oidc &&
477
+ forced_feature_flags == o.forced_feature_flags &&
446
478
  linked_accounts_enabled == o.linked_accounts_enabled &&
447
479
  announcements == o.announcements &&
448
480
  pylon_app_id == o.pylon_app_id &&
@@ -470,7 +502,7 @@ module DaytonaApiClient
470
502
  # Calculates hash code according to all attributes.
471
503
  # @return [Integer] Hash code
472
504
  def hash
473
- [version, posthog, oidc, linked_accounts_enabled, announcements, pylon_app_id, proxy_template_url, proxy_toolbox_url, default_snapshot, dashboard_url, max_auto_archive_interval, maintanance_mode, environment, billing_api_url, analytics_api_url, stripe_publishable_key, ssh_gateway_command, ssh_gateway_public_key, rate_limit].hash
505
+ [version, build_sha, posthog, oidc, sso_oidc, forced_feature_flags, linked_accounts_enabled, announcements, pylon_app_id, proxy_template_url, proxy_toolbox_url, default_snapshot, dashboard_url, max_auto_archive_interval, maintanance_mode, environment, billing_api_url, analytics_api_url, stripe_publishable_key, ssh_gateway_command, ssh_gateway_public_key, rate_limit].hash
474
506
  end
475
507
 
476
508
  # Builds the object from hash