daytona_api_client 0.192.0 → 1.0.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 (231) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +9 -0
  3. data/Gemfile.lock +101 -0
  4. data/daytona_api_client.gemspec +4 -4
  5. data/lib/daytona_api_client/api/api_keys_api.rb +2 -2
  6. data/lib/daytona_api_client/api/audit_api.rb +140 -40
  7. data/lib/daytona_api_client/api/config_api.rb +1 -1
  8. data/lib/daytona_api_client/api/docker_registry_api.rb +67 -6
  9. data/lib/daytona_api_client/api/health_api.rb +3 -54
  10. data/lib/daytona_api_client/api/object_storage_api.rb +1 -1
  11. data/lib/daytona_api_client/api/organizations_api.rb +155 -1075
  12. data/lib/daytona_api_client/api/preview_api.rb +8 -77
  13. data/lib/daytona_api_client/api/runners_api.rb +22 -412
  14. data/lib/daytona_api_client/api/sandbox_api.rb +346 -1901
  15. data/lib/daytona_api_client/api/snapshots_api.rb +113 -39
  16. data/lib/daytona_api_client/api/toolbox_api.rb +741 -741
  17. data/lib/daytona_api_client/api/users_api.rb +239 -2
  18. data/lib/daytona_api_client/api/volumes_api.rb +2 -2
  19. data/lib/daytona_api_client/api/webhooks_api.rb +164 -27
  20. data/lib/daytona_api_client/api/workspace_api.rb +955 -0
  21. data/lib/daytona_api_client/api_client.rb +4 -8
  22. data/lib/daytona_api_client/api_error.rb +1 -1
  23. data/lib/daytona_api_client/configuration.rb +2 -5
  24. data/lib/daytona_api_client/models/account_provider.rb +74 -3
  25. data/lib/daytona_api_client/models/announcement.rb +74 -3
  26. data/lib/daytona_api_client/models/api_key_list.rb +74 -3
  27. data/lib/daytona_api_client/models/api_key_response.rb +74 -3
  28. data/lib/daytona_api_client/models/audit_log.rb +75 -22
  29. data/lib/daytona_api_client/models/build_info.rb +78 -34
  30. data/lib/daytona_api_client/models/command.rb +74 -3
  31. data/lib/daytona_api_client/models/completion_context.rb +74 -3
  32. data/lib/daytona_api_client/models/completion_item.rb +74 -3
  33. data/lib/daytona_api_client/models/completion_list.rb +74 -3
  34. data/lib/daytona_api_client/models/compressed_screenshot_response.rb +74 -3
  35. data/lib/daytona_api_client/models/computer_use_start_response.rb +74 -3
  36. data/lib/daytona_api_client/models/computer_use_status_response.rb +76 -5
  37. data/lib/daytona_api_client/models/computer_use_stop_response.rb +74 -3
  38. data/lib/daytona_api_client/models/create_api_key.rb +75 -4
  39. data/lib/daytona_api_client/models/create_audit_log.rb +350 -0
  40. data/lib/daytona_api_client/models/create_build_info.rb +74 -3
  41. data/lib/daytona_api_client/models/create_docker_registry.rb +139 -7
  42. data/lib/daytona_api_client/models/create_linked_account.rb +74 -3
  43. data/lib/daytona_api_client/models/create_organization.rb +78 -34
  44. data/lib/daytona_api_client/models/create_organization_invitation.rb +76 -5
  45. data/lib/daytona_api_client/models/create_organization_quota.rb +78 -17
  46. data/lib/daytona_api_client/models/create_organization_role.rb +74 -3
  47. data/lib/daytona_api_client/models/create_runner.rb +386 -43
  48. data/lib/daytona_api_client/models/create_sandbox.rb +117 -56
  49. data/lib/daytona_api_client/models/create_session_request.rb +74 -3
  50. data/lib/daytona_api_client/models/create_snapshot.rb +88 -61
  51. data/lib/daytona_api_client/models/create_user.rb +77 -15
  52. data/lib/daytona_api_client/models/create_volume.rb +74 -3
  53. data/lib/daytona_api_client/models/create_workspace.rb +411 -0
  54. data/lib/daytona_api_client/models/daytona_configuration.rb +78 -64
  55. data/lib/daytona_api_client/models/display_info_response.rb +74 -3
  56. data/lib/daytona_api_client/models/docker_registry.rb +76 -5
  57. data/lib/daytona_api_client/models/download_files.rb +74 -3
  58. data/lib/daytona_api_client/models/execute_request.rb +74 -3
  59. data/lib/daytona_api_client/models/execute_response.rb +74 -3
  60. data/lib/daytona_api_client/models/file_info.rb +74 -3
  61. data/lib/daytona_api_client/models/file_status.rb +74 -3
  62. data/lib/daytona_api_client/models/git_add_request.rb +74 -3
  63. data/lib/daytona_api_client/models/git_branch_request.rb +74 -3
  64. data/lib/daytona_api_client/models/git_checkout_request.rb +74 -3
  65. data/lib/daytona_api_client/models/git_clone_request.rb +74 -3
  66. data/lib/daytona_api_client/models/git_commit_info.rb +74 -3
  67. data/lib/daytona_api_client/models/git_commit_request.rb +74 -3
  68. data/lib/daytona_api_client/models/git_commit_response.rb +74 -3
  69. data/lib/daytona_api_client/models/git_delete_branch_request.rb +74 -3
  70. data/lib/daytona_api_client/models/git_repo_request.rb +74 -3
  71. data/lib/daytona_api_client/models/git_status.rb +74 -3
  72. data/lib/daytona_api_client/models/health_controller_check200_response.rb +74 -3
  73. data/lib/daytona_api_client/models/health_controller_check200_response_info_value.rb +74 -3
  74. data/lib/daytona_api_client/models/health_controller_check503_response.rb +74 -3
  75. data/lib/daytona_api_client/models/keyboard_hotkey_request.rb +74 -3
  76. data/lib/daytona_api_client/models/keyboard_press_request.rb +74 -3
  77. data/lib/daytona_api_client/models/keyboard_type_request.rb +74 -3
  78. data/lib/daytona_api_client/models/list_branch_response.rb +74 -3
  79. data/lib/daytona_api_client/models/lsp_completion_params.rb +74 -3
  80. data/lib/daytona_api_client/models/lsp_document_request.rb +74 -3
  81. data/lib/daytona_api_client/models/lsp_location.rb +74 -3
  82. data/lib/daytona_api_client/models/lsp_server_request.rb +74 -3
  83. data/lib/daytona_api_client/models/lsp_symbol.rb +74 -3
  84. data/lib/daytona_api_client/models/match.rb +74 -3
  85. data/lib/daytona_api_client/models/mouse_click_request.rb +74 -3
  86. data/lib/daytona_api_client/models/mouse_click_response.rb +74 -3
  87. data/lib/daytona_api_client/models/mouse_drag_request.rb +74 -3
  88. data/lib/daytona_api_client/models/mouse_drag_response.rb +74 -3
  89. data/lib/daytona_api_client/models/mouse_move_request.rb +74 -3
  90. data/lib/daytona_api_client/models/mouse_move_response.rb +74 -3
  91. data/lib/daytona_api_client/models/mouse_position.rb +74 -3
  92. data/lib/daytona_api_client/models/mouse_scroll_request.rb +74 -3
  93. data/lib/daytona_api_client/models/mouse_scroll_response.rb +74 -3
  94. data/lib/daytona_api_client/models/oidc_config.rb +74 -3
  95. data/lib/daytona_api_client/models/organization.rb +159 -162
  96. data/lib/daytona_api_client/models/organization_invitation.rb +78 -7
  97. data/lib/daytona_api_client/models/organization_role.rb +74 -3
  98. data/lib/daytona_api_client/models/organization_sandbox_default_limited_network_egress.rb +74 -3
  99. data/lib/daytona_api_client/models/organization_suspension.rb +79 -10
  100. data/lib/daytona_api_client/models/organization_usage_overview.rb +220 -21
  101. data/lib/daytona_api_client/models/organization_user.rb +76 -5
  102. data/lib/daytona_api_client/models/paginated_audit_logs.rb +78 -17
  103. data/lib/daytona_api_client/models/{paginated_sandboxes_deprecated.rb → paginated_sandboxes.rb} +76 -5
  104. data/lib/daytona_api_client/models/paginated_snapshots.rb +74 -3
  105. data/lib/daytona_api_client/models/{paginated_jobs.rb → paginated_snapshots_dto.rb} +77 -6
  106. data/lib/daytona_api_client/models/port_preview_url.rb +88 -34
  107. data/lib/daytona_api_client/models/position.rb +74 -3
  108. data/lib/daytona_api_client/models/posthog_config.rb +74 -3
  109. data/lib/daytona_api_client/models/process_errors_response.rb +74 -3
  110. data/lib/daytona_api_client/models/process_logs_response.rb +74 -3
  111. data/lib/daytona_api_client/models/process_restart_response.rb +74 -3
  112. data/lib/daytona_api_client/models/process_status_response.rb +74 -3
  113. data/lib/daytona_api_client/models/project_dir_response.rb +74 -3
  114. data/lib/daytona_api_client/models/pty_create_request.rb +74 -3
  115. data/lib/daytona_api_client/models/pty_create_response.rb +74 -3
  116. data/lib/daytona_api_client/models/pty_list_response.rb +74 -3
  117. data/lib/daytona_api_client/models/pty_resize_request.rb +74 -3
  118. data/lib/daytona_api_client/models/pty_session_info.rb +74 -3
  119. data/lib/daytona_api_client/models/range.rb +74 -3
  120. data/lib/daytona_api_client/models/region.rb +78 -181
  121. data/lib/daytona_api_client/models/region_screenshot_response.rb +74 -3
  122. data/lib/daytona_api_client/models/registry_push_access_dto.rb +74 -3
  123. data/lib/daytona_api_client/models/replace_request.rb +74 -3
  124. data/lib/daytona_api_client/models/replace_result.rb +74 -3
  125. data/lib/daytona_api_client/models/runner.rb +215 -155
  126. data/lib/daytona_api_client/models/runner_snapshot_dto.rb +91 -3
  127. data/lib/daytona_api_client/models/runner_state.rb +3 -4
  128. data/lib/daytona_api_client/models/sandbox.rb +104 -137
  129. data/lib/daytona_api_client/models/sandbox_class.rb +6 -8
  130. data/lib/daytona_api_client/models/sandbox_desired_state.rb +3 -5
  131. data/lib/daytona_api_client/models/{create_secret.rb → sandbox_info.rb} +112 -53
  132. data/lib/daytona_api_client/models/sandbox_labels.rb +74 -3
  133. data/lib/daytona_api_client/models/sandbox_state.rb +3 -10
  134. data/lib/daytona_api_client/models/sandbox_volume.rb +79 -18
  135. data/lib/daytona_api_client/models/screenshot_response.rb +74 -3
  136. data/lib/daytona_api_client/models/search_files_response.rb +74 -3
  137. data/lib/daytona_api_client/models/send_webhook_dto.rb +75 -26
  138. data/lib/daytona_api_client/models/session.rb +74 -3
  139. data/lib/daytona_api_client/models/session_execute_request.rb +74 -3
  140. data/lib/daytona_api_client/models/session_execute_response.rb +74 -3
  141. data/lib/daytona_api_client/models/set_snapshot_general_status_dto.rb +74 -3
  142. data/lib/daytona_api_client/models/snapshot_dto.rb +78 -71
  143. data/lib/daytona_api_client/models/snapshot_state.rb +6 -4
  144. data/lib/daytona_api_client/models/ssh_access_dto.rb +78 -34
  145. data/lib/daytona_api_client/models/ssh_access_validation_dto.rb +98 -7
  146. data/lib/daytona_api_client/models/storage_access_dto.rb +74 -3
  147. data/lib/daytona_api_client/models/update_docker_registry.rb +74 -3
  148. data/lib/daytona_api_client/models/update_organization_invitation.rb +76 -5
  149. data/lib/daytona_api_client/models/update_organization_member_access.rb +76 -5
  150. data/lib/daytona_api_client/models/update_organization_quota.rb +115 -106
  151. data/lib/daytona_api_client/models/update_organization_role.rb +74 -3
  152. data/lib/daytona_api_client/models/update_sandbox_state_dto.rb +80 -29
  153. data/lib/daytona_api_client/models/user.rb +74 -3
  154. data/lib/daytona_api_client/models/user_home_dir_response.rb +74 -3
  155. data/lib/daytona_api_client/models/user_public_key.rb +74 -3
  156. data/lib/daytona_api_client/models/volume_dto.rb +74 -3
  157. data/lib/daytona_api_client/models/volume_state.rb +3 -4
  158. data/lib/daytona_api_client/models/webhook_app_portal_access.rb +75 -31
  159. data/lib/daytona_api_client/models/{admin_get_webhook_status200_response.rb → webhook_controller_get_status200_response.rb} +76 -5
  160. data/lib/daytona_api_client/models/webhook_initialization_status.rb +74 -3
  161. data/lib/daytona_api_client/models/windows_response.rb +74 -3
  162. data/lib/daytona_api_client/models/work_dir_response.rb +74 -3
  163. data/lib/daytona_api_client/models/{sandbox_list_item.rb → workspace.rb} +344 -168
  164. data/lib/daytona_api_client/version.rb +2 -2
  165. data/lib/daytona_api_client.rb +8 -63
  166. data/project.json +13 -38
  167. metadata +13 -72
  168. data/.gitignore +0 -39
  169. data/.openapi-generator/FILES +0 -220
  170. data/.openapi-generator/VERSION +0 -1
  171. data/.openapi-generator-ignore +0 -31
  172. data/.rspec +0 -2
  173. data/.rubocop.yml +0 -148
  174. data/fix-gemspec.sh +0 -11
  175. data/lib/daytona_api_client/api/admin_api.rb +0 -1479
  176. data/lib/daytona_api_client/api/jobs_api.rb +0 -299
  177. data/lib/daytona_api_client/api/regions_api.rb +0 -77
  178. data/lib/daytona_api_client/api/secret_api.rb +0 -350
  179. data/lib/daytona_api_client/api_model_base.rb +0 -88
  180. data/lib/daytona_api_client/models/admin_create_runner.rb +0 -326
  181. data/lib/daytona_api_client/models/create_organization_region_quota.rb +0 -372
  182. data/lib/daytona_api_client/models/create_region.rb +0 -198
  183. data/lib/daytona_api_client/models/create_region_response.rb +0 -209
  184. data/lib/daytona_api_client/models/create_runner_response.rb +0 -192
  185. data/lib/daytona_api_client/models/create_sandbox_snapshot.rb +0 -177
  186. data/lib/daytona_api_client/models/date_filter.rb +0 -178
  187. data/lib/daytona_api_client/models/fork_sandbox.rb +0 -148
  188. data/lib/daytona_api_client/models/gpu_type.rb +0 -41
  189. data/lib/daytona_api_client/models/int_filter.rb +0 -222
  190. data/lib/daytona_api_client/models/job.rb +0 -366
  191. data/lib/daytona_api_client/models/job_status.rb +0 -43
  192. data/lib/daytona_api_client/models/job_type.rb +0 -54
  193. data/lib/daytona_api_client/models/list_sandboxes_response.rb +0 -180
  194. data/lib/daytona_api_client/models/log_entry.rb +0 -334
  195. data/lib/daytona_api_client/models/metric_data_point.rb +0 -192
  196. data/lib/daytona_api_client/models/metric_series.rb +0 -194
  197. data/lib/daytona_api_client/models/metrics_response.rb +0 -167
  198. data/lib/daytona_api_client/models/otel_config.rb +0 -178
  199. data/lib/daytona_api_client/models/paginated_logs.rb +0 -248
  200. data/lib/daytona_api_client/models/paginated_traces.rb +0 -248
  201. data/lib/daytona_api_client/models/poll_jobs_response.rb +0 -167
  202. data/lib/daytona_api_client/models/rate_limit_config.rb +0 -188
  203. data/lib/daytona_api_client/models/rate_limit_entry.rb +0 -158
  204. data/lib/daytona_api_client/models/regenerate_api_key_response.rb +0 -165
  205. data/lib/daytona_api_client/models/region_quota.rb +0 -437
  206. data/lib/daytona_api_client/models/region_type.rb +0 -42
  207. data/lib/daytona_api_client/models/region_usage_overview.rb +0 -515
  208. data/lib/daytona_api_client/models/resize_sandbox.rb +0 -225
  209. data/lib/daytona_api_client/models/resolve_sandbox_secrets200_response_inner.rb +0 -176
  210. data/lib/daytona_api_client/models/runner_class.rb +0 -40
  211. data/lib/daytona_api_client/models/runner_full.rb +0 -757
  212. data/lib/daytona_api_client/models/runner_health_metrics.rb +0 -482
  213. data/lib/daytona_api_client/models/runner_healthcheck.rb +0 -217
  214. data/lib/daytona_api_client/models/runner_service_health.rb +0 -202
  215. data/lib/daytona_api_client/models/sandbox_list_sort_direction.rb +0 -41
  216. data/lib/daytona_api_client/models/sandbox_list_sort_field.rb +0 -45
  217. data/lib/daytona_api_client/models/secret.rb +0 -312
  218. data/lib/daytona_api_client/models/signed_port_preview_url.rb +0 -246
  219. data/lib/daytona_api_client/models/snapshot_manager_credentials.rb +0 -192
  220. data/lib/daytona_api_client/models/string_filter.rb +0 -182
  221. data/lib/daytona_api_client/models/toolbox_proxy_url.rb +0 -165
  222. data/lib/daytona_api_client/models/trace_span.rb +0 -332
  223. data/lib/daytona_api_client/models/trace_summary.rb +0 -310
  224. data/lib/daytona_api_client/models/update_job_status.rb +0 -207
  225. data/lib/daytona_api_client/models/update_organization_default_region.rb +0 -165
  226. data/lib/daytona_api_client/models/update_organization_region_quota.rb +0 -299
  227. data/lib/daytona_api_client/models/update_region.rb +0 -171
  228. data/lib/daytona_api_client/models/update_sandbox_network_settings.rb +0 -168
  229. data/lib/daytona_api_client/models/update_secret.rb +0 -170
  230. data/lib/daytona_api_client/models/url.rb +0 -165
  231. data/lib/daytona_api_client/models/webhook_event.rb +0 -46
@@ -6,7 +6,7 @@
6
6
  The version of the OpenAPI document: 1.0
7
7
  Contact: support@daytona.com
8
8
  Generated by: https://openapi-generator.tech
9
- Generator version: 7.21.0
9
+ Generator version: 7.12.0
10
10
 
11
11
  =end
12
12
 
@@ -14,67 +14,64 @@ require 'date'
14
14
  require 'time'
15
15
 
16
16
  module DaytonaApiClient
17
- class SandboxListItem < ApiModelBase
17
+ class Workspace
18
18
  # The ID of the sandbox
19
19
  attr_accessor :id
20
20
 
21
21
  # The organization ID of the sandbox
22
22
  attr_accessor :organization_id
23
23
 
24
- # The name of the sandbox
25
- attr_accessor :name
26
-
27
- # The target environment for the sandbox
28
- attr_accessor :target
29
-
30
- # The runner ID of the sandbox
31
- attr_accessor :runner_id
32
-
33
- # The class of the sandbox
34
- attr_accessor :sandbox_class
35
-
36
- # The state of the sandbox
37
- attr_accessor :state
38
-
39
- # The desired state of the sandbox
40
- attr_accessor :desired_state
41
-
42
24
  # The snapshot used for the sandbox
43
25
  attr_accessor :snapshot
44
26
 
45
27
  # The user associated with the project
46
28
  attr_accessor :user
47
29
 
48
- # The error reason of the sandbox
49
- attr_accessor :error_reason
30
+ # Environment variables for the sandbox
31
+ attr_accessor :env
50
32
 
51
- # Whether the sandbox error is recoverable.
52
- attr_accessor :recoverable
33
+ # Labels for the sandbox
34
+ attr_accessor :labels
53
35
 
54
36
  # Whether the sandbox http preview is public
55
37
  attr_accessor :public
56
38
 
39
+ # Whether to block all network access for the sandbox
40
+ attr_accessor :network_block_all
41
+
42
+ # Comma-separated list of allowed CIDR network addresses for the sandbox
43
+ attr_accessor :network_allow_list
44
+
45
+ # The target environment for the sandbox
46
+ attr_accessor :target
47
+
57
48
  # The CPU quota for the sandbox
58
49
  attr_accessor :cpu
59
50
 
60
51
  # The GPU quota for the sandbox
61
52
  attr_accessor :gpu
62
53
 
63
- # The GPU type assigned to the sandbox
64
- attr_accessor :gpu_type
65
-
66
54
  # The memory quota for the sandbox
67
55
  attr_accessor :memory
68
56
 
69
57
  # The disk quota for the sandbox
70
58
  attr_accessor :disk
71
59
 
72
- # Labels for the sandbox
73
- attr_accessor :labels
60
+ # The state of the sandbox
61
+ attr_accessor :state
62
+
63
+ # The desired state of the sandbox
64
+ attr_accessor :desired_state
65
+
66
+ # The error reason of the sandbox
67
+ attr_accessor :error_reason
74
68
 
75
69
  # The state of the backup
76
70
  attr_accessor :backup_state
77
71
 
72
+ # The creation timestamp of the last backup
73
+ attr_accessor :backup_created_at
74
+
78
75
  # Auto-stop interval in minutes (0 means disabled)
79
76
  attr_accessor :auto_stop_interval
80
77
 
@@ -84,20 +81,41 @@ module DaytonaApiClient
84
81
  # Auto-delete interval in minutes (negative value means disabled, 0 means delete immediately upon stopping)
85
82
  attr_accessor :auto_delete_interval
86
83
 
84
+ # The domain name of the runner
85
+ attr_accessor :runner_domain
86
+
87
+ # Array of volumes attached to the sandbox
88
+ attr_accessor :volumes
89
+
90
+ # Build information for the sandbox
91
+ attr_accessor :build_info
92
+
87
93
  # The creation timestamp of the sandbox
88
94
  attr_accessor :created_at
89
95
 
90
96
  # The last update timestamp of the sandbox
91
97
  attr_accessor :updated_at
92
98
 
93
- # The last activity timestamp of the sandbox
94
- attr_accessor :last_activity_at
99
+ # The class of the sandbox
100
+ attr_accessor :_class
95
101
 
96
102
  # The version of the daemon running in the sandbox
97
103
  attr_accessor :daemon_version
98
104
 
99
- # The toolbox proxy URL for the sandbox
100
- attr_accessor :toolbox_proxy_url
105
+ # The name of the workspace
106
+ attr_accessor :name
107
+
108
+ # The image used for the workspace
109
+ attr_accessor :image
110
+
111
+ # The state of the snapshot
112
+ attr_accessor :snapshot_state
113
+
114
+ # The creation timestamp of the last snapshot
115
+ attr_accessor :snapshot_created_at
116
+
117
+ # Additional information about the sandbox
118
+ attr_accessor :info
101
119
 
102
120
  class EnumAttributeValidator
103
121
  attr_reader :datatype
@@ -126,32 +144,38 @@ module DaytonaApiClient
126
144
  {
127
145
  :'id' => :'id',
128
146
  :'organization_id' => :'organizationId',
129
- :'name' => :'name',
130
- :'target' => :'target',
131
- :'runner_id' => :'runnerId',
132
- :'sandbox_class' => :'sandboxClass',
133
- :'state' => :'state',
134
- :'desired_state' => :'desiredState',
135
147
  :'snapshot' => :'snapshot',
136
148
  :'user' => :'user',
137
- :'error_reason' => :'errorReason',
138
- :'recoverable' => :'recoverable',
149
+ :'env' => :'env',
150
+ :'labels' => :'labels',
139
151
  :'public' => :'public',
152
+ :'network_block_all' => :'networkBlockAll',
153
+ :'network_allow_list' => :'networkAllowList',
154
+ :'target' => :'target',
140
155
  :'cpu' => :'cpu',
141
156
  :'gpu' => :'gpu',
142
- :'gpu_type' => :'gpuType',
143
157
  :'memory' => :'memory',
144
158
  :'disk' => :'disk',
145
- :'labels' => :'labels',
159
+ :'state' => :'state',
160
+ :'desired_state' => :'desiredState',
161
+ :'error_reason' => :'errorReason',
146
162
  :'backup_state' => :'backupState',
163
+ :'backup_created_at' => :'backupCreatedAt',
147
164
  :'auto_stop_interval' => :'autoStopInterval',
148
165
  :'auto_archive_interval' => :'autoArchiveInterval',
149
166
  :'auto_delete_interval' => :'autoDeleteInterval',
167
+ :'runner_domain' => :'runnerDomain',
168
+ :'volumes' => :'volumes',
169
+ :'build_info' => :'buildInfo',
150
170
  :'created_at' => :'createdAt',
151
171
  :'updated_at' => :'updatedAt',
152
- :'last_activity_at' => :'lastActivityAt',
172
+ :'_class' => :'class',
153
173
  :'daemon_version' => :'daemonVersion',
154
- :'toolbox_proxy_url' => :'toolboxProxyUrl'
174
+ :'name' => :'name',
175
+ :'image' => :'image',
176
+ :'snapshot_state' => :'snapshotState',
177
+ :'snapshot_created_at' => :'snapshotCreatedAt',
178
+ :'info' => :'info'
155
179
  }
156
180
  end
157
181
 
@@ -170,32 +194,38 @@ module DaytonaApiClient
170
194
  {
171
195
  :'id' => :'String',
172
196
  :'organization_id' => :'String',
173
- :'name' => :'String',
174
- :'target' => :'String',
175
- :'runner_id' => :'String',
176
- :'sandbox_class' => :'SandboxClass',
177
- :'state' => :'SandboxState',
178
- :'desired_state' => :'SandboxDesiredState',
179
197
  :'snapshot' => :'String',
180
198
  :'user' => :'String',
181
- :'error_reason' => :'String',
182
- :'recoverable' => :'Boolean',
199
+ :'env' => :'Hash<String, String>',
200
+ :'labels' => :'Hash<String, String>',
183
201
  :'public' => :'Boolean',
202
+ :'network_block_all' => :'Boolean',
203
+ :'network_allow_list' => :'String',
204
+ :'target' => :'String',
184
205
  :'cpu' => :'Float',
185
206
  :'gpu' => :'Float',
186
- :'gpu_type' => :'GpuType',
187
207
  :'memory' => :'Float',
188
208
  :'disk' => :'Float',
189
- :'labels' => :'Hash<String, String>',
209
+ :'state' => :'SandboxState',
210
+ :'desired_state' => :'SandboxDesiredState',
211
+ :'error_reason' => :'String',
190
212
  :'backup_state' => :'String',
213
+ :'backup_created_at' => :'String',
191
214
  :'auto_stop_interval' => :'Float',
192
215
  :'auto_archive_interval' => :'Float',
193
216
  :'auto_delete_interval' => :'Float',
217
+ :'runner_domain' => :'String',
218
+ :'volumes' => :'Array<SandboxVolume>',
219
+ :'build_info' => :'BuildInfo',
194
220
  :'created_at' => :'String',
195
221
  :'updated_at' => :'String',
196
- :'last_activity_at' => :'String',
222
+ :'_class' => :'String',
197
223
  :'daemon_version' => :'String',
198
- :'toolbox_proxy_url' => :'String'
224
+ :'name' => :'String',
225
+ :'image' => :'String',
226
+ :'snapshot_state' => :'String',
227
+ :'snapshot_created_at' => :'String',
228
+ :'info' => :'SandboxInfo'
199
229
  }
200
230
  end
201
231
 
@@ -209,14 +239,14 @@ module DaytonaApiClient
209
239
  # @param [Hash] attributes Model attributes in the form of hash
210
240
  def initialize(attributes = {})
211
241
  if (!attributes.is_a?(Hash))
212
- fail ArgumentError, "The input argument (attributes) must be a hash in `DaytonaApiClient::SandboxListItem` initialize method"
242
+ fail ArgumentError, "The input argument (attributes) must be a hash in `DaytonaApiClient::Workspace` initialize method"
213
243
  end
214
244
 
215
245
  # check to see if the attribute exists and convert string to symbol for hash key
216
246
  acceptable_attribute_map = self.class.acceptable_attribute_map
217
247
  attributes = attributes.each_with_object({}) { |(k, v), h|
218
248
  if (!acceptable_attribute_map.key?(k.to_sym))
219
- fail ArgumentError, "`#{k}` is not a valid attribute in `DaytonaApiClient::SandboxListItem`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
249
+ fail ArgumentError, "`#{k}` is not a valid attribute in `DaytonaApiClient::Workspace`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
220
250
  end
221
251
  h[k.to_sym] = v
222
252
  }
@@ -233,34 +263,6 @@ module DaytonaApiClient
233
263
  self.organization_id = nil
234
264
  end
235
265
 
236
- if attributes.key?(:'name')
237
- self.name = attributes[:'name']
238
- else
239
- self.name = nil
240
- end
241
-
242
- if attributes.key?(:'target')
243
- self.target = attributes[:'target']
244
- else
245
- self.target = nil
246
- end
247
-
248
- if attributes.key?(:'runner_id')
249
- self.runner_id = attributes[:'runner_id']
250
- end
251
-
252
- if attributes.key?(:'sandbox_class')
253
- self.sandbox_class = attributes[:'sandbox_class']
254
- end
255
-
256
- if attributes.key?(:'state')
257
- self.state = attributes[:'state']
258
- end
259
-
260
- if attributes.key?(:'desired_state')
261
- self.desired_state = attributes[:'desired_state']
262
- end
263
-
264
266
  if attributes.key?(:'snapshot')
265
267
  self.snapshot = attributes[:'snapshot']
266
268
  end
@@ -271,12 +273,20 @@ module DaytonaApiClient
271
273
  self.user = nil
272
274
  end
273
275
 
274
- if attributes.key?(:'error_reason')
275
- self.error_reason = attributes[:'error_reason']
276
+ if attributes.key?(:'env')
277
+ if (value = attributes[:'env']).is_a?(Hash)
278
+ self.env = value
279
+ end
280
+ else
281
+ self.env = nil
276
282
  end
277
283
 
278
- if attributes.key?(:'recoverable')
279
- self.recoverable = attributes[:'recoverable']
284
+ if attributes.key?(:'labels')
285
+ if (value = attributes[:'labels']).is_a?(Hash)
286
+ self.labels = value
287
+ end
288
+ else
289
+ self.labels = nil
280
290
  end
281
291
 
282
292
  if attributes.key?(:'public')
@@ -285,6 +295,22 @@ module DaytonaApiClient
285
295
  self.public = nil
286
296
  end
287
297
 
298
+ if attributes.key?(:'network_block_all')
299
+ self.network_block_all = attributes[:'network_block_all']
300
+ else
301
+ self.network_block_all = nil
302
+ end
303
+
304
+ if attributes.key?(:'network_allow_list')
305
+ self.network_allow_list = attributes[:'network_allow_list']
306
+ end
307
+
308
+ if attributes.key?(:'target')
309
+ self.target = attributes[:'target']
310
+ else
311
+ self.target = nil
312
+ end
313
+
288
314
  if attributes.key?(:'cpu')
289
315
  self.cpu = attributes[:'cpu']
290
316
  else
@@ -297,10 +323,6 @@ module DaytonaApiClient
297
323
  self.gpu = nil
298
324
  end
299
325
 
300
- if attributes.key?(:'gpu_type')
301
- self.gpu_type = attributes[:'gpu_type']
302
- end
303
-
304
326
  if attributes.key?(:'memory')
305
327
  self.memory = attributes[:'memory']
306
328
  else
@@ -313,18 +335,26 @@ module DaytonaApiClient
313
335
  self.disk = nil
314
336
  end
315
337
 
316
- if attributes.key?(:'labels')
317
- if (value = attributes[:'labels']).is_a?(Hash)
318
- self.labels = value
319
- end
320
- else
321
- self.labels = nil
338
+ if attributes.key?(:'state')
339
+ self.state = attributes[:'state']
340
+ end
341
+
342
+ if attributes.key?(:'desired_state')
343
+ self.desired_state = attributes[:'desired_state']
344
+ end
345
+
346
+ if attributes.key?(:'error_reason')
347
+ self.error_reason = attributes[:'error_reason']
322
348
  end
323
349
 
324
350
  if attributes.key?(:'backup_state')
325
351
  self.backup_state = attributes[:'backup_state']
326
352
  end
327
353
 
354
+ if attributes.key?(:'backup_created_at')
355
+ self.backup_created_at = attributes[:'backup_created_at']
356
+ end
357
+
328
358
  if attributes.key?(:'auto_stop_interval')
329
359
  self.auto_stop_interval = attributes[:'auto_stop_interval']
330
360
  end
@@ -337,6 +367,20 @@ module DaytonaApiClient
337
367
  self.auto_delete_interval = attributes[:'auto_delete_interval']
338
368
  end
339
369
 
370
+ if attributes.key?(:'runner_domain')
371
+ self.runner_domain = attributes[:'runner_domain']
372
+ end
373
+
374
+ if attributes.key?(:'volumes')
375
+ if (value = attributes[:'volumes']).is_a?(Array)
376
+ self.volumes = value
377
+ end
378
+ end
379
+
380
+ if attributes.key?(:'build_info')
381
+ self.build_info = attributes[:'build_info']
382
+ end
383
+
340
384
  if attributes.key?(:'created_at')
341
385
  self.created_at = attributes[:'created_at']
342
386
  end
@@ -345,18 +389,34 @@ module DaytonaApiClient
345
389
  self.updated_at = attributes[:'updated_at']
346
390
  end
347
391
 
348
- if attributes.key?(:'last_activity_at')
349
- self.last_activity_at = attributes[:'last_activity_at']
392
+ if attributes.key?(:'_class')
393
+ self._class = attributes[:'_class']
350
394
  end
351
395
 
352
396
  if attributes.key?(:'daemon_version')
353
397
  self.daemon_version = attributes[:'daemon_version']
354
398
  end
355
399
 
356
- if attributes.key?(:'toolbox_proxy_url')
357
- self.toolbox_proxy_url = attributes[:'toolbox_proxy_url']
400
+ if attributes.key?(:'name')
401
+ self.name = attributes[:'name']
358
402
  else
359
- self.toolbox_proxy_url = nil
403
+ self.name = ''
404
+ end
405
+
406
+ if attributes.key?(:'image')
407
+ self.image = attributes[:'image']
408
+ end
409
+
410
+ if attributes.key?(:'snapshot_state')
411
+ self.snapshot_state = attributes[:'snapshot_state']
412
+ end
413
+
414
+ if attributes.key?(:'snapshot_created_at')
415
+ self.snapshot_created_at = attributes[:'snapshot_created_at']
416
+ end
417
+
418
+ if attributes.key?(:'info')
419
+ self.info = attributes[:'info']
360
420
  end
361
421
  end
362
422
 
@@ -373,22 +433,30 @@ module DaytonaApiClient
373
433
  invalid_properties.push('invalid value for "organization_id", organization_id cannot be nil.')
374
434
  end
375
435
 
376
- if @name.nil?
377
- invalid_properties.push('invalid value for "name", name cannot be nil.')
436
+ if @user.nil?
437
+ invalid_properties.push('invalid value for "user", user cannot be nil.')
378
438
  end
379
439
 
380
- if @target.nil?
381
- invalid_properties.push('invalid value for "target", target cannot be nil.')
440
+ if @env.nil?
441
+ invalid_properties.push('invalid value for "env", env cannot be nil.')
382
442
  end
383
443
 
384
- if @user.nil?
385
- invalid_properties.push('invalid value for "user", user cannot be nil.')
444
+ if @labels.nil?
445
+ invalid_properties.push('invalid value for "labels", labels cannot be nil.')
386
446
  end
387
447
 
388
448
  if @public.nil?
389
449
  invalid_properties.push('invalid value for "public", public cannot be nil.')
390
450
  end
391
451
 
452
+ if @network_block_all.nil?
453
+ invalid_properties.push('invalid value for "network_block_all", network_block_all cannot be nil.')
454
+ end
455
+
456
+ if @target.nil?
457
+ invalid_properties.push('invalid value for "target", target cannot be nil.')
458
+ end
459
+
392
460
  if @cpu.nil?
393
461
  invalid_properties.push('invalid value for "cpu", cpu cannot be nil.')
394
462
  end
@@ -405,12 +473,8 @@ module DaytonaApiClient
405
473
  invalid_properties.push('invalid value for "disk", disk cannot be nil.')
406
474
  end
407
475
 
408
- if @labels.nil?
409
- invalid_properties.push('invalid value for "labels", labels cannot be nil.')
410
- end
411
-
412
- if @toolbox_proxy_url.nil?
413
- invalid_properties.push('invalid value for "toolbox_proxy_url", toolbox_proxy_url cannot be nil.')
476
+ if @name.nil?
477
+ invalid_properties.push('invalid value for "name", name cannot be nil.')
414
478
  end
415
479
 
416
480
  invalid_properties
@@ -422,18 +486,23 @@ module DaytonaApiClient
422
486
  warn '[DEPRECATED] the `valid?` method is obsolete'
423
487
  return false if @id.nil?
424
488
  return false if @organization_id.nil?
425
- return false if @name.nil?
426
- return false if @target.nil?
427
489
  return false if @user.nil?
490
+ return false if @env.nil?
491
+ return false if @labels.nil?
428
492
  return false if @public.nil?
493
+ return false if @network_block_all.nil?
494
+ return false if @target.nil?
429
495
  return false if @cpu.nil?
430
496
  return false if @gpu.nil?
431
497
  return false if @memory.nil?
432
498
  return false if @disk.nil?
433
- return false if @labels.nil?
434
- backup_state_validator = EnumAttributeValidator.new('String', ["None", "Pending", "InProgress", "Completed", "Error", "unknown_default_open_api"])
499
+ backup_state_validator = EnumAttributeValidator.new('String', ["None", "Pending", "InProgress", "Completed", "Error"])
435
500
  return false unless backup_state_validator.valid?(@backup_state)
436
- return false if @toolbox_proxy_url.nil?
501
+ _class_validator = EnumAttributeValidator.new('String', ["small", "medium", "large"])
502
+ return false unless _class_validator.valid?(@_class)
503
+ return false if @name.nil?
504
+ snapshot_state_validator = EnumAttributeValidator.new('String', ["None", "Pending", "InProgress", "Completed", "Error"])
505
+ return false unless snapshot_state_validator.valid?(@snapshot_state)
437
506
  true
438
507
  end
439
508
 
@@ -458,33 +527,33 @@ module DaytonaApiClient
458
527
  end
459
528
 
460
529
  # Custom attribute writer method with validation
461
- # @param [Object] name Value to be assigned
462
- def name=(name)
463
- if name.nil?
464
- fail ArgumentError, 'name cannot be nil'
530
+ # @param [Object] user Value to be assigned
531
+ def user=(user)
532
+ if user.nil?
533
+ fail ArgumentError, 'user cannot be nil'
465
534
  end
466
535
 
467
- @name = name
536
+ @user = user
468
537
  end
469
538
 
470
539
  # Custom attribute writer method with validation
471
- # @param [Object] target Value to be assigned
472
- def target=(target)
473
- if target.nil?
474
- fail ArgumentError, 'target cannot be nil'
540
+ # @param [Object] env Value to be assigned
541
+ def env=(env)
542
+ if env.nil?
543
+ fail ArgumentError, 'env cannot be nil'
475
544
  end
476
545
 
477
- @target = target
546
+ @env = env
478
547
  end
479
548
 
480
549
  # Custom attribute writer method with validation
481
- # @param [Object] user Value to be assigned
482
- def user=(user)
483
- if user.nil?
484
- fail ArgumentError, 'user cannot be nil'
550
+ # @param [Object] labels Value to be assigned
551
+ def labels=(labels)
552
+ if labels.nil?
553
+ fail ArgumentError, 'labels cannot be nil'
485
554
  end
486
555
 
487
- @user = user
556
+ @labels = labels
488
557
  end
489
558
 
490
559
  # Custom attribute writer method with validation
@@ -497,6 +566,26 @@ module DaytonaApiClient
497
566
  @public = public
498
567
  end
499
568
 
569
+ # Custom attribute writer method with validation
570
+ # @param [Object] network_block_all Value to be assigned
571
+ def network_block_all=(network_block_all)
572
+ if network_block_all.nil?
573
+ fail ArgumentError, 'network_block_all cannot be nil'
574
+ end
575
+
576
+ @network_block_all = network_block_all
577
+ end
578
+
579
+ # Custom attribute writer method with validation
580
+ # @param [Object] target Value to be assigned
581
+ def target=(target)
582
+ if target.nil?
583
+ fail ArgumentError, 'target cannot be nil'
584
+ end
585
+
586
+ @target = target
587
+ end
588
+
500
589
  # Custom attribute writer method with validation
501
590
  # @param [Object] cpu Value to be assigned
502
591
  def cpu=(cpu)
@@ -537,34 +626,44 @@ module DaytonaApiClient
537
626
  @disk = disk
538
627
  end
539
628
 
540
- # Custom attribute writer method with validation
541
- # @param [Object] labels Value to be assigned
542
- def labels=(labels)
543
- if labels.nil?
544
- fail ArgumentError, 'labels cannot be nil'
545
- end
546
-
547
- @labels = labels
548
- end
549
-
550
629
  # Custom attribute writer method checking allowed values (enum).
551
630
  # @param [Object] backup_state Object to be assigned
552
631
  def backup_state=(backup_state)
553
- validator = EnumAttributeValidator.new('String', ["None", "Pending", "InProgress", "Completed", "Error", "unknown_default_open_api"])
632
+ validator = EnumAttributeValidator.new('String', ["None", "Pending", "InProgress", "Completed", "Error"])
554
633
  unless validator.valid?(backup_state)
555
634
  fail ArgumentError, "invalid value for \"backup_state\", must be one of #{validator.allowable_values}."
556
635
  end
557
636
  @backup_state = backup_state
558
637
  end
559
638
 
639
+ # Custom attribute writer method checking allowed values (enum).
640
+ # @param [Object] _class Object to be assigned
641
+ def _class=(_class)
642
+ validator = EnumAttributeValidator.new('String', ["small", "medium", "large"])
643
+ unless validator.valid?(_class)
644
+ fail ArgumentError, "invalid value for \"_class\", must be one of #{validator.allowable_values}."
645
+ end
646
+ @_class = _class
647
+ end
648
+
560
649
  # Custom attribute writer method with validation
561
- # @param [Object] toolbox_proxy_url Value to be assigned
562
- def toolbox_proxy_url=(toolbox_proxy_url)
563
- if toolbox_proxy_url.nil?
564
- fail ArgumentError, 'toolbox_proxy_url cannot be nil'
650
+ # @param [Object] name Value to be assigned
651
+ def name=(name)
652
+ if name.nil?
653
+ fail ArgumentError, 'name cannot be nil'
565
654
  end
566
655
 
567
- @toolbox_proxy_url = toolbox_proxy_url
656
+ @name = name
657
+ end
658
+
659
+ # Custom attribute writer method checking allowed values (enum).
660
+ # @param [Object] snapshot_state Object to be assigned
661
+ def snapshot_state=(snapshot_state)
662
+ validator = EnumAttributeValidator.new('String', ["None", "Pending", "InProgress", "Completed", "Error"])
663
+ unless validator.valid?(snapshot_state)
664
+ fail ArgumentError, "invalid value for \"snapshot_state\", must be one of #{validator.allowable_values}."
665
+ end
666
+ @snapshot_state = snapshot_state
568
667
  end
569
668
 
570
669
  # Checks equality by comparing each attribute.
@@ -574,32 +673,38 @@ module DaytonaApiClient
574
673
  self.class == o.class &&
575
674
  id == o.id &&
576
675
  organization_id == o.organization_id &&
577
- name == o.name &&
578
- target == o.target &&
579
- runner_id == o.runner_id &&
580
- sandbox_class == o.sandbox_class &&
581
- state == o.state &&
582
- desired_state == o.desired_state &&
583
676
  snapshot == o.snapshot &&
584
677
  user == o.user &&
585
- error_reason == o.error_reason &&
586
- recoverable == o.recoverable &&
678
+ env == o.env &&
679
+ labels == o.labels &&
587
680
  public == o.public &&
681
+ network_block_all == o.network_block_all &&
682
+ network_allow_list == o.network_allow_list &&
683
+ target == o.target &&
588
684
  cpu == o.cpu &&
589
685
  gpu == o.gpu &&
590
- gpu_type == o.gpu_type &&
591
686
  memory == o.memory &&
592
687
  disk == o.disk &&
593
- labels == o.labels &&
688
+ state == o.state &&
689
+ desired_state == o.desired_state &&
690
+ error_reason == o.error_reason &&
594
691
  backup_state == o.backup_state &&
692
+ backup_created_at == o.backup_created_at &&
595
693
  auto_stop_interval == o.auto_stop_interval &&
596
694
  auto_archive_interval == o.auto_archive_interval &&
597
695
  auto_delete_interval == o.auto_delete_interval &&
696
+ runner_domain == o.runner_domain &&
697
+ volumes == o.volumes &&
698
+ build_info == o.build_info &&
598
699
  created_at == o.created_at &&
599
700
  updated_at == o.updated_at &&
600
- last_activity_at == o.last_activity_at &&
701
+ _class == o._class &&
601
702
  daemon_version == o.daemon_version &&
602
- toolbox_proxy_url == o.toolbox_proxy_url
703
+ name == o.name &&
704
+ image == o.image &&
705
+ snapshot_state == o.snapshot_state &&
706
+ snapshot_created_at == o.snapshot_created_at &&
707
+ info == o.info
603
708
  end
604
709
 
605
710
  # @see the `==` method
@@ -611,7 +716,7 @@ module DaytonaApiClient
611
716
  # Calculates hash code according to all attributes.
612
717
  # @return [Integer] Hash code
613
718
  def hash
614
- [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_archive_interval, auto_delete_interval, created_at, updated_at, last_activity_at, daemon_version, toolbox_proxy_url].hash
719
+ [id, organization_id, snapshot, user, env, labels, public, network_block_all, network_allow_list, target, cpu, gpu, memory, disk, state, desired_state, error_reason, backup_state, backup_created_at, auto_stop_interval, auto_archive_interval, auto_delete_interval, runner_domain, volumes, build_info, created_at, updated_at, _class, daemon_version, name, image, snapshot_state, snapshot_created_at, info].hash
615
720
  end
616
721
 
617
722
  # Builds the object from hash
@@ -637,6 +742,61 @@ module DaytonaApiClient
637
742
  new(transformed_hash)
638
743
  end
639
744
 
745
+ # Deserializes the data based on type
746
+ # @param string type Data type
747
+ # @param string value Value to be deserialized
748
+ # @return [Object] Deserialized data
749
+ def self._deserialize(type, value)
750
+ case type.to_sym
751
+ when :Time
752
+ Time.parse(value)
753
+ when :Date
754
+ Date.parse(value)
755
+ when :String
756
+ value.to_s
757
+ when :Integer
758
+ value.to_i
759
+ when :Float
760
+ value.to_f
761
+ when :Boolean
762
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
763
+ true
764
+ else
765
+ false
766
+ end
767
+ when :Object
768
+ # generic object (usually a Hash), return directly
769
+ value
770
+ when /\AArray<(?<inner_type>.+)>\z/
771
+ inner_type = Regexp.last_match[:inner_type]
772
+ value.map { |v| _deserialize(inner_type, v) }
773
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
774
+ k_type = Regexp.last_match[:k_type]
775
+ v_type = Regexp.last_match[:v_type]
776
+ {}.tap do |hash|
777
+ value.each do |k, v|
778
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
779
+ end
780
+ end
781
+ else # model
782
+ # models (e.g. Pet) or oneOf
783
+ klass = DaytonaApiClient.const_get(type)
784
+ klass.respond_to?(:openapi_any_of) || klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
785
+ end
786
+ end
787
+
788
+ # Returns the string representation of the object
789
+ # @return [String] String presentation of the object
790
+ def to_s
791
+ to_hash.to_s
792
+ end
793
+
794
+ # to_body is an alias to to_hash (backward compatibility)
795
+ # @return [Hash] Returns the object in the form of hash
796
+ def to_body
797
+ to_hash
798
+ end
799
+
640
800
  # Returns the object in the form of hash
641
801
  # @return [Hash] Returns the object in the form of hash
642
802
  def to_hash
@@ -653,6 +813,22 @@ module DaytonaApiClient
653
813
  hash
654
814
  end
655
815
 
816
+ # Outputs non-array value in the form of hash
817
+ # For object, use to_hash. Otherwise, just return the value
818
+ # @param [Object] value Any valid value
819
+ # @return [Hash] Returns the value in the form of hash
820
+ def _to_hash(value)
821
+ if value.is_a?(Array)
822
+ value.compact.map { |v| _to_hash(v) }
823
+ elsif value.is_a?(Hash)
824
+ {}.tap do |hash|
825
+ value.each { |k, v| hash[k] = _to_hash(v) }
826
+ end
827
+ elsif value.respond_to? :to_hash
828
+ value.to_hash
829
+ else
830
+ value
831
+ end
832
+ end
656
833
  end
657
-
658
834
  end