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.
- checksums.yaml +4 -4
- data/README.md +54 -2
- data/lib/volcano/auth_profile_fields.rb +2 -2
- data/lib/volcano/client.rb +3 -2
- data/lib/volcano/durable.rb +7 -34
- data/lib/volcano/durable_approval_models.rb +171 -0
- data/lib/volcano/durable_approval_responses.rb +222 -0
- data/lib/volcano/durable_approvals.rb +143 -0
- data/lib/volcano/durable_arguments.rb +59 -0
- data/lib/volcano/durable_models.rb +0 -4
- data/lib/volcano/errors.rb +5 -0
- data/lib/volcano/generated/lib/volcano-generated/api/anon_keys_api.rb +8 -8
- data/lib/volcano/generated/lib/volcano-generated/api/auth_admin_api.rb +17 -17
- data/lib/volcano/generated/lib/volcano-generated/api/auth_configuration_api.rb +26 -26
- data/lib/volcano/generated/lib/volcano-generated/api/authentication_api.rb +4 -4
- data/lib/volcano/generated/lib/volcano-generated/api/database_backups_api.rb +11 -11
- data/lib/volcano/generated/lib/volcano-generated/api/database_branches_api.rb +9 -9
- data/lib/volcano/generated/lib/volcano-generated/api/database_queries_api.rb +4 -4
- data/lib/volcano/generated/lib/volcano-generated/api/databases_api.rb +18 -18
- data/lib/volcano/generated/lib/volcano-generated/api/durable_functions_api.rb +559 -8
- data/lib/volcano/generated/lib/volcano-generated/api/frontends_api.rb +337 -21
- data/lib/volcano/generated/lib/volcano-generated/api/functions_api.rb +33 -27
- data/lib/volcano/generated/lib/volcano-generated/api/git_connections_api.rb +19 -11
- data/lib/volcano/generated/lib/volcano-generated/api/locks_api.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/api/logs_api.rb +11 -11
- data/lib/volcano/generated/lib/volcano-generated/api/o_auth_authentication_api.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/api/o_auth_configuration_api.rb +8 -8
- data/lib/volcano/generated/lib/volcano-generated/api/project_access_tokens_api.rb +479 -0
- data/lib/volcano/generated/lib/volcano-generated/api/project_imports_api.rb +10 -2
- data/lib/volcano/generated/lib/volcano-generated/api/projects_api.rb +110 -30
- data/lib/volcano/generated/lib/volcano-generated/api/realtime_api.rb +5 -5
- data/lib/volcano/generated/lib/volcano-generated/api/sandboxes_api.rb +1792 -0
- data/lib/volcano/generated/lib/volcano-generated/api/service_keys_api.rb +9 -9
- data/lib/volcano/generated/lib/volcano-generated/api/storage_admin_api.rb +4 -4
- data/lib/volcano/generated/lib/volcano-generated/api/storage_buckets_api.rb +7 -7
- data/lib/volcano/generated/lib/volcano-generated/api/storage_objects_api.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/api/storage_policies_api.rb +5 -5
- data/lib/volcano/generated/lib/volcano-generated/api/system_api.rb +310 -2
- data/lib/volcano/generated/lib/volcano-generated/api/variables_api.rb +13 -13
- data/lib/volcano/generated/lib/volcano-generated/api/verified_domains_api.rb +214 -0
- data/lib/volcano/generated/lib/volcano-generated/api_client.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/api_error.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/api_model_base.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/configuration.rb +11 -3
- data/lib/volcano/generated/lib/volcano-generated/models/anon_key.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_config.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_confirm_email200_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_confirm_email_change200_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_confirm_email_change_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_confirm_email_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_convert_anonymous200_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_device_authorize_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_device_token_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_device_verify200_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_device_verify_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_forgot_password200_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_forgot_password_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_get_my_sessions200_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_hosted_page.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_hosted_page_defaults.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_hosted_page_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_hosted_page_runtime.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_identities_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_identity.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_insights_interval.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_insights_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_insights_series_point.rb +67 -4
- data/lib/volcano/generated/lib/volcano-generated/models/auth_insights_summary.rb +77 -5
- data/lib/volcano/generated/lib/volcano-generated/models/auth_insights_window.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_link_o_auth_provider200_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_list_o_auth_providers200_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_list_o_auth_providers200_response_providers_inner.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_method_summary.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_methods_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_o_auth_exchange_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_page_appearance_defaults.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_page_appearance_options.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_page_appearance_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_page_density.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_page_font.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_page_layout.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_page_radius.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_page_scale.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_page_theme.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_page_theme_colors.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_password_policy.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_platform_exchange_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_refresh_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_request_email_change200_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_request_email_change_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_reset_password200_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_reset_password_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_session.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_signin_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_signup_anonymous_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_signup_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_signup_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_token_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_update_user_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/auth_user.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/ban_auth_user_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/ban_user_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/batch_function_deploy_failure.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/batch_function_deploy_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/byoc_project_config_frontend_custom_domain_tls_config.rb +270 -0
- data/lib/volcano/generated/lib/volcano-generated/models/byoc_project_config_frontend_custom_domain_tls_config_not.rb +102 -0
- data/lib/volcano/generated/lib/volcano-generated/models/call_mcp200_response.rb +220 -0
- data/lib/volcano/generated/lib/volcano-generated/models/call_mcp200_response_error.rb +190 -0
- data/lib/volcano/generated/lib/volcano-generated/models/call_mcp200_response_id.rb +105 -0
- data/lib/volcano/generated/lib/volcano-generated/models/call_mcp_request.rb +236 -0
- data/lib/volcano/generated/lib/volcano-generated/models/call_mcp_request_id.rb +105 -0
- data/lib/volcano/generated/lib/volcano-generated/models/call_o_auth_provider_api200_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/call_o_auth_provider_api_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/complete_upload_session_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/configure_auth_methods_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/configure_auth_methods_request_oauth_providers_inner.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/connect_project_git_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/create_anon_key_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/create_database_backup_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/create_database_branch_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/create_database_request.rb +6 -6
- data/lib/volcano/generated/lib/volcano-generated/models/create_database_restore_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/create_email_template_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/create_frontend_custom_domain_request.rb +12 -3
- data/lib/volcano/generated/lib/volcano-generated/models/create_frontend_function_route_request.rb +230 -0
- data/lib/volcano/generated/lib/volcano-generated/models/create_function_scheduler_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/create_o_auth_config_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/create_project_access_token_request.rb +241 -0
- data/lib/volcano/generated/lib/volcano-generated/models/create_project_request.rb +57 -3
- data/lib/volcano/generated/lib/volcano-generated/models/create_sandbox_session_request.rb +292 -0
- data/lib/volcano/generated/lib/volcano-generated/models/create_sandbox_template_request.rb +247 -0
- data/lib/volcano/generated/lib/volcano-generated/models/create_service_key_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/create_storage_bucket_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/create_storage_policy_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/create_upload_session_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/create_upload_session_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/create_variable_request.rb +3 -2
- data/lib/volcano/generated/lib/volcano-generated/models/created_project_access_token.rb +459 -0
- data/lib/volcano/generated/lib/volcano-generated/models/database.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/database_backup.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/database_backup_list.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/database_backup_schedule.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/database_backup_schedule_entry.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/database_branch.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/database_branch_list.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/database_branch_storage.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/database_delete_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/database_insert_request.rb +3 -3
- data/lib/volcano/generated/lib/volcano-generated/models/database_query_filter.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/database_query_filter_value.rb +3 -3
- data/lib/volcano/generated/lib/volcano-generated/models/database_query_filter_value_one_of_inner.rb +3 -3
- data/lib/volcano/generated/lib/volcano-generated/models/database_query_order.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/database_query_performance_database.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/database_query_performance_item.rb +4 -4
- data/lib/volcano/generated/lib/volcano-generated/models/database_query_performance_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/database_query_result.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/database_restore.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/database_restore_list.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/database_restore_window.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/database_select_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/database_stats.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/database_update_request.rb +3 -3
- data/lib/volcano/generated/lib/volcano-generated/models/delete_database202_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/delete_database_backup200_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/delete_database_branch202_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/deployment_phase.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/deployment_progress.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/deployment_reference.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/device_authorization_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/durable_approval.rb +406 -0
- data/lib/volcano/generated/lib/volcano-generated/models/durable_approval_counts.rb +295 -0
- data/lib/volcano/generated/lib/volcano-generated/models/durable_approval_daily_counts.rb +190 -0
- data/lib/volcano/generated/lib/volcano-generated/models/durable_approval_decider.rb +191 -0
- data/lib/volcano/generated/lib/volcano-generated/models/durable_approval_decision.rb +203 -0
- data/lib/volcano/generated/lib/volcano-generated/models/durable_approval_decision_request.rb +167 -0
- data/lib/volcano/generated/lib/volcano-generated/models/durable_approval_execution.rb +211 -0
- data/lib/volcano/generated/lib/volcano-generated/models/durable_approval_function.rb +177 -0
- data/lib/volcano/generated/lib/volcano-generated/models/durable_approval_function_counts.rb +190 -0
- data/lib/volcano/generated/lib/volcano-generated/models/durable_approval_registration.rb +225 -0
- data/lib/volcano/generated/lib/volcano-generated/models/durable_approval_stats.rb +339 -0
- data/lib/volcano/generated/lib/volcano-generated/models/durable_approval_status.rb +43 -0
- data/lib/volcano/generated/lib/volcano-generated/models/durable_execution.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/durable_execution_error.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/durable_execution_invocation.rb +191 -0
- data/lib/volcano/generated/lib/volcano-generated/models/durable_execution_operation.rb +372 -0
- data/lib/volcano/generated/lib/volcano-generated/models/durable_execution_operation_attempt.rb +271 -0
- data/lib/volcano/generated/lib/volcano-generated/models/durable_execution_operation_list.rb +234 -0
- data/lib/volcano/generated/lib/volcano-generated/models/durable_execution_status.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/durable_function.rb +31 -4
- data/lib/volcano/generated/lib/volcano-generated/models/durable_function_config.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/email_template.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/error.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/export_project_source_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/frontend.rb +85 -3
- data/lib/volcano/generated/lib/volcano-generated/models/frontend_custom_domain_conflict_error.rb +191 -0
- data/lib/volcano/generated/lib/volcano-generated/models/frontend_custom_domain_response.rb +27 -5
- data/lib/volcano/generated/lib/volcano-generated/models/frontend_custom_domain_tls_config.rb +42 -18
- data/lib/volcano/generated/lib/volcano-generated/models/frontend_custom_domain_tls_config_not.rb +103 -0
- data/lib/volcano/generated/lib/volcano-generated/models/frontend_custom_domain_tls_config_not_any_of.rb +188 -0
- data/lib/volcano/generated/lib/volcano-generated/models/frontend_custom_domain_tls_config_not_any_of1.rb +188 -0
- data/lib/volcano/generated/lib/volcano-generated/models/frontend_deployment.rb +24 -68
- data/lib/volcano/generated/lib/volcano-generated/models/frontend_domain_routing_record.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/frontend_domain_verification_record.rb +3 -2
- data/lib/volcano/generated/lib/volcano-generated/models/frontend_function_route.rb +375 -0
- data/lib/volcano/generated/lib/volcano-generated/models/frontend_function_route_list.rb +166 -0
- data/lib/volcano/generated/lib/volcano-generated/models/frontend_usage_daily_entry.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/frontend_usage_data.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/frontend_usage_history_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/function.rb +31 -14
- data/lib/volcano/generated/lib/volcano-generated/models/function_deployment.rb +24 -50
- data/lib/volcano/generated/lib/volcano-generated/models/function_http_auth_mode.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/function_invocation_mode.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/function_invocation_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/function_kind.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/function_kind_filter.rb +40 -0
- data/lib/volcano/generated/lib/volcano-generated/models/function_region.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/function_runtime_deployment.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/function_runtime_option.rb +30 -3
- data/lib/volcano/generated/lib/volcano-generated/models/function_runtimes_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/function_scheduler.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/function_scheduler_list_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/function_visibility.rb +41 -0
- data/lib/volcano/generated/lib/volcano-generated/models/get_auth_methods200_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/get_auth_methods200_response_email_password.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/get_auth_methods200_response_oauth_providers_inner.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/git_connect_start_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/git_connection.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/git_connections_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/git_installation.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/git_installations_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/git_repositories_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/git_repository.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/hosted_auth_page_type.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/hosted_login_email_check_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/hosted_login_email_check_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/hosted_login_options_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/hosted_renderable_page_type.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/import_connect_start_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/import_connection.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/import_connections_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/import_provider.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/import_source.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/import_sources_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/list_anon_keys200_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/list_available_o_auth_providers200_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/list_available_o_auth_providers200_response_providers_inner.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/list_database_regions200_response_inner.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/list_email_templates200_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/list_o_auth_configs200_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/list_postgres_versions200_response_inner.rb +14 -4
- data/lib/volcano/generated/lib/volcano-generated/models/list_storage_buckets200_response.rb +3 -3
- data/lib/volcano/generated/lib/volcano-generated/models/list_storage_objects_admin200_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/live_log_level.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/log_activity_bucket.rb +5 -5
- data/lib/volcano/generated/lib/volcano-generated/models/log_activity_bucket_counts.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/log_activity_request.rb +5 -5
- data/lib/volcano/generated/lib/volcano-generated/models/log_activity_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/log_database_request_resource.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/log_deployment.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/log_deployment_request_selector.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/log_event.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/log_event_body.rb +3 -3
- data/lib/volcano/generated/lib/volcano-generated/models/log_frontend_request_resource.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/log_function_request_resource.rb +13 -3
- data/lib/volcano/generated/lib/volcano-generated/models/log_request_resource.rb +3 -3
- data/lib/volcano/generated/lib/volcano-generated/models/log_resource.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/log_search_event.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/log_search_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/log_search_response.rb +4 -4
- data/lib/volcano/generated/lib/volcano-generated/models/log_stream_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/managed_project_config_frontend_custom_domain_tls_config.rb +189 -0
- data/lib/volcano/generated/lib/volcano-generated/models/metric_usage_data.rb +3 -3
- data/lib/volcano/generated/lib/volcano-generated/models/o_auth_config.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/o_auth_error_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/paginated_auth_users.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/paginated_databases.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/paginated_durable_approvals.rb +274 -0
- data/lib/volcano/generated/lib/volcano-generated/models/paginated_durable_executions.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/paginated_durable_functions.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/paginated_frontend_deployments.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/paginated_frontends.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/paginated_function_deployments.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/paginated_functions.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/paginated_project_access_tokens.rb +279 -0
- data/lib/volcano/generated/lib/volcano-generated/models/paginated_project_custom_domains.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/paginated_project_deployments.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/paginated_projects.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/paginated_service_keys.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/paginated_storage_buckets.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/paginated_variables.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/platform_exchange_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/preview_auth_page_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/preview_auth_page_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project.rb +13 -13
- data/lib/volcano/generated/lib/volcano-generated/models/project_access_token.rb +426 -0
- data/lib/volcano/generated/lib/volcano-generated/models/project_access_token_scope.rb +40 -0
- data/lib/volcano/generated/lib/volcano-generated/models/project_access_token_usage.rb +299 -0
- data/lib/volcano/generated/lib/volcano-generated/models/project_access_token_usage_daily_entry.rb +191 -0
- data/lib/volcano/generated/lib/volcano-generated/models/project_config.rb +40 -6
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_apply_result.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_apply_result_entry.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_apply_summary.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_cors.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_email.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_email_from.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_email_password_provider.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_email_smtp.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_email_verification.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_managed_pages.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_page_appearance.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_page_layouts.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_password.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_password_reset.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_providers.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_rate_limits.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_redirects.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_sessions.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_signup.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_tokens.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_bucket.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_bucket_policy.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_custom_domain.rb +14 -5
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_database.rb +6 -6
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_email_template.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_email_templates.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_frontend.rb +103 -6
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_frontend_custom_domain_tls_config.rb +105 -0
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_frontend_function_route.rb +240 -0
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_function.rb +13 -4
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_hosted_page.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_hosted_pages.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_missing_resource.rb +4 -4
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_o_auth_provider.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_project.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_realtime.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_sandbox.rb +327 -0
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_scheduler.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_skipped_resource.rb +4 -4
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_validation_error.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_validation_error_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_config_variable.rb +3 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_deployment.rb +3 -12
- data/lib/volcano/generated/lib/volcano-generated/models/project_deployment_resource.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_deployment_summary.rb +3 -3
- data/lib/volcano/generated/lib/volcano-generated/models/project_frontend_custom_domain.rb +27 -5
- data/lib/volcano/generated/lib/volcano-generated/models/project_frontend_custom_domain_all_of_frontend.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_git_connection.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_git_connection_summary.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_git_deploy_settings.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_health_category.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_health_check.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_health_data_status.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_health_evidence.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_health_resource.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_health_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_health_scope.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_health_status.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_health_summary.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_import_action.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_import_action_code.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_import_destination.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_import_destination_mode.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_import_disposition.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_import_finding.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_import_impact.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_import_preflight_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_import_readiness.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_import_report.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_import_resource.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_import_resource_kind.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_import_run.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_import_run_status.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_import_start_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_import_summary.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_import_target.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_lock_lease.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_lock_lease_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_lock_state.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_data_status.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_dimensions.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_group_by.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_metric.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_query.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_query_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_query_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_query_time_range.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_result.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_unit.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_value.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_window.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_source_export.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_source_export_omission.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_source_export_skip.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_source_export_state.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/project_template_installation.rb +217 -0
- data/lib/volcano/generated/lib/volcano-generated/models/project_usage_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/publish_sandbox_preset_request.rb +268 -0
- data/lib/volcano/generated/lib/volcano-generated/models/realtime_config.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/realtime_plan_limits.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/realtime_stats.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/refresh_o_auth_provider_token200_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/replace_frontend_shared_variables_request.rb +237 -0
- data/lib/volcano/generated/lib/volcano-generated/models/replace_shared_variables_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/request_durable_approval_request.rb +355 -0
- data/lib/volcano/generated/lib/volcano-generated/models/reset_database_password200_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/resolve_function_response.rb +13 -3
- data/lib/volcano/generated/lib/volcano-generated/models/resource_reference.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/sandbox_access.rb +216 -0
- data/lib/volcano/generated/lib/volcano-generated/models/sandbox_access_request.rb +221 -0
- data/lib/volcano/generated/lib/volcano-generated/models/sandbox_build_log_page.rb +176 -0
- data/lib/volcano/generated/lib/volcano-generated/models/sandbox_build_log_page_data_inner.rb +190 -0
- data/lib/volcano/generated/lib/volcano-generated/models/sandbox_capacity.rb +199 -0
- data/lib/volcano/generated/lib/volcano-generated/models/sandbox_capacity_list.rb +166 -0
- data/lib/volcano/generated/lib/volcano-generated/models/sandbox_command_request.rb +251 -0
- data/lib/volcano/generated/lib/volcano-generated/models/sandbox_command_result.rb +294 -0
- data/lib/volcano/generated/lib/volcano-generated/models/sandbox_deployment.rb +242 -0
- data/lib/volcano/generated/lib/volcano-generated/models/sandbox_deployment_page.rb +192 -0
- data/lib/volcano/generated/lib/volcano-generated/models/sandbox_execution_request.rb +329 -0
- data/lib/volcano/generated/lib/volcano-generated/models/sandbox_execution_result.rb +381 -0
- data/lib/volcano/generated/lib/volcano-generated/models/sandbox_file_read_request.rb +182 -0
- data/lib/volcano/generated/lib/volcano-generated/models/sandbox_file_result.rb +164 -0
- data/lib/volcano/generated/lib/volcano-generated/models/sandbox_file_write_request.rb +217 -0
- data/lib/volcano/generated/lib/volcano-generated/models/sandbox_pagination.rb +199 -0
- data/lib/volcano/generated/lib/volcano-generated/models/sandbox_preset.rb +294 -0
- data/lib/volcano/generated/lib/volcano-generated/models/sandbox_preset_list.rb +166 -0
- data/lib/volcano/generated/lib/volcano-generated/models/sandbox_session.rb +407 -0
- data/lib/volcano/generated/lib/volcano-generated/models/sandbox_session_page.rb +192 -0
- data/lib/volcano/generated/lib/volcano-generated/models/sandbox_subject_grant_request.rb +164 -0
- data/lib/volcano/generated/lib/volcano-generated/models/sandbox_template.rb +321 -0
- data/lib/volcano/generated/lib/volcano-generated/models/sandbox_template_page.rb +192 -0
- data/lib/volcano/generated/lib/volcano-generated/models/schedule_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/service_key.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/set_project_git_production_branch_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/storage_bucket.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/storage_copy_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/storage_list_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/storage_move_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/storage_object.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/storage_object_with_bucket.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/storage_policy.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/storage_stats.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/storage_visibility_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/test_email_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/test_email_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/unban_user_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/update_auth_config_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/update_auth_hosted_page_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/update_auth_page_layout_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/update_auth_page_theme_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/update_database_branch_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/update_database_type_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/update_email_template_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/update_function_request.rb +13 -4
- data/lib/volcano/generated/lib/volcano-generated/models/update_function_scheduler_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/update_o_auth_config_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/update_project_git_deploy_settings_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/update_project_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/update_realtime_config_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/update_sandbox_template_request.rb +175 -0
- data/lib/volcano/generated/lib/volcano-generated/models/update_storage_bucket_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/update_variable_request.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/upload_session_part.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/upload_session_status_response.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/upload_storage_object201_response.rb +3 -3
- data/lib/volcano/generated/lib/volcano-generated/models/usage_data_point.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated/models/variable.rb +13 -3
- data/lib/volcano/generated/lib/volcano-generated/models/verified_domain.rb +192 -0
- data/lib/volcano/generated/lib/volcano-generated/models/verified_domains_response.rb +166 -0
- data/lib/volcano/generated/lib/volcano-generated/models/verify_domain_request.rb +183 -0
- data/lib/volcano/generated/lib/volcano-generated/version.rb +2 -2
- data/lib/volcano/generated/lib/volcano-generated.rb +82 -2
- data/lib/volcano/generated_transport.rb +1 -0
- data/lib/volcano/generated_transport_durable.rb +59 -0
- data/lib/volcano/generated_transport_functions.rb +1 -1
- data/lib/volcano/generated_transport_sandbox.rb +101 -0
- data/lib/volcano/lock_response.rb +2 -2
- data/lib/volcano/sandbox_deployment_response.rb +39 -0
- data/lib/volcano/sandbox_deployments.rb +79 -0
- data/lib/volcano/sandbox_files.rb +37 -0
- data/lib/volcano/sandbox_models.rb +32 -0
- data/lib/volcano/sandbox_request.rb +98 -0
- data/lib/volcano/sandbox_response.rb +74 -0
- data/lib/volcano/sandbox_session.rb +78 -0
- data/lib/volcano/sandboxes.rb +69 -0
- data/lib/volcano/storage_mutations.rb +2 -2
- data/lib/volcano/storage_object_response.rb +2 -2
- data/lib/volcano/transport.rb +1 -1
- data/lib/volcano/version.rb +1 -1
- data/lib/volcano.rb +13 -0
- data/sig/client.rbs +1 -0
- data/sig/core_facades.rbs +14 -0
- data/sig/durable_approval_records.rbs +218 -0
- data/sig/errors.rbs +3 -0
- data/sig/sandboxes.rbs +125 -0
- metadata +119 -10
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e228fb6138aee4fa4f6bce0f810386d08c3023ed23b3b98ccaf733ba9f1921a6
|
|
4
|
+
data.tar.gz: df06c47b64ac87c6d44a7a110d7355ea41fe25354aef328cfdd8b246a1375307
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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.
|
|
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
|
|
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
|
|
84
|
-
return false if value
|
|
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
|
data/lib/volcano/client.rb
CHANGED
|
@@ -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,
|
data/lib/volcano/durable.rb
CHANGED
|
@@ -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
|
|
7
|
-
#
|
|
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
|
-
|
|
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
|