ethyca-fides 2.69.3b0__py2.py3-none-any.whl → 2.69.3b2__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 (332) hide show
  1. {ethyca_fides-2.69.3b0.dist-info → ethyca_fides-2.69.3b2.dist-info}/METADATA +1 -1
  2. {ethyca_fides-2.69.3b0.dist-info → ethyca_fides-2.69.3b2.dist-info}/RECORD +267 -239
  3. fides/_version.py +3 -3
  4. fides/api/alembic/migrations/versions/30369bb8ae01_add_webmonitorgroupjob_model.py +67 -0
  5. fides/api/alembic/migrations/versions/5fa78b1f324d_add_event_audit_table.py +82 -0
  6. fides/api/alembic/migrations/versions/67d0e389b003_update_consentstatus_enum.py +47 -0
  7. fides/api/alembic/migrations/versions/b9bfa12c167b_add_not_applicable_to_asset_consentstatus.py +46 -0
  8. fides/api/alembic/migrations/versions/f36ce1bde293_add_system_groups.py +132 -0
  9. fides/api/alembic/migrations/versions/fd7571bef683_adds_new_fields_to_messagingconfig_for_.py +31 -0
  10. fides/api/api/v1/endpoints/messaging_endpoints.py +164 -34
  11. fides/api/api/v1/endpoints/system.py +140 -55
  12. fides/api/db/base.py +3 -0
  13. fides/api/db/seed.py +34 -0
  14. fides/api/main.py +2 -0
  15. fides/api/models/asset.py +3 -0
  16. fides/api/models/detection_discovery/web_monitor.py +61 -0
  17. fides/api/models/event_audit.py +68 -0
  18. fides/api/models/messaging.py +30 -10
  19. fides/api/models/sql_models.py +8 -0
  20. fides/api/models/system_group.py +85 -0
  21. fides/api/models/taxonomy.py +16 -4
  22. fides/api/schemas/application_config.py +4 -1
  23. fides/api/schemas/messaging/messaging.py +33 -66
  24. fides/api/schemas/messaging/messaging_secrets_docs_only.py +1 -1
  25. fides/api/schemas/messaging/shared_schemas.py +102 -0
  26. fides/api/schemas/saas/saas_config.py +2 -17
  27. fides/api/schemas/saas/strategy_configuration.py +12 -0
  28. fides/api/schemas/system.py +8 -0
  29. fides/api/service/async_dsr/async_dsr_service.py +130 -10
  30. fides/api/service/async_dsr/async_dsr_strategy.py +5 -0
  31. fides/api/service/async_dsr/async_dsr_strategy_callback.py +16 -0
  32. fides/api/service/async_dsr/async_dsr_strategy_factory.py +63 -0
  33. fides/api/service/async_dsr/async_dsr_strategy_polling.py +94 -0
  34. fides/api/service/connectors/saas_connector.py +25 -7
  35. fides/api/service/deps.py +17 -2
  36. fides/api/service/messaging/message_dispatch_service.py +16 -15
  37. fides/api/service/messaging/messaging_crud_service.py +5 -9
  38. fides/api/service/privacy_request/request_runner_service.py +18 -0
  39. fides/api/service/privacy_request/request_service.py +29 -20
  40. fides/api/service/strategy.py +6 -3
  41. fides/api/task/graph_task.py +1 -2
  42. fides/api/tasks/__init__.py +1 -0
  43. fides/api/util/filter_utils.py +0 -3
  44. fides/api/worker/__init__.py +2 -0
  45. fides/common/api/v1/urn_registry.py +2 -1
  46. fides/service/event_audit_service.py +115 -0
  47. fides/service/messaging/aws_ses_service.py +2 -4
  48. fides/service/system/__init__.py +0 -0
  49. fides/service/system/system_service.py +138 -0
  50. fides/service/taxonomy/taxonomy_service.py +49 -3
  51. fides/ui-build/static/admin/404.html +1 -1
  52. fides/ui-build/static/admin/_next/static/86A8z6OnbTuDYww0DJkX0/_buildManifest.js +1 -0
  53. fides/ui-build/static/admin/_next/static/chunks/1115-d5a834cdaa717edc.js +1 -0
  54. fides/ui-build/static/admin/_next/static/chunks/155-b5e4370b158e5ee3.js +1 -0
  55. fides/ui-build/static/admin/_next/static/chunks/1817-dc2bba3ca736d39e.js +1 -0
  56. fides/ui-build/static/admin/_next/static/chunks/1841-2052c3239f2a0a1a.js +1 -0
  57. fides/ui-build/static/admin/_next/static/chunks/1896-49010da5c2705fc5.js +1 -0
  58. fides/ui-build/static/admin/_next/static/chunks/2040-3f9c66c56a05b336.js +1 -0
  59. fides/ui-build/static/admin/_next/static/chunks/2751-58285ccf50a0ba4b.js +1 -0
  60. fides/ui-build/static/admin/_next/static/chunks/3377-c5e0cc3de1a5ffd1.js +1 -0
  61. fides/ui-build/static/admin/_next/static/chunks/3696-fff4f944d7d5ff20.js +1 -0
  62. fides/ui-build/static/admin/_next/static/chunks/{3855-ef5194cdb228beb6.js → 3855-8377b3fcbb3d93b0.js} +1 -1
  63. fides/ui-build/static/admin/_next/static/chunks/3872-4786ccbe7c6f65b0.js +1 -0
  64. fides/ui-build/static/admin/_next/static/chunks/409-e1deab19fc7e6d99.js +1 -0
  65. fides/ui-build/static/admin/_next/static/chunks/4230-c55d5531697a715c.js +1 -0
  66. fides/ui-build/static/admin/_next/static/chunks/4608-2fbc3389681f6924.js +1 -0
  67. fides/ui-build/static/admin/_next/static/chunks/4786-8d78ec773d171562.js +1 -0
  68. fides/ui-build/static/admin/_next/static/chunks/5185-a219b390ef17ff4b.js +1 -0
  69. fides/ui-build/static/admin/_next/static/chunks/5309-e994c5195f99b1eb.js +1 -0
  70. fides/ui-build/static/admin/_next/static/chunks/5783-c62c79e7be21be73.js +1 -0
  71. fides/ui-build/static/admin/_next/static/chunks/6084-29cbe703bffdccfe.js +1 -0
  72. fides/ui-build/static/admin/_next/static/chunks/6416-79eee298a5b3f80f.js +1 -0
  73. fides/ui-build/static/admin/_next/static/chunks/6780-eeb7775eb21d7a12.js +1 -0
  74. fides/ui-build/static/admin/_next/static/chunks/{6853-b17673391117c976.js → 6853-91a8641cd2784b54.js} +1 -1
  75. fides/ui-build/static/admin/_next/static/chunks/6882-55dbb142f7c40f53.js +1 -0
  76. fides/ui-build/static/admin/_next/static/chunks/6954-6dfafd38b02d5852.js +1 -0
  77. fides/ui-build/static/admin/_next/static/chunks/7476-3da7a490debad8e2.js +1 -0
  78. fides/ui-build/static/admin/_next/static/chunks/7630-22f9c4b25d6aed29.js +1 -0
  79. fides/ui-build/static/admin/_next/static/chunks/7725-b2fa93d747d3d85d.js +1 -0
  80. fides/ui-build/static/admin/_next/static/chunks/7929-4314e317b1717257.js +1 -0
  81. fides/ui-build/static/admin/_next/static/chunks/796-8e4da90ae82dfebb.js +1 -0
  82. fides/ui-build/static/admin/_next/static/chunks/8002-78d78545309b2c1c.js +1 -0
  83. fides/ui-build/static/admin/_next/static/chunks/8373-bd50fa53cbcab2aa.js +1 -0
  84. fides/ui-build/static/admin/_next/static/chunks/9037-453224ba3ee65b13.js +1 -0
  85. fides/ui-build/static/admin/_next/static/chunks/9046-0f92802b0e3382a9.js +1 -0
  86. fides/ui-build/static/admin/_next/static/chunks/9226-49dbcdb135bf9793.js +1 -0
  87. fides/ui-build/static/admin/_next/static/chunks/9826-f316eb1d61cb90b6.js +1 -0
  88. fides/ui-build/static/admin/_next/static/chunks/{9951-a88367a129b724ba.js → 9951-c389c51ca6353035.js} +1 -1
  89. fides/ui-build/static/admin/_next/static/chunks/pages/{_app-fcdad91f6f66292b.js → _app-c780470042750062.js} +10 -10
  90. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{manual-ace203dfacacbdc4.js → manual-fb9434d926ebf0b3.js} +1 -1
  91. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-92034daafd2187a0.js +1 -0
  92. fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure-87919c1192e68b1a.js +1 -0
  93. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-experience-9dda4de5ec580279.js → privacy-experience-ae8a64fffe3f8c66.js} +1 -1
  94. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-d7d9ff9ed28fa790.js +1 -0
  95. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-226efa1dcd41437f.js → properties-c985ea8c1a0e0550.js} +1 -1
  96. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{reporting-28b192e2c074b0f3.js → reporting-ddf6ba92355f81de.js} +1 -1
  97. fides/ui-build/static/admin/_next/static/chunks/pages/consent-35c0ae9d5b5a940c.js +1 -0
  98. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-2c29ff7a01198f30.js → [resourceUrn]-6a196c704f1c6dd7.js} +1 -1
  99. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-06ba907e7d91a724.js +1 -0
  100. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-8eb581024bc0172f.js → [resourceUrn]-9cee4e222ebb2b60.js} +1 -1
  101. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-f99af5669b9ab44c.js +1 -0
  102. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-db7f1a269d3e7fc2.js +1 -0
  103. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-de957913f9b47daa.js +1 -0
  104. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-5868591ff1e5f881.js +1 -0
  105. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-715064e1c9788e1a.js +1 -0
  106. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-8f736b078e9842da.js → [resourceUrn]-9ae81f5c245b8a01.js} +1 -1
  107. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-eb814e3c22807871.js → detection-6537c93c69b597c7.js} +1 -1
  108. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-6875b7783fcfda2f.js → [resourceUrn]-5db26067d921a94a.js} +1 -1
  109. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-172dbd7740e212ca.js → discovery-9f6a62614d7eb113.js} +1 -1
  110. fides/ui-build/static/admin/_next/static/chunks/pages/datamap-aed0e6dafc143b97.js +1 -0
  111. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-72b9878ea9b91529.js +1 -0
  112. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-f36a46381a6c25d4.js +1 -0
  113. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-b653fd60e7db989b.js +1 -0
  114. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-5bb96c8684a38bbf.js +1 -0
  115. fides/ui-build/static/admin/_next/static/chunks/pages/dataset-639046f6c76bc8bd.js +1 -0
  116. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-927b7e476c4b47d0.js → [id]-6bf117315d909ad1.js} +1 -1
  117. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-cbe100d50df34285.js → new-1e2fa11f22dbc449.js} +1 -1
  118. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-c55e3e0e19030f3f.js +1 -0
  119. fides/ui-build/static/admin/_next/static/chunks/pages/index-d66ea87b457af21e.js +1 -0
  120. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-0159fbb2e0440709.js +1 -0
  121. fides/ui-build/static/admin/_next/static/chunks/pages/{integrations-95402b5001c07ef2.js → integrations-267d2742fffaebe5.js} +1 -1
  122. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-670b05b03ba11e0a.js +1 -0
  123. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-482a7256925a6e06.js +1 -0
  124. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure-331147598052f25c.js +1 -0
  125. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-28083bfb2dec7b9f.js +1 -0
  126. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-e784c05d056b2371.js → [id]-e02dc4b4b385c86f.js} +1 -1
  127. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-0a7a2db148a7561a.js → add-property-74c2a0ff4c992633.js} +1 -1
  128. fides/ui-build/static/admin/_next/static/chunks/pages/{properties-da734840e4f9d04b.js → properties-7459d56e548925b2.js} +1 -1
  129. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/{datamap-6903f42a0412bfa6.js → datamap-aed018025b09c045.js} +1 -1
  130. fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/alpha-68eaac2d79133679.js +1 -0
  131. fides/ui-build/static/admin/_next/static/chunks/pages/settings/about-6c4904c157477285.js +1 -0
  132. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/{[purpose_id]-9495e2eb506606c7.js → [purpose_id]-7f2c50044806c094.js} +1 -1
  133. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-e8cab942d09aa358.js +1 -0
  134. fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-128f952a49a0e8dc.js +1 -0
  135. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domain-records-cca3d1a26e1269bb.js +1 -0
  136. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-07e1b9937a169e32.js +1 -0
  137. fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-3bc799dac8423f50.js +1 -0
  138. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-2e635dcd11b78224.js → locations-9f36b6c213ae524c.js} +1 -1
  139. fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers/[key]-f8887b2b29aed1b9.js +1 -0
  140. fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers/new-5473558807e94462.js +1 -0
  141. fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers-1065fbefd449719c.js +1 -0
  142. fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-3e23d92d789fff99.js +1 -0
  143. fides/ui-build/static/admin/_next/static/chunks/pages/settings/privacy-requests-907bfbb71d84646f.js +1 -0
  144. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-aa1ada4d4ac09759.js +1 -0
  145. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-6e15332935f6b538.js → [id]-02b0dde03a1ad159.js} +1 -1
  146. fides/ui-build/static/admin/_next/static/chunks/pages/systems-4a6ef2509e8cedfc.js +1 -0
  147. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-16b122b83e57bb8c.js +1 -0
  148. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/{new-92f52c43f522a350.js → new-6304dad2c5fab694.js} +1 -1
  149. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-64452dfae2c5e614.js → [id]-0a8ec3aa2ed59a33.js} +1 -1
  150. fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-9cec020f89544426.js → user-management-4036b023366b7eec.js} +1 -1
  151. fides/ui-build/static/admin/_next/static/css/018c12b58ee7f861.css +1 -0
  152. fides/ui-build/static/admin/add-systems/manual.html +1 -1
  153. fides/ui-build/static/admin/add-systems/multiple.html +1 -1
  154. fides/ui-build/static/admin/add-systems.html +1 -1
  155. fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
  156. fides/ui-build/static/admin/consent/configure.html +1 -1
  157. fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
  158. fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
  159. fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
  160. fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
  161. fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
  162. fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
  163. fides/ui-build/static/admin/consent/properties.html +1 -1
  164. fides/ui-build/static/admin/consent/reporting.html +1 -1
  165. fides/ui-build/static/admin/consent.html +1 -1
  166. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
  167. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
  168. fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
  169. fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
  170. fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
  171. fides/ui-build/static/admin/data-catalog.html +1 -1
  172. fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +1 -1
  173. fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +1 -1
  174. fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
  175. fides/ui-build/static/admin/data-discovery/activity.html +1 -1
  176. fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
  177. fides/ui-build/static/admin/data-discovery/detection.html +1 -1
  178. fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
  179. fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
  180. fides/ui-build/static/admin/datamap.html +1 -1
  181. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
  182. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
  183. fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
  184. fides/ui-build/static/admin/dataset/new.html +1 -1
  185. fides/ui-build/static/admin/dataset.html +1 -1
  186. fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
  187. fides/ui-build/static/admin/datastore-connection/new.html +1 -1
  188. fides/ui-build/static/admin/datastore-connection.html +1 -1
  189. fides/ui-build/static/admin/index.html +1 -1
  190. fides/ui-build/static/admin/integrations/[id].html +1 -1
  191. fides/ui-build/static/admin/integrations.html +1 -1
  192. fides/ui-build/static/admin/lib/fides-ext-gpp.js +1 -1
  193. fides/ui-build/static/admin/lib/fides-headless.js +1 -1
  194. fides/ui-build/static/admin/lib/fides-preview.js +1 -1
  195. fides/ui-build/static/admin/lib/fides-tcf.js +2 -2
  196. fides/ui-build/static/admin/lib/fides.js +2 -2
  197. fides/ui-build/static/admin/login/[provider].html +1 -1
  198. fides/ui-build/static/admin/login.html +1 -1
  199. fides/ui-build/static/admin/messaging/[id].html +1 -1
  200. fides/ui-build/static/admin/messaging/add-template.html +1 -1
  201. fides/ui-build/static/admin/messaging.html +1 -1
  202. fides/ui-build/static/admin/poc/ant-components.html +1 -1
  203. fides/ui-build/static/admin/poc/form-experiments/AntForm.html +1 -1
  204. fides/ui-build/static/admin/poc/form-experiments/FormikAntFormItem.html +1 -1
  205. fides/ui-build/static/admin/poc/form-experiments/FormikControlled.html +1 -1
  206. fides/ui-build/static/admin/poc/form-experiments/FormikField.html +1 -1
  207. fides/ui-build/static/admin/poc/form-experiments/FormikSpreadField.html +1 -1
  208. fides/ui-build/static/admin/poc/forms.html +1 -1
  209. fides/ui-build/static/admin/poc/table-migration.html +1 -1
  210. fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
  211. fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
  212. fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
  213. fides/ui-build/static/admin/privacy-requests.html +1 -1
  214. fides/ui-build/static/admin/properties/[id].html +1 -1
  215. fides/ui-build/static/admin/properties/add-property.html +1 -1
  216. fides/ui-build/static/admin/properties.html +1 -1
  217. fides/ui-build/static/admin/reporting/datamap.html +1 -1
  218. fides/ui-build/static/admin/settings/about/alpha.html +1 -1
  219. fides/ui-build/static/admin/settings/about.html +1 -1
  220. fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +1 -1
  221. fides/ui-build/static/admin/settings/consent.html +1 -1
  222. fides/ui-build/static/admin/settings/custom-fields.html +1 -1
  223. fides/ui-build/static/admin/settings/domain-records.html +1 -1
  224. fides/ui-build/static/admin/settings/domains.html +1 -1
  225. fides/ui-build/static/admin/settings/email-templates.html +1 -1
  226. fides/ui-build/static/admin/settings/locations.html +1 -1
  227. fides/ui-build/static/admin/settings/messaging-providers/[key].html +1 -0
  228. fides/ui-build/static/admin/settings/messaging-providers/new.html +1 -0
  229. fides/ui-build/static/admin/settings/messaging-providers.html +1 -0
  230. fides/ui-build/static/admin/settings/organization.html +1 -1
  231. fides/ui-build/static/admin/settings/privacy-requests.html +1 -1
  232. fides/ui-build/static/admin/settings/regulations.html +1 -1
  233. fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
  234. fides/ui-build/static/admin/systems/configure/[id].html +1 -1
  235. fides/ui-build/static/admin/systems.html +1 -1
  236. fides/ui-build/static/admin/taxonomy.html +1 -1
  237. fides/ui-build/static/admin/user-management/new.html +1 -1
  238. fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
  239. fides/ui-build/static/admin/user-management.html +1 -1
  240. fides/ui-build/static/admin/_next/static/FFd0ddRZhjxA7iBCrjLzA/_buildManifest.js +0 -1
  241. fides/ui-build/static/admin/_next/static/chunks/1099-79646e64f26d62fa.js +0 -1
  242. fides/ui-build/static/admin/_next/static/chunks/1345-5e1c5b66e25c566e.js +0 -1
  243. fides/ui-build/static/admin/_next/static/chunks/1817-0ca16d288fad916d.js +0 -1
  244. fides/ui-build/static/admin/_next/static/chunks/3620-602eb74dc896d556.js +0 -1
  245. fides/ui-build/static/admin/_next/static/chunks/3729-c17ac8031a4c4fd1.js +0 -1
  246. fides/ui-build/static/admin/_next/static/chunks/3847-f08c58d074858f48.js +0 -1
  247. fides/ui-build/static/admin/_next/static/chunks/3872-f78dec02f0d959ae.js +0 -1
  248. fides/ui-build/static/admin/_next/static/chunks/4164-355644b916ae0094.js +0 -1
  249. fides/ui-build/static/admin/_next/static/chunks/4608-be8cba73f5d7c326.js +0 -1
  250. fides/ui-build/static/admin/_next/static/chunks/4786-61154adf88e448e1.js +0 -1
  251. fides/ui-build/static/admin/_next/static/chunks/4808-dd4157aa72648068.js +0 -1
  252. fides/ui-build/static/admin/_next/static/chunks/4831-fd99c0b3784de128.js +0 -1
  253. fides/ui-build/static/admin/_next/static/chunks/4844-46324c3d848b8b6a.js +0 -1
  254. fides/ui-build/static/admin/_next/static/chunks/5258-e880b606a2293803.js +0 -1
  255. fides/ui-build/static/admin/_next/static/chunks/5487-02d00bad7c6830e0.js +0 -1
  256. fides/ui-build/static/admin/_next/static/chunks/549-38ea1d91ee2addaa.js +0 -1
  257. fides/ui-build/static/admin/_next/static/chunks/6084-c153669d5567e242.js +0 -1
  258. fides/ui-build/static/admin/_next/static/chunks/6954-5296188c19d7d0ac.js +0 -1
  259. fides/ui-build/static/admin/_next/static/chunks/7476-45c5088baa8b66af.js +0 -1
  260. fides/ui-build/static/admin/_next/static/chunks/7630-7ed6c6117775dffe.js +0 -1
  261. fides/ui-build/static/admin/_next/static/chunks/787-a8c7eab617e2fceb.js +0 -1
  262. fides/ui-build/static/admin/_next/static/chunks/79-65674011d455af4d.js +0 -1
  263. fides/ui-build/static/admin/_next/static/chunks/796-9e1ca1a4030707c5.js +0 -1
  264. fides/ui-build/static/admin/_next/static/chunks/8002-24af20d679efc04e.js +0 -1
  265. fides/ui-build/static/admin/_next/static/chunks/9046-712156d461165f56.js +0 -1
  266. fides/ui-build/static/admin/_next/static/chunks/9826-dbae8dee941a7fac.js +0 -1
  267. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-bd0d82078e67cac3.js +0 -1
  268. fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure-7207ab23bdb36ce8.js +0 -1
  269. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-94c13aad1499eea9.js +0 -1
  270. fides/ui-build/static/admin/_next/static/chunks/pages/consent-3e8bdefe714254ec.js +0 -1
  271. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-5f2d7b24804f861f.js +0 -1
  272. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-30108b00ac769fc3.js +0 -1
  273. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-3b0bcb9e98fab95c.js +0 -1
  274. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-9403d5b239e318d2.js +0 -1
  275. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-9a81d42a474e1e48.js +0 -1
  276. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-b6ae7adb8ef0b525.js +0 -1
  277. fides/ui-build/static/admin/_next/static/chunks/pages/datamap-c7390e046b2e2b7f.js +0 -1
  278. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-dfd71c1e9c458b89.js +0 -1
  279. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-7cdc42ec5493b83d.js +0 -1
  280. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-e12b11ba15bc3fc1.js +0 -1
  281. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-e32fccc4ca520d2b.js +0 -1
  282. fides/ui-build/static/admin/_next/static/chunks/pages/dataset-7c59a6abf6ba6207.js +0 -1
  283. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-cce20440b177050b.js +0 -1
  284. fides/ui-build/static/admin/_next/static/chunks/pages/index-6cd8708106331b8d.js +0 -1
  285. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-5d40db1ce8810e1d.js +0 -1
  286. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-0f25a76dd18c5e20.js +0 -1
  287. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-ad6ad3e5bd72765d.js +0 -1
  288. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-6032d82f0fc2893d.js +0 -1
  289. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure-d83e5bd52a638234.js +0 -1
  290. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-baf31c3e4b081046.js +0 -1
  291. fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/alpha-a82f3df840d5c1b5.js +0 -1
  292. fides/ui-build/static/admin/_next/static/chunks/pages/settings/about-d06fb16487705b9d.js +0 -1
  293. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-93a978443bf299db.js +0 -1
  294. fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-9ecb803099082bf4.js +0 -1
  295. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domain-records-16fdd91a81074dd1.js +0 -1
  296. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-4cdd6001e7cb9aee.js +0 -1
  297. fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-1914de830ce5cfc4.js +0 -1
  298. fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-f547f1f33c12faf3.js +0 -1
  299. fides/ui-build/static/admin/_next/static/chunks/pages/settings/privacy-requests-2ecc073f41628f62.js +0 -1
  300. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-20b1193ed76c56b0.js +0 -1
  301. fides/ui-build/static/admin/_next/static/chunks/pages/systems-fbc8761ef4d55516.js +0 -1
  302. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-4d7827fc9c46b6b8.js +0 -1
  303. fides/ui-build/static/admin/_next/static/css/650df9c348000a26.css +0 -1
  304. fides/ui-build/static/admin/privacy-requests/configure/messaging.html +0 -1
  305. {ethyca_fides-2.69.3b0.dist-info → ethyca_fides-2.69.3b2.dist-info}/WHEEL +0 -0
  306. {ethyca_fides-2.69.3b0.dist-info → ethyca_fides-2.69.3b2.dist-info}/entry_points.txt +0 -0
  307. {ethyca_fides-2.69.3b0.dist-info → ethyca_fides-2.69.3b2.dist-info}/licenses/LICENSE +0 -0
  308. {ethyca_fides-2.69.3b0.dist-info → ethyca_fides-2.69.3b2.dist-info}/top_level.txt +0 -0
  309. /fides/ui-build/static/admin/_next/static/{FFd0ddRZhjxA7iBCrjLzA → 86A8z6OnbTuDYww0DJkX0}/_ssgManifest.js +0 -0
  310. /fides/ui-build/static/admin/_next/static/chunks/{2921-52328140bc420d0f.js → 2921-cdc7a13973f4a0ba.js} +0 -0
  311. /fides/ui-build/static/admin/_next/static/chunks/{3923-bb2417b8dcade7a4.js → 3923-db57401384d1de8f.js} +0 -0
  312. /fides/ui-build/static/admin/_next/static/chunks/{401-4af0a912e249d30f.js → 401-4e56e924f35317f2.js} +0 -0
  313. /fides/ui-build/static/admin/_next/static/chunks/pages/{404-471a6b18e712f050.js → 404-e4a1f93a7ce944f0.js} +0 -0
  314. /fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-920fb469e0dda1d2.js → multiple-a4f821c4902f2df8.js} +0 -0
  315. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-406170eaae4329c6.js → add-vendors-96245b63aafc5168.js} +0 -0
  316. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-f80cf2d3966816fd.js → [id]-4fea66e59bd59de8.js} +0 -0
  317. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-b378576cba255609.js → [id]-c8038e05f35da8d1.js} +0 -0
  318. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-2ca1de7b88094ab0.js → new-f3a40101a8f3fd00.js} +0 -0
  319. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-04cfe2cfba7b7cd8.js → [projectUrn]-965af6c1fd01334e.js} +0 -0
  320. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{resources-de704de849960f01.js → resources-5afecf141308bfc5.js} +0 -0
  321. /fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{[id]-3c6dc2f6e6bae960.js → [id]-4352e55f110556b4.js} +0 -0
  322. /fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{add-template-4a6d4023a7791be8.js → add-template-c533120e94e049e3.js} +0 -0
  323. /fides/ui-build/static/admin/_next/static/chunks/pages/{messaging-76b204c9b98d656f.js → messaging-b14f5f38b2d711a8.js} +0 -0
  324. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{ant-components-bc0e2adf6e0d3ac7.js → ant-components-31d51e3b9227c8d5.js} +0 -0
  325. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{AntForm-86ffcc1ad3fa912e.js → AntForm-8794a0d2e7554a05.js} +0 -0
  326. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikAntFormItem-ec04f595465bdf69.js → FormikAntFormItem-90b31073e478c99c.js} +0 -0
  327. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikControlled-41d309754ff0c1de.js → FormikControlled-0a6859a0225b7e00.js} +0 -0
  328. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikField-cab1f78cec7808f9.js → FormikField-eb0552917907fe21.js} +0 -0
  329. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{forms-eb6058221403b156.js → forms-b2a2a084d8cfe22d.js} +0 -0
  330. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{table-migration-48500551fd6a7602.js → table-migration-0c944cfa9c6acbff.js} +0 -0
  331. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-7c02e469d8c5bd74.js → regulations-f0f0ea35d0185ae3.js} +0 -0
  332. /fides/ui-build/static/admin/_next/static/chunks/{webpack-678e89d68dbcd94f.js → webpack-55e1c55932df2413.js} +0 -0
@@ -782,10 +782,28 @@ def run_privacy_request(
782
782
  privacy_request.property_id,
783
783
  privacy_request.id,
784
784
  )
785
+ # Add success log for completion email
786
+ privacy_request.add_success_execution_log(
787
+ session,
788
+ connection_key=None,
789
+ dataset_name="Privacy request completion email",
790
+ collection_name=None,
791
+ message="Privacy request completion email sent successfully.",
792
+ action_type=privacy_request.policy.get_action_type(), # type: ignore
793
+ )
785
794
  except (
786
795
  IdentityNotFoundException,
787
796
  MessageDispatchException,
788
797
  ) as e:
798
+ # Add error log for completion email failure
799
+ privacy_request.add_error_execution_log(
800
+ session,
801
+ connection_key=None,
802
+ dataset_name="Privacy request completion email",
803
+ collection_name=None,
804
+ message=f"Privacy request completion email failed: {str(e)}",
805
+ action_type=privacy_request.policy.get_action_type(), # type: ignore
806
+ )
789
807
  privacy_request.error_processing(db=session)
790
808
  # If dev mode, log traceback
791
809
  _log_exception(e, CONFIG.dev_mode)
@@ -44,7 +44,12 @@ from fides.config import CONFIG
44
44
  PRIVACY_REQUEST_STATUS_CHANGE_POLL = "privacy_request_status_change_poll"
45
45
  DSR_DATA_REMOVAL = "dsr_data_removal"
46
46
  INTERRUPTED_TASK_REQUEUE_POLL = "interrupted_task_requeue_poll"
47
+ REQUEUE_INTERRUPTED_TASKS_LOCK = "requeue_interrupted_tasks_lock"
47
48
  ASYNC_TASKS_STATUS_POLLING = "async_tasks_status_polling"
49
+ ASYNC_TASKS_STATUS_POLLING_LOCK = "async_tasks_status_polling_lock"
50
+ ASYNC_TASKS_STATUS_POLLING_LOCK_TIMEOUT = (
51
+ 300 # Starting timeout is shorter because the task goes directly to the workers.
52
+ )
48
53
 
49
54
 
50
55
  def build_required_privacy_request_kwargs(
@@ -394,9 +399,6 @@ def get_cached_task_id(entity_id: str) -> Optional[str]:
394
399
  raise
395
400
 
396
401
 
397
- REQUEUE_INTERRUPTED_TASKS_LOCK = "requeue_interrupted_tasks_lock"
398
-
399
-
400
402
  def _get_task_ids_from_dsr_queue(
401
403
  redis_client: FidesopsRedis, chunk_size: int = 100
402
404
  ) -> Set[str]:
@@ -708,22 +710,29 @@ def poll_async_tasks_status(self: DatabaseTask) -> None:
708
710
  """
709
711
  Poll the status of async tasks that are awaiting processing.
710
712
  """
711
-
712
- with self.get_new_session() as db:
713
- logger.debug("Polling for async tasks status")
714
-
715
- # Get all tasks that are awaiting processing and are from polling async tasks
716
- async_tasks = (
717
- db.query(RequestTask)
718
- .filter(RequestTask.status == ExecutionLogStatus.awaiting_processing)
719
- .filter(RequestTask.async_type == AsyncTaskType.polling)
720
- .all()
721
- )
722
- if async_tasks:
723
- logger.debug(f"Found {len(async_tasks)} async tasks to poll")
724
- from fides.api.service.async_dsr.async_dsr_service import ( # pylint: disable=cyclic-import
725
- requeue_polling_request,
713
+ with redis_lock(
714
+ ASYNC_TASKS_STATUS_POLLING_LOCK,
715
+ ASYNC_TASKS_STATUS_POLLING_LOCK_TIMEOUT,
716
+ ) as lock:
717
+ if not lock:
718
+ logger.debug("Async tasks status polling lock not acquired, skipping")
719
+ return
720
+ with self.get_new_session() as db:
721
+ logger.debug("Polling for async tasks status")
722
+
723
+ # Get all tasks that are awaiting processing and are from polling async tasks
724
+ async_tasks = (
725
+ db.query(RequestTask)
726
+ .filter(RequestTask.status == ExecutionLogStatus.awaiting_processing)
727
+ .filter(RequestTask.async_type == AsyncTaskType.polling)
728
+ .all()
726
729
  )
730
+ logger.info(f"Found {len(async_tasks)} async tasks awaiting processing")
731
+
732
+ if async_tasks:
733
+ from fides.api.service.async_dsr.async_dsr_service import ( # pylint: disable=cyclic-import
734
+ requeue_polling_request,
735
+ )
727
736
 
728
- for async_task in async_tasks:
729
- requeue_polling_request(db, async_task)
737
+ for async_task in async_tasks:
738
+ requeue_polling_request(db, async_task)
@@ -41,13 +41,13 @@ class Strategy(ABC, Generic[C]):
41
41
  """Abstract base class for strategies"""
42
42
 
43
43
  name: str
44
- configuration_model: Type[C]
44
+ configuration_model: Optional[Type[C]] = None
45
45
 
46
46
  @classmethod
47
47
  def get_strategy(
48
48
  cls: Type[T],
49
49
  strategy_name: str,
50
- configuration: Dict[str, Any],
50
+ configuration: Optional[Dict[str, Any]] = None,
51
51
  ) -> T:
52
52
  """
53
53
  Returns the strategy given the name and configuration.
@@ -64,7 +64,10 @@ class Strategy(ABC, Generic[C]):
64
64
  f"Strategy '{strategy_name}' does not exist. Valid strategies are [{valid_strategies}]"
65
65
  )
66
66
  try:
67
- strategy_config = strategy_class.configuration_model(**configuration)
67
+ if strategy_class.configuration_model:
68
+ strategy_config = strategy_class.configuration_model(**configuration)
69
+ else:
70
+ return strategy_class() # type: ignore
68
71
  except ValidationError as e:
69
72
  raise FidesopsValidationError(message=str(e))
70
73
  return strategy_class(strategy_config) # type: ignore
@@ -116,7 +116,6 @@ def retry(
116
116
  # Run access or erasure request
117
117
  return func(*args, **kwargs)
118
118
  except AwaitingAsyncTask as ex:
119
- traceback.print_exc()
120
119
  logger.warning(
121
120
  "Request Task {} {} {} awaiting async continuation",
122
121
  self.request_task.id if self.request_task.id else None,
@@ -694,7 +693,7 @@ class GraphTask(ABC): # pylint: disable=too-many-instance-attributes
694
693
  self.execution_node,
695
694
  self.resources.policy,
696
695
  self.resources.request,
697
- self.resources.privacy_request_task,
696
+ self.request_task,
698
697
  formatted_input_data,
699
698
  )
700
699
 
@@ -19,6 +19,7 @@ from fides.config import CONFIG, FidesConfig
19
19
  MESSAGING_QUEUE_NAME = "fidesops.messaging"
20
20
  PRIVACY_PREFERENCES_QUEUE_NAME = "fides.privacy_preferences" # This queue is used in Fidesplus for saving privacy preferences and notices served
21
21
  DSR_QUEUE_NAME = "fides.dsr" # This queue is used for running data subject requests
22
+ CONSENT_WEBHOOK_QUEUE_NAME = "fidesplus.consent_webhooks" # This queue is used for processing consent webhooks from 3rd-party APIs
22
23
  DISCOVERY_MONITORS_DETECTION_QUEUE_NAME = "fidesplus.discovery_monitors_detection" # This queue is used for running discovery monitors detection tasks
23
24
  DISCOVERY_MONITORS_CLASSIFICATION_QUEUE_NAME = "fidesplus.discovery_monitors_classification" # This queue is used for running discovery monitors classification tasks
24
25
  DISCOVERY_MONITORS_PROMOTION_QUEUE_NAME = "fidesplus.discovery_monitors_promotion" # This queue is used for running discovery monitors promotion tasks
@@ -12,9 +12,6 @@ class MissingTaxonomyField(ValueError):
12
12
  pass
13
13
 
14
14
 
15
- # FIXME: this code is basically the same as the one in filter_datamap_query
16
- # in the fidesplus repo, but slightly more generic. Ideally we want to replace that with using this
17
- # so we don't duplicate this logic in two different places
18
15
  def apply_filters_to_query(
19
16
  query: Select,
20
17
  filter_params: FilterParams,
@@ -8,6 +8,7 @@ from loguru import logger
8
8
  from fides.api.db.base import Base # type: ignore
9
9
  from fides.api.service.saas_request.override_implementations import *
10
10
  from fides.api.tasks import (
11
+ CONSENT_WEBHOOK_QUEUE_NAME,
11
12
  DISCOVERY_MONITORS_CLASSIFICATION_QUEUE_NAME,
12
13
  DISCOVERY_MONITORS_DETECTION_QUEUE_NAME,
13
14
  DISCOVERY_MONITORS_PROMOTION_QUEUE_NAME,
@@ -39,6 +40,7 @@ def start_worker(
39
40
  MESSAGING_QUEUE_NAME,
40
41
  PRIVACY_PREFERENCES_QUEUE_NAME,
41
42
  DSR_QUEUE_NAME,
43
+ CONSENT_WEBHOOK_QUEUE_NAME,
42
44
  DISCOVERY_MONITORS_DETECTION_QUEUE_NAME,
43
45
  DISCOVERY_MONITORS_CLASSIFICATION_QUEUE_NAME,
44
46
  DISCOVERY_MONITORS_PROMOTION_QUEUE_NAME,
@@ -66,7 +66,8 @@ MESSAGING_ACTIVE_DEFAULT = "/messaging/default/active"
66
66
  MESSAGING_STATUS = "/messaging/default/status"
67
67
  MESSAGING_DEFAULT_SECRETS = "/messaging/default/{service_type}/secret"
68
68
  MESSAGING_DEFAULT_BY_TYPE = "/messaging/default/{service_type}"
69
- MESSAGING_TEST = "/messaging/config/test"
69
+ MESSAGING_TEST_DEPRECATED = "/messaging/config/test" # DEPRECATED
70
+ MESSAGING_TEST = "/messaging/test/{service_type}"
70
71
  MESSAGING_EMAIL_INVITE_STATUS = "/messaging/email-invite/status"
71
72
 
72
73
  # Policy URLs
@@ -0,0 +1,115 @@
1
+ """Service for creating and managing event audit records."""
2
+
3
+ from typing import Any, Dict, List, Optional
4
+
5
+ from loguru import logger
6
+ from sqlalchemy.orm import Session
7
+
8
+ from fides.api.models.event_audit import EventAudit, EventAuditStatus, EventAuditType
9
+ from fides.api.request_context import get_user_id
10
+
11
+
12
+ class EventAuditService:
13
+ """Service for creating and managing event audit records."""
14
+
15
+ def __init__(self, db: Session):
16
+ self.db = db
17
+
18
+ def create_event_audit(
19
+ self,
20
+ event_type: EventAuditType,
21
+ status: EventAuditStatus,
22
+ *,
23
+ user_id: Optional[str] = None,
24
+ resource_type: Optional[str] = None,
25
+ resource_identifier: Optional[str] = None,
26
+ description: Optional[str] = None,
27
+ event_details: Optional[Dict[str, Any]] = None,
28
+ ) -> EventAudit:
29
+ """Create a new audit event record."""
30
+
31
+ # Uses the passed in user_id or falls back to the authenticated user via get_user_id()
32
+ event_audit = EventAudit.create(
33
+ db=self.db,
34
+ data={
35
+ "event_type": event_type,
36
+ "status": status,
37
+ "user_id": user_id or get_user_id(),
38
+ "resource_type": resource_type,
39
+ "resource_identifier": resource_identifier,
40
+ "description": description,
41
+ "event_details": event_details,
42
+ },
43
+ )
44
+
45
+ if resource_identifier:
46
+ logger.debug(
47
+ "Created event audit: {} for resource: {} ({})",
48
+ event_type,
49
+ resource_type,
50
+ resource_identifier,
51
+ )
52
+ else:
53
+ logger.debug(
54
+ "Created event audit: {} for resource: {}",
55
+ event_type,
56
+ resource_type,
57
+ )
58
+
59
+ return event_audit
60
+
61
+ def get_events_for_resource(
62
+ self,
63
+ resource_type: str,
64
+ resource_identifier: Optional[str] = None,
65
+ limit: int = 100,
66
+ ) -> List[EventAudit]:
67
+ """Get audit events for a specific resource."""
68
+
69
+ query = self.db.query(EventAudit).filter(
70
+ EventAudit.resource_type == resource_type
71
+ )
72
+
73
+ if resource_identifier:
74
+ query = query.filter(EventAudit.resource_identifier == resource_identifier)
75
+
76
+ return query.order_by(EventAudit.created_at.desc()).limit(limit).all()
77
+
78
+ def get_events_by_user(self, user_id: str, limit: int = 100) -> List[EventAudit]:
79
+ """Get audit events by a specific user."""
80
+
81
+ return (
82
+ self.db.query(EventAudit)
83
+ .filter(EventAudit.user_id == user_id)
84
+ .order_by(EventAudit.created_at.desc())
85
+ .limit(limit)
86
+ .all()
87
+ )
88
+
89
+ def get_events_by_type(
90
+ self, event_type: EventAuditType, limit: int = 100
91
+ ) -> List[EventAudit]:
92
+ """Get audit events of a specific type."""
93
+
94
+ return (
95
+ self.db.query(EventAudit)
96
+ .filter(EventAudit.event_type == event_type)
97
+ .order_by(EventAudit.created_at.desc())
98
+ .limit(limit)
99
+ .all()
100
+ )
101
+
102
+ def get_events_by_category(
103
+ self, category_prefix: str, limit: int = 100
104
+ ) -> List[EventAudit]:
105
+ """Get all events matching a category prefix (e.g., 'consent', 'system', 'taxonomy')."""
106
+
107
+ prefix_with_dot = category_prefix + "."
108
+
109
+ return (
110
+ self.db.query(EventAudit)
111
+ .filter(EventAudit.event_type.startswith(prefix_with_dot))
112
+ .order_by(EventAudit.created_at.desc())
113
+ .limit(limit)
114
+ .all()
115
+ )
@@ -4,10 +4,8 @@ from loguru import logger
4
4
 
5
5
  from fides.api.models.messaging import MessagingConfig
6
6
  from fides.api.models.property import CONFIG
7
- from fides.api.schemas.messaging.messaging import (
8
- MessagingServiceDetailsAWS_SES,
9
- MessagingServiceSecretsAWS_SES,
10
- )
7
+ from fides.api.schemas.messaging.messaging import MessagingServiceDetailsAWS_SES
8
+ from fides.api.schemas.messaging.shared_schemas import MessagingServiceSecretsAWS_SES
11
9
  from fides.api.schemas.storage.storage import StorageSecrets
12
10
  from fides.api.util.aws_util import get_aws_session
13
11
 
File without changes
@@ -0,0 +1,138 @@
1
+ import datetime
2
+ from typing import Any, List, Optional, Union
3
+
4
+ from fastapi_pagination import Page, Params
5
+ from fastapi_pagination.ext.async_sqlalchemy import paginate as async_paginate
6
+ from fideslang.validation import FidesKey
7
+ from sqlalchemy import or_
8
+ from sqlalchemy.ext.asyncio import AsyncSession
9
+ from sqlalchemy.future import select
10
+ from sqlalchemy.sql.selectable import Select
11
+
12
+ from fides.api.db.crud import list_resource
13
+ from fides.api.models.sql_models import ( # type: ignore[attr-defined]
14
+ PrivacyDeclaration,
15
+ System,
16
+ )
17
+ from fides.api.schemas.filter_params import FilterParams
18
+ from fides.api.util.filter_utils import apply_filters_to_query
19
+
20
+
21
+ class SystemService:
22
+ """
23
+ Service for system management. Currently only used for listing systems.
24
+ """
25
+
26
+ def __init__(self, db: AsyncSession):
27
+ self.db = db
28
+
29
+ async def get_systems(
30
+ self,
31
+ *,
32
+ search: Optional[str] = None,
33
+ data_uses: Optional[List[FidesKey]] = None,
34
+ data_categories: Optional[List[FidesKey]] = None,
35
+ data_subjects: Optional[List[FidesKey]] = None,
36
+ size: Optional[int] = None,
37
+ page: Optional[int] = None,
38
+ show_deleted: bool = False,
39
+ **kwargs: Any,
40
+ ) -> Union[List[System], Page[System]]:
41
+ """
42
+ Query systems with flexible filtering and optional pagination.
43
+
44
+ This function provides the core logic for listing systems with support for:
45
+ - Basic filtering (search, data uses, categories, subjects)
46
+ - Pagination
47
+ - Vendor deletion filtering
48
+ - Extension points for additional filtering
49
+
50
+ Args:
51
+ db: Database session
52
+ size: Page size for pagination (if None, no pagination)
53
+ page: Page number for pagination
54
+ show_deleted: Whether to include vendor-deleted systems
55
+ filter_params: Standard filter parameters (search, taxonomy filters)
56
+
57
+ Returns:
58
+ Either a list of all systems or a paginated page of systems
59
+ """
60
+
61
+ filter_params = None
62
+ if any([search, data_uses, data_categories, data_subjects]):
63
+ filter_params = FilterParams(
64
+ search=search,
65
+ data_uses=data_uses,
66
+ data_categories=data_categories,
67
+ data_subjects=data_subjects,
68
+ )
69
+
70
+ # If no parameters are provided, return all systems for backward compatibility
71
+ if not any([size, page, filter_params]):
72
+ return await list_resource(System, self.db)
73
+
74
+ query = self._build_systems_query(
75
+ filter_params=filter_params,
76
+ show_deleted=show_deleted,
77
+ **kwargs,
78
+ )
79
+
80
+ # Ensure distinct results
81
+ query = query.distinct(System.id)
82
+
83
+ # Return paginated or non-paginated results
84
+ if size or page:
85
+ pagination_params = Params(page=page or 1, size=size or 50)
86
+ return await async_paginate(self.db, query, pagination_params)
87
+
88
+ result = await self.db.execute(query)
89
+ return list(result.scalars().all())
90
+
91
+ def _build_systems_query(
92
+ self,
93
+ *,
94
+ filter_params: Optional[FilterParams] = None,
95
+ show_deleted: bool = False,
96
+ **kwargs: Any,
97
+ ) -> Select:
98
+ """
99
+ Build the base query for systems.
100
+ """
101
+
102
+ query = select(System)
103
+
104
+ # Determine if we need to join with PrivacyDeclaration
105
+ needs_privacy_declaration = filter_params and any(
106
+ [
107
+ filter_params.data_uses,
108
+ filter_params.data_categories,
109
+ filter_params.data_subjects,
110
+ ]
111
+ )
112
+
113
+ if needs_privacy_declaration:
114
+ query = query.outerjoin(
115
+ PrivacyDeclaration, System.id == PrivacyDeclaration.system_id
116
+ )
117
+
118
+ # Filter out vendor deleted systems unless explicitly asked for
119
+ if not show_deleted:
120
+ query = query.filter(
121
+ or_(
122
+ System.vendor_deleted_date.is_(None),
123
+ System.vendor_deleted_date >= datetime.datetime.now(),
124
+ )
125
+ )
126
+
127
+ # Apply standard filters if provided
128
+ if filter_params:
129
+ query = apply_filters_to_query(
130
+ query=query,
131
+ filter_params=filter_params,
132
+ search_model=System,
133
+ taxonomy_model=(
134
+ PrivacyDeclaration if needs_privacy_declaration else None
135
+ ),
136
+ )
137
+
138
+ return query
@@ -7,12 +7,14 @@ from typing import Any, Dict, List, Literal, Optional, Union, overload
7
7
  from sqlalchemy import or_
8
8
  from sqlalchemy.orm import Session
9
9
 
10
+ from fides.api.models.event_audit import EventAuditStatus, EventAuditType
10
11
  from fides.api.models.sql_models import ( # type:ignore[attr-defined]
11
12
  DataCategory,
12
13
  DataSubject,
13
14
  DataUse,
14
15
  )
15
16
  from fides.api.models.taxonomy import TaxonomyUsage
17
+ from fides.service.event_audit_service import EventAuditService
16
18
 
17
19
  from .handlers import LegacyTaxonomyHandler, TaxonomyHandler
18
20
  from .utils import (
@@ -34,8 +36,9 @@ class TaxonomyService:
34
36
 
35
37
  # Most of the main methods in this service have a type-specific overload to help with type hints
36
38
 
37
- def __init__(self, db: Session):
39
+ def __init__(self, db: Session, event_audit_service: EventAuditService):
38
40
  self.db = db
41
+ self.event_audit_service = event_audit_service
39
42
 
40
43
  @overload
41
44
  def get_elements(
@@ -121,7 +124,22 @@ class TaxonomyService:
121
124
 
122
125
  # Centralized validation before delegation
123
126
  self._validate_element_data(processed_data, taxonomy_type, action="create")
124
- return self._get_handler(taxonomy_type).create_element(processed_data)
127
+
128
+ element = self._get_handler(taxonomy_type).create_element(processed_data)
129
+
130
+ self.event_audit_service.create_event_audit(
131
+ EventAuditType.taxonomy_element_created,
132
+ EventAuditStatus.succeeded,
133
+ resource_type="taxonomy_element",
134
+ resource_identifier=processed_data.get("fides_key"),
135
+ description=f"Created {taxonomy_type} element: {processed_data.get('fides_key')} ({processed_data.get('name')})",
136
+ event_details={
137
+ "taxonomy_type": taxonomy_type,
138
+ **processed_data,
139
+ },
140
+ )
141
+
142
+ return element
125
143
 
126
144
  @overload
127
145
  def update_element(
@@ -162,8 +180,12 @@ class TaxonomyService:
162
180
  # Update the element via handler
163
181
  updated_element = handler.update_element(fides_key, element_data)
164
182
 
183
+ # Return early if element was not found
184
+ if updated_element is None:
185
+ return None
186
+
165
187
  # Handle hierarchical activation/deactivation logic at service level
166
- if updated_element and "active" in element_data:
188
+ if "active" in element_data:
167
189
  if element_data["active"]:
168
190
  activate_taxonomy_parents(updated_element, self.db)
169
191
  else:
@@ -178,6 +200,18 @@ class TaxonomyService:
178
200
  # Refresh the updated element to return the latest state
179
201
  self.db.refresh(updated_element)
180
202
 
203
+ self.event_audit_service.create_event_audit(
204
+ EventAuditType.taxonomy_element_updated,
205
+ EventAuditStatus.succeeded,
206
+ resource_type="taxonomy_element",
207
+ resource_identifier=fides_key,
208
+ description=f"Updated {taxonomy_type} element: {fides_key} ({updated_element.name})", # type: ignore
209
+ event_details={
210
+ "taxonomy_type": taxonomy_type,
211
+ **element_data,
212
+ },
213
+ )
214
+
181
215
  return updated_element
182
216
 
183
217
  def delete_element(self, taxonomy_type: str, fides_key: str) -> None:
@@ -196,6 +230,18 @@ class TaxonomyService:
196
230
  self._get_handler(taxonomy_type).delete_element(fides_key)
197
231
  self.db.commit()
198
232
 
233
+ self.event_audit_service.create_event_audit(
234
+ EventAuditType.taxonomy_element_deleted,
235
+ EventAuditStatus.succeeded,
236
+ resource_type="taxonomy_element",
237
+ resource_identifier=fides_key,
238
+ description=f"Deleted {taxonomy_type} element: {fides_key}",
239
+ event_details={
240
+ "taxonomy_type": taxonomy_type,
241
+ "fides_key": fides_key,
242
+ },
243
+ )
244
+
199
245
  @overload
200
246
  def create_or_update_element(
201
247
  self, taxonomy_type: Literal["data_categories"], element_data: Dict
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/650df9c348000a26.css" as="style"/><link rel="stylesheet" href="/_next/static/css/650df9c348000a26.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-678e89d68dbcd94f.js" defer=""></script><script src="/_next/static/chunks/framework-c92fc3344e6fd165.js" defer=""></script><script src="/_next/static/chunks/main-090643377c8254e6.js" defer=""></script><script src="/_next/static/chunks/pages/_app-fcdad91f6f66292b.js" defer=""></script><script src="/_next/static/chunks/pages/404-471a6b18e712f050.js" defer=""></script><script src="/_next/static/FFd0ddRZhjxA7iBCrjLzA/_buildManifest.js" defer=""></script><script src="/_next/static/FFd0ddRZhjxA7iBCrjLzA/_ssgManifest.js" defer=""></script><style>.data-ant-cssinjs-cache-path{content:"";}</style></head><body><div id="__next"><div style="height:100%;display:flex"></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/404","query":{},"buildId":"FFd0ddRZhjxA7iBCrjLzA","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/018c12b58ee7f861.css" as="style"/><link rel="stylesheet" href="/_next/static/css/018c12b58ee7f861.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-55e1c55932df2413.js" defer=""></script><script src="/_next/static/chunks/framework-c92fc3344e6fd165.js" defer=""></script><script src="/_next/static/chunks/main-090643377c8254e6.js" defer=""></script><script src="/_next/static/chunks/pages/_app-c780470042750062.js" defer=""></script><script src="/_next/static/chunks/pages/404-e4a1f93a7ce944f0.js" defer=""></script><script src="/_next/static/86A8z6OnbTuDYww0DJkX0/_buildManifest.js" defer=""></script><script src="/_next/static/86A8z6OnbTuDYww0DJkX0/_ssgManifest.js" defer=""></script><style>.data-ant-cssinjs-cache-path{content:"";}</style></head><body><div id="__next"><div style="height:100%;display:flex"></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/404","query":{},"buildId":"86A8z6OnbTuDYww0DJkX0","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -0,0 +1 @@
1
+ self.__BUILD_MANIFEST=function(s,e,t,a,c,n,i,d,o,r,p,g,u,f,m,b,j,k,h,y,l,v,I,F,x,_,U,w,q,N,A,S,B,C,z,D,E,L,M,T,P,G,H,J,K,O,Q,R,V,W,X,Y,Z,$){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":[U,"static/chunks/pages/index-d66ea87b457af21e.js"],"/404":["static/chunks/pages/404-e4a1f93a7ce944f0.js"],"/_error":["static/chunks/pages/_error-bede3a8288930dcf.js"],"/add-systems":[s,e,U,"static/chunks/pages/add-systems-92034daafd2187a0.js"],"/add-systems/manual":[s,t,a,c,i,u,e,n,r,f,m,l,w,q,"static/chunks/pages/add-systems/manual-fb9434d926ebf0b3.js"],"/add-systems/multiple":[r,b,N,"static/chunks/pages/add-systems/multiple-a4f821c4902f2df8.js"],"/consent":["static/chunks/pages/consent-35c0ae9d5b5a940c.js"],"/consent/configure":[r,b,"static/chunks/pages/consent/configure-87919c1192e68b1a.js"],"/consent/configure/add-vendors":[r,b,N,"static/chunks/pages/consent/configure/add-vendors-96245b63aafc5168.js"],"/consent/privacy-experience":[u,A,"static/chunks/pages/consent/privacy-experience-ae8a64fffe3f8c66.js"],"/consent/privacy-experience/new":[t,d,j,k,S,"static/chunks/pages/consent/privacy-experience/new-e74cb5ea87f15b40.js"],"/consent/privacy-experience/[id]":[t,d,j,k,S,"static/chunks/pages/consent/privacy-experience/[id]-4fea66e59bd59de8.js"],"/consent/privacy-notices":[A,"static/chunks/pages/consent/privacy-notices-d7d9ff9ed28fa790.js"],"/consent/privacy-notices/new":[t,d,j,k,B,"static/chunks/pages/consent/privacy-notices/new-f3a40101a8f3fd00.js"],"/consent/privacy-notices/[id]":[t,d,j,k,B,"static/chunks/pages/consent/privacy-notices/[id]-c8038e05f35da8d1.js"],"/consent/properties":[h,C,"static/chunks/pages/consent/properties-c985ea8c1a0e0550.js"],"/consent/reporting":[s,"static/chunks/2150-930ffaf2c4718edc.js","static/chunks/pages/consent/reporting-ddf6ba92355f81de.js"],"/data-catalog":[t,a,c,n,"static/css/95ac327e5d70148d.css","static/chunks/pages/data-catalog-f99af5669b9ab44c.js"],"/data-catalog/[systemId]/projects":[t,a,c,n,v,o,"static/chunks/pages/data-catalog/[systemId]/projects-06ba907e7d91a724.js"],"/data-catalog/[systemId]/projects/[projectUrn]":[z,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-965af6c1fd01334e.js"],"/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]":[s,t,a,c,e,n,v,D,o,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]-6a196c704f1c6dd7.js"],"/data-catalog/[systemId]/resources":[z,"static/chunks/pages/data-catalog/[systemId]/resources-5afecf141308bfc5.js"],"/data-catalog/[systemId]/resources/[resourceUrn]":[s,t,a,c,e,n,v,D,o,"static/chunks/pages/data-catalog/[systemId]/resources/[resourceUrn]-9cee4e222ebb2b60.js"],"/data-discovery/action-center":[I,"static/chunks/pages/data-discovery/action-center-5868591ff1e5f881.js"],"/data-discovery/action-center/[monitorId]":[s,t,a,c,e,I,E,F,"static/chunks/pages/data-discovery/action-center/[monitorId]-de957913f9b47daa.js"],"/data-discovery/action-center/[monitorId]/[systemId]":[s,t,a,c,e,r,l,I,E,"static/css/23cf870196941c9a.css","static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-db7f1a269d3e7fc2.js"],"/data-discovery/activity":[s,e,g,"static/chunks/pages/data-discovery/activity-715064e1c9788e1a.js"],"/data-discovery/detection":[s,e,g,L,"static/chunks/pages/data-discovery/detection-6537c93c69b597c7.js"],"/data-discovery/detection/[resourceUrn]":[s,e,g,L,"static/chunks/pages/data-discovery/detection/[resourceUrn]-9ae81f5c245b8a01.js"],"/data-discovery/discovery":[s,t,a,c,e,n,g,M,o,"static/chunks/pages/data-discovery/discovery-9f6a62614d7eb113.js"],"/data-discovery/discovery/[resourceUrn]":[s,t,a,c,e,n,g,M,o,"static/chunks/pages/data-discovery/discovery/[resourceUrn]-5db26067d921a94a.js"],"/datamap":[s,c,"static/chunks/255-1bc0cbef7a59cdc6.js",e,f,T,"static/chunks/pages/datamap-aed0e6dafc143b97.js"],"/dataset":[p,y,"static/chunks/pages/dataset-639046f6c76bc8bd.js"],"/dataset/new":[s,p,e,y,"static/chunks/pages/dataset/new-5bb96c8684a38bbf.js"],"/dataset/[datasetId]":["static/chunks/9729-fcf6ff4e3534e4a8.js",x,"static/chunks/pages/dataset/[datasetId]-b653fd60e7db989b.js"],"/dataset/[datasetId]/[collectionName]":[t,a,c,i,n,x,o,"static/chunks/pages/dataset/[datasetId]/[collectionName]-f36a46381a6c25d4.js"],"/dataset/[datasetId]/[collectionName]/[...subfieldNames]":[t,a,c,i,n,x,o,"static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-72b9878ea9b91529.js"],"/datastore-connection":["static/css/5f393dea1c0d031c.css","static/chunks/pages/datastore-connection-c55e3e0e19030f3f.js"],"/datastore-connection/new":[s,t,i,p,u,P,e,y,G,"static/chunks/pages/datastore-connection/new-1e2fa11f22dbc449.js"],"/datastore-connection/[id]":[s,t,i,p,P,e,y,G,"static/chunks/pages/datastore-connection/[id]-6bf117315d909ad1.js"],"/fides-js-docs":["static/chunks/2fbcc6de-a6c61724c327e9fa.js","static/chunks/e3251fe7-5777b5d778e6fffa.js",t,a,c,i,p,"static/chunks/5619-9b50cec521203989.js",H,"static/css/0b4b1b65cc874774.css","static/chunks/5596-bb601cbf40e47a0f.js","static/chunks/pages/fides-js-docs-1f4335dca5c09860.js"],"/integrations":[s,t,a,c,i,d,J,e,m,K,o,"static/chunks/pages/integrations-267d2742fffaebe5.js"],"/integrations/[id]":[s,t,a,c,i,d,J,e,m,K,o,"static/chunks/pages/integrations/[id]-0159fbb2e0440709.js"],"/login":["static/chunks/pages/login-0cb0eb44bf2dd24c.js"],"/login/[provider]":["static/chunks/pages/login/[provider]-c58beef131c3a82d.js"],"/messaging":[t,a,"static/chunks/346-aa3b88efb85f2e28.js","static/chunks/pages/messaging-b14f5f38b2d711a8.js"],"/messaging/add-template":[O,"static/chunks/pages/messaging/add-template-c533120e94e049e3.js"],"/messaging/[id]":[O,"static/chunks/pages/messaging/[id]-4352e55f110556b4.js"],"/poc/ant-components":["static/chunks/pages/poc/ant-components-31d51e3b9227c8d5.js"],"/poc/form-experiments/AntForm":["static/chunks/pages/poc/form-experiments/AntForm-8794a0d2e7554a05.js"],"/poc/form-experiments/FormikAntFormItem":["static/chunks/pages/poc/form-experiments/FormikAntFormItem-90b31073e478c99c.js"],"/poc/form-experiments/FormikControlled":["static/chunks/pages/poc/form-experiments/FormikControlled-0a6859a0225b7e00.js"],"/poc/form-experiments/FormikField":["static/chunks/pages/poc/form-experiments/FormikField-eb0552917907fe21.js"],"/poc/form-experiments/FormikSpreadField":[Q,"static/chunks/pages/poc/form-experiments/FormikSpreadField-af097d661f6abcf4.js"],"/poc/forms":[Q,"static/chunks/pages/poc/forms-b2a2a084d8cfe22d.js"],"/poc/table-migration":[r,b,"static/chunks/pages/poc/table-migration-0c944cfa9c6acbff.js"],"/privacy-requests":[s,t,"static/chunks/3550-d04125c828d591a1.js",e,R,"static/chunks/pages/privacy-requests-28083bfb2dec7b9f.js"],"/privacy-requests/configure":["static/chunks/pages/privacy-requests/configure-331147598052f25c.js"],"/privacy-requests/configure/storage":[s,e,"static/chunks/pages/privacy-requests/configure/storage-482a7256925a6e06.js"],"/privacy-requests/[id]":[s,e,R,"static/css/073713cd1eddda79.css","static/chunks/pages/privacy-requests/[id]-670b05b03ba11e0a.js"],"/properties":[h,C,"static/chunks/pages/properties-7459d56e548925b2.js"],"/properties/add-property":[h,V,"static/chunks/pages/properties/add-property-74c2a0ff4c992633.js"],"/properties/[id]":[h,V,"static/chunks/pages/properties/[id]-e02dc4b4b385c86f.js"],"/reporting/datamap":[s,t,a,c,H,e,f,T,"static/chunks/pages/reporting/datamap-aed018025b09c045.js"],"/settings/about":[W,"static/chunks/pages/settings/about-6c4904c157477285.js"],"/settings/about/alpha":[W,"static/chunks/pages/settings/about/alpha-68eaac2d79133679.js"],"/settings/consent":["static/chunks/pages/settings/consent-e8cab942d09aa358.js"],"/settings/consent/[configuration_id]/[purpose_id]":["static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-7f2c50044806c094.js"],"/settings/custom-fields":[s,e,"static/chunks/pages/settings/custom-fields-128f952a49a0e8dc.js"],"/settings/domain-records":["static/chunks/pages/settings/domain-records-cca3d1a26e1269bb.js"],"/settings/domains":["static/chunks/pages/settings/domains-07e1b9937a169e32.js"],"/settings/email-templates":["static/chunks/pages/settings/email-templates-3bc799dac8423f50.js"],"/settings/locations":[X,F,"static/chunks/pages/settings/locations-9f36b6c213ae524c.js"],"/settings/messaging-providers":[s,e,"static/chunks/pages/settings/messaging-providers-1065fbefd449719c.js"],"/settings/messaging-providers/new":[s,t,a,d,Y,e,Z,"static/chunks/pages/settings/messaging-providers/new-5473558807e94462.js"],"/settings/messaging-providers/[key]":[s,t,a,d,Y,e,Z,"static/chunks/pages/settings/messaging-providers/[key]-f8887b2b29aed1b9.js"],"/settings/organization":["static/chunks/pages/settings/organization-3e23d92d789fff99.js"],"/settings/privacy-requests":[s,e,"static/chunks/pages/settings/privacy-requests-907bfbb71d84646f.js"],"/settings/regulations":[X,F,"static/chunks/pages/settings/regulations-f0f0ea35d0185ae3.js"],"/systems":[s,t,a,c,"static/chunks/1896-49010da5c2705fc5.js",e,"static/chunks/pages/systems-4a6ef2509e8cedfc.js"],"/systems/configure/[id]":[s,t,a,c,i,u,e,n,r,f,m,l,w,q,"static/chunks/pages/systems/configure/[id]-02b0dde03a1ad159.js"],"/systems/configure/[id]/test-datasets":[p,"static/chunks/pages/systems/configure/[id]/test-datasets-aa1ada4d4ac09759.js"],"/taxonomy":["static/chunks/678d4732-50255cc09048e643.js",s,t,a,d,"static/chunks/6148-59a59d5c5925344f.js",e,"static/css/34a7eb08b86ddb57.css","static/chunks/pages/taxonomy-16b122b83e57bb8c.js"],"/user-management":[_,"static/chunks/pages/user-management-4036b023366b7eec.js"],"/user-management/new":[_,$,"static/chunks/pages/user-management/new-6304dad2c5fab694.js"],"/user-management/profile/[id]":[_,$,"static/chunks/pages/user-management/profile/[id]-0a8ec3aa2ed59a33.js"],sortedPages:["/","/404","/_app","/_error","/add-systems","/add-systems/manual","/add-systems/multiple","/consent","/consent/configure","/consent/configure/add-vendors","/consent/privacy-experience","/consent/privacy-experience/new","/consent/privacy-experience/[id]","/consent/privacy-notices","/consent/privacy-notices/new","/consent/privacy-notices/[id]","/consent/properties","/consent/reporting","/data-catalog","/data-catalog/[systemId]/projects","/data-catalog/[systemId]/projects/[projectUrn]","/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]","/data-catalog/[systemId]/resources","/data-catalog/[systemId]/resources/[resourceUrn]","/data-discovery/action-center","/data-discovery/action-center/[monitorId]","/data-discovery/action-center/[monitorId]/[systemId]","/data-discovery/activity","/data-discovery/detection","/data-discovery/detection/[resourceUrn]","/data-discovery/discovery","/data-discovery/discovery/[resourceUrn]","/datamap","/dataset","/dataset/new","/dataset/[datasetId]","/dataset/[datasetId]/[collectionName]","/dataset/[datasetId]/[collectionName]/[...subfieldNames]","/datastore-connection","/datastore-connection/new","/datastore-connection/[id]","/fides-js-docs","/integrations","/integrations/[id]","/login","/login/[provider]","/messaging","/messaging/add-template","/messaging/[id]","/poc/ant-components","/poc/form-experiments/AntForm","/poc/form-experiments/FormikAntFormItem","/poc/form-experiments/FormikControlled","/poc/form-experiments/FormikField","/poc/form-experiments/FormikSpreadField","/poc/forms","/poc/table-migration","/privacy-requests","/privacy-requests/configure","/privacy-requests/configure/storage","/privacy-requests/[id]","/properties","/properties/add-property","/properties/[id]","/reporting/datamap","/settings/about","/settings/about/alpha","/settings/consent","/settings/consent/[configuration_id]/[purpose_id]","/settings/custom-fields","/settings/domain-records","/settings/domains","/settings/email-templates","/settings/locations","/settings/messaging-providers","/settings/messaging-providers/new","/settings/messaging-providers/[key]","/settings/organization","/settings/privacy-requests","/settings/regulations","/systems","/systems/configure/[id]","/systems/configure/[id]/test-datasets","/taxonomy","/user-management","/user-management/new","/user-management/profile/[id]"]}}("static/chunks/431-86ad2beeb93c95c9.js","static/chunks/1841-2052c3239f2a0a1a.js","static/chunks/8765-f622a35b40a7ec63.js","static/chunks/9278-08cc704317fe535e.js","static/chunks/5163-e682273cd76a7d07.js","static/chunks/409-e1deab19fc7e6d99.js","static/chunks/699-8ca44b0de9fa20f0.js","static/chunks/3662-f6a1ddca5ee42076.js","static/css/d2d4e9a6923e6730.css","static/chunks/401-4e56e924f35317f2.js","static/chunks/6527-0eed08abe252a918.js","static/chunks/8002-78d78545309b2c1c.js","static/chunks/5277-e8a036319456127f.js","static/chunks/9951-c389c51ca6353035.js","static/chunks/6416-79eee298a5b3f80f.js","static/chunks/3923-db57401384d1de8f.js","static/chunks/6419-d0c00d661b01f8fa.js","static/chunks/6084-29cbe703bffdccfe.js","static/chunks/2040-3f9c66c56a05b336.js","static/chunks/2751-58285ccf50a0ba4b.js","static/chunks/6780-eeb7775eb21d7a12.js","static/chunks/6882-55dbb142f7c40f53.js","static/chunks/7725-b2fa93d747d3d85d.js","static/css/10994e916bc9a00a.css","static/chunks/9226-49dbcdb135bf9793.js","static/chunks/7476-3da7a490debad8e2.js","static/css/972dc7eef106ee7c.css","static/chunks/4786-8d78ec773d171562.js","static/css/304c6f148886a8d4.css","static/chunks/796-8e4da90ae82dfebb.js","static/chunks/6853-91a8641cd2784b54.js","static/chunks/1817-dc2bba3ca736d39e.js","static/chunks/6954-6dfafd38b02d5852.js","static/chunks/5783-c62c79e7be21be73.js","static/chunks/3872-4786ccbe7c6f65b0.js","static/chunks/3855-8377b3fcbb3d93b0.js","static/chunks/7929-4314e317b1717257.js","static/chunks/5309-e994c5195f99b1eb.js","static/chunks/9046-0f92802b0e3382a9.js","static/chunks/4230-c55d5531697a715c.js","static/chunks/1467-8808ec8836e033f9.js","static/chunks/4608-2fbc3389681f6924.js","static/chunks/9187-7438242f0d380bb0.js","static/chunks/1316-2606e19807c08aa5.js","static/chunks/155-b5e4370b158e5ee3.js","static/chunks/7630-22f9c4b25d6aed29.js","static/chunks/2921-cdc7a13973f4a0ba.js","static/chunks/8373-bd50fa53cbcab2aa.js","static/chunks/5185-a219b390ef17ff4b.js","static/chunks/1115-d5a834cdaa717edc.js","static/chunks/9826-f316eb1d61cb90b6.js","static/chunks/9037-453224ba3ee65b13.js","static/chunks/3377-c5e0cc3de1a5ffd1.js","static/chunks/3696-fff4f944d7d5ff20.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1115],{77213:function(e,n,i){i.d(n,{Z:function(){return f}});var t=i(24246),s=i(96306),r=i(88038),a=i.n(r),o=i(86677);i(27378);var l=i(25980),c=i(90867),g=i(42478),d=i(77830),u=()=>{let e=(0,o.useRouter)();return(0,t.jsx)(s.xuv,{bg:"gray.50",border:"1px solid",borderColor:"blue.400",borderRadius:"md",justifyContent:"space-between",p:5,mb:5,mt:5,children:(0,t.jsxs)(s.xuv,{children:[(0,t.jsxs)(s.Kqy,{direction:{base:"column",sm:"row"},justifyContent:"space-between",children:[(0,t.jsx)(s.xvT,{fontWeight:"semibold",children:"Configure your storage and messaging provider"}),(0,t.jsx)(s.wpx,{onClick:()=>{e.push(d.AD)},children:"Configure"})]}),(0,t.jsxs)(s.xvT,{children:["Before Fides can process your privacy requests we need two simple steps to configure your storage and email client."," "]})]})})},f=e=>{let{children:n,title:i,padded:r=!0,mainProps:d}=e,f=(0,l.hz)(),m=(0,o.useRouter)(),h="/privacy-requests"===m.pathname||"/datastore-connection"===m.pathname,x=!(f.flags.messagingConfiguration&&h),{data:p}=(0,g.JE)(void 0,{skip:x}),{data:y}=(0,c.PW)(void 0,{skip:x}),j=f.flags.messagingConfiguration&&(!p||!y)&&h;return(0,t.jsxs)(s.kCb,{"data-testid":i,direction:"column",h:"100vh",children:[(0,t.jsxs)(a(),{children:[(0,t.jsxs)("title",{children:["Fides Admin UI - ",i]}),(0,t.jsx)("meta",{name:"description",content:"Privacy Engineering Platform"}),(0,t.jsx)("link",{rel:"icon",href:"/favicon.ico"})]}),(0,t.jsxs)(s.kCb,{as:"main",direction:"column",py:r?6:0,px:r?10:0,h:r?"calc(100% - 48px)":"full",flex:1,minWidth:0,overflow:"auto",...d,children:[j?(0,t.jsx)(u,{}):null,n]})]})}},58754:function(e,n,i){var t=i(24246),s=i(96306),r=i(70788);n.Z=e=>{let{heading:n,breadcrumbItems:i,isSticky:a=!0,children:o,rightContent:l,style:c,...g}=e;return(0,t.jsxs)("div",{...g,style:a?{position:"sticky",top:"-24px",paddingTop:"24px",paddingBottom:"24px",paddingLeft:"40px",marginLeft:"-40px",paddingRight:"40px",marginRight:"-40px",marginTop:"-24px",left:0,zIndex:20,backgroundColor:"white",...c}:{paddingBottom:"24px",...c},children:[(0,t.jsxs)(s.jqI,{justify:"space-between",children:["string"==typeof n?(0,t.jsx)(s.lQT,{className:i||o?"pb-4":void 0,level:1,"data-testid":"page-heading",children:n}):n,l&&(0,t.jsx)("div",{"data-testid":"page-header-right-content",children:l})]}),!!i&&(0,t.jsx)(r.m,{className:o?"pb-4":void 0,items:i,"data-testid":"page-breadcrumb"}),o]})}},70788:function(e,n,i){i.d(n,{m:function(){return c}});var t=i(24246),s=i(96306),r=i(79894),a=i.n(r),o=i(27378);let{Text:l}=s.AntTypography,c=e=>{let{items:n,...i}=e,r=(0,o.useMemo)(()=>null==n?void 0:n.map((e,i)=>{let r=i===n.length-1,o={...e},c=o.onClick&&!o.href;return("string"==typeof o.title&&(o.title=(0,t.jsx)(l,{style:{color:"inherit",maxWidth:r?void 0:400},ellipsis:!r,id:r?"breadcrumb-current-page":void 0,children:o.title})),c)?o.title=(0,t.jsx)(s.wpx,{type:"text",size:"small",icon:o.icon,onClick:o.onClick,className:"ant-breadcrumb-link -mt-px px-1 text-inherit",children:o.title}):(o.icon&&(o.title=(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"anticon align-text-bottom",children:o.icon}),o.title]})),o.href&&o.title&&(o.title=(0,t.jsx)(a(),{href:o.href,className:"ant-breadcrumb-link",children:o.title}),delete o.href)),o}),[n]);return(0,t.jsx)(s.zrq,{items:r,...i})}},42478:function(e,n,i){i.d(n,{FU:function(){return c},JE:function(){return s},Ki:function(){return d},SU:function(){return u},W:function(){return f},h9:function(){return r},jc:function(){return t},qt:function(){return l},sn:function(){return g}});let{useGetEmailInviteStatusQuery:t,useGetActiveMessagingProviderQuery:s,useCreateMessagingConfigurationMutation:r,useCreateMessagingConfigurationSecretsMutation:a,useGetMessagingConfigurationDetailsQuery:o,useGetMessagingConfigurationsQuery:l,useGetMessagingConfigurationByKeyQuery:c,useUpdateMessagingConfigurationByKeyMutation:g,useUpdateMessagingConfigurationSecretsByKeyMutation:d,useCreateTestConnectionMessageMutation:u,useDeleteMessagingConfigurationByKeyMutation:f}=i(78780).u.injectEndpoints({endpoints:e=>({getEmailInviteStatus:e.query({query:()=>({url:"/messaging/email-invite/status"}),providesTags:()=>["Email Invite Status"]}),createMessagingConfiguration:e.mutation({query:e=>({url:"messaging/config",method:"POST",body:e}),invalidatesTags:["Messaging Config","Configuration Settings"]}),getActiveMessagingProvider:e.query({queryFn:async(e,n,i,t)=>{let s=await t({url:"messaging/default/active"});return s.error&&404===s.error.status?{data:null}:s},providesTags:["Messaging Config"]}),createMessagingConfigurationSecrets:e.mutation({query:e=>({url:"messaging/default/".concat(e.service_type,"/secret"),method:"PUT",body:e.details}),invalidatesTags:["Messaging Config","Configuration Settings"]}),getMessagingConfigurationDetails:e.query({query:e=>({url:"messaging/default/".concat(e.type)}),providesTags:["Messaging Config"]}),getMessagingConfigurations:e.query({query:()=>({url:"messaging/config"}),providesTags:["Messaging Config"]}),getMessagingConfigurationByKey:e.query({query:e=>({url:"messaging/config/".concat(e.key)}),providesTags:["Messaging Config"]}),createTestConnectionMessage:e.mutation({query:e=>({url:"messaging/test/".concat(e.service_type),method:"POST",body:e.details}),invalidatesTags:["Messaging Config"]}),updateMessagingConfigurationByKey:e.mutation({query:e=>({url:"messaging/config/".concat(e.key),method:"PATCH",body:e.config}),invalidatesTags:["Messaging Config","Configuration Settings"]}),updateMessagingConfigurationSecretsByKey:e.mutation({query:e=>({url:"messaging/config/".concat(e.key,"/secret"),method:"PUT",body:e.secrets}),invalidatesTags:["Messaging Config","Configuration Settings"]}),deleteMessagingConfigurationByKey:e.mutation({query:e=>({url:"messaging/config/".concat(e.key),method:"DELETE"}),invalidatesTags:["Messaging Config","Configuration Settings"]})})})},71115:function(e,n,i){i.r(n),i.d(n,{default:function(){return d}});var t=i(24246),s=i(96306),r=i(25980),a=i(62165),o=i(16394);let l=e=>{let{flag:n,value:i,override:r}=e;return"boolean"!=typeof i?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.xvT,{fontSize:"sm",children:n}),(0,t.jsx)(s.xvT,{fontSize:"sm",children:i})]}):a.Ky[n].userCannotModify?null:(0,t.jsxs)(s.NIc,{display:"contents",children:[(0,t.jsx)(s.xuv,{justifySelf:"center",children:(0,t.jsx)(s.rAg,{id:"flag-".concat(n),checked:i,onChange:()=>r({flag:n,value:!i})})}),(0,t.jsx)(s.xuv,{children:(0,t.jsx)(s.lXp,{margin:0,fontSize:"sm",htmlFor:"flag-".concat(n),title:n,children:(0,o.Py)(n)})}),(0,t.jsx)(s.xuv,{children:(0,t.jsx)(s.xvT,{fontSize:"sm",children:a.Ky[n].description})})]})};var c=i(77213),g=i(58754),d=e=>{let{showAlphaFeatures:n=!1}=e,i=(0,r.hz)(),{flags:o,override:d,reset:u}=(0,a.Vb)(),f=a.R$.filter(e=>e.startsWith("alpha")),m=a.R$.filter(e=>!e.startsWith("alpha"));return(0,t.jsxs)(c.Z,{title:"About Fides",children:[(0,t.jsx)(g.Z,{heading:"About Fides",children:(0,t.jsxs)(s.kCb,{direction:"column",gap:4,children:[(0,t.jsxs)(s.xuv,{children:[(0,t.jsxs)(s.xvT,{as:"span",fontWeight:"bold",children:["Fides Core Version:"," "]}),(0,t.jsx)(s.xvT,{as:"pre",display:"inline",children:i.version})]}),i.plusVersion?(0,t.jsxs)(s.xuv,{children:[(0,t.jsxs)(s.xvT,{as:"span",fontWeight:"bold",children:["Fides Plus Version:"," "]}),(0,t.jsx)(s.xvT,{as:"pre",display:"inline",children:i.plusVersion})]}):null,(0,t.jsx)(s.izJ,{})]})}),(0,t.jsxs)(s.kCb,{alignItems:"center",gap:4,children:[(0,t.jsx)(s.X6q,{as:"h2",fontSize:"xl",children:"Beta Features"}),(0,t.jsx)(s.wpx,{onClick:u,children:"Reset"})]}),(0,t.jsx)(s.rjZ,{gridTemplateColumns:"1fr 2fr 6fr",gridColumnGap:4,gridRowGap:2,alignItems:"center",className:"py-6",children:m.map(e=>(0,t.jsx)(l,{flag:e,value:o[e],override:d},e))}),n&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.kCb,{alignItems:"center",gap:4,children:[(0,t.jsx)(s.X6q,{as:"h2",fontSize:"xl",children:"Alpha Features"}),(0,t.jsx)(s.wpx,{onClick:u,children:"Reset"})]}),(0,t.jsx)(s.rjZ,{gridTemplateColumns:"1fr 2fr 6fr",gridColumnGap:4,gridRowGap:2,alignItems:"center",className:"py-6",children:f.map(e=>(0,t.jsx)(l,{flag:e,value:o[e],override:d},e))})]}),(0,t.jsxs)(s.xuv,{children:[(0,t.jsxs)(s.xvT,{fontSize:"sm",children:["Please visit"," ",(0,t.jsx)(s.rUS,{color:"complimentary.500",href:"https://docs.ethyca.com",isExternal:!0,children:"docs.ethyca.com"})," ","for more information on these features."]}),(0,t.jsxs)(s.xvT,{fontSize:"sm",children:["For questions and feedback, please join us at"," ",(0,t.jsx)(s.rUS,{color:"complimentary.500",href:"https://fidescommunity.slack.com",isExternal:!0,children:"fidescommunity.slack.com"}),"."]})]})]})}}}]);