zitadel-client 1.4.1 → 1.5.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 +17 -17
- data/lib/{zitadel-client → zitadel/client}/api/feature_service_api.rb +1 -3
- data/lib/{zitadel-client → zitadel/client}/api/identity_provider_service_api.rb +1 -3
- data/lib/{zitadel-client → zitadel/client}/api/o_i_d_c_service_api.rb +1 -3
- data/lib/{zitadel-client → zitadel/client}/api/organization_service_api.rb +1 -3
- data/lib/{zitadel-client → zitadel/client}/api/s_a_m_l_service_api.rb +1 -3
- data/lib/{zitadel-client → zitadel/client}/api/session_service_api.rb +1 -3
- data/lib/{zitadel-client → zitadel/client}/api/settings_api.rb +1 -3
- data/lib/{zitadel-client → zitadel/client}/api/settings_service_api.rb +1 -3
- data/lib/{zitadel-client → zitadel/client}/api/user_service_api.rb +1 -3
- data/lib/zitadel/client/api_client.rb +378 -0
- data/lib/zitadel/client/api_error.rb +31 -0
- data/lib/zitadel/client/auth/authenticator.rb +80 -0
- data/lib/zitadel/client/auth/client_credentials_authenticator.rb +65 -0
- data/lib/zitadel/client/auth/no_auth_authenticator.rb +35 -0
- data/lib/zitadel/client/auth/o_auth_authenticator.rb +99 -0
- data/lib/zitadel/client/auth/open_id.rb +54 -0
- data/lib/zitadel/client/auth/personal_access_token_authenticator.rb +37 -0
- data/lib/zitadel/client/auth/web_token_authenticator.rb +163 -0
- data/lib/zitadel/client/configuration.rb +180 -0
- data/lib/{zitadel-client → zitadel/client}/models/feature_service_details.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/feature_service_feature_flag.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/feature_service_get_instance_features_response.rb +4 -4
- data/lib/{zitadel-client/models/feature_service_reset_organization_features_response.rb → zitadel/client/models/feature_service_get_organization_features_response.rb} +5 -5
- data/lib/{zitadel-client → zitadel/client}/models/feature_service_get_system_features_response.rb +4 -4
- data/lib/{zitadel-client/models/feature_service_set_system_features_response.rb → zitadel/client/models/feature_service_get_user_features_response.rb} +5 -5
- data/lib/{zitadel-client → zitadel/client}/models/feature_service_improved_performance.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/feature_service_improved_performance_feature_flag.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/feature_service_login_v2.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/feature_service_login_v2_feature_flag.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/feature_service_protobuf_any.rb +4 -4
- data/lib/{zitadel-client/models/feature_service_set_organization_features_response.rb → zitadel/client/models/feature_service_reset_instance_features_response.rb} +5 -5
- data/lib/zitadel/client/models/feature_service_reset_organization_features_response.rb +230 -0
- data/lib/zitadel/client/models/feature_service_reset_system_features_response.rb +230 -0
- data/lib/{zitadel-client/models/feature_service_reset_system_features_response.rb → zitadel/client/models/feature_service_reset_user_features_response.rb} +5 -5
- data/lib/{zitadel-client → zitadel/client}/models/feature_service_rpc_status.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/feature_service_set_instance_features_request.rb +4 -4
- data/lib/{zitadel-client/models/feature_service_reset_instance_features_response.rb → zitadel/client/models/feature_service_set_instance_features_response.rb} +5 -5
- data/lib/{zitadel-client/models/feature_service_get_organization_features_response.rb → zitadel/client/models/feature_service_set_organization_features_response.rb} +5 -5
- data/lib/{zitadel-client → zitadel/client}/models/feature_service_set_system_features_request.rb +4 -4
- data/lib/{zitadel-client/models/feature_service_set_instance_features_response.rb → zitadel/client/models/feature_service_set_system_features_response.rb} +5 -5
- data/lib/{zitadel-client/models/feature_service_reset_user_features_response.rb → zitadel/client/models/feature_service_set_user_features_response.rb} +5 -5
- data/lib/{zitadel-client → zitadel/client}/models/feature_service_source.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_apple_config.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_auto_linking_option.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_azure_a_d_config.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_azure_a_d_tenant.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_azure_a_d_tenant_type.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_details.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_generic_o_i_d_c_config.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_get_i_d_p_by_i_d_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_git_hub_config.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_git_hub_enterprise_server_config.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_git_lab_config.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_git_lab_self_hosted_config.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_google_config.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_i_d_p.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_i_d_p_config.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_i_d_p_state.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_i_d_p_type.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_j_w_t_config.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_l_d_a_p_attributes.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_l_d_a_p_config.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_o_auth_config.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_options.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_protobuf_any.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_rpc_status.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_s_a_m_l_binding.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_s_a_m_l_config.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/identity_provider_service_s_a_m_l_name_i_d_format.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/o_i_d_c_service_auth_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/o_i_d_c_service_authorization_error.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/o_i_d_c_service_authorize_or_deny_device_authorization_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/o_i_d_c_service_create_callback_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/o_i_d_c_service_create_callback_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/o_i_d_c_service_details.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/o_i_d_c_service_device_authorization_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/o_i_d_c_service_error_reason.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/o_i_d_c_service_get_auth_request_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/o_i_d_c_service_get_device_authorization_request_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/o_i_d_c_service_prompt.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/o_i_d_c_service_protobuf_any.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/o_i_d_c_service_rpc_status.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/o_i_d_c_service_session.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_add_human_user_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_add_organization_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_add_organization_request_admin.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_add_organization_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_add_organization_response_created_admin.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_details.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_gender.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_hashed_password.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_i_d_p_link.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_list_details.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_list_organizations_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_list_organizations_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_list_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_organization_domain_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_organization_field_name.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_organization_i_d_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_organization_name_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_organization_state.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_organization_state_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_password.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_protobuf_any.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_rpc_status.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_search_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_send_email_verification_code.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_set_human_email.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_set_human_phone.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_set_human_profile.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_set_metadata_entry.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/organization_service_text_query_method.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/s_a_m_l_service_authorization_error.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/s_a_m_l_service_create_response_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/s_a_m_l_service_create_response_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/s_a_m_l_service_details.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/s_a_m_l_service_error_reason.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/s_a_m_l_service_get_s_a_m_l_request_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/s_a_m_l_service_post_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/s_a_m_l_service_protobuf_any.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/s_a_m_l_service_rpc_status.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/s_a_m_l_service_s_a_m_l_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/s_a_m_l_service_session.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_challenges.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_challenges_web_auth_n.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_check_i_d_p_intent.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_check_o_t_p.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_check_password.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_check_t_o_t_p.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_check_user.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_check_web_auth_n.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_checks.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_create_session_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_create_session_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_creation_date_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_creator_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_delete_session_request.rb +4 -4
- data/lib/zitadel/client/models/session_service_delete_session_response.rb +230 -0
- data/lib/{zitadel-client → zitadel/client}/models/session_service_details.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_factors.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_get_session_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_i_ds_query.rb +4 -4
- data/lib/{zitadel-client/models/session_service_password_factor.rb → zitadel/client/models/session_service_intent_factor.rb} +6 -6
- data/lib/{zitadel-client → zitadel/client}/models/session_service_list_details.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_list_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_list_sessions_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_list_sessions_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_o_t_p_email_send_code.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_o_t_p_factor.rb +4 -4
- data/lib/{zitadel-client/models/session_service_t_o_t_p_factor.rb → zitadel/client/models/session_service_password_factor.rb} +6 -6
- data/lib/{zitadel-client → zitadel/client}/models/session_service_protobuf_any.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_request_challenges.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_request_challenges_o_t_p_email.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_request_challenges_o_t_p_s_m_s.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_request_challenges_web_auth_n.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_rpc_status.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_search_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_session.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_session_field_name.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/session_service_set_session_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_set_session_response.rb +4 -4
- data/lib/{zitadel-client/models/session_service_intent_factor.rb → zitadel/client/models/session_service_t_o_t_p_factor.rb} +6 -6
- data/lib/{zitadel-client → zitadel/client}/models/session_service_timestamp_query_method.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/session_service_user_agent.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_user_agent_header_values.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_user_agent_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_user_factor.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_user_i_d_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/session_service_user_verification_requirement.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/session_service_web_auth_n_factor.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_auto_linking_option.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_branding_settings.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_details.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_domain_settings.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_embedded_iframe_settings.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_get_active_identity_providers_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_get_branding_settings_response.rb +4 -4
- data/lib/{zitadel-client/models/settings_service_get_security_settings_response.rb → zitadel/client/models/settings_service_get_domain_settings_response.rb} +6 -6
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_get_general_settings_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_get_legal_and_support_settings_response.rb +4 -4
- data/lib/{zitadel-client/models/settings_service_get_login_settings_response.rb → zitadel/client/models/settings_service_get_lockout_settings_response.rb} +6 -6
- data/lib/{zitadel-client/models/settings_service_get_lockout_settings_response.rb → zitadel/client/models/settings_service_get_login_settings_response.rb} +6 -6
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_get_password_complexity_settings_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_get_password_expiry_settings_response.rb +4 -4
- data/lib/{zitadel-client/models/settings_service_get_domain_settings_response.rb → zitadel/client/models/settings_service_get_security_settings_response.rb} +6 -6
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_identity_provider.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_identity_provider_type.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_legal_and_support_settings.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_list_details.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_lockout_settings.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_login_settings.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_multi_factor_type.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_options.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_passkeys_type.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_password_complexity_settings.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_password_expiry_settings.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_protobuf_any.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_resource_owner_type.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_rpc_status.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_second_factor_type.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_security_settings.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_set_security_settings_request.rb +4 -4
- data/lib/{zitadel-client/models/user_service_verify_passkey_registration_response.rb → zitadel/client/models/settings_service_set_security_settings_response.rb} +6 -6
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_theme.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/settings_service_theme_mode.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/user_service_access_token_type.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/user_service_add_human_user_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_add_human_user_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_add_i_d_p_link_request.rb +4 -4
- data/lib/{zitadel-client/models/user_service_remove_o_t_p_s_m_s_response.rb → zitadel/client/models/user_service_add_i_d_p_link_response.rb} +5 -5
- data/lib/{zitadel-client/models/user_service_remove_i_d_p_link_response.rb → zitadel/client/models/user_service_add_o_t_p_email_response.rb} +5 -5
- data/lib/{zitadel-client/models/user_service_add_o_t_p_email_response.rb → zitadel/client/models/user_service_add_o_t_p_s_m_s_response.rb} +5 -5
- data/lib/{zitadel-client → zitadel/client}/models/user_service_and_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_auth_factor.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_auth_factor_state.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/user_service_auth_factor_u2_f.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_authentication_method_type.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/user_service_create_invite_code_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_create_invite_code_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_create_passkey_registration_link_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_create_passkey_registration_link_response.rb +4 -4
- data/lib/{zitadel-client/models/user_service_resend_invite_code_response.rb → zitadel/client/models/user_service_deactivate_user_response.rb} +5 -5
- data/lib/{zitadel-client → zitadel/client}/models/user_service_delete_user_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_details.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_display_name_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_email_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_first_name_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_gender.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/user_service_get_user_by_i_d_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_hashed_password.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_human_email.rb +4 -4
- data/lib/{zitadel-client/models/user_service_verify_u2_f_registration_response.rb → zitadel/client/models/user_service_human_m_f_a_init_skipped_response.rb} +5 -5
- data/lib/{zitadel-client → zitadel/client}/models/user_service_human_phone.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_human_profile.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_human_user.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_i_d_p_information.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_i_d_p_intent.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_i_d_p_l_d_a_p_access_information.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_i_d_p_link.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_i_d_p_o_auth_access_information.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_i_d_p_s_a_m_l_access_information.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_in_user_emails_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_in_user_i_d_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_l_d_a_p_credentials.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_last_name_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_list_authentication_factors_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_list_authentication_method_types_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_list_details.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_list_i_d_p_links_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_list_i_d_p_links_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_list_passkeys_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_list_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_list_users_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_list_users_response.rb +4 -4
- data/lib/{zitadel-client/models/user_service_unlock_user_response.rb → zitadel/client/models/user_service_lock_user_response.rb} +5 -5
- data/lib/{zitadel-client → zitadel/client}/models/user_service_login_name_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_machine_user.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_nick_name_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_not_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_notification_type.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/user_service_or_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_organization.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_organization_id_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_passkey.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_passkey_authenticator.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/user_service_passkey_registration_code.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_password.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_password_reset_request.rb +4 -4
- data/lib/{zitadel-client/models/user_service_resend_phone_code_response.rb → zitadel/client/models/user_service_password_reset_response.rb} +5 -5
- data/lib/{zitadel-client → zitadel/client}/models/user_service_phone_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_protobuf_any.rb +4 -4
- data/lib/{zitadel-client/models/user_service_verify_invite_code_response.rb → zitadel/client/models/user_service_reactivate_user_response.rb} +5 -5
- data/lib/{zitadel-client → zitadel/client}/models/user_service_redirect_u_r_ls.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_register_passkey_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_register_passkey_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_register_t_o_t_p_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_register_u2_f_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_register_u2_f_response.rb +4 -4
- data/lib/{zitadel-client/models/user_service_deactivate_user_response.rb → zitadel/client/models/user_service_remove_i_d_p_link_response.rb} +5 -5
- data/lib/{zitadel-client/models/session_service_delete_session_response.rb → zitadel/client/models/user_service_remove_o_t_p_email_response.rb} +6 -6
- data/lib/{zitadel-client/models/user_service_reactivate_user_response.rb → zitadel/client/models/user_service_remove_o_t_p_s_m_s_response.rb} +5 -5
- data/lib/{zitadel-client/models/user_service_add_o_t_p_s_m_s_response.rb → zitadel/client/models/user_service_remove_passkey_response.rb} +5 -5
- data/lib/{zitadel-client/models/user_service_remove_passkey_response.rb → zitadel/client/models/user_service_remove_phone_response.rb} +5 -5
- data/lib/{zitadel-client → zitadel/client}/models/user_service_remove_t_o_t_p_response.rb +4 -4
- data/lib/{zitadel-client/models/user_service_remove_phone_response.rb → zitadel/client/models/user_service_remove_u2_f_response.rb} +5 -5
- data/lib/{zitadel-client/models/user_service_send_email_code_request.rb → zitadel/client/models/user_service_resend_email_code_request.rb} +5 -5
- data/lib/{zitadel-client/models/user_service_send_email_code_response.rb → zitadel/client/models/user_service_resend_email_code_response.rb} +5 -5
- data/lib/{zitadel-client/models/feature_service_get_user_features_response.rb → zitadel/client/models/user_service_resend_invite_code_response.rb} +6 -6
- data/lib/{zitadel-client → zitadel/client}/models/user_service_resend_phone_code_request.rb +4 -4
- data/lib/{zitadel-client/models/user_service_password_reset_response.rb → zitadel/client/models/user_service_resend_phone_code_response.rb} +5 -5
- data/lib/{zitadel-client → zitadel/client}/models/user_service_retrieve_identity_provider_intent_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_retrieve_identity_provider_intent_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_rpc_status.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_search_query.rb +4 -4
- data/lib/{zitadel-client/models/user_service_resend_email_code_request.rb → zitadel/client/models/user_service_send_email_code_request.rb} +5 -5
- data/lib/{zitadel-client/models/user_service_resend_email_code_response.rb → zitadel/client/models/user_service_send_email_code_response.rb} +5 -5
- data/lib/{zitadel-client → zitadel/client}/models/user_service_send_email_verification_code.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_send_invite_code.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_send_passkey_registration_link.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_send_password_reset_link.rb +4 -4
- data/lib/{zitadel-client/models/user_service_set_human_email.rb → zitadel/client/models/user_service_set_email_request.rb} +5 -5
- data/lib/{zitadel-client → zitadel/client}/models/user_service_set_email_response.rb +4 -4
- data/lib/{zitadel-client/models/user_service_set_email_request.rb → zitadel/client/models/user_service_set_human_email.rb} +5 -5
- data/lib/{zitadel-client → zitadel/client}/models/user_service_set_human_phone.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_set_human_profile.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_set_metadata_entry.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_set_password.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_set_password_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_set_password_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_set_phone_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_set_phone_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_start_identity_provider_intent_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_start_identity_provider_intent_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_state_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_text_query_method.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/user_service_type.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/user_service_type_query.rb +4 -4
- data/lib/{zitadel-client/models/user_service_add_i_d_p_link_response.rb → zitadel/client/models/user_service_unlock_user_response.rb} +5 -5
- data/lib/{zitadel-client → zitadel/client}/models/user_service_update_human_user_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_update_human_user_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_user.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_user_field_name.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/user_service_user_name_query.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_user_state.rb +2 -2
- data/lib/{zitadel-client → zitadel/client}/models/user_service_verify_email_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_verify_email_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_verify_invite_code_request.rb +4 -4
- data/lib/{zitadel-client/models/feature_service_set_user_features_response.rb → zitadel/client/models/user_service_verify_invite_code_response.rb} +6 -6
- data/lib/{zitadel-client → zitadel/client}/models/user_service_verify_passkey_registration_request.rb +4 -4
- data/lib/zitadel/client/models/user_service_verify_passkey_registration_response.rb +230 -0
- data/lib/{zitadel-client → zitadel/client}/models/user_service_verify_phone_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_verify_phone_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_verify_t_o_t_p_registration_request.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_verify_t_o_t_p_registration_response.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/user_service_verify_u2_f_registration_request.rb +4 -4
- data/lib/{zitadel-client/models/settings_service_set_security_settings_response.rb → zitadel/client/models/user_service_verify_u2_f_registration_response.rb} +6 -6
- data/lib/{zitadel-client → zitadel/client}/models/zitadelobjectv2_organization.rb +4 -4
- data/lib/{zitadel-client → zitadel/client}/models/zitadelorgv2_organization.rb +4 -4
- data/lib/zitadel/client/utils/url_util.rb +25 -0
- data/lib/zitadel/client/version.rb +7 -0
- data/lib/zitadel/client/zitadel.rb +84 -0
- data/lib/zitadel/client/zitadel_error.rb +10 -0
- data/lib/zitadel_client.rb +20 -6
- data/sig/lib.rbs +186 -183
- metadata +346 -346
- data/lib/zitadel-client/api_client.rb +0 -376
- data/lib/zitadel-client/api_error.rb +0 -29
- data/lib/zitadel-client/auth/authenticator.rb +0 -78
- data/lib/zitadel-client/auth/client_credentials_authenticator.rb +0 -63
- data/lib/zitadel-client/auth/no_auth_authenticator.rb +0 -33
- data/lib/zitadel-client/auth/o_auth_authenticator.rb +0 -97
- data/lib/zitadel-client/auth/open_id.rb +0 -52
- data/lib/zitadel-client/auth/personal_access_token_authenticator.rb +0 -35
- data/lib/zitadel-client/auth/web_token_authenticator.rb +0 -161
- data/lib/zitadel-client/configuration.rb +0 -178
- data/lib/zitadel-client/models/user_service_human_m_f_a_init_skipped_response.rb +0 -230
- data/lib/zitadel-client/models/user_service_lock_user_response.rb +0 -230
- data/lib/zitadel-client/models/user_service_remove_o_t_p_email_response.rb +0 -230
- data/lib/zitadel-client/models/user_service_remove_u2_f_response.rb +0 -230
- data/lib/zitadel-client/utils/url_util.rb +0 -23
- data/lib/zitadel-client/version.rb +0 -5
- data/lib/zitadel-client/zitadel.rb +0 -82
- data/lib/zitadel-client/zitadel_error.rb +0 -8
- /data/lib/{zitadel-client → zitadel/client}/api/.openapi +0 -0
- /data/lib/{zitadel-client → zitadel/client}/models/.openapi +0 -0
@@ -1,376 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# rubocop:disable Style/ClassVars
|
4
|
-
# rubocop:disable Metrics/AbcSize
|
5
|
-
# rubocop:disable Metrics/CyclomaticComplexity
|
6
|
-
# rubocop:disable Metrics/MethodLength
|
7
|
-
# rubocop:disable Metrics/PerceivedComplexity
|
8
|
-
# rubocop:disable Metrics/ClassLength
|
9
|
-
|
10
|
-
require 'date'
|
11
|
-
require 'json'
|
12
|
-
require 'logger'
|
13
|
-
require 'tempfile'
|
14
|
-
require 'time'
|
15
|
-
require 'typhoeus'
|
16
|
-
require 'uri'
|
17
|
-
|
18
|
-
module ZitadelClient
|
19
|
-
# ApiClient handles all HTTP interactions with the Zitadel API.
|
20
|
-
#
|
21
|
-
# It is responsible for:
|
22
|
-
# - Constructing and signing requests via the configured authenticator
|
23
|
-
# - Executing HTTP calls and handling errors (timeouts, non-2xx responses)
|
24
|
-
# - Streaming file downloads into temporary files
|
25
|
-
# - Deserializing JSON responses into Ruby types and model objects
|
26
|
-
#
|
27
|
-
# === Usage Example:
|
28
|
-
# config = ZitadelClient::Configuration.new do |c|
|
29
|
-
# c.authenticator = ZitadelClient::ClientCredentialsAuthenticator.builder(base_url, id, secret).build
|
30
|
-
# end
|
31
|
-
# client = ZitadelClient::ApiClient.new(config)
|
32
|
-
# data, status, headers = client.call_api(:get, '/users', query_params: { limit: 10 })
|
33
|
-
class ApiClient
|
34
|
-
# The Configuration object holding settings to be used in the API client.
|
35
|
-
attr_accessor :config
|
36
|
-
|
37
|
-
# Defines the headers to be used in HTTP requests of all API calls by default.
|
38
|
-
#
|
39
|
-
# @return [Hash[String, String]]
|
40
|
-
attr_accessor :default_headers
|
41
|
-
|
42
|
-
# Initializes the ApiClient
|
43
|
-
# @option config [Configuration] Configuration for initializing the object, default to the
|
44
|
-
# default configuration.
|
45
|
-
def initialize(config = Configuration.new)
|
46
|
-
@config = config
|
47
|
-
@default_headers = {
|
48
|
-
'Content-Type' => 'application/json',
|
49
|
-
'User-Agent' => config.user_agent
|
50
|
-
}
|
51
|
-
end
|
52
|
-
|
53
|
-
# noinspection RubyClassVariableUsageInspection,RbsMissingTypeSignature
|
54
|
-
# @return [ZitadelClient::ApiClient]
|
55
|
-
def self.default
|
56
|
-
@@default ||= ApiClient.new
|
57
|
-
end
|
58
|
-
|
59
|
-
# Call an API with given options.
|
60
|
-
#
|
61
|
-
# @return [Array<(Object, Integer, Hash)>] an array of 3 elements:
|
62
|
-
# the data deserialized from response body (which may be a Tempfile or nil), response status code and response headers.
|
63
|
-
# noinspection RbsMissingTypeSignature
|
64
|
-
def call_api(http_method, path, opts = {})
|
65
|
-
request = build_request(http_method, path, opts)
|
66
|
-
tempfile = nil
|
67
|
-
(download_file(request) { tempfile = _1 }) if opts[:return_type] == 'File'
|
68
|
-
response = request.run
|
69
|
-
|
70
|
-
@config.logger.debug "HTTP response body ~BEGIN~\n#{response.body}\n~END~\n" if @config.debugging
|
71
|
-
|
72
|
-
unless response.success?
|
73
|
-
if response.timed_out?
|
74
|
-
raise 'Connection timed out'
|
75
|
-
elsif response.return_code != :ok
|
76
|
-
raise "Network error (#{response.return_code}): #{response.return_message}"
|
77
|
-
else
|
78
|
-
raise ApiError.new(response.code, response.headers, response.body)
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
data = if opts[:return_type] == 'File'
|
83
|
-
tempfile
|
84
|
-
elsif opts[:return_type]
|
85
|
-
deserialize(response, opts[:return_type])
|
86
|
-
end
|
87
|
-
[data, response.code, response.headers]
|
88
|
-
end
|
89
|
-
|
90
|
-
def build_request(http_method, path, opts = {})
|
91
|
-
url = URI.join("#{@config.authenticator.send(:host).chomp('/')}/", path).to_s
|
92
|
-
http_method = http_method.to_sym.downcase
|
93
|
-
|
94
|
-
query_params = opts[:query_params] || {}
|
95
|
-
form_params = opts[:form_params] || {}
|
96
|
-
follow_location = opts[:follow_location] || true
|
97
|
-
header_params = @default_headers.merge(opts[:header_params] || {}).merge(@config.authenticator.send(:auth_headers))
|
98
|
-
|
99
|
-
req_opts = {
|
100
|
-
method: http_method,
|
101
|
-
headers: header_params,
|
102
|
-
params: query_params,
|
103
|
-
params_encoding: @config.params_encoding,
|
104
|
-
timeout: @config.timeout,
|
105
|
-
ssl_verifypeer: @config.verify_ssl,
|
106
|
-
ssl_verifyhost: (@config.verify_ssl_host ? 2 : 0),
|
107
|
-
sslcert: @config.cert_file,
|
108
|
-
sslkey: @config.key_file,
|
109
|
-
verbose: @config.debugging,
|
110
|
-
followlocation: follow_location
|
111
|
-
}
|
112
|
-
|
113
|
-
# set custom cert, if provided
|
114
|
-
req_opts[:cainfo] = @config.ssl_ca_cert if @config.ssl_ca_cert
|
115
|
-
|
116
|
-
if %i[post patch put delete].include?(http_method)
|
117
|
-
req_body = build_request_body(header_params, form_params, opts[:body])
|
118
|
-
req_opts.update body: req_body
|
119
|
-
@config.logger.debug "HTTP request body param ~BEGIN~\n#{req_body}\n~END~\n" if @config.debugging
|
120
|
-
end
|
121
|
-
|
122
|
-
Typhoeus::Request.new(url, req_opts)
|
123
|
-
end
|
124
|
-
|
125
|
-
# Builds the HTTP request body
|
126
|
-
#
|
127
|
-
# @param [Hash] header_params Header parameters
|
128
|
-
# @param [Hash] form_params Query parameters
|
129
|
-
# @param [Object] body HTTP body (JSON/XML)
|
130
|
-
# @return [String] HTTP body data in the form of string
|
131
|
-
# noinspection RubyMismatchedReturnType,RubyArgCount,RbsMissingTypeSignature
|
132
|
-
def build_request_body(header_params, form_params, body)
|
133
|
-
# http form
|
134
|
-
if ['application/x-www-form-urlencoded',
|
135
|
-
'multipart/form-data'].include?(header_params['Content-Type'])
|
136
|
-
data = {}
|
137
|
-
form_params.each do |key, value|
|
138
|
-
data[key] = case value
|
139
|
-
when ::File, ::Array, nil
|
140
|
-
# let typhoeus handle File, Array and nil parameters
|
141
|
-
value
|
142
|
-
else
|
143
|
-
value.to_s
|
144
|
-
end
|
145
|
-
end
|
146
|
-
elsif body
|
147
|
-
data = body.is_a?(String) ? body : body.to_json
|
148
|
-
else
|
149
|
-
data = nil
|
150
|
-
end
|
151
|
-
data
|
152
|
-
end
|
153
|
-
|
154
|
-
# Save response body into a file in (the defined) temporary folder, using the filename
|
155
|
-
# from the "Content-Disposition" header if provided, otherwise a random filename.
|
156
|
-
# The response body is written to the file in chunks in order to handle files which
|
157
|
-
# size is larger than maximum Ruby String or even larger than the maximum memory a Ruby
|
158
|
-
# process can use.
|
159
|
-
#
|
160
|
-
# @see Configuration#temp_folder_path
|
161
|
-
#
|
162
|
-
# @return [Tempfile] the tempfile generated
|
163
|
-
# noinspection RbsMissingTypeSignature
|
164
|
-
def download_file(request)
|
165
|
-
tempfile = nil
|
166
|
-
encoding = nil
|
167
|
-
|
168
|
-
request.on_headers do |response|
|
169
|
-
content_disposition = response.headers['Content-Disposition']
|
170
|
-
if content_disposition && content_disposition =~ /filename=/i
|
171
|
-
filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
|
172
|
-
prefix = sanitize_filename(filename)
|
173
|
-
else
|
174
|
-
prefix = 'download-'
|
175
|
-
end
|
176
|
-
prefix += '-' unless prefix.end_with?('-')
|
177
|
-
encoding = response.body.encoding
|
178
|
-
tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding)
|
179
|
-
end
|
180
|
-
|
181
|
-
request.on_body do |chunk|
|
182
|
-
chunk.force_encoding(encoding) if encoding
|
183
|
-
ensure_tempfile(tempfile).write(chunk)
|
184
|
-
end
|
185
|
-
|
186
|
-
request.on_complete do
|
187
|
-
t = ensure_tempfile(tempfile)
|
188
|
-
t.close
|
189
|
-
@config.logger.info "Temp file written to #{t.path}, please copy the file to a proper folder " \
|
190
|
-
"with e.g. `FileUtils.cp(t.path, '/new/file/path')` otherwise the temp file " \
|
191
|
-
"will be deleted automatically with GC. It's also recommended to delete the temp file " \
|
192
|
-
'explicitly with `t.delete`'
|
193
|
-
yield t if block_given?
|
194
|
-
end
|
195
|
-
end
|
196
|
-
|
197
|
-
def ensure_tempfile(temp)
|
198
|
-
temp || (raise 'Tempfile not created')
|
199
|
-
end
|
200
|
-
|
201
|
-
# Check if the given MIME is a JSON MIME.
|
202
|
-
# JSON MIME examples:
|
203
|
-
# application/json
|
204
|
-
# application/json; charset=UTF8
|
205
|
-
# APPLICATION/JSON
|
206
|
-
# */*
|
207
|
-
# @param [String] mime MIME
|
208
|
-
# @return [Boolean] True if the MIME is application/json
|
209
|
-
# noinspection RbsMissingTypeSignature
|
210
|
-
def json_mime?(mime)
|
211
|
-
(mime == '*/*') || !(mime =~ %r{^Application/.*json(?!p)(;.*)?}i).nil?
|
212
|
-
end
|
213
|
-
|
214
|
-
# Deserialize the response to the given return type.
|
215
|
-
#
|
216
|
-
# @param [Response] response HTTP response
|
217
|
-
# @param [String] return_type some examples: "User", "Array<User>", "Hash<String, Integer>"
|
218
|
-
# noinspection RbsMissingTypeSignature
|
219
|
-
def deserialize(response, return_type)
|
220
|
-
body = response.body
|
221
|
-
return nil if body.nil? || body.empty?
|
222
|
-
|
223
|
-
# return response body directly for String return type
|
224
|
-
return body.to_s if return_type == 'String'
|
225
|
-
|
226
|
-
# ensuring a default content type
|
227
|
-
content_type = response.headers['Content-Type'] || 'application/json'
|
228
|
-
|
229
|
-
raise "Content-Type is not supported: #{content_type}" unless json_mime?(content_type)
|
230
|
-
|
231
|
-
begin
|
232
|
-
data = JSON.parse("[#{body}]", symbolize_names: true)[0]
|
233
|
-
rescue JSON::ParserError => e
|
234
|
-
raise e unless %w[String Date Time].include?(return_type)
|
235
|
-
|
236
|
-
data = body
|
237
|
-
end
|
238
|
-
|
239
|
-
convert_to_type data, return_type
|
240
|
-
end
|
241
|
-
|
242
|
-
# Convert data to the given return type.
|
243
|
-
# @param [Object] data Data to be converted
|
244
|
-
# @param [String] return_type Return type
|
245
|
-
# @return [Mixed] Data in a particular type
|
246
|
-
# noinspection RubyArgCount,RubyMismatchedArgumentType,RbsMissingTypeSignature
|
247
|
-
def convert_to_type(data, return_type)
|
248
|
-
return nil if data.nil?
|
249
|
-
|
250
|
-
# noinspection RegExpRedundantEscape
|
251
|
-
case return_type
|
252
|
-
when 'String'
|
253
|
-
data.to_s
|
254
|
-
when 'Integer'
|
255
|
-
data.to_i
|
256
|
-
when 'Float'
|
257
|
-
data.to_f
|
258
|
-
when 'Boolean'
|
259
|
-
data == true
|
260
|
-
when 'Time'
|
261
|
-
# parse date time (expecting ISO 8601 format)
|
262
|
-
Time.parse data
|
263
|
-
when 'Date'
|
264
|
-
# parse date time (expecting ISO 8601 format)
|
265
|
-
Date.parse data
|
266
|
-
when 'Object'
|
267
|
-
# generic object (usually a Hash), return directly
|
268
|
-
data
|
269
|
-
when /\AArray<(.+)>\z/
|
270
|
-
# e.g. Array<Pet>
|
271
|
-
sub_type = ::Regexp.last_match(1)
|
272
|
-
data.map { |item| convert_to_type(item, sub_type) }
|
273
|
-
when /\AHash<String, (.+)>\z/
|
274
|
-
# e.g. Hash<String, Integer>
|
275
|
-
sub_type = ::Regexp.last_match(1)
|
276
|
-
{}.tap do |hash|
|
277
|
-
data.each { |k, v| hash[k] = convert_to_type(v, sub_type) }
|
278
|
-
end
|
279
|
-
else
|
280
|
-
# models (e.g. Pet) or oneOf
|
281
|
-
klass = ZitadelClient::Models.const_get(return_type)
|
282
|
-
klass.respond_to?(:openapi_one_of) ? klass.build(data) : klass.build_from_hash(data)
|
283
|
-
end
|
284
|
-
end
|
285
|
-
|
286
|
-
# Sanitize filename by removing path.
|
287
|
-
# e.g. ../../sun.gif becomes sun.gif
|
288
|
-
#
|
289
|
-
# @param [String] filename the filename to be sanitized
|
290
|
-
# @return [String] the sanitized filename
|
291
|
-
# noinspection RubyMismatchedReturnType,RbsMissingTypeSignature
|
292
|
-
def sanitize_filename(filename)
|
293
|
-
filename.split(%r{[/\\]}).last
|
294
|
-
end
|
295
|
-
|
296
|
-
# Return Accept header based on an array of accepts provided.
|
297
|
-
# @param [Array] accepts array for Accept
|
298
|
-
# @return [String] the Accept header (e.g. application/json)
|
299
|
-
# noinspection RubyArgCount,RbsMissingTypeSignature
|
300
|
-
def select_header_accept(accepts)
|
301
|
-
return nil if accepts.nil? || accepts.empty?
|
302
|
-
|
303
|
-
# use JSON when present, otherwise use all the provided
|
304
|
-
json_accept = accepts.find { |s| json_mime?(s) }
|
305
|
-
json_accept || accepts.join(',')
|
306
|
-
end
|
307
|
-
|
308
|
-
# Return Content-Type header based on an array of content types provided.
|
309
|
-
# @param [Array] content_types array for Content-Type
|
310
|
-
# @return [String] the Content-Type header (e.g. application/json)
|
311
|
-
# noinspection RubyArgCount,RbsMissingTypeSignature
|
312
|
-
def select_header_content_type(content_types)
|
313
|
-
# return nil by default
|
314
|
-
return if content_types.nil? || content_types.empty?
|
315
|
-
|
316
|
-
# use JSON when present, otherwise use the first one
|
317
|
-
json_content_type = content_types.find { |s| json_mime?(s) }
|
318
|
-
json_content_type || content_types.first
|
319
|
-
end
|
320
|
-
|
321
|
-
# Convert object (array, hash, object, etc.) to JSON string.
|
322
|
-
# @param [Object] model object to be converted into JSON string
|
323
|
-
# @return [String] JSON string representation of the object
|
324
|
-
# noinspection RubyMismatchedReturnType,RbsMissingTypeSignature
|
325
|
-
def object_to_http_body(model)
|
326
|
-
return model if model.nil? || model.is_a?(String)
|
327
|
-
|
328
|
-
local_body = if model.is_a?(Array)
|
329
|
-
model.map { |m| object_to_hash(m) }
|
330
|
-
else
|
331
|
-
object_to_hash(model)
|
332
|
-
end
|
333
|
-
local_body.to_json
|
334
|
-
end
|
335
|
-
|
336
|
-
# Convert object(non-array) to hash.
|
337
|
-
# @param [Object] obj object to be converted into JSON string
|
338
|
-
# @return [String] JSON string representation of the object
|
339
|
-
# noinspection RubyMismatchedReturnType,RbsMissingTypeSignature
|
340
|
-
def object_to_hash(obj)
|
341
|
-
if obj.respond_to?(:to_hash)
|
342
|
-
obj.to_hash
|
343
|
-
else
|
344
|
-
obj
|
345
|
-
end
|
346
|
-
end
|
347
|
-
|
348
|
-
# Build parameter value according to the given collection format.
|
349
|
-
# @param [String] collection_format one of :csv, :ssv, :tsv, :pipes and :multi
|
350
|
-
# noinspection RbsMissingTypeSignature
|
351
|
-
def build_collection_param(param, collection_format)
|
352
|
-
case collection_format
|
353
|
-
when :csv
|
354
|
-
param.join(',')
|
355
|
-
when :ssv
|
356
|
-
param.join(' ')
|
357
|
-
when :tsv
|
358
|
-
param.join("\t")
|
359
|
-
when :pipes
|
360
|
-
param.join('|')
|
361
|
-
when :multi
|
362
|
-
# return the array directly as typhoeus will handle it as expected
|
363
|
-
param
|
364
|
-
else
|
365
|
-
raise "unknown collection format: #{collection_format.inspect}"
|
366
|
-
end
|
367
|
-
end
|
368
|
-
end
|
369
|
-
end
|
370
|
-
|
371
|
-
# rubocop:enable Style/ClassVars
|
372
|
-
# rubocop:enable Metrics/AbcSize
|
373
|
-
# rubocop:enable Metrics/CyclomaticComplexity
|
374
|
-
# rubocop:enable Metrics/MethodLength
|
375
|
-
# rubocop:enable Metrics/PerceivedComplexity
|
376
|
-
# rubocop:enable Metrics/ClassLength
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module ZitadelClient
|
4
|
-
##
|
5
|
-
# Represents an HTTP error returned from the Zitadel API.
|
6
|
-
#
|
7
|
-
# Exposes the HTTP status code, response headers, and response body.
|
8
|
-
class ApiError < ZitadelError
|
9
|
-
# @return [Integer] HTTP status code
|
10
|
-
attr_reader :code
|
11
|
-
|
12
|
-
# @return [Hash{String=>Array<String>}] HTTP response headers
|
13
|
-
attr_reader :response_headers
|
14
|
-
|
15
|
-
# @return [String, Typhoeus::Response] HTTP response body
|
16
|
-
attr_reader :response_body
|
17
|
-
|
18
|
-
##
|
19
|
-
# @param code [Integer] HTTP status code
|
20
|
-
# @param response_headers [Hash{String=>Array<String>}] HTTP response headers
|
21
|
-
# @param response_body [String, Typhoeus::Response] HTTP response body
|
22
|
-
def initialize(code, response_headers, response_body)
|
23
|
-
super("Error #{code}")
|
24
|
-
@code = code
|
25
|
-
@response_headers = response_headers
|
26
|
-
@response_body = response_body
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,78 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'time'
|
4
|
-
|
5
|
-
module ZitadelClient
|
6
|
-
module Auth
|
7
|
-
##
|
8
|
-
# Abstract base class for authenticators.
|
9
|
-
#
|
10
|
-
# This class defines the basic structure for any authenticator by requiring the implementation
|
11
|
-
# of a method to retrieve authentication headers, and provides a way to store and retrieve the host.
|
12
|
-
#
|
13
|
-
class Authenticator
|
14
|
-
protected
|
15
|
-
|
16
|
-
attr_reader :host
|
17
|
-
|
18
|
-
##
|
19
|
-
# Initializes the Authenticator with the specified host.
|
20
|
-
#
|
21
|
-
# @param host [String] the base URL or endpoint for the service.
|
22
|
-
#
|
23
|
-
def initialize(host)
|
24
|
-
@host = host
|
25
|
-
end
|
26
|
-
|
27
|
-
##
|
28
|
-
# Retrieves the authentication headers to be sent with requests.
|
29
|
-
#
|
30
|
-
# Subclasses must override this method to return the appropriate headers.
|
31
|
-
#
|
32
|
-
# @raise [NotImplementedError] Always raised to require implementation in a subclass.
|
33
|
-
#
|
34
|
-
# @return [Hash{String => String}]
|
35
|
-
#
|
36
|
-
def auth_headers
|
37
|
-
# :nocov:
|
38
|
-
raise NotImplementedError,
|
39
|
-
"#{self.class}#get_auth_headers is an abstract method. Please override it in a subclass."
|
40
|
-
# :nocov:
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
##
|
45
|
-
# Abstract builder class for constructing OAuth authenticator instances.
|
46
|
-
#
|
47
|
-
# This builder provides common configuration options such as the OpenId instance and authentication scopes.
|
48
|
-
#
|
49
|
-
class OAuthAuthenticatorBuilder
|
50
|
-
protected
|
51
|
-
|
52
|
-
attr_reader :open_id, :auth_scopes
|
53
|
-
|
54
|
-
##
|
55
|
-
# Initializes the OAuthAuthenticatorBuilder with a given host.
|
56
|
-
#
|
57
|
-
# @param host [String] the base URL for the OAuth provider.
|
58
|
-
#
|
59
|
-
def initialize(host)
|
60
|
-
@open_id = OpenId.new(host)
|
61
|
-
@auth_scopes = Set.new(%w[openid urn:zitadel:iam:org:project:id:zitadel:aud])
|
62
|
-
end
|
63
|
-
|
64
|
-
public
|
65
|
-
|
66
|
-
##
|
67
|
-
# Sets the authentication scopes for the OAuth authenticator.
|
68
|
-
#
|
69
|
-
# @param scopes [Array<String>] a variable number of scope strings.
|
70
|
-
# @return [self] the builder instance to allow for method chaining.
|
71
|
-
#
|
72
|
-
def scopes(*scopes)
|
73
|
-
@auth_scopes = Set.new(scopes)
|
74
|
-
self
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
@@ -1,63 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module ZitadelClient
|
4
|
-
module Auth
|
5
|
-
# ClientCredentialsAuthenticator implements the client credentials flow.
|
6
|
-
class ClientCredentialsAuthenticator < ZitadelClient::Auth::OAuthAuthenticator
|
7
|
-
# Constructs a ClientCredentialsAuthenticator using client credentials flow.
|
8
|
-
#
|
9
|
-
# @param open_id [OpenId] The OpenId instance with OAuth endpoint info.
|
10
|
-
# @param client_id [String] The OAuth client identifier.
|
11
|
-
# @param client_secret [String] The OAuth client secret.
|
12
|
-
# @param auth_scopes [Set<String>] The scope(s) for the token request.
|
13
|
-
def initialize(open_id, client_id, client_secret, auth_scopes)
|
14
|
-
# noinspection RubyArgCount
|
15
|
-
super(open_id, auth_scopes, OAuth2::Client.new(client_id, client_secret, {
|
16
|
-
site: open_id.host_endpoint,
|
17
|
-
token_url: open_id.token_endpoint
|
18
|
-
}))
|
19
|
-
end
|
20
|
-
|
21
|
-
# Returns a new builder for constructing a ClientCredentialsAuthenticator.
|
22
|
-
#
|
23
|
-
# @param host [String] The OAuth provider's base URL.
|
24
|
-
# @param client_id [String] The OAuth client identifier.
|
25
|
-
# @param client_secret [String] The OAuth client secret.
|
26
|
-
# @return [ClientCredentialsAuthenticatorBuilder] A builder instance.
|
27
|
-
def self.builder(host, client_id, client_secret)
|
28
|
-
ClientCredentialsAuthenticatorBuilder.new(host, client_id, client_secret)
|
29
|
-
end
|
30
|
-
|
31
|
-
protected
|
32
|
-
|
33
|
-
# Overrides the base get_grant to return client credentials grant parameters.
|
34
|
-
|
35
|
-
# @return [OAuth2::AccessToken] A hash containing the grant type.
|
36
|
-
def get_grant(client, auth_scopes)
|
37
|
-
client.client_credentials.get_token({ scope: auth_scopes })
|
38
|
-
end
|
39
|
-
|
40
|
-
# Builder class for ClientCredentialsAuthenticator.
|
41
|
-
class ClientCredentialsAuthenticatorBuilder < OAuthAuthenticatorBuilder
|
42
|
-
# Initializes the builder with host, client ID, and client secret.
|
43
|
-
#
|
44
|
-
# @param host [String] The OAuth provider's base URL.
|
45
|
-
# @param client_id [String] The OAuth client identifier.
|
46
|
-
# @param client_secret [String] The OAuth client secret.
|
47
|
-
def initialize(host, client_id, client_secret)
|
48
|
-
# noinspection RubyArgCount
|
49
|
-
super(host)
|
50
|
-
@client_id = client_id
|
51
|
-
@client_secret = client_secret
|
52
|
-
end
|
53
|
-
|
54
|
-
# Constructs and returns a ClientCredentialsAuthenticator using the configured parameters.
|
55
|
-
#
|
56
|
-
# @return [ClientCredentialsAuthenticator] A configured instance.
|
57
|
-
def build
|
58
|
-
ClientCredentialsAuthenticator.new(open_id, @client_id, @client_secret, auth_scopes)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module ZitadelClient
|
4
|
-
module Auth
|
5
|
-
##
|
6
|
-
# A simple authenticator that performs no authentication.
|
7
|
-
#
|
8
|
-
# This authenticator is useful for cases where no token or credentials are required.
|
9
|
-
# It simply returns an empty dictionary for authentication headers.
|
10
|
-
#
|
11
|
-
class NoAuthAuthenticator < Authenticator
|
12
|
-
##
|
13
|
-
# Initializes the NoAuthAuthenticator with a default host.
|
14
|
-
#
|
15
|
-
# @param host [String] the base URL for the service. Defaults to "http://localhost".
|
16
|
-
#
|
17
|
-
def initialize(host = 'http://localhost')
|
18
|
-
super
|
19
|
-
end
|
20
|
-
|
21
|
-
protected
|
22
|
-
|
23
|
-
##
|
24
|
-
# Returns an empty dictionary since no authentication is performed.
|
25
|
-
#
|
26
|
-
# @return [Hash{String => String}] an empty hash.
|
27
|
-
#
|
28
|
-
def auth_headers
|
29
|
-
{}
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,97 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'time'
|
4
|
-
require 'oauth2'
|
5
|
-
|
6
|
-
OAuth2.configure do |config|
|
7
|
-
# noinspection RubyResolve
|
8
|
-
config.silence_extra_tokens_warning = true
|
9
|
-
end
|
10
|
-
|
11
|
-
module ZitadelClient
|
12
|
-
module Auth
|
13
|
-
##
|
14
|
-
# Base class for OAuth-based authentication using an OAuth2 client.
|
15
|
-
#
|
16
|
-
# Attributes:
|
17
|
-
# open_id: An object providing OAuth endpoint information.
|
18
|
-
# auth_session: An OAuth2Session instance used for fetching tokens.
|
19
|
-
#
|
20
|
-
class OAuthAuthenticator < Authenticator
|
21
|
-
protected
|
22
|
-
|
23
|
-
##
|
24
|
-
# Constructs an OAuthAuthenticator.
|
25
|
-
#
|
26
|
-
# @param open_id [OpenId] An object that must implement `get_host_endpoint` and `get_token_endpoint`.
|
27
|
-
# @param auth_session [OAuth2Session] The OAuth2Session instance used for token requests.
|
28
|
-
#
|
29
|
-
def initialize(open_id, auth_scopes, auth_session)
|
30
|
-
super(open_id.host_endpoint)
|
31
|
-
@open_id = open_id
|
32
|
-
@token = nil
|
33
|
-
@auth_session = auth_session
|
34
|
-
@auth_scopes = auth_scopes.to_a.join(' ')
|
35
|
-
end
|
36
|
-
|
37
|
-
##
|
38
|
-
# Returns the current access token, refreshing it if necessary.
|
39
|
-
#
|
40
|
-
# @return [String] The current access token.
|
41
|
-
#
|
42
|
-
def auth_token
|
43
|
-
token = @token
|
44
|
-
if token.nil? || token.expired?
|
45
|
-
refresh_token
|
46
|
-
token = @token
|
47
|
-
end
|
48
|
-
|
49
|
-
raise 'Token is nil after refresh' if token.nil?
|
50
|
-
|
51
|
-
token.token
|
52
|
-
end
|
53
|
-
|
54
|
-
##
|
55
|
-
# Retrieves authentication headers.
|
56
|
-
#
|
57
|
-
# @return [Hash{String => String}] A hash containing the 'Authorization' header.
|
58
|
-
#
|
59
|
-
def auth_headers
|
60
|
-
{ 'Authorization' => "Bearer #{auth_token}" }
|
61
|
-
end
|
62
|
-
|
63
|
-
##
|
64
|
-
# Builds and returns a hash of grant parameters required for the token request.
|
65
|
-
#
|
66
|
-
# The base class will invoke this method by passing its OAuth2 client.
|
67
|
-
# The subclass implementation should return the result of either:
|
68
|
-
# client.client_credentials.get_token(scope: scopes)
|
69
|
-
# or
|
70
|
-
# client.assertion.get_token(claims)
|
71
|
-
#
|
72
|
-
# @param auth_client [OAuth2::Client] The OAuth2 client instance.
|
73
|
-
# @param [String] auth_scopes
|
74
|
-
# @return [OAuth2::AccessToken] A hash of parameters used to fetch a token.
|
75
|
-
#
|
76
|
-
def get_grant(auth_client, auth_scopes)
|
77
|
-
# :nocov:
|
78
|
-
raise NotImplementedError, "#{self.class}#get_grant must be implemented"
|
79
|
-
# :nocov:
|
80
|
-
end
|
81
|
-
|
82
|
-
##
|
83
|
-
# Refreshes the access token using the OAuth flow.
|
84
|
-
#
|
85
|
-
# It uses `get_grant` to obtain all necessary parameters for the token request.
|
86
|
-
#
|
87
|
-
# @return [OAuth2::AccessToken] A new Token instance.
|
88
|
-
# @raise [RuntimeError] if the token refresh fails.
|
89
|
-
#
|
90
|
-
def refresh_token
|
91
|
-
@token = get_grant(@auth_session, @auth_scopes)
|
92
|
-
rescue StandardError => e
|
93
|
-
raise ZitadelError.new("Failed to refresh token: #{e.message}"), cause: e
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|