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
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"""EventAudit model and related enums for comprehensive audit logging."""
|
|
2
|
+
|
|
3
|
+
from enum import Enum as EnumType
|
|
4
|
+
|
|
5
|
+
from sqlalchemy import Column, String, Text
|
|
6
|
+
from sqlalchemy.dialects.postgresql import JSONB
|
|
7
|
+
from sqlalchemy.ext.declarative import declared_attr
|
|
8
|
+
|
|
9
|
+
from fides.api.db.base_class import Base
|
|
10
|
+
from fides.api.db.util import EnumColumn
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class EventAuditType(str, EnumType):
|
|
14
|
+
"""Hierarchical event types for audit logging - variable depth as needed."""
|
|
15
|
+
|
|
16
|
+
# System
|
|
17
|
+
system_updated = "system.updated"
|
|
18
|
+
|
|
19
|
+
# System group
|
|
20
|
+
system_group_created = "system_group.created"
|
|
21
|
+
system_group_updated = "system_group.updated"
|
|
22
|
+
system_group_deleted = "system_group.deleted"
|
|
23
|
+
|
|
24
|
+
# Taxonomy
|
|
25
|
+
taxonomy_created = "taxonomy.created"
|
|
26
|
+
taxonomy_updated = "taxonomy.updated"
|
|
27
|
+
taxonomy_deleted = "taxonomy.deleted"
|
|
28
|
+
taxonomy_usage_updated = "taxonomy.usage.updated"
|
|
29
|
+
taxonomy_usage_deleted = "taxonomy.usage.deleted"
|
|
30
|
+
taxonomy_element_created = "taxonomy.element.created"
|
|
31
|
+
taxonomy_element_updated = "taxonomy.element.updated"
|
|
32
|
+
taxonomy_element_deleted = "taxonomy.element.deleted"
|
|
33
|
+
|
|
34
|
+
# Connection operations
|
|
35
|
+
connection_created = "connection.created"
|
|
36
|
+
connection_updated = "connection.updated"
|
|
37
|
+
connection_deleted = "connection.deleted"
|
|
38
|
+
|
|
39
|
+
# Connection secrets operations
|
|
40
|
+
connection_secrets_created = "connection.secrets.created"
|
|
41
|
+
connection_secrets_updated = "connection.secrets.updated"
|
|
42
|
+
|
|
43
|
+
# Digest
|
|
44
|
+
digest_execution_started = "digest.execution.started"
|
|
45
|
+
digest_execution_completed = "digest.execution.completed"
|
|
46
|
+
digest_execution_interrupted = "digest.execution.interrupted"
|
|
47
|
+
digest_execution_resumed = "digest.execution.resumed"
|
|
48
|
+
digest_communications_sent = "digest.communications.sent"
|
|
49
|
+
digest_checkpoint_created = "digest.checkpoint.created"
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
class EventAuditStatus(str, EnumType):
|
|
53
|
+
"""Status enum for event audit logging."""
|
|
54
|
+
|
|
55
|
+
succeeded = "succeeded"
|
|
56
|
+
failed = "failed"
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
class EventAudit(Base):
|
|
60
|
+
"""Audit log for significant business events across the Fides platform."""
|
|
61
|
+
|
|
62
|
+
@declared_attr
|
|
63
|
+
def __tablename__(cls) -> str:
|
|
64
|
+
return "event_audit"
|
|
65
|
+
|
|
66
|
+
# Uses EventAuditType values but left as String to avoid future migrations
|
|
67
|
+
event_type = Column(String, index=True, nullable=False)
|
|
68
|
+
user_id = Column(String, nullable=True, index=True)
|
|
69
|
+
|
|
70
|
+
# Resource information
|
|
71
|
+
resource_type = Column(String, nullable=True, index=True)
|
|
72
|
+
resource_identifier = Column(String, nullable=True, index=True)
|
|
73
|
+
|
|
74
|
+
# User-friendly description of event
|
|
75
|
+
description = Column(Text, nullable=True)
|
|
76
|
+
|
|
77
|
+
# Structured data about event
|
|
78
|
+
event_details = Column(JSONB, nullable=True)
|
|
79
|
+
|
|
80
|
+
# Status of the event
|
|
81
|
+
status = Column(
|
|
82
|
+
EnumColumn(EventAuditStatus),
|
|
83
|
+
index=True,
|
|
84
|
+
nullable=False,
|
|
85
|
+
)
|
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from uuid import uuid4
|
|
4
4
|
|
|
5
|
-
from sqlalchemy import Column, ForeignKey, String
|
|
5
|
+
from sqlalchemy import Column, ForeignKey, Integer, String
|
|
6
6
|
|
|
7
7
|
from fides.api.db.base_class import Base
|
|
8
8
|
|
|
@@ -42,3 +42,8 @@ class ExperienceNotices(Base):
|
|
|
42
42
|
nullable=False,
|
|
43
43
|
primary_key=True,
|
|
44
44
|
)
|
|
45
|
+
display_order = Column(
|
|
46
|
+
Integer,
|
|
47
|
+
nullable=True,
|
|
48
|
+
doc="Optional ordering for notices within an experience. Lower values appear first.",
|
|
49
|
+
)
|
fides/api/models/fides_user.py
CHANGED
|
@@ -31,6 +31,7 @@ if TYPE_CHECKING:
|
|
|
31
31
|
from fides.api.models.fides_user_respondent_email_verification import (
|
|
32
32
|
FidesUserRespondentEmailVerification,
|
|
33
33
|
)
|
|
34
|
+
from fides.api.models.manual_task.manual_task import ManualTaskReference
|
|
34
35
|
from fides.api.models.sql_models import System # type: ignore[attr-defined]
|
|
35
36
|
from fides.api.models.system_manager import SystemManager
|
|
36
37
|
|
|
@@ -90,6 +91,14 @@ class FidesUser(Base):
|
|
|
90
91
|
uselist=False,
|
|
91
92
|
)
|
|
92
93
|
|
|
94
|
+
# Manual task assignments relationship
|
|
95
|
+
manual_task_references = relationship(
|
|
96
|
+
"ManualTaskReference",
|
|
97
|
+
primaryjoin="and_(FidesUser.id == foreign(ManualTaskReference.reference_id), "
|
|
98
|
+
"ManualTaskReference.reference_type == 'assigned_user')",
|
|
99
|
+
viewonly=True,
|
|
100
|
+
)
|
|
101
|
+
|
|
93
102
|
@property
|
|
94
103
|
def system_ids(self) -> List[str]:
|
|
95
104
|
return [system.id for system in self.systems]
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
from enum import Enum
|
|
2
|
+
|
|
3
|
+
from sqlalchemy import Boolean, Column, String, Text
|
|
4
|
+
from sqlalchemy.ext.declarative import declared_attr
|
|
5
|
+
|
|
6
|
+
from fides.api.db.base_class import Base, FidesBase
|
|
7
|
+
from fides.api.db.util import EnumColumn
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class IdentityDefinitionType(str, Enum):
|
|
11
|
+
"""Enum for the type of identity"""
|
|
12
|
+
|
|
13
|
+
EMAIL = "email"
|
|
14
|
+
PHONE_NUMBER = "phone_number"
|
|
15
|
+
UUID = "uuid"
|
|
16
|
+
STRING = "string"
|
|
17
|
+
INTEGER = "integer"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class IdentityDefinition(Base):
|
|
21
|
+
"""
|
|
22
|
+
Model for identity definitions in Fides. This isn't for specific identity values,
|
|
23
|
+
but for the types of identities that can be used in Fides.
|
|
24
|
+
|
|
25
|
+
For example:
|
|
26
|
+
```json
|
|
27
|
+
{
|
|
28
|
+
"identity_key": "customer_id",
|
|
29
|
+
"name": "Customer ID",
|
|
30
|
+
"description": "The unique identifier for the customer",
|
|
31
|
+
"type": "string"
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
@declared_attr
|
|
37
|
+
def __tablename__(self) -> str:
|
|
38
|
+
return "identity_definition"
|
|
39
|
+
|
|
40
|
+
# Overriding the id definition from Base so we don't treat this as the primary key
|
|
41
|
+
id = Column(
|
|
42
|
+
String(255),
|
|
43
|
+
nullable=False,
|
|
44
|
+
index=False,
|
|
45
|
+
unique=True,
|
|
46
|
+
default=FidesBase.generate_uuid,
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
# Primary key
|
|
50
|
+
identity_key = Column(String(255), primary_key=True)
|
|
51
|
+
|
|
52
|
+
# Schema definition
|
|
53
|
+
name = Column(String(255), nullable=False)
|
|
54
|
+
description = Column(Text, nullable=True)
|
|
55
|
+
type = Column(
|
|
56
|
+
EnumColumn(
|
|
57
|
+
IdentityDefinitionType,
|
|
58
|
+
native_enum=False,
|
|
59
|
+
values_callable=lambda x: [
|
|
60
|
+
i.value for i in x
|
|
61
|
+
], # allows enum _values_ to be stored rather than name
|
|
62
|
+
),
|
|
63
|
+
nullable=False,
|
|
64
|
+
)
|
|
65
|
+
created_by = Column(String(255), nullable=True)
|
|
66
|
+
is_default = Column(Boolean, nullable=False, server_default="false")
|
|
@@ -408,6 +408,28 @@ privacy_notice_regions_by_id: Dict[str, Union[Location, LocationGroup]] = (
|
|
|
408
408
|
) # should only be accessed for read-only access
|
|
409
409
|
|
|
410
410
|
|
|
411
|
+
def get_location_by_id(location: str) -> Optional[Location]:
|
|
412
|
+
"""
|
|
413
|
+
Get a Location object by ID, with automatic format normalization.
|
|
414
|
+
|
|
415
|
+
Handles various location formats (e.g., "US-CA", "us-ca", "us_ca") by
|
|
416
|
+
normalizing to the internal format (lowercase with underscores) used in locations.yml.
|
|
417
|
+
|
|
418
|
+
Args:
|
|
419
|
+
location: Location string in any format
|
|
420
|
+
|
|
421
|
+
Returns:
|
|
422
|
+
Location object if found, None otherwise
|
|
423
|
+
|
|
424
|
+
Examples:
|
|
425
|
+
>>> get_location_by_id("US-CA") # ISO 3166 format
|
|
426
|
+
>>> get_location_by_id("us_ca") # Internal format
|
|
427
|
+
>>> get_location_by_id("us-ca") # Mixed format
|
|
428
|
+
"""
|
|
429
|
+
normalized = location.lower().replace("-", "_")
|
|
430
|
+
return locations_by_id.get(normalized)
|
|
431
|
+
|
|
432
|
+
|
|
411
433
|
# dynamically create an enum based on definitions loaded from YAML
|
|
412
434
|
# This is a combination of "locations" and "location groups" for use on Privacy Experiences
|
|
413
435
|
PrivacyNoticeRegion = Enum( # type: ignore[misc]
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
from
|
|
2
|
-
from typing import TYPE_CHECKING, Optional, Union
|
|
1
|
+
from typing import TYPE_CHECKING, Any, Optional, Union
|
|
3
2
|
|
|
4
|
-
from sqlalchemy import Column, ForeignKey,
|
|
5
|
-
from sqlalchemy.dialects.postgresql import JSONB
|
|
3
|
+
from sqlalchemy import Column, ForeignKey, String
|
|
6
4
|
from sqlalchemy.ext.declarative import declared_attr
|
|
7
5
|
from sqlalchemy.orm import Session, relationship
|
|
8
6
|
|
|
9
|
-
from fides.api.db.base_class import
|
|
10
|
-
from fides.api.
|
|
7
|
+
from fides.api.db.base_class import FidesBase
|
|
8
|
+
from fides.api.models.conditional_dependency.conditional_dependency_base import (
|
|
9
|
+
ConditionalDependencyBase,
|
|
10
|
+
)
|
|
11
11
|
from fides.api.task.conditional_dependencies.schemas import (
|
|
12
12
|
ConditionGroup,
|
|
13
13
|
ConditionLeaf,
|
|
@@ -17,69 +17,28 @@ if TYPE_CHECKING:
|
|
|
17
17
|
from fides.api.models.manual_task.manual_task import ManualTask
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
class
|
|
21
|
-
"""
|
|
22
|
-
|
|
23
|
-
This enum defines the two types of nodes in a conditional dependency tree:
|
|
24
|
-
|
|
25
|
-
- leaf: A terminal node that represents a single condition (e.g., "user.age >= 18")
|
|
26
|
-
- group: A non-terminal node that groups multiple conditions with logical operators (AND/OR)
|
|
27
|
-
|
|
28
|
-
Examples:
|
|
29
|
-
leaf: Used for simple field comparisons like:
|
|
30
|
-
- "user.name exists"
|
|
31
|
-
- "user.age >= 18"
|
|
32
|
-
- "billing.subscription.status == 'active'"
|
|
33
|
-
|
|
34
|
-
group: Used to combine multiple conditions with logical operators:
|
|
35
|
-
- AND group: "user.age >= 18 AND user.active == true"
|
|
36
|
-
- OR group: "user.role == 'admin' OR user.verified == true"
|
|
37
|
-
- Nested groups: "(user.age >= 18 AND (user.role == 'admin' OR user.verified == true))"
|
|
38
|
-
"""
|
|
39
|
-
|
|
40
|
-
leaf = "leaf"
|
|
41
|
-
group = "group"
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
class ManualTaskConditionalDependency(Base):
|
|
45
|
-
"""Model for storing conditional dependencies."""
|
|
20
|
+
class ManualTaskConditionalDependency(ConditionalDependencyBase):
|
|
21
|
+
"""Manual task conditional dependencies - single type hierarchy."""
|
|
46
22
|
|
|
47
23
|
@declared_attr
|
|
48
24
|
def __tablename__(cls) -> str:
|
|
49
|
-
"""Overriding base class method to set the table name."""
|
|
50
25
|
return "manual_task_conditional_dependency"
|
|
51
26
|
|
|
52
27
|
# We need to redefine it here so that self-referential relationships
|
|
53
28
|
# can properly reference the `id` column instead of the built-in Python function.
|
|
54
29
|
id = Column(String(255), primary_key=True, default=FidesBase.generate_uuid)
|
|
55
|
-
|
|
56
30
|
# Foreign key relationships
|
|
57
31
|
manual_task_id = Column(
|
|
58
|
-
String,
|
|
32
|
+
String,
|
|
33
|
+
ForeignKey("manual_task.id", ondelete="CASCADE"),
|
|
34
|
+
nullable=False,
|
|
35
|
+
index=True,
|
|
59
36
|
)
|
|
60
37
|
parent_id = Column(
|
|
61
38
|
String,
|
|
62
39
|
ForeignKey("manual_task_conditional_dependency.id", ondelete="CASCADE"),
|
|
63
40
|
nullable=True,
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
# Condition metadata
|
|
67
|
-
condition_type = Column(
|
|
68
|
-
EnumColumn(ManualTaskConditionalDependencyType), nullable=False
|
|
69
|
-
) # leaf or group
|
|
70
|
-
field_address = Column(String, nullable=True) # For leaf conditions
|
|
71
|
-
operator = Column(String, nullable=True) # For leaf conditions
|
|
72
|
-
value = Column(JSONB, nullable=True) # For leaf conditions
|
|
73
|
-
logical_operator = Column(String, nullable=True) # 'and' or 'or' for groups
|
|
74
|
-
|
|
75
|
-
# Ordering
|
|
76
|
-
sort_order = Column(Integer, nullable=False, default=0)
|
|
77
|
-
|
|
78
|
-
__table_args__ = (
|
|
79
|
-
Index("ix_manual_task_conditional_dependency_manual_task_id", "manual_task_id"),
|
|
80
|
-
Index("ix_manual_task_conditional_dependency_parent_id", "parent_id"),
|
|
81
|
-
Index("ix_manual_task_conditional_dependency_condition_type", "condition_type"),
|
|
82
|
-
Index("ix_manual_task_conditional_dependency_sort_order", "sort_order"),
|
|
41
|
+
index=True,
|
|
83
42
|
)
|
|
84
43
|
|
|
85
44
|
# Relationships
|
|
@@ -97,38 +56,24 @@ class ManualTaskConditionalDependency(Base):
|
|
|
97
56
|
foreign_keys=[parent_id],
|
|
98
57
|
)
|
|
99
58
|
|
|
100
|
-
def to_condition_leaf(self) -> ConditionLeaf:
|
|
101
|
-
"""Convert to ConditionLeaf if this is a leaf condition"""
|
|
102
|
-
if self.condition_type != "leaf":
|
|
103
|
-
raise ValueError("Cannot convert group condition to leaf")
|
|
104
|
-
|
|
105
|
-
return ConditionLeaf(
|
|
106
|
-
field_address=self.field_address, operator=self.operator, value=self.value
|
|
107
|
-
)
|
|
108
|
-
|
|
109
|
-
def to_condition_group(self) -> ConditionGroup:
|
|
110
|
-
"""Convert to ConditionGroup if this is a group condition"""
|
|
111
|
-
if self.condition_type != "group":
|
|
112
|
-
raise ValueError("Cannot convert leaf condition to group")
|
|
113
|
-
|
|
114
|
-
# Recursively build children
|
|
115
|
-
child_conditions = []
|
|
116
|
-
children_list = [child for child in self.children] # type: ignore[attr-defined]
|
|
117
|
-
for child in sorted(children_list, key=lambda x: x.sort_order):
|
|
118
|
-
if child.condition_type == "leaf":
|
|
119
|
-
child_conditions.append(child.to_condition_leaf())
|
|
120
|
-
else:
|
|
121
|
-
child_conditions.append(child.to_condition_group())
|
|
122
|
-
|
|
123
|
-
return ConditionGroup(
|
|
124
|
-
logical_operator=self.logical_operator, conditions=child_conditions
|
|
125
|
-
)
|
|
126
|
-
|
|
127
59
|
@classmethod
|
|
128
60
|
def get_root_condition(
|
|
129
|
-
cls, db: Session,
|
|
61
|
+
cls, db: Session, **kwargs: Any
|
|
130
62
|
) -> Optional[Union[ConditionLeaf, ConditionGroup]]:
|
|
131
|
-
"""Get the root condition for a
|
|
63
|
+
"""Get the root condition for a manual task
|
|
64
|
+
|
|
65
|
+
Args:
|
|
66
|
+
db: Database session
|
|
67
|
+
**kwargs: Keyword arguments containing:
|
|
68
|
+
manual_task_id: ID of the manual task
|
|
69
|
+
|
|
70
|
+
Raises:
|
|
71
|
+
ValueError: If manual_task_id is not provided
|
|
72
|
+
"""
|
|
73
|
+
manual_task_id = kwargs.get("manual_task_id")
|
|
74
|
+
|
|
75
|
+
if not manual_task_id:
|
|
76
|
+
raise ValueError("manual_task_id is required as a keyword argument")
|
|
132
77
|
root = (
|
|
133
78
|
db.query(cls)
|
|
134
79
|
.filter(cls.manual_task_id == manual_task_id, cls.parent_id.is_(None))
|
|
@@ -138,7 +83,4 @@ class ManualTaskConditionalDependency(Base):
|
|
|
138
83
|
if not root:
|
|
139
84
|
return None
|
|
140
85
|
|
|
141
|
-
|
|
142
|
-
return root.to_condition_leaf()
|
|
143
|
-
|
|
144
|
-
return root.to_condition_group()
|
|
86
|
+
return root.to_correct_condition_type()
|
|
@@ -5,7 +5,7 @@ from pydantic import ConfigDict, create_model
|
|
|
5
5
|
from sqlalchemy import Column, ForeignKey, String, or_, text
|
|
6
6
|
from sqlalchemy.dialects.postgresql import JSONB
|
|
7
7
|
from sqlalchemy.ext.mutable import MutableList
|
|
8
|
-
from sqlalchemy.orm import Session, relationship
|
|
8
|
+
from sqlalchemy.orm import Session, relationship, selectinload
|
|
9
9
|
|
|
10
10
|
from fides.api.db.base_class import Base
|
|
11
11
|
from fides.api.models.attachment import Attachment, AttachmentReference
|
|
@@ -137,11 +137,22 @@ class AccessManualWebhook(Base):
|
|
|
137
137
|
) -> list["AccessManualWebhook"]:
|
|
138
138
|
"""Get all enabled access manual webhooks with fields"""
|
|
139
139
|
|
|
140
|
-
query =
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
140
|
+
query = (
|
|
141
|
+
db.query(cls)
|
|
142
|
+
.join(
|
|
143
|
+
ConnectionConfig,
|
|
144
|
+
AccessManualWebhook.connection_config_id == ConnectionConfig.id,
|
|
145
|
+
)
|
|
146
|
+
.options(
|
|
147
|
+
selectinload(AccessManualWebhook.connection_config).selectinload(
|
|
148
|
+
ConnectionConfig.system
|
|
149
|
+
), # type: ignore[attr-defined]
|
|
150
|
+
)
|
|
151
|
+
.filter(
|
|
152
|
+
ConnectionConfig.disabled.is_(False),
|
|
153
|
+
AccessManualWebhook.fields != text("'null'"),
|
|
154
|
+
AccessManualWebhook.fields != "[]",
|
|
155
|
+
)
|
|
145
156
|
)
|
|
146
157
|
|
|
147
158
|
# Add action_type filter only if action_type is provided
|
fides/api/models/messaging.py
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
from datetime import datetime
|
|
3
4
|
from typing import Dict, Optional, Type, Union
|
|
4
5
|
|
|
5
6
|
from loguru import logger
|
|
6
7
|
from pydantic import ValidationError
|
|
7
|
-
from sqlalchemy import Column, Enum, String
|
|
8
|
+
from sqlalchemy import Boolean, Column, DateTime, Enum, String
|
|
8
9
|
from sqlalchemy.dialects.postgresql import JSONB
|
|
9
10
|
from sqlalchemy.ext.mutable import MutableDict
|
|
10
11
|
from sqlalchemy.orm import Session
|
|
@@ -18,17 +19,18 @@ from fides.api.db.base_class import Base, JSONTypeOverride
|
|
|
18
19
|
from fides.api.schemas.messaging.messaging import (
|
|
19
20
|
EMAIL_MESSAGING_SERVICES,
|
|
20
21
|
SMS_MESSAGING_SERVICES,
|
|
21
|
-
|
|
22
|
+
MessagingConnectionTestStatus,
|
|
22
23
|
MessagingMethod,
|
|
24
|
+
MessagingServiceType,
|
|
25
|
+
)
|
|
26
|
+
from fides.api.schemas.messaging.shared_schemas import (
|
|
27
|
+
SUPPORTED_MESSAGING_SERVICE_SECRETS,
|
|
23
28
|
MessagingServiceSecretsAWS_SES,
|
|
24
29
|
MessagingServiceSecretsMailchimpTransactional,
|
|
25
30
|
MessagingServiceSecretsMailgun,
|
|
26
31
|
MessagingServiceSecretsTwilioEmail,
|
|
27
32
|
MessagingServiceSecretsTwilioSMS,
|
|
28
|
-
|
|
29
|
-
)
|
|
30
|
-
from fides.api.schemas.messaging.messaging_secrets_docs_only import (
|
|
31
|
-
possible_messaging_secrets,
|
|
33
|
+
PossibleMessagingSecrets,
|
|
32
34
|
)
|
|
33
35
|
from fides.api.util.logger import Pii
|
|
34
36
|
from fides.config import CONFIG
|
|
@@ -48,7 +50,7 @@ def get_messaging_method(
|
|
|
48
50
|
|
|
49
51
|
def get_schema_for_secrets(
|
|
50
52
|
service_type: MessagingServiceType,
|
|
51
|
-
secrets:
|
|
53
|
+
secrets: PossibleMessagingSecrets,
|
|
52
54
|
) -> SUPPORTED_MESSAGING_SERVICE_SECRETS:
|
|
53
55
|
"""
|
|
54
56
|
Returns the secrets that pertain to `service_type` represented as a Pydantic schema
|
|
@@ -87,6 +89,8 @@ class MessagingConfig(Base):
|
|
|
87
89
|
Enum(MessagingServiceType), index=True, unique=True, nullable=False
|
|
88
90
|
)
|
|
89
91
|
details = Column(MutableDict.as_mutable(JSONB), nullable=True)
|
|
92
|
+
last_test_timestamp = Column(DateTime(timezone=True))
|
|
93
|
+
last_test_succeeded = Column(Boolean)
|
|
90
94
|
secrets = Column(
|
|
91
95
|
MutableDict.as_mutable(
|
|
92
96
|
StringEncryptedType(
|
|
@@ -136,7 +140,7 @@ class MessagingConfig(Base):
|
|
|
136
140
|
self,
|
|
137
141
|
*,
|
|
138
142
|
db: Session,
|
|
139
|
-
messaging_secrets:
|
|
143
|
+
messaging_secrets: PossibleMessagingSecrets,
|
|
140
144
|
) -> None:
|
|
141
145
|
"""Creates or updates secrets associated with a config id"""
|
|
142
146
|
|
|
@@ -185,6 +189,18 @@ class MessagingConfig(Base):
|
|
|
185
189
|
f"Unknown notification_service_type {active_default_messaging_type} configured"
|
|
186
190
|
)
|
|
187
191
|
|
|
192
|
+
def update_test_status(
|
|
193
|
+
self, test_status: MessagingConnectionTestStatus, db: Session
|
|
194
|
+
) -> None:
|
|
195
|
+
"""
|
|
196
|
+
Updates last_test_timestamp and last_test_succeeded after an attempt to send a test message.
|
|
197
|
+
"""
|
|
198
|
+
self.last_test_timestamp = datetime.now()
|
|
199
|
+
self.last_test_succeeded = (
|
|
200
|
+
test_status == MessagingConnectionTestStatus.succeeded
|
|
201
|
+
)
|
|
202
|
+
self.save(db)
|
|
203
|
+
|
|
188
204
|
|
|
189
205
|
def default_messaging_config_name(service_type: str) -> str:
|
|
190
206
|
"""
|
|
@@ -192,7 +208,7 @@ def default_messaging_config_name(service_type: str) -> str:
|
|
|
192
208
|
|
|
193
209
|
Returns a name to be used in a default messaging config for the given type.
|
|
194
210
|
"""
|
|
195
|
-
return
|
|
211
|
+
return MessagingServiceType(service_type).human_readable
|
|
196
212
|
|
|
197
213
|
|
|
198
214
|
def default_messaging_config_key(service_type: str) -> str:
|
|
@@ -201,4 +217,8 @@ def default_messaging_config_key(service_type: str) -> str:
|
|
|
201
217
|
|
|
202
218
|
Returns a key to be used in a default messaging config for the given type.
|
|
203
219
|
"""
|
|
204
|
-
|
|
220
|
+
# Historically, when a key was not supplied, the service type string itself
|
|
221
|
+
# was used as the key (e.g. "mailgun"). Reverting to that behaviour keeps
|
|
222
|
+
# backward-compatibility with existing tests and API consumers that may rely
|
|
223
|
+
# on this convention.
|
|
224
|
+
return service_type.lower()
|
|
@@ -58,6 +58,20 @@ DEFAULT_MESSAGING_TEMPLATES: Dict[str, Any] = {
|
|
|
58
58
|
"body": "Your erasure request has been completed.",
|
|
59
59
|
},
|
|
60
60
|
},
|
|
61
|
+
MessagingActionType.MANUAL_TASK_DIGEST.value: {
|
|
62
|
+
"label": "Manual task digest",
|
|
63
|
+
"content": {
|
|
64
|
+
"subject": "Weekly DSR Summary from __ORGANIZATION_NAME__",
|
|
65
|
+
"body": "This is your weekly summary of open data subject requests tasks from __ORGANIZATION_NAME__ that require your attention. Please review the tasks in our Privacy Center to ensure timely completion.",
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
MessagingActionType.EXTERNAL_USER_WELCOME.value: {
|
|
69
|
+
"label": "External user welcome",
|
|
70
|
+
"content": {
|
|
71
|
+
"subject": "Welcome to our Privacy Center",
|
|
72
|
+
"body": "An account has been created for you by the privacy team at __ORG_NAME__ so that you can assist them in responding to data subject requests, as required by the GDPR and many US state laws, for users that have data in your systems. A portal is available to view and take action on these requests at: __PORTAL_LINK__. Through this portal you can upload or provide user data for users who have requested a copy of their information and attest that users have been removed from your system in the case of an erasure request. The provided link is valid for 30 days and you will be asked to verify your email address each time you access the portal. If you have any questions, please reach out first to your contacts at: __ORG_NAME__",
|
|
73
|
+
},
|
|
74
|
+
},
|
|
61
75
|
}
|
|
62
76
|
|
|
63
77
|
|
fides/api/models/policy.py
CHANGED
|
@@ -142,6 +142,9 @@ class Policy(Base):
|
|
|
142
142
|
except IndexError:
|
|
143
143
|
return None
|
|
144
144
|
|
|
145
|
+
def get_all_action_types(self) -> Set[ActionType]:
|
|
146
|
+
return set(rule.action_type for rule in self.rules) # type: ignore[attr-defined]
|
|
147
|
+
|
|
145
148
|
def generate_masking_secrets(self) -> Optional[List[MaskingSecretCache]]:
|
|
146
149
|
"""
|
|
147
150
|
Returns a list of masking secrets for the masking strategies in the policy.
|
|
@@ -177,6 +180,30 @@ class Policy(Base):
|
|
|
177
180
|
for category in node.get_data_categories()
|
|
178
181
|
)
|
|
179
182
|
|
|
183
|
+
def to_safe_dict(self) -> Dict[str, Any]:
|
|
184
|
+
"""
|
|
185
|
+
Returns a dictionary representation of the Policy, excluding sensitive information.
|
|
186
|
+
"""
|
|
187
|
+
return {
|
|
188
|
+
"id": self.id,
|
|
189
|
+
"name": self.name,
|
|
190
|
+
"key": self.key,
|
|
191
|
+
"drp_action": self.drp_action.value if self.drp_action else None, # type: ignore[attr-defined]
|
|
192
|
+
"execution_timeframe": self.execution_timeframe,
|
|
193
|
+
"client_id": self.client_id,
|
|
194
|
+
"rules": [
|
|
195
|
+
{
|
|
196
|
+
"id": rule.id,
|
|
197
|
+
"name": rule.name,
|
|
198
|
+
"key": rule.key,
|
|
199
|
+
"action_type": rule.action_type.value,
|
|
200
|
+
"masking_strategy": rule.masking_strategy,
|
|
201
|
+
"storage_destination_id": rule.storage_destination_id,
|
|
202
|
+
}
|
|
203
|
+
for rule in self.rules # type: ignore[attr-defined]
|
|
204
|
+
],
|
|
205
|
+
}
|
|
206
|
+
|
|
180
207
|
|
|
181
208
|
def _get_ref_from_taxonomy(
|
|
182
209
|
fides_key: FidesKey,
|