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.
Files changed (607) hide show
  1. {ethyca_fides-2.69.1rc0.dist-info → ethyca_fides-2.76.0rc2.dist-info}/METADATA +9 -6
  2. {ethyca_fides-2.69.1rc0.dist-info → ethyca_fides-2.76.0rc2.dist-info}/RECORD +488 -361
  3. fides/_version.py +3 -3
  4. fides/api/alembic/alembic.ini +5 -1
  5. fides/api/alembic/migrations/env.py +7 -1
  6. fides/api/alembic/migrations/versions/0eef0016cf06_adding_oauth2_config_for_.py +69 -0
  7. fides/api/alembic/migrations/versions/303287c70600_migrate_resource_type_from_enum_to_.py +99 -0
  8. fides/api/alembic/migrations/versions/30369bb8ae01_add_webmonitorgroupjob_model.py +67 -0
  9. fides/api/alembic/migrations/versions/3efe14d4469a_adds_new_experience_configs_for_vendor_.py +79 -0
  10. fides/api/alembic/migrations/versions/4bfbeff34611_add_polling_status.py +68 -0
  11. fides/api/alembic/migrations/versions/4d8c0fcc5771_adding_default_system_groups.py +78 -0
  12. fides/api/alembic/migrations/versions/5fa78b1f324d_add_event_audit_table.py +82 -0
  13. fides/api/alembic/migrations/versions/65a1bc82ae09_adds_experience_config_for_delete_.py +53 -0
  14. fides/api/alembic/migrations/versions/67d0e389b003_update_consentstatus_enum.py +47 -0
  15. fides/api/alembic/migrations/versions/795f46f656c0_migrate_field_type_from_enum_to_string.py +61 -0
  16. fides/api/alembic/migrations/versions/7db29f9cd77b_create_new_sub_request_table.py +95 -0
  17. fides/api/alembic/migrations/versions/918aefc950c9_create_digest_conditional_dependencies.py +125 -0
  18. fides/api/alembic/migrations/versions/9caf76161e55_make_user_assigned_data_uses_nullable_.py +64 -0
  19. fides/api/alembic/migrations/versions/9e0dcbf67b9f_add_digest_config.py +84 -0
  20. fides/api/alembic/migrations/versions/a55e12c2c2df_add_tagging_instructions_to_data_.py +29 -0
  21. fides/api/alembic/migrations/versions/a8e0c016afd_add_classification_benchmark_table.py +126 -0
  22. fides/api/alembic/migrations/versions/b97e92b038d2_add_digest_execution_model.py +117 -0
  23. fides/api/alembic/migrations/versions/b9bfa12c167b_add_not_applicable_to_asset_consentstatus.py +46 -0
  24. fides/api/alembic/migrations/versions/c09e76282dd1_add_privacy_request_duplication_cols.py +64 -0
  25. fides/api/alembic/migrations/versions/cd8649be3a2b_add_classifications_and_user_assigned_.py +74 -0
  26. fides/api/alembic/migrations/versions/e2cda8d6abc3_add_dismissed_in_activity_view_to_.py +29 -0
  27. fides/api/alembic/migrations/versions/f108fa05c579_adds_optional_duration_field_to_assets.py +28 -0
  28. fides/api/alembic/migrations/versions/f36ce1bde293_add_system_groups.py +132 -0
  29. fides/api/alembic/migrations/versions/fd7571bef683_adds_new_fields_to_messagingconfig_for_.py +31 -0
  30. fides/api/alembic/migrations/versions/xx_2025_10_17_1603_5093e92e2a5a_add_consent_data_v3_to_the_database.py +72 -0
  31. fides/api/alembic/migrations/versions/xx_2025_10_27_1834_67f0f2f4748e_adding_identity_definition_model.py +45 -0
  32. fides/api/alembic/migrations/versions/xx_2025_10_29_1659_80d28dea3b6b_added_duplicate_group_table.py +79 -0
  33. fides/api/alembic/migrations/versions/xx_2025_11_05_0200_f1a2b3c4d5e6_create_staged_resource_error_table.py +82 -0
  34. fides/api/alembic/migrations/versions/xx_2025_11_07_1709_56fe6fad2d89_add_notice_display_order.py +47 -0
  35. fides/api/alembic/migrations/versions/xx_2025_11_10_1200_a1b2c3d4e5f6_add_test_datastore_to_connectiontype.py +53 -0
  36. fides/api/alembic/migrations/versions/xx_2025_11_11_1317_7d82c8fc4c34_store_saas_template_datasets.py +68 -0
  37. fides/api/alembic/migrations/versions/xx_2025_11_12_1430_b2c3d4e5f6a7_add_default_identity_definitions.py +81 -0
  38. fides/api/alembic/migrations/versions/xx_2025_11_25_1854_3ff6449c099e_add_index_on_providedidentity_privacy_.py +50 -0
  39. fides/api/api/v1/api.py +2 -0
  40. fides/api/api/v1/endpoints/admin.py +39 -0
  41. fides/api/api/v1/endpoints/connection_endpoints.py +191 -47
  42. fides/api/api/v1/endpoints/connector_template_endpoints.py +167 -0
  43. fides/api/api/v1/endpoints/generic_overrides.py +90 -15
  44. fides/api/api/v1/endpoints/messaging_endpoints.py +164 -34
  45. fides/api/api/v1/endpoints/pre_approval_webhook_endpoints.py +5 -5
  46. fides/api/api/v1/endpoints/privacy_request_endpoints.py +231 -46
  47. fides/api/api/v1/endpoints/saas_config_endpoints.py +63 -92
  48. fides/api/api/v1/endpoints/storage_endpoints.py +5 -1
  49. fides/api/api/v1/endpoints/system.py +157 -100
  50. fides/api/api/v1/endpoints/user_endpoints.py +17 -4
  51. fides/api/app_setup.py +1 -3
  52. fides/api/common_exceptions.py +8 -0
  53. fides/api/db/base.py +8 -0
  54. fides/api/db/crud.py +30 -2
  55. fides/api/db/database.py +261 -4
  56. fides/api/db/safe_crud.py +377 -0
  57. fides/api/db/seed.py +35 -1
  58. fides/api/email_templates/get_email_template.py +3 -0
  59. fides/api/email_templates/template_names.py +1 -0
  60. fides/api/email_templates/templates/external_user_welcome.html +9 -5
  61. fides/api/email_templates/templates/manual_task_digest.html +316 -0
  62. fides/api/main.py +2 -0
  63. fides/api/migrations/post_upgrade_index_creation.py +20 -0
  64. fides/api/models/asset.py +17 -1
  65. fides/api/models/attachment.py +1 -0
  66. fides/api/models/conditional_dependency/__init__.py +0 -0
  67. fides/api/models/conditional_dependency/conditional_dependency_base.py +311 -0
  68. fides/api/models/connection_oauth_credentials.py +57 -0
  69. fides/api/models/connectionconfig.py +11 -1
  70. fides/api/models/detection_discovery/__init__.py +4 -0
  71. fides/api/models/detection_discovery/classification_benchmark.py +140 -0
  72. fides/api/models/detection_discovery/core.py +78 -3
  73. fides/api/models/detection_discovery/monitor_task.py +3 -1
  74. fides/api/models/detection_discovery/staged_resource_error.py +25 -0
  75. fides/api/models/detection_discovery/web_monitor.py +61 -0
  76. fides/api/models/digest/__init__.py +16 -0
  77. fides/api/models/digest/conditional_dependencies.py +275 -0
  78. fides/api/models/digest/digest_config.py +110 -0
  79. fides/api/models/digest/digest_execution.py +142 -0
  80. fides/api/models/event_audit.py +85 -0
  81. fides/api/models/experience_notices.py +6 -1
  82. fides/api/models/fides_user.py +9 -0
  83. fides/api/models/identity_definition.py +66 -0
  84. fides/api/models/location_regulation_selections.py +22 -0
  85. fides/api/models/manual_task/conditional_dependency.py +29 -87
  86. fides/api/models/manual_webhook.py +17 -6
  87. fides/api/models/messaging.py +30 -10
  88. fides/api/models/messaging_template.py +14 -0
  89. fides/api/models/policy.py +27 -0
  90. fides/api/models/privacy_experience.py +41 -0
  91. fides/api/models/privacy_notice.py +196 -13
  92. fides/api/models/privacy_preference.py +2 -0
  93. fides/api/models/privacy_request/duplicate_group.py +84 -0
  94. fides/api/models/privacy_request/privacy_request.py +154 -8
  95. fides/api/models/privacy_request/provided_identity.py +22 -1
  96. fides/api/models/privacy_request/request_task.py +98 -1
  97. fides/api/models/privacy_request/webhook.py +3 -1
  98. fides/api/models/saas_template_dataset.py +63 -0
  99. fides/api/models/sql_models.py +161 -7
  100. fides/api/models/system_group.py +85 -0
  101. fides/api/models/taxonomy.py +91 -9
  102. fides/api/models/v3/__init__.py +0 -0
  103. fides/api/models/v3/privacy_preferences.py +85 -0
  104. fides/api/models/worker_task.py +8 -0
  105. fides/api/oauth/roles.py +4 -0
  106. fides/api/schemas/application_config.py +32 -1
  107. fides/api/schemas/connection_configuration/connection_config.py +1 -30
  108. fides/api/schemas/connection_configuration/connection_oauth_config.py +42 -0
  109. fides/api/schemas/connection_configuration/connection_secrets_mongodb.py +15 -3
  110. fides/api/schemas/connection_configuration/connection_secrets_mssql.py +5 -0
  111. fides/api/schemas/messaging/messaging.py +49 -66
  112. fides/api/schemas/messaging/messaging_secrets_docs_only.py +1 -1
  113. fides/api/schemas/messaging/shared_schemas.py +102 -0
  114. fides/api/schemas/oauth.py +2 -1
  115. fides/api/schemas/privacy_center_config.py +29 -5
  116. fides/api/schemas/privacy_request.py +44 -7
  117. fides/api/schemas/saas/async_polling_configuration.py +81 -0
  118. fides/api/schemas/saas/connector_template.py +14 -0
  119. fides/api/schemas/saas/saas_config.py +12 -20
  120. fides/api/schemas/system.py +8 -0
  121. fides/api/schemas/taxonomy_extensions.py +8 -0
  122. fides/api/schemas/user.py +2 -2
  123. fides/api/service/async_dsr/handlers/__init__.py +0 -0
  124. fides/api/service/async_dsr/handlers/polling_attachment_handler.py +155 -0
  125. fides/api/service/async_dsr/handlers/polling_request_handler.py +88 -0
  126. fides/api/service/async_dsr/handlers/polling_response_handler.py +261 -0
  127. fides/api/service/async_dsr/handlers/polling_sub_request_handler.py +123 -0
  128. fides/api/service/async_dsr/strategies/__init__.py +0 -0
  129. fides/api/service/async_dsr/strategies/async_dsr_strategy.py +52 -0
  130. fides/api/service/async_dsr/strategies/async_dsr_strategy_callback.py +199 -0
  131. fides/api/service/async_dsr/strategies/async_dsr_strategy_factory.py +72 -0
  132. fides/api/service/async_dsr/strategies/async_dsr_strategy_polling.py +691 -0
  133. fides/api/service/async_dsr/utils.py +130 -0
  134. fides/api/service/connectors/base_erasure_email_connector.py +7 -0
  135. fides/api/service/connectors/bigquery_connector.py +34 -16
  136. fides/api/service/connectors/fides/fides_client.py +63 -1
  137. fides/api/service/connectors/http_connector.py +48 -12
  138. fides/api/service/connectors/microsoft_sql_server_connector.py +6 -1
  139. fides/api/service/connectors/mongodb_connector.py +74 -9
  140. fides/api/service/connectors/query_configs/saas_query_config.py +160 -79
  141. fides/api/service/connectors/saas/connector_registry_service.py +42 -135
  142. fides/api/service/connectors/saas_connector.py +116 -76
  143. fides/api/service/connectors/sql_connector.py +14 -4
  144. fides/api/service/deps.py +25 -2
  145. fides/api/service/messaging/message_dispatch_service.py +98 -20
  146. fides/api/service/messaging/messaging_crud_service.py +5 -9
  147. fides/api/service/privacy_request/attachment_handling.py +9 -2
  148. fides/api/service/privacy_request/dsr_package/dsr_report_builder.py +17 -9
  149. fides/api/service/privacy_request/dsr_package/templates/attachments_index.html +41 -30
  150. fides/api/service/privacy_request/dsr_package/templates/clickme.html +68 -0
  151. fides/api/service/privacy_request/dsr_package/templates/dataset_index.html +30 -27
  152. fides/api/service/privacy_request/duplication_detection.py +439 -0
  153. fides/api/service/privacy_request/email_batch_service.py +2 -1
  154. fides/api/service/privacy_request/request_runner_service.py +92 -91
  155. fides/api/service/privacy_request/request_service.py +74 -90
  156. fides/api/service/saas_request/saas_request_override_factory.py +71 -1
  157. fides/api/service/storage/streaming/schemas.py +27 -19
  158. fides/api/service/storage/streaming/smart_open_client.py +2 -2
  159. fides/api/service/storage/streaming/smart_open_streaming_storage.py +238 -147
  160. fides/api/service/storage/util.py +20 -106
  161. fides/api/service/strategy.py +6 -3
  162. fides/api/task/conditional_dependencies/privacy_request/__init__.py +0 -0
  163. fides/api/task/conditional_dependencies/privacy_request/convenience_fields.py +155 -0
  164. fides/api/task/conditional_dependencies/privacy_request/privacy_request_data.py +140 -0
  165. fides/api/task/conditional_dependencies/privacy_request/schemas.py +212 -0
  166. fides/api/task/conditional_dependencies/sql_schemas.py +301 -0
  167. fides/api/task/conditional_dependencies/sql_translator.py +757 -0
  168. fides/api/task/conditional_dependencies/util.py +111 -0
  169. fides/api/task/execute_request_tasks.py +34 -13
  170. fides/api/task/filter_results.py +35 -2
  171. fides/api/task/graph_runners.py +2 -32
  172. fides/api/task/graph_task.py +42 -12
  173. fides/api/task/manual/manual_task_conditional_evaluation.py +33 -28
  174. fides/api/task/manual/manual_task_graph_task.py +4 -1
  175. fides/api/task/manual/manual_task_utils.py +68 -26
  176. fides/api/task/scheduler_utils.py +39 -0
  177. fides/api/tasks/__init__.py +15 -1
  178. fides/api/util/cache.py +5 -1
  179. fides/api/util/connection_util.py +101 -218
  180. fides/api/util/event_audit_util.py +230 -0
  181. fides/api/util/filter_utils.py +0 -3
  182. fides/api/util/fuzzy_search_utils.py +7 -1
  183. fides/api/util/lock.py +13 -3
  184. fides/api/util/logger.py +58 -4
  185. fides/api/util/logger_context_utils.py +3 -1
  186. fides/api/util/masking_util.py +31 -0
  187. fides/api/util/memory_watchdog.py +118 -0
  188. fides/api/util/rate_limit.py +25 -7
  189. fides/api/util/saas_config_updater.py +76 -0
  190. fides/api/util/saas_util.py +28 -1
  191. fides/api/worker/__init__.py +6 -0
  192. fides/common/api/scope_registry.py +6 -7
  193. fides/common/api/v1/urn_registry.py +15 -3
  194. fides/config/__init__.py +11 -2
  195. fides/config/celery_settings.py +42 -0
  196. fides/config/config_proxy.py +10 -0
  197. fides/config/duplicate_detection_settings.py +31 -0
  198. fides/config/execution_settings.py +6 -6
  199. fides/config/security_settings.py +4 -1
  200. fides/config/utils.py +5 -0
  201. fides/data/language/languages.yml +2 -0
  202. fides/service/connection/__init__.py +0 -0
  203. fides/service/connection/connection_service.py +651 -0
  204. fides/service/dataset/dataset_service.py +39 -0
  205. fides/service/event_audit_service.py +109 -0
  206. fides/service/messaging/aws_ses_service.py +2 -4
  207. fides/service/messaging/messaging_service.py +75 -74
  208. fides/service/privacy_request/privacy_request_service.py +345 -100
  209. fides/service/system/__init__.py +0 -0
  210. fides/service/system/system_service.py +153 -0
  211. fides/service/taxonomy/handlers/legacy_handler.py +3 -3
  212. fides/service/taxonomy/taxonomy_service.py +64 -18
  213. fides/ui-build/static/admin/404.html +1 -1
  214. fides/ui-build/static/admin/_next/static/chunks/1099-688fa865621531cc.js +1 -0
  215. fides/ui-build/static/admin/_next/static/chunks/1115-7fd171dac1eb0e51.js +1 -0
  216. fides/ui-build/static/admin/_next/static/chunks/1276.deb10ae2643f8463.js +1 -0
  217. fides/ui-build/static/admin/_next/static/chunks/1438-8a33b3834d6e43f3.js +1 -0
  218. fides/ui-build/static/admin/_next/static/chunks/{6148-59a59d5c5925344f.js → 1533-84e250d1f26e6d7d.js} +1 -1
  219. fides/ui-build/static/admin/_next/static/chunks/1821-c1daa160f492aacf.js +1 -0
  220. fides/ui-build/static/admin/_next/static/chunks/1840-359ee056e4cf6629.js +1 -0
  221. fides/ui-build/static/admin/_next/static/chunks/{1975.78e719130cfe3fd6.js → 1975.bef017bc80e2012c.js} +1 -1
  222. fides/ui-build/static/admin/_next/static/chunks/2040-70972e15960d9afe.js +1 -0
  223. fides/ui-build/static/admin/_next/static/chunks/2121.321b0fd3932164d4.js +1 -0
  224. fides/ui-build/static/admin/_next/static/chunks/2397-3434603a97f3f5d6.js +1 -0
  225. fides/ui-build/static/admin/_next/static/chunks/2921-49ed0ed897832958.js +1 -0
  226. fides/ui-build/static/admin/_next/static/chunks/3150-da5406b80d25fe6d.js +1 -0
  227. fides/ui-build/static/admin/_next/static/chunks/3214-90ce0a366b0f461a.js +1 -0
  228. fides/ui-build/static/admin/_next/static/chunks/3377-02bf9780fd383d94.js +1 -0
  229. fides/ui-build/static/admin/_next/static/chunks/3615-5e2d062d684b8fa1.js +1 -0
  230. fides/ui-build/static/admin/_next/static/chunks/3655-5e1ba5dd68b5ec48.js +1 -0
  231. fides/ui-build/static/admin/_next/static/chunks/3729-31ff8ba51491bf21.js +1 -0
  232. fides/ui-build/static/admin/_next/static/chunks/3872-cff30ca0844fe2b1.js +1 -0
  233. fides/ui-build/static/admin/_next/static/chunks/3931-8bedde156fe83564.js +1 -0
  234. fides/ui-build/static/admin/_next/static/chunks/401-582d9970d89deefe.js +1 -0
  235. fides/ui-build/static/admin/_next/static/chunks/4093-7e47408c28de5375.js +1 -0
  236. fides/ui-build/static/admin/_next/static/chunks/{4259.d1507e0db19cbed7.js → 4259.05038c9b78467244.js} +1 -1
  237. fides/ui-build/static/admin/_next/static/chunks/431-e01ee730c8ad9ece.js +1 -0
  238. fides/ui-build/static/admin/_next/static/chunks/4322-f6aeff6880726c83.js +1 -0
  239. fides/ui-build/static/admin/_next/static/chunks/4339-04a715ab07122744.js +1 -0
  240. fides/ui-build/static/admin/_next/static/chunks/4496-ccbce2459174e0d6.js +1 -0
  241. fides/ui-build/static/admin/_next/static/chunks/454-d5c2c84f1a14e4f1.js +1 -0
  242. fides/ui-build/static/admin/_next/static/chunks/4589-c1d83c6a8dab4d30.js +1 -0
  243. fides/ui-build/static/admin/_next/static/chunks/4809-a8f4a108a42f53ed.js +1 -0
  244. fides/ui-build/static/admin/_next/static/chunks/4903-19c0bc07a956dfa8.js +1 -0
  245. fides/ui-build/static/admin/_next/static/chunks/4910-d990773601f794c1.js +1 -0
  246. fides/ui-build/static/admin/_next/static/chunks/5185-96423702fba70ced.js +1 -0
  247. fides/ui-build/static/admin/_next/static/chunks/5258-4e308cca01d59367.js +1 -0
  248. fides/ui-build/static/admin/_next/static/chunks/5487-5c3501754bf027ba.js +1 -0
  249. fides/ui-build/static/admin/_next/static/chunks/549-1bdc3e6f3264c020.js +1 -0
  250. fides/ui-build/static/admin/_next/static/chunks/5505-43b9c39491b88e08.js +1 -0
  251. fides/ui-build/static/admin/_next/static/chunks/5698.2135391a128cc373.js +164 -0
  252. fides/ui-build/static/admin/_next/static/chunks/5783-016dfcee8e49bf61.js +1 -0
  253. fides/ui-build/static/admin/_next/static/chunks/5826-4db99ea4e5077911.js +1 -0
  254. fides/ui-build/static/admin/_next/static/chunks/590-be447cacf12419dd.js +1 -0
  255. fides/ui-build/static/admin/_next/static/chunks/6084-91badbc6569a0efb.js +1 -0
  256. fides/ui-build/static/admin/_next/static/chunks/6344-026cb323c1d49926.js +1 -0
  257. fides/ui-build/static/admin/_next/static/chunks/6362-ba0e12f2fc4cad94.js +1 -0
  258. fides/ui-build/static/admin/_next/static/chunks/6853-882889659769d7b4.js +1 -0
  259. fides/ui-build/static/admin/_next/static/chunks/6882-bb1b469d7d7f5335.js +1 -0
  260. fides/ui-build/static/admin/_next/static/chunks/6954-0dcf22a9aabe39c5.js +1 -0
  261. fides/ui-build/static/admin/_next/static/chunks/7170-46db82bb5b55e856.js +1 -0
  262. fides/ui-build/static/admin/_next/static/chunks/7218-2ace8c82e3e7eb74.js +1 -0
  263. fides/ui-build/static/admin/_next/static/chunks/7245-1cdafb35f289861b.js +1 -0
  264. fides/ui-build/static/admin/_next/static/chunks/7630-7f75ab7b8df42eb3.js +1 -0
  265. fides/ui-build/static/admin/_next/static/chunks/7654-2e9a8be02e41769a.js +1 -0
  266. fides/ui-build/static/admin/_next/static/chunks/8212-348ddd2b6933db70.js +1 -0
  267. fides/ui-build/static/admin/_next/static/chunks/9014-eeae6f581158e645.js +1 -0
  268. fides/ui-build/static/admin/_next/static/chunks/{5596-bb601cbf40e47a0f.js → 9195-da717d324917b049.js} +3 -3
  269. fides/ui-build/static/admin/_next/static/chunks/9450-b7b7bb1d755ecf57.js +1 -0
  270. fides/ui-build/static/admin/_next/static/chunks/{9676.9fd9552ef744c717.js → 9676.1f395eeb9cc34968.js} +1 -1
  271. fides/ui-build/static/admin/_next/static/chunks/9826-1078e46f3ac0b688.js +1 -0
  272. fides/ui-build/static/admin/_next/static/chunks/9911-ece086f2230e34f0.js +1 -0
  273. fides/ui-build/static/admin/_next/static/chunks/pages/{404-471a6b18e712f050.js → 404-800be6996aaa999c.js} +1 -1
  274. fides/ui-build/static/admin/_next/static/chunks/pages/{_app-fcdad91f6f66292b.js → _app-de4b578c904df772.js} +57 -220
  275. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/manual-f12020b82dd4bd1a.js +1 -0
  276. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/multiple-a911b7990371704d.js +1 -0
  277. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-ad585b79953c2753.js +1 -0
  278. fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-406170eaae4329c6.js → add-vendors-bb263d394ca1c8fa.js} +1 -1
  279. fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure-6907c368d8611c44.js +1 -0
  280. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-f80cf2d3966816fd.js → [id]-c32f381af358149b.js} +1 -1
  281. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{new-e74cb5ea87f15b40.js → new-6efb3c069d8b47dd.js} +1 -1
  282. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience-1975c529905eea9b.js +1 -0
  283. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-b378576cba255609.js → [id]-b05331178928ab52.js} +1 -1
  284. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-2ca1de7b88094ab0.js → new-516834e930bb0d0d.js} +1 -1
  285. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-985717f2565f9d9d.js +1 -0
  286. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-226efa1dcd41437f.js → properties-2be773e08498e40c.js} +1 -1
  287. fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-850afb74f4192e87.js +1 -0
  288. fides/ui-build/static/admin/_next/static/chunks/pages/consent-b63d1e395d879b86.js +1 -0
  289. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]-5b28f0f674ea87bd.js +1 -0
  290. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-04cfe2cfba7b7cd8.js → [projectUrn]-676177e2f3c9c2a2.js} +1 -1
  291. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-794906929efb8e1d.js +1 -0
  292. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/[resourceUrn]-3ccbf7c0d06507b9.js +1 -0
  293. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-1ea0b24d306b1e67.js +1 -0
  294. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/datastore/[monitorId]-d4861a4a218bb65a.js +1 -0
  295. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/datastore-4498881c26f1458d.js +1 -0
  296. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/infrastructure/[monitorId]-66bd265044daf97d.js +1 -0
  297. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/infrastructure-c9c79fa8576a4f77.js +1 -0
  298. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/website/[monitorId]/[systemId]-60cacc3232c2eead.js +1 -0
  299. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/website/[monitorId]-437bd64a3016de36.js +1 -0
  300. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/website-5b3e0009d442bc3f.js +1 -0
  301. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-8349248c2da970a6.js +1 -0
  302. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-6919a1d6cadaa46b.js +1 -0
  303. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-8f736b078e9842da.js → [resourceUrn]-1a50d421897d3da1.js} +1 -1
  304. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-eb814e3c22807871.js → detection-49509414a15e8393.js} +1 -1
  305. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-6875b7783fcfda2f.js → [resourceUrn]-1a1bb80b586d0c0f.js} +1 -1
  306. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-172dbd7740e212ca.js → discovery-49de61df1e8e7fba.js} +1 -1
  307. fides/ui-build/static/admin/_next/static/chunks/pages/datamap-c2719f5cff20c0f8.js +1 -0
  308. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/{[...subfieldNames]-dfd71c1e9c458b89.js → [...subfieldNames]-415015aebab60436.js} +1 -1
  309. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/{[collectionName]-7cdc42ec5493b83d.js → [collectionName]-5accb09715b5122d.js} +1 -1
  310. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-aebecca1d8ec5f98.js +1 -0
  311. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-9551a82ddec9f909.js +1 -0
  312. fides/ui-build/static/admin/_next/static/chunks/pages/dataset-72f8fe47beef0f09.js +1 -0
  313. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/[id]-3a8aa3f633528e88.js +1 -0
  314. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/new-87512616f35ec6da.js +1 -0
  315. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-2f1bf4eac7aa55fd.js +1 -0
  316. fides/ui-build/static/admin/_next/static/chunks/pages/{fides-js-docs-1f4335dca5c09860.js → fides-js-docs-5235760b3e508d7d.js} +1 -1
  317. fides/ui-build/static/admin/_next/static/chunks/pages/index-8d67cd2872cb682a.js +1 -0
  318. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-7a631df29cd0e31a.js +1 -0
  319. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-ea3bc43cdaf273de.js +1 -0
  320. fides/ui-build/static/admin/_next/static/chunks/pages/new-privacy-requests-5d8632bba1b81cd4.js +1 -0
  321. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/digests/[id]-92e01822ecde8fb8.js +1 -0
  322. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/digests/new-1256cf6d3f6794e0.js +1 -0
  323. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/digests-0daac00911d27617.js +1 -0
  324. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/providers/[key]-2d976fe5e8ba0a3a.js +1 -0
  325. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/providers/new-7766ba497b863740.js +1 -0
  326. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/providers-f2880d2ed4734270.js +1 -0
  327. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates/[id]-669f585c3458faff.js +1 -0
  328. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates/add-template-c79e7724e4bc3899.js +1 -0
  329. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates-891654e8dc13965c.js +1 -0
  330. fides/ui-build/static/admin/_next/static/chunks/pages/notifications-40c8148244c5d347.js +1 -0
  331. fides/ui-build/static/admin/_next/static/chunks/pages/poc/ant-components-1e86f3e28bd23ed6.js +1 -0
  332. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/AntForm-9b7bd8c38f02c091.js +1 -0
  333. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikAntFormItem-b18a53a940cf9e19.js +1 -0
  334. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikControlled-6d028d7450e77578.js +1 -0
  335. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikField-8399083ee2cd8cc2.js +1 -0
  336. fides/ui-build/static/admin/_next/static/chunks/pages/poc/forms-0a910125cdb2b3b8.js +1 -0
  337. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-acc90b6f7fe915cb.js +1 -0
  338. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-bbc42026f2685438.js +1 -0
  339. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure-c08ca6ad21c99799.js +1 -0
  340. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-77c2db582f8823bc.js +1 -0
  341. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-e784c05d056b2371.js → [id]-74ccea4868408e3d.js} +1 -1
  342. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-0a7a2db148a7561a.js → add-property-7d9f09bfe9d44dfc.js} +1 -1
  343. fides/ui-build/static/admin/_next/static/chunks/pages/{properties-da734840e4f9d04b.js → properties-cd77bc30672bb1fa.js} +1 -1
  344. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-cc3bd9540132d5ed.js +1 -0
  345. fides/ui-build/static/admin/_next/static/chunks/pages/sandbox/privacy-notices-7ce7d720107ab4b5.js +1 -0
  346. fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/alpha-68eaac2d79133679.js +1 -0
  347. fides/ui-build/static/admin/_next/static/chunks/pages/settings/about-6c4904c157477285.js +1 -0
  348. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-ae789892343c24f5.js +1 -0
  349. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-13ee1b331ced0846.js +1 -0
  350. fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields/[id]-ee4e43692336a330.js +1 -0
  351. fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields/new-ca51d794abfcbf25.js +1 -0
  352. fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-ecd1dc5db8e81409.js +1 -0
  353. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domain-records-df06f7e2f668c540.js +1 -0
  354. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-da0c77bd510c6c51.js +1 -0
  355. fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-950b0c115bf673d8.js +1 -0
  356. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-2e635dcd11b78224.js → locations-7e36cb4756973a9d.js} +1 -1
  357. fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-a0e5ed486d24ccf3.js +1 -0
  358. fides/ui-build/static/admin/_next/static/chunks/pages/settings/privacy-requests-3cdebafb6870d3ad.js +1 -0
  359. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-7c02e469d8c5bd74.js → regulations-159aad34f1021320.js} +1 -1
  360. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-dbd1a64090ad0946.js +1 -0
  361. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]-7d042497a57a3788.js +1 -0
  362. fides/ui-build/static/admin/_next/static/chunks/pages/systems-21f1172e73dfc9f0.js +1 -0
  363. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-e553161e6338ee48.js +1 -0
  364. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/{new-92f52c43f522a350.js → new-efc4af017723e57a.js} +1 -1
  365. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-64452dfae2c5e614.js → [id]-b152319d67372ee4.js} +1 -1
  366. fides/ui-build/static/admin/_next/static/chunks/pages/user-management-dba8692491f7935e.js +1 -0
  367. fides/ui-build/static/admin/_next/static/chunks/webpack-09ca52bc7beb0b43.js +1 -0
  368. fides/ui-build/static/admin/_next/static/css/012b10627a654d5c.css +1 -0
  369. fides/ui-build/static/admin/_next/static/css/05d05fc31d09638b.css +1 -0
  370. fides/ui-build/static/admin/_next/static/css/0fd6e0884cfcc5f3.css +1 -0
  371. fides/ui-build/static/admin/_next/static/css/14ba79c49597d37a.css +1 -0
  372. fides/ui-build/static/admin/_next/static/css/{34a7eb08b86ddb57.css → 3d6582469f7d56e0.css} +1 -1
  373. fides/ui-build/static/admin/_next/static/css/3d66bb57ddcb0978.css +1 -0
  374. fides/ui-build/static/admin/_next/static/css/4861ca3e088f2d05.css +1 -0
  375. fides/ui-build/static/admin/_next/static/css/a1800714b486e230.css +1 -0
  376. fides/ui-build/static/admin/_next/static/css/a1e4be9466578ef1.css +1 -0
  377. fides/ui-build/static/admin/_next/static/css/af32fcac7a177a0e.css +1 -0
  378. fides/ui-build/static/admin/_next/static/css/cb417f0587918f85.css +1 -0
  379. fides/ui-build/static/admin/_next/static/css/dd15c278b964de80.css +1 -0
  380. fides/ui-build/static/admin/_next/static/css/{5f393dea1c0d031c.css → f89607996ad54f4b.css} +1 -1
  381. fides/ui-build/static/admin/_next/static/css/f9a2a44d3d34c904.css +1 -0
  382. fides/ui-build/static/admin/_next/static/l2vgGUHB04Fi4oEVlVMrc/_buildManifest.js +1 -0
  383. fides/ui-build/static/admin/add-systems/manual.html +1 -1
  384. fides/ui-build/static/admin/add-systems/multiple.html +1 -1
  385. fides/ui-build/static/admin/add-systems.html +1 -1
  386. fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
  387. fides/ui-build/static/admin/consent/configure.html +1 -1
  388. fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
  389. fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
  390. fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
  391. fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
  392. fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
  393. fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
  394. fides/ui-build/static/admin/consent/properties.html +1 -1
  395. fides/ui-build/static/admin/consent/reporting.html +1 -1
  396. fides/ui-build/static/admin/consent.html +1 -1
  397. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
  398. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
  399. fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
  400. fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
  401. fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
  402. fides/ui-build/static/admin/data-catalog.html +1 -1
  403. fides/ui-build/static/admin/data-discovery/action-center/datastore/[monitorId].html +1 -0
  404. fides/ui-build/static/admin/data-discovery/action-center/datastore.html +1 -0
  405. fides/ui-build/static/admin/data-discovery/action-center/infrastructure/[monitorId].html +1 -0
  406. fides/ui-build/static/admin/data-discovery/action-center/infrastructure.html +1 -0
  407. fides/ui-build/static/admin/data-discovery/action-center/website/[monitorId]/[systemId].html +1 -0
  408. fides/ui-build/static/admin/data-discovery/action-center/website/[monitorId].html +1 -0
  409. fides/ui-build/static/admin/data-discovery/action-center/website.html +1 -0
  410. fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
  411. fides/ui-build/static/admin/data-discovery/activity.html +1 -1
  412. fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
  413. fides/ui-build/static/admin/data-discovery/detection.html +1 -1
  414. fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
  415. fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
  416. fides/ui-build/static/admin/datamap.html +1 -1
  417. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
  418. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
  419. fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
  420. fides/ui-build/static/admin/dataset/new.html +1 -1
  421. fides/ui-build/static/admin/dataset.html +1 -1
  422. fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
  423. fides/ui-build/static/admin/datastore-connection/new.html +1 -1
  424. fides/ui-build/static/admin/datastore-connection.html +1 -1
  425. fides/ui-build/static/admin/index.html +1 -1
  426. fides/ui-build/static/admin/integrations/[id].html +1 -1
  427. fides/ui-build/static/admin/integrations.html +1 -1
  428. fides/ui-build/static/admin/lib/fides-ext-gpp.js +1 -1
  429. fides/ui-build/static/admin/lib/fides-headless.js +1 -1
  430. fides/ui-build/static/admin/lib/fides-preview.js +1 -1
  431. fides/ui-build/static/admin/lib/fides-tcf.js +3 -3
  432. fides/ui-build/static/admin/lib/fides.js +3 -3
  433. fides/ui-build/static/admin/login/[provider].html +1 -1
  434. fides/ui-build/static/admin/login.html +1 -1
  435. fides/ui-build/static/admin/new-privacy-requests.html +1 -0
  436. fides/ui-build/static/admin/notifications/digests/[id].html +1 -0
  437. fides/ui-build/static/admin/notifications/digests/new.html +1 -0
  438. fides/ui-build/static/admin/notifications/digests.html +1 -0
  439. fides/ui-build/static/admin/notifications/providers/[key].html +1 -0
  440. fides/ui-build/static/admin/notifications/providers/new.html +1 -0
  441. fides/ui-build/static/admin/notifications/providers.html +1 -0
  442. fides/ui-build/static/admin/notifications/templates/[id].html +1 -0
  443. fides/ui-build/static/admin/notifications/templates/add-template.html +1 -0
  444. fides/ui-build/static/admin/notifications/templates.html +1 -0
  445. fides/ui-build/static/admin/notifications.html +1 -0
  446. fides/ui-build/static/admin/poc/ant-components.html +1 -1
  447. fides/ui-build/static/admin/poc/form-experiments/AntForm.html +1 -1
  448. fides/ui-build/static/admin/poc/form-experiments/FormikAntFormItem.html +1 -1
  449. fides/ui-build/static/admin/poc/form-experiments/FormikControlled.html +1 -1
  450. fides/ui-build/static/admin/poc/form-experiments/FormikField.html +1 -1
  451. fides/ui-build/static/admin/poc/form-experiments/FormikSpreadField.html +1 -1
  452. fides/ui-build/static/admin/poc/forms.html +1 -1
  453. fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
  454. fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
  455. fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
  456. fides/ui-build/static/admin/privacy-requests.html +1 -1
  457. fides/ui-build/static/admin/properties/[id].html +1 -1
  458. fides/ui-build/static/admin/properties/add-property.html +1 -1
  459. fides/ui-build/static/admin/properties.html +1 -1
  460. fides/ui-build/static/admin/reporting/datamap.html +1 -1
  461. fides/ui-build/static/admin/sandbox/privacy-notices.html +1 -0
  462. fides/ui-build/static/admin/settings/about/alpha.html +1 -1
  463. fides/ui-build/static/admin/settings/about.html +1 -1
  464. fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +1 -1
  465. fides/ui-build/static/admin/settings/consent.html +1 -1
  466. fides/ui-build/static/admin/settings/custom-fields/[id].html +1 -0
  467. fides/ui-build/static/admin/settings/custom-fields/new.html +1 -0
  468. fides/ui-build/static/admin/settings/custom-fields.html +1 -1
  469. fides/ui-build/static/admin/settings/domain-records.html +1 -1
  470. fides/ui-build/static/admin/settings/domains.html +1 -1
  471. fides/ui-build/static/admin/settings/email-templates.html +1 -1
  472. fides/ui-build/static/admin/settings/locations.html +1 -1
  473. fides/ui-build/static/admin/settings/organization.html +1 -1
  474. fides/ui-build/static/admin/settings/privacy-requests.html +1 -1
  475. fides/ui-build/static/admin/settings/regulations.html +1 -1
  476. fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
  477. fides/ui-build/static/admin/systems/configure/[id].html +1 -1
  478. fides/ui-build/static/admin/systems.html +1 -1
  479. fides/ui-build/static/admin/taxonomy.html +1 -1
  480. fides/ui-build/static/admin/user-management/new.html +1 -1
  481. fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
  482. fides/ui-build/static/admin/user-management.html +1 -1
  483. fides/api/service/async_dsr/async_dsr_service.py +0 -75
  484. fides/api/service/privacy_request/dsr_package/templates/welcome.html +0 -66
  485. fides/ui-build/static/admin/_next/static/OmXHlY9MvjoZH9jDkAytl/_buildManifest.js +0 -1
  486. fides/ui-build/static/admin/_next/static/chunks/1099-79646e64f26d62fa.js +0 -1
  487. fides/ui-build/static/admin/_next/static/chunks/1316-2606e19807c08aa5.js +0 -1
  488. fides/ui-build/static/admin/_next/static/chunks/1345-5e1c5b66e25c566e.js +0 -1
  489. fides/ui-build/static/admin/_next/static/chunks/1467-8808ec8836e033f9.js +0 -1
  490. fides/ui-build/static/admin/_next/static/chunks/1817-0ca16d288fad916d.js +0 -1
  491. fides/ui-build/static/admin/_next/static/chunks/2150-930ffaf2c4718edc.js +0 -1
  492. fides/ui-build/static/admin/_next/static/chunks/255-1bc0cbef7a59cdc6.js +0 -1
  493. fides/ui-build/static/admin/_next/static/chunks/2921-52328140bc420d0f.js +0 -1
  494. fides/ui-build/static/admin/_next/static/chunks/346-aa3b88efb85f2e28.js +0 -1
  495. fides/ui-build/static/admin/_next/static/chunks/3550-d04125c828d591a1.js +0 -1
  496. fides/ui-build/static/admin/_next/static/chunks/3620-602eb74dc896d556.js +0 -1
  497. fides/ui-build/static/admin/_next/static/chunks/3729-c17ac8031a4c4fd1.js +0 -1
  498. fides/ui-build/static/admin/_next/static/chunks/3847-230bf61b053bc706.js +0 -1
  499. fides/ui-build/static/admin/_next/static/chunks/3855-ef5194cdb228beb6.js +0 -1
  500. fides/ui-build/static/admin/_next/static/chunks/3872-f78dec02f0d959ae.js +0 -1
  501. fides/ui-build/static/admin/_next/static/chunks/3923-bb2417b8dcade7a4.js +0 -1
  502. fides/ui-build/static/admin/_next/static/chunks/401-4af0a912e249d30f.js +0 -1
  503. fides/ui-build/static/admin/_next/static/chunks/4164-355644b916ae0094.js +0 -1
  504. fides/ui-build/static/admin/_next/static/chunks/431-86ad2beeb93c95c9.js +0 -1
  505. fides/ui-build/static/admin/_next/static/chunks/4608-be8cba73f5d7c326.js +0 -1
  506. fides/ui-build/static/admin/_next/static/chunks/4786-61154adf88e448e1.js +0 -1
  507. fides/ui-build/static/admin/_next/static/chunks/4808-dd4157aa72648068.js +0 -1
  508. fides/ui-build/static/admin/_next/static/chunks/4831-fd99c0b3784de128.js +0 -1
  509. fides/ui-build/static/admin/_next/static/chunks/4844-46324c3d848b8b6a.js +0 -1
  510. fides/ui-build/static/admin/_next/static/chunks/5163-e682273cd76a7d07.js +0 -1
  511. fides/ui-build/static/admin/_next/static/chunks/5258-b0de22a8521686ab.js +0 -1
  512. fides/ui-build/static/admin/_next/static/chunks/5487-02d00bad7c6830e0.js +0 -1
  513. fides/ui-build/static/admin/_next/static/chunks/549-38ea1d91ee2addaa.js +0 -1
  514. fides/ui-build/static/admin/_next/static/chunks/5619-9b50cec521203989.js +0 -1
  515. fides/ui-build/static/admin/_next/static/chunks/6084-c153669d5567e242.js +0 -1
  516. fides/ui-build/static/admin/_next/static/chunks/6419-d0c00d661b01f8fa.js +0 -1
  517. fides/ui-build/static/admin/_next/static/chunks/6853-b17673391117c976.js +0 -1
  518. fides/ui-build/static/admin/_next/static/chunks/6954-5296188c19d7d0ac.js +0 -1
  519. fides/ui-build/static/admin/_next/static/chunks/699-8ca44b0de9fa20f0.js +0 -1
  520. fides/ui-build/static/admin/_next/static/chunks/7476-45c5088baa8b66af.js +0 -1
  521. fides/ui-build/static/admin/_next/static/chunks/7630-7ed6c6117775dffe.js +0 -1
  522. fides/ui-build/static/admin/_next/static/chunks/787-a8c7eab617e2fceb.js +0 -1
  523. fides/ui-build/static/admin/_next/static/chunks/79-65674011d455af4d.js +0 -1
  524. fides/ui-build/static/admin/_next/static/chunks/796-9e1ca1a4030707c5.js +0 -1
  525. fides/ui-build/static/admin/_next/static/chunks/8002-24af20d679efc04e.js +0 -1
  526. fides/ui-build/static/admin/_next/static/chunks/8765-f622a35b40a7ec63.js +0 -1
  527. fides/ui-build/static/admin/_next/static/chunks/9046-712156d461165f56.js +0 -1
  528. fides/ui-build/static/admin/_next/static/chunks/9187-7438242f0d380bb0.js +0 -1
  529. fides/ui-build/static/admin/_next/static/chunks/9278-08cc704317fe535e.js +0 -1
  530. fides/ui-build/static/admin/_next/static/chunks/9729-fcf6ff4e3534e4a8.js +0 -1
  531. fides/ui-build/static/admin/_next/static/chunks/9826-dbae8dee941a7fac.js +0 -1
  532. fides/ui-build/static/admin/_next/static/chunks/9951-a88367a129b724ba.js +0 -1
  533. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/manual-ace203dfacacbdc4.js +0 -1
  534. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/multiple-920fb469e0dda1d2.js +0 -1
  535. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-bd0d82078e67cac3.js +0 -1
  536. fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure-7207ab23bdb36ce8.js +0 -1
  537. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience-9dda4de5ec580279.js +0 -1
  538. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-0d4844d0b808e6e4.js +0 -1
  539. fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-28b192e2c074b0f3.js +0 -1
  540. fides/ui-build/static/admin/_next/static/chunks/pages/consent-3e8bdefe714254ec.js +0 -1
  541. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]-2c29ff7a01198f30.js +0 -1
  542. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-5f2d7b24804f861f.js +0 -1
  543. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/[resourceUrn]-8eb581024bc0172f.js +0 -1
  544. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-30108b00ac769fc3.js +0 -1
  545. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-e1ba213fb666b3f4.js +0 -1
  546. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-6d133580045abdda.js +0 -1
  547. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-9a81d42a474e1e48.js +0 -1
  548. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-b6ae7adb8ef0b525.js +0 -1
  549. fides/ui-build/static/admin/_next/static/chunks/pages/datamap-c7390e046b2e2b7f.js +0 -1
  550. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-e12b11ba15bc3fc1.js +0 -1
  551. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-e32fccc4ca520d2b.js +0 -1
  552. fides/ui-build/static/admin/_next/static/chunks/pages/dataset-7c59a6abf6ba6207.js +0 -1
  553. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/[id]-927b7e476c4b47d0.js +0 -1
  554. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/new-cbe100d50df34285.js +0 -1
  555. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-cce20440b177050b.js +0 -1
  556. fides/ui-build/static/admin/_next/static/chunks/pages/index-6cd8708106331b8d.js +0 -1
  557. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-4c3c413a2668df53.js +0 -1
  558. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-95402b5001c07ef2.js +0 -1
  559. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/[id]-3c6dc2f6e6bae960.js +0 -1
  560. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/add-template-4a6d4023a7791be8.js +0 -1
  561. fides/ui-build/static/admin/_next/static/chunks/pages/messaging-76b204c9b98d656f.js +0 -1
  562. fides/ui-build/static/admin/_next/static/chunks/pages/poc/ant-components-bc0e2adf6e0d3ac7.js +0 -1
  563. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/AntForm-86ffcc1ad3fa912e.js +0 -1
  564. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikAntFormItem-ec04f595465bdf69.js +0 -1
  565. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikControlled-41d309754ff0c1de.js +0 -1
  566. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikField-cab1f78cec7808f9.js +0 -1
  567. fides/ui-build/static/admin/_next/static/chunks/pages/poc/forms-eb6058221403b156.js +0 -1
  568. fides/ui-build/static/admin/_next/static/chunks/pages/poc/table-migration-48500551fd6a7602.js +0 -1
  569. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-0f25a76dd18c5e20.js +0 -1
  570. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-ad6ad3e5bd72765d.js +0 -1
  571. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-6032d82f0fc2893d.js +0 -1
  572. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure-d83e5bd52a638234.js +0 -1
  573. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-baf31c3e4b081046.js +0 -1
  574. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-6903f42a0412bfa6.js +0 -1
  575. fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/alpha-a82f3df840d5c1b5.js +0 -1
  576. fides/ui-build/static/admin/_next/static/chunks/pages/settings/about-d06fb16487705b9d.js +0 -1
  577. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-9495e2eb506606c7.js +0 -1
  578. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-93a978443bf299db.js +0 -1
  579. fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-9ecb803099082bf4.js +0 -1
  580. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domain-records-16fdd91a81074dd1.js +0 -1
  581. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-4cdd6001e7cb9aee.js +0 -1
  582. fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-1914de830ce5cfc4.js +0 -1
  583. fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-f547f1f33c12faf3.js +0 -1
  584. fides/ui-build/static/admin/_next/static/chunks/pages/settings/privacy-requests-2ecc073f41628f62.js +0 -1
  585. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-20b1193ed76c56b0.js +0 -1
  586. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]-6e15332935f6b538.js +0 -1
  587. fides/ui-build/static/admin/_next/static/chunks/pages/systems-fbc8761ef4d55516.js +0 -1
  588. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-4d7827fc9c46b6b8.js +0 -1
  589. fides/ui-build/static/admin/_next/static/chunks/pages/user-management-9cec020f89544426.js +0 -1
  590. fides/ui-build/static/admin/_next/static/chunks/webpack-678e89d68dbcd94f.js +0 -1
  591. fides/ui-build/static/admin/_next/static/css/073713cd1eddda79.css +0 -1
  592. fides/ui-build/static/admin/_next/static/css/23cf870196941c9a.css +0 -1
  593. fides/ui-build/static/admin/_next/static/css/304c6f148886a8d4.css +0 -1
  594. fides/ui-build/static/admin/_next/static/css/650df9c348000a26.css +0 -1
  595. fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +0 -1
  596. fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +0 -1
  597. fides/ui-build/static/admin/messaging/[id].html +0 -1
  598. fides/ui-build/static/admin/messaging/add-template.html +0 -1
  599. fides/ui-build/static/admin/messaging.html +0 -1
  600. fides/ui-build/static/admin/poc/table-migration.html +0 -1
  601. fides/ui-build/static/admin/privacy-requests/configure/messaging.html +0 -1
  602. {ethyca_fides-2.69.1rc0.dist-info → ethyca_fides-2.76.0rc2.dist-info}/WHEEL +0 -0
  603. {ethyca_fides-2.69.1rc0.dist-info → ethyca_fides-2.76.0rc2.dist-info}/entry_points.txt +0 -0
  604. {ethyca_fides-2.69.1rc0.dist-info → ethyca_fides-2.76.0rc2.dist-info}/licenses/LICENSE +0 -0
  605. {ethyca_fides-2.69.1rc0.dist-info → ethyca_fides-2.76.0rc2.dist-info}/top_level.txt +0 -0
  606. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{resources-de704de849960f01.js → resources-81d1b50585468fb0.js} +0 -0
  607. /fides/ui-build/static/admin/_next/static/{OmXHlY9MvjoZH9jDkAytl → l2vgGUHB04Fi4oEVlVMrc}/_ssgManifest.js +0 -0
@@ -13,6 +13,7 @@ from fides.api.schemas.connection_configuration import connection_secrets_schema
13
13
  from fides.api.schemas.policy import ActionType
14
14
  from fides.api.schemas.saas.saas_config import SaaSConfigBase
15
15
  from fides.api.util.connection_type import get_connection_type_secret_schema
16
+ from fides.api.util.masking_util import mask_sensitive_fields
16
17
 
17
18
 
18
19
  class CreateConnectionConfiguration(BaseModel):
@@ -41,36 +42,6 @@ class CreateConnectionConfigurationWithSecrets(CreateConnectionConfiguration):
41
42
  model_config = ConfigDict(from_attributes=True, extra="ignore")
42
43
 
43
44
 
44
- def mask_sensitive_fields(
45
- connection_secrets: Dict[str, Any], secret_schema: Dict[str, Any]
46
- ) -> Dict[str, Any]:
47
- """
48
- Mask sensitive fields in the given secrets based on the provided schema.
49
- This function traverses the given secrets dictionary and uses the provided schema to
50
- identify fields that have been marked as sensitive. The function replaces the sensitive
51
- field values with a mask string ('********').
52
- Args:
53
- connection_secrets (Dict[str, Any]): The secrets to be masked.
54
- secret_schema (Dict[str, Any]): The schema defining which fields are sensitive.
55
- Returns:
56
- Dict[str, Any]: The secrets dictionary with sensitive fields masked.
57
- """
58
- if connection_secrets is None:
59
- return connection_secrets
60
-
61
- secret_schema_properties = secret_schema["properties"]
62
- new_connection_secrets = {}
63
-
64
- for key, value in connection_secrets.items():
65
- if key in secret_schema_properties:
66
- if secret_schema_properties.get(key, {}).get("sensitive", False):
67
- new_connection_secrets[key] = "**********"
68
- else:
69
- new_connection_secrets[key] = value
70
-
71
- return new_connection_secrets
72
-
73
-
74
45
  class ConnectionConfigSecretsMixin(BaseModel):
75
46
  """
76
47
  A schema mixin to declare a connection config `secrets` attribute
@@ -0,0 +1,42 @@
1
+ from enum import Enum
2
+ from typing import Optional
3
+
4
+ from pydantic import BaseModel, ConfigDict, Field
5
+
6
+ from fides.api.schemas.base_class import NoValidationSchema
7
+
8
+
9
+ class OAuthGrantType(str, Enum):
10
+ """OAuth2 grant types supported by the system"""
11
+
12
+ client_credentials = "client_credentials"
13
+
14
+
15
+ class OAuthConfigSchema(BaseModel):
16
+ """Schema for OAuth2 configuration used in API requests"""
17
+
18
+ grant_type: Optional[OAuthGrantType] = None
19
+ token_url: Optional[str] = None
20
+ scope: Optional[str] = None
21
+ client_id: Optional[str] = None
22
+ client_secret: Optional[str] = Field(json_schema_extra={"sensitive": True})
23
+
24
+ model_config = ConfigDict(
25
+ from_attributes=True, use_enum_values=True, extra="forbid"
26
+ )
27
+
28
+
29
+ class OAuthConfigResponse(BaseModel):
30
+ """Schema for OAuth2 configuration used in API responses with masked sensitive fields"""
31
+
32
+ grant_type: OAuthGrantType
33
+ token_url: str
34
+ scope: Optional[str] = None
35
+ client_id: str
36
+ client_secret: str = "**********" # Always masked in responses
37
+
38
+ model_config = ConfigDict(from_attributes=True, use_enum_values=True)
39
+
40
+
41
+ class OAuthConfigDocsSchema(OAuthConfigSchema, NoValidationSchema):
42
+ """OAuth2 Config Schema for API Docs"""
@@ -1,4 +1,4 @@
1
- from typing import ClassVar, List
1
+ from typing import ClassVar, List, Optional
2
2
 
3
3
  from pydantic import Field
4
4
 
@@ -18,7 +18,7 @@ class MongoDBSchema(ConnectionConfigSecretsSchema):
18
18
  port: int = Field(
19
19
  27017,
20
20
  title="Port",
21
- description="The network port number on which the server is listening for incoming connections (default: 27017).",
21
+ description="The network port number on which the server is listening for incoming connections (default: 27017). Port will be ignored if using SRV.",
22
22
  )
23
23
  username: str = Field(
24
24
  title="Username",
@@ -30,10 +30,22 @@ class MongoDBSchema(ConnectionConfigSecretsSchema):
30
30
  json_schema_extra={"sensitive": True},
31
31
  )
32
32
  defaultauthdb: str = Field(
33
- title="Default Auth DB",
33
+ title="Default auth DB",
34
34
  description="Used to specify the default authentication database.",
35
35
  )
36
36
 
37
+ use_srv: Optional[bool] = Field(
38
+ False,
39
+ title="Use SRV",
40
+ description="Enable SRV record lookup for service discovery (mongodb+srv://). Required for MongoDB Atlas. Enables SSL by default.",
41
+ )
42
+
43
+ ssl_enabled: Optional[bool] = Field(
44
+ None,
45
+ title="SSL enabled",
46
+ description="Enable SSL/TLS encryption. With SRV: defaults to enabled (can override). Without SRV: defaults to disabled.",
47
+ )
48
+
37
49
  _required_components: ClassVar[List[str]] = [
38
50
  "host",
39
51
  "username",
@@ -39,6 +39,11 @@ class MicrosoftSQLServerSchema(ConnectionConfigSecretsSchema):
39
39
  title="Database",
40
40
  description="The name of the specific database within the database server that you want to connect to.",
41
41
  )
42
+ read_only_connection: Optional[bool] = Field(
43
+ default=False,
44
+ title="Read Only Connection",
45
+ description="Whether to connect to the database in read-only mode.",
46
+ )
42
47
 
43
48
  _required_components: ClassVar[List[str]] = [
44
49
  "host",
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
+ from datetime import datetime
3
4
  from enum import Enum
4
5
  from typing import Any, Dict, List, Optional, Tuple, Type, Union
5
6
 
@@ -7,15 +8,14 @@ from fideslang.default_taxonomy import DEFAULT_TAXONOMY
7
8
  from fideslang.validation import FidesKey
8
9
  from pydantic import BaseModel, ConfigDict, Field, model_validator
9
10
 
10
- from fides.api.custom_types import PhoneNumber, SafeStr
11
+ from fides.api.custom_types import SafeStr
11
12
  from fides.api.schemas import Msg
12
13
  from fides.api.schemas.api import BulkResponse, BulkUpdateFailed
13
- from fides.api.schemas.connection_configuration.connection_secrets_base_aws import (
14
- BaseAWSSchema,
15
- )
14
+ from fides.api.schemas.messaging.shared_schemas import PossibleMessagingSecrets
16
15
  from fides.api.schemas.privacy_preference import MinimalPrivacyPreferenceHistorySchema
17
16
  from fides.api.schemas.privacy_request import Consent
18
17
  from fides.api.schemas.property import MinimalProperty
18
+ from fides.api.schemas.redis_cache import IdentityBase
19
19
 
20
20
 
21
21
  class MessagingMethod(Enum):
@@ -44,6 +44,25 @@ class MessagingServiceType(Enum):
44
44
  return member
45
45
  return None
46
46
 
47
+ @property
48
+ def human_readable(self) -> str:
49
+ """
50
+ Human-readable mapping for MessagingServiceType
51
+ """
52
+ readable_mapping: Dict[str, str] = {
53
+ MessagingServiceType.mailgun.value: "Mailgun",
54
+ MessagingServiceType.twilio_text.value: "Twilio SMS",
55
+ MessagingServiceType.twilio_email.value: "Twilio Email",
56
+ MessagingServiceType.mailchimp_transactional.value: "Mailchimp Transactional",
57
+ MessagingServiceType.aws_ses.value: "AWS SES",
58
+ }
59
+ try:
60
+ return readable_mapping[self.value]
61
+ except KeyError:
62
+ raise NotImplementedError(
63
+ "Add new MessagingServiceType to human_readable mapping"
64
+ )
65
+
47
66
 
48
67
  EMAIL_MESSAGING_SERVICES: Tuple[str, ...] = (
49
68
  MessagingServiceType.mailgun.value,
@@ -70,6 +89,7 @@ class MessagingActionType(str, Enum):
70
89
  PRIVACY_REQUEST_REVIEW_APPROVE = "privacy_request_review_approve"
71
90
  USER_INVITE = "user_invite"
72
91
  EXTERNAL_USER_WELCOME = "external_user_welcome"
92
+ MANUAL_TASK_DIGEST = "manual_task_digest"
73
93
  TEST_MESSAGE = "test_message"
74
94
 
75
95
 
@@ -82,9 +102,17 @@ CONFIGURABLE_MESSAGING_ACTION_TYPES: Tuple[str, ...] = (
82
102
  MessagingActionType.PRIVACY_REQUEST_COMPLETE_DELETION.value,
83
103
  MessagingActionType.PRIVACY_REQUEST_REVIEW_DENY.value,
84
104
  MessagingActionType.PRIVACY_REQUEST_REVIEW_APPROVE.value,
105
+ MessagingActionType.MANUAL_TASK_DIGEST.value,
106
+ MessagingActionType.EXTERNAL_USER_WELCOME.value,
85
107
  )
86
108
 
87
109
 
110
+ class MessagingTestBodyParams(BaseModel):
111
+ """Body params required for testing messaging service"""
112
+
113
+ to_identity: IdentityBase
114
+
115
+
88
116
  class ErrorNotificationBodyParams(BaseModel):
89
117
  """Body params required for privacy request error notifications."""
90
118
 
@@ -194,6 +222,18 @@ class ExternalUserWelcomeBodyParams(BaseModel):
194
222
  org_name: str
195
223
 
196
224
 
225
+ class ManualTaskDigestBodyParams(BaseModel):
226
+ """Body params required to send manual task digest emails"""
227
+
228
+ vendor_contact_name: str
229
+ organization_name: str
230
+ portal_url: str
231
+ imminent_task_count: int
232
+ upcoming_task_count: int
233
+ total_task_count: int
234
+ company_logo_url: Optional[str] = None
235
+
236
+
197
237
  class FidesopsMessage(
198
238
  BaseModel,
199
239
  ):
@@ -231,6 +271,7 @@ class FidesopsMessage(
231
271
  MessagingActionType.PRIVACY_REQUEST_ERROR_NOTIFICATION: ErrorNotificationBodyParams,
232
272
  MessagingActionType.USER_INVITE: UserInviteBodyParams,
233
273
  MessagingActionType.EXTERNAL_USER_WELCOME: ExternalUserWelcomeBodyParams,
274
+ MessagingActionType.MANUAL_TASK_DIGEST: ManualTaskDigestBodyParams,
234
275
  }
235
276
 
236
277
  valid_body_params = valid_body_params_for_action_type.get(
@@ -339,56 +380,6 @@ class MessagingServiceSecrets(Enum):
339
380
  AWS_ASSUME_ROLE_ARN = "aws_assume_role_arn"
340
381
 
341
382
 
342
- class MessagingServiceSecretsMailchimpTransactional(BaseModel):
343
- """The secrets required to connect to Mailchimp Transactional."""
344
-
345
- mailchimp_transactional_api_key: str
346
- model_config = ConfigDict(extra="forbid")
347
-
348
-
349
- class MessagingServiceSecretsMailgun(BaseModel):
350
- """The secrets required to connect to Mailgun."""
351
-
352
- mailgun_api_key: str
353
- model_config = ConfigDict(extra="forbid")
354
-
355
-
356
- class MessagingServiceSecretsTwilioSMS(BaseModel):
357
- """The secrets required to connect to Twilio SMS."""
358
-
359
- twilio_account_sid: str
360
- twilio_auth_token: str
361
- twilio_messaging_service_sid: Optional[str] = None
362
- twilio_sender_phone_number: Optional[PhoneNumber] = None
363
- model_config = ConfigDict(extra="forbid")
364
-
365
- @model_validator(mode="before")
366
- @classmethod
367
- def validate_fields(cls, values: Dict[str, Any]) -> Dict[str, Any]:
368
- sender_phone = values.get("twilio_sender_phone_number")
369
- if not values.get("twilio_messaging_service_sid") and not sender_phone:
370
- raise ValueError(
371
- "Either the twilio_messaging_service_sid or the twilio_sender_phone_number should be supplied."
372
- )
373
- return values
374
-
375
-
376
- class MessagingServiceSecretsTwilioEmail(BaseModel):
377
- """The secrets required to connect to twilio email."""
378
-
379
- twilio_api_key: str
380
- model_config = ConfigDict(extra="forbid")
381
-
382
-
383
- class MessagingServiceSecretsAWS_SES(BaseAWSSchema):
384
- """
385
- The secrets required to connect to AWS SES.
386
- Inherits basic AWS authentication schema.
387
- """
388
-
389
- model_config = ConfigDict(extra="forbid")
390
-
391
-
392
383
  class MessagingConfigBase(BaseModel):
393
384
  """Base model shared by messaging config related models"""
394
385
 
@@ -453,8 +444,9 @@ class MessagingConfigRequestBase(MessagingConfigBase):
453
444
  class MessagingConfigRequest(MessagingConfigRequestBase):
454
445
  """Messaging Config Request Schema"""
455
446
 
456
- name: str
447
+ name: Optional[str] = None
457
448
  key: Optional[FidesKey] = None
449
+ secrets: Optional[PossibleMessagingSecrets] = None
458
450
 
459
451
 
460
452
  class MessagingConfigResponse(MessagingConfigBase):
@@ -462,16 +454,8 @@ class MessagingConfigResponse(MessagingConfigBase):
462
454
 
463
455
  name: str
464
456
  key: FidesKey
465
- model_config = ConfigDict(from_attributes=True, use_enum_values=True)
466
-
467
-
468
- SUPPORTED_MESSAGING_SERVICE_SECRETS = Union[
469
- MessagingServiceSecretsMailgun,
470
- MessagingServiceSecretsTwilioSMS,
471
- MessagingServiceSecretsTwilioEmail,
472
- MessagingServiceSecretsMailchimpTransactional,
473
- MessagingServiceSecretsAWS_SES,
474
- ]
457
+ last_test_timestamp: Optional[datetime] = None
458
+ last_test_succeeded: Optional[bool] = None
475
459
 
476
460
 
477
461
  class MessagingConnectionTestStatus(Enum):
@@ -479,7 +463,6 @@ class MessagingConnectionTestStatus(Enum):
479
463
 
480
464
  succeeded = "succeeded"
481
465
  failed = "failed"
482
- skipped = "skipped"
483
466
 
484
467
 
485
468
  class TestMessagingStatusMessage(Msg):
@@ -1,7 +1,7 @@
1
1
  from typing import Union
2
2
 
3
3
  from fides.api.schemas.base_class import NoValidationSchema
4
- from fides.api.schemas.messaging.messaging import (
4
+ from fides.api.schemas.messaging.shared_schemas import (
5
5
  MessagingServiceSecretsAWS_SES,
6
6
  MessagingServiceSecretsMailchimpTransactional,
7
7
  MessagingServiceSecretsMailgun,
@@ -0,0 +1,102 @@
1
+ from typing import Any, Dict, Optional, Union
2
+
3
+ from pydantic import BaseModel, ConfigDict, model_validator
4
+
5
+ from fides.api.custom_types import PhoneNumber
6
+ from fides.api.schemas.base_class import NoValidationSchema
7
+ from fides.api.schemas.connection_configuration.connection_secrets_base_aws import (
8
+ BaseAWSSchema,
9
+ )
10
+
11
+
12
+ class MessagingServiceSecretsMailgun(BaseModel):
13
+ """The secrets required to connect to Mailgun."""
14
+
15
+ mailgun_api_key: str
16
+ model_config = ConfigDict(extra="forbid")
17
+
18
+
19
+ class MessagingServiceSecretsTwilioSMS(BaseModel):
20
+ """The secrets required to connect to Twilio SMS."""
21
+
22
+ twilio_account_sid: str
23
+ twilio_auth_token: str
24
+ twilio_messaging_service_sid: Optional[str] = None
25
+ twilio_sender_phone_number: Optional[PhoneNumber] = None
26
+ model_config = ConfigDict(extra="forbid")
27
+
28
+ @model_validator(mode="before")
29
+ @classmethod
30
+ def validate_fields(cls, values: Dict[str, Any]) -> Dict[str, Any]:
31
+ sender_phone = values.get("twilio_sender_phone_number")
32
+ if not values.get("twilio_messaging_service_sid") and not sender_phone:
33
+ raise ValueError(
34
+ "Either the twilio_messaging_service_sid or the twilio_sender_phone_number should be supplied."
35
+ )
36
+ return values
37
+
38
+
39
+ class MessagingServiceSecretsTwilioEmail(BaseModel):
40
+ """The secrets required to connect to twilio email."""
41
+
42
+ twilio_api_key: str
43
+ model_config = ConfigDict(extra="forbid")
44
+
45
+
46
+ class MessagingServiceSecretsMailchimpTransactional(BaseModel):
47
+ """The secrets required to connect to Mailchimp Transactional."""
48
+
49
+ mailchimp_transactional_api_key: str
50
+ model_config = ConfigDict(extra="forbid")
51
+
52
+
53
+ class MessagingServiceSecretsMailchimpTransactionalDocs(
54
+ MessagingServiceSecretsMailchimpTransactional,
55
+ NoValidationSchema,
56
+ ):
57
+ """The secrets required to connect Mailchimp Transactional, for documentation"""
58
+
59
+
60
+ class MessagingSecretsMailgunDocs(MessagingServiceSecretsMailgun, NoValidationSchema):
61
+ """The secrets required to connect to Mailgun, for documentation"""
62
+
63
+
64
+ class MessagingSecretsTwilioSMSDocs(
65
+ MessagingServiceSecretsTwilioSMS, NoValidationSchema
66
+ ):
67
+ """The secrets required to connect to Twilio sms, for documentation"""
68
+
69
+
70
+ class MessagingSecretsTwilioEmailDocs(
71
+ MessagingServiceSecretsTwilioEmail, NoValidationSchema
72
+ ):
73
+ """The secrets required to connect to Twilio email, for documentation"""
74
+
75
+
76
+ class MessagingServiceSecretsAWS_SES(BaseAWSSchema):
77
+ """The secrets required to connect to AWS SES."""
78
+
79
+ model_config = ConfigDict(extra="forbid")
80
+
81
+
82
+ class MessagingServiceSecretsAWS_SESDocs(
83
+ MessagingServiceSecretsAWS_SES, NoValidationSchema
84
+ ):
85
+ """The secrets required to connect to AWS SES, for documentation"""
86
+
87
+
88
+ SUPPORTED_MESSAGING_SERVICE_SECRETS = Union[
89
+ MessagingServiceSecretsMailgun,
90
+ MessagingServiceSecretsTwilioSMS,
91
+ MessagingServiceSecretsTwilioEmail,
92
+ MessagingServiceSecretsMailchimpTransactional,
93
+ MessagingServiceSecretsAWS_SES,
94
+ ]
95
+
96
+ PossibleMessagingSecrets = Union[
97
+ MessagingSecretsMailgunDocs,
98
+ MessagingSecretsTwilioSMSDocs,
99
+ MessagingSecretsTwilioEmailDocs,
100
+ MessagingServiceSecretsMailchimpTransactionalDocs,
101
+ MessagingServiceSecretsAWS_SESDocs,
102
+ ]
@@ -1,4 +1,4 @@
1
- from typing import Dict, Optional
1
+ from typing import Dict, Literal, Optional
2
2
 
3
3
  from fastapi import Form
4
4
  from fastapi.openapi.models import OAuthFlows
@@ -14,6 +14,7 @@ class AccessToken(BaseModel):
14
14
  """A wrapper for the access_code returned upon successful authentication"""
15
15
 
16
16
  access_token: str
17
+ token_type: Literal["Bearer"] = "Bearer"
17
18
 
18
19
 
19
20
  # NOTE: Adapted from
@@ -1,7 +1,14 @@
1
1
  from abc import ABC
2
- from typing import Any, Dict, List, Literal, Optional, Union
2
+ from typing import Annotated, Any, Dict, List, Literal, Optional, Union
3
3
 
4
- from pydantic import ConfigDict, Field, field_validator, model_validator
4
+ from pydantic import (
5
+ ConfigDict,
6
+ Discriminator,
7
+ Field,
8
+ Tag,
9
+ field_validator,
10
+ model_validator,
11
+ )
5
12
 
6
13
  from fides.api.models.location_regulation_selections import PrivacyNoticeRegion
7
14
  from fides.api.schemas.base_class import FidesSchema
@@ -86,9 +93,26 @@ class LocationCustomPrivacyRequestField(BaseCustomPrivacyRequestField):
86
93
  return values
87
94
 
88
95
 
89
- # Create a simple union type - Pydantic will use the field_type to determine which model to use
90
- CustomPrivacyRequestFieldUnion = Union[
91
- LocationCustomPrivacyRequestField, CustomPrivacyRequestField
96
+ # Create a discriminated union type using the field_type to properly distinguish between types
97
+ def get_field_type_discriminator(v: Any) -> str:
98
+ """Discriminator function for CustomPrivacyRequestFieldUnion"""
99
+ if isinstance(v, dict):
100
+ field_type = v.get("field_type")
101
+ else:
102
+ # For model instances, get field_type attribute
103
+ field_type = getattr(v, "field_type", None)
104
+
105
+ if field_type == "location":
106
+ return "location"
107
+ return "custom"
108
+
109
+
110
+ CustomPrivacyRequestFieldUnion = Annotated[
111
+ Union[
112
+ Annotated[LocationCustomPrivacyRequestField, Tag("location")],
113
+ Annotated[CustomPrivacyRequestField, Tag("custom")],
114
+ ],
115
+ Discriminator(get_field_type_discriminator),
92
116
  ]
93
117
 
94
118
 
@@ -1,9 +1,10 @@
1
1
  from datetime import datetime
2
2
  from enum import Enum as EnumType
3
3
  from typing import Any, Dict, List, Optional, Type, Union
4
+ from uuid import UUID
4
5
 
5
6
  from fideslang.validation import FidesKey
6
- from pydantic import ConfigDict, Field, field_serializer, field_validator
7
+ from pydantic import BaseModel, ConfigDict, Field, field_serializer, field_validator
7
8
 
8
9
  from fides.api.custom_types import SafeStr
9
10
  from fides.api.graph.config import CollectionAddress
@@ -13,8 +14,12 @@ from fides.api.schemas.api import BulkResponse, BulkUpdateFailed
13
14
  from fides.api.schemas.base_class import FidesSchema
14
15
  from fides.api.schemas.policy import ActionType, CurrentStep
15
16
  from fides.api.schemas.policy import PolicyResponse as PolicySchema
16
- from fides.api.schemas.redis_cache import CustomPrivacyRequestField, Identity
17
- from fides.api.schemas.user import PrivacyRequestReviewer
17
+ from fides.api.schemas.redis_cache import (
18
+ CustomPrivacyRequestField,
19
+ Identity,
20
+ MultiValue,
21
+ )
22
+ from fides.api.schemas.user import PrivacyRequestUser
18
23
  from fides.api.util.collection_util import Row
19
24
  from fides.api.util.encryption.aes_gcm_encryption_scheme import verify_encryption_key
20
25
  from fides.api.util.enums import ColumnSort
@@ -306,6 +311,23 @@ class PrivacyRequestStatus(str, EnumType):
306
311
  requires_manual_finalization = "requires_manual_finalization"
307
312
  canceled = "canceled"
308
313
  error = "error"
314
+ duplicate = "duplicate" # Request identified as duplicate of another request
315
+
316
+
317
+ class IdentityValue(BaseModel):
318
+ """Represents an identity value with a label in API responses.
319
+
320
+ The value field accepts MultiValue types which match what LabeledIdentity supports:
321
+ - int
322
+ - str
323
+ - List[Union[int, str]]
324
+
325
+ This allows the schema to accept list values that were previously causing
326
+ validation errors.
327
+ """
328
+
329
+ label: str
330
+ value: Optional[MultiValue] = None
309
331
 
310
332
 
311
333
  class PrivacyRequestResponse(FidesSchema):
@@ -316,7 +338,9 @@ class PrivacyRequestResponse(FidesSchema):
316
338
  started_processing_at: Optional[datetime] = None
317
339
  reviewed_at: Optional[datetime] = None
318
340
  reviewed_by: Optional[str] = None
319
- reviewer: Optional[PrivacyRequestReviewer] = None
341
+ submitted_by: Optional[str] = None
342
+ reviewer: Optional[PrivacyRequestUser] = None
343
+ submitter: Optional[PrivacyRequestUser] = None
320
344
  finished_processing_at: Optional[datetime] = None
321
345
  identity_verified_at: Optional[datetime] = None
322
346
  paused_at: Optional[datetime] = None
@@ -326,7 +350,7 @@ class PrivacyRequestResponse(FidesSchema):
326
350
  # as it is an API response field, and we don't want to reveal any more
327
351
  # about our PII structure than is explicitly stored in the cache on request
328
352
  # creation.
329
- identity: Optional[Dict[str, Union[Optional[str], Dict[str, Any]]]] = None
353
+ identity: Optional[Dict[str, Union[Optional[str], IdentityValue]]] = None
330
354
  custom_privacy_request_fields: Optional[Dict[str, Any]] = None
331
355
  policy: PolicySchema
332
356
  action_required_details: Optional[CheckpointActionRequiredDetails] = None
@@ -340,6 +364,8 @@ class PrivacyRequestResponse(FidesSchema):
340
364
  deleted_by: Optional[str] = None
341
365
  finalized_at: Optional[datetime] = None
342
366
  finalized_by: Optional[str] = None
367
+ duplicate_request_group_id: Optional[UUID] = None
368
+
343
369
  model_config = ConfigDict(from_attributes=True, use_enum_values=True)
344
370
 
345
371
 
@@ -353,10 +379,15 @@ class PrivacyRequestVerboseResponse(PrivacyRequestResponse):
353
379
  model_config = ConfigDict(populate_by_name=True)
354
380
 
355
381
 
382
+ # Batch size for bulk privacy request operations. Used for request validation and
383
+ # automatic batching to avoid memory issues with large request lists.
384
+ BULK_PRIVACY_REQUEST_BATCH_SIZE = 50
385
+
386
+
356
387
  class ReviewPrivacyRequestIds(FidesSchema):
357
388
  """Pass in a list of privacy request ids"""
358
389
 
359
- request_ids: List[str] = Field(..., max_length=50)
390
+ request_ids: List[str] = Field(..., max_length=BULK_PRIVACY_REQUEST_BATCH_SIZE)
360
391
 
361
392
 
362
393
  class DenyPrivacyRequests(ReviewPrivacyRequestIds):
@@ -365,6 +396,12 @@ class DenyPrivacyRequests(ReviewPrivacyRequestIds):
365
396
  reason: Optional[SafeStr] = None
366
397
 
367
398
 
399
+ class CancelPrivacyRequests(ReviewPrivacyRequestIds):
400
+ """Pass in a list of privacy request ids and cancellation reason"""
401
+
402
+ reason: Optional[SafeStr] = None
403
+
404
+
368
405
  class BulkPostPrivacyRequests(BulkResponse):
369
406
  """Schema with mixed success/failure responses for Bulk Create of PrivacyRequest responses."""
370
407
 
@@ -453,7 +490,7 @@ class PrivacyRequestFilter(FidesSchema):
453
490
  errored_gt: Optional[datetime] = None
454
491
  external_id: Optional[str] = None
455
492
  location: Optional[str] = None
456
- action_type: Optional[ActionType] = None
493
+ action_type: Optional[Union[ActionType, List[ActionType]]] = None
457
494
  verbose: Optional[bool] = False
458
495
  include_identities: Optional[bool] = False
459
496
  include_custom_privacy_request_fields: Optional[bool] = False