ethyca-fides 2.71.1rc2__py2.py3-none-any.whl → 2.72.0__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.

Potentially problematic release.


This version of ethyca-fides might be problematic. Click here for more details.

Files changed (359) hide show
  1. {ethyca_fides-2.71.1rc2.dist-info → ethyca_fides-2.72.0.dist-info}/METADATA +2 -2
  2. {ethyca_fides-2.71.1rc2.dist-info → ethyca_fides-2.72.0.dist-info}/RECORD +272 -253
  3. fides/_version.py +3 -3
  4. fides/api/api/v1/endpoints/connection_endpoints.py +38 -45
  5. fides/api/api/v1/endpoints/generic_overrides.py +9 -3
  6. fides/api/api/v1/endpoints/saas_config_endpoints.py +60 -48
  7. fides/api/api/v1/endpoints/system.py +11 -43
  8. fides/api/api/v1/endpoints/user_endpoints.py +8 -1
  9. fides/api/app_setup.py +1 -3
  10. fides/api/common_exceptions.py +4 -0
  11. fides/api/email_templates/get_email_template.py +3 -0
  12. fides/api/email_templates/template_names.py +1 -0
  13. fides/api/email_templates/templates/manual_task_digest.html +316 -0
  14. fides/api/models/detection_discovery/monitor_task.py +1 -0
  15. fides/api/models/digest/digest_execution.py +11 -1
  16. fides/api/models/event_audit.py +9 -0
  17. fides/api/models/messaging_template.py +7 -0
  18. fides/api/models/privacy_request/privacy_request.py +1 -1
  19. fides/api/schemas/connection_configuration/connection_config.py +1 -30
  20. fides/api/schemas/messaging/messaging.py +15 -0
  21. fides/api/service/connectors/query_configs/saas_query_config.py +16 -0
  22. fides/api/service/connectors/saas/connector_registry_service.py +1 -138
  23. fides/api/service/connectors/saas_connector.py +9 -1
  24. fides/api/service/deps.py +8 -0
  25. fides/api/service/messaging/message_dispatch_service.py +38 -1
  26. fides/api/service/privacy_request/request_runner_service.py +32 -1
  27. fides/api/tasks/__init__.py +0 -1
  28. fides/api/util/connection_util.py +99 -215
  29. fides/api/util/event_audit_util.py +230 -0
  30. fides/api/util/masking_util.py +31 -0
  31. fides/api/util/saas_config_updater.py +66 -0
  32. fides/api/util/saas_util.py +1 -0
  33. fides/data/language/languages.yml +2 -0
  34. fides/service/connection/__init__.py +0 -0
  35. fides/service/connection/connection_service.py +651 -0
  36. fides/service/dataset/dataset_service.py +39 -0
  37. fides/service/event_audit_service.py +16 -22
  38. fides/service/privacy_request/privacy_request_service.py +103 -48
  39. fides/ui-build/static/admin/404.html +1 -1
  40. fides/ui-build/static/admin/_next/static/BOxlzhSs4KC4KKoRi_z4Y/_buildManifest.js +1 -0
  41. fides/ui-build/static/admin/_next/static/chunks/1099-d1b22e891705eaf8.js +1 -0
  42. fides/ui-build/static/admin/_next/static/chunks/{1115-90baef2a89f361ad.js → 1115-584dac093cef6cc3.js} +1 -1
  43. fides/ui-build/static/admin/_next/static/chunks/1437-4604a69888906ec0.js +1 -0
  44. fides/ui-build/static/admin/_next/static/chunks/155-bf4e3ffb18f29226.js +1 -0
  45. fides/ui-build/static/admin/_next/static/chunks/{1817-1ad037b7d6d2f6d2.js → 1817-6a6b4aea9d242c5b.js} +1 -1
  46. fides/ui-build/static/admin/_next/static/chunks/{1975.78e719130cfe3fd6.js → 1975.50599b6774562644.js} +1 -1
  47. fides/ui-build/static/admin/_next/static/chunks/{2040-fdecc41a18e40bdc.js → 2040-8eead9d29546a50f.js} +1 -1
  48. fides/ui-build/static/admin/_next/static/chunks/2397-92f628c53688925b.js +1 -0
  49. fides/ui-build/static/admin/_next/static/chunks/2921-9b596ba7f5267afc.js +1 -0
  50. fides/ui-build/static/admin/_next/static/chunks/3377-80612c111e047cb6.js +1 -0
  51. fides/ui-build/static/admin/_next/static/chunks/{3696-90c8b336bbc46782.js → 3696-e4abb6a922b954a2.js} +1 -1
  52. fides/ui-build/static/admin/_next/static/chunks/3700-1f9f6e5ebfa3ab0a.js +1 -0
  53. fides/ui-build/static/admin/_next/static/chunks/3772-b945c6839e43c753.js +1 -0
  54. fides/ui-build/static/admin/_next/static/chunks/{3923-98bea73b618292aa.js → 3923-c1e41661ebf57178.js} +1 -1
  55. fides/ui-build/static/admin/_next/static/chunks/401-c2f1e4ea077f1f26.js +1 -0
  56. fides/ui-build/static/admin/_next/static/chunks/431-e01ee730c8ad9ece.js +1 -0
  57. fides/ui-build/static/admin/_next/static/chunks/4496-8204168bae78092d.js +1 -0
  58. fides/ui-build/static/admin/_next/static/chunks/4817-066598cef25d7e88.js +1 -0
  59. fides/ui-build/static/admin/_next/static/chunks/5185-bf5655b5d697b714.js +1 -0
  60. fides/ui-build/static/admin/_next/static/chunks/5258-63325c03319e87dc.js +1 -0
  61. fides/ui-build/static/admin/_next/static/chunks/{5279-12c9cbdc67ad7b14.js → 5279-fcac4a8575f41ecc.js} +1 -1
  62. fides/ui-build/static/admin/_next/static/chunks/549-3e3b8d01bc984f96.js +1 -0
  63. fides/ui-build/static/admin/_next/static/chunks/5643-7800464c8df7a78e.js +1 -0
  64. fides/ui-build/static/admin/_next/static/chunks/{5783-d119cb132abd8a91.js → 5783-7deeb7de5d2db4c4.js} +1 -1
  65. fides/ui-build/static/admin/_next/static/chunks/6277-0ab2a15c37b83b8d.js +1 -0
  66. fides/ui-build/static/admin/_next/static/chunks/6315-d0b886d849c2e5e3.js +1 -0
  67. fides/ui-build/static/admin/_next/static/chunks/6344-ca66a6e10d128179.js +1 -0
  68. fides/ui-build/static/admin/_next/static/chunks/{6853-7004a8c420b1ca02.js → 6853-6d64d627df6f8194.js} +1 -1
  69. fides/ui-build/static/admin/_next/static/chunks/6954-8b106311a3be35f4.js +1 -0
  70. fides/ui-build/static/admin/_next/static/chunks/7245-53a20677c49b41c8.js +1 -0
  71. fides/ui-build/static/admin/_next/static/chunks/{7476-d055aa931da47ac0.js → 7476-08717f00da5f89ab.js} +1 -1
  72. fides/ui-build/static/admin/_next/static/chunks/7488-bad160a2bfd89871.js +1 -0
  73. fides/ui-build/static/admin/_next/static/chunks/7630-775c578fa8109b0f.js +1 -0
  74. fides/ui-build/static/admin/_next/static/chunks/7773-24899908bf8ff659.js +1 -0
  75. fides/ui-build/static/admin/_next/static/chunks/{796-02086581996a0548.js → 796-6fe49d134f660156.js} +1 -1
  76. fides/ui-build/static/admin/_next/static/chunks/8011-c23d609ed3f0efa5.js +1 -0
  77. fides/ui-build/static/admin/_next/static/chunks/8212-67ac884660ddb63a.js +1 -0
  78. fides/ui-build/static/admin/_next/static/chunks/8373-43b6df89a2085d6b.js +1 -0
  79. fides/ui-build/static/admin/_next/static/chunks/9046-28fe0723e3b6584f.js +1 -0
  80. fides/ui-build/static/admin/_next/static/chunks/9070-6d3aaaf5aa5913ba.js +1 -0
  81. fides/ui-build/static/admin/_next/static/chunks/9330-6eb11127296c54c2.js +1 -0
  82. fides/ui-build/static/admin/_next/static/chunks/{9676.b86ecbcfe5afd25d.js → 9676.1ea49d4b6e0541f2.js} +1 -1
  83. fides/ui-build/static/admin/_next/static/chunks/9682-65d253d54f84f6f2.js +1 -0
  84. fides/ui-build/static/admin/_next/static/chunks/{9826-ccedc28e978ca9e1.js → 9826-1f42934a2863992e.js} +1 -1
  85. fides/ui-build/static/admin/_next/static/chunks/9899-63998972698a49fb.js +1 -0
  86. fides/ui-build/static/admin/_next/static/chunks/9965-4709f43bf62af9a9.js +1 -0
  87. fides/ui-build/static/admin/_next/static/chunks/pages/{404-2eb8aed4939f1142.js → 404-962d132471cd41ba.js} +1 -1
  88. fides/ui-build/static/admin/_next/static/chunks/pages/{_app-a7c02dd2ff07f9e1.js → _app-4f697016cf2fb1bb.js} +43 -43
  89. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/manual-055d058d16c02957.js +1 -0
  90. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/multiple-e2a5c951347195e3.js +1 -0
  91. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-0058fe05f2d23d1a.js +1 -0
  92. fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-7a258b7ecd6da4b8.js → add-vendors-7c829e58485fc821.js} +1 -1
  93. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{configure-fb5017ff5fa54fcc.js → configure-5c58b69dd473cc06.js} +1 -1
  94. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-e1e2fd704ac2d71d.js → [id]-58460ac9c1dface5.js} +1 -1
  95. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience-b6b2d50d894cefa5.js +1 -0
  96. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-5fc78b78a51c239c.js → [id]-25ce8366e689363b.js} +1 -1
  97. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-b79bcb93b5f4c734.js → new-faa457089616711a.js} +1 -1
  98. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-a7fe3925771bb6c3.js +1 -0
  99. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-069f4e3ee96ebf77.js → properties-45a2901a35edc8f7.js} +1 -1
  100. fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-e9ec351281c54822.js +1 -0
  101. fides/ui-build/static/admin/_next/static/chunks/pages/{consent-d2bf72508c3cad55.js → consent-a7a4e419e4086033.js} +1 -1
  102. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-2fa4b3a58f75f81d.js → [resourceUrn]-3b59925f6c9a13a9.js} +1 -1
  103. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-ffb6e0fe6712342e.js +1 -0
  104. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-3c935e93208d2bdd.js +1 -0
  105. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-5b31e3d7727b917a.js → [resourceUrn]-8d7d9152e215c3b6.js} +1 -1
  106. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources-96be972a983616e3.js +1 -0
  107. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-79d06a04698c47c0.js +1 -0
  108. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-e50e9c8e11412b2a.js +1 -0
  109. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/data-explorer-dd93cffd6744837d.js +1 -0
  110. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-878aa4ab0746df5b.js +1 -0
  111. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-a2e9c0bfa67c633d.js +1 -0
  112. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-70ca690b253a118e.js +1 -0
  113. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-844a8de0d1b506e2.js → [resourceUrn]-260f5deb68966b70.js} +1 -1
  114. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-11b07cf2d91b17ef.js → detection-d735dab3d9f3adc5.js} +1 -1
  115. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-5525cf287d4ab493.js → [resourceUrn]-c7f055275a2c503f.js} +1 -1
  116. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-ed4723e1b67d890e.js → discovery-b1cfd55c7e127865.js} +1 -1
  117. fides/ui-build/static/admin/_next/static/chunks/pages/datamap-18f255a8bbeecaa4.js +1 -0
  118. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-e04a4e16ccf32aef.js +1 -0
  119. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-a40c4febe16a0a6d.js +1 -0
  120. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-f500a77eefb057e7.js +1 -0
  121. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-5c20080cdb053b1d.js +1 -0
  122. fides/ui-build/static/admin/_next/static/chunks/pages/dataset-96355a68e8c28fe8.js +1 -0
  123. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/[id]-448729ee9d1d78c3.js +1 -0
  124. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/new-42c720ec5c941573.js +1 -0
  125. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-a8fc95a46de38b35.js +1 -0
  126. fides/ui-build/static/admin/_next/static/chunks/pages/{index-b74d1e8608ae5b5d.js → index-ca794e85c16cba67.js} +1 -1
  127. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-2f1dc17eba11fb4e.js +1 -0
  128. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-bbec0140433a199b.js +1 -0
  129. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/digests/[id]-058125922d1eaeec.js +1 -0
  130. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/digests/new-7a5f76708c79f714.js +1 -0
  131. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/digests-31bed1f86b89d1d8.js +1 -0
  132. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/providers/[key]-d08f3a7cd2d011ec.js +1 -0
  133. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/providers/new-cb2c7fbc26886052.js +1 -0
  134. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/providers-40b9f1f70d27b660.js +1 -0
  135. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates/[id]-a6ae72abe59ff830.js +1 -0
  136. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates/add-template-a3e4b5b575b31be1.js +1 -0
  137. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates-4918f86f7300ac9b.js +1 -0
  138. fides/ui-build/static/admin/_next/static/chunks/pages/notifications-9644c0f088a01fea.js +1 -0
  139. fides/ui-build/static/admin/_next/static/chunks/pages/poc/ant-components-39b5586d9c8b64aa.js +1 -0
  140. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/AntForm-5163f3213377bd35.js +1 -0
  141. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikAntFormItem-0b1547cd9b114c6b.js +1 -0
  142. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikControlled-da562cba4cffd6bb.js +1 -0
  143. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikField-3a587676869d2ef6.js +1 -0
  144. fides/ui-build/static/admin/_next/static/chunks/pages/poc/forms-defc3b917306a6d8.js +1 -0
  145. fides/ui-build/static/admin/_next/static/chunks/pages/poc/{table-migration-29fb7b39f8962650.js → table-migration-11a70bcfa672ce8f.js} +1 -1
  146. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-787621468b5a7619.js +1 -0
  147. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-24a8c2ab57625556.js +1 -0
  148. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-8f577df28ebca869.js → configure-1926359bdf5d6c30.js} +1 -1
  149. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-da634187d8201ab3.js +1 -0
  150. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-57a75c7e9659271a.js → [id]-47118b9976ad7212.js} +1 -1
  151. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-8964c2300206bc89.js → add-property-2e6b0d8b409ba1fd.js} +1 -1
  152. fides/ui-build/static/admin/_next/static/chunks/pages/{properties-08472b2a6bf1d392.js → properties-32486c25255c9cb1.js} +1 -1
  153. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-e410d13a2b35cff4.js +1 -0
  154. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-aec1bf8a409ec75f.js +1 -0
  155. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-4c20c08ca7ea8cff.js +1 -0
  156. fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-8e4a76376927afd5.js +1 -0
  157. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-744f669431b84f71.js → domain-records-e3dcef1ec8cf8b9e.js} +1 -1
  158. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-2e88cc7a6074a28b.js +1 -0
  159. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{email-templates-604790638c656fbd.js → email-templates-7469d2f85396c693.js} +1 -1
  160. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-be2a885150adc133.js → locations-20789aa0c84d544e.js} +1 -1
  161. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{organization-3c86162afe9759df.js → organization-f84a13eb9688cb5f.js} +1 -1
  162. fides/ui-build/static/admin/_next/static/chunks/pages/settings/privacy-requests-b72df6f3d460125f.js +1 -0
  163. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-4fe3b90747d885e5.js → regulations-aa02bc818e089c49.js} +1 -1
  164. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-5be9ce7a745ce908.js +1 -0
  165. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-4d470bbf199a2f9c.js → [id]-2fc7c0d3988427b3.js} +1 -1
  166. fides/ui-build/static/admin/_next/static/chunks/pages/systems-86f5557384124f79.js +1 -0
  167. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-2589729c47976357.js +1 -0
  168. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-98f737e735eaa0f0.js → [id]-6217433a26599521.js} +1 -1
  169. fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-562624e5461083ec.js → user-management-b6c4bf35c003965d.js} +1 -1
  170. fides/ui-build/static/admin/_next/static/chunks/{webpack-2766492c5dbceb0a.js → webpack-8eac1ea5c825c8b4.js} +1 -1
  171. fides/ui-build/static/admin/_next/static/css/de09ed8a0adf1ca2.css +1 -0
  172. fides/ui-build/static/admin/add-systems/manual.html +1 -1
  173. fides/ui-build/static/admin/add-systems/multiple.html +1 -1
  174. fides/ui-build/static/admin/add-systems.html +1 -1
  175. fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
  176. fides/ui-build/static/admin/consent/configure.html +1 -1
  177. fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
  178. fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
  179. fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
  180. fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
  181. fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
  182. fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
  183. fides/ui-build/static/admin/consent/properties.html +1 -1
  184. fides/ui-build/static/admin/consent/reporting.html +1 -1
  185. fides/ui-build/static/admin/consent.html +1 -1
  186. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
  187. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
  188. fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
  189. fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
  190. fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
  191. fides/ui-build/static/admin/data-catalog.html +1 -1
  192. fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +1 -1
  193. fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/data-explorer.html +1 -0
  194. fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +1 -1
  195. fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
  196. fides/ui-build/static/admin/data-discovery/activity.html +1 -1
  197. fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
  198. fides/ui-build/static/admin/data-discovery/detection.html +1 -1
  199. fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
  200. fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
  201. fides/ui-build/static/admin/datamap.html +1 -1
  202. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
  203. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
  204. fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
  205. fides/ui-build/static/admin/dataset/new.html +1 -1
  206. fides/ui-build/static/admin/dataset.html +1 -1
  207. fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
  208. fides/ui-build/static/admin/datastore-connection/new.html +1 -1
  209. fides/ui-build/static/admin/datastore-connection.html +1 -1
  210. fides/ui-build/static/admin/index.html +1 -1
  211. fides/ui-build/static/admin/integrations/[id].html +1 -1
  212. fides/ui-build/static/admin/integrations.html +1 -1
  213. fides/ui-build/static/admin/lib/fides-preview.js +1 -1
  214. fides/ui-build/static/admin/lib/fides-tcf.js +2 -2
  215. fides/ui-build/static/admin/lib/fides.js +2 -2
  216. fides/ui-build/static/admin/login/[provider].html +1 -1
  217. fides/ui-build/static/admin/login.html +1 -1
  218. fides/ui-build/static/admin/notifications/digests/[id].html +1 -0
  219. fides/ui-build/static/admin/notifications/digests/new.html +1 -0
  220. fides/ui-build/static/admin/notifications/digests.html +1 -0
  221. fides/ui-build/static/admin/notifications/providers/[key].html +1 -0
  222. fides/ui-build/static/admin/notifications/providers/new.html +1 -0
  223. fides/ui-build/static/admin/notifications/providers.html +1 -0
  224. fides/ui-build/static/admin/notifications/templates/[id].html +1 -0
  225. fides/ui-build/static/admin/notifications/templates/add-template.html +1 -0
  226. fides/ui-build/static/admin/notifications/templates.html +1 -0
  227. fides/ui-build/static/admin/notifications.html +1 -0
  228. fides/ui-build/static/admin/poc/ant-components.html +1 -1
  229. fides/ui-build/static/admin/poc/form-experiments/AntForm.html +1 -1
  230. fides/ui-build/static/admin/poc/form-experiments/FormikAntFormItem.html +1 -1
  231. fides/ui-build/static/admin/poc/form-experiments/FormikControlled.html +1 -1
  232. fides/ui-build/static/admin/poc/form-experiments/FormikField.html +1 -1
  233. fides/ui-build/static/admin/poc/form-experiments/FormikSpreadField.html +1 -1
  234. fides/ui-build/static/admin/poc/forms.html +1 -1
  235. fides/ui-build/static/admin/poc/table-migration.html +1 -1
  236. fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
  237. fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
  238. fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
  239. fides/ui-build/static/admin/privacy-requests.html +1 -1
  240. fides/ui-build/static/admin/properties/[id].html +1 -1
  241. fides/ui-build/static/admin/properties/add-property.html +1 -1
  242. fides/ui-build/static/admin/properties.html +1 -1
  243. fides/ui-build/static/admin/reporting/datamap.html +1 -1
  244. fides/ui-build/static/admin/settings/about/alpha.html +1 -1
  245. fides/ui-build/static/admin/settings/about.html +1 -1
  246. fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +1 -1
  247. fides/ui-build/static/admin/settings/consent.html +1 -1
  248. fides/ui-build/static/admin/settings/custom-fields/[id].html +1 -1
  249. fides/ui-build/static/admin/settings/custom-fields/new.html +1 -1
  250. fides/ui-build/static/admin/settings/custom-fields.html +1 -1
  251. fides/ui-build/static/admin/settings/domain-records.html +1 -1
  252. fides/ui-build/static/admin/settings/domains.html +1 -1
  253. fides/ui-build/static/admin/settings/email-templates.html +1 -1
  254. fides/ui-build/static/admin/settings/locations.html +1 -1
  255. fides/ui-build/static/admin/settings/organization.html +1 -1
  256. fides/ui-build/static/admin/settings/privacy-requests.html +1 -1
  257. fides/ui-build/static/admin/settings/regulations.html +1 -1
  258. fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
  259. fides/ui-build/static/admin/systems/configure/[id].html +1 -1
  260. fides/ui-build/static/admin/systems.html +1 -1
  261. fides/ui-build/static/admin/taxonomy.html +1 -1
  262. fides/ui-build/static/admin/user-management/new.html +1 -1
  263. fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
  264. fides/ui-build/static/admin/user-management.html +1 -1
  265. fides/ui-build/static/admin/_next/static/ayPtYqII_BsdUxHOkbH2k/_buildManifest.js +0 -1
  266. fides/ui-build/static/admin/_next/static/chunks/155-c1ae010c664e2245.js +0 -1
  267. fides/ui-build/static/admin/_next/static/chunks/2921-66f65496c3a09316.js +0 -1
  268. fides/ui-build/static/admin/_next/static/chunks/3585-efd5d41f08e180c4.js +0 -1
  269. fides/ui-build/static/admin/_next/static/chunks/3855-12ee1dfbbe47fd28.js +0 -1
  270. fides/ui-build/static/admin/_next/static/chunks/3872-04d3afbfa41a7782.js +0 -1
  271. fides/ui-build/static/admin/_next/static/chunks/401-ffe4e8436e1eceb9.js +0 -1
  272. fides/ui-build/static/admin/_next/static/chunks/409-c1256ecda1b15db6.js +0 -1
  273. fides/ui-build/static/admin/_next/static/chunks/431-78bf05f35d7eec4f.js +0 -1
  274. fides/ui-build/static/admin/_next/static/chunks/4558-de5ced790b3380dc.js +0 -1
  275. fides/ui-build/static/admin/_next/static/chunks/4608-a9941d0c236ebca1.js +0 -1
  276. fides/ui-build/static/admin/_next/static/chunks/4718-6585c97c26647e65.js +0 -1
  277. fides/ui-build/static/admin/_next/static/chunks/502-d3ecae97b67befbd.js +0 -1
  278. fides/ui-build/static/admin/_next/static/chunks/504-88caa30c03374e9b.js +0 -1
  279. fides/ui-build/static/admin/_next/static/chunks/5185-51eaa78e3ed6bfb7.js +0 -1
  280. fides/ui-build/static/admin/_next/static/chunks/5309-3b6cf0cc9d0c6a83.js +0 -1
  281. fides/ui-build/static/admin/_next/static/chunks/5574-c31ea831371610d5.js +0 -1
  282. fides/ui-build/static/admin/_next/static/chunks/5643-10a36584c399526c.js +0 -1
  283. fides/ui-build/static/admin/_next/static/chunks/6277-182efc294d413f64.js +0 -1
  284. fides/ui-build/static/admin/_next/static/chunks/6882-10296485ec326e6b.js +0 -1
  285. fides/ui-build/static/admin/_next/static/chunks/6954-4b24e1731c1cc3b3.js +0 -1
  286. fides/ui-build/static/admin/_next/static/chunks/7045-f15044a4d4525946.js +0 -1
  287. fides/ui-build/static/admin/_next/static/chunks/7079-bbc7b856802a4834.js +0 -1
  288. fides/ui-build/static/admin/_next/static/chunks/7158-04745cc8d684b2e7.js +0 -1
  289. fides/ui-build/static/admin/_next/static/chunks/7218-e2983b96b95e33b4.js +0 -1
  290. fides/ui-build/static/admin/_next/static/chunks/7630-d0d3a0fe3f95e971.js +0 -1
  291. fides/ui-build/static/admin/_next/static/chunks/7725-f2a7be705b75dcc3.js +0 -1
  292. fides/ui-build/static/admin/_next/static/chunks/7929-0fd0d4948bc8d70e.js +0 -1
  293. fides/ui-build/static/admin/_next/static/chunks/8002-ed832921ad190832.js +0 -1
  294. fides/ui-build/static/admin/_next/static/chunks/9046-2a332fe338535c84.js +0 -1
  295. fides/ui-build/static/admin/_next/static/chunks/9226-4a7027057f55ca2a.js +0 -1
  296. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/manual-4ec03eed67572861.js +0 -1
  297. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/multiple-2ca59996860a33c5.js +0 -1
  298. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-58920afe2b67f952.js +0 -1
  299. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience-92182be6603c2842.js +0 -1
  300. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-ab54b19609bff325.js +0 -1
  301. fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-ae4909cad9b67822.js +0 -1
  302. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-4a1af12d2d7cd660.js +0 -1
  303. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-99573a1ee3ef8f4c.js +0 -1
  304. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources-6e429b7511028d60.js +0 -1
  305. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-56fd0f3e465e52b6.js +0 -1
  306. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-29c1fb777bd464e0.js +0 -1
  307. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-0d512528b498d75c.js +0 -1
  308. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-040813022f0890c9.js +0 -1
  309. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-2635ef588bf06145.js +0 -1
  310. fides/ui-build/static/admin/_next/static/chunks/pages/datamap-15616bea02397ef4.js +0 -1
  311. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-d4031e438c363fff.js +0 -1
  312. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-9463af37079762d0.js +0 -1
  313. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-60a4a9eb4aab4c11.js +0 -1
  314. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-ea198c4a7869f402.js +0 -1
  315. fides/ui-build/static/admin/_next/static/chunks/pages/dataset-0e3a6ac4797ffbbb.js +0 -1
  316. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/[id]-816e02b6cbe4a684.js +0 -1
  317. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/new-b6838162200141b3.js +0 -1
  318. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-223c2d1ded51bfb1.js +0 -1
  319. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-153eb88ab4e7dc6d.js +0 -1
  320. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-f682b1def859931e.js +0 -1
  321. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/[id]-e8d2140787045acd.js +0 -1
  322. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/add-template-e3f93462a08251bf.js +0 -1
  323. fides/ui-build/static/admin/_next/static/chunks/pages/messaging-b5f7d6afdecd013d.js +0 -1
  324. fides/ui-build/static/admin/_next/static/chunks/pages/poc/ant-components-248ad9f65a872442.js +0 -1
  325. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/AntForm-aedb66a62042b10a.js +0 -1
  326. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikAntFormItem-018df38b7cd77fdb.js +0 -1
  327. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikControlled-6ca9099d03aab817.js +0 -1
  328. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikField-0f2c90786ea005a4.js +0 -1
  329. fides/ui-build/static/admin/_next/static/chunks/pages/poc/forms-200b51a725f8b2d1.js +0 -1
  330. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-febf156d2977f3ac.js +0 -1
  331. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-648d775d0fce49dc.js +0 -1
  332. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-7af00f72cf694077.js +0 -1
  333. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-f7753e9effae3816.js +0 -1
  334. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-f3e6e74e0efb005c.js +0 -1
  335. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-4d658222ec800511.js +0 -1
  336. fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-5edfec10a945ca43.js +0 -1
  337. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-a3275554ffe8e640.js +0 -1
  338. fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers/[key]-77239269acc2d31a.js +0 -1
  339. fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers/new-8bf1821722b082e9.js +0 -1
  340. fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers-8d92be437793c96f.js +0 -1
  341. fides/ui-build/static/admin/_next/static/chunks/pages/settings/privacy-requests-8cbdfd08e0fa88fb.js +0 -1
  342. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-2deb6becece69d46.js +0 -1
  343. fides/ui-build/static/admin/_next/static/chunks/pages/systems-0f1d833282f09684.js +0 -1
  344. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-a8cfa7de4948b374.js +0 -1
  345. fides/ui-build/static/admin/_next/static/css/64fac6fb884435c2.css +0 -1
  346. fides/ui-build/static/admin/messaging/[id].html +0 -1
  347. fides/ui-build/static/admin/messaging/add-template.html +0 -1
  348. fides/ui-build/static/admin/messaging.html +0 -1
  349. fides/ui-build/static/admin/settings/messaging-providers/[key].html +0 -1
  350. fides/ui-build/static/admin/settings/messaging-providers/new.html +0 -1
  351. fides/ui-build/static/admin/settings/messaging-providers.html +0 -1
  352. {ethyca_fides-2.71.1rc2.dist-info → ethyca_fides-2.72.0.dist-info}/WHEEL +0 -0
  353. {ethyca_fides-2.71.1rc2.dist-info → ethyca_fides-2.72.0.dist-info}/entry_points.txt +0 -0
  354. {ethyca_fides-2.71.1rc2.dist-info → ethyca_fides-2.72.0.dist-info}/licenses/LICENSE +0 -0
  355. {ethyca_fides-2.71.1rc2.dist-info → ethyca_fides-2.72.0.dist-info}/top_level.txt +0 -0
  356. /fides/ui-build/static/admin/_next/static/{ayPtYqII_BsdUxHOkbH2k → BOxlzhSs4KC4KKoRi_z4Y}/_ssgManifest.js +0 -0
  357. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields/{[id]-bd1042a0e9be6aff.js → [id]-a270325109398f48.js} +0 -0
  358. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields/{new-469ad83c8cfa1290.js → new-2e0c8e249f286427.js} +0 -0
  359. /fides/ui-build/static/admin/_next/static/chunks/pages/user-management/{new-629c88e90699369b.js → new-e399005c3bb4db1b.js} +0 -0
@@ -0,0 +1,316 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Weekly DSR Summary</title>
7
+ <style>
8
+ /* Reset styles for email clients */
9
+ body, table, td, p, a, li, blockquote {
10
+ -webkit-text-size-adjust: 100%;
11
+ -ms-text-size-adjust: 100%;
12
+ }
13
+
14
+ table, td {
15
+ mso-table-lspace: 0pt;
16
+ mso-table-rspace: 0pt;
17
+ }
18
+
19
+ img {
20
+ -ms-interpolation-mode: bicubic;
21
+ border: 0;
22
+ height: auto;
23
+ line-height: 100%;
24
+ outline: none;
25
+ text-decoration: none;
26
+ }
27
+
28
+ /* Main styles */
29
+ body {
30
+ margin: 0;
31
+ padding: 0;
32
+ width: 100% !important;
33
+ min-width: 100%;
34
+ height: 100%;
35
+ background-color: #f8fafc;
36
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
37
+ font-size: 16px;
38
+ line-height: 1.6;
39
+ color: #334155;
40
+ }
41
+
42
+ .email-container {
43
+ max-width: 600px;
44
+ margin: 0 auto;
45
+ background-color: #ffffff;
46
+ border-radius: 8px;
47
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
48
+ overflow: hidden;
49
+ }
50
+
51
+ .logo-section {
52
+ background-color: #ffffff;
53
+ padding: 24px;
54
+ text-align: center;
55
+ border-bottom: 1px solid #e5e5e5;
56
+ }
57
+
58
+ .logo-container {
59
+ margin-bottom: 0;
60
+ }
61
+
62
+ .header {
63
+ background-color: #000000;
64
+ padding: 32px 24px;
65
+ text-align: center;
66
+ }
67
+
68
+ .logo {
69
+ max-width: 200px;
70
+ max-height: 60px;
71
+ width: auto;
72
+ height: auto;
73
+ display: block;
74
+ margin: 0 auto;
75
+ }
76
+
77
+ .logo-placeholder {
78
+ width: 200px;
79
+ height: 60px;
80
+ background-color: #333333;
81
+ border: 2px dashed #666666;
82
+ display: flex;
83
+ align-items: center;
84
+ justify-content: center;
85
+ margin: 0 auto;
86
+ color: #999999;
87
+ font-size: 14px;
88
+ font-weight: 500;
89
+ text-align: center;
90
+ border-radius: 4px;
91
+ }
92
+
93
+ .header h1 {
94
+ color: #ffffff;
95
+ font-size: 24px;
96
+ font-weight: 600;
97
+ margin: 0;
98
+ letter-spacing: -0.025em;
99
+ }
100
+
101
+ .content {
102
+ padding: 32px 24px;
103
+ }
104
+
105
+ .greeting {
106
+ font-size: 18px;
107
+ color: #000000;
108
+ margin-bottom: 24px;
109
+ font-weight: 500;
110
+ }
111
+
112
+ .intro-text {
113
+ margin-bottom: 32px;
114
+ color: #333333;
115
+ line-height: 1.7;
116
+ }
117
+
118
+ .section {
119
+ margin-bottom: 32px;
120
+ }
121
+
122
+ .section-title {
123
+ font-size: 20px;
124
+ font-weight: 600;
125
+ color: #000000;
126
+ margin-bottom: 16px;
127
+ padding-bottom: 8px;
128
+ border-bottom: 2px solid #e5e5e5;
129
+ }
130
+
131
+ .task-count {
132
+ background-color: #f5f5f5;
133
+ border-left: 4px solid #000000;
134
+ padding: 16px 20px;
135
+ margin-bottom: 20px;
136
+ border-radius: 0 6px 6px 0;
137
+ }
138
+
139
+ .task-count-text {
140
+ font-size: 18px;
141
+ font-weight: 600;
142
+ color: #000000;
143
+ margin: 0;
144
+ }
145
+
146
+ .cta-button {
147
+ display: inline-block;
148
+ background-color: #000000;
149
+ color: #ffffff !important;
150
+ text-decoration: none;
151
+ padding: 12px 24px;
152
+ border-radius: 6px;
153
+ font-weight: 600;
154
+ font-size: 16px;
155
+ text-align: center;
156
+ transition: all 0.2s ease;
157
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
158
+ }
159
+
160
+ .cta-button:hover {
161
+ background-color: #333333;
162
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
163
+ transform: translateY(-1px);
164
+ }
165
+
166
+ .footer {
167
+ background-color: #f5f5f5;
168
+ padding: 24px;
169
+ text-align: center;
170
+ border-top: 1px solid #e5e5e5;
171
+ }
172
+
173
+ .footer-text {
174
+ color: #666666;
175
+ font-size: 14px;
176
+ line-height: 1.6;
177
+ margin: 0;
178
+ }
179
+
180
+ .signature {
181
+ margin-top: 24px;
182
+ color: #333333;
183
+ font-weight: 500;
184
+ }
185
+
186
+ /* Responsive styles */
187
+ @media only screen and (max-width: 600px) {
188
+ .email-container {
189
+ margin: 0;
190
+ border-radius: 0;
191
+ }
192
+
193
+ .header, .content, .footer {
194
+ padding: 24px 16px;
195
+ }
196
+
197
+ .header h1 {
198
+ font-size: 20px;
199
+ }
200
+
201
+ .greeting {
202
+ font-size: 16px;
203
+ }
204
+
205
+ .section-title {
206
+ font-size: 18px;
207
+ }
208
+
209
+ .cta-button {
210
+ width: 100%;
211
+ box-sizing: border-box;
212
+ }
213
+ }
214
+
215
+ /* Dark mode support */
216
+ @media (prefers-color-scheme: dark) {
217
+ body {
218
+ background-color: #000000;
219
+ }
220
+
221
+ .email-container {
222
+ background-color: #1a1a1a;
223
+ }
224
+
225
+ .greeting, .section-title {
226
+ color: #ffffff;
227
+ }
228
+
229
+ .intro-text, .footer-text, .signature {
230
+ color: #cccccc;
231
+ }
232
+
233
+ .task-count {
234
+ background-color: #333333;
235
+ border-left-color: #ffffff;
236
+ }
237
+
238
+ .task-count-text {
239
+ color: #ffffff;
240
+ }
241
+
242
+ .footer {
243
+ background-color: #333333;
244
+ border-top-color: #666666;
245
+ }
246
+
247
+ .logo-section {
248
+ background-color: #1a1a1a;
249
+ border-bottom-color: #666666;
250
+ }
251
+
252
+ .logo-placeholder {
253
+ background-color: #555555;
254
+ border-color: #888888;
255
+ color: #cccccc;
256
+ }
257
+ }
258
+ </style>
259
+ </head>
260
+ <body>
261
+ <div style="padding: 20px 0;">
262
+ <div class="email-container">
263
+ <!-- Logo Section -->
264
+ <div class="logo-section">
265
+ <div class="logo-container">
266
+ {% if company_logo_url %}
267
+ <img src="{{ company_logo_url }}" alt="{{ organization_name }} Logo" class="logo">
268
+ {% else %}
269
+ <div class="logo-placeholder">{{ organization_name }}</div>
270
+ {% endif %}
271
+ </div>
272
+ </div>
273
+
274
+ <!-- Main Content -->
275
+ <div class="content">
276
+ <div class="greeting">Hi {{ vendor_contact_name }},</div>
277
+
278
+ <div class="intro-text">
279
+ {{ intro_text | default("This is your weekly summary of open data subject requests tasks from " + organization_name + " that require your attention. Please review the tasks listed below in our <a href='" + portal_url + "' style='color: #000000; text-decoration: underline; font-weight: 600;'>Privacy Center</a> to ensure timely completion.") | safe }}
280
+ </div>
281
+
282
+ <!-- Tasks Due Soon Section -->
283
+ <div class="section">
284
+ <div class="section-title">Tasks Due Soon</div>
285
+
286
+ <div class="task-count">
287
+ <p class="task-count-text">You have {{ total_task_count }} request{{ 's' if total_task_count != 1 else '' }} coming due, including {{ imminent_task_count }} within the next 7 days and {{ upcoming_task_count }} due in the next period.</p>
288
+ </div>
289
+
290
+ <div style="text-align: center;">
291
+ <a href="{{ portal_url }}" class="cta-button">View All Tasks</a>
292
+ </div>
293
+ </div>
294
+
295
+ <!-- Closing -->
296
+ <div style="margin-top: 32px;">
297
+ <p style="color: #333333; margin-bottom: 24px;">
298
+ {{ closing_text | default("Thank you for your partnership in processing these requests efficiently. If you have any questions or issues, please reach out to your contacts at " + organization_name + ".") | safe }}
299
+ </p>
300
+
301
+ <div class="signature">
302
+ {{ signature | default("Best regards,<br>The " + organization_name + " Privacy Team") | safe }}
303
+ </div>
304
+ </div>
305
+ </div>
306
+
307
+ <!-- Footer -->
308
+ <div class="footer">
309
+ <p class="footer-text">
310
+ This email was sent from your Privacy Center. Please do not reply to this email.
311
+ </p>
312
+ </div>
313
+ </div>
314
+ </div>
315
+ </body>
316
+ </html>
@@ -25,6 +25,7 @@ class MonitorTaskType(Enum):
25
25
 
26
26
  DETECTION = "detection"
27
27
  CLASSIFICATION = "classification"
28
+ LLM_CLASSIFICATION = "llm_classification"
28
29
  PROMOTION = "promotion"
29
30
  REMOVAL_PROMOTION = "removal_promotion"
30
31
 
@@ -4,6 +4,7 @@ from sqlalchemy import Column, DateTime, ForeignKey, Integer, String, Text
4
4
  from sqlalchemy.dialects.postgresql import JSONB
5
5
  from sqlalchemy.ext.declarative import declared_attr
6
6
  from sqlalchemy.orm import Session, relationship
7
+ from sqlalchemy.orm.attributes import flag_modified
7
8
  from sqlalchemy.sql import func
8
9
 
9
10
  from fides.api.db.base_class import Base
@@ -92,8 +93,12 @@ class DigestTaskExecution(
92
93
  self.processed_user_ids = processed_user_ids
93
94
  self.last_checkpoint_at = func.now()
94
95
 
96
+ # Mark JSONB fields as modified so SQLAlchemy knows they changed
97
+ flag_modified(self, "processed_user_ids")
98
+
95
99
  if execution_state:
96
100
  self.execution_state = execution_state
101
+ flag_modified(self, "execution_state")
97
102
 
98
103
  self.save(db)
99
104
 
@@ -123,8 +128,13 @@ class DigestTaskExecution(
123
128
 
124
129
  def get_remaining_work(self) -> Dict[str, Any]:
125
130
  """Get information about remaining work for resumption."""
131
+ # Ensure processed_user_ids is always a list
132
+ raw_processed_user_ids = self.processed_user_ids or []
133
+ processed_user_ids = (
134
+ raw_processed_user_ids if isinstance(raw_processed_user_ids, list) else []
135
+ )
126
136
  return {
127
- "processed_user_ids": self.processed_user_ids or [],
137
+ "processed_user_ids": processed_user_ids,
128
138
  "execution_state": self.execution_state or {},
129
139
  "processed_count": self.processed_recipients or 0,
130
140
  "successful_count": self.successful_communications,
@@ -31,6 +31,15 @@ class EventAuditType(str, EnumType):
31
31
  taxonomy_element_updated = "taxonomy.element.updated"
32
32
  taxonomy_element_deleted = "taxonomy.element.deleted"
33
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
+
34
43
  # Digest
35
44
  digest_execution_started = "digest.execution.started"
36
45
  digest_execution_completed = "digest.execution.completed"
@@ -58,6 +58,13 @@ 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
+ },
61
68
  }
62
69
 
63
70
 
@@ -369,7 +369,7 @@ class PrivacyRequest(
369
369
  return {
370
370
  "id": self.id,
371
371
  "external_id": self.external_id,
372
- "status": self.status.value,
372
+ "status": self.status.value if self.status is not None else None,
373
373
  "requested_at": (
374
374
  self.requested_at.isoformat() if self.requested_at else None
375
375
  ),
@@ -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
@@ -89,6 +89,7 @@ class MessagingActionType(str, Enum):
89
89
  PRIVACY_REQUEST_REVIEW_APPROVE = "privacy_request_review_approve"
90
90
  USER_INVITE = "user_invite"
91
91
  EXTERNAL_USER_WELCOME = "external_user_welcome"
92
+ MANUAL_TASK_DIGEST = "manual_task_digest"
92
93
  TEST_MESSAGE = "test_message"
93
94
 
94
95
 
@@ -101,6 +102,7 @@ CONFIGURABLE_MESSAGING_ACTION_TYPES: Tuple[str, ...] = (
101
102
  MessagingActionType.PRIVACY_REQUEST_COMPLETE_DELETION.value,
102
103
  MessagingActionType.PRIVACY_REQUEST_REVIEW_DENY.value,
103
104
  MessagingActionType.PRIVACY_REQUEST_REVIEW_APPROVE.value,
105
+ MessagingActionType.MANUAL_TASK_DIGEST.value,
104
106
  )
105
107
 
106
108
 
@@ -219,6 +221,18 @@ class ExternalUserWelcomeBodyParams(BaseModel):
219
221
  org_name: str
220
222
 
221
223
 
224
+ class ManualTaskDigestBodyParams(BaseModel):
225
+ """Body params required to send manual task digest emails"""
226
+
227
+ vendor_contact_name: str
228
+ organization_name: str
229
+ portal_url: str
230
+ imminent_task_count: int
231
+ upcoming_task_count: int
232
+ total_task_count: int
233
+ company_logo_url: Optional[str] = None
234
+
235
+
222
236
  class FidesopsMessage(
223
237
  BaseModel,
224
238
  ):
@@ -256,6 +270,7 @@ class FidesopsMessage(
256
270
  MessagingActionType.PRIVACY_REQUEST_ERROR_NOTIFICATION: ErrorNotificationBodyParams,
257
271
  MessagingActionType.USER_INVITE: UserInviteBodyParams,
258
272
  MessagingActionType.EXTERNAL_USER_WELCOME: ExternalUserWelcomeBodyParams,
273
+ MessagingActionType.MANUAL_TASK_DIGEST: ManualTaskDigestBodyParams,
259
274
  }
260
275
 
261
276
  valid_body_params = valid_body_params_for_action_type.get(
@@ -46,6 +46,7 @@ from fides.api.util.saas_util import (
46
46
  ISO_8601_DATETIME,
47
47
  MASKED_OBJECT_FIELDS,
48
48
  PRIVACY_REQUEST_ID,
49
+ PRIVACY_REQUEST_OBJECT,
49
50
  REPLY_TO,
50
51
  REPLY_TO_TOKEN,
51
52
  UUID,
@@ -211,6 +212,7 @@ class SaaSQueryConfig(QueryConfig[SaaSRequestParams]):
211
212
  input_data: Dict[str, List[Any]],
212
213
  policy: Optional[Policy],
213
214
  read_request: SaaSRequest,
215
+ privacy_request: Optional[PrivacyRequest] = None,
214
216
  ) -> List[Tuple[SaaSRequestParams, Dict[str, Any]]]:
215
217
  """
216
218
  Takes the identity and reference values from input_data and combines them
@@ -223,6 +225,10 @@ class SaaSQueryConfig(QueryConfig[SaaSRequestParams]):
223
225
  self.current_request = read_request
224
226
 
225
227
  request_params = []
228
+
229
+ if privacy_request:
230
+ input_data[PRIVACY_REQUEST_OBJECT] = [privacy_request.to_safe_dict()]
231
+
226
232
  param_value_maps = self.generate_param_value_maps(input_data, read_request)
227
233
 
228
234
  for param_value_map in param_value_maps:
@@ -342,6 +348,14 @@ class SaaSQueryConfig(QueryConfig[SaaSRequestParams]):
342
348
  if self.privacy_request:
343
349
  param_values[PRIVACY_REQUEST_ID] = self.privacy_request.id
344
350
 
351
+ privacy_request_object = input_data.get(PRIVACY_REQUEST_OBJECT)
352
+ if (
353
+ isinstance(privacy_request_object, list)
354
+ and len(privacy_request_object) > 0
355
+ and isinstance(privacy_request_object[0], dict)
356
+ ):
357
+ param_values[PRIVACY_REQUEST_OBJECT] = privacy_request_object[0]
358
+
345
359
  custom_privacy_request_fields = input_data.get(CUSTOM_PRIVACY_REQUEST_FIELDS)
346
360
  if (
347
361
  isinstance(custom_privacy_request_fields, list)
@@ -462,6 +476,8 @@ class SaaSQueryConfig(QueryConfig[SaaSRequestParams]):
462
476
  if self.privacy_request:
463
477
  param_values[PRIVACY_REQUEST_ID] = self.privacy_request.id
464
478
 
479
+ param_values[PRIVACY_REQUEST_OBJECT] = privacy_request.to_safe_dict()
480
+
465
481
  param_values[CUSTOM_PRIVACY_REQUEST_FIELDS] = custom_privacy_request_fields
466
482
  param_values[UUID] = str(uuid4())
467
483
  param_values[ISO_8601_DATETIME] = datetime.now().strftime("%Y-%m-%dT%H:%M:%SZ")