ethyca-fides 2.73.2b0__py2.py3-none-any.whl → 2.74.0rc1__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 (336) hide show
  1. {ethyca_fides-2.73.2b0.dist-info → ethyca_fides-2.74.0rc1.dist-info}/METADATA +2 -1
  2. {ethyca_fides-2.73.2b0.dist-info → ethyca_fides-2.74.0rc1.dist-info}/RECORD +273 -276
  3. fides/_version.py +3 -3
  4. fides/api/alembic/migrations/versions/xx_2025_10_29_1659_80d28dea3b6b_added_duplicate_group_table.py +79 -0
  5. fides/api/alembic/migrations/versions/xx_2025_11_05_0200_f1a2b3c4d5e6_create_staged_resource_error_table.py +82 -0
  6. fides/api/api/v1/endpoints/privacy_request_endpoints.py +33 -6
  7. fides/api/db/database.py +225 -0
  8. fides/api/models/detection_discovery/__init__.py +2 -0
  9. fides/api/models/detection_discovery/core.py +10 -0
  10. fides/api/models/detection_discovery/staged_resource_error.py +25 -0
  11. fides/api/models/privacy_preference.py +1 -0
  12. fides/api/models/privacy_request/duplicate_group.py +84 -0
  13. fides/api/models/privacy_request/privacy_request.py +53 -8
  14. fides/api/schemas/privacy_request.py +16 -4
  15. fides/api/service/async_dsr/strategies/async_dsr_strategy_polling.py +13 -6
  16. fides/api/service/privacy_request/duplication_detection.py +424 -0
  17. fides/api/service/privacy_request/request_runner_service.py +5 -0
  18. fides/api/service/saas_request/saas_request_override_factory.py +7 -2
  19. fides/api/util/logger_context_utils.py +3 -1
  20. fides/api/util/memory_watchdog.py +118 -0
  21. fides/common/api/v1/urn_registry.py +1 -0
  22. fides/config/__init__.py +7 -1
  23. fides/config/celery_settings.py +42 -0
  24. fides/service/privacy_request/privacy_request_service.py +66 -5
  25. fides/ui-build/static/admin/404.html +1 -1
  26. fides/ui-build/static/admin/_next/static/FZTEUgamBvOhgPWce135w/_buildManifest.js +1 -0
  27. fides/ui-build/static/admin/_next/static/chunks/{1115-26393b586775ea29.js → 1115-0da062111df309bf.js} +1 -1
  28. fides/ui-build/static/admin/_next/static/chunks/{6148-59a59d5c5925344f.js → 1533-84e250d1f26e6d7d.js} +1 -1
  29. fides/ui-build/static/admin/_next/static/chunks/1817-508b16628e8eb225.js +1 -0
  30. fides/ui-build/static/admin/_next/static/chunks/1840-5bbe6d878ed73fb4.js +1 -0
  31. fides/ui-build/static/admin/_next/static/chunks/3214-90ce0a366b0f461a.js +1 -0
  32. fides/ui-build/static/admin/_next/static/chunks/3377-eb5cd82b3ee6ab0c.js +1 -0
  33. fides/ui-build/static/admin/_next/static/chunks/3615-5e2d062d684b8fa1.js +1 -0
  34. fides/ui-build/static/admin/_next/static/chunks/3655-93ecd09f1cb9dbef.js +1 -0
  35. fides/ui-build/static/admin/_next/static/chunks/{4259.d1507e0db19cbed7.js → 4259.05038c9b78467244.js} +1 -1
  36. fides/ui-build/static/admin/_next/static/chunks/4277-13bcf4516326d474.js +1 -0
  37. fides/ui-build/static/admin/_next/static/chunks/454-d5c2c84f1a14e4f1.js +1 -0
  38. fides/ui-build/static/admin/_next/static/chunks/5487-8dedd1ca94fbba54.js +1 -0
  39. fides/ui-build/static/admin/_next/static/chunks/549-6e2442db533a711e.js +1 -0
  40. fides/ui-build/static/admin/_next/static/chunks/5643-55d758444a8d7162.js +1 -0
  41. fides/ui-build/static/admin/_next/static/chunks/5724-1e40975cefa405f0.js +1 -0
  42. fides/ui-build/static/admin/_next/static/chunks/6084-82e2df433fe5ba85.js +1 -0
  43. fides/ui-build/static/admin/_next/static/chunks/6344-3e21444374f8059f.js +1 -0
  44. fides/ui-build/static/admin/_next/static/chunks/6362-12e3fd23130ccf15.js +1 -0
  45. fides/ui-build/static/admin/_next/static/chunks/6372-a8d0f08dac1ebd0e.js +1 -0
  46. fides/ui-build/static/admin/_next/static/chunks/6780-3db5133c1f4c6f1e.js +1 -0
  47. fides/ui-build/static/admin/_next/static/chunks/6954-aa0c60ee1092be8e.js +1 -0
  48. fides/ui-build/static/admin/_next/static/chunks/7079-6e6efc3396ff1ebb.js +1 -0
  49. fides/ui-build/static/admin/_next/static/chunks/7218-d297a4a06f924b09.js +1 -0
  50. fides/ui-build/static/admin/_next/static/chunks/{7245-c9bc628d078c2170.js → 7245-686665c197b58e68.js} +1 -1
  51. fides/ui-build/static/admin/_next/static/chunks/7654-716cf37a020b3d11.js +1 -0
  52. fides/ui-build/static/admin/_next/static/chunks/8939-4925751c57c51f87.js +1 -0
  53. fides/ui-build/static/admin/_next/static/chunks/9014-eeae6f581158e645.js +1 -0
  54. fides/ui-build/static/admin/_next/static/chunks/{9046-d9c6498368b993d1.js → 9046-e4daf28840a69fd6.js} +1 -1
  55. fides/ui-build/static/admin/_next/static/chunks/{5596-29a7c8322530b7cf.js → 9195-550bd50d538c5f79.js} +3 -3
  56. fides/ui-build/static/admin/_next/static/chunks/9341-bfc0e59bcc56c604.js +1 -0
  57. fides/ui-build/static/admin/_next/static/chunks/9450-b7b7bb1d755ecf57.js +1 -0
  58. fides/ui-build/static/admin/_next/static/chunks/9682-da69ac5d06f281da.js +1 -0
  59. fides/ui-build/static/admin/_next/static/chunks/9911-ece086f2230e34f0.js +1 -0
  60. fides/ui-build/static/admin/_next/static/chunks/9965-56c5e4fc9cd3b3a5.js +1 -0
  61. fides/ui-build/static/admin/_next/static/chunks/pages/{_app-ee588a308812715d.js → _app-e64fd8510033a27c.js} +63 -63
  62. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{manual-7081e0e49f67716c.js → manual-ddd9d7d40847fc28.js} +1 -1
  63. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-1b02a4991201b7e4.js → [id]-9b1f2b1c06968166.js} +1 -1
  64. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{new-a5e738a234dadc7e.js → new-115a085e5d42de45.js} +1 -1
  65. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-8c164c4b8310214e.js → [id]-3de34624829cbce8.js} +1 -1
  66. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-db789002d84c8829.js → new-dc95e7ed278d1a29.js} +1 -1
  67. fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-e3ad3a55624e302a.js +1 -0
  68. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-32bd7a7c990e5bf6.js → [resourceUrn]-dd82729296dee5c5.js} +1 -1
  69. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-49e5477eb1a11b92.js +1 -0
  70. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{projects-07e7d38ce34e1e6c.js → projects-dfc1ead4a12c9ffa.js} +1 -1
  71. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-b07a0707f8c2ec0d.js → [resourceUrn]-8442eb219958ac7e.js} +1 -1
  72. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources-feda358d1801c18d.js +1 -0
  73. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-d16acb6fc07aad46.js +1 -0
  74. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/datastore/[monitorId]-c51a1e98c45d231a.js +1 -0
  75. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/website/[monitorId]/[systemId]-bcfe38eebca30f8c.js +1 -0
  76. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/website/{[monitorId]-73085f50abb775c0.js → [monitorId]-f66d0655897c4400.js} +1 -1
  77. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-6f1e012cd641da19.js +1 -0
  78. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{activity-24a82e07a0008516.js → activity-581d6248fcf98d17.js} +1 -1
  79. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-b072cf25aefc98f6.js → [resourceUrn]-ddc1c1641e1e9430.js} +1 -1
  80. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-fd3e8817d8e6dee4.js → detection-2b48f7e524743b2b.js} +1 -1
  81. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-146624cf59792bf7.js → [resourceUrn]-862b67418600251e.js} +1 -1
  82. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-9695cc9c85592ec5.js → discovery-0ffec855f5df262c.js} +1 -1
  83. fides/ui-build/static/admin/_next/static/chunks/pages/datamap-6a030ab8c2e2b0db.js +1 -0
  84. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/{[...subfieldNames]-5f88280db168083e.js → [...subfieldNames]-6cb66f649b8ca4bf.js} +1 -1
  85. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/{[collectionName]-bfbcf19c28c794ae.js → [collectionName]-0b008dad90b00aaa.js} +1 -1
  86. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{[datasetId]-6fbe2b584a509226.js → [datasetId]-5566edf9a9d1be2d.js} +1 -1
  87. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-d4ca1f485b6e9e02.js +1 -0
  88. fides/ui-build/static/admin/_next/static/chunks/pages/dataset-85dee7e81dc4bafb.js +1 -0
  89. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/[id]-e905e018a2cab35d.js +1 -0
  90. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/new-912723bc86299b1a.js +1 -0
  91. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-f1f0affc18327033.js +1 -0
  92. fides/ui-build/static/admin/_next/static/chunks/pages/{fides-js-docs-1f4335dca5c09860.js → fides-js-docs-5235760b3e508d7d.js} +1 -1
  93. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-1b94e2d769a182b2.js +1 -0
  94. fides/ui-build/static/admin/_next/static/chunks/pages/{integrations-a733e5d7c3ce9bb8.js → integrations-adfe6c5ac5b703d0.js} +1 -1
  95. fides/ui-build/static/admin/_next/static/chunks/pages/new-privacy-requests-f9be7080ebbb7445.js +1 -0
  96. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/providers/{[key]-720cde29f81db47f.js → [key]-f94e3accf9507ebf.js} +1 -1
  97. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/providers/{new-3668866076b53016.js → new-5e83220ff1f2a250.js} +1 -1
  98. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates-1621a4b87c432117.js +1 -0
  99. fides/ui-build/static/admin/_next/static/chunks/pages/poc/{ant-components-9cfb469de7b4aeab.js → ant-components-e02516d9fd314528.js} +1 -1
  100. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-1fe486f3af832c80.js +1 -0
  101. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-2c0ec8fed16c20ae.js +1 -0
  102. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-baf77d34a3b3bece.js +1 -0
  103. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-ee8820fe0fa14c77.js +1 -0
  104. fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields/{[id]-8634aae3259def37.js → [id]-8eb862182f19a6c2.js} +1 -1
  105. fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields/{new-2d9dcca17965dc57.js → new-37c29ef618e9fe3c.js} +1 -1
  106. fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-1db425150dcb1b6b.js +1 -0
  107. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-f108bf5015144d2f.js +1 -0
  108. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-59c89489fa32a4cb.js → [id]-0e7c7228d01290ea.js} +1 -1
  109. fides/ui-build/static/admin/_next/static/chunks/pages/{systems-cfaa37a0df83674b.js → systems-adc13b542e10a37d.js} +1 -1
  110. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-23dd250da26511c5.js +1 -0
  111. fides/ui-build/static/admin/_next/static/chunks/webpack-6f97ebe373e7ef6b.js +1 -0
  112. fides/ui-build/static/admin/_next/static/css/65ae906f224cd8ae.css +1 -0
  113. fides/ui-build/static/admin/_next/static/css/d5701118537cbdd2.css +1 -0
  114. fides/ui-build/static/admin/add-systems/manual.html +1 -1
  115. fides/ui-build/static/admin/add-systems/multiple.html +1 -1
  116. fides/ui-build/static/admin/add-systems.html +1 -1
  117. fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
  118. fides/ui-build/static/admin/consent/configure.html +1 -1
  119. fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
  120. fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
  121. fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
  122. fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
  123. fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
  124. fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
  125. fides/ui-build/static/admin/consent/properties.html +1 -1
  126. fides/ui-build/static/admin/consent/reporting.html +1 -1
  127. fides/ui-build/static/admin/consent.html +1 -1
  128. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
  129. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
  130. fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
  131. fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
  132. fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
  133. fides/ui-build/static/admin/data-catalog.html +1 -1
  134. fides/ui-build/static/admin/data-discovery/action-center/datastore/[monitorId].html +1 -1
  135. fides/ui-build/static/admin/data-discovery/action-center/datastore.html +1 -1
  136. fides/ui-build/static/admin/data-discovery/action-center/website/[monitorId]/[systemId].html +1 -1
  137. fides/ui-build/static/admin/data-discovery/action-center/website/[monitorId].html +1 -1
  138. fides/ui-build/static/admin/data-discovery/action-center/website.html +1 -1
  139. fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
  140. fides/ui-build/static/admin/data-discovery/activity.html +1 -1
  141. fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
  142. fides/ui-build/static/admin/data-discovery/detection.html +1 -1
  143. fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
  144. fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
  145. fides/ui-build/static/admin/datamap.html +1 -1
  146. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
  147. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
  148. fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
  149. fides/ui-build/static/admin/dataset/new.html +1 -1
  150. fides/ui-build/static/admin/dataset.html +1 -1
  151. fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
  152. fides/ui-build/static/admin/datastore-connection/new.html +1 -1
  153. fides/ui-build/static/admin/datastore-connection.html +1 -1
  154. fides/ui-build/static/admin/index.html +1 -1
  155. fides/ui-build/static/admin/integrations/[id].html +1 -1
  156. fides/ui-build/static/admin/integrations.html +1 -1
  157. fides/ui-build/static/admin/lib/fides-ext-gpp.js +1 -1
  158. fides/ui-build/static/admin/lib/fides-preview.js +1 -1
  159. fides/ui-build/static/admin/lib/fides-tcf.js +2 -2
  160. fides/ui-build/static/admin/login/[provider].html +1 -1
  161. fides/ui-build/static/admin/login.html +1 -1
  162. fides/ui-build/static/admin/new-privacy-requests.html +1 -1
  163. fides/ui-build/static/admin/notifications/digests/[id].html +1 -1
  164. fides/ui-build/static/admin/notifications/digests/new.html +1 -1
  165. fides/ui-build/static/admin/notifications/digests.html +1 -1
  166. fides/ui-build/static/admin/notifications/providers/[key].html +1 -1
  167. fides/ui-build/static/admin/notifications/providers/new.html +1 -1
  168. fides/ui-build/static/admin/notifications/providers.html +1 -1
  169. fides/ui-build/static/admin/notifications/templates/[id].html +1 -1
  170. fides/ui-build/static/admin/notifications/templates/add-template.html +1 -1
  171. fides/ui-build/static/admin/notifications/templates.html +1 -1
  172. fides/ui-build/static/admin/notifications.html +1 -1
  173. fides/ui-build/static/admin/poc/ant-components.html +1 -1
  174. fides/ui-build/static/admin/poc/form-experiments/AntForm.html +1 -1
  175. fides/ui-build/static/admin/poc/form-experiments/FormikAntFormItem.html +1 -1
  176. fides/ui-build/static/admin/poc/form-experiments/FormikControlled.html +1 -1
  177. fides/ui-build/static/admin/poc/form-experiments/FormikField.html +1 -1
  178. fides/ui-build/static/admin/poc/form-experiments/FormikSpreadField.html +1 -1
  179. fides/ui-build/static/admin/poc/forms.html +1 -1
  180. fides/ui-build/static/admin/poc/table-migration.html +1 -1
  181. fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
  182. fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
  183. fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
  184. fides/ui-build/static/admin/privacy-requests.html +1 -1
  185. fides/ui-build/static/admin/properties/[id].html +1 -1
  186. fides/ui-build/static/admin/properties/add-property.html +1 -1
  187. fides/ui-build/static/admin/properties.html +1 -1
  188. fides/ui-build/static/admin/reporting/datamap.html +1 -1
  189. fides/ui-build/static/admin/sandbox/privacy-notices.html +1 -1
  190. fides/ui-build/static/admin/settings/about/alpha.html +1 -1
  191. fides/ui-build/static/admin/settings/about.html +1 -1
  192. fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +1 -1
  193. fides/ui-build/static/admin/settings/consent.html +1 -1
  194. fides/ui-build/static/admin/settings/custom-fields/[id].html +1 -1
  195. fides/ui-build/static/admin/settings/custom-fields/new.html +1 -1
  196. fides/ui-build/static/admin/settings/custom-fields.html +1 -1
  197. fides/ui-build/static/admin/settings/domain-records.html +1 -1
  198. fides/ui-build/static/admin/settings/domains.html +1 -1
  199. fides/ui-build/static/admin/settings/email-templates.html +1 -1
  200. fides/ui-build/static/admin/settings/locations.html +1 -1
  201. fides/ui-build/static/admin/settings/organization.html +1 -1
  202. fides/ui-build/static/admin/settings/privacy-requests.html +1 -1
  203. fides/ui-build/static/admin/settings/regulations.html +1 -1
  204. fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
  205. fides/ui-build/static/admin/systems/configure/[id].html +1 -1
  206. fides/ui-build/static/admin/systems.html +1 -1
  207. fides/ui-build/static/admin/taxonomy.html +1 -1
  208. fides/ui-build/static/admin/user-management/new.html +1 -1
  209. fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
  210. fides/ui-build/static/admin/user-management.html +1 -1
  211. fides/ui-build/static/admin/_next/static/chunks/1099-31f9d973bc287df8.js +0 -1
  212. fides/ui-build/static/admin/_next/static/chunks/1316-2606e19807c08aa5.js +0 -1
  213. fides/ui-build/static/admin/_next/static/chunks/1437-8b1f6c8797c68bfd.js +0 -1
  214. fides/ui-build/static/admin/_next/static/chunks/1467-8808ec8836e033f9.js +0 -1
  215. fides/ui-build/static/admin/_next/static/chunks/155-f6302d32cba4cab6.js +0 -1
  216. fides/ui-build/static/admin/_next/static/chunks/1817-2d5cf537a2992c79.js +0 -1
  217. fides/ui-build/static/admin/_next/static/chunks/2962-342ad1b4ab402ded.js +0 -1
  218. fides/ui-build/static/admin/_next/static/chunks/3377-988ac2f3a2e8d5d4.js +0 -1
  219. fides/ui-build/static/admin/_next/static/chunks/3446-f40c352c43ac950c.js +0 -1
  220. fides/ui-build/static/admin/_next/static/chunks/346-aa3b88efb85f2e28.js +0 -1
  221. fides/ui-build/static/admin/_next/static/chunks/3700-f695f2f6b8251971.js +0 -1
  222. fides/ui-build/static/admin/_next/static/chunks/3772-9f1713f9d5f97a10.js +0 -1
  223. fides/ui-build/static/admin/_next/static/chunks/3873-d18e47b327445db5.js +0 -1
  224. fides/ui-build/static/admin/_next/static/chunks/5163-e682273cd76a7d07.js +0 -1
  225. fides/ui-build/static/admin/_next/static/chunks/5279-bd6cccabdd6ca447.js +0 -1
  226. fides/ui-build/static/admin/_next/static/chunks/549-28537a6de666944b.js +0 -1
  227. fides/ui-build/static/admin/_next/static/chunks/5619-9b50cec521203989.js +0 -1
  228. fides/ui-build/static/admin/_next/static/chunks/5643-3459282d296a3c59.js +0 -1
  229. fides/ui-build/static/admin/_next/static/chunks/6277-3759894435cb8569.js +0 -1
  230. fides/ui-build/static/admin/_next/static/chunks/6315-e2fb5ea77179a871.js +0 -1
  231. fides/ui-build/static/admin/_next/static/chunks/6344-ca66a6e10d128179.js +0 -1
  232. fides/ui-build/static/admin/_next/static/chunks/6419-11d67f7fd4e2f247.js +0 -1
  233. fides/ui-build/static/admin/_next/static/chunks/6954-84789a4e4fb04eb9.js +0 -1
  234. fides/ui-build/static/admin/_next/static/chunks/699-8ca44b0de9fa20f0.js +0 -1
  235. fides/ui-build/static/admin/_next/static/chunks/7488-cf92601852e3c509.js +0 -1
  236. fides/ui-build/static/admin/_next/static/chunks/7773-9ae233109bc64ec2.js +0 -1
  237. fides/ui-build/static/admin/_next/static/chunks/8011-75af8b480fa114e6.js +0 -1
  238. fides/ui-build/static/admin/_next/static/chunks/8373-22b4d20e8cc06b3a.js +0 -1
  239. fides/ui-build/static/admin/_next/static/chunks/8765-f622a35b40a7ec63.js +0 -1
  240. fides/ui-build/static/admin/_next/static/chunks/9037-453224ba3ee65b13.js +0 -1
  241. fides/ui-build/static/admin/_next/static/chunks/9187-7438242f0d380bb0.js +0 -1
  242. fides/ui-build/static/admin/_next/static/chunks/9278-08cc704317fe535e.js +0 -1
  243. fides/ui-build/static/admin/_next/static/chunks/9682-d1a3afa1394f8304.js +0 -1
  244. fides/ui-build/static/admin/_next/static/chunks/9729-fcf6ff4e3534e4a8.js +0 -1
  245. fides/ui-build/static/admin/_next/static/chunks/9899-d6437facac926264.js +0 -1
  246. fides/ui-build/static/admin/_next/static/chunks/9965-25621dd507e0cfd6.js +0 -1
  247. fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-11f1683aa15e1a62.js +0 -1
  248. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-d60761c20382b259.js +0 -1
  249. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources-aed94957009eb3fd.js +0 -1
  250. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-127c114dd8f102ed.js +0 -1
  251. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/datastore/[monitorId]-5aa7a9fa96160de8.js +0 -1
  252. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/website/[monitorId]/[systemId]-899bf30dde8b3292.js +0 -1
  253. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-823d0dd77e66585b.js +0 -1
  254. fides/ui-build/static/admin/_next/static/chunks/pages/datamap-3b100c44ea9e3988.js +0 -1
  255. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-3d1e48f4b95d7f6b.js +0 -1
  256. fides/ui-build/static/admin/_next/static/chunks/pages/dataset-d3c6ecf7f29bea6e.js +0 -1
  257. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/[id]-0a4aa42be2da0255.js +0 -1
  258. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/new-14313e441a13192c.js +0 -1
  259. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-f139d1ce26404f30.js +0 -1
  260. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-b2d3d28b10a758e6.js +0 -1
  261. fides/ui-build/static/admin/_next/static/chunks/pages/new-privacy-requests-df0c95e408c54c7e.js +0 -1
  262. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates-a14c876b49422597.js +0 -1
  263. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-cdd3754289a28317.js +0 -1
  264. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-6e4c535b6d614596.js +0 -1
  265. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-632b3ee563d070f2.js +0 -1
  266. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-5b6807dced8d03c5.js +0 -1
  267. fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-7dce52bfc1b2652c.js +0 -1
  268. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-b72d36243a0a545c.js +0 -1
  269. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-56a5434969cbe9ba.js +0 -1
  270. fides/ui-build/static/admin/_next/static/chunks/webpack-c2c11809187b9f84.js +0 -1
  271. fides/ui-build/static/admin/_next/static/css/d41a048a166d50e4.css +0 -1
  272. fides/ui-build/static/admin/_next/static/css/d78390d6134d8328.css +0 -1
  273. fides/ui-build/static/admin/_next/static/wCNFtmYQhEDMaMPeBB4BM/_buildManifest.js +0 -1
  274. {ethyca_fides-2.73.2b0.dist-info → ethyca_fides-2.74.0rc1.dist-info}/WHEEL +0 -0
  275. {ethyca_fides-2.73.2b0.dist-info → ethyca_fides-2.74.0rc1.dist-info}/entry_points.txt +0 -0
  276. {ethyca_fides-2.73.2b0.dist-info → ethyca_fides-2.74.0rc1.dist-info}/licenses/LICENSE +0 -0
  277. {ethyca_fides-2.73.2b0.dist-info → ethyca_fides-2.74.0rc1.dist-info}/top_level.txt +0 -0
  278. /fides/ui-build/static/admin/_next/static/{wCNFtmYQhEDMaMPeBB4BM → FZTEUgamBvOhgPWce135w}/_ssgManifest.js +0 -0
  279. /fides/ui-build/static/admin/_next/static/chunks/{2040-7eed8491ca7276ed.js → 2040-fe1a06d82c0413f1.js} +0 -0
  280. /fides/ui-build/static/admin/_next/static/chunks/{2397-083fc511acb6105d.js → 2397-40b8db1cb2f23e2a.js} +0 -0
  281. /fides/ui-build/static/admin/_next/static/chunks/{2921-34a43f2f8f5e5e69.js → 2921-b10bbc3a9104933b.js} +0 -0
  282. /fides/ui-build/static/admin/_next/static/chunks/{3696-6f90e41a53d22920.js → 3696-6db05a35ae806825.js} +0 -0
  283. /fides/ui-build/static/admin/_next/static/chunks/{3923-f0a85dc5c3684fa0.js → 3923-44255a63d6d80ff5.js} +0 -0
  284. /fides/ui-build/static/admin/_next/static/chunks/{401-7c345d019bb9bcbd.js → 401-fe8db8b5d8f600de.js} +0 -0
  285. /fides/ui-build/static/admin/_next/static/chunks/{4496-4ff19366c597ec16.js → 4496-bed72bd5639075be.js} +0 -0
  286. /fides/ui-build/static/admin/_next/static/chunks/{4817-1f3e6ea38625d8d5.js → 4817-d29f40d4ce729f37.js} +0 -0
  287. /fides/ui-build/static/admin/_next/static/chunks/{5185-e7f8b81dd3dfbe0b.js → 5185-b2ac9fecc00b67e7.js} +0 -0
  288. /fides/ui-build/static/admin/_next/static/chunks/{5258-62d6bc19add60aa6.js → 5258-4672eae0656430f9.js} +0 -0
  289. /fides/ui-build/static/admin/_next/static/chunks/{5783-21775c232dce7af7.js → 5783-6055edba275155ca.js} +0 -0
  290. /fides/ui-build/static/admin/_next/static/chunks/{6853-de9905d28e5b19b3.js → 6853-1adbdf6418ec3d62.js} +0 -0
  291. /fides/ui-build/static/admin/_next/static/chunks/{7059-2bb7c38578549703.js → 7059-12be23a345a94c1e.js} +0 -0
  292. /fides/ui-build/static/admin/_next/static/chunks/{7476-a02d970ea4d3f7d0.js → 7476-a43c046c24de37cc.js} +0 -0
  293. /fides/ui-build/static/admin/_next/static/chunks/{7630-a11610c2b31ab2ca.js → 7630-c654c61ba98d8c74.js} +0 -0
  294. /fides/ui-build/static/admin/_next/static/chunks/{796-e36d610066135f8c.js → 796-e83ace3c6ab99ac7.js} +0 -0
  295. /fides/ui-build/static/admin/_next/static/chunks/{8212-393420e5a9751791.js → 8212-b9e8295ca883c9f8.js} +0 -0
  296. /fides/ui-build/static/admin/_next/static/chunks/{9330-f753636a31c4ea04.js → 9330-e519adec48222d45.js} +0 -0
  297. /fides/ui-build/static/admin/_next/static/chunks/{9826-a737a9956c1d0905.js → 9826-657652d55936a8c6.js} +0 -0
  298. /fides/ui-build/static/admin/_next/static/chunks/pages/{404-eb019192ce498f32.js → 404-d079b8bf35250874.js} +0 -0
  299. /fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-a188f84239f4b2a8.js → multiple-b4d18c1f4d414f5f.js} +0 -0
  300. /fides/ui-build/static/admin/_next/static/chunks/pages/{add-systems-ee9df33ebd471099.js → add-systems-d451bc8932330141.js} +0 -0
  301. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-4f9cf087fcee87e6.js → add-vendors-c24663cd5dec57db.js} +0 -0
  302. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{configure-9af75caefc74eaca.js → configure-d93418688bd258eb.js} +0 -0
  303. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-experience-b08abefec298ccf1.js → privacy-experience-d9b7b311195df29e.js} +0 -0
  304. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-notices-6528eb24165aceb6.js → privacy-notices-cdfc9bb19f47c709.js} +0 -0
  305. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-5cba30eba1e97e56.js → properties-0b995b01dc4dbd1f.js} +0 -0
  306. /fides/ui-build/static/admin/_next/static/chunks/pages/{consent-614af0a2c2ba966c.js → consent-b37ed76849330edd.js} +0 -0
  307. /fides/ui-build/static/admin/_next/static/chunks/pages/{index-1343fa525a206571.js → index-692d27dbe9392c9f.js} +0 -0
  308. /fides/ui-build/static/admin/_next/static/chunks/pages/notifications/digests/{[id]-63b3be660fb12c0f.js → [id]-caaa8602a1d449b1.js} +0 -0
  309. /fides/ui-build/static/admin/_next/static/chunks/pages/notifications/digests/{new-d3b577962dd33266.js → new-9b106b1d2d93985b.js} +0 -0
  310. /fides/ui-build/static/admin/_next/static/chunks/pages/notifications/{digests-aed9afd988a48acf.js → digests-6a1ded8cdde836c4.js} +0 -0
  311. /fides/ui-build/static/admin/_next/static/chunks/pages/notifications/{providers-36a0ac36062abd02.js → providers-a03cbd698a23e5b3.js} +0 -0
  312. /fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates/{[id]-8063dceb32310c85.js → [id]-3cde574b3c8447c0.js} +0 -0
  313. /fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates/{add-template-4931c70bee62232f.js → add-template-0448bb4ae8536c58.js} +0 -0
  314. /fides/ui-build/static/admin/_next/static/chunks/pages/{notifications-93af719dab3bd053.js → notifications-4ea28f6b1dd63642.js} +0 -0
  315. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{AntForm-e715cc654fb6a5cd.js → AntForm-fec08bea801b4918.js} +0 -0
  316. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikAntFormItem-72ae299bcb6adae6.js → FormikAntFormItem-d911e5fbf5a4a888.js} +0 -0
  317. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikControlled-2337f8c81a766eb0.js → FormikControlled-91b1adcac6a57b2d.js} +0 -0
  318. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikField-0af454f55494f6fa.js → FormikField-de309d8813b1ebfb.js} +0 -0
  319. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{forms-d1b90ffa996fbd89.js → forms-f2943c1309062284.js} +0 -0
  320. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{table-migration-19724b9e0581b96d.js → table-migration-03eda417711ae909.js} +0 -0
  321. /fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/{storage-cc41ae605f2b55ae.js → storage-ea6f78fa8b2d3f6c.js} +0 -0
  322. /fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-fa82cffba448ccd8.js → configure-bda7b474493e7128.js} +0 -0
  323. /fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-bc1c289647e52c48.js → [id]-30d298a47e85709f.js} +0 -0
  324. /fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-cbfaa23d96f5ed0b.js → add-property-438084cca0d0f10d.js} +0 -0
  325. /fides/ui-build/static/admin/_next/static/chunks/pages/{properties-a15a3fd0ed88f39c.js → properties-17fd44d98f5bd5b6.js} +0 -0
  326. /fides/ui-build/static/admin/_next/static/chunks/pages/sandbox/{privacy-notices-afe921f6e2a526fb.js → privacy-notices-8c80391025ca7339.js} +0 -0
  327. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/{[purpose_id]-19de0024418a4924.js → [purpose_id]-7c19810858b708cc.js} +0 -0
  328. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-3b87002753b23ca5.js → domain-records-e334b43fa5c5b1e6.js} +0 -0
  329. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domains-aacd9d0ad47082d4.js → domains-9d18eb5c38d85522.js} +0 -0
  330. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{email-templates-3cdd0b39901190ba.js → email-templates-cb937ed7c4b1e5a8.js} +0 -0
  331. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-61076eedbfd137b9.js → locations-835281251f0785cd.js} +0 -0
  332. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{organization-b07b11d6002f8c8c.js → organization-7fd050c92866938c.js} +0 -0
  333. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{privacy-requests-084a2b4431d35322.js → privacy-requests-59ea66130fca0d05.js} +0 -0
  334. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-b7c0d3b1b754e70f.js → regulations-b0fe1051d908f366.js} +0 -0
  335. /fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-5d5a68e555d18693.js → [id]-aed30fb22ae7c9ec.js} +0 -0
  336. /fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-e6a211d8a0401086.js → user-management-6b88ca3e02ee67c9.js} +0 -0
@@ -13,6 +13,7 @@ killed by the system's OOM killer which would result in a WorkerLostError and in
13
13
 
14
14
  from __future__ import annotations
15
15
 
16
+ import gc
16
17
  import os
17
18
  import signal
18
19
  import threading
@@ -21,6 +22,7 @@ from functools import wraps
21
22
  from types import FrameType, TracebackType
22
23
  from typing import Any, Callable, Literal, Optional, Type, TypeVar, Union
23
24
 
25
+ import objgraph # type: ignore
24
26
  import psutil # type: ignore
25
27
  from loguru import logger
26
28
 
@@ -56,6 +58,118 @@ class MemoryLimitExceeded(RuntimeError):
56
58
  self.memory_percent: Optional[float] = memory_percent
57
59
 
58
60
 
61
+ def _capture_heap_dump() -> None:
62
+ """Capture and log actionable heap dump information for memory leak diagnosis.
63
+
64
+ This function builds and logs a comprehensive memory profiling report as a single
65
+ message to help identify memory leaks. It's designed to be called when memory
66
+ threshold is exceeded, just before task termination.
67
+
68
+ The report includes:
69
+ - Process memory stats (RSS, VMS)
70
+ - Top 10 object type counts (spot anomalies like 100k of a custom class)
71
+ - Garbage collector stats (uncollectable objects indicate leaks)
72
+
73
+ All exceptions are caught to ensure heap dump failures don't prevent graceful
74
+ task termination.
75
+ """
76
+ try:
77
+ # Force garbage collection to get accurate counts
78
+ gc.collect()
79
+
80
+ report_lines = [
81
+ "", # Leading newline for visual separation
82
+ "=" * 80,
83
+ "MEMORY DUMP - THRESHOLD EXCEEDED",
84
+ "=" * 80,
85
+ "",
86
+ ]
87
+
88
+ # Section 1: Process Memory Stats
89
+ try:
90
+ process = psutil.Process()
91
+ mem_info = process.memory_info()
92
+ report_lines.extend(
93
+ [
94
+ "PROCESS MEMORY STATS",
95
+ "-" * 80,
96
+ f"RSS (Resident Set Size): {mem_info.rss / 1024 / 1024:.1f} MiB",
97
+ f"VMS (Virtual Memory): {mem_info.vms / 1024 / 1024:.1f} MiB",
98
+ "",
99
+ ]
100
+ )
101
+ except Exception as exc:
102
+ logger.debug("Failed to get process memory stats: {}", exc)
103
+
104
+ # Section 2: Object Type Counts (most actionable for finding leaks)
105
+ type_stats = objgraph.most_common_types(limit=10)
106
+
107
+ report_lines.extend(
108
+ [
109
+ "OBJECT TYPE COUNTS (Top 10)",
110
+ "-" * 80,
111
+ ]
112
+ )
113
+
114
+ if type_stats:
115
+ max_typename_len = max(len(typename) for typename, _ in type_stats)
116
+
117
+ for typename, count in type_stats:
118
+ # Right-align count for easy scanning
119
+ report_lines.append(f"{typename:<{max_typename_len}} {count:>10,}")
120
+ else:
121
+ report_lines.append("No object type data available")
122
+
123
+ report_lines.append("")
124
+
125
+ # Section 3: Garbage Collector Stats
126
+ gc_count = gc.get_count()
127
+
128
+ report_lines.extend(
129
+ [
130
+ "GARBAGE COLLECTOR STATS",
131
+ "-" * 80,
132
+ f"Collections: gen0={gc_count[0]}, gen1={gc_count[1]}, gen2={gc_count[2]}",
133
+ f"Tracked objects: {len(gc.get_objects()):,}",
134
+ ]
135
+ )
136
+
137
+ # Show uncollectable objects (strong indicator of memory leaks)
138
+ uncollectable = gc.garbage
139
+ if uncollectable:
140
+ report_lines.append(
141
+ f"⚠ UNCOLLECTABLE OBJECTS: {len(uncollectable)} (LEAK DETECTED!)"
142
+ )
143
+ # Show types of uncollectable objects
144
+ uncollectable_types: dict[str, int] = {}
145
+ for obj in uncollectable[:50]: # Limit to first 50
146
+ obj_type = type(obj).__name__
147
+ uncollectable_types[obj_type] = uncollectable_types.get(obj_type, 0) + 1
148
+ for obj_type, count in sorted(
149
+ uncollectable_types.items(), key=lambda x: x[1], reverse=True
150
+ ):
151
+ report_lines.append(f" {obj_type}: {count}")
152
+ else:
153
+ report_lines.append("No uncollectable objects detected")
154
+
155
+ report_lines.extend(
156
+ [
157
+ "",
158
+ "=" * 80,
159
+ "END OF MEMORY DUMP",
160
+ "=" * 80,
161
+ "",
162
+ ]
163
+ )
164
+
165
+ # Log the entire report as a single message
166
+ heap_dump_report = "\n".join(report_lines)
167
+ logger.error(heap_dump_report)
168
+
169
+ except Exception as exc: # pragma: no cover
170
+ logger.exception("Failed to capture heap dump: {}", exc)
171
+
172
+
59
173
  class MemoryWatchdog:
60
174
  """Background memory monitor that enables graceful task termination.
61
175
 
@@ -138,6 +252,10 @@ class MemoryWatchdog:
138
252
  """Convert the signal into an exception on the main thread."""
139
253
  current_percent = _system_memory_percent()
140
254
  logger.error("Memory limit exceeded: {}%", current_percent)
255
+
256
+ # Capture heap dump before terminating
257
+ _capture_heap_dump()
258
+
141
259
  self.stop()
142
260
  raise MemoryLimitExceeded(
143
261
  "Memory usage exceeded threshold", memory_percent=current_percent
@@ -87,6 +87,7 @@ PRIVACY_REQUEST_AUTHENTICATED = "/privacy-request/authenticated"
87
87
  PRIVACY_REQUEST_BULK_FINALIZE = "/privacy-request/bulk/finalize"
88
88
  PRIVACY_REQUEST_BULK_RETRY = "/privacy-request/bulk/retry"
89
89
  PRIVACY_REQUEST_BULK_SOFT_DELETE = "/privacy-request/bulk/soft-delete"
90
+ PRIVACY_REQUEST_CANCEL = "/privacy-request/administrate/cancel"
90
91
  PRIVACY_REQUEST_DENY = "/privacy-request/administrate/deny"
91
92
  PRIVACY_REQUEST_SOFT_DELETE = "/privacy-request/{privacy_request_id}/soft-delete"
92
93
  REQUEST_STATUS_LOGS = "/privacy-request/{privacy_request_id}/log"
fides/config/__init__.py CHANGED
@@ -19,7 +19,7 @@ from pydantic_settings import (
19
19
  from fides.common.utils import echo_red
20
20
 
21
21
  from .admin_ui_settings import AdminUISettings
22
- from .celery_settings import CelerySettings
22
+ from .celery_settings import CelerySettings, merge_celery_environment
23
23
  from .cli_settings import CLISettings
24
24
  from .consent_settings import ConsentSettings
25
25
  from .credentials_settings import merge_credentials_environment
@@ -157,6 +157,12 @@ def build_config(config_dict: Dict[str, Any]) -> FidesConfig:
157
157
  config_dict = handle_deprecated_fields(config_dict)
158
158
  config_dict = handle_deprecated_env_variables(config_dict)
159
159
 
160
+ # Logic for merging additional Celery environment variables before validation.
161
+ # This allows arbitrary Celery configuration via FIDES__CELERY__* env vars,
162
+ # not just the explicitly defined fields in CelerySettings.
163
+ # Environment variables override TOML file values.
164
+ config_dict["celery"] = merge_celery_environment(config_dict.get("celery", {}))
165
+
160
166
  settings_map: Dict[str, Any] = {
161
167
  "admin_ui": AdminUISettings,
162
168
  "celery": CelerySettings,
@@ -1,3 +1,8 @@
1
+ import json
2
+ import os
3
+ from json import JSONDecodeError
4
+ from typing import Any, Dict
5
+
1
6
  from pydantic import Field
2
7
  from pydantic_settings import SettingsConfigDict
3
8
 
@@ -23,3 +28,40 @@ class CelerySettings(FidesSettings):
23
28
  "If False, tasks are sent to the queue.",
24
29
  )
25
30
  model_config = SettingsConfigDict(env_prefix=ENV_PREFIX)
31
+
32
+
33
+ def merge_celery_environment(celery_dict: Dict[str, Any]) -> Dict[str, Any]:
34
+ """
35
+ Given a dict of config settings, merges configs which are found
36
+ in environment variables. Environment variable configs are treated
37
+ as overrides. Environment variables must use the prefix FIDES__CELERY__.
38
+
39
+ Example:
40
+ FIDES__CELERY__WORKER_PREFETCH_MULTIPLIER=4
41
+
42
+ Merges to:
43
+ {"worker_prefetch_multiplier": 4}
44
+
45
+ This allows arbitrary Celery configuration to be set via environment variables,
46
+ not just the explicitly defined fields in CelerySettings.
47
+ """
48
+ for key, value in os.environ.items():
49
+ if key.startswith(ENV_PREFIX):
50
+ # Strip the prefix and convert to lowercase
51
+ stripped_key = key[len(ENV_PREFIX) :].lower()
52
+ if stripped_key:
53
+ # Normalize boolean strings only to preserve case-sensitive values
54
+ # like URLs (e.g., Redis://myhost) or passwords
55
+ normalized_value = value
56
+ if value.lower() in ("true", "false"):
57
+ normalized_value = value.lower()
58
+
59
+ # Use JSON parsing to handle type conversion properly
60
+ # This handles booleans (true/false), integers, floats, etc.
61
+ try:
62
+ celery_dict[stripped_key] = json.loads(normalized_value)
63
+ except (JSONDecodeError, ValueError):
64
+ # If JSON parsing fails, keep it as a string
65
+ celery_dict[stripped_key] = value
66
+
67
+ return celery_dict
@@ -43,6 +43,7 @@ from fides.api.schemas.privacy_request import (
43
43
  PrivacyRequestStatus,
44
44
  )
45
45
  from fides.api.service.messaging.message_dispatch_service import message_send_enabled
46
+ from fides.api.service.privacy_request.duplication_detection import check_for_duplicates
46
47
  from fides.api.service.privacy_request.request_service import (
47
48
  build_required_privacy_request_kwargs,
48
49
  cache_data,
@@ -231,7 +232,7 @@ class PrivacyRequestService:
231
232
 
232
233
  return False
233
234
 
234
- # pylint: disable=too-many-branches
235
+ # pylint: disable=too-many-branches, too-many-statements
235
236
  def create_privacy_request(
236
237
  self,
237
238
  privacy_request_data: PrivacyRequestCreate,
@@ -372,6 +373,9 @@ class PrivacyRequestService:
372
373
  authenticated,
373
374
  )
374
375
 
376
+ if not isinstance(privacy_request_data, PrivacyRequestResubmit):
377
+ check_for_duplicates(db=self.db, privacy_request=privacy_request)
378
+
375
379
  return privacy_request
376
380
 
377
381
  except RedisNotConfigured as exc:
@@ -441,10 +445,7 @@ class PrivacyRequestService:
441
445
  if not existing_privacy_request:
442
446
  return None
443
447
 
444
- if existing_privacy_request.status in [
445
- PrivacyRequestStatus.complete,
446
- PrivacyRequestStatus.pending,
447
- ]:
448
+ if existing_privacy_request.status == PrivacyRequestStatus.complete:
448
449
  raise FidesopsException(
449
450
  f"Cannot resubmit a {existing_privacy_request.status} privacy request"
450
451
  )
@@ -644,6 +645,63 @@ class PrivacyRequestService:
644
645
 
645
646
  return BulkReviewResponse(succeeded=succeeded, failed=failed)
646
647
 
648
+ def cancel_privacy_requests(
649
+ self,
650
+ request_ids: List[str],
651
+ cancel_reason: Optional[str],
652
+ *,
653
+ user_id: Optional[str] = None,
654
+ ) -> BulkReviewResponse:
655
+ """Cancel a list of privacy requests and/or report failure"""
656
+ succeeded: List[PrivacyRequest] = []
657
+ failed: List[BulkUpdateFailed] = []
658
+
659
+ # Terminal states that cannot be canceled
660
+ terminal_states = [
661
+ PrivacyRequestStatus.complete,
662
+ PrivacyRequestStatus.denied,
663
+ PrivacyRequestStatus.canceled,
664
+ PrivacyRequestStatus.error,
665
+ ]
666
+
667
+ for request_id in request_ids:
668
+ try:
669
+ privacy_request = self._validate_privacy_request_for_bulk_operation(
670
+ request_id
671
+ )
672
+ except PrivacyRequestError as exc:
673
+ failed.append(BulkUpdateFailed(message=exc.message, data=exc.data))
674
+ continue
675
+
676
+ if privacy_request.status in terminal_states:
677
+ failed.append(
678
+ BulkUpdateFailed(
679
+ message=f"Cannot cancel privacy request in {privacy_request.status.value} status",
680
+ data=PrivacyRequestResponse.model_validate(
681
+ privacy_request
682
+ ).model_dump(mode="json"),
683
+ )
684
+ )
685
+ continue
686
+
687
+ try:
688
+ privacy_request.cancel_processing(
689
+ db=self.db, cancel_reason=cancel_reason
690
+ )
691
+
692
+ succeeded.append(privacy_request)
693
+ except Exception:
694
+ failed.append(
695
+ BulkUpdateFailed(
696
+ message="Privacy request could not be canceled",
697
+ data=PrivacyRequestResponse.model_validate(
698
+ privacy_request
699
+ ).model_dump(mode="json"),
700
+ )
701
+ )
702
+
703
+ return BulkReviewResponse(succeeded=succeeded, failed=failed)
704
+
647
705
  def finalize_privacy_requests(
648
706
  self,
649
707
  request_ids: List[str],
@@ -907,6 +965,9 @@ def handle_approval(
907
965
  db: Session, config_proxy: ConfigProxy, privacy_request: PrivacyRequest
908
966
  ) -> None:
909
967
  """Evaluate manual approval and handle processing or pre-approval webhooks."""
968
+ check_for_duplicates(db=db, privacy_request=privacy_request)
969
+ if privacy_request.status == PrivacyRequestStatus.duplicate:
970
+ return
910
971
  if _manual_approval_required(config_proxy, privacy_request):
911
972
  _trigger_pre_approval_webhooks(db, privacy_request)
912
973
  else:
@@ -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/d78390d6134d8328.css" as="style"/><link rel="stylesheet" href="/_next/static/css/d78390d6134d8328.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-c2c11809187b9f84.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-ee588a308812715d.js" defer=""></script><script src="/_next/static/chunks/pages/404-eb019192ce498f32.js" defer=""></script><script src="/_next/static/wCNFtmYQhEDMaMPeBB4BM/_buildManifest.js" defer=""></script><script src="/_next/static/wCNFtmYQhEDMaMPeBB4BM/_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":"wCNFtmYQhEDMaMPeBB4BM","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/d5701118537cbdd2.css" as="style"/><link rel="stylesheet" href="/_next/static/css/d5701118537cbdd2.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-6f97ebe373e7ef6b.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-e64fd8510033a27c.js" defer=""></script><script src="/_next/static/chunks/pages/404-d079b8bf35250874.js" defer=""></script><script src="/_next/static/FZTEUgamBvOhgPWce135w/_buildManifest.js" defer=""></script><script src="/_next/static/FZTEUgamBvOhgPWce135w/_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":"FZTEUgamBvOhgPWce135w","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -0,0 +1 @@
1
+ self.__BUILD_MANIFEST=function(s,t,e,c,a,i,n,d,o,r,p,u,f,g,b,m,j,k,h,y,l,v,I,w,x,F,_,U,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,$,ss,st,se,sc){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":["static/css/972dc7eef106ee7c.css","static/chunks/pages/index-692d27dbe9392c9f.js"],"/404":["static/chunks/pages/404-d079b8bf35250874.js"],"/_error":["static/chunks/pages/_error-bede3a8288930dcf.js"],"/add-systems":[s,t,"static/css/dd15c278b964de80.css","static/chunks/pages/add-systems-d451bc8932330141.js"],"/add-systems/manual":[s,a,u,y,t,i,f,g,l,U,"static/css/af32fcac7a177a0e.css","static/chunks/pages/add-systems/manual-ddd9d7d40847fc28.js"],"/add-systems/multiple":[i,b,q,"static/chunks/pages/add-systems/multiple-b4d18c1f4d414f5f.js"],"/consent":["static/chunks/pages/consent-b37ed76849330edd.js"],"/consent/configure":[i,b,"static/chunks/pages/consent/configure-d93418688bd258eb.js"],"/consent/configure/add-vendors":[i,b,q,"static/chunks/pages/consent/configure/add-vendors-c24663cd5dec57db.js"],"/consent/privacy-experience":[u,N,"static/chunks/pages/consent/privacy-experience-d9b7b311195df29e.js"],"/consent/privacy-experience/new":[c,A,m,S,"static/chunks/pages/consent/privacy-experience/new-115a085e5d42de45.js"],"/consent/privacy-experience/[id]":[c,A,m,S,"static/chunks/pages/consent/privacy-experience/[id]-9b1f2b1c06968166.js"],"/consent/privacy-notices":[N,"static/chunks/pages/consent/privacy-notices-cdfc9bb19f47c709.js"],"/consent/privacy-notices/new":[c,B,m,C,"static/chunks/pages/consent/privacy-notices/new-dc95e7ed278d1a29.js"],"/consent/privacy-notices/[id]":[c,B,m,C,"static/chunks/pages/consent/privacy-notices/[id]-3de34624829cbce8.js"],"/consent/properties":[j,z,"static/chunks/pages/consent/properties-0b995b01dc4dbd1f.js"],"/consent/reporting":[s,t,e,"static/chunks/pages/consent/reporting-e3ad3a55624e302a.js"],"/data-catalog":["static/css/95ac327e5d70148d.css","static/chunks/pages/data-catalog-d16acb6fc07aad46.js"],"/data-catalog/[systemId]/projects":[r,p,v,"static/chunks/pages/data-catalog/[systemId]/projects-dfc1ead4a12c9ffa.js"],"/data-catalog/[systemId]/projects/[projectUrn]":[p,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-49e5477eb1a11b92.js"],"/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]":[s,t,r,p,D,E,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]-dd82729296dee5c5.js"],"/data-catalog/[systemId]/resources":[p,"static/chunks/pages/data-catalog/[systemId]/resources-feda358d1801c18d.js"],"/data-catalog/[systemId]/resources/[resourceUrn]":[s,t,r,p,D,E,"static/chunks/pages/data-catalog/[systemId]/resources/[resourceUrn]-8442eb219958ac7e.js"],"/data-discovery/action-center":[s,t,k,"static/css/0fd6e0884cfcc5f3.css","static/chunks/pages/data-discovery/action-center-6f1e012cd641da19.js"],"/data-discovery/action-center/datastore":["static/chunks/pages/data-discovery/action-center/datastore-4498881c26f1458d.js"],"/data-discovery/action-center/datastore/[monitorId]":[s,t,k,L,"static/css/65ae906f224cd8ae.css","static/chunks/pages/data-discovery/action-center/datastore/[monitorId]-c51a1e98c45d231a.js"],"/data-discovery/action-center/website":["static/chunks/pages/data-discovery/action-center/website-5b3e0009d442bc3f.js"],"/data-discovery/action-center/website/[monitorId]":[s,t,d,k,M,"static/css/cb417f0587918f85.css","static/chunks/pages/data-discovery/action-center/website/[monitorId]-f66d0655897c4400.js"],"/data-discovery/action-center/website/[monitorId]/[systemId]":[s,y,t,i,k,l,"static/css/f9a2a44d3d34c904.css","static/chunks/pages/data-discovery/action-center/website/[monitorId]/[systemId]-bcfe38eebca30f8c.js"],"/data-discovery/activity":[s,t,d,I,e,"static/chunks/pages/data-discovery/activity-581d6248fcf98d17.js"],"/data-discovery/detection":[s,t,d,I,T,e,"static/chunks/pages/data-discovery/detection-2b48f7e524743b2b.js"],"/data-discovery/detection/[resourceUrn]":[s,t,d,I,T,e,"static/chunks/pages/data-discovery/detection/[resourceUrn]-ddc1c1641e1e9430.js"],"/data-discovery/discovery":[s,t,d,r,P,h,"static/chunks/pages/data-discovery/discovery-0ffec855f5df262c.js"],"/data-discovery/discovery/[resourceUrn]":[s,t,d,r,P,h,"static/chunks/pages/data-discovery/discovery/[resourceUrn]-862b67418600251e.js"],"/datamap":[s,t,n,f,G,e,"static/chunks/pages/datamap-6a030ab8c2e2b0db.js"],"/dataset":[o,n,"static/chunks/pages/dataset-85dee7e81dc4bafb.js"],"/dataset/new":[s,o,t,n,e,"static/chunks/pages/dataset/new-d4ca1f485b6e9e02.js"],"/dataset/[datasetId]":[w,"static/chunks/pages/dataset/[datasetId]-5566edf9a9d1be2d.js"],"/dataset/[datasetId]/[collectionName]":[a,w,H,v,"static/chunks/pages/dataset/[datasetId]/[collectionName]-0b008dad90b00aaa.js"],"/dataset/[datasetId]/[collectionName]/[...subfieldNames]":[a,w,H,v,"static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-6cb66f649b8ca4bf.js"],"/datastore-connection":["static/css/f89607996ad54f4b.css","static/chunks/pages/datastore-connection-f1f0affc18327033.js"],"/datastore-connection/new":[s,a,o,u,t,n,J,e,"static/chunks/pages/datastore-connection/new-912723bc86299b1a.js"],"/datastore-connection/[id]":[s,a,o,t,n,J,e,"static/chunks/pages/datastore-connection/[id]-e905e018a2cab35d.js"],"/fides-js-docs":["static/chunks/2fbcc6de-a6c61724c327e9fa.js","static/chunks/e3251fe7-5777b5d778e6fffa.js",o,"static/chunks/9911-ece086f2230e34f0.js",K,"static/css/0b4b1b65cc874774.css","static/chunks/9195-550bd50d538c5f79.js","static/chunks/pages/fides-js-docs-5235760b3e508d7d.js"],"/integrations":[s,c,a,O,t,g,Q,h,"static/chunks/pages/integrations-adfe6c5ac5b703d0.js"],"/integrations/[id]":[s,c,a,O,t,g,Q,h,"static/chunks/pages/integrations/[id]-1b94e2d769a182b2.js"],"/login":["static/chunks/pages/login-0cb0eb44bf2dd24c.js"],"/login/[provider]":["static/chunks/pages/login/[provider]-c58beef131c3a82d.js"],"/new-privacy-requests":[s,t,x,R,e,"static/chunks/pages/new-privacy-requests-f9be7080ebbb7445.js"],"/notifications":["static/chunks/pages/notifications-4ea28f6b1dd63642.js"],"/notifications/digests":[F,"static/chunks/pages/notifications/digests-6a1ded8cdde836c4.js"],"/notifications/digests/new":[F,V,"static/chunks/pages/notifications/digests/new-9b106b1d2d93985b.js"],"/notifications/digests/[id]":[F,V,"static/chunks/pages/notifications/digests/[id]-caaa8602a1d449b1.js"],"/notifications/providers":[s,t,e,"static/chunks/pages/notifications/providers-a03cbd698a23e5b3.js"],"/notifications/providers/new":[s,c,t,W,e,"static/chunks/pages/notifications/providers/new-5e83220ff1f2a250.js"],"/notifications/providers/[key]":[s,c,t,W,e,"static/chunks/pages/notifications/providers/[key]-f94e3accf9507ebf.js"],"/notifications/templates":["static/chunks/pages/notifications/templates-1621a4b87c432117.js"],"/notifications/templates/add-template":[X,"static/chunks/pages/notifications/templates/add-template-0448bb4ae8536c58.js"],"/notifications/templates/[id]":[X,"static/chunks/pages/notifications/templates/[id]-3cde574b3c8447c0.js"],"/poc/ant-components":["static/chunks/pages/poc/ant-components-e02516d9fd314528.js"],"/poc/form-experiments/AntForm":["static/chunks/pages/poc/form-experiments/AntForm-fec08bea801b4918.js"],"/poc/form-experiments/FormikAntFormItem":["static/chunks/pages/poc/form-experiments/FormikAntFormItem-d911e5fbf5a4a888.js"],"/poc/form-experiments/FormikControlled":["static/chunks/pages/poc/form-experiments/FormikControlled-91b1adcac6a57b2d.js"],"/poc/form-experiments/FormikField":["static/chunks/pages/poc/form-experiments/FormikField-de309d8813b1ebfb.js"],"/poc/form-experiments/FormikSpreadField":[Y,"static/chunks/pages/poc/form-experiments/FormikSpreadField-af097d661f6abcf4.js"],"/poc/forms":[Y,"static/chunks/pages/poc/forms-f2943c1309062284.js"],"/poc/table-migration":[i,b,"static/chunks/pages/poc/table-migration-03eda417711ae909.js"],"/privacy-requests":[s,t,n,x,R,e,"static/chunks/pages/privacy-requests-2c0ec8fed16c20ae.js"],"/privacy-requests/configure":["static/chunks/pages/privacy-requests/configure-bda7b474493e7128.js"],"/privacy-requests/configure/storage":[s,t,e,"static/chunks/pages/privacy-requests/configure/storage-ea6f78fa8b2d3f6c.js"],"/privacy-requests/[id]":[s,t,x,"static/css/05d05fc31d09638b.css","static/chunks/pages/privacy-requests/[id]-1fe486f3af832c80.js"],"/properties":[j,z,"static/chunks/pages/properties-17fd44d98f5bd5b6.js"],"/properties/add-property":[j,Z,"static/chunks/pages/properties/add-property-438084cca0d0f10d.js"],"/properties/[id]":[j,Z,"static/chunks/pages/properties/[id]-30d298a47e85709f.js"],"/reporting/datamap":[s,K,t,f,G,e,"static/chunks/pages/reporting/datamap-baf77d34a3b3bece.js"],"/sandbox/privacy-notices":["static/chunks/pages/sandbox/privacy-notices-8c80391025ca7339.js"],"/settings/about":[$,"static/chunks/pages/settings/about-6c4904c157477285.js"],"/settings/about/alpha":[$,"static/chunks/pages/settings/about/alpha-68eaac2d79133679.js"],"/settings/consent":["static/chunks/pages/settings/consent-ee8820fe0fa14c77.js"],"/settings/consent/[configuration_id]/[purpose_id]":["static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-7c19810858b708cc.js"],"/settings/custom-fields":[s,t,e,"static/chunks/pages/settings/custom-fields-1db425150dcb1b6b.js"],"/settings/custom-fields/new":[ss,"static/chunks/pages/settings/custom-fields/new-37c29ef618e9fe3c.js"],"/settings/custom-fields/[id]":[ss,"static/chunks/pages/settings/custom-fields/[id]-8eb862182f19a6c2.js"],"/settings/domain-records":["static/chunks/pages/settings/domain-records-e334b43fa5c5b1e6.js"],"/settings/domains":["static/chunks/pages/settings/domains-9d18eb5c38d85522.js"],"/settings/email-templates":["static/chunks/pages/settings/email-templates-cb937ed7c4b1e5a8.js"],"/settings/locations":[st,se,"static/chunks/pages/settings/locations-835281251f0785cd.js"],"/settings/organization":["static/chunks/pages/settings/organization-7fd050c92866938c.js"],"/settings/privacy-requests":[s,t,e,"static/chunks/pages/settings/privacy-requests-59ea66130fca0d05.js"],"/settings/regulations":[st,se,"static/chunks/pages/settings/regulations-b0fe1051d908f366.js"],"/systems":[s,t,M,e,"static/chunks/pages/systems-adc13b542e10a37d.js"],"/systems/configure/[id]":[s,a,u,y,t,i,f,g,l,U,"static/css/012b10627a654d5c.css","static/chunks/pages/systems/configure/[id]-0e7c7228d01290ea.js"],"/systems/configure/[id]/test-datasets":[o,n,"static/chunks/pages/systems/configure/[id]/test-datasets-f108bf5015144d2f.js"],"/taxonomy":["static/chunks/678d4732-50255cc09048e643.js",s,c,"static/chunks/1533-84e250d1f26e6d7d.js",t,L,"static/css/3d6582469f7d56e0.css","static/chunks/pages/taxonomy-23dd250da26511c5.js"],"/user-management":[_,"static/chunks/pages/user-management-6b88ca3e02ee67c9.js"],"/user-management/new":[_,sc,"static/chunks/pages/user-management/new-7dce2916cc589c54.js"],"/user-management/profile/[id]":[_,sc,"static/chunks/pages/user-management/profile/[id]-aed30fb22ae7c9ec.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/datastore","/data-discovery/action-center/datastore/[monitorId]","/data-discovery/action-center/website","/data-discovery/action-center/website/[monitorId]","/data-discovery/action-center/website/[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]","/new-privacy-requests","/notifications","/notifications/digests","/notifications/digests/new","/notifications/digests/[id]","/notifications/providers","/notifications/providers/new","/notifications/providers/[key]","/notifications/templates","/notifications/templates/add-template","/notifications/templates/[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","/sandbox/privacy-notices","/settings/about","/settings/about/alpha","/settings/consent","/settings/consent/[configuration_id]/[purpose_id]","/settings/custom-fields","/settings/custom-fields/new","/settings/custom-fields/[id]","/settings/domain-records","/settings/domains","/settings/email-templates","/settings/locations","/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-e01ee730c8ad9ece.js","static/chunks/7245-686665c197b58e68.js","static/css/14ba79c49597d37a.css","static/chunks/3662-f6a1ddca5ee42076.js","static/chunks/454-d5c2c84f1a14e4f1.js","static/chunks/401-fe8db8b5d8f600de.js","static/chunks/1840-5bbe6d878ed73fb4.js","static/chunks/4817-d29f40d4ce729f37.js","static/chunks/6527-0eed08abe252a918.js","static/chunks/6372-a8d0f08dac1ebd0e.js","static/chunks/9682-da69ac5d06f281da.js","static/chunks/5277-e8a036319456127f.js","static/chunks/7218-d297a4a06f924b09.js","static/chunks/8939-4925751c57c51f87.js","static/chunks/3923-44255a63d6d80ff5.js","static/chunks/6084-82e2df433fe5ba85.js","static/chunks/2040-fe1a06d82c0413f1.js","static/chunks/7059-12be23a345a94c1e.js","static/css/a1800714b486e230.css","static/chunks/6344-3e21444374f8059f.js","static/chunks/6780-3db5133c1f4c6f1e.js","static/css/d2d4e9a6923e6730.css","static/chunks/5724-1e40975cefa405f0.js","static/chunks/5487-8dedd1ca94fbba54.js","static/chunks/3655-93ecd09f1cb9dbef.js","static/chunks/8212-b9e8295ca883c9f8.js","static/chunks/7476-a43c046c24de37cc.js","static/chunks/7079-6e6efc3396ff1ebb.js","static/chunks/796-e83ace3c6ab99ac7.js","static/chunks/6853-1adbdf6418ec3d62.js","static/chunks/9014-eeae6f581158e645.js","static/chunks/1817-508b16628e8eb225.js","static/chunks/3615-5e2d062d684b8fa1.js","static/chunks/6954-aa0c60ee1092be8e.js","static/chunks/5783-6055edba275155ca.js","static/chunks/9330-e519adec48222d45.js","static/css/4861ca3e088f2d05.css","static/chunks/9341-bfc0e59bcc56c604.js","static/chunks/9965-56c5e4fc9cd3b3a5.js","static/chunks/2397-40b8db1cb2f23e2a.js","static/chunks/9046-e4daf28840a69fd6.js","static/chunks/5258-4672eae0656430f9.js","static/chunks/549-6e2442db533a711e.js","static/chunks/6362-12e3fd23130ccf15.js","static/chunks/3214-90ce0a366b0f461a.js","static/chunks/9450-b7b7bb1d755ecf57.js","static/chunks/4277-13bcf4516326d474.js","static/chunks/7654-716cf37a020b3d11.js","static/chunks/4496-bed72bd5639075be.js","static/chunks/3377-eb5cd82b3ee6ab0c.js","static/chunks/7630-c654c61ba98d8c74.js","static/chunks/2921-b10bbc3a9104933b.js","static/chunks/5185-b2ac9fecc00b67e7.js","static/chunks/1115-0da062111df309bf.js","static/chunks/5643-55d758444a8d7162.js","static/chunks/9826-657652d55936a8c6.js","static/css/10994e916bc9a00a.css","static/chunks/3696-6db05a35ae806825.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -1 +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(98227),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(98227),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(98227),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(98227),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"}),"."]})]})]})}}}]);
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(98227),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(98227),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(98227),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(98227),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:a.Ky[n].label||(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"}),"."]})]})]})}}}]);