volcano-sdk 0.32.7 → 0.34.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 (496) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +54 -2
  3. data/lib/volcano/auth_profile_fields.rb +2 -2
  4. data/lib/volcano/client.rb +3 -2
  5. data/lib/volcano/durable.rb +7 -34
  6. data/lib/volcano/durable_approval_models.rb +171 -0
  7. data/lib/volcano/durable_approval_responses.rb +222 -0
  8. data/lib/volcano/durable_approvals.rb +143 -0
  9. data/lib/volcano/durable_arguments.rb +59 -0
  10. data/lib/volcano/durable_models.rb +0 -4
  11. data/lib/volcano/errors.rb +5 -0
  12. data/lib/volcano/generated/lib/volcano-generated/api/anon_keys_api.rb +8 -8
  13. data/lib/volcano/generated/lib/volcano-generated/api/auth_admin_api.rb +17 -17
  14. data/lib/volcano/generated/lib/volcano-generated/api/auth_configuration_api.rb +26 -26
  15. data/lib/volcano/generated/lib/volcano-generated/api/authentication_api.rb +4 -4
  16. data/lib/volcano/generated/lib/volcano-generated/api/database_backups_api.rb +11 -11
  17. data/lib/volcano/generated/lib/volcano-generated/api/database_branches_api.rb +9 -9
  18. data/lib/volcano/generated/lib/volcano-generated/api/database_queries_api.rb +4 -4
  19. data/lib/volcano/generated/lib/volcano-generated/api/databases_api.rb +18 -18
  20. data/lib/volcano/generated/lib/volcano-generated/api/durable_functions_api.rb +559 -8
  21. data/lib/volcano/generated/lib/volcano-generated/api/frontends_api.rb +337 -21
  22. data/lib/volcano/generated/lib/volcano-generated/api/functions_api.rb +33 -27
  23. data/lib/volcano/generated/lib/volcano-generated/api/git_connections_api.rb +19 -11
  24. data/lib/volcano/generated/lib/volcano-generated/api/locks_api.rb +2 -2
  25. data/lib/volcano/generated/lib/volcano-generated/api/logs_api.rb +11 -11
  26. data/lib/volcano/generated/lib/volcano-generated/api/o_auth_authentication_api.rb +2 -2
  27. data/lib/volcano/generated/lib/volcano-generated/api/o_auth_configuration_api.rb +8 -8
  28. data/lib/volcano/generated/lib/volcano-generated/api/project_access_tokens_api.rb +479 -0
  29. data/lib/volcano/generated/lib/volcano-generated/api/project_imports_api.rb +10 -2
  30. data/lib/volcano/generated/lib/volcano-generated/api/projects_api.rb +110 -30
  31. data/lib/volcano/generated/lib/volcano-generated/api/realtime_api.rb +5 -5
  32. data/lib/volcano/generated/lib/volcano-generated/api/sandboxes_api.rb +1792 -0
  33. data/lib/volcano/generated/lib/volcano-generated/api/service_keys_api.rb +9 -9
  34. data/lib/volcano/generated/lib/volcano-generated/api/storage_admin_api.rb +4 -4
  35. data/lib/volcano/generated/lib/volcano-generated/api/storage_buckets_api.rb +7 -7
  36. data/lib/volcano/generated/lib/volcano-generated/api/storage_objects_api.rb +2 -2
  37. data/lib/volcano/generated/lib/volcano-generated/api/storage_policies_api.rb +5 -5
  38. data/lib/volcano/generated/lib/volcano-generated/api/system_api.rb +310 -2
  39. data/lib/volcano/generated/lib/volcano-generated/api/variables_api.rb +13 -13
  40. data/lib/volcano/generated/lib/volcano-generated/api/verified_domains_api.rb +214 -0
  41. data/lib/volcano/generated/lib/volcano-generated/api_client.rb +2 -2
  42. data/lib/volcano/generated/lib/volcano-generated/api_error.rb +2 -2
  43. data/lib/volcano/generated/lib/volcano-generated/api_model_base.rb +2 -2
  44. data/lib/volcano/generated/lib/volcano-generated/configuration.rb +11 -3
  45. data/lib/volcano/generated/lib/volcano-generated/models/anon_key.rb +2 -2
  46. data/lib/volcano/generated/lib/volcano-generated/models/auth_config.rb +2 -2
  47. data/lib/volcano/generated/lib/volcano-generated/models/auth_confirm_email200_response.rb +2 -2
  48. data/lib/volcano/generated/lib/volcano-generated/models/auth_confirm_email_change200_response.rb +2 -2
  49. data/lib/volcano/generated/lib/volcano-generated/models/auth_confirm_email_change_request.rb +2 -2
  50. data/lib/volcano/generated/lib/volcano-generated/models/auth_confirm_email_request.rb +2 -2
  51. data/lib/volcano/generated/lib/volcano-generated/models/auth_convert_anonymous200_response.rb +2 -2
  52. data/lib/volcano/generated/lib/volcano-generated/models/auth_device_authorize_request.rb +2 -2
  53. data/lib/volcano/generated/lib/volcano-generated/models/auth_device_token_request.rb +2 -2
  54. data/lib/volcano/generated/lib/volcano-generated/models/auth_device_verify200_response.rb +2 -2
  55. data/lib/volcano/generated/lib/volcano-generated/models/auth_device_verify_request.rb +2 -2
  56. data/lib/volcano/generated/lib/volcano-generated/models/auth_forgot_password200_response.rb +2 -2
  57. data/lib/volcano/generated/lib/volcano-generated/models/auth_forgot_password_request.rb +2 -2
  58. data/lib/volcano/generated/lib/volcano-generated/models/auth_get_my_sessions200_response.rb +2 -2
  59. data/lib/volcano/generated/lib/volcano-generated/models/auth_hosted_page.rb +2 -2
  60. data/lib/volcano/generated/lib/volcano-generated/models/auth_hosted_page_defaults.rb +2 -2
  61. data/lib/volcano/generated/lib/volcano-generated/models/auth_hosted_page_response.rb +2 -2
  62. data/lib/volcano/generated/lib/volcano-generated/models/auth_hosted_page_runtime.rb +2 -2
  63. data/lib/volcano/generated/lib/volcano-generated/models/auth_identities_response.rb +2 -2
  64. data/lib/volcano/generated/lib/volcano-generated/models/auth_identity.rb +2 -2
  65. data/lib/volcano/generated/lib/volcano-generated/models/auth_insights_interval.rb +2 -2
  66. data/lib/volcano/generated/lib/volcano-generated/models/auth_insights_response.rb +2 -2
  67. data/lib/volcano/generated/lib/volcano-generated/models/auth_insights_series_point.rb +67 -4
  68. data/lib/volcano/generated/lib/volcano-generated/models/auth_insights_summary.rb +77 -5
  69. data/lib/volcano/generated/lib/volcano-generated/models/auth_insights_window.rb +2 -2
  70. data/lib/volcano/generated/lib/volcano-generated/models/auth_link_o_auth_provider200_response.rb +2 -2
  71. data/lib/volcano/generated/lib/volcano-generated/models/auth_list_o_auth_providers200_response.rb +2 -2
  72. data/lib/volcano/generated/lib/volcano-generated/models/auth_list_o_auth_providers200_response_providers_inner.rb +2 -2
  73. data/lib/volcano/generated/lib/volcano-generated/models/auth_method_summary.rb +2 -2
  74. data/lib/volcano/generated/lib/volcano-generated/models/auth_methods_response.rb +2 -2
  75. data/lib/volcano/generated/lib/volcano-generated/models/auth_o_auth_exchange_request.rb +2 -2
  76. data/lib/volcano/generated/lib/volcano-generated/models/auth_page_appearance_defaults.rb +2 -2
  77. data/lib/volcano/generated/lib/volcano-generated/models/auth_page_appearance_options.rb +2 -2
  78. data/lib/volcano/generated/lib/volcano-generated/models/auth_page_appearance_response.rb +2 -2
  79. data/lib/volcano/generated/lib/volcano-generated/models/auth_page_density.rb +2 -2
  80. data/lib/volcano/generated/lib/volcano-generated/models/auth_page_font.rb +2 -2
  81. data/lib/volcano/generated/lib/volcano-generated/models/auth_page_layout.rb +2 -2
  82. data/lib/volcano/generated/lib/volcano-generated/models/auth_page_radius.rb +2 -2
  83. data/lib/volcano/generated/lib/volcano-generated/models/auth_page_scale.rb +2 -2
  84. data/lib/volcano/generated/lib/volcano-generated/models/auth_page_theme.rb +2 -2
  85. data/lib/volcano/generated/lib/volcano-generated/models/auth_page_theme_colors.rb +2 -2
  86. data/lib/volcano/generated/lib/volcano-generated/models/auth_password_policy.rb +2 -2
  87. data/lib/volcano/generated/lib/volcano-generated/models/auth_platform_exchange_request.rb +2 -2
  88. data/lib/volcano/generated/lib/volcano-generated/models/auth_refresh_request.rb +2 -2
  89. data/lib/volcano/generated/lib/volcano-generated/models/auth_request_email_change200_response.rb +2 -2
  90. data/lib/volcano/generated/lib/volcano-generated/models/auth_request_email_change_request.rb +2 -2
  91. data/lib/volcano/generated/lib/volcano-generated/models/auth_reset_password200_response.rb +2 -2
  92. data/lib/volcano/generated/lib/volcano-generated/models/auth_reset_password_request.rb +2 -2
  93. data/lib/volcano/generated/lib/volcano-generated/models/auth_session.rb +2 -2
  94. data/lib/volcano/generated/lib/volcano-generated/models/auth_signin_request.rb +2 -2
  95. data/lib/volcano/generated/lib/volcano-generated/models/auth_signup_anonymous_request.rb +2 -2
  96. data/lib/volcano/generated/lib/volcano-generated/models/auth_signup_request.rb +2 -2
  97. data/lib/volcano/generated/lib/volcano-generated/models/auth_signup_response.rb +2 -2
  98. data/lib/volcano/generated/lib/volcano-generated/models/auth_token_response.rb +2 -2
  99. data/lib/volcano/generated/lib/volcano-generated/models/auth_update_user_request.rb +2 -2
  100. data/lib/volcano/generated/lib/volcano-generated/models/auth_user.rb +2 -2
  101. data/lib/volcano/generated/lib/volcano-generated/models/ban_auth_user_request.rb +2 -2
  102. data/lib/volcano/generated/lib/volcano-generated/models/ban_user_response.rb +2 -2
  103. data/lib/volcano/generated/lib/volcano-generated/models/batch_function_deploy_failure.rb +2 -2
  104. data/lib/volcano/generated/lib/volcano-generated/models/batch_function_deploy_response.rb +2 -2
  105. data/lib/volcano/generated/lib/volcano-generated/models/byoc_project_config_frontend_custom_domain_tls_config.rb +270 -0
  106. data/lib/volcano/generated/lib/volcano-generated/models/byoc_project_config_frontend_custom_domain_tls_config_not.rb +102 -0
  107. data/lib/volcano/generated/lib/volcano-generated/models/call_mcp200_response.rb +220 -0
  108. data/lib/volcano/generated/lib/volcano-generated/models/call_mcp200_response_error.rb +190 -0
  109. data/lib/volcano/generated/lib/volcano-generated/models/call_mcp200_response_id.rb +105 -0
  110. data/lib/volcano/generated/lib/volcano-generated/models/call_mcp_request.rb +236 -0
  111. data/lib/volcano/generated/lib/volcano-generated/models/call_mcp_request_id.rb +105 -0
  112. data/lib/volcano/generated/lib/volcano-generated/models/call_o_auth_provider_api200_response.rb +2 -2
  113. data/lib/volcano/generated/lib/volcano-generated/models/call_o_auth_provider_api_request.rb +2 -2
  114. data/lib/volcano/generated/lib/volcano-generated/models/complete_upload_session_response.rb +2 -2
  115. data/lib/volcano/generated/lib/volcano-generated/models/configure_auth_methods_request.rb +2 -2
  116. data/lib/volcano/generated/lib/volcano-generated/models/configure_auth_methods_request_oauth_providers_inner.rb +2 -2
  117. data/lib/volcano/generated/lib/volcano-generated/models/connect_project_git_request.rb +2 -2
  118. data/lib/volcano/generated/lib/volcano-generated/models/create_anon_key_request.rb +2 -2
  119. data/lib/volcano/generated/lib/volcano-generated/models/create_database_backup_request.rb +2 -2
  120. data/lib/volcano/generated/lib/volcano-generated/models/create_database_branch_request.rb +2 -2
  121. data/lib/volcano/generated/lib/volcano-generated/models/create_database_request.rb +6 -6
  122. data/lib/volcano/generated/lib/volcano-generated/models/create_database_restore_request.rb +2 -2
  123. data/lib/volcano/generated/lib/volcano-generated/models/create_email_template_request.rb +2 -2
  124. data/lib/volcano/generated/lib/volcano-generated/models/create_frontend_custom_domain_request.rb +12 -3
  125. data/lib/volcano/generated/lib/volcano-generated/models/create_frontend_function_route_request.rb +230 -0
  126. data/lib/volcano/generated/lib/volcano-generated/models/create_function_scheduler_request.rb +2 -2
  127. data/lib/volcano/generated/lib/volcano-generated/models/create_o_auth_config_request.rb +2 -2
  128. data/lib/volcano/generated/lib/volcano-generated/models/create_project_access_token_request.rb +241 -0
  129. data/lib/volcano/generated/lib/volcano-generated/models/create_project_request.rb +57 -3
  130. data/lib/volcano/generated/lib/volcano-generated/models/create_sandbox_session_request.rb +292 -0
  131. data/lib/volcano/generated/lib/volcano-generated/models/create_sandbox_template_request.rb +247 -0
  132. data/lib/volcano/generated/lib/volcano-generated/models/create_service_key_request.rb +2 -2
  133. data/lib/volcano/generated/lib/volcano-generated/models/create_storage_bucket_request.rb +2 -2
  134. data/lib/volcano/generated/lib/volcano-generated/models/create_storage_policy_request.rb +2 -2
  135. data/lib/volcano/generated/lib/volcano-generated/models/create_upload_session_request.rb +2 -2
  136. data/lib/volcano/generated/lib/volcano-generated/models/create_upload_session_response.rb +2 -2
  137. data/lib/volcano/generated/lib/volcano-generated/models/create_variable_request.rb +3 -2
  138. data/lib/volcano/generated/lib/volcano-generated/models/created_project_access_token.rb +459 -0
  139. data/lib/volcano/generated/lib/volcano-generated/models/database.rb +2 -2
  140. data/lib/volcano/generated/lib/volcano-generated/models/database_backup.rb +2 -2
  141. data/lib/volcano/generated/lib/volcano-generated/models/database_backup_list.rb +2 -2
  142. data/lib/volcano/generated/lib/volcano-generated/models/database_backup_schedule.rb +2 -2
  143. data/lib/volcano/generated/lib/volcano-generated/models/database_backup_schedule_entry.rb +2 -2
  144. data/lib/volcano/generated/lib/volcano-generated/models/database_branch.rb +2 -2
  145. data/lib/volcano/generated/lib/volcano-generated/models/database_branch_list.rb +2 -2
  146. data/lib/volcano/generated/lib/volcano-generated/models/database_branch_storage.rb +2 -2
  147. data/lib/volcano/generated/lib/volcano-generated/models/database_delete_request.rb +2 -2
  148. data/lib/volcano/generated/lib/volcano-generated/models/database_insert_request.rb +3 -3
  149. data/lib/volcano/generated/lib/volcano-generated/models/database_query_filter.rb +2 -2
  150. data/lib/volcano/generated/lib/volcano-generated/models/database_query_filter_value.rb +3 -3
  151. data/lib/volcano/generated/lib/volcano-generated/models/database_query_filter_value_one_of_inner.rb +3 -3
  152. data/lib/volcano/generated/lib/volcano-generated/models/database_query_order.rb +2 -2
  153. data/lib/volcano/generated/lib/volcano-generated/models/database_query_performance_database.rb +2 -2
  154. data/lib/volcano/generated/lib/volcano-generated/models/database_query_performance_item.rb +4 -4
  155. data/lib/volcano/generated/lib/volcano-generated/models/database_query_performance_response.rb +2 -2
  156. data/lib/volcano/generated/lib/volcano-generated/models/database_query_result.rb +2 -2
  157. data/lib/volcano/generated/lib/volcano-generated/models/database_restore.rb +2 -2
  158. data/lib/volcano/generated/lib/volcano-generated/models/database_restore_list.rb +2 -2
  159. data/lib/volcano/generated/lib/volcano-generated/models/database_restore_window.rb +2 -2
  160. data/lib/volcano/generated/lib/volcano-generated/models/database_select_request.rb +2 -2
  161. data/lib/volcano/generated/lib/volcano-generated/models/database_stats.rb +2 -2
  162. data/lib/volcano/generated/lib/volcano-generated/models/database_update_request.rb +3 -3
  163. data/lib/volcano/generated/lib/volcano-generated/models/delete_database202_response.rb +2 -2
  164. data/lib/volcano/generated/lib/volcano-generated/models/delete_database_backup200_response.rb +2 -2
  165. data/lib/volcano/generated/lib/volcano-generated/models/delete_database_branch202_response.rb +2 -2
  166. data/lib/volcano/generated/lib/volcano-generated/models/deployment_phase.rb +2 -2
  167. data/lib/volcano/generated/lib/volcano-generated/models/deployment_progress.rb +2 -2
  168. data/lib/volcano/generated/lib/volcano-generated/models/deployment_reference.rb +2 -2
  169. data/lib/volcano/generated/lib/volcano-generated/models/device_authorization_response.rb +2 -2
  170. data/lib/volcano/generated/lib/volcano-generated/models/durable_approval.rb +406 -0
  171. data/lib/volcano/generated/lib/volcano-generated/models/durable_approval_counts.rb +295 -0
  172. data/lib/volcano/generated/lib/volcano-generated/models/durable_approval_daily_counts.rb +190 -0
  173. data/lib/volcano/generated/lib/volcano-generated/models/durable_approval_decider.rb +191 -0
  174. data/lib/volcano/generated/lib/volcano-generated/models/durable_approval_decision.rb +203 -0
  175. data/lib/volcano/generated/lib/volcano-generated/models/durable_approval_decision_request.rb +167 -0
  176. data/lib/volcano/generated/lib/volcano-generated/models/durable_approval_execution.rb +211 -0
  177. data/lib/volcano/generated/lib/volcano-generated/models/durable_approval_function.rb +177 -0
  178. data/lib/volcano/generated/lib/volcano-generated/models/durable_approval_function_counts.rb +190 -0
  179. data/lib/volcano/generated/lib/volcano-generated/models/durable_approval_registration.rb +225 -0
  180. data/lib/volcano/generated/lib/volcano-generated/models/durable_approval_stats.rb +339 -0
  181. data/lib/volcano/generated/lib/volcano-generated/models/durable_approval_status.rb +43 -0
  182. data/lib/volcano/generated/lib/volcano-generated/models/durable_execution.rb +2 -2
  183. data/lib/volcano/generated/lib/volcano-generated/models/durable_execution_error.rb +2 -2
  184. data/lib/volcano/generated/lib/volcano-generated/models/durable_execution_invocation.rb +191 -0
  185. data/lib/volcano/generated/lib/volcano-generated/models/durable_execution_operation.rb +372 -0
  186. data/lib/volcano/generated/lib/volcano-generated/models/durable_execution_operation_attempt.rb +271 -0
  187. data/lib/volcano/generated/lib/volcano-generated/models/durable_execution_operation_list.rb +234 -0
  188. data/lib/volcano/generated/lib/volcano-generated/models/durable_execution_status.rb +2 -2
  189. data/lib/volcano/generated/lib/volcano-generated/models/durable_function.rb +31 -4
  190. data/lib/volcano/generated/lib/volcano-generated/models/durable_function_config.rb +2 -2
  191. data/lib/volcano/generated/lib/volcano-generated/models/email_template.rb +2 -2
  192. data/lib/volcano/generated/lib/volcano-generated/models/error.rb +2 -2
  193. data/lib/volcano/generated/lib/volcano-generated/models/export_project_source_request.rb +2 -2
  194. data/lib/volcano/generated/lib/volcano-generated/models/frontend.rb +85 -3
  195. data/lib/volcano/generated/lib/volcano-generated/models/frontend_custom_domain_conflict_error.rb +191 -0
  196. data/lib/volcano/generated/lib/volcano-generated/models/frontend_custom_domain_response.rb +27 -5
  197. data/lib/volcano/generated/lib/volcano-generated/models/frontend_custom_domain_tls_config.rb +42 -18
  198. data/lib/volcano/generated/lib/volcano-generated/models/frontend_custom_domain_tls_config_not.rb +103 -0
  199. data/lib/volcano/generated/lib/volcano-generated/models/frontend_custom_domain_tls_config_not_any_of.rb +188 -0
  200. data/lib/volcano/generated/lib/volcano-generated/models/frontend_custom_domain_tls_config_not_any_of1.rb +188 -0
  201. data/lib/volcano/generated/lib/volcano-generated/models/frontend_deployment.rb +24 -68
  202. data/lib/volcano/generated/lib/volcano-generated/models/frontend_domain_routing_record.rb +2 -2
  203. data/lib/volcano/generated/lib/volcano-generated/models/frontend_domain_verification_record.rb +3 -2
  204. data/lib/volcano/generated/lib/volcano-generated/models/frontend_function_route.rb +375 -0
  205. data/lib/volcano/generated/lib/volcano-generated/models/frontend_function_route_list.rb +166 -0
  206. data/lib/volcano/generated/lib/volcano-generated/models/frontend_usage_daily_entry.rb +2 -2
  207. data/lib/volcano/generated/lib/volcano-generated/models/frontend_usage_data.rb +2 -2
  208. data/lib/volcano/generated/lib/volcano-generated/models/frontend_usage_history_response.rb +2 -2
  209. data/lib/volcano/generated/lib/volcano-generated/models/function.rb +31 -14
  210. data/lib/volcano/generated/lib/volcano-generated/models/function_deployment.rb +24 -50
  211. data/lib/volcano/generated/lib/volcano-generated/models/function_http_auth_mode.rb +2 -2
  212. data/lib/volcano/generated/lib/volcano-generated/models/function_invocation_mode.rb +2 -2
  213. data/lib/volcano/generated/lib/volcano-generated/models/function_invocation_request.rb +2 -2
  214. data/lib/volcano/generated/lib/volcano-generated/models/function_kind.rb +2 -2
  215. data/lib/volcano/generated/lib/volcano-generated/models/function_kind_filter.rb +40 -0
  216. data/lib/volcano/generated/lib/volcano-generated/models/function_region.rb +2 -2
  217. data/lib/volcano/generated/lib/volcano-generated/models/function_runtime_deployment.rb +2 -2
  218. data/lib/volcano/generated/lib/volcano-generated/models/function_runtime_option.rb +30 -3
  219. data/lib/volcano/generated/lib/volcano-generated/models/function_runtimes_response.rb +2 -2
  220. data/lib/volcano/generated/lib/volcano-generated/models/function_scheduler.rb +2 -2
  221. data/lib/volcano/generated/lib/volcano-generated/models/function_scheduler_list_response.rb +2 -2
  222. data/lib/volcano/generated/lib/volcano-generated/models/function_visibility.rb +41 -0
  223. data/lib/volcano/generated/lib/volcano-generated/models/get_auth_methods200_response.rb +2 -2
  224. data/lib/volcano/generated/lib/volcano-generated/models/get_auth_methods200_response_email_password.rb +2 -2
  225. data/lib/volcano/generated/lib/volcano-generated/models/get_auth_methods200_response_oauth_providers_inner.rb +2 -2
  226. data/lib/volcano/generated/lib/volcano-generated/models/git_connect_start_response.rb +2 -2
  227. data/lib/volcano/generated/lib/volcano-generated/models/git_connection.rb +2 -2
  228. data/lib/volcano/generated/lib/volcano-generated/models/git_connections_response.rb +2 -2
  229. data/lib/volcano/generated/lib/volcano-generated/models/git_installation.rb +2 -2
  230. data/lib/volcano/generated/lib/volcano-generated/models/git_installations_response.rb +2 -2
  231. data/lib/volcano/generated/lib/volcano-generated/models/git_repositories_response.rb +2 -2
  232. data/lib/volcano/generated/lib/volcano-generated/models/git_repository.rb +2 -2
  233. data/lib/volcano/generated/lib/volcano-generated/models/hosted_auth_page_type.rb +2 -2
  234. data/lib/volcano/generated/lib/volcano-generated/models/hosted_login_email_check_request.rb +2 -2
  235. data/lib/volcano/generated/lib/volcano-generated/models/hosted_login_email_check_response.rb +2 -2
  236. data/lib/volcano/generated/lib/volcano-generated/models/hosted_login_options_response.rb +2 -2
  237. data/lib/volcano/generated/lib/volcano-generated/models/hosted_renderable_page_type.rb +2 -2
  238. data/lib/volcano/generated/lib/volcano-generated/models/import_connect_start_response.rb +2 -2
  239. data/lib/volcano/generated/lib/volcano-generated/models/import_connection.rb +2 -2
  240. data/lib/volcano/generated/lib/volcano-generated/models/import_connections_response.rb +2 -2
  241. data/lib/volcano/generated/lib/volcano-generated/models/import_provider.rb +2 -2
  242. data/lib/volcano/generated/lib/volcano-generated/models/import_source.rb +2 -2
  243. data/lib/volcano/generated/lib/volcano-generated/models/import_sources_response.rb +2 -2
  244. data/lib/volcano/generated/lib/volcano-generated/models/list_anon_keys200_response.rb +2 -2
  245. data/lib/volcano/generated/lib/volcano-generated/models/list_available_o_auth_providers200_response.rb +2 -2
  246. data/lib/volcano/generated/lib/volcano-generated/models/list_available_o_auth_providers200_response_providers_inner.rb +2 -2
  247. data/lib/volcano/generated/lib/volcano-generated/models/list_database_regions200_response_inner.rb +2 -2
  248. data/lib/volcano/generated/lib/volcano-generated/models/list_email_templates200_response.rb +2 -2
  249. data/lib/volcano/generated/lib/volcano-generated/models/list_o_auth_configs200_response.rb +2 -2
  250. data/lib/volcano/generated/lib/volcano-generated/models/list_postgres_versions200_response_inner.rb +14 -4
  251. data/lib/volcano/generated/lib/volcano-generated/models/list_storage_buckets200_response.rb +3 -3
  252. data/lib/volcano/generated/lib/volcano-generated/models/list_storage_objects_admin200_response.rb +2 -2
  253. data/lib/volcano/generated/lib/volcano-generated/models/live_log_level.rb +2 -2
  254. data/lib/volcano/generated/lib/volcano-generated/models/log_activity_bucket.rb +5 -5
  255. data/lib/volcano/generated/lib/volcano-generated/models/log_activity_bucket_counts.rb +2 -2
  256. data/lib/volcano/generated/lib/volcano-generated/models/log_activity_request.rb +5 -5
  257. data/lib/volcano/generated/lib/volcano-generated/models/log_activity_response.rb +2 -2
  258. data/lib/volcano/generated/lib/volcano-generated/models/log_database_request_resource.rb +2 -2
  259. data/lib/volcano/generated/lib/volcano-generated/models/log_deployment.rb +2 -2
  260. data/lib/volcano/generated/lib/volcano-generated/models/log_deployment_request_selector.rb +2 -2
  261. data/lib/volcano/generated/lib/volcano-generated/models/log_event.rb +2 -2
  262. data/lib/volcano/generated/lib/volcano-generated/models/log_event_body.rb +3 -3
  263. data/lib/volcano/generated/lib/volcano-generated/models/log_frontend_request_resource.rb +2 -2
  264. data/lib/volcano/generated/lib/volcano-generated/models/log_function_request_resource.rb +13 -3
  265. data/lib/volcano/generated/lib/volcano-generated/models/log_request_resource.rb +3 -3
  266. data/lib/volcano/generated/lib/volcano-generated/models/log_resource.rb +2 -2
  267. data/lib/volcano/generated/lib/volcano-generated/models/log_search_event.rb +2 -2
  268. data/lib/volcano/generated/lib/volcano-generated/models/log_search_request.rb +2 -2
  269. data/lib/volcano/generated/lib/volcano-generated/models/log_search_response.rb +4 -4
  270. data/lib/volcano/generated/lib/volcano-generated/models/log_stream_request.rb +2 -2
  271. data/lib/volcano/generated/lib/volcano-generated/models/managed_project_config_frontend_custom_domain_tls_config.rb +189 -0
  272. data/lib/volcano/generated/lib/volcano-generated/models/metric_usage_data.rb +3 -3
  273. data/lib/volcano/generated/lib/volcano-generated/models/o_auth_config.rb +2 -2
  274. data/lib/volcano/generated/lib/volcano-generated/models/o_auth_error_response.rb +2 -2
  275. data/lib/volcano/generated/lib/volcano-generated/models/paginated_auth_users.rb +2 -2
  276. data/lib/volcano/generated/lib/volcano-generated/models/paginated_databases.rb +2 -2
  277. data/lib/volcano/generated/lib/volcano-generated/models/paginated_durable_approvals.rb +274 -0
  278. data/lib/volcano/generated/lib/volcano-generated/models/paginated_durable_executions.rb +2 -2
  279. data/lib/volcano/generated/lib/volcano-generated/models/paginated_durable_functions.rb +2 -2
  280. data/lib/volcano/generated/lib/volcano-generated/models/paginated_frontend_deployments.rb +2 -2
  281. data/lib/volcano/generated/lib/volcano-generated/models/paginated_frontends.rb +2 -2
  282. data/lib/volcano/generated/lib/volcano-generated/models/paginated_function_deployments.rb +2 -2
  283. data/lib/volcano/generated/lib/volcano-generated/models/paginated_functions.rb +2 -2
  284. data/lib/volcano/generated/lib/volcano-generated/models/paginated_project_access_tokens.rb +279 -0
  285. data/lib/volcano/generated/lib/volcano-generated/models/paginated_project_custom_domains.rb +2 -2
  286. data/lib/volcano/generated/lib/volcano-generated/models/paginated_project_deployments.rb +2 -2
  287. data/lib/volcano/generated/lib/volcano-generated/models/paginated_projects.rb +2 -2
  288. data/lib/volcano/generated/lib/volcano-generated/models/paginated_service_keys.rb +2 -2
  289. data/lib/volcano/generated/lib/volcano-generated/models/paginated_storage_buckets.rb +2 -2
  290. data/lib/volcano/generated/lib/volcano-generated/models/paginated_variables.rb +2 -2
  291. data/lib/volcano/generated/lib/volcano-generated/models/platform_exchange_response.rb +2 -2
  292. data/lib/volcano/generated/lib/volcano-generated/models/preview_auth_page_request.rb +2 -2
  293. data/lib/volcano/generated/lib/volcano-generated/models/preview_auth_page_response.rb +2 -2
  294. data/lib/volcano/generated/lib/volcano-generated/models/project.rb +13 -13
  295. data/lib/volcano/generated/lib/volcano-generated/models/project_access_token.rb +426 -0
  296. data/lib/volcano/generated/lib/volcano-generated/models/project_access_token_scope.rb +40 -0
  297. data/lib/volcano/generated/lib/volcano-generated/models/project_access_token_usage.rb +299 -0
  298. data/lib/volcano/generated/lib/volcano-generated/models/project_access_token_usage_daily_entry.rb +191 -0
  299. data/lib/volcano/generated/lib/volcano-generated/models/project_config.rb +40 -6
  300. data/lib/volcano/generated/lib/volcano-generated/models/project_config_apply_result.rb +2 -2
  301. data/lib/volcano/generated/lib/volcano-generated/models/project_config_apply_result_entry.rb +2 -2
  302. data/lib/volcano/generated/lib/volcano-generated/models/project_config_apply_summary.rb +2 -2
  303. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth.rb +2 -2
  304. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_cors.rb +2 -2
  305. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_email.rb +2 -2
  306. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_email_from.rb +2 -2
  307. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_email_password_provider.rb +2 -2
  308. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_email_smtp.rb +2 -2
  309. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_email_verification.rb +2 -2
  310. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_managed_pages.rb +2 -2
  311. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_page_appearance.rb +2 -2
  312. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_page_layouts.rb +2 -2
  313. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_password.rb +2 -2
  314. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_password_reset.rb +2 -2
  315. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_providers.rb +2 -2
  316. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_rate_limits.rb +2 -2
  317. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_redirects.rb +2 -2
  318. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_sessions.rb +2 -2
  319. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_signup.rb +2 -2
  320. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_tokens.rb +2 -2
  321. data/lib/volcano/generated/lib/volcano-generated/models/project_config_bucket.rb +2 -2
  322. data/lib/volcano/generated/lib/volcano-generated/models/project_config_bucket_policy.rb +2 -2
  323. data/lib/volcano/generated/lib/volcano-generated/models/project_config_custom_domain.rb +14 -5
  324. data/lib/volcano/generated/lib/volcano-generated/models/project_config_database.rb +6 -6
  325. data/lib/volcano/generated/lib/volcano-generated/models/project_config_email_template.rb +2 -2
  326. data/lib/volcano/generated/lib/volcano-generated/models/project_config_email_templates.rb +2 -2
  327. data/lib/volcano/generated/lib/volcano-generated/models/project_config_frontend.rb +103 -6
  328. data/lib/volcano/generated/lib/volcano-generated/models/project_config_frontend_custom_domain_tls_config.rb +105 -0
  329. data/lib/volcano/generated/lib/volcano-generated/models/project_config_frontend_function_route.rb +240 -0
  330. data/lib/volcano/generated/lib/volcano-generated/models/project_config_function.rb +13 -4
  331. data/lib/volcano/generated/lib/volcano-generated/models/project_config_hosted_page.rb +2 -2
  332. data/lib/volcano/generated/lib/volcano-generated/models/project_config_hosted_pages.rb +2 -2
  333. data/lib/volcano/generated/lib/volcano-generated/models/project_config_missing_resource.rb +4 -4
  334. data/lib/volcano/generated/lib/volcano-generated/models/project_config_o_auth_provider.rb +2 -2
  335. data/lib/volcano/generated/lib/volcano-generated/models/project_config_project.rb +2 -2
  336. data/lib/volcano/generated/lib/volcano-generated/models/project_config_realtime.rb +2 -2
  337. data/lib/volcano/generated/lib/volcano-generated/models/project_config_sandbox.rb +327 -0
  338. data/lib/volcano/generated/lib/volcano-generated/models/project_config_scheduler.rb +2 -2
  339. data/lib/volcano/generated/lib/volcano-generated/models/project_config_skipped_resource.rb +4 -4
  340. data/lib/volcano/generated/lib/volcano-generated/models/project_config_validation_error.rb +2 -2
  341. data/lib/volcano/generated/lib/volcano-generated/models/project_config_validation_error_response.rb +2 -2
  342. data/lib/volcano/generated/lib/volcano-generated/models/project_config_variable.rb +3 -2
  343. data/lib/volcano/generated/lib/volcano-generated/models/project_deployment.rb +3 -12
  344. data/lib/volcano/generated/lib/volcano-generated/models/project_deployment_resource.rb +2 -2
  345. data/lib/volcano/generated/lib/volcano-generated/models/project_deployment_summary.rb +3 -3
  346. data/lib/volcano/generated/lib/volcano-generated/models/project_frontend_custom_domain.rb +27 -5
  347. data/lib/volcano/generated/lib/volcano-generated/models/project_frontend_custom_domain_all_of_frontend.rb +2 -2
  348. data/lib/volcano/generated/lib/volcano-generated/models/project_git_connection.rb +2 -2
  349. data/lib/volcano/generated/lib/volcano-generated/models/project_git_connection_summary.rb +2 -2
  350. data/lib/volcano/generated/lib/volcano-generated/models/project_git_deploy_settings.rb +2 -2
  351. data/lib/volcano/generated/lib/volcano-generated/models/project_health_category.rb +2 -2
  352. data/lib/volcano/generated/lib/volcano-generated/models/project_health_check.rb +2 -2
  353. data/lib/volcano/generated/lib/volcano-generated/models/project_health_data_status.rb +2 -2
  354. data/lib/volcano/generated/lib/volcano-generated/models/project_health_evidence.rb +2 -2
  355. data/lib/volcano/generated/lib/volcano-generated/models/project_health_resource.rb +2 -2
  356. data/lib/volcano/generated/lib/volcano-generated/models/project_health_response.rb +2 -2
  357. data/lib/volcano/generated/lib/volcano-generated/models/project_health_scope.rb +2 -2
  358. data/lib/volcano/generated/lib/volcano-generated/models/project_health_status.rb +2 -2
  359. data/lib/volcano/generated/lib/volcano-generated/models/project_health_summary.rb +2 -2
  360. data/lib/volcano/generated/lib/volcano-generated/models/project_import_action.rb +2 -2
  361. data/lib/volcano/generated/lib/volcano-generated/models/project_import_action_code.rb +2 -2
  362. data/lib/volcano/generated/lib/volcano-generated/models/project_import_destination.rb +2 -2
  363. data/lib/volcano/generated/lib/volcano-generated/models/project_import_destination_mode.rb +2 -2
  364. data/lib/volcano/generated/lib/volcano-generated/models/project_import_disposition.rb +2 -2
  365. data/lib/volcano/generated/lib/volcano-generated/models/project_import_finding.rb +2 -2
  366. data/lib/volcano/generated/lib/volcano-generated/models/project_import_impact.rb +2 -2
  367. data/lib/volcano/generated/lib/volcano-generated/models/project_import_preflight_request.rb +2 -2
  368. data/lib/volcano/generated/lib/volcano-generated/models/project_import_readiness.rb +2 -2
  369. data/lib/volcano/generated/lib/volcano-generated/models/project_import_report.rb +2 -2
  370. data/lib/volcano/generated/lib/volcano-generated/models/project_import_resource.rb +2 -2
  371. data/lib/volcano/generated/lib/volcano-generated/models/project_import_resource_kind.rb +2 -2
  372. data/lib/volcano/generated/lib/volcano-generated/models/project_import_run.rb +2 -2
  373. data/lib/volcano/generated/lib/volcano-generated/models/project_import_run_status.rb +2 -2
  374. data/lib/volcano/generated/lib/volcano-generated/models/project_import_start_request.rb +2 -2
  375. data/lib/volcano/generated/lib/volcano-generated/models/project_import_summary.rb +2 -2
  376. data/lib/volcano/generated/lib/volcano-generated/models/project_import_target.rb +2 -2
  377. data/lib/volcano/generated/lib/volcano-generated/models/project_lock_lease.rb +2 -2
  378. data/lib/volcano/generated/lib/volcano-generated/models/project_lock_lease_request.rb +2 -2
  379. data/lib/volcano/generated/lib/volcano-generated/models/project_lock_state.rb +2 -2
  380. data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_data_status.rb +2 -2
  381. data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_dimensions.rb +2 -2
  382. data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_group_by.rb +2 -2
  383. data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_metric.rb +2 -2
  384. data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_query.rb +2 -2
  385. data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_query_request.rb +2 -2
  386. data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_query_response.rb +2 -2
  387. data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_query_time_range.rb +2 -2
  388. data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_result.rb +2 -2
  389. data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_unit.rb +2 -2
  390. data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_value.rb +2 -2
  391. data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_window.rb +2 -2
  392. data/lib/volcano/generated/lib/volcano-generated/models/project_source_export.rb +2 -2
  393. data/lib/volcano/generated/lib/volcano-generated/models/project_source_export_omission.rb +2 -2
  394. data/lib/volcano/generated/lib/volcano-generated/models/project_source_export_skip.rb +2 -2
  395. data/lib/volcano/generated/lib/volcano-generated/models/project_source_export_state.rb +2 -2
  396. data/lib/volcano/generated/lib/volcano-generated/models/project_template_installation.rb +217 -0
  397. data/lib/volcano/generated/lib/volcano-generated/models/project_usage_response.rb +2 -2
  398. data/lib/volcano/generated/lib/volcano-generated/models/publish_sandbox_preset_request.rb +268 -0
  399. data/lib/volcano/generated/lib/volcano-generated/models/realtime_config.rb +2 -2
  400. data/lib/volcano/generated/lib/volcano-generated/models/realtime_plan_limits.rb +2 -2
  401. data/lib/volcano/generated/lib/volcano-generated/models/realtime_stats.rb +2 -2
  402. data/lib/volcano/generated/lib/volcano-generated/models/refresh_o_auth_provider_token200_response.rb +2 -2
  403. data/lib/volcano/generated/lib/volcano-generated/models/replace_frontend_shared_variables_request.rb +237 -0
  404. data/lib/volcano/generated/lib/volcano-generated/models/replace_shared_variables_request.rb +2 -2
  405. data/lib/volcano/generated/lib/volcano-generated/models/request_durable_approval_request.rb +355 -0
  406. data/lib/volcano/generated/lib/volcano-generated/models/reset_database_password200_response.rb +2 -2
  407. data/lib/volcano/generated/lib/volcano-generated/models/resolve_function_response.rb +13 -3
  408. data/lib/volcano/generated/lib/volcano-generated/models/resource_reference.rb +2 -2
  409. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_access.rb +216 -0
  410. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_access_request.rb +221 -0
  411. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_build_log_page.rb +176 -0
  412. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_build_log_page_data_inner.rb +190 -0
  413. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_capacity.rb +199 -0
  414. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_capacity_list.rb +166 -0
  415. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_command_request.rb +251 -0
  416. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_command_result.rb +294 -0
  417. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_deployment.rb +242 -0
  418. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_deployment_page.rb +192 -0
  419. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_execution_request.rb +329 -0
  420. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_execution_result.rb +381 -0
  421. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_file_read_request.rb +182 -0
  422. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_file_result.rb +164 -0
  423. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_file_write_request.rb +217 -0
  424. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_pagination.rb +199 -0
  425. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_preset.rb +294 -0
  426. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_preset_list.rb +166 -0
  427. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_session.rb +407 -0
  428. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_session_page.rb +192 -0
  429. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_subject_grant_request.rb +164 -0
  430. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_template.rb +321 -0
  431. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_template_page.rb +192 -0
  432. data/lib/volcano/generated/lib/volcano-generated/models/schedule_request.rb +2 -2
  433. data/lib/volcano/generated/lib/volcano-generated/models/service_key.rb +2 -2
  434. data/lib/volcano/generated/lib/volcano-generated/models/set_project_git_production_branch_request.rb +2 -2
  435. data/lib/volcano/generated/lib/volcano-generated/models/storage_bucket.rb +2 -2
  436. data/lib/volcano/generated/lib/volcano-generated/models/storage_copy_request.rb +2 -2
  437. data/lib/volcano/generated/lib/volcano-generated/models/storage_list_response.rb +2 -2
  438. data/lib/volcano/generated/lib/volcano-generated/models/storage_move_request.rb +2 -2
  439. data/lib/volcano/generated/lib/volcano-generated/models/storage_object.rb +2 -2
  440. data/lib/volcano/generated/lib/volcano-generated/models/storage_object_with_bucket.rb +2 -2
  441. data/lib/volcano/generated/lib/volcano-generated/models/storage_policy.rb +2 -2
  442. data/lib/volcano/generated/lib/volcano-generated/models/storage_stats.rb +2 -2
  443. data/lib/volcano/generated/lib/volcano-generated/models/storage_visibility_request.rb +2 -2
  444. data/lib/volcano/generated/lib/volcano-generated/models/test_email_request.rb +2 -2
  445. data/lib/volcano/generated/lib/volcano-generated/models/test_email_response.rb +2 -2
  446. data/lib/volcano/generated/lib/volcano-generated/models/unban_user_response.rb +2 -2
  447. data/lib/volcano/generated/lib/volcano-generated/models/update_auth_config_request.rb +2 -2
  448. data/lib/volcano/generated/lib/volcano-generated/models/update_auth_hosted_page_request.rb +2 -2
  449. data/lib/volcano/generated/lib/volcano-generated/models/update_auth_page_layout_request.rb +2 -2
  450. data/lib/volcano/generated/lib/volcano-generated/models/update_auth_page_theme_request.rb +2 -2
  451. data/lib/volcano/generated/lib/volcano-generated/models/update_database_branch_request.rb +2 -2
  452. data/lib/volcano/generated/lib/volcano-generated/models/update_database_type_request.rb +2 -2
  453. data/lib/volcano/generated/lib/volcano-generated/models/update_email_template_request.rb +2 -2
  454. data/lib/volcano/generated/lib/volcano-generated/models/update_function_request.rb +13 -4
  455. data/lib/volcano/generated/lib/volcano-generated/models/update_function_scheduler_request.rb +2 -2
  456. data/lib/volcano/generated/lib/volcano-generated/models/update_o_auth_config_request.rb +2 -2
  457. data/lib/volcano/generated/lib/volcano-generated/models/update_project_git_deploy_settings_request.rb +2 -2
  458. data/lib/volcano/generated/lib/volcano-generated/models/update_project_request.rb +2 -2
  459. data/lib/volcano/generated/lib/volcano-generated/models/update_realtime_config_request.rb +2 -2
  460. data/lib/volcano/generated/lib/volcano-generated/models/update_sandbox_template_request.rb +175 -0
  461. data/lib/volcano/generated/lib/volcano-generated/models/update_storage_bucket_request.rb +2 -2
  462. data/lib/volcano/generated/lib/volcano-generated/models/update_variable_request.rb +2 -2
  463. data/lib/volcano/generated/lib/volcano-generated/models/upload_session_part.rb +2 -2
  464. data/lib/volcano/generated/lib/volcano-generated/models/upload_session_status_response.rb +2 -2
  465. data/lib/volcano/generated/lib/volcano-generated/models/upload_storage_object201_response.rb +3 -3
  466. data/lib/volcano/generated/lib/volcano-generated/models/usage_data_point.rb +2 -2
  467. data/lib/volcano/generated/lib/volcano-generated/models/variable.rb +13 -3
  468. data/lib/volcano/generated/lib/volcano-generated/models/verified_domain.rb +192 -0
  469. data/lib/volcano/generated/lib/volcano-generated/models/verified_domains_response.rb +166 -0
  470. data/lib/volcano/generated/lib/volcano-generated/models/verify_domain_request.rb +183 -0
  471. data/lib/volcano/generated/lib/volcano-generated/version.rb +2 -2
  472. data/lib/volcano/generated/lib/volcano-generated.rb +82 -2
  473. data/lib/volcano/generated_transport.rb +1 -0
  474. data/lib/volcano/generated_transport_durable.rb +59 -0
  475. data/lib/volcano/generated_transport_functions.rb +1 -1
  476. data/lib/volcano/generated_transport_sandbox.rb +101 -0
  477. data/lib/volcano/lock_response.rb +2 -2
  478. data/lib/volcano/sandbox_deployment_response.rb +39 -0
  479. data/lib/volcano/sandbox_deployments.rb +79 -0
  480. data/lib/volcano/sandbox_files.rb +37 -0
  481. data/lib/volcano/sandbox_models.rb +32 -0
  482. data/lib/volcano/sandbox_request.rb +98 -0
  483. data/lib/volcano/sandbox_response.rb +74 -0
  484. data/lib/volcano/sandbox_session.rb +78 -0
  485. data/lib/volcano/sandboxes.rb +69 -0
  486. data/lib/volcano/storage_mutations.rb +2 -2
  487. data/lib/volcano/storage_object_response.rb +2 -2
  488. data/lib/volcano/transport.rb +1 -1
  489. data/lib/volcano/version.rb +1 -1
  490. data/lib/volcano.rb +13 -0
  491. data/sig/client.rbs +1 -0
  492. data/sig/core_facades.rbs +14 -0
  493. data/sig/durable_approval_records.rbs +218 -0
  494. data/sig/errors.rbs +3 -0
  495. data/sig/sandboxes.rbs +125 -0
  496. metadata +119 -10
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b611d95fd4b7fb342a631e1c1ffe7c8dd42c9327556dfd01d64ad0f971e4d475
4
- data.tar.gz: 549dabf87e25ee1fdea58c13573d1fb03e7b58ffd153c227c8fb7223247171a8
3
+ metadata.gz: e228fb6138aee4fa4f6bce0f810386d08c3023ed23b3b98ccaf733ba9f1921a6
4
+ data.tar.gz: df06c47b64ac87c6d44a7a110d7355ea41fe25354aef328cfdd8b246a1375307
5
5
  SHA512:
6
- metadata.gz: 304e984a96c2af8898412fd3def954476c5f9bc406832ff581139eac80776f92552357bae744266c9248e9d84a317e2dd533edb8a48612eabee5f86283921305
7
- data.tar.gz: 8beff771c0a4294ce05f0c95e3e43bbf915781d34ee2d3284fae81a8a2f8eda0509e7092136a324cee91e643ce75e2768f7f9f01fc3f936668f90a9025101fe8
6
+ metadata.gz: 1fd53ec98301db0ea75e0e947558664be0fd04a10982279d7eaf71c90f15493d7205c086cd7c11d7038d25d1c68e953fe26253f58fb4cc44df08a72b81968636
7
+ data.tar.gz: 77a02c19da00001b7103e300dc4666f2ac2f1fa339bcc28dd87782d5a4965729b4bd1d67c9486da5a6ed14c4b24b5a93efdaf1feb2010a55a44af5edeadadd51
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Volcano Ruby SDK
2
2
 
3
- Official Ruby SDK for Volcano. Requires Ruby 3.2 or later.
3
+ Official Ruby SDK for Volcano. Requires Ruby 3.3 or later.
4
4
 
5
5
  Start with the [Ruby quickstart](https://github.com/Kong/volcano-sdk-ruby/blob/main/docs/README.md).
6
6
 
@@ -550,6 +550,57 @@ caller needs.
550
550
  Ruby remains a fully supported runtime for [standard
551
551
  functions](https://volcano.dev/platform/functions/overview).
552
552
 
553
+ ### Decide durable approvals
554
+
555
+ A durable function written in JavaScript or Python can pause until a person
556
+ approves or denies a request. Ruby lists those requests and decides them:
557
+
558
+ ```ruby
559
+ approvals = owner_client.durable.approvals
560
+
561
+ page = approvals.list(project_id, status: "pending", function: "refunds", limit: 20)
562
+ page.approvals.each do |approval|
563
+ puts [approval.id, approval.title, approval.details, approval.expires_at]
564
+ end
565
+
566
+ begin
567
+ approval = approvals.approve(project_id, page.approvals.first.id, comment: "Matches the invoice")
568
+ puts approval.decision.decided_at
569
+ rescue Volcano::Error::ConflictError => e
570
+ puts e.code # approval_decided, approval_expired, or approval_cancelled
571
+ end
572
+
573
+ approvals.deny(project_id, "00000000-0000-4000-8000-000000000051")
574
+
575
+ stats = approvals.stats(project_id, from: Time.now - (7 * 86_400))
576
+ puts [stats.counts.pending, stats.approval_rate, stats.median_seconds_to_decision]
577
+ ```
578
+
579
+ `list` returns the newest approvals first. Filter by `status` (`pending`,
580
+ `approved`, `denied`, `expired`, or `cancelled`), `function` (a durable
581
+ function's id or name), `execution_id`, and a `from`/`to` window given as a
582
+ `Time` or an ISO 8601 string with an offset, such as `2026-10-01T00:00:00Z`.
583
+ `stats` covers the last 30 days unless you pass a
584
+ window, up to 366 days. It counts approvals by status, gives the approval rate
585
+ and the median and 90th-percentile time to a decision (nil when nothing in the
586
+ window was decided), lists the ten functions that requested the most approvals
587
+ with the rest summed in `other_functions`, and returns `daily` counts keyed by
588
+ `YYYY-MM-DD` UTC dates, omitting days without approvals.
589
+
590
+ An approval keeps its function and execution names after they are deleted;
591
+ their ids become nil. `decision` is nil unless the approval was approved or
592
+ denied, and its `decided_by` is nil once the deciding account is deleted.
593
+
594
+ Reading approvals accepts the project owner's platform user token or a project
595
+ access token. Approving and denying require a person: a project access token
596
+ raises `Volcano::Error::PermissionDeniedError` (HTTP 403, a subclass of
597
+ `AuthenticationError`, so existing rescues still apply). Repeating the same
598
+ decision returns the approval unchanged; a conflicting decision, or deciding an
599
+ expired or cancelled approval, raises `Volcano::Error::ConflictError` (HTTP
600
+ 409). An unknown approval, or one in another project, raises
601
+ `Volcano::Error::NotFoundError`. A `comment` is optional, up to 2,000
602
+ characters.
603
+
553
604
  ### Read project logs
554
605
 
555
606
  ```ruby
@@ -881,7 +932,7 @@ delivery.
881
932
 
882
933
  ## Dependencies
883
934
 
884
- Installing `volcano-sdk` pulls in eight gems, plus their own transitive
935
+ Installing `volcano-sdk` pulls in nine gems, plus their own transitive
885
936
  dependencies:
886
937
 
887
938
  | Gem | Why |
@@ -892,6 +943,7 @@ dependencies:
892
943
  | [`async-http`](https://rubygems.org/gems/async-http) | The endpoint realtime dials |
893
944
  | [`async-websocket`](https://rubygems.org/gems/async-websocket) | The realtime transport itself |
894
945
  | [`protocol-rack`](https://rubygems.org/gems/protocol-rack) | A requirement of `async-websocket`, pinned here so the version is ours |
946
+ | [`io-event`](https://rubygems.org/gems/io-event) | The event loop under `async`, with a floor at the release that fixes AIKIDO-2026-10943 |
895
947
  | [`base64`](https://rubygems.org/gems/base64) | Required by the generated client, and no longer a default gem since Ruby 3.4 |
896
948
  | [`json`](https://rubygems.org/gems/json) | Request and response encoding for the generated client |
897
949
 
@@ -80,8 +80,8 @@ module Volcano
80
80
 
81
81
  def profile_optional_boolean(value)
82
82
  return if value.nil?
83
- return true if value == true
84
- return false if value == false
83
+ return true if value.equal?(true)
84
+ return false if value.equal?(false)
85
85
 
86
86
  raise Error::AuthenticationError, INVALID_USER
87
87
  end
@@ -16,9 +16,9 @@ module Volcano
16
16
  end
17
17
  private_constant :SessionToken
18
18
 
19
- attr_reader :auth, :functions, :durable, :logs, :storage, :locks, :realtime
19
+ attr_reader :sandboxes, :auth, :functions, :durable, :logs, :storage, :locks, :realtime
20
20
 
21
- # @dynamic auth, functions, durable, logs, storage, locks, realtime
21
+ # @dynamic sandboxes, auth, functions, durable, logs, storage, locks, realtime
22
22
 
23
23
  def initialize( # rubocop:disable Metrics/ParameterLists -- Preserve typed constructor keywords.
24
24
  anon_key:,
@@ -122,6 +122,7 @@ module Volcano
122
122
  @logs = Logs.new(self, @transport)
123
123
  @storage = Storage.new(self, @transport, api_url: @api_url, anon_key: @anon_key)
124
124
  @locks = Locks.new(self, @transport)
125
+ @sandboxes = Sandboxes.new(self, @transport)
125
126
  @realtime = Realtime.new(
126
127
  self,
127
128
  api_url: @api_url,
@@ -3,16 +3,19 @@
3
3
  module Volcano
4
4
  # Starts and follows executions of deployed durable functions.
5
5
  class Durable
6
- # What the platform accepts as an execution name, and the page size it
7
- # serves at most. Mirrored from the wire contract so a refusal is the
8
- # facade's rather than the generated client's.
6
+ # What the platform accepts as an execution name. Mirrored from the wire
7
+ # contract so a refusal is the facade's rather than the generated client's.
9
8
  EXECUTION_NAME = /\A[A-Za-z0-9._-]{1,255}\z/
10
- MAX_PAGE_SIZE = 100
9
+ include DurableArguments
11
10
  include DurableResponses
12
11
 
12
+ # Lists, reads, and decides the approvals durable workflows request.
13
+ attr_reader :approvals
14
+
13
15
  def initialize(client, transport)
14
16
  @client = client
15
17
  @transport = transport
18
+ @approvals = DurableApprovals.new(client, transport)
16
19
  end
17
20
 
18
21
  # Starts an execution and returns its handle. A durable function is never
@@ -99,18 +102,6 @@ module Volcano
99
102
  ]
100
103
  end
101
104
 
102
- # An empty path segment would address the collection instead of the
103
- # execution, which is a different request rather than a failed one.
104
- def identifier(value, field)
105
- raise ArgumentError, "#{field} must be a non-empty String" unless value.is_a?(String) && present_string?(value)
106
-
107
- value.strip.freeze
108
- end
109
-
110
- # The generated client validates this header against the same pattern and
111
- # raises its own message, naming the operation and the option key it knows
112
- # the header by. Checked here first so the caller reads a message about the
113
- # argument they passed, the way Functions#invoke does for a function name.
114
105
  def execution_name_argument(value)
115
106
  name = identifier(value, 'execution_name')
116
107
  unless EXECUTION_NAME.match?(name)
@@ -120,23 +111,5 @@ module Volcano
120
111
 
121
112
  name
122
113
  end
123
-
124
- # Same reason: the generated client enforces the page and limit bounds and
125
- # answers with its own vocabulary.
126
- def validate_paging(page, limit)
127
- raise ArgumentError, 'page must be a positive Integer' unless page.nil? || positive_integer?(page)
128
-
129
- validate_page_limit(limit)
130
- end
131
-
132
- def validate_page_limit(limit)
133
- return if limit.nil? || (limit.is_a?(Integer) && positive_integer?(limit) && limit <= MAX_PAGE_SIZE)
134
-
135
- raise ArgumentError, "limit must be an Integer between 1 and #{MAX_PAGE_SIZE}"
136
- end
137
-
138
- def positive_integer?(value)
139
- value.is_a?(Integer) && value.positive?
140
- end
141
114
  end
142
115
  end
@@ -0,0 +1,171 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'immutable_request_value'
4
+
5
+ module Volcano
6
+ DURABLE_APPROVAL_ATTRIBUTES = %i[
7
+ id status name title description details function execution requested_at expires_at decision
8
+ ].freeze
9
+ DURABLE_APPROVAL_STATS_ATTRIBUTES = %i[
10
+ from to counts approval_rate median_seconds_to_decision p90_seconds_to_decision
11
+ functions other_functions daily
12
+ ].freeze
13
+ private_constant :DURABLE_APPROVAL_ATTRIBUTES, :DURABLE_APPROVAL_STATS_ATTRIBUTES
14
+
15
+ # Checks keywords for the approval records with too many fields for an
16
+ # explicit keyword list, and owns immutable copies of their values.
17
+ module DurableApprovalAttributes
18
+ def self.capture(attributes, names, optional:)
19
+ unknown = attributes.keys - names
20
+ raise ArgumentError, "unknown keywords: #{unknown.join(', ')}" unless unknown.empty?
21
+
22
+ missing = names - optional - attributes.keys
23
+ raise ArgumentError, "missing keywords: #{missing.join(', ')}" unless missing.empty?
24
+
25
+ names.to_h { |name| [name, immutable_value(attributes[name])] }
26
+ end
27
+
28
+ def self.immutable_value(value)
29
+ case value
30
+ when Hash, Array, Time, String then ImmutableRequestValue.capture(value)
31
+ else value
32
+ end
33
+ end
34
+ end
35
+ private_constant :DurableApprovalAttributes
36
+
37
+ # The durable function that requested an approval. `id` is nil once the
38
+ # function has been deleted; `name` is kept.
39
+ DurableApprovalFunction = Data.define(:id, :name)
40
+
41
+ # Reopens the generated record for checked initialization.
42
+ class DurableApprovalFunction
43
+ # @dynamic id, name, members, with, to_h, deconstruct, deconstruct_keys, self.[]
44
+ # @dynamic self.members
45
+ def initialize(id:, name:)
46
+ id = id&.dup&.freeze
47
+ name = name.dup.freeze
48
+ super
49
+ end
50
+ end
51
+
52
+ # The durable execution that requested an approval. `id` and `status` are
53
+ # nil once the execution is no longer retained; `name` is kept.
54
+ DurableApprovalExecution = Data.define(:id, :name, :status)
55
+
56
+ # Reopens the generated record for checked initialization.
57
+ class DurableApprovalExecution
58
+ # @dynamic id, name, status, members, with, to_h, deconstruct, deconstruct_keys
59
+ # @dynamic self.[], self.members
60
+ def initialize(id:, name:, status:)
61
+ id = id&.dup&.freeze
62
+ name = name.dup.freeze
63
+ status = status&.dup&.freeze
64
+ super
65
+ end
66
+ end
67
+
68
+ # The person who decided an approval.
69
+ DurableApprovalDecider = Data.define(:id, :email)
70
+
71
+ # Reopens the generated record for checked initialization.
72
+ class DurableApprovalDecider
73
+ # @dynamic id, email, members, with, to_h, deconstruct, deconstruct_keys, self.[]
74
+ # @dynamic self.members
75
+ def initialize(id:, email:)
76
+ id = id.dup.freeze
77
+ email = email.dup.freeze
78
+ super
79
+ end
80
+ end
81
+
82
+ # Who decided an approval and when. `decided_by` is nil once that person's
83
+ # account is deleted.
84
+ DurableApprovalDecision = Data.define(:comment, :decided_by, :decided_at)
85
+
86
+ # Reopens the generated record for checked initialization.
87
+ class DurableApprovalDecision
88
+ # @dynamic comment, decided_by, decided_at, members, with, to_h, deconstruct
89
+ # @dynamic deconstruct_keys, self.[], self.members
90
+ def initialize(comment:, decided_by:, decided_at:)
91
+ comment = comment.dup.freeze
92
+ decided_at = decided_at.dup.freeze
93
+ super
94
+ end
95
+ end
96
+
97
+ # An approval a durable workflow requested.
98
+ #
99
+ # `decision` is nil unless the approval was approved or denied, and
100
+ # `expires_at` is nil when the workflow set no timeout. `details` is the
101
+ # workflow's own JSON, frozen all the way down.
102
+ DurableApproval = Data.define(*DURABLE_APPROVAL_ATTRIBUTES)
103
+
104
+ # Reopens the generated record for checked initialization.
105
+ class DurableApproval
106
+ # @dynamic id, status, name, title, description, details, function, execution
107
+ # @dynamic requested_at, expires_at, decision, members, with, to_h, deconstruct
108
+ # @dynamic deconstruct_keys, self.[], self.members
109
+ def initialize(**attributes)
110
+ values = DurableApprovalAttributes.capture(
111
+ attributes, DURABLE_APPROVAL_ATTRIBUTES, optional: %i[details expires_at decision]
112
+ )
113
+ attributes = values
114
+ super
115
+ end
116
+ end
117
+
118
+ # One page of a project's approvals, newest first.
119
+ DurableApprovalPage = Data.define(:approvals, :page, :limit, :total, :has_more)
120
+
121
+ # Reopens the generated record for checked initialization.
122
+ class DurableApprovalPage
123
+ # @dynamic approvals, page, limit, total, has_more, members, with, to_h, deconstruct
124
+ # @dynamic deconstruct_keys, self.[], self.members
125
+ def initialize(approvals:, page:, limit:, total:, has_more:)
126
+ approvals = approvals.to_a.dup.freeze
127
+ super
128
+ end
129
+ end
130
+
131
+ # Approvals by status. `requested` counts every approval, whatever its status.
132
+ DurableApprovalCounts = Data.define(:requested, :pending, :approved, :denied, :expired, :cancelled)
133
+
134
+ # One workflow's approval counts.
135
+ DurableApprovalFunctionCounts = Data.define(:function, :counts)
136
+
137
+ # Approval counts for one UTC day, given as `YYYY-MM-DD`.
138
+ DurableApprovalDailyCounts = Data.define(:date, :counts)
139
+
140
+ # Reopens the generated record for checked initialization.
141
+ class DurableApprovalDailyCounts
142
+ # @dynamic date, counts, members, with, to_h, deconstruct, deconstruct_keys, self.[]
143
+ # @dynamic self.members
144
+ def initialize(date:, counts:)
145
+ date = date.dup.freeze
146
+ super
147
+ end
148
+ end
149
+
150
+ # Approval outcomes over a time window.
151
+ #
152
+ # `functions` holds the ten workflows that requested the most approvals and
153
+ # `other_functions` sums the rest. `daily` omits days without approvals.
154
+ # The rate and decision times are nil when nothing in the window was decided.
155
+ DurableApprovalStats = Data.define(*DURABLE_APPROVAL_STATS_ATTRIBUTES)
156
+
157
+ # Reopens the generated record for checked initialization.
158
+ class DurableApprovalStats
159
+ # @dynamic from, to, counts, approval_rate, median_seconds_to_decision
160
+ # @dynamic p90_seconds_to_decision, functions, other_functions, daily, members, with
161
+ # @dynamic to_h, deconstruct, deconstruct_keys, self.[], self.members
162
+ def initialize(**attributes)
163
+ values = DurableApprovalAttributes.capture(
164
+ attributes, DURABLE_APPROVAL_STATS_ATTRIBUTES,
165
+ optional: %i[approval_rate median_seconds_to_decision p90_seconds_to_decision]
166
+ )
167
+ attributes = values
168
+ super
169
+ end
170
+ end
171
+ end
@@ -0,0 +1,222 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'time'
4
+
5
+ module Volcano
6
+ # Checks the fields shared by approval and statistics payloads.
7
+ module DurableApprovalFields
8
+ INCOMPLETE_APPROVAL = 'Expected a complete durable approval'
9
+ INCOMPLETE_PAGE = 'Expected a complete durable approval page'
10
+ INCOMPLETE_STATS = 'Expected complete durable approval statistics'
11
+ private_constant :INCOMPLETE_APPROVAL, :INCOMPLETE_PAGE, :INCOMPLETE_STATS
12
+
13
+ private
14
+
15
+ def approval_function(payload, message)
16
+ values = approval_object(payload, message)
17
+ DurableApprovalFunction.new(
18
+ id: optional_approval_text(values['id'], message), name: approval_text(values['name'], message)
19
+ )
20
+ end
21
+
22
+ def approval_object(payload, message)
23
+ raise TypeError, message unless payload.is_a?(Hash)
24
+
25
+ payload
26
+ end
27
+
28
+ def approval_list(value)
29
+ raise TypeError, INCOMPLETE_STATS unless value.is_a?(Array)
30
+
31
+ value
32
+ end
33
+
34
+ def approval_text(value, message = INCOMPLETE_APPROVAL)
35
+ raise TypeError, message unless value.is_a?(String) && !value.strip.empty?
36
+
37
+ value
38
+ end
39
+
40
+ def optional_approval_text(value, message)
41
+ value.nil? ? nil : approval_text(value, message)
42
+ end
43
+
44
+ def approval_string(value, message)
45
+ raise TypeError, message unless value.is_a?(String)
46
+
47
+ value
48
+ end
49
+
50
+ def approval_time(value, message)
51
+ case value
52
+ when String then Time.iso8601(value)
53
+ when Time then value
54
+ else raise TypeError, message
55
+ end
56
+ rescue ArgumentError
57
+ raise TypeError, message, cause: nil
58
+ end
59
+
60
+ def approval_count(value, message = INCOMPLETE_STATS)
61
+ raise TypeError, message unless value.is_a?(Integer)
62
+
63
+ value
64
+ end
65
+
66
+ def approval_flag(value)
67
+ return value if value.is_a?(TrueClass) || value.is_a?(FalseClass)
68
+
69
+ raise TypeError, INCOMPLETE_PAGE
70
+ end
71
+
72
+ def approval_number(value)
73
+ case value
74
+ when nil then nil
75
+ when Integer, Float then Float(value)
76
+ else raise TypeError, INCOMPLETE_STATS
77
+ end
78
+ end
79
+ end
80
+ private_constant :DurableApprovalFields
81
+
82
+ # Builds approvals and approval pages from transport payloads.
83
+ module DurableApprovalResponses
84
+ include DurableApprovalFields
85
+
86
+ private
87
+
88
+ def durable_approval(payload)
89
+ values = approval_object(payload, INCOMPLETE_APPROVAL)
90
+ id, status, name, title = approval_labels(values)
91
+ requested_at, expires_at = approval_schedule(values)
92
+ DurableApproval.new(
93
+ id: id, status: status, name: name, title: title,
94
+ description: approval_string(values['description'], INCOMPLETE_APPROVAL),
95
+ details: approval_details(values['details']),
96
+ function: approval_function(values['function'], INCOMPLETE_APPROVAL),
97
+ execution: approval_execution(values['execution']), requested_at: requested_at, expires_at: expires_at,
98
+ decision: approval_decision(values['decision'])
99
+ )
100
+ end
101
+
102
+ def durable_approval_page(payload)
103
+ values = approval_object(payload, INCOMPLETE_PAGE)
104
+ data = values['data']
105
+ raise TypeError, INCOMPLETE_PAGE unless data.is_a?(Array)
106
+
107
+ DurableApprovalPage.new(
108
+ approvals: data.map { |entry| durable_approval(entry) }, has_more: approval_flag(values['has_more']),
109
+ page: approval_count(values['page'], INCOMPLETE_PAGE), limit: approval_count(values['limit'], INCOMPLETE_PAGE),
110
+ total: approval_count(values['total'], INCOMPLETE_PAGE)
111
+ )
112
+ end
113
+
114
+ def approval_labels(values)
115
+ [approval_text(values['id']), approval_text(values['status']),
116
+ approval_text(values['name']), approval_text(values['title'])]
117
+ end
118
+
119
+ def approval_schedule(values)
120
+ expires_at = values['expires_at']
121
+ [approval_time(values['requested_at'], INCOMPLETE_APPROVAL),
122
+ expires_at.nil? ? nil : approval_time(expires_at, INCOMPLETE_APPROVAL)]
123
+ end
124
+
125
+ def approval_execution(payload)
126
+ values = approval_object(payload, INCOMPLETE_APPROVAL)
127
+ DurableApprovalExecution.new(
128
+ id: optional_approval_text(values['id'], INCOMPLETE_APPROVAL), name: approval_text(values['name']),
129
+ status: optional_approval_text(values['status'], INCOMPLETE_APPROVAL)
130
+ )
131
+ end
132
+
133
+ def approval_decision(payload)
134
+ return if payload.nil?
135
+
136
+ values = approval_object(payload, INCOMPLETE_APPROVAL)
137
+ DurableApprovalDecision.new(
138
+ comment: approval_string(values['comment'], INCOMPLETE_APPROVAL),
139
+ decided_by: approval_decider(values['decided_by']),
140
+ decided_at: approval_time(values['decided_at'], INCOMPLETE_APPROVAL)
141
+ )
142
+ end
143
+
144
+ def approval_decider(payload)
145
+ return if payload.nil?
146
+
147
+ values = approval_object(payload, INCOMPLETE_APPROVAL)
148
+ DurableApprovalDecider.new(
149
+ id: approval_text(values['id']), email: approval_string(values['email'], INCOMPLETE_APPROVAL)
150
+ )
151
+ end
152
+
153
+ def approval_details(value)
154
+ Transport.json_value(value)
155
+ rescue TypeError
156
+ raise TypeError, INCOMPLETE_APPROVAL, cause: nil
157
+ end
158
+ end
159
+ private_constant :DurableApprovalResponses
160
+
161
+ # Builds approval statistics from transport payloads.
162
+ module DurableApprovalStatsResponses
163
+ include DurableApprovalFields
164
+
165
+ DAY = /\A\d{4}-\d{2}-\d{2}\z/
166
+ private_constant :DAY
167
+
168
+ private
169
+
170
+ def durable_approval_stats(payload)
171
+ values = approval_object(payload, INCOMPLETE_STATS)
172
+ from, to = approval_window(values)
173
+ rate, median, p90 = approval_timings(values)
174
+ functions, daily = approval_breakdown(values)
175
+ DurableApprovalStats.new(
176
+ from: from, to: to, counts: approval_counts(values['counts']), approval_rate: rate,
177
+ median_seconds_to_decision: median, p90_seconds_to_decision: p90, functions: functions,
178
+ other_functions: approval_counts(values['other_functions']), daily: daily
179
+ )
180
+ end
181
+
182
+ def approval_window(values)
183
+ [approval_time(values['from'], INCOMPLETE_STATS), approval_time(values['to'], INCOMPLETE_STATS)]
184
+ end
185
+
186
+ def approval_timings(values)
187
+ [approval_number(values['approval_rate']), approval_number(values['median_seconds_to_decision']),
188
+ approval_number(values['p90_seconds_to_decision'])]
189
+ end
190
+
191
+ def approval_breakdown(values)
192
+ [approval_list(values['functions']).map { |entry| approval_function_counts(entry) },
193
+ approval_list(values['daily']).map { |entry| approval_daily_counts(entry) }]
194
+ end
195
+
196
+ def approval_counts(payload)
197
+ values = approval_object(payload, INCOMPLETE_STATS)
198
+ DurableApprovalCounts.new(
199
+ requested: approval_count(values['requested']), pending: approval_count(values['pending']),
200
+ approved: approval_count(values['approved']), denied: approval_count(values['denied']),
201
+ expired: approval_count(values['expired']), cancelled: approval_count(values['cancelled'])
202
+ )
203
+ end
204
+
205
+ def approval_function_counts(payload)
206
+ values = approval_object(payload, INCOMPLETE_STATS)
207
+ DurableApprovalFunctionCounts.new(
208
+ function: approval_function(values['function'], INCOMPLETE_STATS), counts: approval_counts(values['counts'])
209
+ )
210
+ end
211
+
212
+ def approval_daily_counts(payload)
213
+ values = approval_object(payload, INCOMPLETE_STATS)
214
+ date = approval_text(values['date'], INCOMPLETE_STATS)
215
+ valid = DAY.match?(date) && approval_time("#{date}T00:00:00Z", INCOMPLETE_STATS).strftime('%F') == date
216
+ raise TypeError, INCOMPLETE_STATS unless valid
217
+
218
+ DurableApprovalDailyCounts.new(date: date, counts: approval_counts(values['counts']))
219
+ end
220
+ end
221
+ private_constant :DurableApprovalStatsResponses
222
+ end