ethyca-fides 2.73.0rc3__py2.py3-none-any.whl → 2.73.1b0__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 (258) hide show
  1. {ethyca_fides-2.73.0rc3.dist-info → ethyca_fides-2.73.1b0.dist-info}/METADATA +1 -1
  2. {ethyca_fides-2.73.0rc3.dist-info → ethyca_fides-2.73.1b0.dist-info}/RECORD +251 -247
  3. fides/_version.py +3 -3
  4. fides/api/alembic/alembic.ini +5 -1
  5. fides/api/alembic/migrations/env.py +7 -1
  6. fides/api/alembic/migrations/versions/xx_2025_10_17_1603_5093e92e2a5a_add_consent_data_v3_to_the_database.py +72 -0
  7. fides/api/api/v1/endpoints/privacy_request_endpoints.py +27 -0
  8. fides/api/db/database.py +33 -2
  9. fides/api/service/connectors/query_configs/saas_query_config.py +4 -1
  10. fides/api/service/connectors/saas_connector.py +24 -10
  11. fides/common/api/v1/urn_registry.py +1 -0
  12. fides/service/privacy_request/privacy_request_service.py +96 -38
  13. fides/ui-build/static/admin/404.html +1 -1
  14. fides/ui-build/static/admin/_next/static/XSgYbMHjEskI5VguCfcBR/_buildManifest.js +1 -0
  15. fides/ui-build/static/admin/_next/static/chunks/{1099-fa8b82f521b23cce.js → 1099-31f9d973bc287df8.js} +1 -1
  16. fides/ui-build/static/admin/_next/static/chunks/{1115-d7ce851b36722c41.js → 1115-26393b586775ea29.js} +1 -1
  17. fides/ui-build/static/admin/_next/static/chunks/{1437-9dd64c20d38667df.js → 1437-f0a5939b876d9c17.js} +1 -1
  18. fides/ui-build/static/admin/_next/static/chunks/{155-1c80b19f58f44a0c.js → 155-ac6ad9b8dcca4838.js} +1 -1
  19. fides/ui-build/static/admin/_next/static/chunks/{1817-0de0312294019817.js → 1817-e6bc6adb2c7fa009.js} +1 -1
  20. fides/ui-build/static/admin/_next/static/chunks/{1975.6ca0e76b5a3d1955.js → 1975.afe8cad52f904fcf.js} +1 -1
  21. fides/ui-build/static/admin/_next/static/chunks/{2040-a18cc21821e2d121.js → 2040-7c4bf37c65dd7efa.js} +1 -1
  22. fides/ui-build/static/admin/_next/static/chunks/{2397-16820a09e8ebfe33.js → 2397-d015b0f3da9292ea.js} +1 -1
  23. fides/ui-build/static/admin/_next/static/chunks/{2921-a5dac2eacdcc32ff.js → 2921-34a43f2f8f5e5e69.js} +1 -1
  24. fides/ui-build/static/admin/_next/static/chunks/{3377-c2c9eb177bec8719.js → 3377-988ac2f3a2e8d5d4.js} +1 -1
  25. fides/ui-build/static/admin/_next/static/chunks/{3696-21e3dec6c2023875.js → 3696-06bce0f3d97a4253.js} +1 -1
  26. fides/ui-build/static/admin/_next/static/chunks/{3700-a2903cd95b8a27cb.js → 3700-33ae8d975461a592.js} +1 -1
  27. fides/ui-build/static/admin/_next/static/chunks/{3772-bb84842df51d3f3f.js → 3772-9f1713f9d5f97a10.js} +1 -1
  28. fides/ui-build/static/admin/_next/static/chunks/{3873-d759bbe7137ae8c2.js → 3873-a20fdd3e4dc02037.js} +1 -1
  29. fides/ui-build/static/admin/_next/static/chunks/{3923-7f0aa36c9e09cedf.js → 3923-724809b7b01193c5.js} +1 -1
  30. fides/ui-build/static/admin/_next/static/chunks/{401-874303feb3899562.js → 401-7c345d019bb9bcbd.js} +1 -1
  31. fides/ui-build/static/admin/_next/static/chunks/{4496-903c81292ffd8f91.js → 4496-bad79edfbd60c0aa.js} +1 -1
  32. fides/ui-build/static/admin/_next/static/chunks/{4817-d0cc100f259b3c2e.js → 4817-1f3e6ea38625d8d5.js} +1 -1
  33. fides/ui-build/static/admin/_next/static/chunks/{5185-fc171b6acce9f915.js → 5185-950138b6e2ea9189.js} +1 -1
  34. fides/ui-build/static/admin/_next/static/chunks/{5258-cf0d2c4c4d55a94b.js → 5258-99ddc37f9293e654.js} +1 -1
  35. fides/ui-build/static/admin/_next/static/chunks/{5279-8637d735471ec7f1.js → 5279-a5ad59b09569d4a6.js} +1 -1
  36. fides/ui-build/static/admin/_next/static/chunks/{549-2d9bde37e5fe13eb.js → 549-28537a6de666944b.js} +1 -1
  37. fides/ui-build/static/admin/_next/static/chunks/{5643-48a5e0ad8b9fc3f7.js → 5643-3f88087bcb270f9d.js} +1 -1
  38. fides/ui-build/static/admin/_next/static/chunks/{5783-63912bab7f80b0f8.js → 5783-e4683535810bf833.js} +1 -1
  39. fides/ui-build/static/admin/_next/static/chunks/{6277-ec0e3fa4e4614098.js → 6277-0948f689ad31baf5.js} +1 -1
  40. fides/ui-build/static/admin/_next/static/chunks/{6315-79a1506e01f2f92b.js → 6315-14862cf3c0926cc4.js} +1 -1
  41. fides/ui-build/static/admin/_next/static/chunks/{6853-c348f6e95f987cbf.js → 6853-3545785c1264ac62.js} +1 -1
  42. fides/ui-build/static/admin/_next/static/chunks/{6954-c44ac4e70e777c2f.js → 6954-750d97672d7f236c.js} +1 -1
  43. fides/ui-build/static/admin/_next/static/chunks/7059-5bd586186ec0b048.js +1 -0
  44. fides/ui-build/static/admin/_next/static/chunks/{7245-120f536e09decb85.js → 7245-10e52bfd2268d1ea.js} +1 -1
  45. fides/ui-build/static/admin/_next/static/chunks/{7476-4234fb244676ec13.js → 7476-a0cb2b5987d5f06b.js} +1 -1
  46. fides/ui-build/static/admin/_next/static/chunks/{7488-2db0992474f8056e.js → 7488-a3181357c4cce471.js} +1 -1
  47. fides/ui-build/static/admin/_next/static/chunks/{7630-d7bd74d0cfdb22df.js → 7630-a11610c2b31ab2ca.js} +1 -1
  48. fides/ui-build/static/admin/_next/static/chunks/{7773-6dce6187fe2c6984.js → 7773-9ae233109bc64ec2.js} +1 -1
  49. fides/ui-build/static/admin/_next/static/chunks/{796-fae64888b8b2f369.js → 796-e36d610066135f8c.js} +1 -1
  50. fides/ui-build/static/admin/_next/static/chunks/{8011-6e40c969c9fa7d35.js → 8011-da0efcd90c1af2f9.js} +1 -1
  51. fides/ui-build/static/admin/_next/static/chunks/{8212-18d8da0f9208f978.js → 8212-4e17ad3e2b18b1b2.js} +1 -1
  52. fides/ui-build/static/admin/_next/static/chunks/{8373-24379b7d98e6922e.js → 8373-eddc22623b904f77.js} +1 -1
  53. fides/ui-build/static/admin/_next/static/chunks/{9046-6428eac9f38b3886.js → 9046-37cc2a63e11821cf.js} +1 -1
  54. fides/ui-build/static/admin/_next/static/chunks/{9330-540a113903cb3c28.js → 9330-a40d1db55b2a3b38.js} +1 -1
  55. fides/ui-build/static/admin/_next/static/chunks/{9676.704cc210f59d0083.js → 9676.7d029a5383595b69.js} +1 -1
  56. fides/ui-build/static/admin/_next/static/chunks/{9682-a3b2fb1a2df1c948.js → 9682-095307ea3955935a.js} +1 -1
  57. fides/ui-build/static/admin/_next/static/chunks/{9826-aecc5ddec86989dc.js → 9826-a737a9956c1d0905.js} +1 -1
  58. fides/ui-build/static/admin/_next/static/chunks/{9899-303921e3d0697960.js → 9899-977da69f7dcc79a4.js} +1 -1
  59. fides/ui-build/static/admin/_next/static/chunks/{9965-6906ffdaef0f0d69.js → 9965-f175f3cbf6c01945.js} +1 -1
  60. fides/ui-build/static/admin/_next/static/chunks/pages/{404-c31cef0ce3fbeebf.js → 404-eb019192ce498f32.js} +1 -1
  61. fides/ui-build/static/admin/_next/static/chunks/pages/{_app-527b536ec8d40054.js → _app-0390fd020ce63363.js} +62 -62
  62. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{manual-a5865f42aafbe1f8.js → manual-7081e0e49f67716c.js} +1 -1
  63. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-f706664770dd3e7f.js → multiple-a188f84239f4b2a8.js} +1 -1
  64. fides/ui-build/static/admin/_next/static/chunks/pages/{add-systems-3f0d8698f01aabc5.js → add-systems-4fa95c55c0d9a9fa.js} +1 -1
  65. fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-fcd031b2b775e4f3.js → add-vendors-4f9cf087fcee87e6.js} +1 -1
  66. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{configure-0bd2eb0110873c4d.js → configure-9af75caefc74eaca.js} +1 -1
  67. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-0dd17c74a6cc17ff.js → [id]-1b02a4991201b7e4.js} +1 -1
  68. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-experience-ae8dff75e1c6c413.js → privacy-experience-a218f663656c1c1f.js} +1 -1
  69. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-84ba8b9947b9af0a.js → [id]-8c164c4b8310214e.js} +1 -1
  70. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-f03d1d0df4661a33.js → new-db789002d84c8829.js} +1 -1
  71. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-notices-5a553b4bdbf85aa9.js → privacy-notices-1f8fd945fbc47ddf.js} +1 -1
  72. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-5cba88e6839a087d.js → properties-5cba30eba1e97e56.js} +1 -1
  73. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{reporting-f2690c381c1d1a52.js → reporting-c84cb8f86e537d05.js} +1 -1
  74. fides/ui-build/static/admin/_next/static/chunks/pages/{consent-289d21aa6c42828b.js → consent-614af0a2c2ba966c.js} +1 -1
  75. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-cb56d56b9d918682.js → [projectUrn]-d60761c20382b259.js} +1 -1
  76. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{projects-ccb66ba6d1ad93fc.js → projects-f4f4a8d135573e7d.js} +1 -1
  77. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{resources-ecb2d925d75dfe1e.js → resources-aed94957009eb3fd.js} +1 -1
  78. fides/ui-build/static/admin/_next/static/chunks/pages/{data-catalog-75403467491a251b.js → data-catalog-00fde32bfe883f11.js} +1 -1
  79. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/datastore/[monitorId]-40b499229d5c2092.js +1 -0
  80. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/website/[monitorId]/{[systemId]-71cf0b06b3d5a326.js → [systemId]-3f0665ea305feb9a.js} +1 -1
  81. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/website/{[monitorId]-cc6b359fb4968bf0.js → [monitorId]-83aaac4f203d4e1e.js} +1 -1
  82. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-179cb2673fb04f82.js +1 -0
  83. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{activity-7dded115499a4a4a.js → activity-5cecc3db1b476419.js} +1 -1
  84. fides/ui-build/static/admin/_next/static/chunks/pages/{datamap-d1bb19fe4ef393dc.js → datamap-3b100c44ea9e3988.js} +1 -1
  85. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/{[...subfieldNames]-58c3f4c0b490264b.js → [...subfieldNames]-5f88280db168083e.js} +1 -1
  86. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/{[collectionName]-74290432e74fcdc5.js → [collectionName]-bfbcf19c28c794ae.js} +1 -1
  87. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{[datasetId]-8dad45f070a06609.js → [datasetId]-6fbe2b584a509226.js} +1 -1
  88. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{new-6aed6dc24c3be001.js → new-cc39d61f64dccdc8.js} +1 -1
  89. fides/ui-build/static/admin/_next/static/chunks/pages/{dataset-fdaec997c1b0753f.js → dataset-116b92a622ed7191.js} +1 -1
  90. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-63c4805e40673c60.js → [id]-f40921f41ea86a4d.js} +1 -1
  91. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-b5a49743387eecef.js → new-48204230f9b28f9a.js} +1 -1
  92. fides/ui-build/static/admin/_next/static/chunks/pages/{datastore-connection-8f0804d9a38688a4.js → datastore-connection-5c660814b844888d.js} +1 -1
  93. fides/ui-build/static/admin/_next/static/chunks/pages/{index-363b091a4d1d70ad.js → index-1be29ec61e36ca69.js} +1 -1
  94. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/{[id]-3b7f47985452e01d.js → [id]-d9fa9283fcffdbad.js} +1 -1
  95. fides/ui-build/static/admin/_next/static/chunks/pages/{integrations-b0da32fe3564c129.js → integrations-88588fd42ec4b8c6.js} +1 -1
  96. fides/ui-build/static/admin/_next/static/chunks/pages/new-privacy-requests-f5e954e44cac8c21.js +1 -0
  97. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/digests/{[id]-0e4e4e7110362022.js → [id]-aa358be796271bf9.js} +1 -1
  98. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/digests/{new-2e15f6272e9aaeb6.js → new-09b57c415163db68.js} +1 -1
  99. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/{digests-65626dfcfacdc605.js → digests-fc9c9c88e86d73ec.js} +1 -1
  100. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/providers/{[key]-768c4e2f6b05304c.js → [key]-720cde29f81db47f.js} +1 -1
  101. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/providers/{new-2d57a70e4d32e651.js → new-3668866076b53016.js} +1 -1
  102. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/{providers-83f78354fa34bffe.js → providers-617d0754570a09e8.js} +1 -1
  103. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates/{[id]-1b31764f520fbbc5.js → [id]-8063dceb32310c85.js} +1 -1
  104. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates/{add-template-4c74456b6677bf07.js → add-template-4931c70bee62232f.js} +1 -1
  105. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/{templates-5deb80abd6156f7f.js → templates-e57aba990f23b454.js} +1 -1
  106. fides/ui-build/static/admin/_next/static/chunks/pages/{notifications-8d8716dda9a6f277.js → notifications-93af719dab3bd053.js} +1 -1
  107. fides/ui-build/static/admin/_next/static/chunks/pages/poc/{ant-components-52b1572442a20ab4.js → ant-components-9cfb469de7b4aeab.js} +1 -1
  108. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{AntForm-a0437ba647d59799.js → AntForm-e715cc654fb6a5cd.js} +1 -1
  109. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikAntFormItem-87285c544450ec46.js → FormikAntFormItem-72ae299bcb6adae6.js} +1 -1
  110. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikControlled-57997dbd451a6eed.js → FormikControlled-2337f8c81a766eb0.js} +1 -1
  111. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikField-65009783e0404153.js → FormikField-0af454f55494f6fa.js} +1 -1
  112. fides/ui-build/static/admin/_next/static/chunks/pages/poc/{forms-eafef007c179340f.js → forms-d1b90ffa996fbd89.js} +1 -1
  113. fides/ui-build/static/admin/_next/static/chunks/pages/poc/{table-migration-7933a824a45d0ee6.js → table-migration-19724b9e0581b96d.js} +1 -1
  114. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{[id]-27c56466eab98b15.js → [id]-0f0f63b84617792e.js} +1 -1
  115. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/{storage-16f77a6291bb02fe.js → storage-696222c67a086ddd.js} +1 -1
  116. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-d2b3293ab496f7bc.js → configure-fa82cffba448ccd8.js} +1 -1
  117. fides/ui-build/static/admin/_next/static/chunks/pages/{privacy-requests-af4f48d10926e4a4.js → privacy-requests-6d9569f5c2da2aa4.js} +1 -1
  118. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-dd3c3d780533a9c2.js → [id]-bc1c289647e52c48.js} +1 -1
  119. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-d1af260c3ddbf68b.js → add-property-cbfaa23d96f5ed0b.js} +1 -1
  120. fides/ui-build/static/admin/_next/static/chunks/pages/{properties-9bb7fe3577402008.js → properties-a15a3fd0ed88f39c.js} +1 -1
  121. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/{datamap-33ce744d07982c0f.js → datamap-3d499c861a0c2913.js} +1 -1
  122. fides/ui-build/static/admin/_next/static/chunks/pages/sandbox/privacy-notices-afe921f6e2a526fb.js +1 -0
  123. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/{[purpose_id]-35626e9d8e0a3ca2.js → [purpose_id]-971b628eec9d84d3.js} +1 -1
  124. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{consent-39b5142099ed8705.js → consent-1702f4d95e93c1a2.js} +1 -1
  125. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{custom-fields-64c638ea33bb3ff9.js → custom-fields-181b9b545ad38141.js} +1 -1
  126. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-3843fbaf5bc433f1.js → domain-records-3b87002753b23ca5.js} +1 -1
  127. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domains-ea549fabce96fde4.js → domains-aacd9d0ad47082d4.js} +1 -1
  128. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{email-templates-0fe318a9dfc1f593.js → email-templates-3cdd0b39901190ba.js} +1 -1
  129. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-c42c856510cad6fd.js → locations-5763dd57a6e15292.js} +1 -1
  130. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{organization-e4c552a5797c3fa5.js → organization-2d98e0170bc33490.js} +1 -1
  131. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{privacy-requests-2790d31b59cc3c74.js → privacy-requests-084a2b4431d35322.js} +1 -1
  132. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-3c608512c415fca4.js → regulations-b7c0d3b1b754e70f.js} +1 -1
  133. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/{test-datasets-e0e1a5142e41e9f2.js → test-datasets-7e62b3024a7c668c.js} +1 -1
  134. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-9e815520adb3e580.js → [id]-59c89489fa32a4cb.js} +1 -1
  135. fides/ui-build/static/admin/_next/static/chunks/pages/{systems-d8ce572ad07ed28c.js → systems-1db858c1a3d0fcd7.js} +1 -1
  136. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-3248059d6f6060e6.js +1 -0
  137. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-75d96422db98196f.js → [id]-0f66bab70f303524.js} +1 -1
  138. fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-598f98fd88505e1e.js → user-management-f172e96aed81651b.js} +1 -1
  139. fides/ui-build/static/admin/_next/static/chunks/{webpack-0a3b419ab682b8f9.js → webpack-c2c11809187b9f84.js} +1 -1
  140. fides/ui-build/static/admin/_next/static/css/598d88c40c789cbd.css +1 -0
  141. fides/ui-build/static/admin/_next/static/css/d41a048a166d50e4.css +1 -0
  142. fides/ui-build/static/admin/add-systems/manual.html +1 -1
  143. fides/ui-build/static/admin/add-systems/multiple.html +1 -1
  144. fides/ui-build/static/admin/add-systems.html +1 -1
  145. fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
  146. fides/ui-build/static/admin/consent/configure.html +1 -1
  147. fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
  148. fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
  149. fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
  150. fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
  151. fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
  152. fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
  153. fides/ui-build/static/admin/consent/properties.html +1 -1
  154. fides/ui-build/static/admin/consent/reporting.html +1 -1
  155. fides/ui-build/static/admin/consent.html +1 -1
  156. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
  157. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
  158. fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
  159. fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
  160. fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
  161. fides/ui-build/static/admin/data-catalog.html +1 -1
  162. fides/ui-build/static/admin/data-discovery/action-center/datastore/[monitorId].html +1 -1
  163. fides/ui-build/static/admin/data-discovery/action-center/datastore.html +1 -1
  164. fides/ui-build/static/admin/data-discovery/action-center/website/[monitorId]/[systemId].html +1 -1
  165. fides/ui-build/static/admin/data-discovery/action-center/website/[monitorId].html +1 -1
  166. fides/ui-build/static/admin/data-discovery/action-center/website.html +1 -1
  167. fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
  168. fides/ui-build/static/admin/data-discovery/activity.html +1 -1
  169. fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
  170. fides/ui-build/static/admin/data-discovery/detection.html +1 -1
  171. fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
  172. fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
  173. fides/ui-build/static/admin/datamap.html +1 -1
  174. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
  175. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
  176. fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
  177. fides/ui-build/static/admin/dataset/new.html +1 -1
  178. fides/ui-build/static/admin/dataset.html +1 -1
  179. fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
  180. fides/ui-build/static/admin/datastore-connection/new.html +1 -1
  181. fides/ui-build/static/admin/datastore-connection.html +1 -1
  182. fides/ui-build/static/admin/index.html +1 -1
  183. fides/ui-build/static/admin/integrations/[id].html +1 -1
  184. fides/ui-build/static/admin/integrations.html +1 -1
  185. fides/ui-build/static/admin/login/[provider].html +1 -1
  186. fides/ui-build/static/admin/login.html +1 -1
  187. fides/ui-build/static/admin/new-privacy-requests.html +1 -1
  188. fides/ui-build/static/admin/notifications/digests/[id].html +1 -1
  189. fides/ui-build/static/admin/notifications/digests/new.html +1 -1
  190. fides/ui-build/static/admin/notifications/digests.html +1 -1
  191. fides/ui-build/static/admin/notifications/providers/[key].html +1 -1
  192. fides/ui-build/static/admin/notifications/providers/new.html +1 -1
  193. fides/ui-build/static/admin/notifications/providers.html +1 -1
  194. fides/ui-build/static/admin/notifications/templates/[id].html +1 -1
  195. fides/ui-build/static/admin/notifications/templates/add-template.html +1 -1
  196. fides/ui-build/static/admin/notifications/templates.html +1 -1
  197. fides/ui-build/static/admin/notifications.html +1 -1
  198. fides/ui-build/static/admin/poc/ant-components.html +1 -1
  199. fides/ui-build/static/admin/poc/form-experiments/AntForm.html +1 -1
  200. fides/ui-build/static/admin/poc/form-experiments/FormikAntFormItem.html +1 -1
  201. fides/ui-build/static/admin/poc/form-experiments/FormikControlled.html +1 -1
  202. fides/ui-build/static/admin/poc/form-experiments/FormikField.html +1 -1
  203. fides/ui-build/static/admin/poc/form-experiments/FormikSpreadField.html +1 -1
  204. fides/ui-build/static/admin/poc/forms.html +1 -1
  205. fides/ui-build/static/admin/poc/table-migration.html +1 -1
  206. fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
  207. fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
  208. fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
  209. fides/ui-build/static/admin/privacy-requests.html +1 -1
  210. fides/ui-build/static/admin/properties/[id].html +1 -1
  211. fides/ui-build/static/admin/properties/add-property.html +1 -1
  212. fides/ui-build/static/admin/properties.html +1 -1
  213. fides/ui-build/static/admin/reporting/datamap.html +1 -1
  214. fides/ui-build/static/admin/sandbox/privacy-notices.html +1 -0
  215. fides/ui-build/static/admin/settings/about/alpha.html +1 -1
  216. fides/ui-build/static/admin/settings/about.html +1 -1
  217. fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +1 -1
  218. fides/ui-build/static/admin/settings/consent.html +1 -1
  219. fides/ui-build/static/admin/settings/custom-fields/[id].html +1 -1
  220. fides/ui-build/static/admin/settings/custom-fields/new.html +1 -1
  221. fides/ui-build/static/admin/settings/custom-fields.html +1 -1
  222. fides/ui-build/static/admin/settings/domain-records.html +1 -1
  223. fides/ui-build/static/admin/settings/domains.html +1 -1
  224. fides/ui-build/static/admin/settings/email-templates.html +1 -1
  225. fides/ui-build/static/admin/settings/locations.html +1 -1
  226. fides/ui-build/static/admin/settings/organization.html +1 -1
  227. fides/ui-build/static/admin/settings/privacy-requests.html +1 -1
  228. fides/ui-build/static/admin/settings/regulations.html +1 -1
  229. fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
  230. fides/ui-build/static/admin/systems/configure/[id].html +1 -1
  231. fides/ui-build/static/admin/systems.html +1 -1
  232. fides/ui-build/static/admin/taxonomy.html +1 -1
  233. fides/ui-build/static/admin/user-management/new.html +1 -1
  234. fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
  235. fides/ui-build/static/admin/user-management.html +1 -1
  236. fides/ui-build/static/admin/_next/static/chunks/7059-3f2641e3130b4ef8.js +0 -1
  237. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/datastore/[monitorId]-e46e017a3919f94e.js +0 -1
  238. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-cbff5db86e6951c4.js +0 -1
  239. fides/ui-build/static/admin/_next/static/chunks/pages/new-privacy-requests-d1152cbc3c1bbbbb.js +0 -1
  240. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-0cae23a599830708.js +0 -1
  241. fides/ui-build/static/admin/_next/static/css/919f947a862d28cd.css +0 -1
  242. fides/ui-build/static/admin/_next/static/iSH8D4nDpVZCfB-o7en4n/_buildManifest.js +0 -1
  243. {ethyca_fides-2.73.0rc3.dist-info → ethyca_fides-2.73.1b0.dist-info}/WHEEL +0 -0
  244. {ethyca_fides-2.73.0rc3.dist-info → ethyca_fides-2.73.1b0.dist-info}/entry_points.txt +0 -0
  245. {ethyca_fides-2.73.0rc3.dist-info → ethyca_fides-2.73.1b0.dist-info}/licenses/LICENSE +0 -0
  246. {ethyca_fides-2.73.0rc3.dist-info → ethyca_fides-2.73.1b0.dist-info}/top_level.txt +0 -0
  247. /fides/ui-build/static/admin/_next/static/{iSH8D4nDpVZCfB-o7en4n → XSgYbMHjEskI5VguCfcBR}/_ssgManifest.js +0 -0
  248. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-5d133ec635cd716c.js → [resourceUrn]-32bd7a7c990e5bf6.js} +0 -0
  249. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-9d8efe43b69a285d.js → [resourceUrn]-b07a0707f8c2ec0d.js} +0 -0
  250. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/{datastore-1b0ed3b3ceedfd94.js → datastore-4498881c26f1458d.js} +0 -0
  251. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/{website-60ad14c879b4fe27.js → website-5b3e0009d442bc3f.js} +0 -0
  252. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-2df143c1e1f79040.js → [resourceUrn]-b072cf25aefc98f6.js} +0 -0
  253. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-e37c800313e2a422.js → detection-fd3e8817d8e6dee4.js} +0 -0
  254. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-7022ca5fa834b633.js → [resourceUrn]-146624cf59792bf7.js} +0 -0
  255. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-6178e22397f20f92.js → discovery-9695cc9c85592ec5.js} +0 -0
  256. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields/{[id]-b5140de4431a7ff5.js → [id]-8634aae3259def37.js} +0 -0
  257. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields/{new-dcc16459e754fbbd.js → new-2d9dcca17965dc57.js} +0 -0
  258. /fides/ui-build/static/admin/_next/static/chunks/pages/user-management/{new-bc1568bb47d198a9.js → new-7dce2916cc589c54.js} +0 -0
fides/_version.py CHANGED
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2025-10-24T14:45:37-0600",
11
+ "date": "2025-10-29T14:53:56+0000",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "36280ec0bca982dd677b4573725c1139dd563b0e",
15
- "version": "2.73.0rc3"
14
+ "full-revisionid": "57b3f16ecdaaf426788e23d2f57f024bd546991b",
15
+ "version": "2.73.1b0"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -5,7 +5,11 @@
5
5
  script_location = migrations
6
6
 
7
7
  # template used to generate migration files
8
- # file_template = %%(rev)s_%%(slug)s
8
+ # Adding the prefix xx_ make all new migrations (after changing the file template to date-based)
9
+ # show up below the existing mirations when files are sorted
10
+ file_template = xx_%%(year)d_%%(month).2d_%%(day).2d_%%(hour).2d%%(minute).2d_%%(rev)s_%%(slug)s
11
+
12
+
9
13
 
10
14
  # sys.path path, will be prepended to sys.path if present.
11
15
  # defaults to the current working directory.
@@ -3,6 +3,7 @@ from logging.config import fileConfig
3
3
  from alembic import context
4
4
  from sqlalchemy import engine_from_config, pool
5
5
 
6
+ from fides.api.db.database import include_object
6
7
  from fides.api.util.logger import setup as setup_fidesapi_logger
7
8
  from fides.config import CONFIG
8
9
 
@@ -48,6 +49,7 @@ def run_migrations_offline():
48
49
  target_metadata=target_metadata,
49
50
  literal_binds=True,
50
51
  dialect_opts={"paramstyle": "named"},
52
+ include_object=include_object,
51
53
  )
52
54
 
53
55
  with context.begin_transaction():
@@ -70,7 +72,11 @@ def run_migrations_online():
70
72
  )
71
73
 
72
74
  with connectable.connect() as connection:
73
- context.configure(connection=connection, target_metadata=target_metadata)
75
+ context.configure(
76
+ connection=connection,
77
+ target_metadata=target_metadata,
78
+ include_object=include_object,
79
+ )
74
80
 
75
81
  with context.begin_transaction():
76
82
  context.run_migrations()
@@ -0,0 +1,72 @@
1
+ """Add consent data v3 to the database
2
+
3
+ Revision ID: 5093e92e2a5a
4
+ Revises: a55e12c2c2df
5
+ Create Date: 2025-10-17 16:03:37.933367
6
+
7
+ """
8
+
9
+ import sqlalchemy as sa
10
+ from alembic import op
11
+ from sqlalchemy import BigInteger, Identity
12
+ from sqlalchemy.dialects import postgresql
13
+
14
+ # revision identifiers, used by Alembic.
15
+ revision = "5093e92e2a5a"
16
+ down_revision = "a55e12c2c2df"
17
+ branch_labels = None
18
+ depends_on = None
19
+
20
+
21
+ def upgrade():
22
+ op.create_table(
23
+ "privacy_preferences",
24
+ # Use a big integer for the primary key to ensure we have enough space for all the records
25
+ # and also force the ID to be generated, never allowing it to be overridden without expressly using `OVERRIDING SYSTEM VALUE`
26
+ sa.Column(
27
+ "id",
28
+ BigInteger,
29
+ Identity(start=1, increment=1, always=True),
30
+ primary_key=True,
31
+ ),
32
+ sa.Column("search_data", postgresql.JSONB),
33
+ sa.Column("record_data", postgresql.TEXT),
34
+ # If we have a primary key we need to use a composite key because the primary key must be unique across _all_
35
+ # partitions, so we can't just use `id`, we have to use `is_latest` as well as part of the primary key. This
36
+ # should not be problematic as we will not allow for manually providing the ID so (unless someone deliberately does it)
37
+ # we should not end up with duplicate IDs having different `is_latest` values.
38
+ sa.Column(
39
+ "is_latest",
40
+ postgresql.BOOLEAN,
41
+ nullable=False,
42
+ server_default="f",
43
+ primary_key=True,
44
+ ),
45
+ sa.Column(
46
+ "created_at",
47
+ postgresql.TIMESTAMP(timezone=True),
48
+ nullable=False,
49
+ server_default=sa.text("now()"),
50
+ ),
51
+ sa.Column("updated_at", postgresql.TIMESTAMP(timezone=True), nullable=True),
52
+ postgresql_partition_by="LIST (is_latest)",
53
+ )
54
+ # Create our partition tables using _current and _historic as suffixes
55
+ op.execute(
56
+ """
57
+ CREATE TABLE privacy_preferences_current
58
+ PARTITION OF privacy_preferences
59
+ FOR VALUES IN (true);
60
+ """
61
+ )
62
+ op.execute(
63
+ """
64
+ CREATE TABLE privacy_preferences_historic
65
+ PARTITION OF privacy_preferences
66
+ FOR VALUES IN (false);
67
+ """
68
+ )
69
+
70
+
71
+ def downgrade():
72
+ op.drop_table("privacy_preferences")
@@ -144,6 +144,7 @@ from fides.common.api.v1.urn_registry import (
144
144
  PRIVACY_REQUEST_APPROVE,
145
145
  PRIVACY_REQUEST_AUTHENTICATED,
146
146
  PRIVACY_REQUEST_BATCH_EMAIL_SEND,
147
+ PRIVACY_REQUEST_BULK_FINALIZE,
147
148
  PRIVACY_REQUEST_BULK_RETRY,
148
149
  PRIVACY_REQUEST_BULK_SOFT_DELETE,
149
150
  PRIVACY_REQUEST_DENY,
@@ -1971,6 +1972,32 @@ def resume_privacy_request_from_requires_input(
1971
1972
  return privacy_request # type: ignore[return-value]
1972
1973
 
1973
1974
 
1975
+ @router.post(
1976
+ PRIVACY_REQUEST_BULK_FINALIZE,
1977
+ status_code=HTTP_200_OK,
1978
+ response_model=BulkReviewResponse,
1979
+ )
1980
+ def bulk_finalize_privacy_requests(
1981
+ *,
1982
+ client: ClientDetail = Security(
1983
+ verify_oauth_client,
1984
+ scopes=[PRIVACY_REQUEST_REVIEW],
1985
+ ),
1986
+ privacy_request_service: PrivacyRequestService = Depends(
1987
+ get_privacy_request_service
1988
+ ),
1989
+ privacy_requests: ReviewPrivacyRequestIds,
1990
+ ) -> BulkReviewResponse:
1991
+ """
1992
+ Bulk finalize privacy requests that are in requires_manual_finalization status.
1993
+ Each request will be moved from the 'requires_finalization' state to 'complete'.
1994
+ Returns an object with the list of successfully finalized privacy requests and the list of failed finalizations.
1995
+ """
1996
+ return privacy_request_service.finalize_privacy_requests(
1997
+ privacy_requests.request_ids, user_id=client.user_id
1998
+ )
1999
+
2000
+
1974
2001
  @router.post(
1975
2002
  PRIVACY_REQUEST_FINALIZE,
1976
2003
  status_code=HTTP_200_OK,
fides/api/db/database.py CHANGED
@@ -9,7 +9,9 @@ from alembic import command, script
9
9
  from alembic.config import Config
10
10
  from alembic.runtime import migration
11
11
  from loguru import logger as log
12
+ from sqlalchemy import text
12
13
  from sqlalchemy.orm import Session
14
+ from sqlalchemy.schema import SchemaItem
13
15
  from sqlalchemy_utils.functions import create_database, database_exists
14
16
  from sqlalchemy_utils.types.encrypted.encrypted_type import InvalidCiphertextError
15
17
 
@@ -20,6 +22,26 @@ from fides.api.util.errors import get_full_exception_name
20
22
 
21
23
  DatabaseHealth = Literal["healthy", "unhealthy", "needs migration"]
22
24
 
25
+ # Tables to exclude from migration auto-generation (e.g., tables without SQLAlchemy models)
26
+ EXCLUDED_TABLES = {
27
+ "privacy_preferences",
28
+ "privacy_preferences_current",
29
+ "privacy_preferences_historic",
30
+ }
31
+
32
+
33
+ def include_object(
34
+ object: SchemaItem, # pylint: disable=redefined-builtin
35
+ name: str,
36
+ type_: str,
37
+ reflected: bool,
38
+ compare_to: SchemaItem,
39
+ ) -> bool:
40
+ """Filter out excluded tables from migration comparison and auto-generation."""
41
+ if type_ == "table" and name in EXCLUDED_TABLES:
42
+ return False
43
+ return True
44
+
23
45
 
24
46
  def get_alembic_config(database_url: str) -> Config:
25
47
  """
@@ -91,6 +113,10 @@ def reset_db(database_url: str) -> None:
91
113
  log.info("Dropping tables...")
92
114
  Base.metadata.drop_all(connection)
93
115
 
116
+ log.info("Dropping excluded tables without models...")
117
+ for table_name in EXCLUDED_TABLES:
118
+ connection.execute(text(f"DROP TABLE IF EXISTS {table_name} CASCADE"))
119
+
94
120
  log.info("Dropping Alembic table...")
95
121
  migration_context = migration.MigrationContext.configure(connection)
96
122
  version = migration_context._version # pylint: disable=protected-access
@@ -151,13 +177,18 @@ def check_missing_migrations(database_url: str) -> None:
151
177
  Tries to autogenerate migrations, returns True if a migration
152
178
  was generated.
153
179
  """
154
-
155
180
  engine = get_db_engine(database_uri=database_url)
156
181
  connection = engine.connect()
157
182
 
158
- migration_context = migration.MigrationContext.configure(connection)
183
+ migration_context = migration.MigrationContext.configure(
184
+ connection, opts={"include_object": include_object}
185
+ )
159
186
  result = command.autogen.compare_metadata(migration_context, Base.metadata) # type: ignore[attr-defined]
160
187
 
161
188
  if result:
189
+ log.error("Migration needs to be generated!")
190
+ log.error("Detected the following schema differences:")
191
+ for item in result:
192
+ log.error(f" - {item}")
162
193
  raise SystemExit("Migration needs to be generated!")
163
194
  print("No migrations need to be generated.")
@@ -314,7 +314,7 @@ class SaaSQueryConfig(QueryConfig[SaaSRequestParams]):
314
314
  collection_values: Dict[str, Row],
315
315
  identity_data: Dict[str, Any],
316
316
  input_data: Optional[Dict[str, List[Any]]] = None,
317
- param_values: Dict[str, Any] = {},
317
+ param_values: Optional[Dict[str, Any]] = None,
318
318
  ) -> None:
319
319
  """
320
320
  Process param_values for update generation (erasure requests).
@@ -326,6 +326,9 @@ class SaaSQueryConfig(QueryConfig[SaaSRequestParams]):
326
326
  identity_data: Identity data for parameter resolution
327
327
  input_data: Optional upstream data from other collections
328
328
  """
329
+ if param_values is None:
330
+ param_values = {}
331
+
329
332
  for param_value in request.param_values or []:
330
333
  if param_value.references:
331
334
  # we resolve the param reference here for consistency,
@@ -277,16 +277,17 @@ class SaaSConnector(BaseConnector[AuthenticatedClient], Contextualizable):
277
277
 
278
278
  # Delegate async requests
279
279
  with get_db() as db:
280
- if async_dsr_strategy := _get_async_dsr_strategy(
281
- db, request_task, query_config, ActionType.access
282
- ):
283
-
284
- return async_dsr_strategy.async_retrieve_data(
285
- client=self.create_client(),
286
- request_task_id=request_task.id,
287
- query_config=query_config,
288
- input_data=input_data,
289
- )
280
+ # Guard clause to ensure we only run async access requests for access requests
281
+ if self.guard_access_request(policy):
282
+ if async_dsr_strategy := _get_async_dsr_strategy(
283
+ db, request_task, query_config, ActionType.access
284
+ ):
285
+ return async_dsr_strategy.async_retrieve_data(
286
+ client=self.create_client(),
287
+ request_task_id=request_task.id,
288
+ query_config=query_config,
289
+ input_data=input_data,
290
+ )
290
291
 
291
292
  rows: List[Row] = []
292
293
  for read_request in read_requests:
@@ -349,6 +350,19 @@ class SaaSConnector(BaseConnector[AuthenticatedClient], Contextualizable):
349
350
  self.unset_connector_state()
350
351
  return rows
351
352
 
353
+ def guard_access_request(self, policy: Policy) -> bool:
354
+ """
355
+ Guard clause to ensure we only run async access requests
356
+ if the access request is enabled and we are in an Access Request
357
+ """
358
+ if (
359
+ self.configuration.enabled_actions is None
360
+ or ActionType.access in self.configuration.enabled_actions
361
+ ):
362
+ if policy.get_rules_for_action(ActionType.access):
363
+ return True
364
+ return False
365
+
352
366
  def _apply_output_template(
353
367
  self,
354
368
  param_value_maps: List[Dict[str, Any]],
@@ -84,6 +84,7 @@ PRIVACY_REQUEST_BATCH_EMAIL_SEND = (
84
84
  "/privacy-request/administrate/process-awaiting-email-send"
85
85
  )
86
86
  PRIVACY_REQUEST_AUTHENTICATED = "/privacy-request/authenticated"
87
+ PRIVACY_REQUEST_BULK_FINALIZE = "/privacy-request/bulk/finalize"
87
88
  PRIVACY_REQUEST_BULK_RETRY = "/privacy-request/bulk/retry"
88
89
  PRIVACY_REQUEST_BULK_SOFT_DELETE = "/privacy-request/bulk/soft-delete"
89
90
  PRIVACY_REQUEST_DENY = "/privacy-request/administrate/deny"
@@ -78,6 +78,32 @@ class PrivacyRequestService:
78
78
  logger.info(f"Privacy request with ID {privacy_request_id} was not found.")
79
79
  return privacy_request
80
80
 
81
+ def _validate_privacy_request_for_bulk_operation(
82
+ self,
83
+ request_id: str,
84
+ ) -> PrivacyRequest:
85
+ """
86
+ Common validation logic for bulk operations.
87
+ Raises a PrivacyRequestError if the request is not found or deleted.
88
+
89
+ Returns the validated privacy request.
90
+ """
91
+ privacy_request = self.get_privacy_request(request_id)
92
+ if not privacy_request:
93
+ raise PrivacyRequestError(
94
+ f"No privacy request found with id '{request_id}'",
95
+ {"privacy_request_id": request_id},
96
+ )
97
+ if privacy_request.deleted_at is not None:
98
+ raise PrivacyRequestError(
99
+ "Cannot transition status for a deleted request",
100
+ PrivacyRequestResponse.model_validate(privacy_request).model_dump(
101
+ mode="json"
102
+ ),
103
+ )
104
+
105
+ return privacy_request
106
+
81
107
  def _validate_required_location_fields(
82
108
  self, privacy_request_data: PrivacyRequestCreate
83
109
  ) -> None:
@@ -496,26 +522,12 @@ class PrivacyRequestService:
496
522
  failed: List[BulkUpdateFailed] = []
497
523
 
498
524
  for request_id in request_ids:
499
- privacy_request = self.get_privacy_request(request_id)
500
-
501
- if not privacy_request:
502
- failed.append(
503
- BulkUpdateFailed(
504
- message=f"No privacy request found with id '{request_id}'",
505
- data={"privacy_request_id": request_id},
506
- )
507
- )
508
- continue
509
-
510
- if privacy_request.deleted_at is not None:
511
- failed.append(
512
- BulkUpdateFailed(
513
- message="Cannot transition status for a deleted request",
514
- data=PrivacyRequestResponse.model_validate(
515
- privacy_request
516
- ).model_dump(mode="json"),
517
- )
525
+ try:
526
+ privacy_request = self._validate_privacy_request_for_bulk_operation(
527
+ request_id
518
528
  )
529
+ except PrivacyRequestError as exc:
530
+ failed.append(BulkUpdateFailed(message=exc.message, data=exc.data))
519
531
  continue
520
532
 
521
533
  if privacy_request.status != PrivacyRequestStatus.pending:
@@ -582,26 +594,12 @@ class PrivacyRequestService:
582
594
  failed: List[BulkUpdateFailed] = []
583
595
 
584
596
  for request_id in request_ids:
585
- privacy_request = self.get_privacy_request(request_id)
586
-
587
- if not privacy_request:
588
- failed.append(
589
- BulkUpdateFailed(
590
- message=f"No privacy request found with id '{request_id}'",
591
- data={"privacy_request_id": request_id},
592
- )
593
- )
594
- continue
595
-
596
- if privacy_request.deleted_at is not None:
597
- failed.append(
598
- BulkUpdateFailed(
599
- message="Cannot transition status for a deleted request",
600
- data=PrivacyRequestResponse.model_validate(
601
- privacy_request
602
- ).model_dump(mode="json"),
603
- )
597
+ try:
598
+ privacy_request = self._validate_privacy_request_for_bulk_operation(
599
+ request_id
604
600
  )
601
+ except PrivacyRequestError as exc:
602
+ failed.append(BulkUpdateFailed(message=exc.message, data=exc.data))
605
603
  continue
606
604
 
607
605
  if privacy_request.status != PrivacyRequestStatus.pending:
@@ -646,6 +644,66 @@ class PrivacyRequestService:
646
644
 
647
645
  return BulkReviewResponse(succeeded=succeeded, failed=failed)
648
646
 
647
+ def finalize_privacy_requests(
648
+ self,
649
+ request_ids: List[str],
650
+ *,
651
+ user_id: Optional[str] = None,
652
+ ) -> BulkReviewResponse:
653
+ """Bulk finalize privacy requests that are in requires_manual_finalization status"""
654
+ succeeded: List[PrivacyRequest] = []
655
+ failed: List[BulkUpdateFailed] = []
656
+
657
+ for request_id in request_ids:
658
+ try:
659
+ privacy_request = self._validate_privacy_request_for_bulk_operation(
660
+ request_id
661
+ )
662
+ except PrivacyRequestError as exc:
663
+ failed.append(BulkUpdateFailed(message=exc.message, data=exc.data))
664
+ continue
665
+
666
+ if (
667
+ privacy_request.status
668
+ != PrivacyRequestStatus.requires_manual_finalization
669
+ ):
670
+ failed.append(
671
+ BulkUpdateFailed(
672
+ message=f"Cannot manually finalize privacy request: status is {privacy_request.status}, not requires_manual_finalization",
673
+ data=PrivacyRequestResponse.model_validate(
674
+ privacy_request
675
+ ).model_dump(mode="json"),
676
+ )
677
+ )
678
+ continue
679
+
680
+ try:
681
+ # Set finalized_by and finalized_at here, so the request runner service knows not to
682
+ # put the request back into the requires_finalization state.
683
+ privacy_request.finalized_at = datetime.utcnow()
684
+ privacy_request.finalized_by = user_id
685
+ privacy_request.save(db=self.db)
686
+
687
+ # Queue the privacy request for finalization
688
+ queue_privacy_request(
689
+ privacy_request_id=privacy_request.id,
690
+ from_step=CurrentStep.finalization.value,
691
+ )
692
+
693
+ succeeded.append(privacy_request)
694
+ except Exception as exc:
695
+ logger.exception(exc)
696
+ failed.append(
697
+ BulkUpdateFailed(
698
+ message="Privacy request could not be finalized",
699
+ data=PrivacyRequestResponse.model_validate(
700
+ privacy_request
701
+ ).model_dump(mode="json"),
702
+ )
703
+ )
704
+
705
+ return BulkReviewResponse(succeeded=succeeded, failed=failed)
706
+
649
707
 
650
708
  @log_context(capture_args={"privacy_request_id": LoggerContextKeys.privacy_request_id})
651
709
  def queue_privacy_request(
@@ -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/919f947a862d28cd.css" as="style"/><link rel="stylesheet" href="/_next/static/css/919f947a862d28cd.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-0a3b419ab682b8f9.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-527b536ec8d40054.js" defer=""></script><script src="/_next/static/chunks/pages/404-c31cef0ce3fbeebf.js" defer=""></script><script src="/_next/static/iSH8D4nDpVZCfB-o7en4n/_buildManifest.js" defer=""></script><script src="/_next/static/iSH8D4nDpVZCfB-o7en4n/_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":"iSH8D4nDpVZCfB-o7en4n","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/598d88c40c789cbd.css" as="style"/><link rel="stylesheet" href="/_next/static/css/598d88c40c789cbd.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-0390fd020ce63363.js" defer=""></script><script src="/_next/static/chunks/pages/404-eb019192ce498f32.js" defer=""></script><script src="/_next/static/XSgYbMHjEskI5VguCfcBR/_buildManifest.js" defer=""></script><script src="/_next/static/XSgYbMHjEskI5VguCfcBR/_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":"XSgYbMHjEskI5VguCfcBR","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,f,u,g,b,j,k,m,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,sa,si,sn,sd,so,sr){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":["static/css/972dc7eef106ee7c.css","static/chunks/pages/index-1be29ec61e36ca69.js"],"/404":["static/chunks/pages/404-eb019192ce498f32.js"],"/_error":["static/chunks/pages/_error-bede3a8288930dcf.js"],"/add-systems":[s,t,"static/css/dd15c278b964de80.css","static/chunks/pages/add-systems-4fa95c55c0d9a9fa.js"],"/add-systems/manual":[s,e,c,a,n,j,w,t,o,k,x,F,B,"static/css/af32fcac7a177a0e.css","static/chunks/pages/add-systems/manual-7081e0e49f67716c.js"],"/add-systems/multiple":[o,m,C,"static/chunks/pages/add-systems/multiple-a188f84239f4b2a8.js"],"/consent":["static/chunks/pages/consent-614af0a2c2ba966c.js"],"/consent/configure":[o,m,"static/chunks/pages/consent/configure-9af75caefc74eaca.js"],"/consent/configure/add-vendors":[o,m,C,"static/chunks/pages/consent/configure/add-vendors-4f9cf087fcee87e6.js"],"/consent/privacy-experience":[j,z,"static/chunks/pages/consent/privacy-experience-a218f663656c1c1f.js"],"/consent/privacy-experience/new":[e,d,h,r,y,D,"static/chunks/pages/consent/privacy-experience/new-a5e738a234dadc7e.js"],"/consent/privacy-experience/[id]":[e,d,h,r,y,D,"static/chunks/pages/consent/privacy-experience/[id]-1b02a4991201b7e4.js"],"/consent/privacy-notices":[z,"static/chunks/pages/consent/privacy-notices-1f8fd945fbc47ddf.js"],"/consent/privacy-notices/new":[e,d,h,r,y,E,"static/chunks/pages/consent/privacy-notices/new-db789002d84c8829.js"],"/consent/privacy-notices/[id]":[e,d,h,r,y,E,"static/chunks/pages/consent/privacy-notices/[id]-8c164c4b8310214e.js"],"/consent/properties":[l,L,"static/chunks/pages/consent/properties-5cba30eba1e97e56.js"],"/consent/reporting":[s,t,i,"static/chunks/pages/consent/reporting-c84cb8f86e537d05.js"],"/data-catalog":[e,c,a,"static/css/95ac327e5d70148d.css","static/chunks/pages/data-catalog-00fde32bfe883f11.js"],"/data-catalog/[systemId]/projects":[e,c,a,u,g,_,"static/chunks/pages/data-catalog/[systemId]/projects-f4f4a8d135573e7d.js"],"/data-catalog/[systemId]/projects/[projectUrn]":[u,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-d60761c20382b259.js"],"/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]":[s,e,c,a,t,u,g,M,T,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]-32bd7a7c990e5bf6.js"],"/data-catalog/[systemId]/resources":[u,"static/chunks/pages/data-catalog/[systemId]/resources-aed94957009eb3fd.js"],"/data-catalog/[systemId]/resources/[resourceUrn]":[s,e,c,a,t,u,g,M,T,"static/chunks/pages/data-catalog/[systemId]/resources/[resourceUrn]-b07a0707f8c2ec0d.js"],"/data-discovery/action-center":[s,t,v,"static/css/0fd6e0884cfcc5f3.css","static/chunks/pages/data-discovery/action-center-179cb2673fb04f82.js"],"/data-discovery/action-center/datastore":["static/chunks/pages/data-discovery/action-center/datastore-4498881c26f1458d.js"],"/data-discovery/action-center/datastore/[monitorId]":[s,e,c,a,t,v,"static/css/d41a048a166d50e4.css","static/chunks/pages/data-discovery/action-center/datastore/[monitorId]-40b499229d5c2092.js"],"/data-discovery/action-center/website":["static/chunks/pages/data-discovery/action-center/website-5b3e0009d442bc3f.js"],"/data-discovery/action-center/website/[monitorId]":[s,e,c,a,t,p,v,P,"static/css/cb417f0587918f85.css","static/chunks/pages/data-discovery/action-center/website/[monitorId]-83aaac4f203d4e1e.js"],"/data-discovery/action-center/website/[monitorId]/[systemId]":[s,e,c,a,w,t,o,v,x,"static/css/f9a2a44d3d34c904.css","static/chunks/pages/data-discovery/action-center/website/[monitorId]/[systemId]-3f0665ea305feb9a.js"],"/data-discovery/activity":[s,t,p,U,i,"static/chunks/pages/data-discovery/activity-5cecc3db1b476419.js"],"/data-discovery/detection":[s,t,p,U,G,i,"static/chunks/pages/data-discovery/detection-fd3e8817d8e6dee4.js"],"/data-discovery/detection/[resourceUrn]":[s,t,p,U,G,i,"static/chunks/pages/data-discovery/detection/[resourceUrn]-b072cf25aefc98f6.js"],"/data-discovery/discovery":[s,e,c,a,t,p,g,H,I,"static/chunks/pages/data-discovery/discovery-9695cc9c85592ec5.js"],"/data-discovery/discovery/[resourceUrn]":[s,e,c,a,t,p,g,H,I,"static/chunks/pages/data-discovery/discovery/[resourceUrn]-146624cf59792bf7.js"],"/datamap":[s,a,t,k,J,i,"static/chunks/pages/datamap-3b100c44ea9e3988.js"],"/dataset":[f,b,"static/chunks/pages/dataset-116b92a622ed7191.js"],"/dataset/new":[s,f,t,i,"static/chunks/pages/dataset/new-cc39d61f64dccdc8.js"],"/dataset/[datasetId]":["static/chunks/9729-fcf6ff4e3534e4a8.js",b,q,"static/chunks/pages/dataset/[datasetId]-6fbe2b584a509226.js"],"/dataset/[datasetId]/[collectionName]":[e,c,a,n,b,q,K,_,"static/chunks/pages/dataset/[datasetId]/[collectionName]-bfbcf19c28c794ae.js"],"/dataset/[datasetId]/[collectionName]/[...subfieldNames]":[e,c,a,n,b,q,K,_,"static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-5f88280db168083e.js"],"/datastore-connection":["static/css/f89607996ad54f4b.css","static/chunks/pages/datastore-connection-5c660814b844888d.js"],"/datastore-connection/new":[s,e,n,f,j,O,t,F,Q,i,"static/chunks/pages/datastore-connection/new-48204230f9b28f9a.js"],"/datastore-connection/[id]":[s,e,n,f,O,t,Q,i,"static/chunks/pages/datastore-connection/[id]-f40921f41ea86a4d.js"],"/fides-js-docs":["static/chunks/2fbcc6de-a6c61724c327e9fa.js","static/chunks/e3251fe7-5777b5d778e6fffa.js",e,c,a,n,f,"static/chunks/5619-9b50cec521203989.js",R,"static/css/0b4b1b65cc874774.css","static/chunks/5596-29a7c8322530b7cf.js","static/chunks/pages/fides-js-docs-1f4335dca5c09860.js"],"/integrations":[s,e,c,a,n,d,V,t,W,I,"static/chunks/pages/integrations-88588fd42ec4b8c6.js"],"/integrations/[id]":[s,e,c,a,n,d,V,t,r,W,I,"static/chunks/pages/integrations/[id]-d9fa9283fcffdbad.js"],"/login":["static/chunks/pages/login-0cb0eb44bf2dd24c.js"],"/login/[provider]":["static/chunks/pages/login/[provider]-c58beef131c3a82d.js"],"/new-privacy-requests":[s,e,X,t,N,Y,i,"static/chunks/pages/new-privacy-requests-f5e954e44cac8c21.js"],"/notifications":["static/chunks/pages/notifications-93af719dab3bd053.js"],"/notifications/digests":[A,"static/chunks/pages/notifications/digests-fc9c9c88e86d73ec.js"],"/notifications/digests/new":[A,Z,"static/chunks/pages/notifications/digests/new-09b57c415163db68.js"],"/notifications/digests/[id]":[A,Z,"static/chunks/pages/notifications/digests/[id]-aa358be796271bf9.js"],"/notifications/providers":[s,t,i,"static/chunks/pages/notifications/providers-617d0754570a09e8.js"],"/notifications/providers/new":[s,e,c,d,$,t,ss,i,"static/chunks/pages/notifications/providers/new-3668866076b53016.js"],"/notifications/providers/[key]":[s,e,c,d,$,t,ss,i,"static/chunks/pages/notifications/providers/[key]-720cde29f81db47f.js"],"/notifications/templates":[e,c,"static/chunks/346-aa3b88efb85f2e28.js","static/chunks/pages/notifications/templates-e57aba990f23b454.js"],"/notifications/templates/add-template":[st,"static/chunks/pages/notifications/templates/add-template-4931c70bee62232f.js"],"/notifications/templates/[id]":[st,"static/chunks/pages/notifications/templates/[id]-8063dceb32310c85.js"],"/poc/ant-components":["static/chunks/pages/poc/ant-components-9cfb469de7b4aeab.js"],"/poc/form-experiments/AntForm":["static/chunks/pages/poc/form-experiments/AntForm-e715cc654fb6a5cd.js"],"/poc/form-experiments/FormikAntFormItem":["static/chunks/pages/poc/form-experiments/FormikAntFormItem-72ae299bcb6adae6.js"],"/poc/form-experiments/FormikControlled":["static/chunks/pages/poc/form-experiments/FormikControlled-2337f8c81a766eb0.js"],"/poc/form-experiments/FormikField":["static/chunks/pages/poc/form-experiments/FormikField-0af454f55494f6fa.js"],"/poc/form-experiments/FormikSpreadField":[se,"static/chunks/pages/poc/form-experiments/FormikSpreadField-af097d661f6abcf4.js"],"/poc/forms":[se,"static/chunks/pages/poc/forms-d1b90ffa996fbd89.js"],"/poc/table-migration":[o,m,"static/chunks/pages/poc/table-migration-19724b9e0581b96d.js"],"/privacy-requests":[s,e,X,t,N,Y,i,"static/chunks/pages/privacy-requests-6d9569f5c2da2aa4.js"],"/privacy-requests/configure":["static/chunks/pages/privacy-requests/configure-fa82cffba448ccd8.js"],"/privacy-requests/configure/storage":[s,t,i,"static/chunks/pages/privacy-requests/configure/storage-696222c67a086ddd.js"],"/privacy-requests/[id]":[s,t,N,"static/css/05d05fc31d09638b.css","static/chunks/pages/privacy-requests/[id]-0f0f63b84617792e.js"],"/properties":[l,L,"static/chunks/pages/properties-a15a3fd0ed88f39c.js"],"/properties/add-property":[l,sc,"static/chunks/pages/properties/add-property-cbfaa23d96f5ed0b.js"],"/properties/[id]":[l,sc,"static/chunks/pages/properties/[id]-bc1c289647e52c48.js"],"/reporting/datamap":[s,e,c,a,R,t,k,J,i,"static/chunks/pages/reporting/datamap-3d499c861a0c2913.js"],"/sandbox/privacy-notices":["static/chunks/pages/sandbox/privacy-notices-afe921f6e2a526fb.js"],"/settings/about":[sa,"static/chunks/pages/settings/about-6c4904c157477285.js"],"/settings/about/alpha":[sa,"static/chunks/pages/settings/about/alpha-68eaac2d79133679.js"],"/settings/consent":[r,"static/chunks/pages/settings/consent-1702f4d95e93c1a2.js"],"/settings/consent/[configuration_id]/[purpose_id]":["static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-971b628eec9d84d3.js"],"/settings/custom-fields":[s,t,i,"static/chunks/pages/settings/custom-fields-181b9b545ad38141.js"],"/settings/custom-fields/new":[e,si,sn,"static/chunks/pages/settings/custom-fields/new-2d9dcca17965dc57.js"],"/settings/custom-fields/[id]":[e,si,sn,"static/chunks/pages/settings/custom-fields/[id]-8634aae3259def37.js"],"/settings/domain-records":["static/chunks/pages/settings/domain-records-3b87002753b23ca5.js"],"/settings/domains":["static/chunks/pages/settings/domains-aacd9d0ad47082d4.js"],"/settings/email-templates":["static/chunks/pages/settings/email-templates-3cdd0b39901190ba.js"],"/settings/locations":[sd,so,"static/chunks/pages/settings/locations-5763dd57a6e15292.js"],"/settings/organization":["static/chunks/pages/settings/organization-2d98e0170bc33490.js"],"/settings/privacy-requests":[s,t,i,"static/chunks/pages/settings/privacy-requests-084a2b4431d35322.js"],"/settings/regulations":[sd,so,"static/chunks/pages/settings/regulations-b7c0d3b1b754e70f.js"],"/systems":[s,e,c,a,t,P,i,"static/chunks/pages/systems-1db858c1a3d0fcd7.js"],"/systems/configure/[id]":[s,e,c,a,n,j,w,t,o,k,x,F,B,"static/css/012b10627a654d5c.css","static/chunks/pages/systems/configure/[id]-59c89489fa32a4cb.js"],"/systems/configure/[id]/test-datasets":[f,"static/chunks/pages/systems/configure/[id]/test-datasets-7e62b3024a7c668c.js"],"/taxonomy":["static/chunks/678d4732-50255cc09048e643.js",s,e,c,a,d,"static/chunks/6148-59a59d5c5925344f.js",t,b,"static/css/3d6582469f7d56e0.css","static/chunks/pages/taxonomy-3248059d6f6060e6.js"],"/user-management":[S,"static/chunks/pages/user-management-f172e96aed81651b.js"],"/user-management/new":[S,sr,"static/chunks/pages/user-management/new-7dce2916cc589c54.js"],"/user-management/profile/[id]":[S,sr,"static/chunks/pages/user-management/profile/[id]-0f66bab70f303524.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-10e52bfd2268d1ea.js","static/chunks/8765-f622a35b40a7ec63.js","static/chunks/9278-08cc704317fe535e.js","static/chunks/5163-e682273cd76a7d07.js","static/css/14ba79c49597d37a.css","static/chunks/699-8ca44b0de9fa20f0.js","static/chunks/3662-f6a1ddca5ee42076.js","static/chunks/401-7c345d019bb9bcbd.js","static/chunks/5279-a5ad59b09569d4a6.js","static/chunks/4817-1f3e6ea38625d8d5.js","static/chunks/6527-0eed08abe252a918.js","static/chunks/9682-095307ea3955935a.js","static/chunks/1099-31f9d973bc287df8.js","static/chunks/3772-9f1713f9d5f97a10.js","static/chunks/5277-e8a036319456127f.js","static/chunks/9899-977da69f7dcc79a4.js","static/chunks/3923-724809b7b01193c5.js","static/chunks/6419-11d67f7fd4e2f247.js","static/chunks/6277-0948f689ad31baf5.js","static/chunks/2040-7c4bf37c65dd7efa.js","static/chunks/7059-5bd586186ec0b048.js","static/css/a1800714b486e230.css","static/chunks/6344-ca66a6e10d128179.js","static/chunks/1437-f0a5939b876d9c17.js","static/chunks/7773-9ae233109bc64ec2.js","static/css/d2d4e9a6923e6730.css","static/chunks/6315-14862cf3c0926cc4.js","static/chunks/7488-a3181357c4cce471.js","static/chunks/8373-eddc22623b904f77.js","static/chunks/8212-4e17ad3e2b18b1b2.js","static/chunks/7476-a0cb2b5987d5f06b.js","static/chunks/3700-33ae8d975461a592.js","static/chunks/796-e36d610066135f8c.js","static/chunks/6853-3545785c1264ac62.js","static/chunks/1817-e6bc6adb2c7fa009.js","static/chunks/6954-750d97672d7f236c.js","static/chunks/5783-e4683535810bf833.js","static/chunks/9330-a40d1db55b2a3b38.js","static/css/4861ca3e088f2d05.css","static/chunks/9965-f175f3cbf6c01945.js","static/chunks/2397-d015b0f3da9292ea.js","static/chunks/9046-37cc2a63e11821cf.js","static/chunks/5258-99ddc37f9293e654.js","static/chunks/549-28537a6de666944b.js","static/chunks/1467-8808ec8836e033f9.js","static/chunks/8011-da0efcd90c1af2f9.js","static/chunks/9187-7438242f0d380bb0.js","static/chunks/1316-2606e19807c08aa5.js","static/chunks/155-ac6ad9b8dcca4838.js","static/chunks/2962-342ad1b4ab402ded.js","static/chunks/3873-a20fdd3e4dc02037.js","static/chunks/4496-bad79edfbd60c0aa.js","static/chunks/9037-453224ba3ee65b13.js","static/chunks/3377-988ac2f3a2e8d5d4.js","static/chunks/7630-a11610c2b31ab2ca.js","static/chunks/2921-34a43f2f8f5e5e69.js","static/chunks/5185-950138b6e2ea9189.js","static/chunks/1115-26393b586775ea29.js","static/chunks/3446-f40c352c43ac950c.js","static/chunks/5643-3f88087bcb270f9d.js","static/chunks/9826-a737a9956c1d0905.js","static/css/10994e916bc9a00a.css","static/chunks/3696-06bce0f3d97a4253.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1099],{56632:function(e,t,n){var i=n(89278),a=n(80068),o=n(50098);e.exports=function(e){return function(t,n,r){var s=Object(t);if(!a(t)){var l=i(n,3);t=o(t),n=function(e){return l(s[e],e,s)}}var c=e(t,n,r);return c>-1?s[l?t[c]:c]:void 0}}},64925:function(e,t,n){var i=n(56632)(n(66259));e.exports=i},66259:function(e,t,n){var i=n(95372),a=n(89278),o=n(47991),r=Math.max;e.exports=function(e,t,n){var s=null==e?0:e.length;if(!s)return -1;var l=null==n?0:o(n);return l<0&&(l=r(s+l,0)),i(e,a(t,3),l)}},94919:function(e,t,n){var i=n(91936),a=1/0;e.exports=function(e){return e?(e=i(e))===a||e===-a?(e<0?-1:1)*17976931348623157e292:e==e?e:0:0===e?e:0}},47991:function(e,t,n){var i=n(94919);e.exports=function(e){var t=i(e),n=t%1;return t==t?n?t-n:t:0}},12627:function(e,t,n){"use strict";var i=n(24246),a=n(79283),o=n(34929);t.Z=e=>{let{selectedTaxonomies:t,showDisabled:n=!1,...r}=e,{getDataCategoryDisplayNameProps:s,getDataCategories:l}=(0,o.Z)(),c=(n?l():l().filter(e=>e.active)).filter(e=>!(null==t?void 0:t.includes(e.fides_key))).map(e=>{let{name:t,primaryName:n}=s(e.fides_key);return{value:e.fides_key,name:t,primaryName:n,description:e.description||""}});return(0,i.jsx)(a.l,{options:c,...r})}},79283:function(e,t,n){"use strict";n.d(t,{l:function(){return d}});var i=n(24246),a=n(87949),o=n(72707),r=n.n(o);let s=e=>{let{data:{formattedTitle:t,description:n,name:o,primaryName:r}}=e;return(0,i.jsxs)(a.jqI,{gap:12,title:"".concat(t," - ").concat(n),children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("strong",{children:r||o}),r&&": ".concat(o)]}),(0,i.jsx)("em",{children:n})]})},l=e=>"options"in e&&Array.isArray(e.options),c=e=>({...e,className:r().option,formattedTitle:e.formattedTitle||[e.primaryName,e.name].filter(e=>e).join(": ")}),d=e=>{let{options:t,...n}=e,o=null==t?void 0:t.map(e=>l(e)?{...e,options:e.options.map(c)}:c(e));return(0,i.jsx)(a.WPr,{options:o,filterOption:(e,t)=>{var n,i;return(null==t?void 0:null===(n=t.formattedTitle)||void 0===n?void 0:n.toLowerCase().includes(e.toLowerCase()))||(null==t?void 0:null===(i=t.value)||void 0===i?void 0:i.toLowerCase().includes(e.toLowerCase()))||!1},optionFilterProp:"label",autoFocus:!0,variant:"borderless",optionRender:s,styles:{popup:{root:{minWidth:"500px"}}},className:"w-full p-0","data-testid":"taxonomy-select",...n})}},34929:function(e,t,n){"use strict";var i=n(24246),a=n(64925),o=n.n(a),r=n(27378),s=n(16134),l=n(30002),c=n(28079),d=n(57072);let u=()=>{let{isLoading:e}=(0,c.fd)(),t=(0,s.C)(c.U3),{isLoading:n}=(0,d.MO)(),i=(0,s.C)(d.qb),{isLoading:a}=(0,l.te)();return{dataUses:t,dataSubjects:(0,s.C)(l.ZL),dataCategories:i,isLoading:e||n||a}};t.Z=()=>{let{dataUses:e,dataCategories:t,dataSubjects:n,isLoading:a}=u(),s=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return e.split(".").slice(0,t).join(".")},l=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,i=t(e);if(!i)return{};let a=t(s(e,n)),o=!!i.parent_key;return{name:i.name||void 0,primaryName:o&&(null==a?void 0:a.name)!==i.name&&(null==a?void 0:a.name)||void 0}},c=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,{name:a,primaryName:o}=l(e,t,n);return a?o?(0,i.jsxs)(r.Fragment,{children:[(0,i.jsxs)("strong",{children:[o,":"]})," ",a]},e):(0,i.jsx)("strong",{children:a},e):e},d=t=>o()(e,{fides_key:t}),f=e=>o()(t,{fides_key:e}),v=e=>o()(n,{fides_key:e});return{getDataUses:()=>e,getDataUseByKey:d,getDataUseDisplayName:e=>c(e,d,1),getDataUseDisplayNameProps:e=>l(e,d,1),getDataCategories:()=>t,getDataCategoryByKey:f,getDataCategoryDisplayName:e=>c(e,f,2),getDataCategoryDisplayNameProps:e=>l(e,f,2),getDataSubjects:()=>n,getDataSubjectByKey:v,getDataSubjectDisplayName:e=>{let t=v(e);return t?t.name:e},getPrimaryKey:s,isLoading:a}}},61099:function(e,t,n){"use strict";var i=n(24246),a=n(87949),o=n(27378),r=n(12627),s=n(34929),l=n(26183),c=n(70675);t.Z=e=>{var t,n,d;let{resource:u}=e,[f,v]=(0,o.useState)(!1),{getDataCategoryDisplayName:p}=(0,s.Z)(),[g]=(0,c.NA)(),m=(null===(t=u.classifications)||void 0===t?void 0:t.length)?u.classifications[0].label:null,x=null!==(d=u.user_assigned_data_categories)&&void 0!==d?d:[],h=!m&&!(null==x?void 0:x.length),_=null===(n=u.sub_field_urns)||void 0===n?void 0:n.length,j=e=>{g({staged_resource_urn:u.urn,monitor_config_id:u.monitor_config_id,user_assigned_data_categories:[...x,e]})},y=e=>{var t;g({staged_resource_urn:u.urn,monitor_config_id:u.monitor_config_id,user_assigned_data_categories:null!==(t=null==x?void 0:x.filter(t=>t!==e))&&void 0!==t?t:[]})},b=!f&&!!x.length,w=!f&&!!m&&!x.length;return(0,i.jsxs)(l.Z,{"data-testid":"edit-category-cell",children:[h&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(a.j8w,{"data-testid":"no-classifications",color:"white",children:"None"}),!_&&(0,i.jsx)(a.j8w,{onClick:()=>v(!0),addable:!0,"data-testid":"taxonomy-add-btn","aria-label":"Add category"})]}),b&&(0,i.jsxs)(i.Fragment,{children:[x.map(e=>(0,i.jsx)(a.j8w,{"data-testid":"user-classification-".concat(e),color:"white",closable:!0,onClose:()=>y(e),closeButtonLabel:"Remove category",children:p(e)},e)),(0,i.jsx)(a.j8w,{onClick:()=>v(!0),addable:!0,"data-testid":"taxonomy-add-btn","aria-label":"Add category"})]}),w&&(0,i.jsxs)(a.j8w,{onClick:()=>v(!0),color:"white","data-testid":"classification-".concat(m),hasSparkle:!0,children:[p(m),(0,i.jsx)(a.PJP.I8b,{size:10})]}),f&&(0,i.jsx)(a.xuv,{className:"select-wrapper",position:"absolute",zIndex:10,top:"0",left:"0",width:"100%",height:"max",bgColor:"#fff",children:(0,i.jsx)(r.Z,{selectedTaxonomies:x,onChange:e=>{v(!1),j(e)},onBlur:()=>v(!1),open:!0})})]})}},26183:function(e,t,n){"use strict";var i=n(24246);n(27378),t.Z=e=>{let{children:t,className:n,...a}=e;return(0,i.jsx)("div",{className:"relative flex w-full flex-wrap items-center gap-2 overflow-x-auto py-2 ".concat(n||""),...a,children:t})}},57072:function(e,t,n){"use strict";n.d(t,{Bd:function(){return i.Bd},L5:function(){return i.L5},MO:function(){return i.MO},qb:function(){return i.qb}});var i=n(5785)},72707:function(e){e.exports={option:"TaxonomySelect_option__vY6v2"}}}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1099],{56632:function(e,t,n){var i=n(89278),a=n(80068),o=n(50098);e.exports=function(e){return function(t,n,r){var s=Object(t);if(!a(t)){var l=i(n,3);t=o(t),n=function(e){return l(s[e],e,s)}}var c=e(t,n,r);return c>-1?s[l?t[c]:c]:void 0}}},64925:function(e,t,n){var i=n(56632)(n(66259));e.exports=i},66259:function(e,t,n){var i=n(95372),a=n(89278),o=n(47991),r=Math.max;e.exports=function(e,t,n){var s=null==e?0:e.length;if(!s)return -1;var l=null==n?0:o(n);return l<0&&(l=r(s+l,0)),i(e,a(t,3),l)}},94919:function(e,t,n){var i=n(91936),a=1/0;e.exports=function(e){return e?(e=i(e))===a||e===-a?(e<0?-1:1)*17976931348623157e292:e==e?e:0:0===e?e:0}},47991:function(e,t,n){var i=n(94919);e.exports=function(e){var t=i(e),n=t%1;return t==t?n?t-n:t:0}},12627:function(e,t,n){"use strict";var i=n(24246),a=n(79283),o=n(34929);t.Z=e=>{let{selectedTaxonomies:t,showDisabled:n=!1,...r}=e,{getDataCategoryDisplayNameProps:s,getDataCategories:l}=(0,o.Z)(),c=(n?l():l().filter(e=>e.active)).filter(e=>!(null==t?void 0:t.includes(e.fides_key))).map(e=>{let{name:t,primaryName:n}=s(e.fides_key);return{value:e.fides_key,name:t,primaryName:n,description:e.description||""}});return(0,i.jsx)(a.l,{options:c,...r})}},79283:function(e,t,n){"use strict";n.d(t,{l:function(){return d}});var i=n(24246),a=n(98227),o=n(72707),r=n.n(o);let s=e=>{let{data:{formattedTitle:t,description:n,name:o,primaryName:r}}=e;return(0,i.jsxs)(a.jqI,{gap:12,title:"".concat(t," - ").concat(n),children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("strong",{children:r||o}),r&&": ".concat(o)]}),(0,i.jsx)("em",{children:n})]})},l=e=>"options"in e&&Array.isArray(e.options),c=e=>({...e,className:r().option,formattedTitle:e.formattedTitle||[e.primaryName,e.name].filter(e=>e).join(": ")}),d=e=>{let{options:t,...n}=e,o=null==t?void 0:t.map(e=>l(e)?{...e,options:e.options.map(c)}:c(e));return(0,i.jsx)(a.WPr,{options:o,filterOption:(e,t)=>{var n,i;return(null==t?void 0:null===(n=t.formattedTitle)||void 0===n?void 0:n.toLowerCase().includes(e.toLowerCase()))||(null==t?void 0:null===(i=t.value)||void 0===i?void 0:i.toLowerCase().includes(e.toLowerCase()))||!1},optionFilterProp:"label",autoFocus:!0,variant:"borderless",optionRender:s,styles:{popup:{root:{minWidth:"500px"}}},className:"w-full p-0","data-testid":"taxonomy-select",...n})}},34929:function(e,t,n){"use strict";var i=n(24246),a=n(64925),o=n.n(a),r=n(27378),s=n(16134),l=n(30002),c=n(28079),d=n(57072);let u=()=>{let{isLoading:e}=(0,c.fd)(),t=(0,s.C)(c.U3),{isLoading:n}=(0,d.MO)(),i=(0,s.C)(d.qb),{isLoading:a}=(0,l.te)();return{dataUses:t,dataSubjects:(0,s.C)(l.ZL),dataCategories:i,isLoading:e||n||a}};t.Z=()=>{let{dataUses:e,dataCategories:t,dataSubjects:n,isLoading:a}=u(),s=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return e.split(".").slice(0,t).join(".")},l=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,i=t(e);if(!i)return{};let a=t(s(e,n)),o=!!i.parent_key;return{name:i.name||void 0,primaryName:o&&(null==a?void 0:a.name)!==i.name&&(null==a?void 0:a.name)||void 0}},c=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,{name:a,primaryName:o}=l(e,t,n);return a?o?(0,i.jsxs)(r.Fragment,{children:[(0,i.jsxs)("strong",{children:[o,":"]})," ",a]},e):(0,i.jsx)("strong",{children:a},e):e},d=t=>o()(e,{fides_key:t}),f=e=>o()(t,{fides_key:e}),v=e=>o()(n,{fides_key:e});return{getDataUses:()=>e,getDataUseByKey:d,getDataUseDisplayName:e=>c(e,d,1),getDataUseDisplayNameProps:e=>l(e,d,1),getDataCategories:()=>t,getDataCategoryByKey:f,getDataCategoryDisplayName:e=>c(e,f,2),getDataCategoryDisplayNameProps:e=>l(e,f,2),getDataSubjects:()=>n,getDataSubjectByKey:v,getDataSubjectDisplayName:e=>{let t=v(e);return t?t.name:e},getPrimaryKey:s,isLoading:a}}},61099:function(e,t,n){"use strict";var i=n(24246),a=n(98227),o=n(27378),r=n(12627),s=n(34929),l=n(26183),c=n(70675);t.Z=e=>{var t,n,d;let{resource:u}=e,[f,v]=(0,o.useState)(!1),{getDataCategoryDisplayName:p}=(0,s.Z)(),[g]=(0,c.NA)(),m=(null===(t=u.classifications)||void 0===t?void 0:t.length)?u.classifications[0].label:null,x=null!==(d=u.user_assigned_data_categories)&&void 0!==d?d:[],h=!m&&!(null==x?void 0:x.length),_=null===(n=u.sub_field_urns)||void 0===n?void 0:n.length,j=e=>{g({staged_resource_urn:u.urn,monitor_config_id:u.monitor_config_id,user_assigned_data_categories:[...x,e]})},y=e=>{var t;g({staged_resource_urn:u.urn,monitor_config_id:u.monitor_config_id,user_assigned_data_categories:null!==(t=null==x?void 0:x.filter(t=>t!==e))&&void 0!==t?t:[]})},b=!f&&!!x.length,w=!f&&!!m&&!x.length;return(0,i.jsxs)(l.Z,{"data-testid":"edit-category-cell",children:[h&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(a.j8w,{"data-testid":"no-classifications",color:"white",children:"None"}),!_&&(0,i.jsx)(a.j8w,{onClick:()=>v(!0),addable:!0,"data-testid":"taxonomy-add-btn","aria-label":"Add category"})]}),b&&(0,i.jsxs)(i.Fragment,{children:[x.map(e=>(0,i.jsx)(a.j8w,{"data-testid":"user-classification-".concat(e),color:"white",closable:!0,onClose:()=>y(e),closeButtonLabel:"Remove category",children:p(e)},e)),(0,i.jsx)(a.j8w,{onClick:()=>v(!0),addable:!0,"data-testid":"taxonomy-add-btn","aria-label":"Add category"})]}),w&&(0,i.jsxs)(a.j8w,{onClick:()=>v(!0),color:"white","data-testid":"classification-".concat(m),hasSparkle:!0,children:[p(m),(0,i.jsx)(a.PJP.I8b,{size:10})]}),f&&(0,i.jsx)(a.xuv,{className:"select-wrapper",position:"absolute",zIndex:10,top:"0",left:"0",width:"100%",height:"max",bgColor:"#fff",children:(0,i.jsx)(r.Z,{selectedTaxonomies:x,onChange:e=>{v(!1),j(e)},onBlur:()=>v(!1),open:!0})})]})}},26183:function(e,t,n){"use strict";var i=n(24246);n(27378),t.Z=e=>{let{children:t,className:n,...a}=e;return(0,i.jsx)("div",{className:"relative flex w-full flex-wrap items-center gap-2 overflow-x-auto py-2 ".concat(n||""),...a,children:t})}},57072:function(e,t,n){"use strict";n.d(t,{Bd:function(){return i.Bd},L5:function(){return i.L5},MO:function(){return i.MO},qb:function(){return i.qb}});var i=n(5785)},72707:function(e){e.exports={option:"TaxonomySelect_option__vY6v2"}}}]);
@@ -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(87949),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(87949),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(87949),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(87949),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:(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"}),"."]})]})]})}}}]);