ethyca-fides 2.69.1rc0__py2.py3-none-any.whl → 2.76.0rc2__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ethyca_fides-2.69.1rc0.dist-info → ethyca_fides-2.76.0rc2.dist-info}/METADATA +9 -6
- {ethyca_fides-2.69.1rc0.dist-info → ethyca_fides-2.76.0rc2.dist-info}/RECORD +488 -361
- fides/_version.py +3 -3
- fides/api/alembic/alembic.ini +5 -1
- fides/api/alembic/migrations/env.py +7 -1
- fides/api/alembic/migrations/versions/0eef0016cf06_adding_oauth2_config_for_.py +69 -0
- fides/api/alembic/migrations/versions/303287c70600_migrate_resource_type_from_enum_to_.py +99 -0
- fides/api/alembic/migrations/versions/30369bb8ae01_add_webmonitorgroupjob_model.py +67 -0
- fides/api/alembic/migrations/versions/3efe14d4469a_adds_new_experience_configs_for_vendor_.py +79 -0
- fides/api/alembic/migrations/versions/4bfbeff34611_add_polling_status.py +68 -0
- fides/api/alembic/migrations/versions/4d8c0fcc5771_adding_default_system_groups.py +78 -0
- fides/api/alembic/migrations/versions/5fa78b1f324d_add_event_audit_table.py +82 -0
- fides/api/alembic/migrations/versions/65a1bc82ae09_adds_experience_config_for_delete_.py +53 -0
- fides/api/alembic/migrations/versions/67d0e389b003_update_consentstatus_enum.py +47 -0
- fides/api/alembic/migrations/versions/795f46f656c0_migrate_field_type_from_enum_to_string.py +61 -0
- fides/api/alembic/migrations/versions/7db29f9cd77b_create_new_sub_request_table.py +95 -0
- fides/api/alembic/migrations/versions/918aefc950c9_create_digest_conditional_dependencies.py +125 -0
- fides/api/alembic/migrations/versions/9caf76161e55_make_user_assigned_data_uses_nullable_.py +64 -0
- fides/api/alembic/migrations/versions/9e0dcbf67b9f_add_digest_config.py +84 -0
- fides/api/alembic/migrations/versions/a55e12c2c2df_add_tagging_instructions_to_data_.py +29 -0
- fides/api/alembic/migrations/versions/a8e0c016afd_add_classification_benchmark_table.py +126 -0
- fides/api/alembic/migrations/versions/b97e92b038d2_add_digest_execution_model.py +117 -0
- fides/api/alembic/migrations/versions/b9bfa12c167b_add_not_applicable_to_asset_consentstatus.py +46 -0
- fides/api/alembic/migrations/versions/c09e76282dd1_add_privacy_request_duplication_cols.py +64 -0
- fides/api/alembic/migrations/versions/cd8649be3a2b_add_classifications_and_user_assigned_.py +74 -0
- fides/api/alembic/migrations/versions/e2cda8d6abc3_add_dismissed_in_activity_view_to_.py +29 -0
- fides/api/alembic/migrations/versions/f108fa05c579_adds_optional_duration_field_to_assets.py +28 -0
- fides/api/alembic/migrations/versions/f36ce1bde293_add_system_groups.py +132 -0
- fides/api/alembic/migrations/versions/fd7571bef683_adds_new_fields_to_messagingconfig_for_.py +31 -0
- fides/api/alembic/migrations/versions/xx_2025_10_17_1603_5093e92e2a5a_add_consent_data_v3_to_the_database.py +72 -0
- fides/api/alembic/migrations/versions/xx_2025_10_27_1834_67f0f2f4748e_adding_identity_definition_model.py +45 -0
- fides/api/alembic/migrations/versions/xx_2025_10_29_1659_80d28dea3b6b_added_duplicate_group_table.py +79 -0
- fides/api/alembic/migrations/versions/xx_2025_11_05_0200_f1a2b3c4d5e6_create_staged_resource_error_table.py +82 -0
- fides/api/alembic/migrations/versions/xx_2025_11_07_1709_56fe6fad2d89_add_notice_display_order.py +47 -0
- fides/api/alembic/migrations/versions/xx_2025_11_10_1200_a1b2c3d4e5f6_add_test_datastore_to_connectiontype.py +53 -0
- fides/api/alembic/migrations/versions/xx_2025_11_11_1317_7d82c8fc4c34_store_saas_template_datasets.py +68 -0
- fides/api/alembic/migrations/versions/xx_2025_11_12_1430_b2c3d4e5f6a7_add_default_identity_definitions.py +81 -0
- fides/api/alembic/migrations/versions/xx_2025_11_25_1854_3ff6449c099e_add_index_on_providedidentity_privacy_.py +50 -0
- fides/api/api/v1/api.py +2 -0
- fides/api/api/v1/endpoints/admin.py +39 -0
- fides/api/api/v1/endpoints/connection_endpoints.py +191 -47
- fides/api/api/v1/endpoints/connector_template_endpoints.py +167 -0
- fides/api/api/v1/endpoints/generic_overrides.py +90 -15
- fides/api/api/v1/endpoints/messaging_endpoints.py +164 -34
- fides/api/api/v1/endpoints/pre_approval_webhook_endpoints.py +5 -5
- fides/api/api/v1/endpoints/privacy_request_endpoints.py +231 -46
- fides/api/api/v1/endpoints/saas_config_endpoints.py +63 -92
- fides/api/api/v1/endpoints/storage_endpoints.py +5 -1
- fides/api/api/v1/endpoints/system.py +157 -100
- fides/api/api/v1/endpoints/user_endpoints.py +17 -4
- fides/api/app_setup.py +1 -3
- fides/api/common_exceptions.py +8 -0
- fides/api/db/base.py +8 -0
- fides/api/db/crud.py +30 -2
- fides/api/db/database.py +261 -4
- fides/api/db/safe_crud.py +377 -0
- fides/api/db/seed.py +35 -1
- fides/api/email_templates/get_email_template.py +3 -0
- fides/api/email_templates/template_names.py +1 -0
- fides/api/email_templates/templates/external_user_welcome.html +9 -5
- fides/api/email_templates/templates/manual_task_digest.html +316 -0
- fides/api/main.py +2 -0
- fides/api/migrations/post_upgrade_index_creation.py +20 -0
- fides/api/models/asset.py +17 -1
- fides/api/models/attachment.py +1 -0
- fides/api/models/conditional_dependency/__init__.py +0 -0
- fides/api/models/conditional_dependency/conditional_dependency_base.py +311 -0
- fides/api/models/connection_oauth_credentials.py +57 -0
- fides/api/models/connectionconfig.py +11 -1
- fides/api/models/detection_discovery/__init__.py +4 -0
- fides/api/models/detection_discovery/classification_benchmark.py +140 -0
- fides/api/models/detection_discovery/core.py +78 -3
- fides/api/models/detection_discovery/monitor_task.py +3 -1
- fides/api/models/detection_discovery/staged_resource_error.py +25 -0
- fides/api/models/detection_discovery/web_monitor.py +61 -0
- fides/api/models/digest/__init__.py +16 -0
- fides/api/models/digest/conditional_dependencies.py +275 -0
- fides/api/models/digest/digest_config.py +110 -0
- fides/api/models/digest/digest_execution.py +142 -0
- fides/api/models/event_audit.py +85 -0
- fides/api/models/experience_notices.py +6 -1
- fides/api/models/fides_user.py +9 -0
- fides/api/models/identity_definition.py +66 -0
- fides/api/models/location_regulation_selections.py +22 -0
- fides/api/models/manual_task/conditional_dependency.py +29 -87
- fides/api/models/manual_webhook.py +17 -6
- fides/api/models/messaging.py +30 -10
- fides/api/models/messaging_template.py +14 -0
- fides/api/models/policy.py +27 -0
- fides/api/models/privacy_experience.py +41 -0
- fides/api/models/privacy_notice.py +196 -13
- fides/api/models/privacy_preference.py +2 -0
- fides/api/models/privacy_request/duplicate_group.py +84 -0
- fides/api/models/privacy_request/privacy_request.py +154 -8
- fides/api/models/privacy_request/provided_identity.py +22 -1
- fides/api/models/privacy_request/request_task.py +98 -1
- fides/api/models/privacy_request/webhook.py +3 -1
- fides/api/models/saas_template_dataset.py +63 -0
- fides/api/models/sql_models.py +161 -7
- fides/api/models/system_group.py +85 -0
- fides/api/models/taxonomy.py +91 -9
- fides/api/models/v3/__init__.py +0 -0
- fides/api/models/v3/privacy_preferences.py +85 -0
- fides/api/models/worker_task.py +8 -0
- fides/api/oauth/roles.py +4 -0
- fides/api/schemas/application_config.py +32 -1
- fides/api/schemas/connection_configuration/connection_config.py +1 -30
- fides/api/schemas/connection_configuration/connection_oauth_config.py +42 -0
- fides/api/schemas/connection_configuration/connection_secrets_mongodb.py +15 -3
- fides/api/schemas/connection_configuration/connection_secrets_mssql.py +5 -0
- fides/api/schemas/messaging/messaging.py +49 -66
- fides/api/schemas/messaging/messaging_secrets_docs_only.py +1 -1
- fides/api/schemas/messaging/shared_schemas.py +102 -0
- fides/api/schemas/oauth.py +2 -1
- fides/api/schemas/privacy_center_config.py +29 -5
- fides/api/schemas/privacy_request.py +44 -7
- fides/api/schemas/saas/async_polling_configuration.py +81 -0
- fides/api/schemas/saas/connector_template.py +14 -0
- fides/api/schemas/saas/saas_config.py +12 -20
- fides/api/schemas/system.py +8 -0
- fides/api/schemas/taxonomy_extensions.py +8 -0
- fides/api/schemas/user.py +2 -2
- fides/api/service/async_dsr/handlers/__init__.py +0 -0
- fides/api/service/async_dsr/handlers/polling_attachment_handler.py +155 -0
- fides/api/service/async_dsr/handlers/polling_request_handler.py +88 -0
- fides/api/service/async_dsr/handlers/polling_response_handler.py +261 -0
- fides/api/service/async_dsr/handlers/polling_sub_request_handler.py +123 -0
- fides/api/service/async_dsr/strategies/__init__.py +0 -0
- fides/api/service/async_dsr/strategies/async_dsr_strategy.py +52 -0
- fides/api/service/async_dsr/strategies/async_dsr_strategy_callback.py +199 -0
- fides/api/service/async_dsr/strategies/async_dsr_strategy_factory.py +72 -0
- fides/api/service/async_dsr/strategies/async_dsr_strategy_polling.py +691 -0
- fides/api/service/async_dsr/utils.py +130 -0
- fides/api/service/connectors/base_erasure_email_connector.py +7 -0
- fides/api/service/connectors/bigquery_connector.py +34 -16
- fides/api/service/connectors/fides/fides_client.py +63 -1
- fides/api/service/connectors/http_connector.py +48 -12
- fides/api/service/connectors/microsoft_sql_server_connector.py +6 -1
- fides/api/service/connectors/mongodb_connector.py +74 -9
- fides/api/service/connectors/query_configs/saas_query_config.py +160 -79
- fides/api/service/connectors/saas/connector_registry_service.py +42 -135
- fides/api/service/connectors/saas_connector.py +116 -76
- fides/api/service/connectors/sql_connector.py +14 -4
- fides/api/service/deps.py +25 -2
- fides/api/service/messaging/message_dispatch_service.py +98 -20
- fides/api/service/messaging/messaging_crud_service.py +5 -9
- fides/api/service/privacy_request/attachment_handling.py +9 -2
- fides/api/service/privacy_request/dsr_package/dsr_report_builder.py +17 -9
- fides/api/service/privacy_request/dsr_package/templates/attachments_index.html +41 -30
- fides/api/service/privacy_request/dsr_package/templates/clickme.html +68 -0
- fides/api/service/privacy_request/dsr_package/templates/dataset_index.html +30 -27
- fides/api/service/privacy_request/duplication_detection.py +439 -0
- fides/api/service/privacy_request/email_batch_service.py +2 -1
- fides/api/service/privacy_request/request_runner_service.py +92 -91
- fides/api/service/privacy_request/request_service.py +74 -90
- fides/api/service/saas_request/saas_request_override_factory.py +71 -1
- fides/api/service/storage/streaming/schemas.py +27 -19
- fides/api/service/storage/streaming/smart_open_client.py +2 -2
- fides/api/service/storage/streaming/smart_open_streaming_storage.py +238 -147
- fides/api/service/storage/util.py +20 -106
- fides/api/service/strategy.py +6 -3
- fides/api/task/conditional_dependencies/privacy_request/__init__.py +0 -0
- fides/api/task/conditional_dependencies/privacy_request/convenience_fields.py +155 -0
- fides/api/task/conditional_dependencies/privacy_request/privacy_request_data.py +140 -0
- fides/api/task/conditional_dependencies/privacy_request/schemas.py +212 -0
- fides/api/task/conditional_dependencies/sql_schemas.py +301 -0
- fides/api/task/conditional_dependencies/sql_translator.py +757 -0
- fides/api/task/conditional_dependencies/util.py +111 -0
- fides/api/task/execute_request_tasks.py +34 -13
- fides/api/task/filter_results.py +35 -2
- fides/api/task/graph_runners.py +2 -32
- fides/api/task/graph_task.py +42 -12
- fides/api/task/manual/manual_task_conditional_evaluation.py +33 -28
- fides/api/task/manual/manual_task_graph_task.py +4 -1
- fides/api/task/manual/manual_task_utils.py +68 -26
- fides/api/task/scheduler_utils.py +39 -0
- fides/api/tasks/__init__.py +15 -1
- fides/api/util/cache.py +5 -1
- fides/api/util/connection_util.py +101 -218
- fides/api/util/event_audit_util.py +230 -0
- fides/api/util/filter_utils.py +0 -3
- fides/api/util/fuzzy_search_utils.py +7 -1
- fides/api/util/lock.py +13 -3
- fides/api/util/logger.py +58 -4
- fides/api/util/logger_context_utils.py +3 -1
- fides/api/util/masking_util.py +31 -0
- fides/api/util/memory_watchdog.py +118 -0
- fides/api/util/rate_limit.py +25 -7
- fides/api/util/saas_config_updater.py +76 -0
- fides/api/util/saas_util.py +28 -1
- fides/api/worker/__init__.py +6 -0
- fides/common/api/scope_registry.py +6 -7
- fides/common/api/v1/urn_registry.py +15 -3
- fides/config/__init__.py +11 -2
- fides/config/celery_settings.py +42 -0
- fides/config/config_proxy.py +10 -0
- fides/config/duplicate_detection_settings.py +31 -0
- fides/config/execution_settings.py +6 -6
- fides/config/security_settings.py +4 -1
- fides/config/utils.py +5 -0
- fides/data/language/languages.yml +2 -0
- fides/service/connection/__init__.py +0 -0
- fides/service/connection/connection_service.py +651 -0
- fides/service/dataset/dataset_service.py +39 -0
- fides/service/event_audit_service.py +109 -0
- fides/service/messaging/aws_ses_service.py +2 -4
- fides/service/messaging/messaging_service.py +75 -74
- fides/service/privacy_request/privacy_request_service.py +345 -100
- fides/service/system/__init__.py +0 -0
- fides/service/system/system_service.py +153 -0
- fides/service/taxonomy/handlers/legacy_handler.py +3 -3
- fides/service/taxonomy/taxonomy_service.py +64 -18
- fides/ui-build/static/admin/404.html +1 -1
- fides/ui-build/static/admin/_next/static/chunks/1099-688fa865621531cc.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/1115-7fd171dac1eb0e51.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/1276.deb10ae2643f8463.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/1438-8a33b3834d6e43f3.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{6148-59a59d5c5925344f.js → 1533-84e250d1f26e6d7d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/1821-c1daa160f492aacf.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/1840-359ee056e4cf6629.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{1975.78e719130cfe3fd6.js → 1975.bef017bc80e2012c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/2040-70972e15960d9afe.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/2121.321b0fd3932164d4.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/2397-3434603a97f3f5d6.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/2921-49ed0ed897832958.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3150-da5406b80d25fe6d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3214-90ce0a366b0f461a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3377-02bf9780fd383d94.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3615-5e2d062d684b8fa1.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3655-5e1ba5dd68b5ec48.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3729-31ff8ba51491bf21.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3872-cff30ca0844fe2b1.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3931-8bedde156fe83564.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/401-582d9970d89deefe.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4093-7e47408c28de5375.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{4259.d1507e0db19cbed7.js → 4259.05038c9b78467244.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/431-e01ee730c8ad9ece.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4322-f6aeff6880726c83.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4339-04a715ab07122744.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4496-ccbce2459174e0d6.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/454-d5c2c84f1a14e4f1.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4589-c1d83c6a8dab4d30.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4809-a8f4a108a42f53ed.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4903-19c0bc07a956dfa8.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4910-d990773601f794c1.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5185-96423702fba70ced.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5258-4e308cca01d59367.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5487-5c3501754bf027ba.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/549-1bdc3e6f3264c020.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5505-43b9c39491b88e08.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5698.2135391a128cc373.js +164 -0
- fides/ui-build/static/admin/_next/static/chunks/5783-016dfcee8e49bf61.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5826-4db99ea4e5077911.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/590-be447cacf12419dd.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6084-91badbc6569a0efb.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6344-026cb323c1d49926.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6362-ba0e12f2fc4cad94.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6853-882889659769d7b4.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6882-bb1b469d7d7f5335.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6954-0dcf22a9aabe39c5.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7170-46db82bb5b55e856.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7218-2ace8c82e3e7eb74.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7245-1cdafb35f289861b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7630-7f75ab7b8df42eb3.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7654-2e9a8be02e41769a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/8212-348ddd2b6933db70.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9014-eeae6f581158e645.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{5596-bb601cbf40e47a0f.js → 9195-da717d324917b049.js} +3 -3
- fides/ui-build/static/admin/_next/static/chunks/9450-b7b7bb1d755ecf57.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{9676.9fd9552ef744c717.js → 9676.1f395eeb9cc34968.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/9826-1078e46f3ac0b688.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9911-ece086f2230e34f0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{404-471a6b18e712f050.js → 404-800be6996aaa999c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{_app-fcdad91f6f66292b.js → _app-de4b578c904df772.js} +57 -220
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/manual-f12020b82dd4bd1a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/multiple-a911b7990371704d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-ad585b79953c2753.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-406170eaae4329c6.js → add-vendors-bb263d394ca1c8fa.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure-6907c368d8611c44.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-f80cf2d3966816fd.js → [id]-c32f381af358149b.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{new-e74cb5ea87f15b40.js → new-6efb3c069d8b47dd.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience-1975c529905eea9b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-b378576cba255609.js → [id]-b05331178928ab52.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-2ca1de7b88094ab0.js → new-516834e930bb0d0d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-985717f2565f9d9d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-226efa1dcd41437f.js → properties-2be773e08498e40c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-850afb74f4192e87.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent-b63d1e395d879b86.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]-5b28f0f674ea87bd.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-04cfe2cfba7b7cd8.js → [projectUrn]-676177e2f3c9c2a2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-794906929efb8e1d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/[resourceUrn]-3ccbf7c0d06507b9.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-1ea0b24d306b1e67.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/datastore/[monitorId]-d4861a4a218bb65a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/datastore-4498881c26f1458d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/infrastructure/[monitorId]-66bd265044daf97d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/infrastructure-c9c79fa8576a4f77.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/website/[monitorId]/[systemId]-60cacc3232c2eead.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/website/[monitorId]-437bd64a3016de36.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/website-5b3e0009d442bc3f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-8349248c2da970a6.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-6919a1d6cadaa46b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-8f736b078e9842da.js → [resourceUrn]-1a50d421897d3da1.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-eb814e3c22807871.js → detection-49509414a15e8393.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-6875b7783fcfda2f.js → [resourceUrn]-1a1bb80b586d0c0f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-172dbd7740e212ca.js → discovery-49de61df1e8e7fba.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datamap-c2719f5cff20c0f8.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/{[...subfieldNames]-dfd71c1e9c458b89.js → [...subfieldNames]-415015aebab60436.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/{[collectionName]-7cdc42ec5493b83d.js → [collectionName]-5accb09715b5122d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-aebecca1d8ec5f98.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-9551a82ddec9f909.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset-72f8fe47beef0f09.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/[id]-3a8aa3f633528e88.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/new-87512616f35ec6da.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-2f1bf4eac7aa55fd.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{fides-js-docs-1f4335dca5c09860.js → fides-js-docs-5235760b3e508d7d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/index-8d67cd2872cb682a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-7a631df29cd0e31a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-ea3bc43cdaf273de.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/new-privacy-requests-5d8632bba1b81cd4.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/digests/[id]-92e01822ecde8fb8.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/digests/new-1256cf6d3f6794e0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/digests-0daac00911d27617.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/providers/[key]-2d976fe5e8ba0a3a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/providers/new-7766ba497b863740.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/providers-f2880d2ed4734270.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates/[id]-669f585c3458faff.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates/add-template-c79e7724e4bc3899.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates-891654e8dc13965c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/notifications-40c8148244c5d347.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/ant-components-1e86f3e28bd23ed6.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/AntForm-9b7bd8c38f02c091.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikAntFormItem-b18a53a940cf9e19.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikControlled-6d028d7450e77578.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikField-8399083ee2cd8cc2.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/forms-0a910125cdb2b3b8.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-acc90b6f7fe915cb.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-bbc42026f2685438.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure-c08ca6ad21c99799.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-77c2db582f8823bc.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-e784c05d056b2371.js → [id]-74ccea4868408e3d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-0a7a2db148a7561a.js → add-property-7d9f09bfe9d44dfc.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{properties-da734840e4f9d04b.js → properties-cd77bc30672bb1fa.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-cc3bd9540132d5ed.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/sandbox/privacy-notices-7ce7d720107ab4b5.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/alpha-68eaac2d79133679.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/about-6c4904c157477285.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-ae789892343c24f5.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-13ee1b331ced0846.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields/[id]-ee4e43692336a330.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields/new-ca51d794abfcbf25.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-ecd1dc5db8e81409.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domain-records-df06f7e2f668c540.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-da0c77bd510c6c51.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-950b0c115bf673d8.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-2e635dcd11b78224.js → locations-7e36cb4756973a9d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-a0e5ed486d24ccf3.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/privacy-requests-3cdebafb6870d3ad.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-7c02e469d8c5bd74.js → regulations-159aad34f1021320.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-dbd1a64090ad0946.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]-7d042497a57a3788.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/systems-21f1172e73dfc9f0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-e553161e6338ee48.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management/{new-92f52c43f522a350.js → new-efc4af017723e57a.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-64452dfae2c5e614.js → [id]-b152319d67372ee4.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management-dba8692491f7935e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/webpack-09ca52bc7beb0b43.js +1 -0
- fides/ui-build/static/admin/_next/static/css/012b10627a654d5c.css +1 -0
- fides/ui-build/static/admin/_next/static/css/05d05fc31d09638b.css +1 -0
- fides/ui-build/static/admin/_next/static/css/0fd6e0884cfcc5f3.css +1 -0
- fides/ui-build/static/admin/_next/static/css/14ba79c49597d37a.css +1 -0
- fides/ui-build/static/admin/_next/static/css/{34a7eb08b86ddb57.css → 3d6582469f7d56e0.css} +1 -1
- fides/ui-build/static/admin/_next/static/css/3d66bb57ddcb0978.css +1 -0
- fides/ui-build/static/admin/_next/static/css/4861ca3e088f2d05.css +1 -0
- fides/ui-build/static/admin/_next/static/css/a1800714b486e230.css +1 -0
- fides/ui-build/static/admin/_next/static/css/a1e4be9466578ef1.css +1 -0
- fides/ui-build/static/admin/_next/static/css/af32fcac7a177a0e.css +1 -0
- fides/ui-build/static/admin/_next/static/css/cb417f0587918f85.css +1 -0
- fides/ui-build/static/admin/_next/static/css/dd15c278b964de80.css +1 -0
- fides/ui-build/static/admin/_next/static/css/{5f393dea1c0d031c.css → f89607996ad54f4b.css} +1 -1
- fides/ui-build/static/admin/_next/static/css/f9a2a44d3d34c904.css +1 -0
- fides/ui-build/static/admin/_next/static/l2vgGUHB04Fi4oEVlVMrc/_buildManifest.js +1 -0
- fides/ui-build/static/admin/add-systems/manual.html +1 -1
- fides/ui-build/static/admin/add-systems/multiple.html +1 -1
- fides/ui-build/static/admin/add-systems.html +1 -1
- fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
- fides/ui-build/static/admin/consent/configure.html +1 -1
- fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
- fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
- fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
- fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
- fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
- fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
- fides/ui-build/static/admin/consent/properties.html +1 -1
- fides/ui-build/static/admin/consent/reporting.html +1 -1
- fides/ui-build/static/admin/consent.html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
- fides/ui-build/static/admin/data-catalog.html +1 -1
- fides/ui-build/static/admin/data-discovery/action-center/datastore/[monitorId].html +1 -0
- fides/ui-build/static/admin/data-discovery/action-center/datastore.html +1 -0
- fides/ui-build/static/admin/data-discovery/action-center/infrastructure/[monitorId].html +1 -0
- fides/ui-build/static/admin/data-discovery/action-center/infrastructure.html +1 -0
- fides/ui-build/static/admin/data-discovery/action-center/website/[monitorId]/[systemId].html +1 -0
- fides/ui-build/static/admin/data-discovery/action-center/website/[monitorId].html +1 -0
- fides/ui-build/static/admin/data-discovery/action-center/website.html +1 -0
- fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
- fides/ui-build/static/admin/data-discovery/activity.html +1 -1
- fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
- fides/ui-build/static/admin/data-discovery/detection.html +1 -1
- fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
- fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
- fides/ui-build/static/admin/datamap.html +1 -1
- fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
- fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
- fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
- fides/ui-build/static/admin/dataset/new.html +1 -1
- fides/ui-build/static/admin/dataset.html +1 -1
- fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
- fides/ui-build/static/admin/datastore-connection/new.html +1 -1
- fides/ui-build/static/admin/datastore-connection.html +1 -1
- fides/ui-build/static/admin/index.html +1 -1
- fides/ui-build/static/admin/integrations/[id].html +1 -1
- fides/ui-build/static/admin/integrations.html +1 -1
- fides/ui-build/static/admin/lib/fides-ext-gpp.js +1 -1
- fides/ui-build/static/admin/lib/fides-headless.js +1 -1
- fides/ui-build/static/admin/lib/fides-preview.js +1 -1
- fides/ui-build/static/admin/lib/fides-tcf.js +3 -3
- fides/ui-build/static/admin/lib/fides.js +3 -3
- fides/ui-build/static/admin/login/[provider].html +1 -1
- fides/ui-build/static/admin/login.html +1 -1
- fides/ui-build/static/admin/new-privacy-requests.html +1 -0
- fides/ui-build/static/admin/notifications/digests/[id].html +1 -0
- fides/ui-build/static/admin/notifications/digests/new.html +1 -0
- fides/ui-build/static/admin/notifications/digests.html +1 -0
- fides/ui-build/static/admin/notifications/providers/[key].html +1 -0
- fides/ui-build/static/admin/notifications/providers/new.html +1 -0
- fides/ui-build/static/admin/notifications/providers.html +1 -0
- fides/ui-build/static/admin/notifications/templates/[id].html +1 -0
- fides/ui-build/static/admin/notifications/templates/add-template.html +1 -0
- fides/ui-build/static/admin/notifications/templates.html +1 -0
- fides/ui-build/static/admin/notifications.html +1 -0
- fides/ui-build/static/admin/poc/ant-components.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/AntForm.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/FormikAntFormItem.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/FormikControlled.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/FormikField.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/FormikSpreadField.html +1 -1
- fides/ui-build/static/admin/poc/forms.html +1 -1
- fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
- fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
- fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
- fides/ui-build/static/admin/privacy-requests.html +1 -1
- fides/ui-build/static/admin/properties/[id].html +1 -1
- fides/ui-build/static/admin/properties/add-property.html +1 -1
- fides/ui-build/static/admin/properties.html +1 -1
- fides/ui-build/static/admin/reporting/datamap.html +1 -1
- fides/ui-build/static/admin/sandbox/privacy-notices.html +1 -0
- fides/ui-build/static/admin/settings/about/alpha.html +1 -1
- fides/ui-build/static/admin/settings/about.html +1 -1
- fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +1 -1
- fides/ui-build/static/admin/settings/consent.html +1 -1
- fides/ui-build/static/admin/settings/custom-fields/[id].html +1 -0
- fides/ui-build/static/admin/settings/custom-fields/new.html +1 -0
- fides/ui-build/static/admin/settings/custom-fields.html +1 -1
- fides/ui-build/static/admin/settings/domain-records.html +1 -1
- fides/ui-build/static/admin/settings/domains.html +1 -1
- fides/ui-build/static/admin/settings/email-templates.html +1 -1
- fides/ui-build/static/admin/settings/locations.html +1 -1
- fides/ui-build/static/admin/settings/organization.html +1 -1
- fides/ui-build/static/admin/settings/privacy-requests.html +1 -1
- fides/ui-build/static/admin/settings/regulations.html +1 -1
- fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
- fides/ui-build/static/admin/systems/configure/[id].html +1 -1
- fides/ui-build/static/admin/systems.html +1 -1
- fides/ui-build/static/admin/taxonomy.html +1 -1
- fides/ui-build/static/admin/user-management/new.html +1 -1
- fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
- fides/ui-build/static/admin/user-management.html +1 -1
- fides/api/service/async_dsr/async_dsr_service.py +0 -75
- fides/api/service/privacy_request/dsr_package/templates/welcome.html +0 -66
- fides/ui-build/static/admin/_next/static/OmXHlY9MvjoZH9jDkAytl/_buildManifest.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/1099-79646e64f26d62fa.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/1316-2606e19807c08aa5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/1345-5e1c5b66e25c566e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/1467-8808ec8836e033f9.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/1817-0ca16d288fad916d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/2150-930ffaf2c4718edc.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/255-1bc0cbef7a59cdc6.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/2921-52328140bc420d0f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/346-aa3b88efb85f2e28.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3550-d04125c828d591a1.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3620-602eb74dc896d556.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3729-c17ac8031a4c4fd1.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3847-230bf61b053bc706.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3855-ef5194cdb228beb6.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3872-f78dec02f0d959ae.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3923-bb2417b8dcade7a4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/401-4af0a912e249d30f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4164-355644b916ae0094.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/431-86ad2beeb93c95c9.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4608-be8cba73f5d7c326.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4786-61154adf88e448e1.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4808-dd4157aa72648068.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4831-fd99c0b3784de128.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4844-46324c3d848b8b6a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5163-e682273cd76a7d07.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5258-b0de22a8521686ab.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5487-02d00bad7c6830e0.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/549-38ea1d91ee2addaa.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5619-9b50cec521203989.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6084-c153669d5567e242.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6419-d0c00d661b01f8fa.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6853-b17673391117c976.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6954-5296188c19d7d0ac.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/699-8ca44b0de9fa20f0.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7476-45c5088baa8b66af.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7630-7ed6c6117775dffe.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/787-a8c7eab617e2fceb.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/79-65674011d455af4d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/796-9e1ca1a4030707c5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/8002-24af20d679efc04e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/8765-f622a35b40a7ec63.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9046-712156d461165f56.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9187-7438242f0d380bb0.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9278-08cc704317fe535e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9729-fcf6ff4e3534e4a8.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9826-dbae8dee941a7fac.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9951-a88367a129b724ba.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/manual-ace203dfacacbdc4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/multiple-920fb469e0dda1d2.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-bd0d82078e67cac3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure-7207ab23bdb36ce8.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience-9dda4de5ec580279.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-0d4844d0b808e6e4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-28b192e2c074b0f3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent-3e8bdefe714254ec.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]-2c29ff7a01198f30.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-5f2d7b24804f861f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/[resourceUrn]-8eb581024bc0172f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-30108b00ac769fc3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-e1ba213fb666b3f4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-6d133580045abdda.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-9a81d42a474e1e48.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-b6ae7adb8ef0b525.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datamap-c7390e046b2e2b7f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-e12b11ba15bc3fc1.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-e32fccc4ca520d2b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset-7c59a6abf6ba6207.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/[id]-927b7e476c4b47d0.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/new-cbe100d50df34285.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-cce20440b177050b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/index-6cd8708106331b8d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-4c3c413a2668df53.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-95402b5001c07ef2.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging/[id]-3c6dc2f6e6bae960.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging/add-template-4a6d4023a7791be8.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging-76b204c9b98d656f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/ant-components-bc0e2adf6e0d3ac7.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/AntForm-86ffcc1ad3fa912e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikAntFormItem-ec04f595465bdf69.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikControlled-41d309754ff0c1de.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikField-cab1f78cec7808f9.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/forms-eb6058221403b156.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/poc/table-migration-48500551fd6a7602.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-0f25a76dd18c5e20.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-ad6ad3e5bd72765d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-6032d82f0fc2893d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure-d83e5bd52a638234.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-baf31c3e4b081046.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-6903f42a0412bfa6.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/alpha-a82f3df840d5c1b5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/about-d06fb16487705b9d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-9495e2eb506606c7.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-93a978443bf299db.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-9ecb803099082bf4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domain-records-16fdd91a81074dd1.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-4cdd6001e7cb9aee.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-1914de830ce5cfc4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-f547f1f33c12faf3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/privacy-requests-2ecc073f41628f62.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-20b1193ed76c56b0.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]-6e15332935f6b538.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems-fbc8761ef4d55516.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-4d7827fc9c46b6b8.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management-9cec020f89544426.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/webpack-678e89d68dbcd94f.js +0 -1
- fides/ui-build/static/admin/_next/static/css/073713cd1eddda79.css +0 -1
- fides/ui-build/static/admin/_next/static/css/23cf870196941c9a.css +0 -1
- fides/ui-build/static/admin/_next/static/css/304c6f148886a8d4.css +0 -1
- fides/ui-build/static/admin/_next/static/css/650df9c348000a26.css +0 -1
- fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +0 -1
- fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +0 -1
- fides/ui-build/static/admin/messaging/[id].html +0 -1
- fides/ui-build/static/admin/messaging/add-template.html +0 -1
- fides/ui-build/static/admin/messaging.html +0 -1
- fides/ui-build/static/admin/poc/table-migration.html +0 -1
- fides/ui-build/static/admin/privacy-requests/configure/messaging.html +0 -1
- {ethyca_fides-2.69.1rc0.dist-info → ethyca_fides-2.76.0rc2.dist-info}/WHEEL +0 -0
- {ethyca_fides-2.69.1rc0.dist-info → ethyca_fides-2.76.0rc2.dist-info}/entry_points.txt +0 -0
- {ethyca_fides-2.69.1rc0.dist-info → ethyca_fides-2.76.0rc2.dist-info}/licenses/LICENSE +0 -0
- {ethyca_fides-2.69.1rc0.dist-info → ethyca_fides-2.76.0rc2.dist-info}/top_level.txt +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{resources-de704de849960f01.js → resources-81d1b50585468fb0.js} +0 -0
- /fides/ui-build/static/admin/_next/static/{OmXHlY9MvjoZH9jDkAytl → l2vgGUHB04Fi4oEVlVMrc}/_ssgManifest.js +0 -0
|
@@ -95,7 +95,11 @@ def upload_data(
|
|
|
95
95
|
"""
|
|
96
96
|
logger.info("Finding privacy request with id '{}'", request_id)
|
|
97
97
|
|
|
98
|
-
privacy_request =
|
|
98
|
+
privacy_request = (
|
|
99
|
+
PrivacyRequest.query_without_large_columns(db)
|
|
100
|
+
.filter(PrivacyRequest.id == request_id)
|
|
101
|
+
.first()
|
|
102
|
+
)
|
|
99
103
|
if not privacy_request:
|
|
100
104
|
raise HTTPException(
|
|
101
105
|
status_code=HTTP_404_NOT_FOUND,
|
|
@@ -1,29 +1,27 @@
|
|
|
1
|
-
import
|
|
2
|
-
from typing import Annotated, Dict, List, Optional, Union
|
|
1
|
+
from typing import Annotated, Dict, List, Literal, Optional, Union
|
|
3
2
|
|
|
4
3
|
from fastapi import Depends, HTTPException, Query, Response, Security
|
|
5
4
|
from fastapi_pagination import Page, Params
|
|
6
5
|
from fastapi_pagination.bases import AbstractPage
|
|
7
|
-
from fastapi_pagination.ext.async_sqlalchemy import paginate as async_paginate
|
|
8
6
|
from fastapi_pagination.ext.sqlalchemy import paginate
|
|
9
7
|
from fideslang.models import System as SystemSchema
|
|
10
8
|
from fideslang.validation import FidesKey
|
|
11
9
|
from loguru import logger
|
|
12
10
|
from pydantic import Field
|
|
13
|
-
from sqlalchemy import or_
|
|
14
11
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
15
12
|
from sqlalchemy.future import select
|
|
16
13
|
from sqlalchemy.orm import Session
|
|
17
14
|
from starlette import status
|
|
18
|
-
from starlette.status import
|
|
15
|
+
from starlette.status import (
|
|
16
|
+
HTTP_200_OK,
|
|
17
|
+
HTTP_204_NO_CONTENT,
|
|
18
|
+
HTTP_400_BAD_REQUEST,
|
|
19
|
+
HTTP_404_NOT_FOUND,
|
|
20
|
+
)
|
|
19
21
|
|
|
20
22
|
from fides.api.api import deps
|
|
21
23
|
from fides.api.api.v1.endpoints.saas_config_endpoints import instantiate_connection
|
|
22
|
-
from fides.api.db.crud import
|
|
23
|
-
get_resource,
|
|
24
|
-
get_resource_with_custom_fields,
|
|
25
|
-
list_resource,
|
|
26
|
-
)
|
|
24
|
+
from fides.api.db.crud import get_resource, get_resource_with_custom_fields
|
|
27
25
|
from fides.api.db.ctl_session import get_async_db
|
|
28
26
|
from fides.api.db.system import (
|
|
29
27
|
create_system,
|
|
@@ -32,12 +30,10 @@ from fides.api.db.system import (
|
|
|
32
30
|
upsert_system,
|
|
33
31
|
validate_privacy_declarations,
|
|
34
32
|
)
|
|
35
|
-
from fides.api.models.connectionconfig import ConnectionConfig
|
|
33
|
+
from fides.api.models.connectionconfig import ConnectionConfig
|
|
36
34
|
from fides.api.models.fides_user import FidesUser
|
|
37
|
-
from fides.api.models.sql_models import
|
|
38
|
-
|
|
39
|
-
System,
|
|
40
|
-
)
|
|
35
|
+
from fides.api.models.sql_models import System # type:ignore[attr-defined]
|
|
36
|
+
from fides.api.oauth.roles import APPROVER
|
|
41
37
|
from fides.api.oauth.system_manager_oauth_util import (
|
|
42
38
|
verify_oauth_client_for_system_from_fides_key,
|
|
43
39
|
verify_oauth_client_for_system_from_request_body_cli,
|
|
@@ -56,17 +52,18 @@ from fides.api.schemas.connection_configuration.connection_secrets import (
|
|
|
56
52
|
from fides.api.schemas.connection_configuration.saas_config_template_values import (
|
|
57
53
|
SaasConnectionTemplateValues,
|
|
58
54
|
)
|
|
59
|
-
from fides.api.schemas.
|
|
60
|
-
|
|
55
|
+
from fides.api.schemas.system import (
|
|
56
|
+
AssignStewardRequest,
|
|
57
|
+
BasicSystemResponse,
|
|
58
|
+
SystemResponse,
|
|
59
|
+
)
|
|
60
|
+
from fides.api.service.deps import get_connection_service, get_system_service
|
|
61
61
|
from fides.api.util.api_router import APIRouter
|
|
62
62
|
from fides.api.util.connection_util import (
|
|
63
|
-
connection_status,
|
|
64
63
|
delete_connection_config,
|
|
65
|
-
get_connection_config_or_error,
|
|
66
64
|
patch_connection_configs,
|
|
67
|
-
|
|
65
|
+
update_connection_secrets,
|
|
68
66
|
)
|
|
69
|
-
from fides.api.util.filter_utils import apply_filters_to_query
|
|
70
67
|
from fides.common.api.scope_registry import (
|
|
71
68
|
CONNECTION_CREATE_OR_UPDATE,
|
|
72
69
|
CONNECTION_DELETE,
|
|
@@ -82,6 +79,8 @@ from fides.common.api.v1.urn_registry import (
|
|
|
82
79
|
SYSTEM_CONNECTIONS,
|
|
83
80
|
V1_URL_PREFIX,
|
|
84
81
|
)
|
|
82
|
+
from fides.service.connection.connection_service import ConnectionService
|
|
83
|
+
from fides.service.system.system_service import SystemService
|
|
85
84
|
|
|
86
85
|
SYSTEM_ROUTER = APIRouter(tags=["System"], prefix=f"{V1_URL_PREFIX}/system")
|
|
87
86
|
SYSTEM_CONNECTIONS_ROUTER = APIRouter(
|
|
@@ -160,6 +159,7 @@ def patch_connection_secrets(
|
|
|
160
159
|
db: Session = Depends(deps.get_db),
|
|
161
160
|
unvalidated_secrets: connection_secrets_schemas,
|
|
162
161
|
verify: Optional[bool] = True,
|
|
162
|
+
connection_service: ConnectionService = Depends(get_connection_service),
|
|
163
163
|
) -> TestStatusMessage:
|
|
164
164
|
"""
|
|
165
165
|
Patch secrets that will be used to connect to a specified connection_type.
|
|
@@ -169,45 +169,13 @@ def patch_connection_secrets(
|
|
|
169
169
|
"""
|
|
170
170
|
|
|
171
171
|
system = get_system(db, fides_key)
|
|
172
|
-
|
|
173
|
-
|
|
172
|
+
return update_connection_secrets(
|
|
173
|
+
connection_service,
|
|
174
|
+
system.connection_configs.key,
|
|
175
|
+
unvalidated_secrets,
|
|
176
|
+
verify,
|
|
177
|
+
merge_with_existing=True,
|
|
174
178
|
)
|
|
175
|
-
# Inserts unchanged sensitive values. The FE does not send masked values sensitive secrets.
|
|
176
|
-
if connection_config.secrets is not None:
|
|
177
|
-
for key, value in connection_config.secrets.items():
|
|
178
|
-
if key not in unvalidated_secrets:
|
|
179
|
-
# unvalidated_secrets is actually a dictionary here. connection_secrets_schemas
|
|
180
|
-
# are just provided for documentation but the data was not parsed up front.
|
|
181
|
-
# That happens below in validate_secrets.
|
|
182
|
-
unvalidated_secrets[key] = value # type: ignore
|
|
183
|
-
else:
|
|
184
|
-
connection_config.secrets = {}
|
|
185
|
-
|
|
186
|
-
validated_secrets = validate_secrets(
|
|
187
|
-
db, unvalidated_secrets, connection_config
|
|
188
|
-
).model_dump(mode="json")
|
|
189
|
-
|
|
190
|
-
for key, value in validated_secrets.items():
|
|
191
|
-
connection_config.secrets[key] = value # type: ignore
|
|
192
|
-
|
|
193
|
-
# Deauthorize an OAuth connection when the secrets are updated. This is necessary because
|
|
194
|
-
# the existing access tokens may not be valid anymore. This only applies to SaaS connection
|
|
195
|
-
# configurations that use the "oauth2_authorization_code" authentication strategy.
|
|
196
|
-
if (
|
|
197
|
-
connection_config.authorized
|
|
198
|
-
and connection_config.connection_type == ConnectionType.saas
|
|
199
|
-
):
|
|
200
|
-
del connection_config.secrets["access_token"]
|
|
201
|
-
|
|
202
|
-
# Save validated secrets, regardless of whether they've been verified.
|
|
203
|
-
logger.info("Updating connection config secrets for '{}'", connection_config.key)
|
|
204
|
-
connection_config.save(db=db)
|
|
205
|
-
|
|
206
|
-
msg = f"Secrets updated for ConnectionConfig with key: {connection_config.key}."
|
|
207
|
-
if verify:
|
|
208
|
-
return connection_status(connection_config, msg, db)
|
|
209
|
-
|
|
210
|
-
return TestStatusMessage(msg=msg, test_status=None)
|
|
211
179
|
|
|
212
180
|
|
|
213
181
|
@SYSTEM_CONNECTIONS_ROUTER.delete(
|
|
@@ -349,6 +317,123 @@ async def delete(
|
|
|
349
317
|
}
|
|
350
318
|
|
|
351
319
|
|
|
320
|
+
@SYSTEM_ROUTER.post(
|
|
321
|
+
"/bulk-delete",
|
|
322
|
+
dependencies=[
|
|
323
|
+
Security(
|
|
324
|
+
verify_oauth_client_prod,
|
|
325
|
+
scopes=[SYSTEM_DELETE],
|
|
326
|
+
)
|
|
327
|
+
],
|
|
328
|
+
status_code=status.HTTP_200_OK,
|
|
329
|
+
)
|
|
330
|
+
async def system_bulk_delete(
|
|
331
|
+
fides_keys: List[str],
|
|
332
|
+
db: AsyncSession = Depends(get_async_db),
|
|
333
|
+
) -> Dict:
|
|
334
|
+
"""Delete multiple systems by their fides_keys."""
|
|
335
|
+
|
|
336
|
+
deleted: List[Dict] = []
|
|
337
|
+
|
|
338
|
+
async with db.begin():
|
|
339
|
+
# Retrieve all systems within the same transactional context
|
|
340
|
+
stmt = select(System).filter(System.fides_key.in_(fides_keys))
|
|
341
|
+
result = await db.execute(stmt)
|
|
342
|
+
systems_to_delete = result.scalars().all()
|
|
343
|
+
|
|
344
|
+
for system in systems_to_delete:
|
|
345
|
+
await db.delete(system)
|
|
346
|
+
deleted.append(SystemSchema.model_validate(system).model_dump(mode="json"))
|
|
347
|
+
|
|
348
|
+
return {
|
|
349
|
+
"message": f"Deleted {len(deleted)} system(s)",
|
|
350
|
+
"deleted": deleted,
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
@SYSTEM_ROUTER.post(
|
|
355
|
+
"/assign-steward",
|
|
356
|
+
dependencies=[
|
|
357
|
+
Security(
|
|
358
|
+
verify_oauth_client_prod,
|
|
359
|
+
scopes=[SYSTEM_UPDATE],
|
|
360
|
+
)
|
|
361
|
+
],
|
|
362
|
+
)
|
|
363
|
+
async def bulk_assign_steward(
|
|
364
|
+
data: AssignStewardRequest,
|
|
365
|
+
db: Session = Depends(deps.get_db),
|
|
366
|
+
) -> Dict:
|
|
367
|
+
"""Assign the given `data_steward` (username) as a system manager for the list of `system_keys`.
|
|
368
|
+
|
|
369
|
+
This mirrors the behavior of the user permissions endpoint that assigns systems to a given user but
|
|
370
|
+
from the perspective of the System API. It validates that:
|
|
371
|
+
|
|
372
|
+
1. The provided user exists.
|
|
373
|
+
2. The user already has permissions (cannot be None).
|
|
374
|
+
3. The user is not an approver (approvers are explicitly disallowed from being system managers).
|
|
375
|
+
4. All provided `system_keys` resolve to existing System records.
|
|
376
|
+
5. There are no duplicate keys in the payload.
|
|
377
|
+
"""
|
|
378
|
+
|
|
379
|
+
data_steward = data.data_steward
|
|
380
|
+
system_keys = data.system_keys
|
|
381
|
+
|
|
382
|
+
user: Optional[FidesUser] = FidesUser.get_by(
|
|
383
|
+
db, field="username", value=data_steward
|
|
384
|
+
)
|
|
385
|
+
if not user:
|
|
386
|
+
raise HTTPException(
|
|
387
|
+
status_code=HTTP_404_NOT_FOUND,
|
|
388
|
+
detail=f"No user found with username {data_steward}.",
|
|
389
|
+
)
|
|
390
|
+
|
|
391
|
+
# Validate user has permissions assigned
|
|
392
|
+
if not (user.permissions and user.permissions.roles): # type: ignore[attr-defined]
|
|
393
|
+
raise HTTPException(
|
|
394
|
+
status_code=HTTP_400_BAD_REQUEST,
|
|
395
|
+
detail=f"User {data_steward} needs permissions before they can be assigned as system manager.",
|
|
396
|
+
)
|
|
397
|
+
|
|
398
|
+
# Approvers are not allowed to be system managers
|
|
399
|
+
if APPROVER in user.permissions.roles: # type: ignore[attr-defined]
|
|
400
|
+
raise HTTPException(
|
|
401
|
+
status_code=HTTP_400_BAD_REQUEST,
|
|
402
|
+
detail=f"User {data_steward} is an {APPROVER} and cannot be assigned as a system manager.",
|
|
403
|
+
)
|
|
404
|
+
|
|
405
|
+
# Check for duplicate system keys
|
|
406
|
+
if len(set(system_keys)) != len(system_keys):
|
|
407
|
+
raise HTTPException(
|
|
408
|
+
status_code=HTTP_400_BAD_REQUEST,
|
|
409
|
+
detail=f"Cannot add user {data_steward} as system manager. Duplicate systems in request body.",
|
|
410
|
+
)
|
|
411
|
+
|
|
412
|
+
# Retrieve systems and validate existence
|
|
413
|
+
systems_query = db.query(System).filter(System.fides_key.in_(system_keys))
|
|
414
|
+
if systems_query.count() != len(system_keys):
|
|
415
|
+
raise HTTPException(
|
|
416
|
+
status_code=HTTP_404_NOT_FOUND,
|
|
417
|
+
detail=f"Cannot add user {data_steward} as system manager. System(s) not found.",
|
|
418
|
+
)
|
|
419
|
+
|
|
420
|
+
systems = systems_query.all()
|
|
421
|
+
|
|
422
|
+
logger.info(
|
|
423
|
+
"Assigning user {} as data steward for {} systems", data_steward, len(systems)
|
|
424
|
+
)
|
|
425
|
+
|
|
426
|
+
updated_count = 0
|
|
427
|
+
for system in systems:
|
|
428
|
+
if user not in system.data_stewards:
|
|
429
|
+
user.set_as_system_manager(db, system)
|
|
430
|
+
updated_count += 1
|
|
431
|
+
|
|
432
|
+
return {
|
|
433
|
+
"message": f"User {data_steward} assigned as data steward to {updated_count} system(s)",
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
|
|
352
437
|
@SYSTEM_ROUTER.post(
|
|
353
438
|
"/",
|
|
354
439
|
response_model=SystemResponse,
|
|
@@ -384,62 +469,34 @@ async def create(
|
|
|
384
469
|
name="List systems (optionally paginated)",
|
|
385
470
|
)
|
|
386
471
|
async def ls( # pylint: disable=invalid-name
|
|
387
|
-
|
|
472
|
+
system_service: SystemService = Depends(get_system_service),
|
|
388
473
|
size: Optional[int] = Query(None, ge=1, le=100),
|
|
389
474
|
page: Optional[int] = Query(None, ge=1),
|
|
390
475
|
search: Optional[str] = None,
|
|
391
476
|
data_uses: Optional[List[FidesKey]] = Query(None),
|
|
392
477
|
data_categories: Optional[List[FidesKey]] = Query(None),
|
|
393
478
|
data_subjects: Optional[List[FidesKey]] = Query(None),
|
|
394
|
-
show_deleted:
|
|
395
|
-
|
|
479
|
+
show_deleted: bool = Query(False),
|
|
480
|
+
sort_by: Optional[List[Literal["name"]]] = Query(None),
|
|
481
|
+
sort_asc: Optional[bool] = Query(True),
|
|
482
|
+
) -> Union[List[System], Page[System]]:
|
|
396
483
|
"""Get a list of all of the Systems.
|
|
397
484
|
If any parameters or filters are provided the response will be paginated and/or filtered.
|
|
398
485
|
Otherwise all Systems will be returned (this may be a slow operation if there are many systems,
|
|
399
486
|
so using the pagination parameters is recommended).
|
|
400
487
|
"""
|
|
401
|
-
if not (size or page or search or data_uses or data_categories or data_subjects):
|
|
402
|
-
# if no advanced parameters are passed, we return a very basic list of all System resources
|
|
403
|
-
# to maintain backward compatibility of the original API, which backs some important client usages, e.g. the fides CLI
|
|
404
488
|
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
query = select(System)
|
|
408
|
-
|
|
409
|
-
pagination_params = Params(page=page or 1, size=size or 50)
|
|
410
|
-
# Need to join with PrivacyDeclaration in order to be able to filter
|
|
411
|
-
# by data use, data category, and data subject
|
|
412
|
-
if any([data_uses, data_categories, data_subjects]):
|
|
413
|
-
query = query.outerjoin(
|
|
414
|
-
PrivacyDeclaration, System.id == PrivacyDeclaration.system_id
|
|
415
|
-
)
|
|
416
|
-
|
|
417
|
-
# Filter out any vendor deleted systems, unless explicitly asked for
|
|
418
|
-
if not show_deleted:
|
|
419
|
-
query = query.filter(
|
|
420
|
-
or_(
|
|
421
|
-
System.vendor_deleted_date.is_(None),
|
|
422
|
-
System.vendor_deleted_date >= datetime.datetime.now(),
|
|
423
|
-
)
|
|
424
|
-
)
|
|
425
|
-
|
|
426
|
-
filter_params = FilterParams(
|
|
489
|
+
return await system_service.get_systems(
|
|
427
490
|
search=search,
|
|
428
491
|
data_uses=data_uses,
|
|
429
492
|
data_categories=data_categories,
|
|
430
493
|
data_subjects=data_subjects,
|
|
494
|
+
size=size,
|
|
495
|
+
page=page,
|
|
496
|
+
show_deleted=show_deleted,
|
|
497
|
+
sort_by=sort_by,
|
|
498
|
+
sort_asc=sort_asc,
|
|
431
499
|
)
|
|
432
|
-
filtered_query = apply_filters_to_query(
|
|
433
|
-
query=query,
|
|
434
|
-
filter_params=filter_params,
|
|
435
|
-
search_model=System,
|
|
436
|
-
taxonomy_model=PrivacyDeclaration,
|
|
437
|
-
)
|
|
438
|
-
|
|
439
|
-
# Add a distinct so we only get one row per system
|
|
440
|
-
duplicates_removed = filtered_query.distinct(System.id)
|
|
441
|
-
|
|
442
|
-
return await async_paginate(db, duplicates_removed, pagination_params)
|
|
443
500
|
|
|
444
501
|
|
|
445
502
|
@SYSTEM_ROUTER.patch(
|
|
@@ -500,7 +557,7 @@ async def get(
|
|
|
500
557
|
)
|
|
501
558
|
def instantiate_connection_from_template(
|
|
502
559
|
fides_key: str,
|
|
503
|
-
|
|
560
|
+
connector_template_type: str,
|
|
504
561
|
template_values: SaasConnectionTemplateValues,
|
|
505
562
|
db: Session = Depends(deps.get_db),
|
|
506
563
|
) -> SaasConnectionTemplateResponse:
|
|
@@ -510,4 +567,4 @@ def instantiate_connection_from_template(
|
|
|
510
567
|
"""
|
|
511
568
|
|
|
512
569
|
system = get_system(db, fides_key)
|
|
513
|
-
return instantiate_connection(db,
|
|
570
|
+
return instantiate_connection(db, connector_template_type, template_values, system)
|
|
@@ -36,7 +36,7 @@ from fides.api.models.fides_user import FidesUser
|
|
|
36
36
|
from fides.api.models.fides_user_invite import FidesUserInvite
|
|
37
37
|
from fides.api.models.fides_user_permissions import FidesUserPermissions
|
|
38
38
|
from fides.api.models.sql_models import System # type: ignore[attr-defined]
|
|
39
|
-
from fides.api.oauth.roles import APPROVER, VIEWER
|
|
39
|
+
from fides.api.oauth.roles import APPROVER, EXTERNAL_RESPONDENT, VIEWER
|
|
40
40
|
from fides.api.oauth.utils import (
|
|
41
41
|
create_temporary_user_for_login_flow,
|
|
42
42
|
extract_payload,
|
|
@@ -117,7 +117,7 @@ def verify_user_read_scopes(
|
|
|
117
117
|
db: Session = Depends(get_db),
|
|
118
118
|
) -> ClientDetail:
|
|
119
119
|
"""
|
|
120
|
-
Custom dependency that verifies the user has either
|
|
120
|
+
Custom dependency that verifies the user has either user:read or user:read-own scope.
|
|
121
121
|
Returns the client if authorized.
|
|
122
122
|
"""
|
|
123
123
|
token_data, client = extract_token_and_load_client(authorization, db)
|
|
@@ -159,7 +159,7 @@ async def update_user(
|
|
|
159
159
|
) -> FidesUser:
|
|
160
160
|
"""
|
|
161
161
|
Update a user given a `user_id`. If the user is not updating their own data,
|
|
162
|
-
they need the
|
|
162
|
+
they need the user:update scope
|
|
163
163
|
"""
|
|
164
164
|
user = FidesUser.get(db=db, object_id=user_id)
|
|
165
165
|
if not user:
|
|
@@ -571,7 +571,7 @@ def get_user(
|
|
|
571
571
|
client: ClientDetail = Security(verify_user_read_scopes),
|
|
572
572
|
authorization: str = Security(oauth2_scheme),
|
|
573
573
|
) -> FidesUser:
|
|
574
|
-
"""Returns a User based on an Id. Users with
|
|
574
|
+
"""Returns a User based on an Id. Users with user:read-own scope can only access their own data. Users with user:read can access other's data."""
|
|
575
575
|
user: Optional[FidesUser] = FidesUser.get_by_key_or_id(db, data={"id": user_id})
|
|
576
576
|
if user is None:
|
|
577
577
|
raise HTTPException(status_code=HTTP_404_NOT_FOUND, detail="User not found")
|
|
@@ -608,6 +608,8 @@ def get_users(
|
|
|
608
608
|
db: Session = Depends(get_db),
|
|
609
609
|
params: Params = Depends(),
|
|
610
610
|
username: Optional[str] = None,
|
|
611
|
+
include_external: bool = True,
|
|
612
|
+
exclude_approvers: bool = False,
|
|
611
613
|
client: ClientDetail = Security(verify_user_read_scopes),
|
|
612
614
|
authorization: str = Security(oauth2_scheme),
|
|
613
615
|
) -> AbstractPage[FidesUser]:
|
|
@@ -625,6 +627,17 @@ def get_users(
|
|
|
625
627
|
# User has USER_READ scope, can see all users
|
|
626
628
|
if username:
|
|
627
629
|
query = query.filter(FidesUser.username.ilike(f"%{escape_like(username)}%"))
|
|
630
|
+
|
|
631
|
+
# Filter out external respondents if include_external is False
|
|
632
|
+
# Filter out approvers if exclude_approvers is True
|
|
633
|
+
if not include_external or exclude_approvers:
|
|
634
|
+
query = query.join(FidesUserPermissions)
|
|
635
|
+
if not include_external:
|
|
636
|
+
query = query.filter(
|
|
637
|
+
~FidesUserPermissions.roles.op("@>")([EXTERNAL_RESPONDENT])
|
|
638
|
+
)
|
|
639
|
+
if exclude_approvers:
|
|
640
|
+
query = query.filter(~FidesUserPermissions.roles.op("@>")([APPROVER]))
|
|
628
641
|
else:
|
|
629
642
|
# User has USER_READ_OWN scope, only show their own data
|
|
630
643
|
query = query.filter(FidesUser.id == client.user_id)
|
fides/api/app_setup.py
CHANGED
|
@@ -39,9 +39,6 @@ from fides.api.oauth.system_manager_oauth_util import (
|
|
|
39
39
|
verify_oauth_client_for_system_from_request_body_cli,
|
|
40
40
|
)
|
|
41
41
|
from fides.api.oauth.utils import get_root_client, verify_oauth_client_prod
|
|
42
|
-
from fides.api.service.connectors.saas.connector_registry_service import (
|
|
43
|
-
update_saas_configs,
|
|
44
|
-
)
|
|
45
42
|
|
|
46
43
|
# pylint: disable=wildcard-import, unused-wildcard-import
|
|
47
44
|
from fides.api.service.saas_request.override_implementations import *
|
|
@@ -55,6 +52,7 @@ from fides.api.util.rate_limit import (
|
|
|
55
52
|
fides_limiter,
|
|
56
53
|
is_rate_limit_enabled,
|
|
57
54
|
)
|
|
55
|
+
from fides.api.util.saas_config_updater import update_saas_configs
|
|
58
56
|
from fides.config import CONFIG
|
|
59
57
|
from fides.config.config_proxy import ConfigProxy
|
|
60
58
|
|
fides/api/common_exceptions.py
CHANGED
|
@@ -179,6 +179,10 @@ class AwaitingAsyncTask(BaseException):
|
|
|
179
179
|
"""Request Task is Awaiting Processing - Awaiting Async Task"""
|
|
180
180
|
|
|
181
181
|
|
|
182
|
+
class AwaitingAsyncProcessing(BaseException):
|
|
183
|
+
"""Request Task is actively being processed by external system - Fides is polling"""
|
|
184
|
+
|
|
185
|
+
|
|
182
186
|
class UpstreamTasksNotReady(BaseException):
|
|
183
187
|
"""Privacy Request Task awaiting upstream tasks"""
|
|
184
188
|
|
|
@@ -402,3 +406,7 @@ class MonitorConfigNotFoundException(BaseException):
|
|
|
402
406
|
|
|
403
407
|
class MissingNamespaceSchemaException(BaseException):
|
|
404
408
|
"""Attempting to use namespace fides_meta without specifying the schema to validate it."""
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
class ConnectionNotFoundException(BaseException):
|
|
412
|
+
"""ConnectionConfig could not be found"""
|
fides/api/db/base.py
CHANGED
|
@@ -9,6 +9,7 @@ from fides.api.models.audit_log import AuditLog
|
|
|
9
9
|
from fides.api.models.authentication_request import AuthenticationRequest
|
|
10
10
|
from fides.api.models.client import ClientDetail
|
|
11
11
|
from fides.api.models.comment import Comment, CommentReference
|
|
12
|
+
from fides.api.models.connection_oauth_credentials import OAuthConfig
|
|
12
13
|
from fides.api.models.connectionconfig import ConnectionConfig
|
|
13
14
|
from fides.api.models.consent_automation import ConsentAutomation
|
|
14
15
|
from fides.api.models.custom_asset import CustomAsset
|
|
@@ -21,6 +22,9 @@ from fides.api.models.detection_discovery.monitor_task import (
|
|
|
21
22
|
MonitorTask,
|
|
22
23
|
MonitorTaskExecutionLog,
|
|
23
24
|
)
|
|
25
|
+
from fides.api.models.detection_discovery.web_monitor import WebMonitorGroupJob
|
|
26
|
+
from fides.api.models.digest import DigestCondition, DigestConfig
|
|
27
|
+
from fides.api.models.event_audit import EventAudit
|
|
24
28
|
from fides.api.models.experience_notices import ExperienceNotices
|
|
25
29
|
from fides.api.models.fides_cloud import FidesCloud
|
|
26
30
|
from fides.api.models.fides_user import FidesUser
|
|
@@ -29,6 +33,7 @@ from fides.api.models.fides_user_permissions import FidesUserPermissions
|
|
|
29
33
|
from fides.api.models.fides_user_respondent_email_verification import (
|
|
30
34
|
FidesUserRespondentEmailVerification,
|
|
31
35
|
)
|
|
36
|
+
from fides.api.models.identity_definition import IdentityDefinition
|
|
32
37
|
from fides.api.models.identity_salt import IdentitySalt
|
|
33
38
|
from fides.api.models.location_regulation_selections import LocationRegulationSelections
|
|
34
39
|
from fides.api.models.manual_task import (
|
|
@@ -75,8 +80,10 @@ from fides.api.models.property import (
|
|
|
75
80
|
Property,
|
|
76
81
|
)
|
|
77
82
|
from fides.api.models.registration import UserRegistration
|
|
83
|
+
from fides.api.models.saas_template_dataset import SaasTemplateDataset
|
|
78
84
|
from fides.api.models.storage import StorageConfig
|
|
79
85
|
from fides.api.models.system_compass_sync import SystemCompassSync
|
|
86
|
+
from fides.api.models.system_group import SystemGroup, SystemGroupMember
|
|
80
87
|
from fides.api.models.system_history import SystemHistory
|
|
81
88
|
from fides.api.models.system_manager import SystemManager
|
|
82
89
|
from fides.api.models.taxonomy import (
|
|
@@ -90,3 +97,4 @@ from fides.api.models.tcf_publisher_restrictions import (
|
|
|
90
97
|
TCFPublisherRestriction,
|
|
91
98
|
)
|
|
92
99
|
from fides.api.models.tcf_purpose_overrides import TCFPurposeOverride
|
|
100
|
+
from fides.api.models.v3.privacy_preferences import PrivacyPreferences
|
fides/api/db/crud.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
DEPRECATED: This module uses manual transaction handling which can
|
|
3
|
+
lead to unexpected behavior. Use fides.api.db.safe_crud instead.
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
6
|
from collections import defaultdict
|
|
@@ -18,6 +18,7 @@ from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
18
18
|
from sqlalchemy.future import select
|
|
19
19
|
from sqlalchemy.sql import Select
|
|
20
20
|
from starlette.status import HTTP_422_UNPROCESSABLE_ENTITY
|
|
21
|
+
from typing_extensions import deprecated
|
|
21
22
|
|
|
22
23
|
from fides.api.models.sql_models import ( # type: ignore[attr-defined]
|
|
23
24
|
CustomField,
|
|
@@ -32,6 +33,9 @@ T = TypeVar("T", bound="FidesBase")
|
|
|
32
33
|
|
|
33
34
|
|
|
34
35
|
# CRUD Functions
|
|
36
|
+
@deprecated(
|
|
37
|
+
"This function uses a manual session.begin() which can lead to unexpected transaction handling. Use create_resource from safe_crud instead."
|
|
38
|
+
)
|
|
35
39
|
async def create_resource(
|
|
36
40
|
sql_model: Type[T], resource_dict: Dict, async_session: AsyncSession
|
|
37
41
|
) -> T:
|
|
@@ -66,6 +70,9 @@ async def create_resource(
|
|
|
66
70
|
return await get_resource(sql_model, resource_dict["fides_key"], async_session)
|
|
67
71
|
|
|
68
72
|
|
|
73
|
+
@deprecated(
|
|
74
|
+
"This function uses manual session.begin() which can lead to unexpected transaction handling. Use get_custom_fields_filtered from safe_crud instead."
|
|
75
|
+
)
|
|
69
76
|
async def get_custom_fields_filtered(
|
|
70
77
|
async_session: AsyncSession,
|
|
71
78
|
resource_types_to_ids: Dict[ResourceTypes, List[str]] = defaultdict(list),
|
|
@@ -111,6 +118,9 @@ async def get_custom_fields_filtered(
|
|
|
111
118
|
raise sa_error
|
|
112
119
|
|
|
113
120
|
|
|
121
|
+
@deprecated(
|
|
122
|
+
"This function uses manual session.begin() which can lead to unexpected transaction handling. Use get_resource from safe_crud instead."
|
|
123
|
+
)
|
|
114
124
|
async def get_resource(
|
|
115
125
|
sql_model: Type[T],
|
|
116
126
|
fides_key: str,
|
|
@@ -142,6 +152,9 @@ async def get_resource(
|
|
|
142
152
|
return sql_resource
|
|
143
153
|
|
|
144
154
|
|
|
155
|
+
@deprecated(
|
|
156
|
+
"This function uses manual session.begin() which can lead to unexpected transaction handling. Use get_resource_with_custom_fields from safe_crud instead."
|
|
157
|
+
)
|
|
145
158
|
async def get_resource_with_custom_fields(
|
|
146
159
|
sql_model: Type[T], fides_key: str, async_session: AsyncSession
|
|
147
160
|
) -> Dict[str, Any]:
|
|
@@ -193,6 +206,9 @@ async def get_resource_with_custom_fields(
|
|
|
193
206
|
return resource_dict
|
|
194
207
|
|
|
195
208
|
|
|
209
|
+
@deprecated(
|
|
210
|
+
"This function uses manual session.begin() which can lead to unexpected transaction handling. Use list_resource from safe_crud instead."
|
|
211
|
+
)
|
|
196
212
|
async def list_resource(sql_model: Type[T], async_session: AsyncSession) -> List[T]:
|
|
197
213
|
"""
|
|
198
214
|
Get a list of all of the resources of this type from the database.
|
|
@@ -203,6 +219,9 @@ async def list_resource(sql_model: Type[T], async_session: AsyncSession) -> List
|
|
|
203
219
|
return await list_resource_query(async_session, query, sql_model)
|
|
204
220
|
|
|
205
221
|
|
|
222
|
+
@deprecated(
|
|
223
|
+
"This function uses manual session.begin() which can lead to unexpected transaction handling. Use list_resource_query from safe_crud instead."
|
|
224
|
+
)
|
|
206
225
|
async def list_resource_query(
|
|
207
226
|
async_session: AsyncSession, query: Select, sql_model: Type[T]
|
|
208
227
|
) -> List[T]:
|
|
@@ -225,6 +244,9 @@ async def list_resource_query(
|
|
|
225
244
|
return sql_resources
|
|
226
245
|
|
|
227
246
|
|
|
247
|
+
@deprecated(
|
|
248
|
+
"This function uses manual session.begin() which can lead to unexpected transaction handling. Use update_resource from safe_crud instead."
|
|
249
|
+
)
|
|
228
250
|
async def update_resource(
|
|
229
251
|
sql_model: Type[T], resource_dict: Dict, async_session: AsyncSession
|
|
230
252
|
) -> Dict:
|
|
@@ -251,6 +273,9 @@ async def update_resource(
|
|
|
251
273
|
return await get_resource(sql_model, resource_dict["fides_key"], async_session)
|
|
252
274
|
|
|
253
275
|
|
|
276
|
+
@deprecated(
|
|
277
|
+
"This function uses manual session.begin() which can lead to unexpected transaction handling. Use upsert_resources from safe_crud instead."
|
|
278
|
+
)
|
|
254
279
|
async def upsert_resources(
|
|
255
280
|
sql_model: Type[T], resource_dicts: List[Dict], async_session: AsyncSession
|
|
256
281
|
) -> Tuple[int, int]:
|
|
@@ -300,6 +325,9 @@ async def upsert_resources(
|
|
|
300
325
|
raise sa_error
|
|
301
326
|
|
|
302
327
|
|
|
328
|
+
@deprecated(
|
|
329
|
+
"This function uses manual session.begin() which can lead to unexpected transaction handling. Use delete_resource from safe_crud instead."
|
|
330
|
+
)
|
|
303
331
|
async def delete_resource(
|
|
304
332
|
sql_model: Type[T], fides_key: str, async_session: AsyncSession
|
|
305
333
|
) -> T:
|