ethyca-fides 2.69.3b1__py2.py3-none-any.whl → 2.70.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 (324) hide show
  1. {ethyca_fides-2.69.3b1.dist-info → ethyca_fides-2.70.0.dist-info}/METADATA +1 -1
  2. {ethyca_fides-2.69.3b1.dist-info → ethyca_fides-2.70.0.dist-info}/RECORD +254 -232
  3. fides/_version.py +3 -3
  4. fides/api/alembic/migrations/versions/4d8c0fcc5771_adding_default_system_groups.py +78 -0
  5. fides/api/alembic/migrations/versions/5fa78b1f324d_add_event_audit_table.py +82 -0
  6. fides/api/alembic/migrations/versions/b9bfa12c167b_add_not_applicable_to_asset_consentstatus.py +46 -0
  7. fides/api/alembic/migrations/versions/fd7571bef683_adds_new_fields_to_messagingconfig_for_.py +31 -0
  8. fides/api/api/v1/endpoints/messaging_endpoints.py +164 -34
  9. fides/api/api/v1/endpoints/privacy_request_endpoints.py +87 -23
  10. fides/api/db/base.py +1 -0
  11. fides/api/db/seed.py +34 -0
  12. fides/api/models/asset.py +1 -0
  13. fides/api/models/event_audit.py +68 -0
  14. fides/api/models/messaging.py +30 -10
  15. fides/api/models/taxonomy.py +16 -4
  16. fides/api/schemas/application_config.py +4 -1
  17. fides/api/schemas/messaging/messaging.py +33 -66
  18. fides/api/schemas/messaging/messaging_secrets_docs_only.py +1 -1
  19. fides/api/schemas/messaging/shared_schemas.py +102 -0
  20. fides/api/schemas/privacy_center_config.py +29 -5
  21. fides/api/service/deps.py +10 -2
  22. fides/api/service/messaging/message_dispatch_service.py +16 -15
  23. fides/api/service/messaging/messaging_crud_service.py +5 -9
  24. fides/api/service/privacy_request/request_runner_service.py +18 -0
  25. fides/api/tasks/__init__.py +1 -0
  26. fides/api/util/cache.py +1 -1
  27. fides/api/worker/__init__.py +2 -0
  28. fides/common/api/v1/urn_registry.py +2 -1
  29. fides/service/event_audit_service.py +115 -0
  30. fides/service/messaging/aws_ses_service.py +2 -4
  31. fides/service/taxonomy/taxonomy_service.py +49 -3
  32. fides/ui-build/static/admin/404.html +1 -1
  33. fides/ui-build/static/admin/_next/static/chunks/1115-7888473b3dc28cda.js +1 -0
  34. fides/ui-build/static/admin/_next/static/chunks/155-88303b05c6e115a5.js +1 -0
  35. fides/ui-build/static/admin/_next/static/chunks/1817-ee9e29a6b8c4af50.js +1 -0
  36. fides/ui-build/static/admin/_next/static/chunks/2040-ab6212a3074f34f9.js +1 -0
  37. fides/ui-build/static/admin/_next/static/chunks/2121.1de2fa060eae34aa.js +1 -0
  38. fides/ui-build/static/admin/_next/static/chunks/3585-451504ea5ed7a1ea.js +1 -0
  39. fides/ui-build/static/admin/_next/static/chunks/3696-c25dc8d1b0e1aee1.js +1 -0
  40. fides/ui-build/static/admin/_next/static/chunks/3700-2a7094f112a1608a.js +1 -0
  41. fides/ui-build/static/admin/_next/static/chunks/3855-12ee1dfbbe47fd28.js +1 -0
  42. fides/ui-build/static/admin/_next/static/chunks/3872-3514b712afd683c0.js +1 -0
  43. fides/ui-build/static/admin/_next/static/chunks/409-c1256ecda1b15db6.js +1 -0
  44. fides/ui-build/static/admin/_next/static/chunks/431-78bf05f35d7eec4f.js +1 -0
  45. fides/ui-build/static/admin/_next/static/chunks/4558-de5ced790b3380dc.js +1 -0
  46. fides/ui-build/static/admin/_next/static/chunks/4608-96f480766541124b.js +1 -0
  47. fides/ui-build/static/admin/_next/static/chunks/4718-6585c97c26647e65.js +1 -0
  48. fides/ui-build/static/admin/_next/static/chunks/502-a40d39e615f7b664.js +1 -0
  49. fides/ui-build/static/admin/_next/static/chunks/504-afd3588f1908ac33.js +1 -0
  50. fides/ui-build/static/admin/_next/static/chunks/5185-33f50cf9ae17b42e.js +1 -0
  51. fides/ui-build/static/admin/_next/static/chunks/5309-3b6cf0cc9d0c6a83.js +1 -0
  52. fides/ui-build/static/admin/_next/static/chunks/5574-b8c4cba5a6938c00.js +1 -0
  53. fides/ui-build/static/admin/_next/static/chunks/{5596-bb601cbf40e47a0f.js → 5596-29a7c8322530b7cf.js} +1 -1
  54. fides/ui-build/static/admin/_next/static/chunks/5698.2135391a128cc373.js +164 -0
  55. fides/ui-build/static/admin/_next/static/chunks/5783-8de76df87af55e98.js +1 -0
  56. fides/ui-build/static/admin/_next/static/chunks/6084-2cd165179c428a6f.js +1 -0
  57. fides/ui-build/static/admin/_next/static/chunks/6416-18d438ff85d807f8.js +1 -0
  58. fides/ui-build/static/admin/_next/static/chunks/6882-447f15e87b8c48a5.js +1 -0
  59. fides/ui-build/static/admin/_next/static/chunks/7045-f15044a4d4525946.js +1 -0
  60. fides/ui-build/static/admin/_next/static/chunks/7158-835ba42fd881d8dd.js +1 -0
  61. fides/ui-build/static/admin/_next/static/chunks/7202.3febe9e89640c712.js +1 -0
  62. fides/ui-build/static/admin/_next/static/chunks/7476-0b6e114658b15eaa.js +1 -0
  63. fides/ui-build/static/admin/_next/static/chunks/7630-e7ea13be69c118a1.js +1 -0
  64. fides/ui-build/static/admin/_next/static/chunks/7725-dd6736855807936a.js +1 -0
  65. fides/ui-build/static/admin/_next/static/chunks/7929-0fd0d4948bc8d70e.js +1 -0
  66. fides/ui-build/static/admin/_next/static/chunks/796-e07ac2c543f569e3.js +1 -0
  67. fides/ui-build/static/admin/_next/static/chunks/8002-25fd174aec9b077b.js +1 -0
  68. fides/ui-build/static/admin/_next/static/chunks/9037-453224ba3ee65b13.js +1 -0
  69. fides/ui-build/static/admin/_next/static/chunks/9046-2a332fe338535c84.js +1 -0
  70. fides/ui-build/static/admin/_next/static/chunks/9226-2f960b7ca530642a.js +1 -0
  71. fides/ui-build/static/admin/_next/static/chunks/{9676.9fd9552ef744c717.js → 9676.b86ecbcfe5afd25d.js} +1 -1
  72. fides/ui-build/static/admin/_next/static/chunks/9826-c02be5882205bbbc.js +1 -0
  73. fides/ui-build/static/admin/_next/static/chunks/{9951-0c8a80f01e431957.js → 9951-651d521d9a02b6df.js} +1 -1
  74. fides/ui-build/static/admin/_next/static/chunks/pages/{_app-a653cee14ce2366b.js → _app-302177edeb0dc4f5.js} +63 -226
  75. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{manual-adaec1ec185160af.js → manual-939253f8daf349b2.js} +1 -1
  76. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-f90aa48500c1cbde.js +1 -0
  77. fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure-c0db068d1863222f.js +1 -0
  78. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-59a8aff5935482ec.js +1 -0
  79. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-17cdca29c6d4cdd6.js → properties-069f4e3ee96ebf77.js} +1 -1
  80. fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-09be5455ba85db39.js +1 -0
  81. fides/ui-build/static/admin/_next/static/chunks/pages/consent-e5a33654a2dfaf35.js +1 -0
  82. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-d0dbba5bff738b57.js → [resourceUrn]-293c1f2d9aefb447.js} +1 -1
  83. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-be7b385073f22414.js +1 -0
  84. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-cfc118e68285405c.js → [resourceUrn]-18501152fa1e4f40.js} +1 -1
  85. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-351caadeef03876a.js +1 -0
  86. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-758d51b4d37dbd09.js +1 -0
  87. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-0e4d9ff89c63793c.js +1 -0
  88. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-1554afcb8b9da2ab.js +1 -0
  89. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-2635ef588bf06145.js +1 -0
  90. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-8f736b078e9842da.js → [resourceUrn]-0497f3ffdb632516.js} +1 -1
  91. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-eb814e3c22807871.js → detection-a780390da99f3e43.js} +1 -1
  92. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-6875b7783fcfda2f.js → [resourceUrn]-1901c26cdde820da.js} +1 -1
  93. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-172dbd7740e212ca.js → discovery-0cea22af5929c81f.js} +1 -1
  94. fides/ui-build/static/admin/_next/static/chunks/pages/datamap-619f27c745188adb.js +1 -0
  95. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-ef71f387fbbab425.js +1 -0
  96. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-d790553662caf5c3.js +1 -0
  97. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-cb63db8594fe8dc1.js +1 -0
  98. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-78e052c8f95110c4.js +1 -0
  99. fides/ui-build/static/admin/_next/static/chunks/pages/dataset-d6d7ee8bd8858a8a.js +1 -0
  100. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-785205655317b1d3.js → [id]-cc149157d290a94d.js} +1 -1
  101. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-a6985f77afbc5bc0.js → new-4c9fb068a5561658.js} +1 -1
  102. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-a832084ce294f8af.js +1 -0
  103. fides/ui-build/static/admin/_next/static/chunks/pages/index-269b8f81546dad66.js +1 -0
  104. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-8b13bb5f7bee61c6.js +1 -0
  105. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-6f109ef64304ef59.js +1 -0
  106. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-8566e3b7b2a632fa.js +1 -0
  107. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-1b38b656807ed0cd.js +1 -0
  108. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure-b00532a0ad4f6927.js +1 -0
  109. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-65f0d5672041a202.js +1 -0
  110. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-3d2a77cb07aa8dc0.js → [id]-322a01e2bceab3fb.js} +1 -1
  111. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-210e7e3b3d776d44.js → add-property-777ed2d73812043d.js} +1 -1
  112. fides/ui-build/static/admin/_next/static/chunks/pages/{properties-18257b6a70fa8a97.js → properties-08472b2a6bf1d392.js} +1 -1
  113. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-5b423687e227ad4d.js +1 -0
  114. fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/alpha-68eaac2d79133679.js +1 -0
  115. fides/ui-build/static/admin/_next/static/chunks/pages/settings/about-6c4904c157477285.js +1 -0
  116. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-55e36839d219a503.js +1 -0
  117. fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-26ce8fc493993765.js +1 -0
  118. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domain-records-7ddf9d992fe714a6.js +1 -0
  119. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-7c78ae51f0dd7102.js +1 -0
  120. fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-05ffbda19ab894b9.js +1 -0
  121. fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers/[key]-b0d93bf478bf63ee.js +1 -0
  122. fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers/new-084f9756b9987285.js +1 -0
  123. fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers-6c51ffd46bb598e7.js +1 -0
  124. fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-44456bfe54ac4ad5.js +1 -0
  125. fides/ui-build/static/admin/_next/static/chunks/pages/settings/privacy-requests-fbe7e8030d837aed.js +1 -0
  126. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-a86bafe1b4e1205f.js +1 -0
  127. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]-1895c6a13b543436.js +1 -0
  128. fides/ui-build/static/admin/_next/static/chunks/pages/systems-e99fbd1b2d1bfd12.js +1 -0
  129. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-9ffcf98b8ad56bf7.js +1 -0
  130. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/{new-92f52c43f522a350.js → new-6304dad2c5fab694.js} +1 -1
  131. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-763861f5eb207db5.js → [id]-ff4711db191099cd.js} +1 -1
  132. fides/ui-build/static/admin/_next/static/chunks/webpack-2766492c5dbceb0a.js +1 -0
  133. fides/ui-build/static/admin/_next/static/v72X5v2wmNmYdDpd8p1YY/_buildManifest.js +1 -0
  134. fides/ui-build/static/admin/add-systems/manual.html +1 -1
  135. fides/ui-build/static/admin/add-systems/multiple.html +1 -1
  136. fides/ui-build/static/admin/add-systems.html +1 -1
  137. fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
  138. fides/ui-build/static/admin/consent/configure.html +1 -1
  139. fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
  140. fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
  141. fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
  142. fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
  143. fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
  144. fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
  145. fides/ui-build/static/admin/consent/properties.html +1 -1
  146. fides/ui-build/static/admin/consent/reporting.html +1 -1
  147. fides/ui-build/static/admin/consent.html +1 -1
  148. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
  149. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
  150. fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
  151. fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
  152. fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
  153. fides/ui-build/static/admin/data-catalog.html +1 -1
  154. fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +1 -1
  155. fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +1 -1
  156. fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
  157. fides/ui-build/static/admin/data-discovery/activity.html +1 -1
  158. fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
  159. fides/ui-build/static/admin/data-discovery/detection.html +1 -1
  160. fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
  161. fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
  162. fides/ui-build/static/admin/datamap.html +1 -1
  163. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
  164. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
  165. fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
  166. fides/ui-build/static/admin/dataset/new.html +1 -1
  167. fides/ui-build/static/admin/dataset.html +1 -1
  168. fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
  169. fides/ui-build/static/admin/datastore-connection/new.html +1 -1
  170. fides/ui-build/static/admin/datastore-connection.html +1 -1
  171. fides/ui-build/static/admin/index.html +1 -1
  172. fides/ui-build/static/admin/integrations/[id].html +1 -1
  173. fides/ui-build/static/admin/integrations.html +1 -1
  174. fides/ui-build/static/admin/lib/fides-ext-gpp.js +1 -1
  175. fides/ui-build/static/admin/lib/fides-headless.js +1 -1
  176. fides/ui-build/static/admin/lib/fides-preview.js +1 -1
  177. fides/ui-build/static/admin/lib/fides-tcf.js +2 -2
  178. fides/ui-build/static/admin/lib/fides.js +2 -2
  179. fides/ui-build/static/admin/login/[provider].html +1 -1
  180. fides/ui-build/static/admin/login.html +1 -1
  181. fides/ui-build/static/admin/messaging/[id].html +1 -1
  182. fides/ui-build/static/admin/messaging/add-template.html +1 -1
  183. fides/ui-build/static/admin/messaging.html +1 -1
  184. fides/ui-build/static/admin/poc/ant-components.html +1 -1
  185. fides/ui-build/static/admin/poc/form-experiments/AntForm.html +1 -1
  186. fides/ui-build/static/admin/poc/form-experiments/FormikAntFormItem.html +1 -1
  187. fides/ui-build/static/admin/poc/form-experiments/FormikControlled.html +1 -1
  188. fides/ui-build/static/admin/poc/form-experiments/FormikField.html +1 -1
  189. fides/ui-build/static/admin/poc/form-experiments/FormikSpreadField.html +1 -1
  190. fides/ui-build/static/admin/poc/forms.html +1 -1
  191. fides/ui-build/static/admin/poc/table-migration.html +1 -1
  192. fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
  193. fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
  194. fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
  195. fides/ui-build/static/admin/privacy-requests.html +1 -1
  196. fides/ui-build/static/admin/properties/[id].html +1 -1
  197. fides/ui-build/static/admin/properties/add-property.html +1 -1
  198. fides/ui-build/static/admin/properties.html +1 -1
  199. fides/ui-build/static/admin/reporting/datamap.html +1 -1
  200. fides/ui-build/static/admin/settings/about/alpha.html +1 -1
  201. fides/ui-build/static/admin/settings/about.html +1 -1
  202. fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +1 -1
  203. fides/ui-build/static/admin/settings/consent.html +1 -1
  204. fides/ui-build/static/admin/settings/custom-fields.html +1 -1
  205. fides/ui-build/static/admin/settings/domain-records.html +1 -1
  206. fides/ui-build/static/admin/settings/domains.html +1 -1
  207. fides/ui-build/static/admin/settings/email-templates.html +1 -1
  208. fides/ui-build/static/admin/settings/locations.html +1 -1
  209. fides/ui-build/static/admin/settings/messaging-providers/[key].html +1 -0
  210. fides/ui-build/static/admin/settings/messaging-providers/new.html +1 -0
  211. fides/ui-build/static/admin/settings/messaging-providers.html +1 -0
  212. fides/ui-build/static/admin/settings/organization.html +1 -1
  213. fides/ui-build/static/admin/settings/privacy-requests.html +1 -1
  214. fides/ui-build/static/admin/settings/regulations.html +1 -1
  215. fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
  216. fides/ui-build/static/admin/systems/configure/[id].html +1 -1
  217. fides/ui-build/static/admin/systems.html +1 -1
  218. fides/ui-build/static/admin/taxonomy.html +1 -1
  219. fides/ui-build/static/admin/user-management/new.html +1 -1
  220. fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
  221. fides/ui-build/static/admin/user-management.html +1 -1
  222. fides/ui-build/static/admin/_next/static/_b75ACzlGNz3tZqGUPTE5/_buildManifest.js +0 -1
  223. fides/ui-build/static/admin/_next/static/chunks/1099-718ce18b9bd70cdb.js +0 -1
  224. fides/ui-build/static/admin/_next/static/chunks/1345-1961771e9619db39.js +0 -1
  225. fides/ui-build/static/admin/_next/static/chunks/1817-9423665774c2c08f.js +0 -1
  226. fides/ui-build/static/admin/_next/static/chunks/3620-34355b0c44325537.js +0 -1
  227. fides/ui-build/static/admin/_next/static/chunks/3642-c052564812532324.js +0 -1
  228. fides/ui-build/static/admin/_next/static/chunks/3729-c8accd71498f6fe4.js +0 -1
  229. fides/ui-build/static/admin/_next/static/chunks/3855-0565d44d150c985a.js +0 -1
  230. fides/ui-build/static/admin/_next/static/chunks/3872-c022bb7259a9f323.js +0 -1
  231. fides/ui-build/static/admin/_next/static/chunks/4164-cadb4c6528662248.js +0 -1
  232. fides/ui-build/static/admin/_next/static/chunks/431-86ad2beeb93c95c9.js +0 -1
  233. fides/ui-build/static/admin/_next/static/chunks/4608-caa9cb70fb66ac99.js +0 -1
  234. fides/ui-build/static/admin/_next/static/chunks/4786-d2b03ba5c82a02ed.js +0 -1
  235. fides/ui-build/static/admin/_next/static/chunks/4808-57c5ac15fd8b0d81.js +0 -1
  236. fides/ui-build/static/admin/_next/static/chunks/4831-c0d20b2a0b7332bb.js +0 -1
  237. fides/ui-build/static/admin/_next/static/chunks/4844-e5064a161a7e5a12.js +0 -1
  238. fides/ui-build/static/admin/_next/static/chunks/5258-0062e0a1e4f8c03e.js +0 -1
  239. fides/ui-build/static/admin/_next/static/chunks/5487-46774dc9df554af1.js +0 -1
  240. fides/ui-build/static/admin/_next/static/chunks/549-170c96caa601e15a.js +0 -1
  241. fides/ui-build/static/admin/_next/static/chunks/6084-2c7b81cbcae7e3b4.js +0 -1
  242. fides/ui-build/static/admin/_next/static/chunks/7476-fdd0eb08a12e0334.js +0 -1
  243. fides/ui-build/static/admin/_next/static/chunks/7630-8613916021366672.js +0 -1
  244. fides/ui-build/static/admin/_next/static/chunks/787-f2eca25837ff7305.js +0 -1
  245. fides/ui-build/static/admin/_next/static/chunks/79-68834fd07d69f428.js +0 -1
  246. fides/ui-build/static/admin/_next/static/chunks/796-8fbae2fc714e7a3a.js +0 -1
  247. fides/ui-build/static/admin/_next/static/chunks/8002-193a97fe4de8b779.js +0 -1
  248. fides/ui-build/static/admin/_next/static/chunks/9046-1afcfb1c4dbdd6c6.js +0 -1
  249. fides/ui-build/static/admin/_next/static/chunks/9826-d49a56431e896acb.js +0 -1
  250. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-0a2b2f4a30245089.js +0 -1
  251. fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure-b7b7fb3e8b2ea816.js +0 -1
  252. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-23d3e50db42f31b3.js +0 -1
  253. fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-75be0acd400cf527.js +0 -1
  254. fides/ui-build/static/admin/_next/static/chunks/pages/consent-9b4e0a08ae6216c7.js +0 -1
  255. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-25c5916c8357f98d.js +0 -1
  256. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-9fa11c01b44ba8f1.js +0 -1
  257. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-fb16cb8fd2b3826f.js +0 -1
  258. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-a481a5be96dede96.js +0 -1
  259. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-6c65b86a61340753.js +0 -1
  260. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-7fe1ca395914f77f.js +0 -1
  261. fides/ui-build/static/admin/_next/static/chunks/pages/datamap-ea1eabce2a3fc2c7.js +0 -1
  262. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-3c629aecee30c575.js +0 -1
  263. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-a13ea13e0316d5a2.js +0 -1
  264. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-a6ae353b3b1536cc.js +0 -1
  265. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-85b28db67d96f201.js +0 -1
  266. fides/ui-build/static/admin/_next/static/chunks/pages/dataset-409fe1a086fb7d38.js +0 -1
  267. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-93d5c01dd927bad2.js +0 -1
  268. fides/ui-build/static/admin/_next/static/chunks/pages/index-bf3042fdbfb12b3d.js +0 -1
  269. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-e545f8ef5c945f45.js +0 -1
  270. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-f297e6cdb9fe97b9.js +0 -1
  271. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-6e864b293571a508.js +0 -1
  272. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-0fc3f1f3b1cd6f2a.js +0 -1
  273. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-089c166287a89166.js +0 -1
  274. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure-5a3cd9b14a37ef27.js +0 -1
  275. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-73be3cfaaa95ece4.js +0 -1
  276. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-adbea0f9fd21ff3a.js +0 -1
  277. fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/alpha-b678e7577eef5e5c.js +0 -1
  278. fides/ui-build/static/admin/_next/static/chunks/pages/settings/about-3f3039c7e86cab2f.js +0 -1
  279. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-d502bf1e7580df06.js +0 -1
  280. fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-b841d63011827b43.js +0 -1
  281. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domain-records-50f9b26c6907d6de.js +0 -1
  282. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-5ae0d30eb3b770ab.js +0 -1
  283. fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-f5924e64a15a0dc3.js +0 -1
  284. fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-88f6badc1bb38b97.js +0 -1
  285. fides/ui-build/static/admin/_next/static/chunks/pages/settings/privacy-requests-d5f8db89c7e91a02.js +0 -1
  286. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-0366184eda09a933.js +0 -1
  287. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]-a659f18a30ef89f3.js +0 -1
  288. fides/ui-build/static/admin/_next/static/chunks/pages/systems-f4bf47ed2c4746ba.js +0 -1
  289. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-2d9548cfa6086e8f.js +0 -1
  290. fides/ui-build/static/admin/_next/static/chunks/webpack-606818148553db7b.js +0 -1
  291. fides/ui-build/static/admin/privacy-requests/configure/messaging.html +0 -1
  292. {ethyca_fides-2.69.3b1.dist-info → ethyca_fides-2.70.0.dist-info}/WHEEL +0 -0
  293. {ethyca_fides-2.69.3b1.dist-info → ethyca_fides-2.70.0.dist-info}/entry_points.txt +0 -0
  294. {ethyca_fides-2.69.3b1.dist-info → ethyca_fides-2.70.0.dist-info}/licenses/LICENSE +0 -0
  295. {ethyca_fides-2.69.3b1.dist-info → ethyca_fides-2.70.0.dist-info}/top_level.txt +0 -0
  296. /fides/ui-build/static/admin/_next/static/chunks/{2921-765918f8aa37fdb2.js → 2921-66f65496c3a09316.js} +0 -0
  297. /fides/ui-build/static/admin/_next/static/chunks/{3923-23df37eef17d6ea2.js → 3923-a551756b413367ea.js} +0 -0
  298. /fides/ui-build/static/admin/_next/static/chunks/{401-45f399d4d1325340.js → 401-ffe4e8436e1eceb9.js} +0 -0
  299. /fides/ui-build/static/admin/_next/static/chunks/{6853-8fb39280a8f0eb89.js → 6853-7004a8c420b1ca02.js} +0 -0
  300. /fides/ui-build/static/admin/_next/static/chunks/{6954-3b26ff8259c4d5c3.js → 6954-599f2de2c902e9b2.js} +0 -0
  301. /fides/ui-build/static/admin/_next/static/chunks/pages/{404-8d9c703c96662265.js → 404-2eb8aed4939f1142.js} +0 -0
  302. /fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-20050dbae806179d.js → multiple-83ed7da0bb90b0a5.js} +0 -0
  303. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-7b8cec88b5ad53d1.js → add-vendors-46b88bda3d7b15c5.js} +0 -0
  304. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-c30382719d6f797a.js → [id]-fd41ffaff543e05a.js} +0 -0
  305. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-experience-dff842dbed2bc6c8.js → privacy-experience-92a337ee96845af2.js} +0 -0
  306. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-074cdbfc678ba791.js → [id]-1fd2cda8707314f6.js} +0 -0
  307. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-bcddda632b4df409.js → new-2987e397445713c5.js} +0 -0
  308. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-8ffd8d148269d323.js → [projectUrn]-6a4b0d49dcbf17a8.js} +0 -0
  309. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{resources-9b7e4b86b1e8a40a.js → resources-af80fdca3bbdc82f.js} +0 -0
  310. /fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{[id]-f03f1fdaa1f5a0c6.js → [id]-d8c5c03fb2f31d65.js} +0 -0
  311. /fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{add-template-8f90e275e932940b.js → add-template-0e0c06e3c8aabe02.js} +0 -0
  312. /fides/ui-build/static/admin/_next/static/chunks/pages/{messaging-68385a251c7ade5f.js → messaging-3f15804cf9625f01.js} +0 -0
  313. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{ant-components-fc7d652910f3ad8d.js → ant-components-248ad9f65a872442.js} +0 -0
  314. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{AntForm-fb6e6f4b276b6189.js → AntForm-aedb66a62042b10a.js} +0 -0
  315. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikAntFormItem-00869abf79950a9a.js → FormikAntFormItem-018df38b7cd77fdb.js} +0 -0
  316. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikControlled-5716d749236c9f70.js → FormikControlled-6ca9099d03aab817.js} +0 -0
  317. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikField-d6dfb9daa3935db3.js → FormikField-0f2c90786ea005a4.js} +0 -0
  318. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{forms-9697549bce7060be.js → forms-200b51a725f8b2d1.js} +0 -0
  319. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{table-migration-888656ae0bd40f62.js → table-migration-e551fccfcaae76e7.js} +0 -0
  320. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/{[purpose_id]-c64b87694eda4785.js → [purpose_id]-f3e6e74e0efb005c.js} +0 -0
  321. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-e29384f7a3db5221.js → locations-77fb85bdd0be42b5.js} +0 -0
  322. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-46d06037fcadaf00.js → regulations-2866ac99faa5a542.js} +0 -0
  323. /fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-98a3277820e232c7.js → user-management-82fcf1151e2fe2ba.js} +0 -0
  324. /fides/ui-build/static/admin/_next/static/{_b75ACzlGNz3tZqGUPTE5 → v72X5v2wmNmYdDpd8p1YY}/_ssgManifest.js +0 -0
@@ -0,0 +1,102 @@
1
+ from typing import Any, Dict, Optional, Union
2
+
3
+ from pydantic import BaseModel, ConfigDict, model_validator
4
+
5
+ from fides.api.custom_types import PhoneNumber
6
+ from fides.api.schemas.base_class import NoValidationSchema
7
+ from fides.api.schemas.connection_configuration.connection_secrets_base_aws import (
8
+ BaseAWSSchema,
9
+ )
10
+
11
+
12
+ class MessagingServiceSecretsMailgun(BaseModel):
13
+ """The secrets required to connect to Mailgun."""
14
+
15
+ mailgun_api_key: str
16
+ model_config = ConfigDict(extra="forbid")
17
+
18
+
19
+ class MessagingServiceSecretsTwilioSMS(BaseModel):
20
+ """The secrets required to connect to Twilio SMS."""
21
+
22
+ twilio_account_sid: str
23
+ twilio_auth_token: str
24
+ twilio_messaging_service_sid: Optional[str] = None
25
+ twilio_sender_phone_number: Optional[PhoneNumber] = None
26
+ model_config = ConfigDict(extra="forbid")
27
+
28
+ @model_validator(mode="before")
29
+ @classmethod
30
+ def validate_fields(cls, values: Dict[str, Any]) -> Dict[str, Any]:
31
+ sender_phone = values.get("twilio_sender_phone_number")
32
+ if not values.get("twilio_messaging_service_sid") and not sender_phone:
33
+ raise ValueError(
34
+ "Either the twilio_messaging_service_sid or the twilio_sender_phone_number should be supplied."
35
+ )
36
+ return values
37
+
38
+
39
+ class MessagingServiceSecretsTwilioEmail(BaseModel):
40
+ """The secrets required to connect to twilio email."""
41
+
42
+ twilio_api_key: str
43
+ model_config = ConfigDict(extra="forbid")
44
+
45
+
46
+ class MessagingServiceSecretsMailchimpTransactional(BaseModel):
47
+ """The secrets required to connect to Mailchimp Transactional."""
48
+
49
+ mailchimp_transactional_api_key: str
50
+ model_config = ConfigDict(extra="forbid")
51
+
52
+
53
+ class MessagingServiceSecretsMailchimpTransactionalDocs(
54
+ MessagingServiceSecretsMailchimpTransactional,
55
+ NoValidationSchema,
56
+ ):
57
+ """The secrets required to connect Mailchimp Transactional, for documentation"""
58
+
59
+
60
+ class MessagingSecretsMailgunDocs(MessagingServiceSecretsMailgun, NoValidationSchema):
61
+ """The secrets required to connect to Mailgun, for documentation"""
62
+
63
+
64
+ class MessagingSecretsTwilioSMSDocs(
65
+ MessagingServiceSecretsTwilioSMS, NoValidationSchema
66
+ ):
67
+ """The secrets required to connect to Twilio sms, for documentation"""
68
+
69
+
70
+ class MessagingSecretsTwilioEmailDocs(
71
+ MessagingServiceSecretsTwilioEmail, NoValidationSchema
72
+ ):
73
+ """The secrets required to connect to Twilio email, for documentation"""
74
+
75
+
76
+ class MessagingServiceSecretsAWS_SES(BaseAWSSchema):
77
+ """The secrets required to connect to AWS SES."""
78
+
79
+ model_config = ConfigDict(extra="forbid")
80
+
81
+
82
+ class MessagingServiceSecretsAWS_SESDocs(
83
+ MessagingServiceSecretsAWS_SES, NoValidationSchema
84
+ ):
85
+ """The secrets required to connect to AWS SES, for documentation"""
86
+
87
+
88
+ SUPPORTED_MESSAGING_SERVICE_SECRETS = Union[
89
+ MessagingServiceSecretsMailgun,
90
+ MessagingServiceSecretsTwilioSMS,
91
+ MessagingServiceSecretsTwilioEmail,
92
+ MessagingServiceSecretsMailchimpTransactional,
93
+ MessagingServiceSecretsAWS_SES,
94
+ ]
95
+
96
+ PossibleMessagingSecrets = Union[
97
+ MessagingSecretsMailgunDocs,
98
+ MessagingSecretsTwilioSMSDocs,
99
+ MessagingSecretsTwilioEmailDocs,
100
+ MessagingServiceSecretsMailchimpTransactionalDocs,
101
+ MessagingServiceSecretsAWS_SESDocs,
102
+ ]
@@ -1,7 +1,14 @@
1
1
  from abc import ABC
2
- from typing import Any, Dict, List, Literal, Optional, Union
2
+ from typing import Annotated, Any, Dict, List, Literal, Optional, Union
3
3
 
4
- from pydantic import ConfigDict, Field, field_validator, model_validator
4
+ from pydantic import (
5
+ ConfigDict,
6
+ Discriminator,
7
+ Field,
8
+ Tag,
9
+ field_validator,
10
+ model_validator,
11
+ )
5
12
 
6
13
  from fides.api.models.location_regulation_selections import PrivacyNoticeRegion
7
14
  from fides.api.schemas.base_class import FidesSchema
@@ -86,9 +93,26 @@ class LocationCustomPrivacyRequestField(BaseCustomPrivacyRequestField):
86
93
  return values
87
94
 
88
95
 
89
- # Create a simple union type - Pydantic will use the field_type to determine which model to use
90
- CustomPrivacyRequestFieldUnion = Union[
91
- LocationCustomPrivacyRequestField, CustomPrivacyRequestField
96
+ # Create a discriminated union type using the field_type to properly distinguish between types
97
+ def get_field_type_discriminator(v: Any) -> str:
98
+ """Discriminator function for CustomPrivacyRequestFieldUnion"""
99
+ if isinstance(v, dict):
100
+ field_type = v.get("field_type")
101
+ else:
102
+ # For model instances, get field_type attribute
103
+ field_type = getattr(v, "field_type", None)
104
+
105
+ if field_type == "location":
106
+ return "location"
107
+ return "custom"
108
+
109
+
110
+ CustomPrivacyRequestFieldUnion = Annotated[
111
+ Union[
112
+ Annotated[LocationCustomPrivacyRequestField, Tag("location")],
113
+ Annotated[CustomPrivacyRequestField, Tag("custom")],
114
+ ],
115
+ Discriminator(get_field_type_discriminator),
92
116
  ]
93
117
 
94
118
 
fides/api/service/deps.py CHANGED
@@ -8,6 +8,7 @@ from fides.config import FidesConfig
8
8
  from fides.config.config_proxy import ConfigProxy
9
9
  from fides.service.dataset.dataset_config_service import DatasetConfigService
10
10
  from fides.service.dataset.dataset_service import DatasetService
11
+ from fides.service.event_audit_service import EventAuditService
11
12
  from fides.service.messaging.messaging_service import MessagingService
12
13
  from fides.service.privacy_request.privacy_request_service import PrivacyRequestService
13
14
  from fides.service.system.system_service import SystemService
@@ -47,8 +48,15 @@ def get_user_service(
47
48
  return UserService(db, config, config_proxy)
48
49
 
49
50
 
50
- def get_taxonomy_service(db: Session = Depends(get_db)) -> TaxonomyService:
51
- return TaxonomyService(db)
51
+ def get_event_audit_service(db: Session = Depends(get_db)) -> EventAuditService:
52
+ return EventAuditService(db)
53
+
54
+
55
+ def get_taxonomy_service(
56
+ db: Session = Depends(get_db),
57
+ event_audit_service: EventAuditService = Depends(get_event_audit_service),
58
+ ) -> TaxonomyService:
59
+ return TaxonomyService(db, event_audit_service)
52
60
 
53
61
 
54
62
  def get_system_service(db: AsyncSession = Depends(get_async_db)) -> SystemService:
@@ -44,7 +44,6 @@ from fides.api.service.messaging.messaging_crud_service import (
44
44
  get_enabled_messaging_template_by_type_and_property,
45
45
  )
46
46
  from fides.api.tasks import DatabaseTask, celery_app
47
- from fides.api.util.logger import Pii
48
47
  from fides.config import CONFIG
49
48
  from fides.config.config_proxy import ConfigProxy
50
49
  from fides.service.messaging.aws_ses_service import AWS_SES_Service
@@ -663,9 +662,9 @@ def _mailgun_dispatcher(
663
662
  raise MessageDispatchException(
664
663
  f"Email failed to send with status code {response.status_code}"
665
664
  )
666
- except Exception as e:
667
- logger.error("Email failed to send: {}", Pii(str(e)))
668
- raise MessageDispatchException(f"Email failed to send due to: {Pii(e)}")
665
+ except Exception as exc:
666
+ logger.error("Email failed to send: {}", str(exc))
667
+ raise MessageDispatchException(f"Email failed to send due to: {str(exc)}")
669
668
 
670
669
 
671
670
  def _twilio_email_dispatcher(
@@ -707,14 +706,14 @@ def _twilio_email_dispatcher(
707
706
  logger.error(
708
707
  "Email failed to send: %s: %s",
709
708
  response.status_code,
710
- Pii(str(response.body)),
709
+ str(response.body),
711
710
  )
712
711
  raise MessageDispatchException(
713
- f"Email failed to send: {response.status_code}, {Pii(str(response.body))}"
712
+ f"Email failed to send: {response.status_code}, {str(response.body)}"
714
713
  )
715
- except Exception as e:
716
- logger.error("Email failed to send: {}", Pii(str(e)))
717
- raise MessageDispatchException(f"Email failed to send due to: {Pii(e)}")
714
+ except Exception as exc:
715
+ logger.error("Email failed to send: {}", str(exc))
716
+ raise MessageDispatchException(f"Email failed to send due to: {str(exc)}")
718
717
 
719
718
 
720
719
  def _twilio_sms_dispatcher(
@@ -753,9 +752,9 @@ def _twilio_sms_dispatcher(
753
752
  raise MessageDispatchException(
754
753
  "Message failed to send. Either sender phone number or messaging service sid must be provided."
755
754
  )
756
- except TwilioRestException as e:
757
- logger.error("Twilio SMS failed to send: {}", Pii(str(e)))
758
- raise MessageDispatchException(f"Twilio SMS failed to send due to: {Pii(e)}")
755
+ except TwilioRestException as exc:
756
+ logger.error("Twilio SMS failed to send: {}", str(exc))
757
+ raise MessageDispatchException(f"Twilio SMS failed to send due to: {str(exc)}")
759
758
 
760
759
 
761
760
  def _aws_ses_dispatcher(
@@ -769,9 +768,11 @@ def _aws_ses_dispatcher(
769
768
 
770
769
  try:
771
770
  aws_ses_serivce.send_email(to, message.subject, message.body)
772
- except Exception as e:
773
- logger.error("Email failed to send: {}", Pii(str(e)))
774
- raise MessageDispatchException(f"AWS SES email failed to send due to: {Pii(e)}")
771
+ except Exception as exc:
772
+ logger.error("Email failed to send: {}", str(exc))
773
+ raise MessageDispatchException(
774
+ f"AWS SES email failed to send due to: {str(exc)}"
775
+ )
775
776
 
776
777
 
777
778
  def _get_template_id_if_exists(
@@ -25,7 +25,7 @@ from fides.api.schemas.messaging.messaging import (
25
25
 
26
26
  def update_messaging_config(
27
27
  db: Session, key: FidesKey, config: MessagingConfigRequest
28
- ) -> MessagingConfigResponse:
28
+ ) -> MessagingConfig:
29
29
  existing_config_with_key: Optional[MessagingConfig] = MessagingConfig.get_by(
30
30
  db=db, field="key", value=key
31
31
  )
@@ -38,7 +38,7 @@ def update_messaging_config(
38
38
 
39
39
  def create_or_update_messaging_config(
40
40
  db: Session, config: MessagingConfigRequest
41
- ) -> MessagingConfigResponse:
41
+ ) -> MessagingConfig:
42
42
  data = {
43
43
  "key": config.key,
44
44
  "name": config.name,
@@ -46,16 +46,10 @@ def create_or_update_messaging_config(
46
46
  }
47
47
  if config.details:
48
48
  data["details"] = config.details.__dict__ # type: ignore
49
- messaging_config: MessagingConfig = MessagingConfig.create_or_update(
49
+ return MessagingConfig.create_or_update(
50
50
  db=db,
51
51
  data=data,
52
52
  )
53
- return MessagingConfigResponse(
54
- name=messaging_config.name,
55
- key=messaging_config.key,
56
- service_type=messaging_config.service_type.value, # type: ignore
57
- details=messaging_config.details,
58
- )
59
53
 
60
54
 
61
55
  def delete_messaging_config(db: Session, key: FidesKey) -> None:
@@ -84,6 +78,8 @@ def get_messaging_config_by_key(db: Session, key: FidesKey) -> MessagingConfigRe
84
78
  key=config.key,
85
79
  service_type=config.service_type.value, # type: ignore[attr-defined]
86
80
  details=config.details,
81
+ last_test_timestamp=config.last_test_timestamp,
82
+ last_test_succeeded=config.last_test_succeeded,
87
83
  )
88
84
 
89
85
 
@@ -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)
@@ -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
fides/api/util/cache.py CHANGED
@@ -220,7 +220,7 @@ def get_cache() -> FidesopsRedis:
220
220
 
221
221
  if not connected:
222
222
  raise common_exceptions.RedisConnectionError(
223
- "Unable to establish Redis connection. Fidesops is unable to accept PrivacyRequsts."
223
+ "Unable to establish Redis connection. Fides is unable to accept PrivacyRequests."
224
224
  )
225
225
 
226
226
  return _connection
@@ -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
 
@@ -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/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-606818148553db7b.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-a653cee14ce2366b.js" defer=""></script><script src="/_next/static/chunks/pages/404-8d9c703c96662265.js" defer=""></script><script src="/_next/static/_b75ACzlGNz3tZqGUPTE5/_buildManifest.js" defer=""></script><script src="/_next/static/_b75ACzlGNz3tZqGUPTE5/_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":"_b75ACzlGNz3tZqGUPTE5","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-2766492c5dbceb0a.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-302177edeb0dc4f5.js" defer=""></script><script src="/_next/static/chunks/pages/404-2eb8aed4939f1142.js" defer=""></script><script src="/_next/static/v72X5v2wmNmYdDpd8p1YY/_buildManifest.js" defer=""></script><script src="/_next/static/v72X5v2wmNmYdDpd8p1YY/_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":"v72X5v2wmNmYdDpd8p1YY","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -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"}),"."]})]})]})}}}]);