├── .github └── workflows │ └── build.yml ├── .gitignore ├── .isort.cfg ├── .pylintrc ├── CODE_OF_CONDUCT.md ├── LICENSE.txt ├── Makefile ├── NOTICES.md ├── README.md ├── SECURITY.md ├── ark_sdk_python ├── __init__.py ├── actions │ ├── __init__.py │ ├── ark_action.py │ ├── ark_cache_action.py │ ├── ark_configure_action.py │ ├── ark_exec_action.py │ ├── ark_login_action.py │ ├── ark_profiles_action.py │ └── ark_service_exec_action.py ├── args │ ├── __init__.py │ ├── ark_args_formatter.py │ └── ark_pydantic_argparse.py ├── ark.py ├── ark_api.py ├── auth │ ├── __init__.py │ ├── ark_auth.py │ ├── ark_isp_auth.py │ └── identity │ │ ├── __init__.py │ │ ├── ark_identity.py │ │ ├── ark_identity_fqdn_resolver.py │ │ └── ark_identity_service_user.py ├── cli_services │ ├── __init__.py │ ├── ark_cli_api.py │ └── sia │ │ ├── __init__.py │ │ ├── common │ │ ├── __init__.py │ │ └── ark_sia_base_policies_editor_service.py │ │ ├── db │ │ ├── __init__.py │ │ └── ark_sia_db_policies_editor_service.py │ │ └── vm │ │ ├── __init__.py │ │ └── ark_sia_vm_policies_editor_service.py ├── common │ ├── __init__.py │ ├── ark_async_client.py │ ├── ark_async_request.py │ ├── ark_client.py │ ├── ark_jwt_utils.py │ ├── ark_keyring.py │ ├── ark_logger.py │ ├── ark_page.py │ ├── ark_pollers.py │ ├── ark_random_utils.py │ ├── ark_retry.py │ ├── ark_system_config.py │ ├── connections │ │ ├── __init__.py │ │ ├── ark_connection.py │ │ ├── ssh │ │ │ ├── __init__.py │ │ │ ├── ark_pty_ssh_connection.py │ │ │ ├── ark_pty_ssh_win_connection.py │ │ │ └── ark_ssh_connection.py │ │ └── winrm │ │ │ ├── __init__.py │ │ │ └── ark_winrm_connection.py │ ├── env │ │ ├── __init__.py │ │ └── ark_env_mapping.py │ └── isp │ │ ├── __init__.py │ │ └── ark_isp_service_client.py ├── examples │ ├── create_identity_resources.py │ ├── create_sia_db_environment.py │ ├── create_sia_vm_environment.py │ ├── default_suffix.py │ ├── list_pcloud_accounts.py │ ├── session_monitoring_activites.py │ └── validate_ssh_connection.py ├── models │ ├── __init__.py │ ├── actions │ │ ├── __init__.py │ │ ├── ark_configure_action_consts.py │ │ ├── ark_service_action_definition.py │ │ └── services │ │ │ ├── __init__.py │ │ │ ├── ark_cmgr_exec_action_consts.py │ │ │ ├── ark_identity_exec_action_consts.py │ │ │ ├── ark_pcloud_exec_action_consts.py │ │ │ ├── ark_sia_exec_action_consts.py │ │ │ └── ark_sm_exec_action_consts.py │ ├── ark_exceptions.py │ ├── ark_model.py │ ├── ark_profile.py │ ├── auth │ │ ├── __init__.py │ │ ├── ark_auth_method.py │ │ ├── ark_auth_profile.py │ │ ├── ark_secret.py │ │ └── ark_token.py │ ├── cli_services │ │ ├── __init__.py │ │ └── sia │ │ │ ├── __init__.py │ │ │ └── policies_editor │ │ │ ├── __init__.py │ │ │ ├── common │ │ │ ├── __init__.py │ │ │ ├── ark_sia_base_generate_policy.py │ │ │ ├── ark_sia_commit_policies.py │ │ │ ├── ark_sia_edit_policies.py │ │ │ ├── ark_sia_get_policies_status.py │ │ │ ├── ark_sia_load_policies.py │ │ │ ├── ark_sia_loaded_policies.py │ │ │ ├── ark_sia_policies_diff.py │ │ │ ├── ark_sia_policies_status.py │ │ │ ├── ark_sia_remove_policies.py │ │ │ ├── ark_sia_reset_policies.py │ │ │ └── ark_sia_view_policies.py │ │ │ ├── db │ │ │ ├── __init__.py │ │ │ └── ark_sia_db_generate_policy.py │ │ │ └── vm │ │ │ ├── __init__.py │ │ │ └── ark_sia_vm_generate_policy.py │ ├── common │ │ ├── __init__.py │ │ ├── ark_access_method.py │ │ ├── ark_application_code.py │ │ ├── ark_async_request_settings.py │ │ ├── ark_async_status.py │ │ ├── ark_async_task.py │ │ ├── ark_connection_method.py │ │ ├── ark_connector_type.py │ │ ├── ark_counted_values.py │ │ ├── ark_network_entity_type.py │ │ ├── ark_os_type.py │ │ ├── ark_protocol_type.py │ │ ├── ark_region.py │ │ ├── ark_status.py │ │ ├── ark_status_stats.py │ │ ├── ark_validations.py │ │ ├── ark_workspace_type.py │ │ ├── aws │ │ │ ├── __init__.py │ │ │ └── ark_cfn_async_task.py │ │ ├── connections │ │ │ ├── __init__.py │ │ │ ├── ark_connection_command.py │ │ │ ├── ark_connection_credentials.py │ │ │ ├── ark_connection_details.py │ │ │ ├── ark_connection_result.py │ │ │ └── connection_data │ │ │ │ ├── __init__.py │ │ │ │ ├── ark_ssh_connection_data.py │ │ │ │ └── ark_winrm_connection_data.py │ │ ├── identity │ │ │ ├── __init__.py │ │ │ ├── ark_identity_auth_schemas.py │ │ │ ├── ark_identity_common_schemas.py │ │ │ └── ark_identity_directory_schemas.py │ │ └── isp │ │ │ ├── __init__.py │ │ │ └── ark_platform_discovery_schemas.py │ └── services │ │ ├── __init__.py │ │ ├── ark_service_config.py │ │ ├── cmgr │ │ ├── __init__.py │ │ ├── ark_cmgr_add_network.py │ │ ├── ark_cmgr_add_pool.py │ │ ├── ark_cmgr_add_pool_identifiers.py │ │ ├── ark_cmgr_bulk_response.py │ │ ├── ark_cmgr_delete_network.py │ │ ├── ark_cmgr_delete_pool.py │ │ ├── ark_cmgr_delete_pool_identifiers.py │ │ ├── ark_cmgr_get_network.py │ │ ├── ark_cmgr_get_pool.py │ │ ├── ark_cmgr_get_pool_component.py │ │ ├── ark_cmgr_list_pool_identifiers.py │ │ ├── ark_cmgr_network.py │ │ ├── ark_cmgr_networks_filter.py │ │ ├── ark_cmgr_networks_stats.py │ │ ├── ark_cmgr_pool.py │ │ ├── ark_cmgr_pool_component.py │ │ ├── ark_cmgr_pool_components_filter.py │ │ ├── ark_cmgr_pool_identifiers.py │ │ ├── ark_cmgr_pool_identifiers_filter.py │ │ ├── ark_cmgr_pools_common_filter.py │ │ ├── ark_cmgr_pools_filter.py │ │ ├── ark_cmgr_pools_stats.py │ │ ├── ark_cmgr_update_network.py │ │ └── ark_cmgr_update_pool.py │ │ ├── identity │ │ ├── __init__.py │ │ ├── connectors │ │ │ ├── __init__.py │ │ │ ├── ark_identity_connector_info.py │ │ │ ├── ark_identity_connectors_filter.py │ │ │ └── ark_identity_get_connector.py │ │ ├── directories │ │ │ ├── __init__.py │ │ │ ├── ark_identity_directory.py │ │ │ ├── ark_identity_entity.py │ │ │ ├── ark_identity_list_directories.py │ │ │ └── ark_identity_list_directories_entities.py │ │ ├── policies │ │ │ ├── __init__.py │ │ │ ├── ark_identity_add_authentication_profile.py │ │ │ ├── ark_identity_add_policy.py │ │ │ ├── ark_identity_authentication_profile.py │ │ │ ├── ark_identity_disable_policy.py │ │ │ ├── ark_identity_enable_policy.py │ │ │ ├── ark_identity_get_authentication_profile.py │ │ │ ├── ark_identity_get_policy.py │ │ │ ├── ark_identity_policy.py │ │ │ ├── ark_identity_policy_info.py │ │ │ ├── ark_identity_policy_operation.py │ │ │ ├── ark_identity_policy_operation_type.py │ │ │ ├── ark_identity_remove_authentication_profile.py │ │ │ └── ark_identity_remove_policy.py │ │ ├── roles │ │ │ ├── __init__.py │ │ │ ├── ark_identity_add_admin_right_to_role.py │ │ │ ├── ark_identity_add_group_to_role.py │ │ │ ├── ark_identity_add_role_to_role.py │ │ │ ├── ark_identity_add_user_to_role.py │ │ │ ├── ark_identity_admin_right.py │ │ │ ├── ark_identity_create_role.py │ │ │ ├── ark_identity_delete_role.py │ │ │ ├── ark_identity_list_role_members.py │ │ │ ├── ark_identity_remove_group_from_role.py │ │ │ ├── ark_identity_remove_role_from_role.py │ │ │ ├── ark_identity_remove_user_from_role.py │ │ │ ├── ark_identity_role.py │ │ │ ├── ark_identity_role_id_by_name.py │ │ │ ├── ark_identity_role_member.py │ │ │ └── ark_identity_update_role.py │ │ └── users │ │ │ ├── __init__.py │ │ │ ├── ark_identity_create_user.py │ │ │ ├── ark_identity_delete_user.py │ │ │ ├── ark_identity_delete_users.py │ │ │ ├── ark_identity_reset_user_password.py │ │ │ ├── ark_identity_update_user.py │ │ │ ├── ark_identity_user.py │ │ │ ├── ark_identity_user_by_id.py │ │ │ ├── ark_identity_user_by_name.py │ │ │ ├── ark_identity_user_id_by_name.py │ │ │ └── ark_identity_user_info.py │ │ ├── pcloud │ │ ├── __init__.py │ │ ├── accounts │ │ │ ├── __init__.py │ │ │ ├── ark_pcloud_account.py │ │ │ ├── ark_pcloud_account_credentials.py │ │ │ ├── ark_pcloud_account_secret_version.py │ │ │ ├── ark_pcloud_accounts_filter.py │ │ │ ├── ark_pcloud_accounts_stats.py │ │ │ ├── ark_pcloud_add_account.py │ │ │ ├── ark_pcloud_change_account_credentials.py │ │ │ ├── ark_pcloud_delete_account.py │ │ │ ├── ark_pcloud_generate_account_credentials.py │ │ │ ├── ark_pcloud_get_account.py │ │ │ ├── ark_pcloud_get_account_credentials.py │ │ │ ├── ark_pcloud_link_account.py │ │ │ ├── ark_pcloud_list_account_secret_versions.py │ │ │ ├── ark_pcloud_reconcile_account_credentials.py │ │ │ ├── ark_pcloud_set_account_next_credentials.py │ │ │ ├── ark_pcloud_unlink_account.py │ │ │ ├── ark_pcloud_update_account.py │ │ │ ├── ark_pcloud_update_account_credentials_in_vault.py │ │ │ └── ark_pcloud_verify_account_credentias.py │ │ ├── applications │ │ │ ├── __init__.py │ │ │ ├── ark_pcloud_add_application.py │ │ │ ├── ark_pcloud_add_application_auth_method.py │ │ │ ├── ark_pcloud_application.py │ │ │ ├── ark_pcloud_application_auth_method.py │ │ │ ├── ark_pcloud_application_auth_methods_filter.py │ │ │ ├── ark_pcloud_applications_filter.py │ │ │ ├── ark_pcloud_applications_stats.py │ │ │ ├── ark_pcloud_delete_application.py │ │ │ ├── ark_pcloud_delete_application_auth_method.py │ │ │ ├── ark_pcloud_get_application.py │ │ │ ├── ark_pcloud_get_application_auth_method.py │ │ │ └── ark_pcloud_list_application_auth_methods.py │ │ ├── platforms │ │ │ ├── __init__.py │ │ │ ├── ark_pcloud_activate_target_platform.py │ │ │ ├── ark_pcloud_deactivate_target_platform.py │ │ │ ├── ark_pcloud_delete_target_platform.py │ │ │ ├── ark_pcloud_duplicate_target_platform.py │ │ │ ├── ark_pcloud_duplicated_target_platform_info.py │ │ │ ├── ark_pcloud_export_platform.py │ │ │ ├── ark_pcloud_export_target_platform.py │ │ │ ├── ark_pcloud_get_platform.py │ │ │ ├── ark_pcloud_get_target_platform.py │ │ │ ├── ark_pcloud_import_platform.py │ │ │ ├── ark_pcloud_import_target_platform.py │ │ │ ├── ark_pcloud_platform.py │ │ │ ├── ark_pcloud_platforms_filter.py │ │ │ ├── ark_pcloud_platforms_stats.py │ │ │ ├── ark_pcloud_target_platform.py │ │ │ ├── ark_pcloud_target_platforms_filter.py │ │ │ └── ark_pcloud_target_platforms_stats.py │ │ └── safes │ │ │ ├── __init__.py │ │ │ ├── ark_pcloud_add_safe.py │ │ │ ├── ark_pcloud_add_safe_member.py │ │ │ ├── ark_pcloud_delete_safe.py │ │ │ ├── ark_pcloud_delete_safe_member.py │ │ │ ├── ark_pcloud_get_safe.py │ │ │ ├── ark_pcloud_get_safe_member.py │ │ │ ├── ark_pcloud_get_safe_members_stats.py │ │ │ ├── ark_pcloud_list_safe_members.py │ │ │ ├── ark_pcloud_safe.py │ │ │ ├── ark_pcloud_safe_member.py │ │ │ ├── ark_pcloud_safe_members_filter.py │ │ │ ├── ark_pcloud_safes_filters.py │ │ │ ├── ark_pcloud_safes_members_stats.py │ │ │ ├── ark_pcloud_safes_stats.py │ │ │ ├── ark_pcloud_update_safe.py │ │ │ └── ark_pcloud_update_safe_member.py │ │ ├── sia │ │ ├── __init__.py │ │ ├── access │ │ │ ├── __init__.py │ │ │ ├── ark_sia_access_workspace_type_serializer.py │ │ │ ├── ark_sia_connector_setup_script.py │ │ │ ├── ark_sia_get_connector_setup_script.py │ │ │ ├── ark_sia_install_connector.py │ │ │ └── ark_sia_uninstall_connector.py │ │ ├── certificates │ │ │ ├── __init__.py │ │ │ ├── ark_sia_certificates_certificate.py │ │ │ ├── ark_sia_certificates_delete_certificate.py │ │ │ ├── ark_sia_certificates_filter.py │ │ │ ├── ark_sia_certificates_get_certificate.py │ │ │ └── ark_sia_certificates_update_certificate.py │ │ ├── db │ │ │ ├── __init__.py │ │ │ ├── ark_sia_db_assets_type.py │ │ │ ├── ark_sia_db_base_execution.py │ │ │ ├── ark_sia_db_base_generate_assets.py │ │ │ ├── ark_sia_db_generated_assets.py │ │ │ ├── ark_sia_db_mysql_execution.py │ │ │ ├── ark_sia_db_oracle_generate_assets.py │ │ │ ├── ark_sia_db_proxy_fullchain_generate_assets.py │ │ │ └── ark_sia_db_psql_execution.py │ │ ├── k8s │ │ │ ├── __init__.py │ │ │ └── ark_sia_k8s_generate_kubeconfig.py │ │ ├── policies │ │ │ ├── __init__.py │ │ │ ├── common │ │ │ │ ├── __init__.py │ │ │ │ ├── ark_sia_base_add_policy.py │ │ │ │ ├── ark_sia_base_authorization_rule.py │ │ │ │ ├── ark_sia_base_authorization_rule_extended.py │ │ │ │ ├── ark_sia_base_connection_information.py │ │ │ │ ├── ark_sia_base_policies_filter.py │ │ │ │ ├── ark_sia_base_policies_stats.py │ │ │ │ ├── ark_sia_base_policy.py │ │ │ │ ├── ark_sia_base_policy_list_item.py │ │ │ │ ├── ark_sia_base_policy_list_item_extanded.py │ │ │ │ ├── ark_sia_base_update_policy.py │ │ │ │ ├── ark_sia_delete_policy.py │ │ │ │ ├── ark_sia_get_policy.py │ │ │ │ ├── ark_sia_rule_status.py │ │ │ │ ├── ark_sia_update_policy_status.py │ │ │ │ └── ark_sia_user_data.py │ │ │ ├── db │ │ │ │ ├── __init__.py │ │ │ │ ├── ark_sia_db_add_policy.py │ │ │ │ ├── ark_sia_db_authorization_rule.py │ │ │ │ ├── ark_sia_db_connection_data.py │ │ │ │ ├── ark_sia_db_enums.py │ │ │ │ ├── ark_sia_db_policies_filter.py │ │ │ │ ├── ark_sia_db_policies_stats.py │ │ │ │ ├── ark_sia_db_policies_workspace_type_serializer.py │ │ │ │ ├── ark_sia_db_policy.py │ │ │ │ ├── ark_sia_db_policy_list_item.py │ │ │ │ ├── ark_sia_db_providers.py │ │ │ │ └── ark_sia_db_update_policy.py │ │ │ └── vm │ │ │ │ ├── __init__.py │ │ │ │ ├── ark_sia_vm_add_policy.py │ │ │ │ ├── ark_sia_vm_authorization_rule.py │ │ │ │ ├── ark_sia_vm_connection_data.py │ │ │ │ ├── ark_sia_vm_policies_filter.py │ │ │ │ ├── ark_sia_vm_policies_filter_by_query.py │ │ │ │ ├── ark_sia_vm_policies_protocol_type_serializer.py │ │ │ │ ├── ark_sia_vm_policies_stats.py │ │ │ │ ├── ark_sia_vm_policies_workspace_type_serializer.py │ │ │ │ ├── ark_sia_vm_policy.py │ │ │ │ ├── ark_sia_vm_policy_list_item.py │ │ │ │ ├── ark_sia_vm_providers.py │ │ │ │ └── ark_sia_vm_update_policy.py │ │ ├── secrets │ │ │ ├── __init__.py │ │ │ ├── db │ │ │ │ ├── __init__.py │ │ │ │ ├── ark_sia_db_add_secret.py │ │ │ │ ├── ark_sia_db_delete_secret.py │ │ │ │ ├── ark_sia_db_disable_secret.py │ │ │ │ ├── ark_sia_db_enable_secret.py │ │ │ │ ├── ark_sia_db_get_secret.py │ │ │ │ ├── ark_sia_db_secret_metadata.py │ │ │ │ ├── ark_sia_db_secret_type.py │ │ │ │ ├── ark_sia_db_secrets_filter.py │ │ │ │ ├── ark_sia_db_secrets_stats.py │ │ │ │ ├── ark_sia_db_store_descriptor.py │ │ │ │ ├── ark_sia_db_store_type.py │ │ │ │ ├── ark_sia_db_update_secret.py │ │ │ │ ├── secret_links │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── ark_sia_db_pam_account_secret_link.py │ │ │ │ └── secrets_data │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── ark_sia_db_atlas_access_keys_secret_data.py │ │ │ │ │ ├── ark_sia_db_iam_user_secret_data.py │ │ │ │ │ └── ark_sia_db_user_password_secret_data.py │ │ │ └── vm │ │ │ │ ├── __init__.py │ │ │ │ ├── ark_sia_vm_add_secret.py │ │ │ │ ├── ark_sia_vm_change_secret.py │ │ │ │ ├── ark_sia_vm_delete_secret.py │ │ │ │ ├── ark_sia_vm_get_secret.py │ │ │ │ ├── ark_sia_vm_secret.py │ │ │ │ ├── ark_sia_vm_secret_error.py │ │ │ │ ├── ark_sia_vm_secret_info.py │ │ │ │ ├── ark_sia_vm_secret_type.py │ │ │ │ ├── ark_sia_vm_secrets_filter.py │ │ │ │ └── ark_sia_vm_secrets_stats.py │ │ ├── sso │ │ │ ├── __init__.py │ │ │ ├── ark_sia_sso_acquire_token_response.py │ │ │ ├── ark_sia_sso_get_short_lived_client_certificate.py │ │ │ ├── ark_sia_sso_get_short_lived_oracle_wallet.py │ │ │ ├── ark_sia_sso_get_short_lived_password.py │ │ │ ├── ark_sia_sso_get_short_lived_rdp_file.py │ │ │ ├── ark_sia_sso_get_ssh_key.py │ │ │ ├── ark_sia_sso_get_token_info.py │ │ │ ├── ark_sia_sso_token_info.py │ │ │ └── ark_sia_sso_token_type.py │ │ └── workspaces │ │ │ ├── __init__.py │ │ │ ├── db │ │ │ ├── __init__.py │ │ │ ├── ark_sia_db_add_database.py │ │ │ ├── ark_sia_db_auth_method.py │ │ │ ├── ark_sia_db_database.py │ │ │ ├── ark_sia_db_database_info.py │ │ │ ├── ark_sia_db_database_target_service.py │ │ │ ├── ark_sia_db_databases_filter.py │ │ │ ├── ark_sia_db_databases_stats.py │ │ │ ├── ark_sia_db_delete_database.py │ │ │ ├── ark_sia_db_get_database.py │ │ │ ├── ark_sia_db_platform_type_serializer.py │ │ │ ├── ark_sia_db_provider.py │ │ │ ├── ark_sia_db_tag.py │ │ │ ├── ark_sia_db_update_database.py │ │ │ └── ark_sia_db_warning.py │ │ │ └── targetsets │ │ │ ├── __init__.py │ │ │ ├── ark_sia_add_target_set.py │ │ │ ├── ark_sia_bulk_add_target_sets.py │ │ │ ├── ark_sia_bulk_delete_target_sets.py │ │ │ ├── ark_sia_bulk_target_set_response.py │ │ │ ├── ark_sia_delete_target_set.py │ │ │ ├── ark_sia_get_target_set.py │ │ │ ├── ark_sia_target_set.py │ │ │ ├── ark_sia_target_set_type.py │ │ │ ├── ark_sia_target_sets_filter.py │ │ │ ├── ark_sia_target_sets_stats.py │ │ │ └── ark_sia_update_target_set.py │ │ └── sm │ │ ├── __init__.py │ │ ├── ark_sm_get_session.py │ │ ├── ark_sm_get_session_activities.py │ │ ├── ark_sm_protocol_type_serializer.py │ │ ├── ark_sm_session.py │ │ ├── ark_sm_session_activity.py │ │ ├── ark_sm_session_activity_filter.py │ │ ├── ark_sm_sessions_filter.py │ │ ├── ark_sm_sessions_stats.py │ │ └── ark_sm_workspace_type_serializer.py └── services │ ├── __init__.py │ ├── ark_service.py │ ├── cmgr │ ├── __init__.py │ └── ark_cmgr_service.py │ ├── identity │ ├── __init__.py │ ├── ark_identity_api.py │ ├── common │ │ ├── __init__.py │ │ └── ark_identity_base_service.py │ ├── connectors │ │ ├── __init__.py │ │ └── ark_identity_connectors_service.py │ ├── directories │ │ ├── __init__.py │ │ └── ark_identity_directories_service.py │ ├── policies │ │ ├── __init__.py │ │ └── ark_identity_policies_service.py │ ├── roles │ │ ├── __init__.py │ │ └── ark_identity_roles_service.py │ └── users │ │ ├── __init__.py │ │ └── ark_identity_users_service.py │ ├── pcloud │ ├── __init__.py │ ├── accounts │ │ ├── __init__.py │ │ └── ark_pcloud_accounts_service.py │ ├── applications │ │ ├── __init__.py │ │ └── ark_pcloud_applications_service.py │ ├── ark_pcloud_api.py │ ├── common │ │ ├── __init__.py │ │ └── ark_pcloud_base_service.py │ ├── platforms │ │ ├── __init__.py │ │ └── ark_pcloud_platforms_service.py │ └── safes │ │ ├── __init__.py │ │ └── ark_pcloud_safes_service.py │ ├── sia │ ├── __init__.py │ ├── access │ │ ├── __init__.py │ │ └── ark_sia_access_service.py │ ├── ark_sia_api.py │ ├── certificates │ │ ├── __init__.py │ │ └── ark_sia_certificates_service.py │ ├── db │ │ ├── __init__.py │ │ └── ark_sia_db_service.py │ ├── k8s │ │ ├── __init__.py │ │ └── ark_sia_k8s_service.py │ ├── policies │ │ ├── __init__.py │ │ ├── db │ │ │ ├── __init__.py │ │ │ └── ark_sia_db_policies_service.py │ │ └── vm │ │ │ ├── __init__.py │ │ │ └── ark_sia_vm_policies_service.py │ ├── secrets │ │ ├── __init__.py │ │ ├── db │ │ │ ├── __init__.py │ │ │ └── ark_sia_db_secrets_service.py │ │ └── vm │ │ │ ├── __init__.py │ │ │ └── ark_sia_vm_secrets_service.py │ ├── sso │ │ ├── __init__.py │ │ └── ark_sia_sso_service.py │ └── workspaces │ │ ├── __init__.py │ │ ├── db │ │ ├── __init__.py │ │ └── ark_sia_db_workspace_service.py │ │ └── targetsets │ │ ├── __init__.py │ │ └── ark_sia_target_sets_workspace_service.py │ └── sm │ ├── __init__.py │ └── ark_sm_service.py ├── assets ├── ark_sdk_admin_tldr.gif ├── ark_sdk_enduser_tldr.gif └── sdk.png ├── build.py ├── docs ├── architecture.md ├── commands │ ├── cache.md │ ├── configure.md │ ├── exec.md │ ├── login.md │ └── profiles.md ├── examples │ ├── commands_examples.md │ └── sdk_examples.md ├── gen_ref_pages.py ├── getting_started.md ├── howto │ ├── enduser_databases_workflow.md │ ├── enduser_kubernetes_workflow.md │ ├── enduser_rdp_workflow.md │ ├── enduser_ssh_workflow.md │ ├── install_sia_connectors.md │ ├── refreshing_authentication.md │ ├── simple_commands_workflow.md │ ├── simple_sdk_workflow.md │ ├── working_with_ark_cache.md │ └── working_with_profiles.md ├── index.md ├── license.md ├── media │ ├── ark_sdk_admin_tldr.gif │ ├── ark_sdk_design.png │ ├── ark_sdk_enduser_tldr.gif │ ├── favicon.ico │ ├── logo.svg │ └── sdk.png ├── overrides │ └── main.html ├── sdk │ ├── async_requests.md │ ├── authenticators.md │ ├── pagination.md │ ├── schemas.md │ └── services.md └── stylesheets │ └── extra.css ├── mkdocs.yml ├── poetry.lock ├── pyproject.toml ├── scripts └── wheel_editor.sh └── tests ├── __init__.py └── unit ├── __init__.py ├── auth ├── __init__.py └── test_ark_isp_auth.py └── helpers ├── __init__.py ├── identity_responses.py └── profile_generator.py /.isort.cfg: -------------------------------------------------------------------------------- 1 | [isort] 2 | py_version=38 3 | multi_line_output = 3 4 | include_trailing_comma = true 5 | force_grid_wrap = 0 6 | use_parentheses = true 7 | line_length = 140 8 | skip=.gitignore,.dockerignore,.venv,assets,.git,.vscode -------------------------------------------------------------------------------- /ark_sdk_python/__init__.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | 4 | sys.path.append(os.path.dirname(os.path.realpath(__file__))) 5 | sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))) 6 | 7 | from ark_sdk_python.ark_api import ArkAPI 8 | 9 | __all__ = ['ArkAPI'] 10 | -------------------------------------------------------------------------------- /ark_sdk_python/actions/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.actions.ark_action import ArkAction 2 | from ark_sdk_python.actions.ark_cache_action import ArkCacheAction 3 | from ark_sdk_python.actions.ark_configure_action import ArkConfigureAction 4 | from ark_sdk_python.actions.ark_exec_action import ArkExecAction 5 | from ark_sdk_python.actions.ark_login_action import ArkLoginAction 6 | from ark_sdk_python.actions.ark_profiles_action import ArkProfilesAction 7 | from ark_sdk_python.actions.ark_service_exec_action import ArkServiceExecAction 8 | 9 | __all__ = [ 10 | 'ArkConfigureAction', 11 | 'ArkLoginAction', 12 | 'ArkExecAction', 13 | 'ArkServiceExecAction', 14 | 'ArkProfilesAction', 15 | 'ArkCacheAction', 16 | 'ArkAction', 17 | ] 18 | -------------------------------------------------------------------------------- /ark_sdk_python/args/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.args.ark_args_formatter import ARK_INQUIRER_THEME, ArkArgsFormatter, ArkInquirerRender 2 | from ark_sdk_python.args.ark_pydantic_argparse import ArkPydanticArgparse 3 | 4 | __all__ = ['ArkArgsFormatter', 'ArkPydanticArgparse', 'ArkInquirerRender', 'ARK_INQUIRER_THEME'] 5 | -------------------------------------------------------------------------------- /ark_sdk_python/auth/__init__.py: -------------------------------------------------------------------------------- 1 | import itertools 2 | from typing import Dict, Final, List, Set, Type 3 | 4 | from ark_sdk_python.auth.ark_auth import ArkAuth 5 | from ark_sdk_python.auth.ark_isp_auth import ArkISPAuth 6 | from ark_sdk_python.models.auth.ark_auth_method import ArkAuthMethod 7 | 8 | SUPPORTED_AUTHENTICATORS_LIST: Final[List[Type[ArkAuth]]] = [ArkISPAuth] 9 | SUPPORTED_AUTHENTICATORS: Final[Dict[(str, Type[ArkAuth])]] = {auth.authenticator_name(): auth for auth in SUPPORTED_AUTHENTICATORS_LIST} 10 | SUPPORTED_AUTH_METHODS: Final[Set[ArkAuthMethod]] = set( 11 | itertools.chain.from_iterable([auth.supported_auth_methods() for auth in SUPPORTED_AUTHENTICATORS_LIST]) 12 | ) 13 | -------------------------------------------------------------------------------- /ark_sdk_python/auth/identity/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.auth.identity.ark_identity import ArkIdentity 2 | from ark_sdk_python.auth.identity.ark_identity_fqdn_resolver import ArkIdentityFQDNResolver 3 | from ark_sdk_python.auth.identity.ark_identity_service_user import ArkIdentityServiceUser 4 | 5 | __all__ = ['ArkIdentityFQDNResolver', 'ArkIdentity', 'ArkIdentityServiceUser'] 6 | -------------------------------------------------------------------------------- /ark_sdk_python/cli_services/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.cli_services.ark_cli_api import ArkCLIAPI 2 | 3 | __all__ = ['ArkCLIAPI'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/cli_services/ark_cli_api.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from ark_sdk_python.ark_api import ArkAPI 4 | 5 | 6 | class ArkCLIAPI(ArkAPI): 7 | @property 8 | def sia_policies_vm_editor(self) -> "ArkSIAVMPoliciesEditorService": 9 | """ 10 | VM policy editor CLI service 11 | 12 | Returns: 13 | ArkSIAVMPoliciesEditorService: _description_ 14 | """ 15 | from ark_sdk_python.cli_services.sia.vm import ArkSIAVMPoliciesEditorService 16 | 17 | return ArkSIAVMPoliciesEditorService(self.authenticator('isp'), profile=self.profile) 18 | 19 | @property 20 | def sia_policies_db_editor(self) -> "ArkSIADBPoliciesEditorService": 21 | """ 22 | DB policy editor CLI service 23 | 24 | Returns: 25 | ArkSIADBPoliciesEditorService: _description_ 26 | """ 27 | from ark_sdk_python.cli_services.sia.db import ArkSIADBPoliciesEditorService 28 | 29 | return ArkSIADBPoliciesEditorService(self.authenticator('isp'), profile=self.profile) 30 | -------------------------------------------------------------------------------- /ark_sdk_python/cli_services/sia/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyberark/ark-sdk-python/3be12c3f2d3a2d0407025028943e584b6edc5996/ark_sdk_python/cli_services/sia/__init__.py -------------------------------------------------------------------------------- /ark_sdk_python/cli_services/sia/common/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyberark/ark-sdk-python/3be12c3f2d3a2d0407025028943e584b6edc5996/ark_sdk_python/cli_services/sia/common/__init__.py -------------------------------------------------------------------------------- /ark_sdk_python/cli_services/sia/db/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.cli_services.sia.db.ark_sia_db_policies_editor_service import ArkSIADBPoliciesEditorService 2 | 3 | __all__ = ['ArkSIADBPoliciesEditorService'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/cli_services/sia/vm/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.cli_services.sia.vm.ark_sia_vm_policies_editor_service import ArkSIAVMPoliciesEditorService 2 | 3 | __all__ = ['ArkSIAVMPoliciesEditorService'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/common/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.common.ark_async_client import ArkAsyncClient 2 | from ark_sdk_python.common.ark_async_request import ArkAsyncRequest 3 | from ark_sdk_python.common.ark_client import ArkClient 4 | from ark_sdk_python.common.ark_keyring import ArkKeyring 5 | from ark_sdk_python.common.ark_logger import ArkLogger, get_logger 6 | from ark_sdk_python.common.ark_page import ArkPage 7 | from ark_sdk_python.common.ark_pollers import ArkPollers 8 | from ark_sdk_python.common.ark_random_utils import ArkRandomUtils 9 | from ark_sdk_python.common.ark_system_config import ArkSystemConfig 10 | 11 | __all__ = [ 12 | 'ArkClient', 13 | 'ArkAsyncRequest', 14 | 'ArkKeyring', 15 | 'ArkAsyncClient', 16 | 'ArkPage', 17 | 'ArkRandomUtils', 18 | 'ArkPollers', 19 | 'ArkSystemConfig', 20 | 'ArkLogger', 21 | 'get_logger', 22 | ] 23 | -------------------------------------------------------------------------------- /ark_sdk_python/common/ark_jwt_utils.py: -------------------------------------------------------------------------------- 1 | from typing import Any, Dict 2 | 3 | 4 | class ArkJWTUtils: 5 | @staticmethod 6 | def get_unverified_claims(token: str) -> Dict[str, Any]: 7 | from jwt import decode as jwt_decode 8 | 9 | return jwt_decode( 10 | token, 11 | options={'verify_signature': False}, 12 | ) 13 | 14 | @staticmethod 15 | def get_subdomain_from_token(token: str) -> str: 16 | claims = ArkJWTUtils.get_unverified_claims(token) 17 | return claims.get('subdomain', '') 18 | 19 | @staticmethod 20 | def get_platform_domain_from_token(token: str) -> str: 21 | claims = ArkJWTUtils.get_unverified_claims(token) 22 | return claims.get('platform_domain', '') 23 | -------------------------------------------------------------------------------- /ark_sdk_python/common/ark_page.py: -------------------------------------------------------------------------------- 1 | from typing import Generic, List, TypeVar 2 | 3 | PageItem = TypeVar('PageItem') 4 | 5 | 6 | class ArkPage(Generic[PageItem]): 7 | def __init__(self, items: List[PageItem]) -> None: 8 | self.__items = items 9 | 10 | @property 11 | def items(self) -> List[PageItem]: 12 | return self.__items 13 | 14 | def __iter__(self): 15 | for item in self.__items: 16 | yield item 17 | -------------------------------------------------------------------------------- /ark_sdk_python/common/ark_random_utils.py: -------------------------------------------------------------------------------- 1 | import random 2 | import string 3 | from ipaddress import IPv4Address 4 | 5 | 6 | class ArkRandomUtils: 7 | @staticmethod 8 | def random_ip_address(): 9 | random.seed(random.randint(1, 10001)) 10 | return str(IPv4Address(random.getrandbits(32))) 11 | 12 | @staticmethod 13 | def random_string(n=8): 14 | return ''.join(random.choices(string.ascii_letters, k=n)) 15 | 16 | @staticmethod 17 | def random_password(n=10): 18 | return ''.join( 19 | random.choices(string.digits, k=1) 20 | + random.choices(string.ascii_lowercase, k=1) 21 | + random.choices(string.ascii_uppercase, k=1) 22 | + random.choices(string.ascii_letters + string.digits, k=n - 3) 23 | ) 24 | -------------------------------------------------------------------------------- /ark_sdk_python/common/connections/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.common.connections.ark_connection import ArkConnection 2 | 3 | __all__ = ['ArkConnection'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/common/connections/ssh/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.common.connections.ssh.ark_pty_ssh_connection import ArkPTYSSHConnection 2 | from ark_sdk_python.common.connections.ssh.ark_ssh_connection import SSH_PORT, ArkSSHConnection 3 | 4 | __all__ = ['ArkSSHConnection', 'ArkPTYSSHConnection', 'SSH_PORT'] 5 | -------------------------------------------------------------------------------- /ark_sdk_python/common/connections/winrm/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.common.connections.winrm.ark_winrm_connection import WINRM_HTTPS_PORT, ArkWinRMConnection 2 | 3 | __all__ = ['ArkWinRMConnection', 'WINRM_HTTPS_PORT'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/common/env/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.common.env.ark_env_mapping import ( 2 | DEPLOY_ENV, 3 | EVEREST_IDENTITY_TENANT_NAME, 4 | IDENTITY_ENV_URLS, 5 | IDENTITY_GENERATED_SUFFIX_PATTERN, 6 | IDENTITY_TENANT_NAME, 7 | ROOT_DOMAIN, 8 | SHELL_DOMAIN, 9 | AwsEnv, 10 | check_if_identity_generated_suffix, 11 | get_deploy_env, 12 | is_gov_cloud, 13 | ) 14 | 15 | __all__ = [ 16 | 'AwsEnv', 17 | 'DEPLOY_ENV', 18 | 'check_if_identity_generated_suffix', 19 | 'EVEREST_IDENTITY_TENANT_NAME', 20 | 'get_deploy_env', 21 | 'IDENTITY_ENV_URLS', 22 | 'IDENTITY_GENERATED_SUFFIX_PATTERN', 23 | 'IDENTITY_TENANT_NAME', 24 | 'SHELL_DOMAIN', 25 | 'ROOT_DOMAIN', 26 | 'is_gov_cloud', 27 | ] 28 | -------------------------------------------------------------------------------- /ark_sdk_python/common/isp/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.common.isp.ark_isp_service_client import ArkISPServiceClient 2 | 3 | __all__ = ['ArkISPServiceClient'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/examples/create_identity_resources.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.auth import ArkISPAuth 2 | from ark_sdk_python.models.auth import ArkAuthMethod, ArkAuthProfile, ArkSecret, IdentityArkAuthMethodSettings 3 | from ark_sdk_python.models.services.identity.roles import ArkIdentityCreateRole 4 | from ark_sdk_python.models.services.identity.users import ArkIdentityCreateUser 5 | from ark_sdk_python.services.identity import ArkIdentityAPI 6 | 7 | if __name__ == "__main__": 8 | isp_auth = ArkISPAuth() 9 | isp_auth.authenticate( 10 | auth_profile=ArkAuthProfile( 11 | username='CoolUser', auth_method=ArkAuthMethod.Identity, auth_method_settings=IdentityArkAuthMethodSettings() 12 | ), 13 | secret=ArkSecret(secret='CoolPassword'), 14 | ) 15 | 16 | # Create an identity service to create some users and roles 17 | print('Creating identity roles and users') 18 | identity_api = ArkIdentityAPI(isp_auth) 19 | identity_api.identity_roles.create_role(ArkIdentityCreateRole(role_name='IT')) 20 | identity_api.identity_users.create_user(ArkIdentityCreateUser(username='it_user', password='CoolPassword', roles=['IT'])) 21 | -------------------------------------------------------------------------------- /ark_sdk_python/examples/default_suffix.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.auth import ArkISPAuth 2 | from ark_sdk_python.models.ark_profile import ArkProfileLoader 3 | from ark_sdk_python.models.services.identity.directories import ArkIdentityListDirectoriesEntities 4 | from ark_sdk_python.services.identity import ArkIdentityAPI 5 | 6 | if __name__ == "__main__": 7 | isp_auth = ArkISPAuth() 8 | isp_auth.authenticate(ArkProfileLoader().load_default_profile()) 9 | identity_api = ArkIdentityAPI(isp_auth) 10 | print(identity_api.identity_directories.tenant_default_suffix()) 11 | for page in identity_api.identity_directories.list_directories_entities(ArkIdentityListDirectoriesEntities()): 12 | print([i.name for i in page.items]) 13 | -------------------------------------------------------------------------------- /ark_sdk_python/examples/list_pcloud_accounts.py: -------------------------------------------------------------------------------- 1 | import pprint 2 | 3 | from ark_sdk_python.auth import ArkISPAuth 4 | from ark_sdk_python.models.auth import ArkAuthMethod, ArkAuthProfile, ArkSecret, IdentityArkAuthMethodSettings 5 | from ark_sdk_python.services.pcloud.accounts import ArkPCloudAccountsService 6 | 7 | if __name__ == '__main__': 8 | isp_auth = ArkISPAuth(cache_authentication=False) 9 | isp_auth.authenticate( 10 | auth_profile=ArkAuthProfile( 11 | username='user@cyberark.cloud.12345', 12 | auth_method=ArkAuthMethod.Identity, 13 | auth_method_settings=IdentityArkAuthMethodSettings(), 14 | ), 15 | secret=ArkSecret(secret="CoolPassword"), 16 | ) 17 | accounts_service = ArkPCloudAccountsService(isp_auth=isp_auth) 18 | for page in accounts_service.list_accounts(): 19 | for item in page: 20 | pprint.pprint(item.model_dump()) 21 | -------------------------------------------------------------------------------- /ark_sdk_python/models/actions/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models.actions.ark_configure_action_consts import ( 2 | CONFIGURATION_ALLOWED_EMPTY_VALUES, 3 | CONFIGURATION_AUTHENTICATOR_IGNORED_DEFNITION_KEYS, 4 | CONFIGURATION_AUTHENTICATOR_IGNORED_INTERACTIVE_KEYS, 5 | CONFIGURATION_AUTHENTICATORS_DEFAULTS, 6 | CONFIGURATION_IGNORED_DEFINITION_KEYS, 7 | CONFIGURATION_IGNORED_INTERACTIVE_KEYS, 8 | CONFIGURATION_OVERRIDE_ALIASES, 9 | ) 10 | 11 | __all__ = [ 12 | 'CONFIGURATION_IGNORED_DEFINITION_KEYS', 13 | 'CONFIGURATION_AUTHENTICATOR_IGNORED_DEFNITION_KEYS', 14 | 'CONFIGURATION_IGNORED_INTERACTIVE_KEYS', 15 | 'CONFIGURATION_AUTHENTICATOR_IGNORED_INTERACTIVE_KEYS', 16 | 'CONFIGURATION_ALLOWED_EMPTY_VALUES', 17 | 'CONFIGURATION_AUTHENTICATORS_DEFAULTS', 18 | 'CONFIGURATION_OVERRIDE_ALIASES', 19 | ] 20 | -------------------------------------------------------------------------------- /ark_sdk_python/models/actions/ark_service_action_definition.py: -------------------------------------------------------------------------------- 1 | from typing import Any, Dict, List, Optional, Type 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models.ark_model import ArkModel 6 | 7 | 8 | class ArkServiceActionDefinition(ArkModel): 9 | action_name: str = Field(description='Action name to be used in the cli commands') 10 | schemas: Optional[Dict[str, Optional[Type[ArkModel]]]] = Field( 11 | default=None, description='Schemas for different cli actions for the definition' 12 | ) 13 | defaults: Optional[Dict[str, Dict[str, Any]]] = Field(default=None, description='Defaults for the action schemas parameters') 14 | async_actions: Optional[List[str]] = Field(default=None, description='List of async actions as part of the schemas') 15 | subactions: Optional[List['ArkServiceActionDefinition']] = Field(default=None, description='Subactions to this action') 16 | 17 | 18 | ArkServiceActionDefinition.model_rebuild() 19 | -------------------------------------------------------------------------------- /ark_sdk_python/models/actions/services/__init__.py: -------------------------------------------------------------------------------- 1 | from typing import Any, List 2 | 3 | from ark_sdk_python.models.actions.services.ark_cmgr_exec_action_consts import CMGR_ACTIONS 4 | from ark_sdk_python.models.actions.services.ark_identity_exec_action_consts import IDENTITY_ACTIONS 5 | from ark_sdk_python.models.actions.services.ark_pcloud_exec_action_consts import PCLOUD_ACTIONS 6 | from ark_sdk_python.models.actions.services.ark_sia_exec_action_consts import SIA_ACTIONS 7 | from ark_sdk_python.models.actions.services.ark_sm_exec_action_consts import SM_ACTIONS 8 | 9 | SUPPORTED_SERVICE_ACTIONS: List[Any] = [ 10 | IDENTITY_ACTIONS, 11 | SIA_ACTIONS, 12 | SM_ACTIONS, 13 | PCLOUD_ACTIONS, 14 | CMGR_ACTIONS, 15 | ] 16 | 17 | __all__ = [ 18 | 'IDENTITY_ACTIONS', 19 | 'SIA_ACTIONS', 20 | 'SM_ACTIONS', 21 | 'PCLOUD_ACTIONS', 22 | 'CMGR_ACTIONS', 23 | 'SUPPORTED_SERVICE_ACTIONS', 24 | ] 25 | -------------------------------------------------------------------------------- /ark_sdk_python/models/ark_exceptions.py: -------------------------------------------------------------------------------- 1 | from typing import Any 2 | 3 | 4 | class ArkException(Exception): 5 | pass 6 | 7 | 8 | class ArkAuthException(ArkException): 9 | pass 10 | 11 | 12 | class ArkNonInteractiveException(ArkException): 13 | pass 14 | 15 | 16 | class ArkInterruptedException(ArkException): 17 | pass 18 | 19 | 20 | class ArkValidationException(ArkException): 21 | pass 22 | 23 | 24 | class ArkNotFoundException(ArkException): 25 | pass 26 | 27 | 28 | class ArkNotSupportedException(ArkException): 29 | pass 30 | 31 | 32 | class ArkServiceException(ArkException): 33 | def __init__(self, error: Any, *args: object) -> None: 34 | self.error = error 35 | super().__init__(error, *args) 36 | -------------------------------------------------------------------------------- /ark_sdk_python/models/auth/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models.auth.ark_auth_method import ( 2 | ArkAuthMethod, 3 | ArkAuthMethodsDescriptionMap, 4 | ArkAuthMethodSettings, 5 | ArkAuthMethodSettingsMap, 6 | ArkAuthMethodSettingsTypes, 7 | ArkAuthMethodSharableCredentials, 8 | ArkAuthMethodsRequireCredentials, 9 | DirectArkAuthMethodSettings, 10 | IdentityArkAuthMethodSettings, 11 | IdentityServiceUserArkAuthMethodSettings, 12 | ) 13 | from ark_sdk_python.models.auth.ark_auth_profile import ArkAuthProfile 14 | from ark_sdk_python.models.auth.ark_secret import ArkSecret 15 | from ark_sdk_python.models.auth.ark_token import ArkToken, ArkTokenType 16 | 17 | __all__ = [ 18 | 'ArkAuthMethod', 19 | 'ArkAuthMethodSettings', 20 | 'IdentityArkAuthMethodSettings', 21 | 'IdentityServiceUserArkAuthMethodSettings', 22 | 'DirectArkAuthMethodSettings', 23 | 'ArkAuthMethodSettings', 24 | 'ArkAuthMethodsDescriptionMap', 25 | 'ArkAuthMethodSettingsMap', 26 | 'ArkAuthMethodSettingsTypes', 27 | 'ArkAuthMethodsRequireCredentials', 28 | 'ArkAuthMethodSharableCredentials', 29 | 'ArkAuthProfile', 30 | 'ArkToken', 31 | 'ArkTokenType', 32 | 'ArkSecret', 33 | ] 34 | -------------------------------------------------------------------------------- /ark_sdk_python/models/auth/ark_secret.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models.ark_model import ArkModel, ArkSecretStr 6 | 7 | 8 | class ArkSecret(ArkModel): 9 | secret: Optional[ArkSecretStr] = Field(default=None, alias='Secret', description='Secret to be used') 10 | -------------------------------------------------------------------------------- /ark_sdk_python/models/cli_services/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyberark/ark-sdk-python/3be12c3f2d3a2d0407025028943e584b6edc5996/ark_sdk_python/models/cli_services/__init__.py -------------------------------------------------------------------------------- /ark_sdk_python/models/cli_services/sia/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyberark/ark-sdk-python/3be12c3f2d3a2d0407025028943e584b6edc5996/ark_sdk_python/models/cli_services/sia/__init__.py -------------------------------------------------------------------------------- /ark_sdk_python/models/cli_services/sia/policies_editor/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyberark/ark-sdk-python/3be12c3f2d3a2d0407025028943e584b6edc5996/ark_sdk_python/models/cli_services/sia/policies_editor/__init__.py -------------------------------------------------------------------------------- /ark_sdk_python/models/cli_services/sia/policies_editor/common/ark_sia_base_generate_policy.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkSIABaseGeneratePolicy(ArkModel): 9 | name: Optional[str] = Field(default=None, description='Policy name to generate to the workspace') 10 | disable_edit: bool = Field(description='Whether no interactiveness / editing is required', default=False) 11 | -------------------------------------------------------------------------------- /ark_sdk_python/models/cli_services/sia/policies_editor/common/ark_sia_commit_policies.py: -------------------------------------------------------------------------------- 1 | from typing import List, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkSIACommitPolicies(ArkModel): 9 | names: Optional[List[str]] = Field( 10 | default=None, description='Policy names to commit from the workspace to the remote, if not given, choices will be prompted' 11 | ) 12 | all: bool = Field(description='Whether to commit all locally edited policies', default=False) 13 | -------------------------------------------------------------------------------- /ark_sdk_python/models/cli_services/sia/policies_editor/common/ark_sia_edit_policies.py: -------------------------------------------------------------------------------- 1 | from typing import List, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkSIAEditPolicies(ArkModel): 9 | names: Optional[List[str]] = Field( 10 | default=None, description='Policies to edit from the workspace, if not given, choices will be prompted' 11 | ) 12 | -------------------------------------------------------------------------------- /ark_sdk_python/models/cli_services/sia/policies_editor/common/ark_sia_get_policies_status.py: -------------------------------------------------------------------------------- 1 | from typing import List, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkSIAGetPoliciesStatus(ArkModel): 9 | names: Optional[List[str]] = Field( 10 | default=None, description='Policy names to show status on, if not given, shows status on all policies' 11 | ) 12 | -------------------------------------------------------------------------------- /ark_sdk_python/models/cli_services/sia/policies_editor/common/ark_sia_load_policies.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkSIALoadPolicies(ArkModel): 7 | override: bool = Field(description='Whether to override existing policies', default=False) 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/cli_services/sia/policies_editor/common/ark_sia_loaded_policies.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkSIALoadedPolicies(ArkModel): 7 | loaded_path: str = Field(description='Path to the workspace dir which the policies were loaded to') 8 | overall_policies_count: int = Field(description='Overall policies in the workspace') 9 | loaded_policies_count: int = Field(description='Loaded policies count') 10 | overriden_policies_count: int = Field(description='Overriden policies count') 11 | untouched_policies_count: int = Field(description='Policies count which were not overriden') 12 | -------------------------------------------------------------------------------- /ark_sdk_python/models/cli_services/sia/policies_editor/common/ark_sia_policies_diff.py: -------------------------------------------------------------------------------- 1 | from typing import List, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkSIAPoliciesDiff(ArkModel): 9 | names: Optional[List[str]] = Field(default=None, description='Policy names to show diff on, if not given, shows diff on all policies') 10 | unified: bool = Field(description='Show all diffs together', default=False) 11 | -------------------------------------------------------------------------------- /ark_sdk_python/models/cli_services/sia/policies_editor/common/ark_sia_policies_status.py: -------------------------------------------------------------------------------- 1 | from typing import List 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkSIAPoliciesStatus(ArkModel): 9 | modified_policies: List[str] = Field(description='List of locally modified policies') 10 | removed_policies: List[str] = Field(description='List of locally removed policies') 11 | added_policies: List[str] = Field(description='List of locally added policies') 12 | -------------------------------------------------------------------------------- /ark_sdk_python/models/cli_services/sia/policies_editor/common/ark_sia_remove_policies.py: -------------------------------------------------------------------------------- 1 | from typing import List, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkSIARemovePolicies(ArkModel): 9 | names: Optional[List[str]] = Field( 10 | default=None, description='Policies to remove from the workspace, if not given, choices will be prompted' 11 | ) 12 | -------------------------------------------------------------------------------- /ark_sdk_python/models/cli_services/sia/policies_editor/common/ark_sia_reset_policies.py: -------------------------------------------------------------------------------- 1 | from typing import List, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkSIAResetPolicies(ArkModel): 9 | names: Optional[List[str]] = Field( 10 | default=None, description='Policy names to reset on the workspace, if not given, all policies are resetted' 11 | ) 12 | all: bool = Field(description='Whether to reset all locally edited policies', default=False) 13 | -------------------------------------------------------------------------------- /ark_sdk_python/models/cli_services/sia/policies_editor/common/ark_sia_view_policies.py: -------------------------------------------------------------------------------- 1 | from typing import List, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkSIAViewPolicies(ArkModel): 9 | names: Optional[List[str]] = Field( 10 | default=None, description='Policy names to view from the workspace, if not given, choices will be prompted' 11 | ) 12 | unified: bool = Field(description='Show all requested policies together', default=False) 13 | -------------------------------------------------------------------------------- /ark_sdk_python/models/cli_services/sia/policies_editor/db/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models.cli_services.sia.policies_editor.db.ark_sia_db_generate_policy import ArkSIADBGeneratePolicy 2 | 3 | __all__ = ['ArkSIADBGeneratePolicy'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/models/cli_services/sia/policies_editor/db/ark_sia_db_generate_policy.py: -------------------------------------------------------------------------------- 1 | from typing import Optional, Set 2 | 3 | from pydantic import Field 4 | from typing_extensions import Literal 5 | 6 | from ark_sdk_python.models.cli_services.sia.policies_editor.common.ark_sia_base_generate_policy import ArkSIABaseGeneratePolicy 7 | 8 | 9 | class ArkSIADBGeneratePolicy(ArkSIABaseGeneratePolicy): 10 | providers: Optional[Set[Literal['MySQL', 'MariaDB', 'Postgres', 'MSSQL', 'Oracle', 'DB2', 'Mongo']]] = Field( 11 | default=None, description='Providers to generate the policy for' 12 | ) 13 | -------------------------------------------------------------------------------- /ark_sdk_python/models/cli_services/sia/policies_editor/vm/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models.cli_services.sia.policies_editor.vm.ark_sia_vm_generate_policy import ArkSIAVMGeneratePolicy 2 | 3 | __all__ = ['ArkSIAVMGeneratePolicy'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/models/cli_services/sia/policies_editor/vm/ark_sia_vm_generate_policy.py: -------------------------------------------------------------------------------- 1 | from typing import Optional, Set 2 | 3 | from pydantic import Field 4 | from typing_extensions import Literal 5 | 6 | from ark_sdk_python.models.cli_services.sia.policies_editor.common.ark_sia_base_generate_policy import ArkSIABaseGeneratePolicy 7 | 8 | 9 | class ArkSIAVMGeneratePolicy(ArkSIABaseGeneratePolicy): 10 | providers: Optional[Set[Literal['AWS', 'Azure', 'GCP', 'OnPrem']]] = Field( 11 | default=None, description='Providers to generate the policy for' 12 | ) 13 | protocols: Optional[Set[Literal['ssh', 'rdp']]] = Field(default=None, description='Protocols to generate the policy for') 14 | -------------------------------------------------------------------------------- /ark_sdk_python/models/common/ark_access_method.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | 4 | class ArkAccessMethod(str, Enum): 5 | VAULTED = 'Vaulted' 6 | JIT = 'JIT' 7 | Unknown = 'Unknown' 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/common/ark_application_code.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | 4 | class ArkApplicationCode(str, Enum): 5 | SIA = 'SIA' 6 | DPA = 'DPA' 7 | CSM = 'CSM' 8 | PAM = 'PAM' 9 | DAP = 'DAP' 10 | ITI = 'ITI' 11 | UBA = 'UBA' 12 | ADM = 'ADM' 13 | AUD = 'AUD' 14 | ALR = 'ALR' 15 | CEM = 'CEM' 16 | EPM = 'EPM' 17 | SCA = 'SCA' 18 | SHSM = 'SHSM' 19 | CLO = 'CLO' 20 | CMS = 'CMS' 21 | SMS = 'SMS' 22 | PYC = 'PYC' 23 | CCE = 'CCE' 24 | -------------------------------------------------------------------------------- /ark_sdk_python/models/common/ark_async_request_settings.py: -------------------------------------------------------------------------------- 1 | from typing import Final, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models.ark_model import ArkModel 6 | 7 | DEFAULT_POLL_SLEEP_TIME_SECONDS: Final[int] = 1 8 | DEFAULT_PROGRESS_TICK_COUNT_SECONDS: Final[int] = 3 9 | 10 | 11 | class ArkAsyncRequestSettings(ArkModel): 12 | poll_sleep_time: Optional[int] = Field( 13 | description='Poll sleep time in seconds on waiting for async request to complete', 14 | alias='Poll Sleep Time', 15 | default=DEFAULT_POLL_SLEEP_TIME_SECONDS, 16 | ) 17 | progress_tick_count: Optional[int] = Field( 18 | description='Every how much time to notify for progression in seconds', 19 | alias='Progress Tick Count', 20 | default=DEFAULT_PROGRESS_TICK_COUNT_SECONDS, 21 | ) 22 | poll_allow_refreshable_connection: Optional[bool] = Field( 23 | description='Allow connection refresh for long poll operations', 24 | alias='Poll Allow Refreshable Connection', 25 | default=False, 26 | ) 27 | -------------------------------------------------------------------------------- /ark_sdk_python/models/common/ark_async_status.py: -------------------------------------------------------------------------------- 1 | from enum import IntEnum 2 | 3 | 4 | class ArkAsyncStatus(IntEnum): 5 | StartedPolling = 0 6 | StillPolling = 1 7 | AsyncTaskUpdated = 2 8 | Successful = 4 9 | Failed = 8 10 | Timeout = 16 11 | -------------------------------------------------------------------------------- /ark_sdk_python/models/common/ark_async_task.py: -------------------------------------------------------------------------------- 1 | from abc import abstractmethod 2 | from typing import Optional 3 | 4 | from pydantic import Field 5 | 6 | from ark_sdk_python.models.ark_model import ArkCamelizedModel 7 | from ark_sdk_python.models.common.ark_status import ArkStatus 8 | 9 | 10 | class ArkAsyncTask(ArkCamelizedModel): 11 | task_id: str = Field(description='Async task id (for example tenant id and so on)') 12 | task_error: Optional[str] = Field(default=None, description='Optional task error that occurred and couldnt be handled') 13 | 14 | @abstractmethod 15 | def task_status(self) -> ArkStatus: 16 | pass 17 | -------------------------------------------------------------------------------- /ark_sdk_python/models/common/ark_connection_method.py: -------------------------------------------------------------------------------- 1 | # pylint: disable=invalid-name 2 | from enum import Enum 3 | 4 | 5 | class ArkConnectionMethod(str, Enum): 6 | Standing = 'standing' 7 | Dynamic = 'dynamic' 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/common/ark_connector_type.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | 4 | class ArkConnectorType(str, Enum): 5 | SIA_CONNECTOR = 'SIAConnector' 6 | -------------------------------------------------------------------------------- /ark_sdk_python/models/common/ark_counted_values.py: -------------------------------------------------------------------------------- 1 | from typing import Any, List 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models.ark_model import ArkModel 6 | 7 | 8 | class ArkCountedValues(ArkModel): 9 | count: int = Field(description='Count of the values') 10 | values: List[Any] = Field(description='The values themselves') 11 | -------------------------------------------------------------------------------- /ark_sdk_python/models/common/ark_network_entity_type.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | 4 | class ArkNetworkEntityType(str, Enum): 5 | VPC = 'VPC' 6 | VNET = 'VNET' 7 | AZURE_SUBNET = 'AZURE_SUBNET' 8 | AWS_SUBNET = 'AWS_SUBNET' 9 | ACCOUNT = 'ACCOUNT' 10 | SUBSCRIPTION = 'SUBSCRIPTION' 11 | CIDR = 'CIDR' 12 | FQDN_PATTERN = 'FQDN_PATTERN' 13 | LOGICAL_NAME = 'LOGICAL_NAME' 14 | GCP_VPC = 'GCP_VPC' 15 | GCP_SUBNET = 'GCP_SUBNET' 16 | GCP_PROJECT = 'GCP_PROJECT' 17 | -------------------------------------------------------------------------------- /ark_sdk_python/models/common/ark_os_type.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from enum import Enum 3 | 4 | 5 | class ArkOsType(str, Enum): 6 | WINDOWS = 'windows' 7 | DARWIN = 'darwin' 8 | LINUX = 'linux' 9 | 10 | 11 | def running_os() -> ArkOsType: 12 | if sys.platform in ( 13 | 'aix', 14 | 'linux', 15 | ): 16 | return ArkOsType.LINUX 17 | if sys.platform in ( 18 | 'win32', 19 | 'cygwin', 20 | ): 21 | return ArkOsType.WINDOWS 22 | if sys.platform in ('darwin',): 23 | return ArkOsType.DARWIN 24 | return ArkOsType.LINUX 25 | -------------------------------------------------------------------------------- /ark_sdk_python/models/common/ark_protocol_type.py: -------------------------------------------------------------------------------- 1 | from aenum import MultiValueEnum 2 | 3 | 4 | class ArkProtocolType(str, MultiValueEnum): 5 | SSH = 'ssh', 'SSH' 6 | SCP = 'scp', 'SCP' 7 | SFTP = 'sftp', 'SFTP' 8 | RDP = 'rdp', 'RDP' 9 | CLI = 'cli', 'CLI' 10 | CONSOLE = 'console', 'Console' 11 | HTTPS = 'https', 'HTTPS' 12 | K8S = 'K8S', 'k8s' 13 | DB = 'Database', 'database', 'DATABASE' 14 | -------------------------------------------------------------------------------- /ark_sdk_python/models/common/ark_status_stats.py: -------------------------------------------------------------------------------- 1 | from typing import List 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models.ark_model import ArkModel 6 | 7 | 8 | class ArkStatusStats(ArkModel): 9 | count: int = Field(description='Amount of tenants in this status') 10 | ids: List[str] = Field(description='List of their ids') 11 | -------------------------------------------------------------------------------- /ark_sdk_python/models/common/ark_validations.py: -------------------------------------------------------------------------------- 1 | from typing import Final 2 | 3 | VALID_DATE_REGEX: Final[str] = r'^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$' 4 | VALID_LOGIN_NAME_REGEX = r'^[\w.+\-]+?$' 5 | VALID_LOGIN_MAX_LENGTH = 256 6 | -------------------------------------------------------------------------------- /ark_sdk_python/models/common/ark_workspace_type.py: -------------------------------------------------------------------------------- 1 | from aenum import MultiValueEnum 2 | 3 | 4 | class ArkWorkspaceType(str, MultiValueEnum): 5 | AWS = 'aws', 'AWS', 'Aws' 6 | AZURE = 'azure', 'AZURE', 'Azure' 7 | ONPREM = 'onprem', 'ON-PREMISE', 'OnPrem' 8 | DB = 'db', 'DATABASES', 'Databases' 9 | GCP = 'gcp', 'GCP' 10 | MYSQL = 'mysql', 'MySQL' 11 | MARIADB = 'mariadb', 'MariaDB' 12 | MSSQL = 'mssql', 'MSSQL' 13 | ORACLE = 'oracle', 'Oracle' 14 | POSTGRES = 'postgres', 'Postgres' 15 | MONGO = 'mongo', 'Mongo' 16 | DB2 = 'db2', 'Db2' 17 | ATLAS = 'atlas', 'ATLAS', 'Atlas' 18 | FAULT = 'fault', 'FAULT' 19 | UNKNOWN = 'unknown', 'UNKNOWN', 'Unknown' 20 | -------------------------------------------------------------------------------- /ark_sdk_python/models/common/aws/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models.common.aws.ark_cfn_async_task import ArkCFNAsyncTask 2 | 3 | __all__ = ['ArkCFNAsyncTask'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/models/common/aws/ark_cfn_async_task.py: -------------------------------------------------------------------------------- 1 | from typing import Any 2 | 3 | from overrides import overrides 4 | from pydantic import Field 5 | 6 | from ark_sdk_python.models.common import ArkAsyncTask, ArkStatus 7 | 8 | 9 | class ArkCFNAsyncTask(ArkAsyncTask): 10 | status: ArkStatus = Field(description='CFN Job Async task status') 11 | stack_name: str = Field(description='Name of the stack') 12 | stack_target_status: str = Field(description='Target operation of the stack to reach to') 13 | stack_info: Any = Field(description='Current stack information') 14 | 15 | @overrides 16 | def task_status(self) -> ArkStatus: 17 | return self.status 18 | -------------------------------------------------------------------------------- /ark_sdk_python/models/common/connections/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models.common.connections.ark_connection_command import ArkConnectionCommand 2 | from ark_sdk_python.models.common.connections.ark_connection_credentials import ArkConnectionCredentials 3 | from ark_sdk_python.models.common.connections.ark_connection_details import ArkConnectionDetails, ArkConnectionType 4 | from ark_sdk_python.models.common.connections.ark_connection_result import ArkConnectionResult 5 | 6 | __all__ = ['ArkConnectionCredentials', 'ArkConnectionDetails', 'ArkConnectionType', 'ArkConnectionCommand', 'ArkConnectionResult'] 7 | -------------------------------------------------------------------------------- /ark_sdk_python/models/common/connections/ark_connection_command.py: -------------------------------------------------------------------------------- 1 | from typing import Any, Dict 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkConnectionCommand(ArkModel): 9 | command: str = Field(description='The command to actually run') 10 | expected_rc: int = Field(description='Expected return code', default=0) 11 | raise_on_error: bool = Field(description='Raise exception on non expected rc', default=True) 12 | extra_command_data: Dict[str, Any] = Field(description='Extra data for the command', default_factory=dict) 13 | -------------------------------------------------------------------------------- /ark_sdk_python/models/common/connections/ark_connection_credentials.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel, ArkSecretStr 6 | 7 | 8 | class ArkConnectionCredentials(ArkModel): 9 | user: Optional[str] = Field(description='Username to connect with', default=None) 10 | password: Optional[ArkSecretStr] = Field(description='Password to use for connection', default=None) 11 | private_key_filepath: Optional[str] = Field(description='Private key file path to use for the connection', default=None) 12 | private_key_contents: Optional[str] = Field(description='Private key contents to use for the connection', default=None) 13 | -------------------------------------------------------------------------------- /ark_sdk_python/models/common/connections/ark_connection_result.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkConnectionResult(ArkModel): 9 | stdout: Optional[str] = Field(description='Stdout of the command', default=None) 10 | stderr: Optional[str] = Field(description='Stderr of the command', default=None) 11 | rc: Optional[int] = Field(description='RC of the command', default=None) 12 | -------------------------------------------------------------------------------- /ark_sdk_python/models/common/connections/connection_data/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models.common.connections.connection_data.ark_ssh_connection_data import ArkSSHConnectionData 2 | from ark_sdk_python.models.common.connections.connection_data.ark_winrm_connection_data import ArkWinRMConnectionData 3 | 4 | __all__ = ['ArkSSHConnectionData', 'ArkWinRMConnectionData'] 5 | -------------------------------------------------------------------------------- /ark_sdk_python/models/common/connections/connection_data/ark_ssh_connection_data.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models import ArkModel 2 | 3 | 4 | class ArkSSHConnectionData(ArkModel): 5 | pass 6 | -------------------------------------------------------------------------------- /ark_sdk_python/models/common/connections/connection_data/ark_winrm_connection_data.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkWinRMConnectionData(ArkModel): 9 | certificate: Optional[str] = Field(description="Certificate to use for connection transport", default=None) 10 | -------------------------------------------------------------------------------- /ark_sdk_python/models/common/identity/ark_identity_common_schemas.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | from typing_extensions import Literal 5 | 6 | from ark_sdk_python.models.ark_model import ArkModel 7 | 8 | 9 | class IdentityApiResponse(ArkModel): 10 | success: Literal[True] = Field() 11 | exception: Optional[str] = Field(default=None, alias='Exception') 12 | error_code: Optional[str] = Field(default=None, alias='ErrorCode') 13 | message: Optional[str] = Field(default=None, alias='Message') 14 | error_id: Optional[str] = Field(default=None, alias='ErrorID') 15 | -------------------------------------------------------------------------------- /ark_sdk_python/models/common/isp/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models.common.isp.ark_platform_discovery_schemas import IdentityEndpointResponse 2 | 3 | __all__ = ['IdentityEndpointResponse'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/models/common/isp/ark_platform_discovery_schemas.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models import ArkHttpUrlString, ArkModel 2 | 3 | 4 | class IdentityEndpointResponse(ArkModel): 5 | endpoint: ArkHttpUrlString 6 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models.services.ark_service_config import ArkServiceConfig 2 | 3 | __all__ = ['ArkServiceConfig'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/ark_service_config.py: -------------------------------------------------------------------------------- 1 | from typing import List 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkServiceConfig(ArkModel): 9 | service_name: str = Field(description='Name of the service') 10 | required_authenticator_names: List[str] = Field(description='Required authenticators for the service to properly work') 11 | optional_authenticator_names: List[str] = Field( 12 | description='Optional authenticators for the service for extra capabilities', default_factory=list 13 | ) 14 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/cmgr/ark_cmgr_add_network.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkCamelizedModel 4 | 5 | 6 | class ArkCmgrAddNetwork(ArkCamelizedModel): 7 | name: str = Field(description='Name of the network to add') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/cmgr/ark_cmgr_add_pool.py: -------------------------------------------------------------------------------- 1 | from typing import List, Optional 2 | 3 | from pydantic import Field 4 | from typing_extensions import Annotated 5 | 6 | from ark_sdk_python.models import ArkCamelizedModel 7 | 8 | 9 | class ArkCmgrAddPool(ArkCamelizedModel): 10 | name: str = Field(description='Name of the pool to add') 11 | description: Optional[str] = Field(description='Pool description', default=None) 12 | assigned_network_ids: Annotated[List[str], Field(min_length=1)] = Field(description='Assigned networks to the pool') 13 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/cmgr/ark_cmgr_add_pool_identifiers.py: -------------------------------------------------------------------------------- 1 | from typing import List 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkCamelizedModel 6 | from ark_sdk_python.models.services.cmgr.ark_cmgr_pool_identifiers import ArkCmgrPoolIdentifierType 7 | 8 | 9 | class ArkCmgrAddPoolIdentifier(ArkCamelizedModel): 10 | type: ArkCmgrPoolIdentifierType = Field(description='Type of identifier to add') 11 | value: str = Field(description='Value of the identifier') 12 | 13 | 14 | class ArkCmgrAddPoolSingleIdentifier(ArkCmgrAddPoolIdentifier): 15 | pool_id: str = Field(description='ID of the pool to add the identifier to') 16 | 17 | 18 | class ArkCmgrAddPoolBulkIdentifier(ArkCamelizedModel): 19 | pool_id: str = Field(description='ID of the pool to add the identifiers to') 20 | identifiers: List[ArkCmgrAddPoolIdentifier] = Field(description='Identifiers to add') 21 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/cmgr/ark_cmgr_bulk_response.py: -------------------------------------------------------------------------------- 1 | from http import HTTPStatus 2 | from typing import Any, Dict, Optional 3 | 4 | from pydantic import Field 5 | 6 | from ark_sdk_python.models import ArkCamelizedModel 7 | 8 | 9 | class ArkCmgrBulkResponse(ArkCamelizedModel): 10 | body: Optional[Dict[str, Any]] = Field(description='Response body of the request') 11 | status_code: HTTPStatus = Field(description='Status code of the response') 12 | 13 | 14 | class ArkCmgrBulkResponses(ArkCamelizedModel): 15 | responses: Dict[str, ArkCmgrBulkResponse] = Field(description='Responses of the bulk request') 16 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/cmgr/ark_cmgr_delete_network.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkCamelizedModel 4 | 5 | 6 | class ArkCmgrDeleteNetwork(ArkCamelizedModel): 7 | network_id: str = Field(description='ID of the network to delete') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/cmgr/ark_cmgr_delete_pool.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkCamelizedModel 4 | 5 | 6 | class ArkCmgrDeletePool(ArkCamelizedModel): 7 | pool_id: str = Field(description='ID of the pool to delete') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/cmgr/ark_cmgr_delete_pool_identifiers.py: -------------------------------------------------------------------------------- 1 | from typing import List 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkCamelizedModel 6 | 7 | 8 | class ArkCmgrDeletePoolIdentifier(ArkCamelizedModel): 9 | identifier_id: str = Field(description='ID of the identifier to delete') 10 | 11 | 12 | class ArkCmgrDeletePoolSingleIdentifier(ArkCmgrDeletePoolIdentifier): 13 | pool_id: str = Field(description='ID of the pool to delete the identifier from') 14 | 15 | 16 | class ArkCmgrDeletePoolBulkIdentifier(ArkCamelizedModel): 17 | pool_id: str = Field(description='ID of the pool to delete the identifiers from') 18 | identifiers: List[ArkCmgrDeletePoolIdentifier] = Field(description='Identifiers to delete') 19 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/cmgr/ark_cmgr_get_network.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkCamelizedModel 4 | 5 | 6 | class ArkCmgrGetNetwork(ArkCamelizedModel): 7 | network_id: str = Field(description='ID of the network to get') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/cmgr/ark_cmgr_get_pool.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkCamelizedModel 4 | 5 | 6 | class ArkCmgrGetPool(ArkCamelizedModel): 7 | pool_id: str = Field(description='ID of the pool to get') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/cmgr/ark_cmgr_get_pool_component.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkCamelizedModel 4 | 5 | 6 | class ArkCmgrGetPoolComponent(ArkCamelizedModel): 7 | pool_id: str = Field(description='ID of the pool to get') 8 | component_id: str = Field(description='ID of the component to get in the pool') 9 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/cmgr/ark_cmgr_list_pool_identifiers.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkCmgrListPoolIdentifiers(ArkModel): 7 | pool_id: str = Field(description='Pool id to get the identifiers for') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/cmgr/ark_cmgr_network.py: -------------------------------------------------------------------------------- 1 | from typing import List, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkCamelizedModel 6 | 7 | 8 | class ArkCmgrNetworkPool(ArkCamelizedModel): 9 | id: str = Field(description='ID of the pool') 10 | name: str = Field(description='Name of the pool') 11 | 12 | 13 | class ArkCmgrNetwork(ArkCamelizedModel): 14 | id: str = Field(description='ID of the network') 15 | name: str = Field(description='Name of the network') 16 | assigned_pools: Optional[List[ArkCmgrNetworkPool]] = Field(description='Assigned pools on this network', default=None) 17 | created_at: str = Field(description='The creation time of the network') 18 | updated_at: str = Field(description='The last update time of the network') 19 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/cmgr/ark_cmgr_networks_filter.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models.services.cmgr.ark_cmgr_pools_common_filter import ArkCmgrPoolsCommonFilter 2 | 3 | 4 | class ArkCmgrNetworksFilter(ArkCmgrPoolsCommonFilter): 5 | pass 6 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/cmgr/ark_cmgr_networks_stats.py: -------------------------------------------------------------------------------- 1 | from typing import Dict 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkCmgrNetworksStats(ArkModel): 9 | networks_count: int = Field(description='Overall count of network') 10 | pools_count_per_network: Dict[str, int] = Field(description='Count of pools for each network') 11 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/cmgr/ark_cmgr_pool.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | from typing import Dict, List, Optional 3 | 4 | from pydantic import Field 5 | 6 | from ark_sdk_python.models import ArkCamelizedModel 7 | from ark_sdk_python.models.services.cmgr.ark_cmgr_pool_component import ArkCmgrPoolComponentType 8 | 9 | 10 | class ArkCmgrPoolType(str, Enum): 11 | PLATFORM = 'PLATFORM' 12 | ACCESS = 'ACCESS' 13 | 14 | 15 | class ArkCmgrPool(ArkCamelizedModel): 16 | id: str = Field(description='ID of the pool') 17 | name: str = Field(description='Name of the pool') 18 | description: Optional[str] = Field(description='Description of the pool', default=None) 19 | assigned_network_ids: List[str] = Field(description='Assigned networks of the pool', default_factory=list) 20 | identifiers_count: Optional[int] = Field(description='Count of identifiers on the pool', default=None) 21 | components_count: Optional[Dict[ArkCmgrPoolComponentType, int]] = Field(description='Count of components on the pool', default=None) 22 | created_at: str = Field(description='The creation time of the pool') 23 | updated_at: str = Field(description='The last update time of the pool') 24 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/cmgr/ark_cmgr_pool_component.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | from typing import Optional 3 | 4 | from pydantic import Field 5 | 6 | from ark_sdk_python.models import ArkCamelizedModel 7 | 8 | 9 | class ArkCmgrPoolComponentType(str, Enum): 10 | PLATFORM_CONNECTOR = 'PLATFORM_CONNECTOR' 11 | ACCESS_CONNECTOR = 'ACCESS_CONNECTOR' 12 | 13 | 14 | class ArkCmgrPoolComponent(ArkCamelizedModel): 15 | id: str = Field(description='ID of the component') 16 | type: ArkCmgrPoolComponentType = Field(description='Type of the component') 17 | external_id: str = Field(description='External identifier of the component') 18 | pool_id: Optional[str] = Field(description='Pool id of the pool holding the component', default=None) 19 | pool_name: Optional[str] = Field(description='Name of the pool holding the component', default=None) 20 | created_at: Optional[str] = Field(description='The creation time of the component', default=None) 21 | updated_at: Optional[str] = Field(description='The last update time of the component', default=None) 22 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/cmgr/ark_cmgr_pool_components_filter.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models.services.cmgr.ark_cmgr_pools_common_filter import ArkCmgrPoolsCommonFilter 2 | 3 | 4 | class ArkCmgrPoolComponentsFilter(ArkCmgrPoolsCommonFilter): 5 | pass 6 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/cmgr/ark_cmgr_pool_identifiers_filter.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models.services.cmgr.ark_cmgr_list_pool_identifiers import ArkCmgrListPoolIdentifiers 2 | from ark_sdk_python.models.services.cmgr.ark_cmgr_pools_common_filter import ArkCmgrPoolsCommonFilter 3 | 4 | 5 | class ArkCmgrPoolIdentifiersFilter(ArkCmgrListPoolIdentifiers, ArkCmgrPoolsCommonFilter): 6 | pass 7 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/cmgr/ark_cmgr_pools_common_filter.py: -------------------------------------------------------------------------------- 1 | from typing import Literal, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkCmgrPoolsCommonFilter(ArkModel): 9 | projection: Literal['BASIC', 'EXTENDED'] = Field(description='Type of projection for the response', default='BASIC') 10 | sort: Optional[str] = Field(description='Sort by given parameter', default=None) 11 | filter: Optional[str] = Field(description='Filter parameters', default=None) 12 | order: Optional[Literal['ASC', 'DESC']] = Field(description='Response sort order', default=None) 13 | page_size: Optional[int] = Field(description='Size of page', default=None) 14 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/cmgr/ark_cmgr_pools_filter.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models.services.cmgr.ark_cmgr_pools_common_filter import ArkCmgrPoolsCommonFilter 2 | 3 | 4 | class ArkCmgrPoolsFilter(ArkCmgrPoolsCommonFilter): 5 | pass 6 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/cmgr/ark_cmgr_pools_stats.py: -------------------------------------------------------------------------------- 1 | from typing import Dict 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | from ark_sdk_python.models.services.cmgr.ark_cmgr_pool_component import ArkCmgrPoolComponentType 7 | 8 | 9 | class ArkCmgrPoolsStats(ArkModel): 10 | pools_count: int = Field(description='Overall count of pools') 11 | networks_count_per_pool: Dict[str, int] = Field(description='Count of networks for each pool') 12 | identifiers_count_per_pool: Dict[str, int] = Field(description='Count of identifiers for each pool') 13 | components_count_per_pool: Dict[str, Dict[ArkCmgrPoolComponentType, int]] = Field(description='Count of components for each pool') 14 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/cmgr/ark_cmgr_update_network.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkCamelizedModel 6 | 7 | 8 | class ArkCmgrUpdateNetwork(ArkCamelizedModel): 9 | network_id: str = Field(description='ID of the network to update') 10 | name: Optional[str] = Field(description='New name of the network to update', default=None) 11 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/cmgr/ark_cmgr_update_pool.py: -------------------------------------------------------------------------------- 1 | from typing import List, Optional 2 | 3 | from pydantic import Field 4 | from typing_extensions import Annotated 5 | 6 | from ark_sdk_python.models import ArkCamelizedModel 7 | 8 | 9 | class ArkCmgrUpdatePool(ArkCamelizedModel): 10 | pool_id: str = Field(description='ID of the pool to update') 11 | name: Optional[str] = Field(description='Name of the pool to update', default=None) 12 | description: Optional[str] = Field(description='Pool description to update', default=None) 13 | assigned_network_ids: Optional[Annotated[List[str], Field(min_length=1)]] = Field( 14 | description='Assigned networks to the pool to update', default=None 15 | ) 16 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyberark/ark-sdk-python/3be12c3f2d3a2d0407025028943e584b6edc5996/ark_sdk_python/models/services/identity/__init__.py -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/connectors/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models.services.identity.connectors.ark_identity_connector_info import ArkIdentityConnectorInfo 2 | from ark_sdk_python.models.services.identity.connectors.ark_identity_connectors_filter import ArkIdentityConnectorsFilter 3 | from ark_sdk_python.models.services.identity.connectors.ark_identity_get_connector import ArkIdentityGetConnector 4 | 5 | __all__ = [ 6 | 'ArkIdentityConnectorInfo', 7 | 'ArkIdentityConnectorsFilter', 8 | 'ArkIdentityGetConnector', 9 | ] 10 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/connectors/ark_identity_connectors_filter.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkIdentityConnectorsFilter(ArkModel): 9 | online: Optional[bool] = Field(default=None, description='Filter only enabled or disabled connectors') 10 | forest: Optional[str] = Field(default=None, description='Filter connectors by forest') 11 | dns: Optional[str] = Field(default=None, description='Filter by dns wildcard') 12 | machine_name: Optional[str] = Field(default=None, description='Filter by machine name wildcard') 13 | customer_name: Optional[str] = Field(default=None, description='Filter by customer name wildcard') 14 | version: Optional[str] = Field(default=None, description='Filter by version wildcard') 15 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/connectors/ark_identity_get_connector.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkIdentityGetConnector(ArkModel): 7 | connector_id: str = Field(description='ID of the connector to get') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/directories/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models.services.identity.directories.ark_identity_directory import ArkIdentityDirectory 2 | from ark_sdk_python.models.services.identity.directories.ark_identity_entity import ( 3 | ArkIdentityEntity, 4 | ArkIdentityEntityType, 5 | ArkIdentityGroupEntity, 6 | ArkIdentityRoleEntity, 7 | ArkIdentityUserEntity, 8 | ) 9 | from ark_sdk_python.models.services.identity.directories.ark_identity_list_directories import ArkIdentityListDirectories 10 | from ark_sdk_python.models.services.identity.directories.ark_identity_list_directories_entities import ArkIdentityListDirectoriesEntities 11 | 12 | __all__ = [ 13 | 'ArkIdentityListDirectoriesEntities', 14 | 'ArkIdentityEntity', 15 | 'ArkIdentityEntityType', 16 | 'ArkIdentityGroupEntity', 17 | 'ArkIdentityRoleEntity', 18 | 'ArkIdentityUserEntity', 19 | 'ArkIdentityListDirectories', 20 | 'ArkIdentityDirectory', 21 | ] 22 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/directories/ark_identity_directory.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | from ark_sdk_python.models.common.identity import DirectoryService 5 | 6 | 7 | class ArkIdentityDirectory(ArkModel): 8 | directory: DirectoryService = Field(description='Name of the directory') 9 | directory_service_uuid: str = Field(description='ID of the directory') 10 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/directories/ark_identity_list_directories.py: -------------------------------------------------------------------------------- 1 | from typing import List, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | from ark_sdk_python.models.common.identity import DirectoryService 7 | 8 | 9 | class ArkIdentityListDirectories(ArkModel): 10 | directories: Optional[List[DirectoryService]] = Field(default=None, description='Directories types to list') 11 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/directories/ark_identity_list_directories_entities.py: -------------------------------------------------------------------------------- 1 | from typing import Final, List, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | from ark_sdk_python.models.common.identity import DirectoryService 7 | from ark_sdk_python.models.services.identity.directories.ark_identity_entity import ArkIdentityEntityType 8 | 9 | DEFAULT_ENTITIES_PAGE_SIZE: Final[int] = 10000 10 | DEFAULT_ENTITIES_LIMIT: Final[int] = 10000 11 | DEFAULT_MAX_PAGE_SIZE: Final[int] = -1 12 | 13 | 14 | class ArkIdentityListDirectoriesEntities(ArkModel): 15 | directories: Optional[List[DirectoryService]] = Field(default=None, description='Directories to search on') 16 | entity_types: Optional[List[ArkIdentityEntityType]] = Field(default=None, description='Member types to search') 17 | search: Optional[str] = Field(default=None, description='Search string to use') 18 | page_size: int = Field(description='Page size to emit', default=DEFAULT_ENTITIES_PAGE_SIZE) 19 | limit: int = Field(description='Limit amount to list', default=DEFAULT_ENTITIES_LIMIT) 20 | max_page_count: int = Field(description='Max page count to reach to', default=DEFAULT_MAX_PAGE_SIZE) 21 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/policies/ark_identity_add_authentication_profile.py: -------------------------------------------------------------------------------- 1 | from typing import Any, Dict, List, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkIdentityAddAuthenticationProfile(ArkModel): 9 | auth_profile_name: str = Field(description='Name of the profile') 10 | first_challenges: List[str] = Field(description='List of first challenges for the profile, i,e "UP,SMS"') 11 | second_challenges: Optional[List[str]] = Field(default=None, description='List of second challenges for the profile, i,e "UP,SMS"') 12 | additional_data: Optional[Dict[str, Any]] = Field(default=None, description='Additional auth profile data') 13 | duration_in_minutes: int = Field(description='Duration of auth profile', default=30) 14 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/policies/ark_identity_add_policy.py: -------------------------------------------------------------------------------- 1 | from typing import Any, Dict, List, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkIdentityAddPolicy(ArkModel): 9 | policy_name: str = Field(description='Name of the policy to create') 10 | description: str = Field(description='Description of the policy', default="") 11 | role_names: List[str] = Field(description='Roles to associate to the policy') 12 | auth_profile_name: str = Field(description='Authentication profile to assoicate to the policy') 13 | settings: Optional[Dict[str, Any]] = Field(default=None, description='Settings of the policy') 14 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/policies/ark_identity_authentication_profile.py: -------------------------------------------------------------------------------- 1 | from typing import Any, Dict, List, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkTitleizedModel 6 | 7 | 8 | class ArkIdentityAuthenticationProfile(ArkTitleizedModel): 9 | challenges: Optional[List[str]] = Field(default=None, description='List of challenges for the profile') 10 | id: Optional[str] = Field(default=None, description='Identifier of the profile', alias='ID') 11 | name: str = Field(description='Name of the profile') 12 | single_challenge_mechanisms: Optional[str] = Field(default=None, description='Single challenge mechanisms used') 13 | uuid: str = Field(description='UUID of the profile') 14 | additional_data: Dict[str, Any] = Field(description='Additional profile data') 15 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/policies/ark_identity_disable_policy.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkIdentityDisablePolicy(ArkModel): 7 | policy_name: str = Field(description='Policy to disable') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/policies/ark_identity_enable_policy.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkIdentityEnablePolicy(ArkModel): 7 | policy_name: str = Field(description='Policy to enable') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/policies/ark_identity_get_authentication_profile.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkIdentityGetAuthenticationProfile(ArkModel): 9 | auth_profile_id: Optional[str] = Field(default=None, description='Gets the profile by id') 10 | auth_profile_name: Optional[str] = Field(default=None, description='Gets the profile by name') 11 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/policies/ark_identity_get_policy.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkIdentityGetPolicy(ArkModel): 7 | policy_name: str = Field(description='Policy name to get') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/policies/ark_identity_policy_info.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkTitleizedModel 4 | 5 | 6 | class ArkIdentityPolicyInfo(ArkTitleizedModel): 7 | id: str = Field(description='ID of the policy', alias='ID') 8 | description: str = Field(description='Description of the policy') 9 | enable_compliant: bool = Field(description='Enable policy compliant') 10 | link_type: str = Field(description='Type of policy link') 11 | policy_set: str = Field(description="Policy set name") 12 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/policies/ark_identity_policy_operation.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | from ark_sdk_python.models.services.identity.policies.ark_identity_policy_operation_type import ArkIdentityPolicyOperationType 5 | 6 | 7 | class ArkIdentityPolicyOperation(ArkModel): 8 | policy_name: str = Field(description='Policy name') 9 | operation_type: ArkIdentityPolicyOperationType = Field(description='Operation to perform on the policy') 10 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/policies/ark_identity_policy_operation_type.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | 4 | class ArkIdentityPolicyOperationType(str, Enum): 5 | ENABLE = 'Global' 6 | DISABLE = 'Inactive' 7 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/policies/ark_identity_remove_authentication_profile.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkIdentityRemoveAuthenticationProfile(ArkModel): 9 | auth_profile_id: Optional[str] = Field(default=None, description='Remove the profile by id') 10 | auth_profile_name: Optional[str] = Field(default=None, description='Remove the profile by name') 11 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/policies/ark_identity_remove_policy.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkIdentityRemovePolicy(ArkModel): 7 | policy_name: str = Field(description='Policy name to remove') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/roles/ark_identity_add_admin_right_to_role.py: -------------------------------------------------------------------------------- 1 | from typing import List, Optional 2 | 3 | from pydantic import Field 4 | from typing_extensions import Annotated 5 | 6 | from ark_sdk_python.models import ArkModel 7 | from ark_sdk_python.models.services.identity.roles.ark_identity_admin_right import ArkIdentityAdminRights 8 | 9 | 10 | class ArkIdentityAddAdminRightsToRole(ArkModel): 11 | role_id: Optional[str] = Field(default=None, description='Role id to add admin rights to') 12 | role_name: Optional[str] = Field(default=None, description='Role name to add admin rights to') 13 | admin_rights: Annotated[List[ArkIdentityAdminRights], Field(min_length=1)] = Field(description='Admin rights to add to the role') 14 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/roles/ark_identity_add_group_to_role.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkIdentityAddGroupToRole(ArkModel): 7 | group_name: str = Field(description='Group name to add to the role') 8 | role_name: str = Field(description='Name of the role to add the group to') 9 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/roles/ark_identity_add_role_to_role.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkIdentityAddRoleToRole(ArkModel): 7 | role_name_to_add: str = Field(description='Role name to add to the role') 8 | role_name: str = Field(description='Name of the role to add the role to') 9 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/roles/ark_identity_add_user_to_role.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkIdentityAddUserToRole(ArkModel): 7 | username: str = Field(description='Username to add to the role') 8 | role_name: str = Field(description='Name of the role to add the user to') 9 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/roles/ark_identity_create_role.py: -------------------------------------------------------------------------------- 1 | from typing import List, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | from ark_sdk_python.models.services.identity.roles.ark_identity_admin_right import ArkIdentityAdminRights 7 | 8 | 9 | class ArkIdentityCreateRole(ArkModel): 10 | role_name: str = Field(description='Role name to create') 11 | description: Optional[str] = Field(default=None, description='Description of the role') 12 | admin_rights: List[ArkIdentityAdminRights] = Field(description='Admin rights to add to the role', default_factory=list) 13 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/roles/ark_identity_delete_role.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkIdentityDeleteRole(ArkModel): 9 | role_name: Optional[str] = Field(default=None, description='Role name to delete') 10 | role_id: Optional[str] = Field(default=None, description='Role id to delete') 11 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/roles/ark_identity_list_role_members.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkIdentityListRoleMembers(ArkModel): 9 | role_name: Optional[str] = Field(default=None, description='Name of the role to get members of') 10 | role_id: Optional[str] = Field(default=None, description='ID of the role to get members of') 11 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/roles/ark_identity_remove_group_from_role.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkIdentityRemoveGroupFromRole(ArkModel): 7 | group_name: str = Field(description='Group name to remove from the role') 8 | role_name: str = Field(description='Name of the role to remove the group from') 9 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/roles/ark_identity_remove_role_from_role.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkIdentityRemoveRoleFromRole(ArkModel): 7 | role_name_to_remove: str = Field(description='Role name to remove from the role') 8 | role_name: str = Field(description='Name of the role to remove the role from') 9 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/roles/ark_identity_remove_user_from_role.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkIdentityRemoveUserFromRole(ArkModel): 7 | username: str = Field(description='Username to remove from the role') 8 | role_name: str = Field(description='Name of the role to remove the user from') 9 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/roles/ark_identity_role.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkIdentityRole(ArkModel): 7 | role_id: str = Field(description='Identifier of the role') 8 | role_name: str = Field(description='Name of the role') 9 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/roles/ark_identity_role_id_by_name.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkIdentityRoleIdByName(ArkModel): 7 | role_name: str = Field(description='Role name to find the id for') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/roles/ark_identity_role_member.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | from ark_sdk_python.models.services.identity.directories.ark_identity_entity import ArkIdentityEntityType 5 | 6 | 7 | class ArkIdentityRoleMember(ArkModel): 8 | member_id: str = Field(description='ID of the mmeber') 9 | member_name: str = Field(description='Name of the member') 10 | member_type: ArkIdentityEntityType = Field(description='Type of the member') 11 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/roles/ark_identity_update_role.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkIdentityUpdateRole(ArkModel): 9 | role_name: Optional[str] = Field(default=None, description='Role name to update') 10 | role_id: Optional[str] = Field(default=None, description='Role id to update') 11 | new_role_name: Optional[str] = Field(default=None, description='New role name to update to') 12 | description: Optional[str] = Field(default=None, description='New description of the role') 13 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/users/ark_identity_delete_user.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field, model_validator 4 | from typing_extensions import Self 5 | 6 | from ark_sdk_python.models import ArkModel 7 | 8 | 9 | class ArkIdentityDeleteUser(ArkModel): 10 | user_id: Optional[str] = Field(default=None, description='User ID to delete') 11 | username: Optional[str] = Field(default=None, description='Username to delete') 12 | 13 | @model_validator(mode='after') 14 | def validate_either(self) -> Self: 15 | if not self.user_id and not self.username: 16 | raise ValueError('Either user_id or username needs to be provided') 17 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/users/ark_identity_delete_users.py: -------------------------------------------------------------------------------- 1 | from typing import List 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkIdentityDeleteUsers(ArkModel): 9 | user_ids: List[str] = Field(min_length=1, description='User IDs to delete') 10 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/users/ark_identity_reset_user_password.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkIdentityResetUserPassword(ArkModel): 7 | username: str = Field(description='Username to reset the password for') 8 | new_password: str = Field(description='New password to reset to') 9 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/users/ark_identity_update_user.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkIdentityUpdateUser(ArkModel): 9 | user_id: Optional[str] = Field(default=None, description='Users id that we change the details for') 10 | username: Optional[str] = Field(default=None, description='Username that we change the details for') 11 | new_username: Optional[str] = Field(default=None, description='Name of the user to change') 12 | display_name: Optional[str] = Field(default=None, description='Display name of the user to change') 13 | email: Optional[str] = Field(default=None, description='Email of the user to change') 14 | mobile_number: Optional[str] = Field(default=None, description='Mobile number of the user to change') 15 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/users/ark_identity_user.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | from typing import List, Optional 3 | 4 | from pydantic import Field 5 | 6 | from ark_sdk_python.models import ArkPresentableModel 7 | 8 | 9 | class ArkIdentityUser(ArkPresentableModel): 10 | user_id: str = Field(description='User identifier') 11 | username: str = Field(description='Name of the user') 12 | display_name: Optional[str] = Field(description='Display name of the user') 13 | email: Optional[str] = Field(default=None, description='Email of the user') 14 | mobile_number: Optional[str] = Field(default=None, description='Mobile number of the user') 15 | roles: Optional[List[str]] = Field(default=None, description='Roles of the user') 16 | last_login: Optional[datetime] = Field(default=None, description='Last login of the user') 17 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/users/ark_identity_user_by_id.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkIdentityUserById(ArkModel): 7 | user_id: str = Field(description='Id to find the user for') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/users/ark_identity_user_by_name.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkIdentityUserByName(ArkModel): 7 | username: str = Field(description='User name to find the id for') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/users/ark_identity_user_id_by_name.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkIdentityUserIdByName(ArkModel): 7 | username: str = Field(description='User name to find the id for') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/identity/users/ark_identity_user_info.py: -------------------------------------------------------------------------------- 1 | from typing import Any, List 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkTitleizedModel 6 | 7 | 8 | class ArkIdentityUserInfo(ArkTitleizedModel): 9 | first_name: str = Field(description='First name of the user') 10 | last_name: str = Field(description='Last name of the user') 11 | home_number: str = Field(description='Home number of the user') 12 | manager: str = Field(description='Manager of the user') 13 | username: str = Field(description='Username info') 14 | groups: List[Any] = Field(description='AD groups of the user', default_factory=list) 15 | rights: List[str] = Field(description='Administrative rights of the user', default_factory=list) 16 | roles: List[Any] = Field(description='Roles of the user', default_factory=list) 17 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyberark/ark-sdk-python/3be12c3f2d3a2d0407025028943e584b6edc5996/ark_sdk_python/models/services/pcloud/__init__.py -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_account_credentials.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel, ArkSecretStr 4 | 5 | 6 | class ArkPCloudAccountCredentials(ArkModel): 7 | account_id: str = Field(description='The id of the account') 8 | password: ArkSecretStr = Field(description='The credentials') 9 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_account_secret_version.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkCamelizedModel 6 | 7 | 8 | class ArkPCloudAccountSecretVersion(ArkCamelizedModel): 9 | is_temporary: bool = Field(description='Whether the secret is permenant or temporary') 10 | modification_date: datetime = Field(description='Modification time of the secret') 11 | modified_by: str = Field(description='Username who modified the secret') 12 | version_id: int = Field(description='Version id of the secret') 13 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_accounts_filter.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | from typing_extensions import Literal 5 | 6 | from ark_sdk_python.models import ArkModel 7 | 8 | 9 | class ArkPCloudAccountsFilter(ArkModel): 10 | search: Optional[str] = Field(default=None, description='Search by string') 11 | search_type: Optional[Literal['contains', 'startswith']] = Field(default=None, description='Search type to filter with') 12 | sort: Optional[str] = Field(default=None, description='Sort results by given key') 13 | safe_name: Optional[str] = Field(default=None, description='Safe name to filter by') 14 | offset: Optional[int] = Field(default=None, description='Offset to the accounts list') 15 | limit: Optional[int] = Field(default=None, description='Limit of results') 16 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_accounts_stats.py: -------------------------------------------------------------------------------- 1 | from typing import Dict 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkPCloudAccountsStats(ArkModel): 9 | accounts_count: int = Field(description='Overall accounts count') 10 | accounts_count_by_platform_id: Dict[str, int] = Field(description='Accounts count by platform id') 11 | accounts_count_by_safe_name: Dict[str, int] = Field(description='Accounts count by safe name') 12 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_add_account.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models.ark_model import ArkSecretStr 4 | from ark_sdk_python.models.services.pcloud.accounts.ark_pcloud_account import ArkPCloudBaseAccount 5 | 6 | 7 | class ArkPCloudAddAccount(ArkPCloudBaseAccount): 8 | secret: ArkSecretStr = Field(description='The secret of the account') 9 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_change_account_credentials.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudChangeAccountCredentials(ArkModel): 7 | account_id: str = Field(description='The id of the account to change the password for') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_delete_account.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudDeleteAccount(ArkModel): 7 | account_id: str = Field(description='The id of the account to delete') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_generate_account_credentials.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudGenerateAccountCredentials(ArkModel): 7 | account_id: str = Field(description='The id of the account to generate the password for') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_get_account.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudGetAccount(ArkModel): 7 | account_id: str = Field(description='The id of the account to retrieve') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_get_account_credentials.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | from typing_extensions import Literal 5 | 6 | from ark_sdk_python.models import ArkModel 7 | 8 | 9 | class ArkPCloudGetAccountCredentials(ArkModel): 10 | account_id: str = Field(description='The id of the account to retrieve the credentials for') 11 | reason: Optional[str] = Field(default=None, description='Reason for retrieving the credentials') 12 | ticketing_system_name: Optional[str] = Field(default=None, description='Ticketing system name to use for retrieval of the credentials') 13 | ticket_id: Optional[str] = Field(default=None, description='Ticket id allowing retrieval of the credentials') 14 | version: Optional[str] = Field(default=None, description='Version of the credentials to retrieve') 15 | action_type: Optional[Literal['show', 'copy', 'connect']] = Field(description='Action type of the retrieval', default='show') 16 | machine: Optional[str] = Field(default=None, description='The address of the remote machine to connect to with the credentials') 17 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_link_account.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkCamelizedModel 4 | 5 | 6 | class ArkPCloudLinkAccount(ArkCamelizedModel): 7 | account_id: str = Field(description='The id of the account to link') 8 | safe: str = Field(description='The safe in which the linked account is stored') 9 | extra_password_index: int = Field(description='The linked account extra password index') 10 | folder: str = Field(description='Folder of the linked account') 11 | name: str = Field(description='The linked account name') 12 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_list_account_secret_versions.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudListAccountSecretVersions(ArkModel): 7 | account_id: str = Field(description='The id of the account to retrieve the secret versions for') 8 | show_temporary: bool = Field(description='Show temporary secrets as well', default=False) 9 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_reconcile_account_credentials.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudReconcileAccountCredentials(ArkModel): 7 | account_id: str = Field(description='The id of the account to mark for reconcilation') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_set_account_next_credentials.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkCamelizedModel 4 | 5 | 6 | class ArkPCloudSetAccountNextCredentials(ArkCamelizedModel): 7 | account_id: str = Field(description='The id of the account to change the password for') 8 | new_credentials: str = Field(description='Next credentials to set') 9 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_unlink_account.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkCamelizedModel 4 | 5 | 6 | class ArkPCloudUnlinkAccount(ArkCamelizedModel): 7 | account_id: str = Field(description='The id of the account to unlink') 8 | extra_password_index: str = Field(description='The linked account extra password index') 9 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_update_account_credentials_in_vault.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkCamelizedModel 4 | 5 | 6 | class ArkPCloudUpdateAccountCredentialsInVault(ArkCamelizedModel): 7 | account_id: str = Field(description='The id of the account to change the password for') 8 | new_credentials: str = Field(description='Wew credentials to set in vault') 9 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_verify_account_credentias.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudVerifyAccountCredentials(ArkModel): 7 | account_id: str = Field(description='The id of the account to mark for validation') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/applications/ark_pcloud_application.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkTitleizedModel 4 | 5 | 6 | class ArkPCloudApplication(ArkTitleizedModel): 7 | app_id: str = Field(description='ID of the application', alias='AppID') 8 | description: str = Field(description='Description of the application') 9 | location: str = Field(description='Location of the application in the vault') 10 | access_permitted_from: int = Field(description='Start time the access is permitted in hours') 11 | access_permitted_to: int = Field(description='End time the access is permitted in hours') 12 | expiration_date: str = Field(description='Expiratin date of the application in format mm-dd-yyyy') 13 | disabled: bool = Field(description='Whether application is disabled or not') 14 | business_owner_first_name: str = Field(description='First name of the owner', alias='BusinessOwnerFName') 15 | business_owner_last_name: str = Field(description='Last name of the owner', alias='BusinessOwnerLName') 16 | business_owner_email: str = Field(description='Email of the owner', alias='BusinessOwnerEmail') 17 | business_owner_phone: str = Field(description='Phone of the owner', alias='BusinessOwnerPhone') 18 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/applications/ark_pcloud_application_auth_methods_filter.py: -------------------------------------------------------------------------------- 1 | from typing import List, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | from ark_sdk_python.models.services.pcloud.applications.ark_pcloud_application_auth_method import ArkPCloudApplicationAuthMethodType 7 | 8 | 9 | class ArkPCloudApplicationAuthMethodsFilter(ArkModel): 10 | app_id: str = Field(description='App id to filter on') 11 | auth_types: Optional[List[ArkPCloudApplicationAuthMethodType]] = Field(default=None, description='Auth types to filter with') 12 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/applications/ark_pcloud_applications_filter.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkPCloudApplicationsFilter(ArkModel): 9 | location: Optional[str] = Field(default=None, description='Filter by location of the app') 10 | only_enabled: Optional[bool] = Field(default=None, description='Filter only enabled apps') 11 | business_owner_name: Optional[str] = Field(default=None, description='Filter by name, first or last') 12 | business_owner_email: Optional[str] = Field(default=None, description='Filter by email') 13 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/applications/ark_pcloud_applications_stats.py: -------------------------------------------------------------------------------- 1 | from typing import Dict, List 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | from ark_sdk_python.models.services.pcloud.applications.ark_pcloud_application_auth_method import ArkPCloudApplicationAuthMethodType 7 | 8 | 9 | class ArkPCloudAppicationsStats(ArkModel): 10 | count: int = Field(description='Overall application count') 11 | disabled_apps: List[str] = Field(description='Disabled applications') 12 | auth_types_count: Dict[ArkPCloudApplicationAuthMethodType, int] = Field(description='Auth types count for all applications') 13 | applications_auth_method_types: Dict[str, List[ArkPCloudApplicationAuthMethodType]] = Field( 14 | description='Applicastions auth methods types' 15 | ) 16 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/applications/ark_pcloud_delete_application.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudDeleteApplication(ArkModel): 7 | app_id: str = Field(description='ID of the app to delete') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/applications/ark_pcloud_delete_application_auth_method.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudDeleteApplicationAuthMethod(ArkModel): 7 | app_id: str = Field(description='ID of the app to delete the auth method from') 8 | auth_id: str = Field(description='ID of the auth method to delete') 9 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/applications/ark_pcloud_get_application.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudGetApplication(ArkModel): 7 | app_id: str = Field(description='ID of the app to get') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/applications/ark_pcloud_get_application_auth_method.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudGetApplicationAuthMethod(ArkModel): 7 | app_id: str = Field(description='ID of the app to get the auth method from') 8 | auth_id: str = Field(description='ID of the auth method to get') 9 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/applications/ark_pcloud_list_application_auth_methods.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudListApplicationAuthMethods(ArkModel): 7 | app_id: str = Field(description='ID of the app to list the auth methods from') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_activate_target_platform.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudActivateTargetPlatform(ArkModel): 7 | target_platform_id: int = Field(description='ID of the platform to activate') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_deactivate_target_platform.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudDeactivateTargetPlatform(ArkModel): 7 | target_platform_id: int = Field(description='ID of the platform to deactivate') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_delete_target_platform.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudDeleteTargetPlatform(ArkModel): 7 | target_platform_id: int = Field(description='ID of the platform to delete') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_duplicate_target_platform.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkPCloudDuplicateTargetPlatform(ArkModel): 9 | target_platform_id: int = Field(description='ID of the platform to duplicate') 10 | name: str = Field(description='New duplicated target platform name') 11 | description: Optional[str] = Field(description='New duplicated target platform description', default=None) 12 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_duplicated_target_platform_info.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkTitleizedModel 6 | 7 | 8 | class ArkPCloudDuplicatedTargetPlatformInfo(ArkTitleizedModel): 9 | id: int = Field(description='ID of the duplicated platform', alias='ID') 10 | platform_id: str = Field(description='Platform id of the duplicated platform', alias='PlatformID') 11 | name: str = Field(description='New duplicated target platform name') 12 | description: Optional[str] = Field(description='New duplicated target platform description', default=None) 13 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_export_platform.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudExportPlatform(ArkModel): 7 | platform_id: str = Field(description='ID of the platform to export its zip data') 8 | output_folder: str = Field(description='Output folder path to write the zipped platform data to') 9 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_export_target_platform.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudExportTargetPlatform(ArkModel): 7 | target_platform_id: int = Field(description='ID of the platform to export its zip data') 8 | output_folder: str = Field(description='Output folder path to write the zipped platform data to') 9 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_get_platform.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudGetPlatform(ArkModel): 7 | platform_id: str = Field(description='Name of the platform') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_get_target_platform.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudGetTargetPlatform(ArkModel): 7 | target_platform_id: int = Field(description='ID of the platform to get') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_import_platform.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudImportPlatform(ArkModel): 7 | platform_zip_path: str = Field(description='Local path to the platform zip file') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_import_target_platform.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudImportTargetPlatform(ArkModel): 7 | platform_zip_path: str = Field(description='Local path to the platform zip file') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_platforms_filter.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | from ark_sdk_python.models.services.pcloud.platforms.ark_pcloud_platform import ArkPCloudPlatformType 7 | 8 | 9 | class ArkPCloudPlatformsFilter(ArkModel): 10 | active: Optional[bool] = Field(description='Filter only active or inactive platforms', default=None) 11 | platform_type: Optional[ArkPCloudPlatformType] = Field(description='Filter platforms by type', default=None) 12 | platform_name: Optional[str] = Field(description='Filter platforms by name', default=None) 13 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_platforms_stats.py: -------------------------------------------------------------------------------- 1 | from typing import Dict 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | from ark_sdk_python.models.services.pcloud.platforms.ark_pcloud_platform import ArkPCloudPlatformType 7 | 8 | 9 | class ArkPCloudPlatformsStats(ArkModel): 10 | platforms_count: int = Field(description='Overall platforms amount') 11 | platforms_count_by_type: Dict[ArkPCloudPlatformType, int] = Field(description='Platforms amount by type') 12 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_target_platforms_stats.py: -------------------------------------------------------------------------------- 1 | from typing import Dict 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkPCloudTargetPlatformsStats(ArkModel): 9 | target_platforms_count: int = Field(description='Overall target platforms amount') 10 | active_target_platforms_count: int = Field(description='Amount of active target platforms') 11 | target_platforms_count_by_system_type: Dict[str, int] = Field(description='Target platforms amount by system type') 12 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/safes/ark_pcloud_add_safe.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models.services.pcloud.safes.ark_pcloud_safe import ArkPCloudBaseSafe 2 | 3 | 4 | class ArkPCloudAddSafe(ArkPCloudBaseSafe): 5 | pass 6 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/safes/ark_pcloud_delete_safe.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudDeleteSafe(ArkModel): 7 | safe_id: str = Field(description='Safe id to delete') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/safes/ark_pcloud_delete_safe_member.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudDeleteSafeMember(ArkModel): 7 | safe_id: str = Field(description='Safe url id to remove the member from') 8 | member_name: str = Field(description='Name of the member to remove') 9 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/safes/ark_pcloud_get_safe.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudGetSafe(ArkModel): 7 | safe_id: str = Field(description='Safe id to get details for') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/safes/ark_pcloud_get_safe_member.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudGetSafeMember(ArkModel): 7 | safe_id: str = Field(description='Safe url id to get the member from') 8 | member_name: str = Field(description='Name of the member to get') 9 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/safes/ark_pcloud_get_safe_members_stats.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudGetSafeMembersStats(ArkModel): 7 | safe_id: str = Field(description='Safe url id to get the members stats for') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/safes/ark_pcloud_list_safe_members.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkPCloudListSafeMembers(ArkModel): 7 | safe_id: str = Field(description='Which safe id to list the members on') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/safes/ark_pcloud_safe_members_filter.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | from ark_sdk_python.models.services.pcloud.safes.ark_pcloud_safe_member import ArkPCloudSafeMemberType 7 | 8 | 9 | class ArkPCloudSafeMembersFilters(ArkModel): 10 | safe_id: str = Field(description='Which safe id to filter the members on') 11 | search: Optional[str] = Field(description='Search by string', default=None) 12 | sort: Optional[str] = Field(description='Sort results by given key', default=None) 13 | offset: Optional[int] = Field(description='Offset to the safe members list', default=None) 14 | limit: Optional[int] = Field(description='Limit of results', default=None) 15 | member_type: Optional[ArkPCloudSafeMemberType] = Field(description='Filter by type of safe member', default=None) 16 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/safes/ark_pcloud_safes_filters.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkPCloudSafesFilters(ArkModel): 9 | search: Optional[str] = Field(description='Search by string', default=None) 10 | sort: Optional[str] = Field(description='Sort results by given key', default=None) 11 | offset: Optional[int] = Field(description='Offset to the safes list', default=None) 12 | limit: Optional[int] = Field(description='Limit of results', default=None) 13 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/safes/ark_pcloud_safes_members_stats.py: -------------------------------------------------------------------------------- 1 | from typing import Dict 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | from ark_sdk_python.models.common import ArkCountedValues 7 | from ark_sdk_python.models.services.pcloud.safes.ark_pcloud_safe_member import ArkPCloudSafeMemberPermissionSet, ArkPCloudSafeMemberType 8 | 9 | 10 | class ArkPCloudSafeMembersStats(ArkModel): 11 | safe_members_count: int = Field(description='Overall members count') 12 | safe_members_permission_sets: Dict[ArkPCloudSafeMemberPermissionSet, ArkCountedValues] = Field(description='Members per permission set') 13 | safe_members_types_count: Dict[ArkPCloudSafeMemberType, int] = Field(description='Members count per type') 14 | 15 | 16 | class ArkPCloudSafesMembersStats(ArkModel): 17 | safe_members_stats: Dict[str, ArkPCloudSafeMembersStats] = Field(description='Safe members stats per safe') 18 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/safes/ark_pcloud_safes_stats.py: -------------------------------------------------------------------------------- 1 | from typing import Dict 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkPCloudSafesStats(ArkModel): 9 | safes_count: int = Field(description='Overall safes count') 10 | safes_count_by_location: Dict[str, int] = Field(description='Safes count by locations') 11 | safes_count_by_creator: Dict[str, int] = Field(description='Safes count by creator') 12 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/safes/ark_pcloud_update_safe.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models.services.pcloud.safes.ark_pcloud_safe import ArkPCloudBaseSafe 4 | 5 | 6 | class ArkPCloudUpdateSafe(ArkPCloudBaseSafe): 7 | safe_id: str = Field(description='Safe id to update') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/pcloud/safes/ark_pcloud_update_safe_member.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | from typing import Optional 3 | 4 | from pydantic import Field 5 | 6 | from ark_sdk_python.models import ArkCamelizedModel 7 | from ark_sdk_python.models.services.pcloud.safes.ark_pcloud_safe_member import ( 8 | ArkPCloudSafeMemberPermissions, 9 | ArkPCloudSafeMemberPermissionSet, 10 | ) 11 | 12 | 13 | class ArkPCloudUpdateSafeMember(ArkCamelizedModel): 14 | safe_id: str = Field(description='Safe url id to update the member on') 15 | member_name: str = Field(description='Name of the member to update') 16 | membership_expiration_date: Optional[datetime] = Field(description='What is the member expiration date to update', default=None) 17 | permissions: Optional[ArkPCloudSafeMemberPermissions] = Field( 18 | description='Permissions of the safe member on the safe to update', default=None 19 | ) 20 | permission_set: Optional[ArkPCloudSafeMemberPermissionSet] = Field(description='Predefined permission set to update to', default=None) 21 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyberark/ark-sdk-python/3be12c3f2d3a2d0407025028943e584b6edc5996/ark_sdk_python/models/services/sia/__init__.py -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/access/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models.services.sia.access.ark_sia_access_workspace_type_serializer import serialize_access_workspace_type 2 | from ark_sdk_python.models.services.sia.access.ark_sia_connector_setup_script import ArkSIAConnectorSetupScript 3 | from ark_sdk_python.models.services.sia.access.ark_sia_get_connector_setup_script import ArkSIAGetConnectorSetupScript 4 | from ark_sdk_python.models.services.sia.access.ark_sia_install_connector import ArkSIAInstallConnector 5 | from ark_sdk_python.models.services.sia.access.ark_sia_uninstall_connector import ArkSIAUninstallConnector 6 | 7 | __all__ = [ 8 | 'ArkSIAGetConnectorSetupScript', 9 | 'ArkSIAConnectorSetupScript', 10 | 'ArkSIAInstallConnector', 11 | 'ArkSIAUninstallConnector', 12 | 'serialize_access_workspace_type', 13 | ] 14 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/access/ark_sia_access_workspace_type_serializer.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models import ArkException 2 | from ark_sdk_python.models.common import ArkWorkspaceType 3 | 4 | 5 | def serialize_access_workspace_type(ws_type: ArkWorkspaceType): 6 | if isinstance(ws_type, str): 7 | ws_type = ArkWorkspaceType(ws_type) 8 | if ws_type == ArkWorkspaceType.AWS: 9 | return 'AWS' 10 | elif ws_type == ArkWorkspaceType.AZURE: 11 | return 'AZURE' 12 | elif ws_type == ArkWorkspaceType.ONPREM: 13 | return 'ON-PREMISE' 14 | elif ws_type == ArkWorkspaceType.GCP: 15 | return 'GCP' 16 | elif ws_type == ArkWorkspaceType.FAULT: 17 | return 'FAULT' 18 | raise ArkException('Invalid Access Workspace Type') 19 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/access/ark_sia_connector_setup_script.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkSIAConnectorSetupScript(ArkModel): 7 | script_url: str = Field( 8 | description='URL to manually download the SIA connector installation script. ' 9 | 'The script contains a secret token that is valid for 15 minutes from the time it is generated.' 10 | ) 11 | bash_cmd: str = Field( 12 | description='Bash command to automatically download the installation script and run it on the connector host machine. ' 13 | 'The script contains a secret token that is valid for 15 minutes from the time it is generated.' 14 | ) 15 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/certificates/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models.services.sia.certificates.ark_sia_certificates_certificate import ( 2 | ArkSIACertificate, 3 | ArkSIACreateCertificate, 4 | ArkSIACreateCertificateRequest, 5 | ArkSIAShortCertificate, 6 | ) 7 | from ark_sdk_python.models.services.sia.certificates.ark_sia_certificates_delete_certificate import ArkSIADeleteCertificate 8 | from ark_sdk_python.models.services.sia.certificates.ark_sia_certificates_filter import ArkSIACertificatesFilter 9 | from ark_sdk_python.models.services.sia.certificates.ark_sia_certificates_get_certificate import ArkSIAGetCertificate 10 | from ark_sdk_python.models.services.sia.certificates.ark_sia_certificates_update_certificate import ( 11 | ArkSIAUpdateCertificate, 12 | ArkSIAUpdateCertificateRequest, 13 | ) 14 | 15 | __all__ = [ 16 | "ArkSIACreateCertificate", 17 | "ArkSIACreateCertificateRequest", 18 | "ArkSIACertificate", 19 | "ArkSIAUpdateCertificate", 20 | "ArkSIAUpdateCertificateRequest", 21 | "ArkSIADeleteCertificate", 22 | "ArkSIAGetCertificate", 23 | "ArkSIACertificatesFilter", 24 | "ArkSIAShortCertificate", 25 | ] 26 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/certificates/ark_sia_certificates_delete_certificate.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkSIADeleteCertificate(ArkModel): 7 | certificate_id: str = Field(description='ID of the certificate to delete', min_length=1) 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/certificates/ark_sia_certificates_filter.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models.ark_model import ArkModel 6 | 7 | 8 | class ArkSIACertificatesFilter(ArkModel): 9 | domain_name: Optional[str] = Field(default=None, description='Filter by domain name') 10 | cert_name: Optional[str] = Field(default=None, description='Filter by certificate name') 11 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/certificates/ark_sia_certificates_get_certificate.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models.ark_model import ArkModel 4 | 5 | 6 | class ArkSIAGetCertificate(ArkModel): 7 | certificate_id: str = Field(description='ID of the certificate', min_length=1) 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/certificates/ark_sia_certificates_update_certificate.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field, FilePath 2 | 3 | from ark_sdk_python.models.services.sia.certificates.ark_sia_certificates_certificate import ArkSIACreateCertificateBase 4 | 5 | 6 | class ArkSIAUpdateCertificate(ArkSIACreateCertificateBase): 7 | certificate_id: str = Field(description='ID of the certificate to update', min_length=1) 8 | file: FilePath = Field(description='Path to a file with the certificate body') 9 | 10 | 11 | class ArkSIAUpdateCertificateRequest(ArkSIACreateCertificateBase): 12 | cert_body: str = Field(description='Certificate body content', min_length=1) 13 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/db/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models.services.sia.db.ark_sia_db_assets_type import ArkSIADBAssetsType 2 | from ark_sdk_python.models.services.sia.db.ark_sia_db_base_execution import ArkSIADBBaseExecution 3 | from ark_sdk_python.models.services.sia.db.ark_sia_db_base_generate_assets import ArkSIADBAssetsResponseFormat, ArkSIADBBaseGenerateAssets 4 | from ark_sdk_python.models.services.sia.db.ark_sia_db_generated_assets import ArkSIADBGeneratedAssets 5 | from ark_sdk_python.models.services.sia.db.ark_sia_db_mysql_execution import ArkSIADBMysqlExecution 6 | from ark_sdk_python.models.services.sia.db.ark_sia_db_oracle_generate_assets import ArkSIADBOracleGenerateAssets 7 | from ark_sdk_python.models.services.sia.db.ark_sia_db_proxy_fullchain_generate_assets import ArkSIADBProxyFullchainGenerateAssets 8 | from ark_sdk_python.models.services.sia.db.ark_sia_db_psql_execution import ArkSIADBPsqlExecution 9 | 10 | __all__ = [ 11 | 'ArkSIADBBaseExecution', 12 | 'ArkSIADBPsqlExecution', 13 | 'ArkSIADBMysqlExecution', 14 | 'ArkSIADBBaseGenerateAssets', 15 | 'ArkSIADBAssetsResponseFormat', 16 | 'ArkSIADBOracleGenerateAssets', 17 | 'ArkSIADBGeneratedAssets', 18 | 'ArkSIADBProxyFullchainGenerateAssets', 19 | 'ArkSIADBAssetsType', 20 | ] 21 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/db/ark_sia_db_assets_type.py: -------------------------------------------------------------------------------- 1 | # pylint: disable=invalid-name 2 | from enum import Enum 3 | 4 | 5 | class ArkSIADBAssetsType(str, Enum): 6 | OracleTNSAssets = 'oracle_tns_assets' 7 | ProxyFullChain = 'proxy_full_chain' 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/db/ark_sia_db_base_execution.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkSIADBBaseExecution(ArkModel): 9 | target_address: str = Field(description='Target address to connect to') 10 | target_username: Optional[str] = Field(default=None, description='Target username account to use') 11 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/db/ark_sia_db_base_generate_assets.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models.ark_model import ArkModel 6 | from ark_sdk_python.models.common.ark_connection_method import ArkConnectionMethod 7 | 8 | 9 | class ArkSIADBAssetsResponseFormat(str, Enum): 10 | RAW = 'raw' 11 | JSON = 'json' 12 | 13 | 14 | class ArkSIADBBaseGenerateAssets(ArkModel): 15 | connection_method: ArkConnectionMethod = Field( 16 | description='Whether to generate assets for standing or dynamic access', default=ArkConnectionMethod.Standing 17 | ) 18 | response_format: ArkSIADBAssetsResponseFormat = Field( 19 | description='In which format to return the assets', default=ArkSIADBAssetsResponseFormat.RAW 20 | ) 21 | folder: str = Field(description='Where to output the assets') 22 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/db/ark_sia_db_generated_assets.py: -------------------------------------------------------------------------------- 1 | from typing import Any, Dict, Union 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkSIADBGeneratedAssets(ArkModel): 9 | assets: Union[str, Dict[str, Any]] = Field(description='Actual assets') 10 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/db/ark_sia_db_mysql_execution.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models.services.sia.db.ark_sia_db_base_execution import ArkSIADBBaseExecution 4 | 5 | 6 | class ArkSIADBMysqlExecution(ArkSIADBBaseExecution): 7 | mysql_path: str = Field(description='Path to the psql executable', default='mysql') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/db/ark_sia_db_oracle_generate_assets.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models.services.sia.db.ark_sia_db_base_generate_assets import ArkSIADBBaseGenerateAssets 4 | 5 | 6 | class ArkSIADBOracleGenerateAssets(ArkSIADBBaseGenerateAssets): 7 | unzip: bool = Field(description='Whether to save zipped or not', default=True) 8 | include_sso: bool = Field(description='Whether to generate the asset with SSO details', default=True) 9 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/db/ark_sia_db_proxy_fullchain_generate_assets.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models.services.sia.db.ark_sia_db_base_generate_assets import ArkSIADBBaseGenerateAssets 2 | 3 | 4 | class ArkSIADBProxyFullchainGenerateAssets(ArkSIADBBaseGenerateAssets): 5 | pass 6 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/db/ark_sia_db_psql_execution.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models.services.sia.db.ark_sia_db_base_execution import ArkSIADBBaseExecution 4 | 5 | 6 | class ArkSIADBPsqlExecution(ArkSIADBBaseExecution): 7 | psql_path: str = Field(description='Path to the psql executable', default='psql') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/k8s/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models.services.sia.k8s.ark_sia_k8s_generate_kubeconfig import ArkSIAK8SGenerateKubeConfig 2 | 3 | __all__ = ['ArkSIAK8SGenerateKubeConfig'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/k8s/ark_sia_k8s_generate_kubeconfig.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkSIAK8SGenerateKubeConfig(ArkModel): 7 | folder: str = Field(description='Output folder to download the kube config file', default=None) 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/policies/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyberark/ark-sdk-python/3be12c3f2d3a2d0407025028943e584b6edc5996/ark_sdk_python/models/services/sia/policies/__init__.py -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/policies/common/ark_sia_base_add_policy.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkCamelizedModel 6 | from ark_sdk_python.models.services.sia.policies.common.ark_sia_rule_status import ArkSIARuleStatus 7 | 8 | 9 | class ArkSIABaseAddPolicy(ArkCamelizedModel): 10 | policy_name: Optional[str] = Field(default=None, description='Policy name to be added') 11 | description: Optional[str] = Field(default=None, description='Description about the policy to add') 12 | status: ArkSIARuleStatus = Field(description='Status of the policy upon adding', default=ArkSIARuleStatus.Draft) 13 | start_date: Optional[str] = Field( 14 | default=None, description='When will the policy start taking effect, empty means it will take effect when added' 15 | ) 16 | end_date: Optional[str] = Field( 17 | default=None, description='When will the policy stop taking effect, empty means it will never stop taking effect' 18 | ) 19 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/policies/common/ark_sia_base_authorization_rule.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkCamelizedModel 4 | from ark_sdk_python.models.services.sia.policies.common.ark_sia_user_data import ArkSIAUserData 5 | 6 | 7 | class ArkSIABaseAuthorizationRule(ArkCamelizedModel): 8 | rule_name: str = Field(description='Name of the rule') 9 | user_data: ArkSIAUserData = Field(description='User data related information of the rule') 10 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/policies/common/ark_sia_base_authorization_rule_extended.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models.services.sia.policies.common import ArkSIABaseAuthorizationRule 6 | from ark_sdk_python.models.services.sia.policies.vm import ArkSIAVMConnectionInformation 7 | 8 | 9 | class ArkSIABaseAuthorizationRuleExtended(ArkSIABaseAuthorizationRule): 10 | connection_information: Optional[ArkSIAVMConnectionInformation] = Field( 11 | default=None, description='Connection information of the policy' 12 | ) 13 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/policies/common/ark_sia_base_policies_filter.py: -------------------------------------------------------------------------------- 1 | from typing import List, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | from ark_sdk_python.models.services.sia.policies.common.ark_sia_rule_status import ArkSIARuleStatus 7 | 8 | 9 | class ArkSIABasePoliciesFilter(ArkModel): 10 | statuses: Optional[List[ArkSIARuleStatus]] = Field(default=None, description='Filter policies by given rule statuses') 11 | name: Optional[str] = Field(default=None, description='Filter by policy name wildcard') 12 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/policies/common/ark_sia_base_policies_stats.py: -------------------------------------------------------------------------------- 1 | from typing import Dict 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | from ark_sdk_python.models.services.sia.policies.common.ark_sia_rule_status import ArkSIARuleStatus 7 | 8 | 9 | class ArkSIABasePoliciesStats(ArkModel): 10 | policies_count: int = Field(description='Overall count of policies') 11 | policies_count_per_status: Dict[ArkSIARuleStatus, int] = Field(description='Policies count per rule status') 12 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/policies/common/ark_sia_base_policy.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkCamelizedModel 6 | from ark_sdk_python.models.services.sia.policies.common.ark_sia_rule_status import ArkSIARuleStatus 7 | 8 | 9 | class ArkSIABasePolicy(ArkCamelizedModel): 10 | policy_id: Optional[str] = Field(default=None, description='ID of the policy') 11 | policy_name: str = Field(description='Name of the policy') 12 | status: ArkSIARuleStatus = Field(description='Status of the policy') 13 | description: Optional[str] = Field(default=None, description='Description of the policy') 14 | start_date: Optional[str] = Field(default=None, description='Start date of the policy') 15 | end_date: Optional[str] = Field(default=None, description='End date of the policy') 16 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/policies/common/ark_sia_base_policy_list_item.py: -------------------------------------------------------------------------------- 1 | from typing import List, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkCamelizedModel 6 | from ark_sdk_python.models.services.sia.policies.common.ark_sia_rule_status import ArkSIARuleStatus 7 | 8 | 9 | class ArkSIABasePolicyListItemBase(ArkCamelizedModel): 10 | policy_id: str = Field(description='ID of the policy') 11 | policy_name: str = Field(description='Name of the policy') 12 | status: ArkSIARuleStatus = Field(description='Status of the policy') 13 | description: Optional[str] = Field(default=None, description='Description of the policy') 14 | 15 | 16 | class ArkSIABasePolicyListItem(ArkSIABasePolicyListItemBase): 17 | updated_on: str = Field(description='Last update time of the policy') 18 | rule_names: Optional[List[str]] = Field(default=None, description='Names of the authorization rules of the policy') 19 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/policies/common/ark_sia_base_policy_list_item_extanded.py: -------------------------------------------------------------------------------- 1 | from typing import List, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models.services.sia.policies.common.ark_sia_base_authorization_rule_extended import ArkSIABaseAuthorizationRuleExtended 6 | from ark_sdk_python.models.services.sia.policies.common.ark_sia_base_policy_list_item import ArkSIABasePolicyListItemBase 7 | from ark_sdk_python.models.services.sia.policies.vm import ArkSIAVMProvidersDict 8 | 9 | 10 | class ArkSIABasePolicyListItemExtended(ArkSIABasePolicyListItemBase): 11 | providers_data: Optional[ArkSIAVMProvidersDict] = Field(default=None, description='Provider data of the policy') 12 | start_date: Optional[str] = Field(default=None, description='Start date of the policy') 13 | end_date: Optional[str] = Field(default=None, description='Expiration date of the policy') 14 | user_access_rules: Optional[List[ArkSIABaseAuthorizationRuleExtended]] = Field( 15 | default=None, description='Authorization rules of the policy' 16 | ) 17 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/policies/common/ark_sia_delete_policy.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field, model_validator 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkSIADeletePolicy(ArkModel): 9 | policy_id: Optional[str] = Field(default=None, description='Policy id to delete') 10 | policy_name: Optional[str] = Field(default=None, description='Policy name to delete') 11 | 12 | # pylint: disable=no-self-use,no-self-argument 13 | @model_validator(mode='before') 14 | @classmethod 15 | def validate_either(cls, values): 16 | if 'policy_id' not in values and 'policy_name' not in values: 17 | raise ValueError('Either policy id or policy name needs to be provided') 18 | return values 19 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/policies/common/ark_sia_get_policy.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field, model_validator 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkSIAGetPolicy(ArkModel): 9 | policy_id: Optional[str] = Field(default=None, description='Policy id to get') 10 | policy_name: Optional[str] = Field(default=None, description='Policy name to get') 11 | 12 | # pylint: disable=no-self-use,no-self-argument 13 | @model_validator(mode='before') 14 | @classmethod 15 | def validate_either(cls, values): 16 | if 'policy_id' not in values and 'policy_name' not in values: 17 | raise ValueError('Either policy id or policy name needs to be provided') 18 | return values 19 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/policies/common/ark_sia_rule_status.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | 4 | class ArkSIARuleStatus(str, Enum): 5 | Enabled = 'Enabled' 6 | Disabled = 'Disabled' 7 | Draft = 'Draft' 8 | Expired = 'Expired' 9 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/policies/common/ark_sia_update_policy_status.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field, model_validator 4 | 5 | from ark_sdk_python.models import ArkModel 6 | from ark_sdk_python.models.services.sia.policies.common.ark_sia_rule_status import ArkSIARuleStatus 7 | 8 | 9 | class ArkSIAUpdatePolicyStatus(ArkModel): 10 | policy_id: Optional[str] = Field(default=None, description='Policy id to update the status for') 11 | policy_name: Optional[str] = Field(default=None, description='Policy name to update the status for') 12 | status: ArkSIARuleStatus = Field(description='New status to update') 13 | 14 | # pylint: disable=no-self-use,no-self-argument 15 | @model_validator(mode='before') 16 | @classmethod 17 | def validate_either(cls, values): 18 | if 'policy_id' not in values and 'policy_name' not in values: 19 | raise ValueError('Either policy id or policy name needs to be provided') 20 | return values 21 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/policies/common/ark_sia_user_data.py: -------------------------------------------------------------------------------- 1 | from typing import List, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models.ark_model import ArkCamelizedModel 6 | 7 | 8 | class ArkSIAUserDataAttribute(ArkCamelizedModel): 9 | name: str = Field(description='Name of the attribute') 10 | source: Optional[str] = Field(default=None, description='Source of the attribute') 11 | identifier: Optional[str] = Field(default=None, description='Identifier of the attribute') 12 | 13 | 14 | class ArkSIAUserData(ArkCamelizedModel): 15 | roles: Optional[List[ArkSIAUserDataAttribute]] = Field(description='Roles allowed for auth rule', default_factory=list) 16 | groups: Optional[List[ArkSIAUserDataAttribute]] = Field(description='Groups allowed for auth rule', default_factory=list) 17 | users: Optional[List[ArkSIAUserDataAttribute]] = Field(description='Users allowed for auth rule', default_factory=list) 18 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/policies/db/ark_sia_db_add_policy.py: -------------------------------------------------------------------------------- 1 | from typing import List, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models.services.sia.policies.common.ark_sia_base_add_policy import ArkSIABaseAddPolicy 6 | from ark_sdk_python.models.services.sia.policies.db.ark_sia_db_authorization_rule import ArkSIADBAuthorizationRule 7 | from ark_sdk_python.models.services.sia.policies.db.ark_sia_db_providers import ArkSIADBProvidersData 8 | 9 | 10 | class ArkSIADBAddPolicy(ArkSIABaseAddPolicy): 11 | providers_tags: List[str] = Field(description='Policy tags to use as filters for the assets in the rules', default_factory=list) 12 | providers_data: Optional[ArkSIADBProvidersData] = Field( 13 | default=None, description='Policy providers data containing database assets of different types' 14 | ) 15 | user_access_rules: Optional[List[ArkSIADBAuthorizationRule]] = Field( 16 | default=None, description='Authorization rules of the policy describing how and who can access the assets' 17 | ) 18 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/policies/db/ark_sia_db_authorization_rule.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models.services.sia.policies.common.ark_sia_base_authorization_rule import ArkSIABaseAuthorizationRule 4 | from ark_sdk_python.models.services.sia.policies.common.ark_sia_base_connection_information import ArkSIABaseConnectionInformation 5 | from ark_sdk_python.models.services.sia.policies.db.ark_sia_db_connection_data import ArkSIADBConnectAs 6 | 7 | 8 | class ArkSIADBConnectionInformation(ArkSIABaseConnectionInformation): 9 | connect_as: ArkSIADBConnectAs = Field(description='In which fashion the connection is made') 10 | 11 | 12 | class ArkSIADBAuthorizationRule(ArkSIABaseAuthorizationRule): 13 | connection_information: ArkSIADBConnectionInformation = Field(description='Rule information on how access is made') 14 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/policies/db/ark_sia_db_policies_workspace_type_serializer.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models import ArkException 2 | from ark_sdk_python.models.common import ArkWorkspaceType 3 | 4 | 5 | def serialize_sia_db_policies_workspace_type(ws_type: ArkWorkspaceType) -> str: 6 | if isinstance(ws_type, str): 7 | ws_type = ArkWorkspaceType(ws_type) 8 | if ws_type == ArkWorkspaceType.MSSQL: 9 | return 'MSSQL' 10 | elif ws_type == ArkWorkspaceType.MYSQL: 11 | return 'MySQL' 12 | elif ws_type == ArkWorkspaceType.MARIADB: 13 | return 'MariaDB' 14 | elif ws_type == ArkWorkspaceType.POSTGRES: 15 | return 'Postgres' 16 | elif ws_type == ArkWorkspaceType.ORACLE: 17 | return 'Oracle' 18 | elif ws_type == ArkWorkspaceType.MONGO: 19 | return 'Mongo' 20 | elif ws_type == ArkWorkspaceType.DB2: 21 | return 'Db2' 22 | raise ArkException('Invalid DB Policies Workspace Type') 23 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/policies/db/ark_sia_db_policy.py: -------------------------------------------------------------------------------- 1 | from typing import List, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models.services.sia.policies.common.ark_sia_base_policy import ArkSIABasePolicy 6 | from ark_sdk_python.models.services.sia.policies.db.ark_sia_db_authorization_rule import ArkSIADBAuthorizationRule 7 | from ark_sdk_python.models.services.sia.policies.db.ark_sia_db_providers import ArkSIADBProvidersData 8 | 9 | 10 | class ArkSIADBPolicy(ArkSIABasePolicy): 11 | providers_tags: List[str] = Field(description='Policy tags', default_factory=list) 12 | providers_data: ArkSIADBProvidersData = Field(description='Policy providers data') 13 | user_access_rules: Optional[List[ArkSIADBAuthorizationRule]] = Field(default=None, description='Authorization rules of the policy') 14 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/policies/db/ark_sia_db_update_policy.py: -------------------------------------------------------------------------------- 1 | from typing import List, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models.services.sia.policies.common.ark_sia_base_update_policy import ArkSIABaseUpdatePolicy 6 | from ark_sdk_python.models.services.sia.policies.db.ark_sia_db_authorization_rule import ArkSIADBAuthorizationRule 7 | from ark_sdk_python.models.services.sia.policies.db.ark_sia_db_providers import ArkSIADBProvidersData 8 | 9 | 10 | class ArkSIADBUpdatePolicy(ArkSIABaseUpdatePolicy): 11 | providers_tags: Optional[List[str]] = Field(default=None, description='Policy tags to use as filters for the assets in the rules') 12 | providers_data: Optional[ArkSIADBProvidersData] = Field( 13 | default=None, description='Policy providers data containing database assets of different types' 14 | ) 15 | user_access_rules: Optional[List[ArkSIADBAuthorizationRule]] = Field( 16 | default=None, description='Authorization rules of the policy describing how and who can access the assets' 17 | ) 18 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/policies/vm/ark_sia_vm_connection_data.py: -------------------------------------------------------------------------------- 1 | from typing import Dict, List, Union 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkCamelizedModel 6 | from ark_sdk_python.models.common import ArkProtocolType, ArkWorkspaceType 7 | 8 | 9 | class ArkSIAVMConnectionMethodData(ArkCamelizedModel): 10 | pass 11 | 12 | 13 | class ArkSIAVMLocalEphemeralUserConnectionMethodData(ArkSIAVMConnectionMethodData): 14 | assign_groups: List[str] = Field(description='Predefined assigned groups of the user', default_factory=list) 15 | 16 | 17 | class ArkSIAVMRDPLocalEphemeralUserConnectionData(ArkCamelizedModel): 18 | local_ephemeral_user: ArkSIAVMLocalEphemeralUserConnectionMethodData = Field(description='Local ephemeral user method related data') 19 | 20 | 21 | ArkSIAVMConnectionDataType = Union[str, ArkSIAVMRDPLocalEphemeralUserConnectionData] 22 | ArkSIAVMConnectionProtocolDict = Dict[ArkProtocolType, ArkSIAVMConnectionDataType] 23 | ArkSIAVMProvidersConnectionDict = Dict[ArkWorkspaceType, ArkSIAVMConnectionProtocolDict] 24 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/policies/vm/ark_sia_vm_policies_filter.py: -------------------------------------------------------------------------------- 1 | from typing import List, Optional 2 | 3 | from pydantic import Field, field_validator 4 | 5 | from ark_sdk_python.models.common import ArkWorkspaceType 6 | from ark_sdk_python.models.services.sia.policies.common.ark_sia_base_policies_filter import ArkSIABasePoliciesFilter 7 | 8 | 9 | class ArkSIAVMPoliciesFilter(ArkSIABasePoliciesFilter): 10 | providers: Optional[List[ArkWorkspaceType]] = Field(default=None, description='Filter by policies with given cloud providers') 11 | 12 | # pylint: disable=no-self-use,no-self-argument 13 | @field_validator('providers', mode="before") 14 | @classmethod 15 | def validate_providers(cls, val): 16 | if val is not None: 17 | new_val = [] 18 | for plat in val: 19 | if ArkWorkspaceType(plat) not in [ 20 | ArkWorkspaceType.AWS, 21 | ArkWorkspaceType.AZURE, 22 | ArkWorkspaceType.GCP, 23 | ArkWorkspaceType.ONPREM, 24 | ]: 25 | raise ValueError('Invalid Platform / Workspace Type') 26 | new_val.append(ArkWorkspaceType(plat)) 27 | return new_val 28 | return val 29 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/policies/vm/ark_sia_vm_policies_protocol_type_serializer.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models import ArkException 2 | from ark_sdk_python.models.common import ArkProtocolType 3 | 4 | 5 | def serialize_sia_vm_policies_protocol_type(protocol_type: ArkProtocolType) -> str: 6 | if isinstance(protocol_type, str): 7 | protocol_type = ArkProtocolType(protocol_type) 8 | if protocol_type == ArkProtocolType.SSH: 9 | return 'ssh' 10 | if protocol_type == ArkProtocolType.SCP: 11 | return 'scp' 12 | if protocol_type == ArkProtocolType.SFTP: 13 | return 'sftp' 14 | elif protocol_type == ArkProtocolType.RDP: 15 | return 'rdp' 16 | elif protocol_type == ArkProtocolType.HTTPS: 17 | return 'https' 18 | raise ArkException('Invalid SIA VM Protocol Type') 19 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/policies/vm/ark_sia_vm_policies_stats.py: -------------------------------------------------------------------------------- 1 | from typing import Dict 2 | 3 | from pydantic import Field, field_validator 4 | 5 | from ark_sdk_python.models.common import ArkWorkspaceType 6 | from ark_sdk_python.models.services.sia.policies.common.ark_sia_base_policies_stats import ArkSIABasePoliciesStats 7 | 8 | 9 | class ArkSIAVMPoliciesStats(ArkSIABasePoliciesStats): 10 | policies_count_per_provider: Dict[ArkWorkspaceType, int] = Field(description='Policies count per VM platform') 11 | 12 | # pylint: disable=no-self-use,no-self-argument 13 | @field_validator('policies_count_per_provider', mode="before") 14 | @classmethod 15 | def validate_policies_count_per_provider(cls, val): 16 | if val is not None: 17 | new_val = [] 18 | for plat in val: 19 | if ArkWorkspaceType(plat) not in [ 20 | ArkWorkspaceType.AWS, 21 | ArkWorkspaceType.AZURE, 22 | ArkWorkspaceType.GCP, 23 | ArkWorkspaceType.ONPREM, 24 | ]: 25 | raise ValueError('Invalid Platform / Workspace Type') 26 | new_val.append(ArkWorkspaceType(plat)) 27 | return new_val 28 | return val 29 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/policies/vm/ark_sia_vm_policies_workspace_type_serializer.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models import ArkException 2 | from ark_sdk_python.models.common import ArkWorkspaceType 3 | 4 | 5 | def serialize_sia_vm_policies_workspace_type(ws_type: ArkWorkspaceType) -> str: 6 | if isinstance(ws_type, str): 7 | ws_type = ArkWorkspaceType(ws_type) 8 | if ws_type == ArkWorkspaceType.AWS: 9 | return 'AWS' 10 | elif ws_type == ArkWorkspaceType.AZURE: 11 | return 'Azure' 12 | elif ws_type == ArkWorkspaceType.GCP: 13 | return 'GCP' 14 | elif ws_type == ArkWorkspaceType.ONPREM: 15 | return 'OnPrem' 16 | raise ArkException('Invalid VM Policies Workspace Type') 17 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/secrets/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyberark/ark-sdk-python/3be12c3f2d3a2d0407025028943e584b6edc5996/ark_sdk_python/models/services/sia/secrets/__init__.py -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/secrets/db/ark_sia_db_delete_secret.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field, model_validator 4 | 5 | from ark_sdk_python.models.ark_model import ArkModel 6 | 7 | 8 | class ArkSIADBDeleteSecret(ArkModel): 9 | secret_id: Optional[str] = Field(default=None, description='ID of the secret to delete') 10 | secret_name: Optional[str] = Field(default=None, description='Name of the secret to delete') 11 | 12 | # pylint: disable=no-self-use,no-self-argument 13 | @model_validator(mode='before') 14 | @classmethod 15 | def validate_either(cls, values): 16 | if 'secret_id' not in values and 'secret_name' not in values: 17 | raise ValueError('Either secret id or secret name needs to be provided') 18 | return values 19 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/secrets/db/ark_sia_db_disable_secret.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field, model_validator 4 | 5 | from ark_sdk_python.models.ark_model import ArkModel 6 | 7 | 8 | class ArkSIADBDisableSecret(ArkModel): 9 | secret_id: Optional[str] = Field(default=None, description='ID of the secret to disable') 10 | secret_name: Optional[str] = Field(default=None, description='Name of the secret to disable') 11 | 12 | # pylint: disable=no-self-use,no-self-argument 13 | @model_validator(mode='before') 14 | @classmethod 15 | def validate_either(cls, values): 16 | if 'secret_id' not in values and 'secret_name' not in values: 17 | raise ValueError('Either secret id or secret name needs to be provided') 18 | return values 19 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/secrets/db/ark_sia_db_enable_secret.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field, model_validator 4 | 5 | from ark_sdk_python.models.ark_model import ArkModel 6 | 7 | 8 | class ArkSIADBEnableSecret(ArkModel): 9 | secret_id: Optional[str] = Field(default=None, description='ID of the secret to enable') 10 | secret_name: Optional[str] = Field(default=None, description='Name of the secret to enable') 11 | 12 | # pylint: disable=no-self-use,no-self-argument 13 | @model_validator(mode='before') 14 | @classmethod 15 | def validate_either(cls, values): 16 | if 'secret_id' not in values and 'secret_name' not in values: 17 | raise ValueError('Either secret id or secret name needs to be provided') 18 | return values 19 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/secrets/db/ark_sia_db_get_secret.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field, model_validator 4 | 5 | from ark_sdk_python.models.ark_model import ArkModel 6 | 7 | 8 | class ArkSIADBGetSecret(ArkModel): 9 | secret_id: Optional[str] = Field(default=None, description='ID of the secret to get') 10 | secret_name: Optional[str] = Field(default=None, description='Name of the secret to get') 11 | 12 | # pylint: disable=no-self-use,no-self-argument 13 | @model_validator(mode='before') 14 | @classmethod 15 | def validate_either(cls, values): 16 | if 'secret_id' not in values and 'secret_name' not in values: 17 | raise ValueError('Either secret id or secret name needs to be provided') 18 | return values 19 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/secrets/db/ark_sia_db_secret_type.py: -------------------------------------------------------------------------------- 1 | # pylint: disable=invalid-name 2 | from enum import Enum 3 | 4 | 5 | class ArkSIADBSecretType(str, Enum): 6 | UsernamePassword = 'username_password' 7 | IAMUser = 'iam_user' 8 | CyberArkPAM = 'cyberark_pam' 9 | AtlasAccessKeys = 'atlas_access_keys' 10 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/secrets/db/ark_sia_db_secrets_filter.py: -------------------------------------------------------------------------------- 1 | from typing import List, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models.ark_model import ArkModel 6 | from ark_sdk_python.models.services.sia.secrets.db.ark_sia_db_secret_type import ArkSIADBSecretType 7 | from ark_sdk_python.models.services.sia.secrets.db.ark_sia_db_store_type import ArkSIADBStoreType 8 | from ark_sdk_python.models.services.sia.workspaces.db.ark_sia_db_tag import ArkSIADBTag 9 | 10 | 11 | class ArkSIADBSecretsFilter(ArkModel): 12 | secret_name: Optional[str] = Field(default=None, description='Filter by secret name') 13 | secret_type: Optional[ArkSIADBSecretType] = Field(default=None, description='Filter by type') 14 | store_type: Optional[ArkSIADBStoreType] = Field(default=None, description='Filter by store type') 15 | is_active: Optional[bool] = Field(default=None, description='Filter by if secret is active') 16 | tags: Optional[List[ArkSIADBTag]] = Field(default=None, description='Filter by tags') 17 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/secrets/db/ark_sia_db_secrets_stats.py: -------------------------------------------------------------------------------- 1 | from typing import Dict 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | from ark_sdk_python.models.services.sia.secrets.db.ark_sia_db_secret_type import ArkSIADBSecretType 7 | from ark_sdk_python.models.services.sia.secrets.db.ark_sia_db_store_type import ArkSIADBStoreType 8 | 9 | 10 | class ArkSIADBSecretsStats(ArkModel): 11 | secrets_count: int = Field(description='Overall secrets count') 12 | active_secrets_count: int = Field(description='Overall active secrets count') 13 | inactive_secrets_count: int = Field(description='Overall inactive secrets count') 14 | secrets_count_by_secret_type: Dict[ArkSIADBSecretType, int] = Field(description='Secrets count by secret type') 15 | secrets_count_by_store_type: Dict[ArkSIADBStoreType, int] = Field(description='Secrets count by store type') 16 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/secrets/db/ark_sia_db_store_descriptor.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models.ark_model import ArkModel 6 | from ark_sdk_python.models.services.sia.secrets.db.ark_sia_db_store_type import ArkSIADBStoreType 7 | 8 | 9 | class ArkSIADBStoreDescriptor(ArkModel): 10 | store_id: Optional[str] = Field(default=None, description='ID of the store') 11 | store_type: Optional[ArkSIADBStoreType] = Field(default=None, description='Type of the store') 12 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/secrets/db/ark_sia_db_store_type.py: -------------------------------------------------------------------------------- 1 | # pylint: disable=invalid-name 2 | from enum import Enum 3 | from typing import Dict, Final 4 | 5 | from ark_sdk_python.models.services.sia.secrets.db.ark_sia_db_secret_type import ArkSIADBSecretType 6 | 7 | 8 | class ArkSIADBStoreType(str, Enum): 9 | Managed = 'managed' 10 | PAM = 'pam' 11 | 12 | 13 | SECRET_TYPE_TO_STORE_DICT: Final[Dict[ArkSIADBSecretType, ArkSIADBStoreType]] = { 14 | ArkSIADBSecretType.UsernamePassword: ArkSIADBStoreType.Managed, 15 | ArkSIADBSecretType.CyberArkPAM: ArkSIADBStoreType.PAM, 16 | ArkSIADBSecretType.IAMUser: ArkSIADBStoreType.Managed, 17 | ArkSIADBSecretType.AtlasAccessKeys: ArkSIADBStoreType.Managed, 18 | } 19 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/secrets/db/secret_links/__init__.py: -------------------------------------------------------------------------------- 1 | from typing import Union 2 | 3 | from ark_sdk_python.models.services.sia.secrets.db.secret_links.ark_sia_db_pam_account_secret_link import ArkSIADBPAMAccountSecretLink 4 | 5 | ArkSIADBSecretLinks = Union[ArkSIADBPAMAccountSecretLink] 6 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/secrets/db/secret_links/ark_sia_db_pam_account_secret_link.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models.ark_model import ArkModel 6 | 7 | 8 | class ArkSIADBPAMAccountSecretLink(ArkModel): 9 | safe: Optional[str] = Field(default=None, description='Safe of the account') 10 | account_name: Optional[str] = Field(default=None, description='Account name') 11 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/secrets/db/secrets_data/__init__.py: -------------------------------------------------------------------------------- 1 | from typing import Union 2 | 3 | from ark_sdk_python.models.services.sia.secrets.db.secrets_data.ark_sia_db_atlas_access_keys_secret_data import ( 4 | ArkSIADBAtlasAccessKeysSecretData, 5 | ArkSIADBExposedAtlasAccessKeysSecretData, 6 | ) 7 | from ark_sdk_python.models.services.sia.secrets.db.secrets_data.ark_sia_db_iam_user_secret_data import ( 8 | ArkSIADBExposedIAMUserSecretData, 9 | ArkSIADBIAMUserSecretData, 10 | ) 11 | from ark_sdk_python.models.services.sia.secrets.db.secrets_data.ark_sia_db_user_password_secret_data import ( 12 | ArkSIADBExposedUserPasswordSecretData, 13 | ArkSIADBUserPasswordSecretData, 14 | ) 15 | 16 | ArkSIADBSecretDataTypes = Union[ArkSIADBUserPasswordSecretData, ArkSIADBIAMUserSecretData, ArkSIADBAtlasAccessKeysSecretData] 17 | ArkSIADBSecretExposedDataTypes = Union[ 18 | ArkSIADBExposedUserPasswordSecretData, ArkSIADBExposedIAMUserSecretData, ArkSIADBExposedAtlasAccessKeysSecretData 19 | ] 20 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/secrets/db/secrets_data/ark_sia_db_atlas_access_keys_secret_data.py: -------------------------------------------------------------------------------- 1 | from typing import Any, Dict, Optional 2 | 3 | from pydantic import BaseModel, Field 4 | 5 | from ark_sdk_python.models.ark_model import ArkSecretStr 6 | 7 | 8 | class ArkSIADBAtlasAccessKeysSecretData(BaseModel): 9 | public_key: str = Field(description='Public part of mongo atlas access keys') 10 | private_key: ArkSecretStr = Field(description='Private part of mongo atlas access keys') 11 | metadata: Optional[Dict[str, Any]] = Field(default=None, description='Extra secret details') 12 | 13 | 14 | class ArkSIADBExposedAtlasAccessKeysSecretData(BaseModel): 15 | public_key: str = Field(description='Public part of mongo atlas access keys') 16 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/secrets/db/secrets_data/ark_sia_db_iam_user_secret_data.py: -------------------------------------------------------------------------------- 1 | from typing import Any, Dict, Optional 2 | 3 | from pydantic import BaseModel, Field 4 | 5 | from ark_sdk_python.models.ark_model import ArkSecretStr 6 | 7 | 8 | class ArkSIADBIAMUserSecretData(BaseModel): 9 | account: str = Field(description='Account number of the iam user') 10 | region: Optional[str] = Field(default=None, description='Region associated with the iam user') 11 | username: str = Field(description='Username portion in the ARN of the iam user') 12 | access_key_id: ArkSecretStr = Field(description='Access key id of the user') 13 | secret_access_key: ArkSecretStr = Field(description='Secret access key of the user') 14 | metadata: Optional[Dict[str, Any]] = Field(default=None, description='Extra secret details') 15 | 16 | 17 | class ArkSIADBExposedIAMUserSecretData(BaseModel): 18 | account: str = Field(description='Account number of the iam user') 19 | username: str = Field(description='Username portion in the ARN of the iam user') 20 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/secrets/db/secrets_data/ark_sia_db_user_password_secret_data.py: -------------------------------------------------------------------------------- 1 | from typing import Any, Dict, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models.ark_model import ArkModel, ArkSecretStr 6 | 7 | 8 | class ArkSIADBUserPasswordSecretData(ArkModel): 9 | username: Optional[str] = Field(default=None, description='Name or id of the user') 10 | password: Optional[ArkSecretStr] = Field(default=None, description='Password of the user') 11 | metadata: Optional[Dict[str, Any]] = Field(default=None, description='Extra secret details') 12 | 13 | 14 | class ArkSIADBExposedUserPasswordSecretData(ArkModel): 15 | username: Optional[str] = Field(default=None, description='Name or id of the user') 16 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/secrets/vm/ark_sia_vm_change_secret.py: -------------------------------------------------------------------------------- 1 | from typing import Any, Dict, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel, ArkSecretStr 6 | 7 | 8 | class ArkSIAVMChangeSecret(ArkModel): 9 | secret_id: str = Field(description='The secret id to change') 10 | secret_name: Optional[str] = Field(default=None, description='The new name of the secret') 11 | secret_details: Optional[Dict[str, Any]] = Field(default=None, description='New secret details to add / change') 12 | is_disabled: Optional[bool] = Field(default=None, description='Whether to disable the secret') 13 | provisioner_username: Optional[str] = Field(default=None, description='If provisioner user type secret, the new username') 14 | provisioner_password: Optional[ArkSecretStr] = Field(default=None, description='If provisioner user type secret, the new password') 15 | pcloud_account_safe: Optional[str] = Field(default=None, description='If pcloud account type secret, the new account safe') 16 | pcloud_account_name: Optional[str] = Field(default=None, description='If pcloud account type secret, the new account name') 17 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/secrets/vm/ark_sia_vm_delete_secret.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkSIAVMDeleteSecret(ArkModel): 7 | secret_id: str = Field(description='The secret id to delete') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/secrets/vm/ark_sia_vm_get_secret.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkSIAVMGetSecret(ArkModel): 7 | secret_id: str = Field(description='The secret id to get') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/secrets/vm/ark_sia_vm_secret_error.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkSIAVMSecretError(ArkModel): 9 | error: Optional[str] = Field(default=None, description="Error message") 10 | stack: Optional[str] = Field(default=None, description="Stack trace") 11 | status_code: Optional[int] = Field(default=None, description="Error status code") 12 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/secrets/vm/ark_sia_vm_secret_info.py: -------------------------------------------------------------------------------- 1 | from typing import Any, Dict, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | from ark_sdk_python.models.services.sia.secrets.vm.ark_sia_vm_secret_type import ArkSIAVMSecretType 7 | 8 | 9 | class ArkSIAVMSecretInfo(ArkModel): 10 | secret_id: str = Field(description="ID of the secret") 11 | tenant_id: Optional[str] = Field(default=None, description="Tenant ID of the secret") 12 | secret_type: ArkSIAVMSecretType = Field(description="Type of the secret") 13 | secret_name: Optional[str] = Field(default=None, description="A friendly name label") 14 | secret_details: Dict[str, Any] = Field(description="Secret extra details", default_factory=dict) 15 | is_active: bool = Field(description="Whether this secret is active or not") 16 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/secrets/vm/ark_sia_vm_secret_type.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | 4 | class ArkSIAVMSecretType(str, Enum): 5 | ProvisionerUser = 'ProvisionerUser' 6 | PCloudAccount = 'PCloudAccount' 7 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/secrets/vm/ark_sia_vm_secrets_filter.py: -------------------------------------------------------------------------------- 1 | from typing import Any, Dict, List, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | from ark_sdk_python.models.services.sia.secrets.vm.ark_sia_vm_secret_type import ArkSIAVMSecretType 7 | 8 | 9 | class ArkSIAVMSecretsFilter(ArkModel): 10 | secret_types: Optional[List[ArkSIAVMSecretType]] = Field(default=None, description='Type of secrets to filter') 11 | name: Optional[str] = Field(default=None, description='Name wildcard to filter with') 12 | secret_details: Optional[Dict[str, Any]] = Field(default=None, description='Secret details to filter with') 13 | is_active: Optional[bool] = Field(default=None, description='Filter only active / inactive secrets') 14 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/secrets/vm/ark_sia_vm_secrets_stats.py: -------------------------------------------------------------------------------- 1 | from typing import Dict 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | from ark_sdk_python.models.services.sia.secrets.vm.ark_sia_vm_secret_type import ArkSIAVMSecretType 7 | 8 | 9 | class ArkSIAVMSecretsStats(ArkModel): 10 | secrets_count: int = Field(description='Overall secrets count') 11 | active_secrets_count: int = Field(description='Overall active secrets count') 12 | inactive_secrets_count: int = Field(description='Overall inactive secrets count') 13 | secrets_count_by_type: Dict[ArkSIAVMSecretType, int] = Field(description='Secrets count by type') 14 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/sso/ark_sia_sso_acquire_token_response.py: -------------------------------------------------------------------------------- 1 | from typing import Any, Dict 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkSIASSOAcquireTokenResponse(ArkModel): 9 | token: Dict[str, Any] = Field(description='Token data') 10 | metadata: Dict[str, Any] = Field(description='Token metadata') 11 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/sso/ark_sia_sso_get_short_lived_client_certificate.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | from typing import Literal, Optional 3 | 4 | from pydantic import Field 5 | 6 | from ark_sdk_python.models import ArkModel 7 | 8 | 9 | # ArkSIAConnectorModeCodes 10 | class ArkSIASSOShortLiveClientCertificateFormat(str, Enum): 11 | FILE = 'file' 12 | SINGLE_FILE = 'single_file' 13 | RAW = 'raw' 14 | BASE64 = 'base64' 15 | 16 | 17 | class ArkSIASSOGetShortLivedClientCertificate(ArkModel): 18 | allow_caching: bool = Field(description='Allow short lived token caching', default=False) 19 | folder: Optional[str] = Field(default=None, description='Output folder to write the key / certificate to. Required if format is File') 20 | output_format: ArkSIASSOShortLiveClientCertificateFormat = Field( 21 | description='The output format of the key / ' 'certificate. i.e. File, Raw, Base64', 22 | default=ArkSIASSOShortLiveClientCertificateFormat.FILE, 23 | ) 24 | service: Literal['DPA-DB', 'DPA-K8S'] = Field(description='Which service to generate the short lived certificate for') 25 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/sso/ark_sia_sso_get_short_lived_oracle_wallet.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkSIASSOShortLivedOracleWalletType(str, Enum): 9 | PEM = 'PEM' 10 | SSO = 'SSO' 11 | 12 | 13 | class ArkSIASSOGetShortLivedOracleWallet(ArkModel): 14 | allow_caching: bool = Field(description='Allow short lived token caching', default=False) 15 | unzip_wallet: bool = Field(description='Whether to save zipped or not', default=True) 16 | folder: str = Field(description='Output folder to write the wallet to') 17 | wallet_type: ArkSIASSOShortLivedOracleWalletType = Field( 18 | description='Type of wallet to generate, if PEM, no zip will be generated, only an ewallet.pem file', 19 | default=ArkSIASSOShortLivedOracleWalletType.SSO, 20 | ) 21 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/sso/ark_sia_sso_get_short_lived_password.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkSIASSOGetShortLivedPassword(ArkModel): 7 | allow_caching: bool = Field(description='Allow short lived token caching', default=False) 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/sso/ark_sia_sso_get_short_lived_rdp_file.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkSIASSOGetShortLivedRDPFile(ArkModel): 9 | allow_caching: bool = Field(description='Allow short lived token caching', default=True) 10 | folder: str = Field(description='Output folder to write the rdp file to') 11 | target_address: str = Field(description='Address of the Windows target machine') 12 | target_domain: Optional[str] = Field(default=None, description='Domain of the Windows target machine') 13 | target_user: Optional[str] = Field(default=None, description='Name of the target user to connect with') 14 | elevated_privileges: Optional[bool] = Field(default=None, description='whether to run session with elevated privileges') 15 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/sso/ark_sia_sso_get_ssh_key.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkSIASSOGetSSHKey(ArkModel): 9 | folder: Optional[str] = Field(default=None, description='Output folder to save the key to') 10 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/sso/ark_sia_sso_get_token_info.py: -------------------------------------------------------------------------------- 1 | from typing import Literal 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | from ark_sdk_python.models.services.sia.sso.ark_sia_sso_token_type import ArkSIASSOTokenType 7 | 8 | 9 | class ArkSIASSOGetTokenInfo(ArkModel): 10 | token_type: ArkSIASSOTokenType = Field(description='Which token type to get the info for') 11 | service: Literal['DPA-DB', 'DPA-K8S', 'DPA-RDP'] = Field(description='Which service to get the token info for') 12 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/sso/ark_sia_sso_token_info.py: -------------------------------------------------------------------------------- 1 | from typing import Any, Dict 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | 7 | 8 | class ArkSIASSOTokenInfo(ArkModel): 9 | metadata: Dict[str, Any] = Field(description='Token metadata') 10 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/sso/ark_sia_sso_token_type.py: -------------------------------------------------------------------------------- 1 | # pylint: disable=invalid-name 2 | from enum import Enum 3 | 4 | 5 | class ArkSIASSOTokenType(str, Enum): 6 | Password = 'password' 7 | ClientCertificate = 'client_certificate' 8 | OracleWallet = 'oracle_wallet' 9 | RDPFile = 'rdp_file' 10 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/workspaces/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyberark/ark-sdk-python/3be12c3f2d3a2d0407025028943e584b6edc5996/ark_sdk_python/models/services/sia/workspaces/__init__.py -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/workspaces/db/ark_sia_db_database_target_service.py: -------------------------------------------------------------------------------- 1 | from typing import Optional, Union 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models.ark_model import ArkModel 6 | 7 | 8 | class ArkSIADBDatabaseTargetService(ArkModel): 9 | service_name: str = Field(description='Name of the service within the database') 10 | port: Optional[int] = Field( 11 | default=None, description='Port of the database service, if not given, the default one will be used', ge=1, le=65535 12 | ) 13 | secret_id: Optional[str] = Field( 14 | default=None, description='Secret identifier stored in the secret service related to this database service' 15 | ) 16 | 17 | 18 | ArkSIADBDatabaseTargetServiceTypes = Union[str, ArkSIADBDatabaseTargetService] 19 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/workspaces/db/ark_sia_db_delete_database.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field, model_validator 4 | 5 | from ark_sdk_python.models.ark_model import ArkCamelizedModel 6 | 7 | 8 | class ArkSIADBDeleteDatabase(ArkCamelizedModel): 9 | id: Optional[int] = Field(default=None, description='Database id to delete') 10 | name: Optional[str] = Field(default=None, description='Database name to delete') 11 | 12 | # pylint: disable=no-self-use,no-self-argument 13 | @model_validator(mode='before') 14 | @classmethod 15 | def validate_either(cls, values): 16 | if 'id' not in values and 'name' not in values: 17 | raise ValueError('Either id or name needs to be provided') 18 | return values 19 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/workspaces/db/ark_sia_db_get_database.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field, model_validator 4 | 5 | from ark_sdk_python.models.ark_model import ArkCamelizedModel 6 | 7 | 8 | class ArkSIADBGetDatabase(ArkCamelizedModel): 9 | id: Optional[int] = Field(default=None, description='Database id to get') 10 | name: Optional[str] = Field(default=None, description='Database name to get') 11 | 12 | # pylint: disable=no-self-use,no-self-argument 13 | @model_validator(mode='before') 14 | @classmethod 15 | def validate_either(cls, values): 16 | if 'id' not in values and 'name' not in values: 17 | raise ValueError('Either id or name needs to be provided') 18 | return values 19 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/workspaces/db/ark_sia_db_platform_type_serializer.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models import ArkException 2 | from ark_sdk_python.models.common import ArkWorkspaceType 3 | 4 | 5 | def serialize_db_platform_type(ws_type: ArkWorkspaceType): 6 | if isinstance(ws_type, str): 7 | ws_type = ArkWorkspaceType(ws_type) 8 | if ws_type == ArkWorkspaceType.AWS: 9 | return 'AWS' 10 | elif ws_type == ArkWorkspaceType.AZURE: 11 | return 'AZURE' 12 | elif ws_type == ArkWorkspaceType.GCP: 13 | return 'GCP' 14 | elif ws_type == ArkWorkspaceType.ONPREM: 15 | return 'ON-PREMISE' 16 | elif ws_type == ArkWorkspaceType.ATLAS: 17 | return 'ATLAS' 18 | raise ArkException('Invalid DB Platform Type') 19 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/workspaces/db/ark_sia_db_tag.py: -------------------------------------------------------------------------------- 1 | from typing import Sequence 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models.ark_model import ArkCamelizedModel 6 | 7 | 8 | class ArkSIADBTag(ArkCamelizedModel): 9 | key: str = Field(description='Key of the tag, for example environment') 10 | value: str = Field(description='Value of the tag, for example production') 11 | 12 | 13 | class ArkSIADBTagList(ArkCamelizedModel): 14 | tags: Sequence[ArkSIADBTag] = Field(description='List of tags') 15 | count: int = Field(description='The amount of tags listed') 16 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/workspaces/db/ark_sia_db_warning.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | 4 | class ArkSIADBWarning(str, Enum): 5 | NoCertificates = 'no_certificates' 6 | NoSecrets = 'no_secrets' 7 | AnyError = 'any_error' 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/workspaces/targetsets/ark_sia_add_target_set.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | from ark_sdk_python.models.services.sia.secrets.vm import ArkSIAVMSecretType 7 | from ark_sdk_python.models.services.sia.workspaces.targetsets.ark_sia_target_set_type import ArkSIATargetSetType 8 | 9 | 10 | class ArkSIAAddTargetSet(ArkModel): 11 | name: str = Field(description='Name of the target set') 12 | description: Optional[str] = Field(default=None, description='Description about the target set') 13 | provision_format: Optional[str] = Field(default=None, description='Provisioning format of the target set') 14 | enable_certificate_validation: Optional[bool] = Field( 15 | default=None, description='Whether to enable certificate validation for the target set' 16 | ) 17 | secret_type: Optional[ArkSIAVMSecretType] = Field(default=None, description='Secret type of the target set') 18 | secret_id: Optional[str] = Field(default=None, description='Secret id of the target set') 19 | type: ArkSIATargetSetType = Field(description='Type of the target set', default=ArkSIATargetSetType.DOMAIN) 20 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/workspaces/targetsets/ark_sia_bulk_add_target_sets.py: -------------------------------------------------------------------------------- 1 | from typing import List 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | from ark_sdk_python.models.services.sia.workspaces.targetsets.ark_sia_add_target_set import ArkSIAAddTargetSet 7 | 8 | 9 | class ArkSIABulkAddTargetSetsItem(ArkModel): 10 | strong_account_id: str = Field(description='Secret ID of the strong account related to this set') 11 | target_sets: List[ArkSIAAddTargetSet] = Field(description='The target sets to associate with the strong account') 12 | 13 | 14 | class ArkSIABulkAddTargetSets(ArkModel): 15 | target_sets_mapping: List[ArkSIABulkAddTargetSetsItem] = Field(description='Bulk of target set mappings to add') 16 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/workspaces/targetsets/ark_sia_bulk_delete_target_sets.py: -------------------------------------------------------------------------------- 1 | from typing import List 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models.ark_model import ArkModel 6 | 7 | 8 | class ArkSIABulkDeleteTargetSets(ArkModel): 9 | target_sets: List[str] = Field(description='List of target sets names to delete') 10 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/workspaces/targetsets/ark_sia_bulk_target_set_response.py: -------------------------------------------------------------------------------- 1 | from typing import List, Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models.ark_model import ArkModel 6 | 7 | 8 | class ArkSIABulkTargetSetItemResult(ArkModel): 9 | strong_account_id: Optional[str] = Field(default=None, description='The strong account related to the bulk add') 10 | target_set_name: str = Field(description='The target set item name') 11 | success: bool = Field(description='Whether the operation was successful or not') 12 | 13 | 14 | class ArkSIABulkTargetSetResponse(ArkModel): 15 | results: List[ArkSIABulkTargetSetItemResult] = Field(description='List of results for the target set bulk operation') 16 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/workspaces/targetsets/ark_sia_delete_target_set.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkSIADeleteTargetSet(ArkModel): 7 | name: str = Field(description='Name of the target set to delete') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/workspaces/targetsets/ark_sia_get_target_set.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkSIAGetTargetSet(ArkModel): 7 | name: str = Field(description='Name of the target set to retrieve') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/workspaces/targetsets/ark_sia_target_set.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | from ark_sdk_python.models.services.sia.secrets.vm import ArkSIAVMSecretType 7 | from ark_sdk_python.models.services.sia.workspaces.targetsets.ark_sia_target_set_type import ArkSIATargetSetType 8 | 9 | 10 | class ArkSIATargetSet(ArkModel): 11 | name: str = Field(description='The actual target set name / url') 12 | description: Optional[str] = Field(default=None, description='Description about the target set') 13 | provision_format: Optional[str] = Field(default=None, description='Provisioning format for the target set ephemeral users') 14 | enable_certificate_validation: Optional[bool] = Field( 15 | default=None, description='Whether to enable certificate validation for the target set' 16 | ) 17 | secret_type: Optional[ArkSIAVMSecretType] = Field(default=None, description='Secret type of the target set') 18 | secret_id: Optional[str] = Field(default=None, description='Secret id of the target set') 19 | type: ArkSIATargetSetType = Field(description='Type of the target set', default=ArkSIATargetSetType.DOMAIN) 20 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/workspaces/targetsets/ark_sia_target_set_type.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | 4 | class ArkSIATargetSetType(str, Enum): 5 | DOMAIN = 'Domain' 6 | SUFFIX = 'Suffix' 7 | TARGET = 'Target' 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/workspaces/targetsets/ark_sia_target_sets_filter.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | from ark_sdk_python.models.services.sia.secrets.vm.ark_sia_vm_secret_type import ArkSIAVMSecretType 7 | 8 | 9 | class ArkSIATargetSetsFilter(ArkModel): 10 | name: Optional[str] = Field(default=None, description='Name filter wildcard') 11 | secret_type: Optional[ArkSIAVMSecretType] = Field(default=None, description='Secret type filter') 12 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/workspaces/targetsets/ark_sia_target_sets_stats.py: -------------------------------------------------------------------------------- 1 | from typing import Dict 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | from ark_sdk_python.models.services.sia.secrets.vm import ArkSIAVMSecretType 7 | 8 | 9 | class ArkSIATargetSetsStats(ArkModel): 10 | target_sets_count: int = Field(description='Total target sets count') 11 | target_sets_count_per_secret_type: Dict[ArkSIAVMSecretType, int] = Field(description='Target sets count per secret type') 12 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sia/workspaces/targetsets/ark_sia_update_target_set.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from pydantic import Field 4 | 5 | from ark_sdk_python.models import ArkModel 6 | from ark_sdk_python.models.services.sia.secrets.vm import ArkSIAVMSecretType 7 | from ark_sdk_python.models.services.sia.workspaces.targetsets.ark_sia_target_set_type import ArkSIATargetSetType 8 | 9 | 10 | class ArkSIAUpdateTargetSet(ArkModel): 11 | name: str = Field(description='Name of the target set to update') 12 | new_name: Optional[str] = Field(default=None, description='New name for the target set') 13 | description: Optional[str] = Field(default=None, description='Updated description of the target set') 14 | provision_format: Optional[str] = Field(default=None, description='New provisioning format for the target set') 15 | enable_certificate_validation: Optional[bool] = Field(default=None, description='Updated enabling certificate validation') 16 | secret_type: Optional[ArkSIAVMSecretType] = Field(ddefault=None, escription='Secret type to update') 17 | secret_id: Optional[str] = Field(default=None, description='Secret id to update') 18 | type: ArkSIATargetSetType = Field(description='Type of the target set', default=ArkSIATargetSetType.DOMAIN) 19 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sm/ark_sm_get_session.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkSMGetSession(ArkModel): 7 | session_id: str = Field(description='Session id to get') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sm/ark_sm_get_session_activities.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkModel 4 | 5 | 6 | class ArkSMGetSessionActivities(ArkModel): 7 | session_id: str = Field(description='Session id to get the activities for') 8 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sm/ark_sm_protocol_type_serializer.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models import ArkException 2 | from ark_sdk_python.models.common import ArkProtocolType 3 | 4 | 5 | def serialize_sm_protocol_type(protocol_type: ArkProtocolType) -> str: 6 | if isinstance(protocol_type, str): 7 | protocol_type = ArkProtocolType(protocol_type) 8 | if protocol_type == ArkProtocolType.SSH: 9 | return 'SSH' 10 | elif protocol_type == ArkProtocolType.RDP: 11 | return 'RDP' 12 | elif protocol_type == ArkProtocolType.CLI: 13 | return 'CLI' 14 | elif protocol_type == ArkProtocolType.CONSOLE: 15 | return 'Console' 16 | elif protocol_type == ArkProtocolType.HTTPS: 17 | return 'HTTPS' 18 | elif protocol_type == ArkProtocolType.K8S: 19 | return 'K8S' 20 | elif protocol_type == ArkProtocolType.DB: 21 | return 'Database' 22 | raise ArkException('Invalid SM Protocol Type') 23 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sm/ark_sm_session_activity_filter.py: -------------------------------------------------------------------------------- 1 | from pydantic import Field 2 | 3 | from ark_sdk_python.models import ArkCamelizedModel 4 | 5 | 6 | class ArkSMSessionActivitiesFilter(ArkCamelizedModel): 7 | session_id: str = Field(description='Session id to get') 8 | command_contains: str = Field(description='String which the command contains') 9 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sm/ark_sm_sessions_filter.py: -------------------------------------------------------------------------------- 1 | from pydantic import ConfigDict, Field, StringConstraints 2 | from typing_extensions import Annotated 3 | 4 | from ark_sdk_python.models import ArkCamelizedModel 5 | 6 | 7 | class ArkSMSessionsFilter(ArkCamelizedModel): 8 | search: Annotated[str, StringConstraints(max_length=4096)] = Field( 9 | description='Free text query to search sessions by. For example: "startTime GE 2023-11-18T06:53:30Z AND status IN Failed,Ended AND endReason STARTSWITH Err008"' 10 | ) 11 | model_config = ConfigDict( 12 | json_schema_extra={ 13 | 'examples': [ 14 | { 15 | 'search': 'duration LE 01:00:00', 16 | }, 17 | { 18 | 'search': 'startTime GE 2023-11-18T06:53:30Z', 19 | }, 20 | { 21 | 'search': 'status IN Failed,Ended AND endReason STARTSWITH Err008', 22 | }, 23 | { 24 | 'search': 'command STARTSWITH ls', 25 | }, 26 | { 27 | 'search': 'protocol IN SSH,RDP', 28 | }, 29 | ] 30 | } 31 | ) 32 | -------------------------------------------------------------------------------- /ark_sdk_python/models/services/sm/ark_sm_workspace_type_serializer.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.models import ArkException 2 | from ark_sdk_python.models.common import ArkWorkspaceType 3 | 4 | 5 | def serialize_sm_workspace_type(ws_type: ArkWorkspaceType): 6 | if isinstance(ws_type, str): 7 | ws_type = ArkWorkspaceType(ws_type) 8 | if ws_type == ArkWorkspaceType.AWS: 9 | return 'AWS' 10 | elif ws_type == ArkWorkspaceType.AZURE: 11 | return 'Azure' 12 | elif ws_type == ArkWorkspaceType.ONPREM: 13 | return 'OnPrem' 14 | elif ws_type == ArkWorkspaceType.GCP: 15 | return 'GCP' 16 | elif ws_type == ArkWorkspaceType.UNKNOWN: 17 | return 'Unknown' 18 | raise ArkException('Invalid SM Workspace Type') 19 | -------------------------------------------------------------------------------- /ark_sdk_python/services/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /ark_sdk_python/services/cmgr/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.services.cmgr.ark_cmgr_service import ArkCmgrService 2 | 3 | __all__ = ['ArkCmgrService'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/services/identity/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.services.identity.ark_identity_api import ArkIdentityAPI 2 | 3 | __all__ = ['ArkIdentityAPI'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/services/identity/common/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.services.identity.common.ark_identity_base_service import ArkIdentityBaseService 2 | 3 | __all__ = ['ArkIdentityBaseService'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/services/identity/connectors/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.services.identity.connectors.ark_identity_connectors_service import ArkIdentityConnectorsService 2 | 3 | __all__ = ['ArkIdentityConnectorsService'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/services/identity/directories/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.services.identity.directories.ark_identity_directories_service import ArkIdentityDirectoriesService 2 | 3 | __all__ = ['ArkIdentityDirectoriesService'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/services/identity/policies/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.services.identity.policies.ark_identity_policies_service import ArkIdentityPoliciesService 2 | 3 | __all__ = ['ArkIdentityPoliciesService'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/services/identity/roles/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.services.identity.roles.ark_identity_roles_service import ArkIdentityRolesService 2 | 3 | __all__ = ['ArkIdentityRolesService'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/services/identity/users/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.services.identity.users.ark_identity_users_service import ArkIdentityUsersService 2 | 3 | __all__ = ['ArkIdentityUsersService'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/services/pcloud/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyberark/ark-sdk-python/3be12c3f2d3a2d0407025028943e584b6edc5996/ark_sdk_python/services/pcloud/__init__.py -------------------------------------------------------------------------------- /ark_sdk_python/services/pcloud/accounts/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.services.pcloud.accounts.ark_pcloud_accounts_service import ArkPCloudAccountsService 2 | 3 | __all__ = ['ArkPCloudAccountsService'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/services/pcloud/applications/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.services.pcloud.applications.ark_pcloud_applications_service import ArkPCloudApplicationsService 2 | 3 | __all__ = ['ArkPCloudApplicationsService'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/services/pcloud/common/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.services.pcloud.common.ark_pcloud_base_service import ArkPCloudBaseService 2 | 3 | __all__ = ['ArkPCloudBaseService'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/services/pcloud/platforms/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.services.pcloud.platforms.ark_pcloud_platforms_service import ArkPCloudPlatformsService 2 | 3 | __all__ = ['ArkPCloudPlatformsService'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/services/pcloud/safes/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.services.pcloud.safes.ark_pcloud_safes_service import ArkPCloudSafesService 2 | 3 | __all__ = ['ArkPCloudSafesService'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/services/sia/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.services.sia.ark_sia_api import ArkSIAAPI 2 | 3 | __all__ = ['ArkSIAAPI'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/services/sia/access/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.services.sia.access.ark_sia_access_service import ArkSIAAccessService 2 | 3 | __all__ = ['ArkSIAAccessService'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/services/sia/certificates/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.services.sia.certificates.ark_sia_certificates_service import ArkSIACertificatesService 2 | 3 | __all__ = ["ArkSIACertificatesService"] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/services/sia/db/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.services.sia.db.ark_sia_db_service import ArkSIADBService 2 | 3 | __all__ = [ 4 | 'ArkSIADBService', 5 | ] 6 | -------------------------------------------------------------------------------- /ark_sdk_python/services/sia/k8s/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.services.sia.k8s.ark_sia_k8s_service import ArkSIAK8SService 2 | 3 | __all__ = ['ArkSIAK8SService'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/services/sia/policies/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyberark/ark-sdk-python/3be12c3f2d3a2d0407025028943e584b6edc5996/ark_sdk_python/services/sia/policies/__init__.py -------------------------------------------------------------------------------- /ark_sdk_python/services/sia/policies/db/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.services.sia.policies.db.ark_sia_db_policies_service import ArkSIADBPoliciesService 2 | 3 | __all__ = ['ArkSIADBPoliciesService'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/services/sia/policies/vm/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.services.sia.policies.vm.ark_sia_vm_policies_service import ArkSIAVMPoliciesService 2 | 3 | __all__ = ['ArkSIAVMPoliciesService'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/services/sia/secrets/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyberark/ark-sdk-python/3be12c3f2d3a2d0407025028943e584b6edc5996/ark_sdk_python/services/sia/secrets/__init__.py -------------------------------------------------------------------------------- /ark_sdk_python/services/sia/secrets/db/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.services.sia.secrets.db.ark_sia_db_secrets_service import ArkSIADBSecretsService 2 | 3 | __all__ = ['ArkSIADBSecretsService'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/services/sia/secrets/vm/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.services.sia.secrets.vm.ark_sia_vm_secrets_service import ArkSIAVMSecretsService 2 | 3 | __all__ = ['ArkSIAVMSecretsService'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/services/sia/sso/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.services.sia.sso.ark_sia_sso_service import ArkSIASSOService 2 | 3 | __all__ = [ 4 | 'ArkSIASSOService', 5 | ] 6 | -------------------------------------------------------------------------------- /ark_sdk_python/services/sia/workspaces/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyberark/ark-sdk-python/3be12c3f2d3a2d0407025028943e584b6edc5996/ark_sdk_python/services/sia/workspaces/__init__.py -------------------------------------------------------------------------------- /ark_sdk_python/services/sia/workspaces/db/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.services.sia.workspaces.db.ark_sia_db_workspace_service import ArkSIADBWorkspaceService 2 | 3 | __all__ = ['ArkSIADBWorkspaceService'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/services/sia/workspaces/targetsets/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.services.sia.workspaces.targetsets.ark_sia_target_sets_workspace_service import ArkSIATargetSetsWorkspaceService 2 | 3 | __all__ = ['ArkSIATargetSetsWorkspaceService'] 4 | -------------------------------------------------------------------------------- /ark_sdk_python/services/sm/__init__.py: -------------------------------------------------------------------------------- 1 | from ark_sdk_python.services.sm.ark_sm_service import ArkSMService 2 | 3 | __all__ = ['ArkSMService'] 4 | -------------------------------------------------------------------------------- /assets/ark_sdk_admin_tldr.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyberark/ark-sdk-python/3be12c3f2d3a2d0407025028943e584b6edc5996/assets/ark_sdk_admin_tldr.gif -------------------------------------------------------------------------------- /assets/ark_sdk_enduser_tldr.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyberark/ark-sdk-python/3be12c3f2d3a2d0407025028943e584b6edc5996/assets/ark_sdk_enduser_tldr.gif -------------------------------------------------------------------------------- /assets/sdk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyberark/ark-sdk-python/3be12c3f2d3a2d0407025028943e584b6edc5996/assets/sdk.png -------------------------------------------------------------------------------- /build.py: -------------------------------------------------------------------------------- 1 | from os import path 2 | import re 3 | 4 | 5 | if __name__ == "__main__": 6 | with open(path.join(path.abspath(path.dirname(__file__)), 'pyproject.toml'), 'r', encoding='utf-8') as f: 7 | data = f.read() 8 | version = re.findall('version = \".*\..*\..*\"', data)[0].split('version = ')[1].strip().replace('\"', '') 9 | with open(path.join(path.abspath(path.dirname(__file__)), 'ark_sdk_python', 'ark.py'), 'r+', 10 | encoding='utf-8') as f: 11 | ark_data = f.read() 12 | ark_data = re.sub('__version__ =.*', f'__version__ = \'{version}\'', ark_data) 13 | f.seek(0) 14 | f.truncate() 15 | f.write(ark_data) 16 | -------------------------------------------------------------------------------- /docs/howto/enduser_databases_workflow.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: End-user database workflow 3 | description: End-user Database Workflow 4 | --- 5 | 6 | # End-user database Workflow 7 | Here is an example workflow for connecting to a database: 8 | 9 | 1. Install Ark SDK: `pip3 install ark-sdk-python` 10 | 1. Create a profile: 11 | * Interactively: 12 | ```shell linenums="0" 13 | ark configure 14 | ``` 15 | * Silently: 16 | ```shell linenums="0" 17 | ark configure --silent --work-with-isp --isp-username myuser 18 | ``` 19 | 1. Log in to Ark: 20 | ```shell linenums="0" 21 | ark login --silent --isp-secret 22 | ``` 23 | 1. Get a short-lived SSO password for a database from the SIA service: 24 | ```shell linenums="0" 25 | ark exec sia sso short-lived-password 26 | ``` 27 | 1. One of these: 28 | * Log in directly to the database: 29 | ```shell linenums="0" 30 | psql "host=mytenant.postgres.cyberark.cloud user=user@cyberark.cloud.12345@postgres@mypostgres.fqdn.com" 31 | ``` 32 | * Log in to the database from Ark: 33 | ```shell linenums="0" 34 | ark exec sia db psql --target-username postgres --target-address mypostgres.fqdn.com 35 | ``` -------------------------------------------------------------------------------- /docs/howto/enduser_rdp_workflow.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: End-user rdp workflow 3 | description: End-user rdp Workflow 4 | --- 5 | 6 | # End-user rdp Workflow 7 | Here is an example workflow for connecting to a windows box using rdp: 8 | 9 | 1. Install Ark SDK: `pip3 install ark-sdk-python` 10 | 1. Create a profile: 11 | * Interactively: 12 | ```shell linenums="0" 13 | ark configure 14 | ``` 15 | * Silently: 16 | ```shell linenums="0" 17 | ark configure --silent --work-with-isp --isp-username myuser 18 | ``` 19 | 1. Log in to Ark: 20 | ```shell linenums="0" 21 | ark login --silent --isp-secret 22 | ``` 23 | 1. Get a short-lived SSO RDP file for a windows box from the SIA service: 24 | ```shell linenums="0" 25 | ark exec dpa sso short-lived-rdp-file -ta targetaddress -td targetdomain -tu targetuser 26 | ``` 27 | 1. Use the RDP file with mstsc or any other RDP client to connect 28 | -------------------------------------------------------------------------------- /docs/howto/enduser_ssh_workflow.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: End-user ssh workflow 3 | description: End-user ssh Workflow 4 | --- 5 | 6 | # End-user ssh Workflow 7 | Here is an example workflow for connecting to a linux box using ssh: 8 | 9 | 1. Install Ark SDK: `pip3 install ark-sdk-python` 10 | 1. Create a profile: 11 | * Interactively: 12 | ```shell linenums="0" 13 | ark configure 14 | ``` 15 | * Silently: 16 | ```shell linenums="0" 17 | ark configure --silent --work-with-isp --isp-username myuser 18 | ``` 19 | 1. Log in to Ark: 20 | ```shell linenums="0" 21 | ark login --silent --isp-secret 22 | ``` 23 | 1. Get a short-lived SSH private key for a linux box from the SIA service: 24 | ```shell linenums="0" 25 | ark exec sia sso short-lived-ssh-key 26 | ``` 27 | 1. Log in directly to the linux box: 28 | ```shell linenums="0" 29 | ssh -i ~/.ssh/sia_ssh_key.pem myuser@suffix@targetuser@targetaddress@sia_proxy 30 | ``` 31 | -------------------------------------------------------------------------------- /docs/howto/simple_commands_workflow.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Simple commands workflow 3 | description: Simple commands workflow 4 | --- 5 | 6 | # Simple commands workflow 7 | 8 | Here's an example of how to: 9 | 10 | 1. Configure a profile for logging in to a tenant 11 | 1. Log in to the tenant 12 | 1. Run a SIA action to configure a database secret and policy 13 | 14 | 15 | ## Configure profile and log in 16 | ```shell 17 | ark configure --work-with-isp --isp-username=username 18 | ark login -s --isp-secret=secret 19 | ``` 20 | 21 | ## Configure a database secret and policy 22 | ```shell 23 | ark exec sia secrets db add-secret -sn name -st username_password -u user -pa coolpassword 24 | ark exec sia workspaces db add-database -n somedb -pe postgres-sh -rwe myendpoint.domain.com 25 | ark exec sia policies db editor generate-policy 26 | ``` 27 | -------------------------------------------------------------------------------- /docs/howto/working_with_ark_cache.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Work with Ark cache 3 | description: Working With Ark Cache 4 | --- 5 | 6 | # Work with Ark cache 7 | 8 | Both the CLI and SDK cache login information in the local machine's keystore or, when a keystore does not exist, in an encrypted folder (located in `$HOME/.ark_cache`). The cached information is used to run commands until the authentication tokens expire or are otherwise invalided. 9 | 10 | You can set the cache folder with the `ARK_KEYRING_FOLDER` env variable. To force Ark SDK to work only with the filesystem cache, use the `ARK_BASIC_KEYRING` environment variable 11 | 12 | If you want to ignore the cache when logging in, use the `-f` flag: 13 | ``` bash linenums="0" 14 | ark login -f 15 | ``` 16 | 17 | Also, you can disable caching in the SDK: 18 | ``` py linenums="0" 19 | isp_auth = ArkISPAuth(cache_authentication=False) 20 | ``` 21 | 22 | To clear the cache, run `ark cache clear` or, when using an encrypted folder, remove the files from the `$HOME/.ark_cache` folder. 23 | -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Overview 3 | description: Ark SDK Homepage 4 | --- 5 | 6 | # Ark SDK 7 | 8 | ![Ark SDK Python](./media/sdk.png){: style="height:80%;width:70%"} 9 | 10 | The official Python SDK and CLI for CyberArk's Identity Security Platform Services. 11 | 12 | ## Motivation 13 | Ark SDK, an API first library, is used to automate different sets of operations in order to ease day to day development. Ark provides a CLI for general purpose automation as well as a Python SDK for code integration. 14 | 15 | 16 | ## TL;DR 17 | 18 | ### Enduser 19 | ![Ark SDK Enduser Usage](./media/ark_sdk_enduser_tldr.gif) 20 | 21 | ### Admin 22 | ![Ark SDK Admin Usage](./media/ark_sdk_admin_tldr.gif) 23 | 24 | 25 | ## License 26 | 27 | This project is licensed under Apache License 2.0 - see [`LICENSE`](./license.md) for more details 28 | 29 | Copyright (c) 2023 CyberArk Software Ltd. All rights reserved. 30 | -------------------------------------------------------------------------------- /docs/media/ark_sdk_admin_tldr.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyberark/ark-sdk-python/3be12c3f2d3a2d0407025028943e584b6edc5996/docs/media/ark_sdk_admin_tldr.gif -------------------------------------------------------------------------------- /docs/media/ark_sdk_design.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyberark/ark-sdk-python/3be12c3f2d3a2d0407025028943e584b6edc5996/docs/media/ark_sdk_design.png -------------------------------------------------------------------------------- /docs/media/ark_sdk_enduser_tldr.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyberark/ark-sdk-python/3be12c3f2d3a2d0407025028943e584b6edc5996/docs/media/ark_sdk_enduser_tldr.gif -------------------------------------------------------------------------------- /docs/media/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyberark/ark-sdk-python/3be12c3f2d3a2d0407025028943e584b6edc5996/docs/media/favicon.ico -------------------------------------------------------------------------------- /docs/media/sdk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyberark/ark-sdk-python/3be12c3f2d3a2d0407025028943e584b6edc5996/docs/media/sdk.png -------------------------------------------------------------------------------- /docs/overrides/main.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block outdated %} 4 | You're not viewing the latest version. 5 | 6 | Click here to go to latest. 7 | 8 | {% endblock %} -------------------------------------------------------------------------------- /docs/sdk/pagination.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Pagination 3 | description: Pagination 4 | --- 5 | 6 | # Pagination 7 | 8 | When a response returns many items or is paginated, the response contains an page iterator instead of all the items. This ensures fast response times and the ability to just retrieve a required subset of items. 9 | 10 | Responses that do return paginated results contain an item iterator. 11 | -------------------------------------------------------------------------------- /docs/stylesheets/extra.css: -------------------------------------------------------------------------------- 1 | .md-grid { 2 | max-width: 81vw 3 | } 4 | 5 | .highlight .hll { 6 | background-color: lavender 7 | 8 | [data-md-color-scheme="slate"] { 9 | background-color: rgb(69, 48, 164) 10 | } 11 | } 12 | 13 | .md-typeset table:not([class]) { 14 | font-size: 0.75rem 15 | } 16 | 17 | .md-typeset a { 18 | border-bottom: 0.1px dashed black 19 | } 20 | 21 | .md-typeset table:not([class]) { 22 | font-size: 0.75rem 23 | } 24 | 25 | .md-nav__link--active { 26 | font-weight: bold 27 | } 28 | 29 | .md-typeset .admonition, .md-typeset details { 30 | font-size: 0.70rem 31 | } 32 | 33 | [data-md-color-scheme="slate"] { 34 | --md-typeset-a-color: rgb(28, 152, 152) 35 | } 36 | 37 | .copyMe { 38 | cursor: pointer; 39 | border-bottom: 0.1px dashed black; 40 | } 41 | 42 | p > code, 43 | li > code { 44 | font-weight: bold 45 | } -------------------------------------------------------------------------------- /scripts/wheel_editor.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -e 3 | 4 | ORIGINAL_PACKAGE=$1 5 | START_DIR=$(pwd) 6 | TEMP_DIR=$(mktemp -d) 7 | WORKING_WHEEL=$TEMP_DIR/package.whl 8 | FINAL_PACKAGE=$(echo $ORIGINAL_PACKAGE | rev | cut -d"-" -f4- | rev)-py3-none-any.whl 9 | 10 | if [[ ! -f "$ORIGINAL_PACKAGE" ]]; then 11 | echo "File not found at path $1" 12 | exit 1 13 | fi 14 | 15 | cp $ORIGINAL_PACKAGE $WORKING_WHEEL 16 | 17 | cd $TEMP_DIR 18 | 19 | mkdir unzipped 20 | unzip $WORKING_WHEEL -d unzipped 21 | 22 | WHEEL_FILE=$(find unzipped -name "WHEEL") 23 | 24 | grep -v '^Root-Is-Purelib' $WHEEL_FILE > $WHEEL_FILE.tmp 25 | grep -v '^Tag' $WHEEL_FILE.tmp > $WHEEL_FILE 26 | rm $WHEEL_FILE.tmp 27 | 28 | echo "Root-Is-Purelib: true" >> $WHEEL_FILE 29 | echo "Tag: py3-none-any" >> $WHEEL_FILE 30 | 31 | cat $WHEEL_FILE 32 | 33 | cd unzipped 34 | zip -r ../universal_package.whl * 35 | cd .. 36 | 37 | cd $START_DIR 38 | 39 | cp $TEMP_DIR/universal_package.whl $FINAL_PACKAGE 40 | rm $ORIGINAL_PACKAGE 41 | -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyberark/ark-sdk-python/3be12c3f2d3a2d0407025028943e584b6edc5996/tests/__init__.py -------------------------------------------------------------------------------- /tests/unit/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyberark/ark-sdk-python/3be12c3f2d3a2d0407025028943e584b6edc5996/tests/unit/__init__.py -------------------------------------------------------------------------------- /tests/unit/auth/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyberark/ark-sdk-python/3be12c3f2d3a2d0407025028943e584b6edc5996/tests/unit/auth/__init__.py -------------------------------------------------------------------------------- /tests/unit/helpers/__init__.py: -------------------------------------------------------------------------------- 1 | from tests.unit.helpers.identity_responses import ( 2 | ADVANCE_AUTH_SUCCESS_RESPONSE, 3 | CYBR_TOKEN_SUCCESS_RESPONSE, 4 | GET_APPS_RESPONSE, 5 | HANDLE_APP_KEY_RESPONSE, 6 | OAUTH_AUTHORIZE_SUCCESS_RESPONSE, 7 | OAUTH_TOKEN_SUCCESS_RESPONSE, 8 | SAML_REDIRECT_RESPONSE, 9 | SAML_RESP_LOC_RESPONSE, 10 | SAML_RESP_NON_LOC_RESPONSE, 11 | SAML_RESP_SUCCESS_RESPONSE, 12 | SAML_SSO_COMPLETE_SUCESS_RESPONSE, 13 | SAML_SUCCESS_RESPONSE, 14 | START_AUTH_SUCCESS_RESPONSE, 15 | MockResponse, 16 | ) 17 | from tests.unit.helpers.profile_generator import generate_auth_profile_for, generate_profile_for 18 | 19 | __all__ = [ 20 | 'ADVANCE_AUTH_SUCCESS_RESPONSE', 21 | 'CYBR_TOKEN_SUCCESS_RESPONSE', 22 | 'OAUTH_AUTHORIZE_SUCCESS_RESPONSE', 23 | 'OAUTH_TOKEN_SUCCESS_RESPONSE', 24 | 'START_AUTH_SUCCESS_RESPONSE', 25 | 'SAML_RESP_LOC_RESPONSE', 26 | 'SAML_RESP_NON_LOC_RESPONSE', 27 | 'SAML_SUCCESS_RESPONSE', 28 | 'GET_APPS_RESPONSE', 29 | 'SAML_REDIRECT_RESPONSE', 30 | 'SAML_RESP_SUCCESS_RESPONSE', 31 | 'HANDLE_APP_KEY_RESPONSE', 32 | 'SAML_SSO_COMPLETE_SUCESS_RESPONSE', 33 | 'MockResponse', 34 | 'generate_auth_profile_for', 35 | 'generate_profile_for', 36 | ] 37 | -------------------------------------------------------------------------------- /tests/unit/helpers/profile_generator.py: -------------------------------------------------------------------------------- 1 | from typing import Dict, Optional 2 | 3 | from ark_sdk_python.models.ark_profile import ArkProfile 4 | from ark_sdk_python.models.auth.ark_auth_method import ArkAuthMethod, ArkAuthMethodSettingsMap 5 | from ark_sdk_python.models.auth.ark_auth_profile import ArkAuthProfile 6 | 7 | 8 | def generate_profile_for(auth_name: str, auth_method: ArkAuthMethod, settings: Optional[Dict] = None) -> ArkProfile: 9 | return ArkProfile(auth_profiles={auth_name: generate_auth_profile_for(auth_method, settings)}) 10 | 11 | 12 | def generate_auth_profile_for(auth_method: ArkAuthMethod, settings: Optional[Dict] = None) -> ArkAuthProfile: 13 | settings = settings or {} 14 | return ArkAuthProfile( 15 | username='user@user.com', auth_method=auth_method, auth_method_settings=ArkAuthMethodSettingsMap[auth_method](**settings) 16 | ) 17 | --------------------------------------------------------------------------------