ethyca-fides 2.71.1rc0__py2.py3-none-any.whl → 2.71.2b0__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 (288) hide show
  1. {ethyca_fides-2.71.1rc0.dist-info → ethyca_fides-2.71.2b0.dist-info}/METADATA +2 -2
  2. {ethyca_fides-2.71.1rc0.dist-info → ethyca_fides-2.71.2b0.dist-info}/RECORD +233 -230
  3. fides/_version.py +3 -3
  4. fides/api/api/v1/endpoints/generic_overrides.py +9 -3
  5. fides/api/models/privacy_notice.py +8 -0
  6. fides/api/models/privacy_request/privacy_request.py +1 -1
  7. fides/api/service/connectors/query_configs/saas_query_config.py +16 -0
  8. fides/api/service/connectors/saas_connector.py +9 -1
  9. fides/api/util/saas_util.py +1 -0
  10. fides/data/language/languages.yml +2 -0
  11. fides/service/dataset/dataset_service.py +39 -0
  12. fides/service/privacy_request/privacy_request_service.py +103 -48
  13. fides/ui-build/static/admin/404.html +1 -1
  14. fides/ui-build/static/admin/_next/static/chunks/1099-27b2d4e59a569b38.js +1 -0
  15. fides/ui-build/static/admin/_next/static/chunks/{1115-90baef2a89f361ad.js → 1115-8fb5000847f73ec7.js} +1 -1
  16. fides/ui-build/static/admin/_next/static/chunks/1437-fb699e9d69c3e325.js +1 -0
  17. fides/ui-build/static/admin/_next/static/chunks/155-3d03f101c662c054.js +1 -0
  18. fides/ui-build/static/admin/_next/static/chunks/{1817-1ad037b7d6d2f6d2.js → 1817-10b392e1dd9c4673.js} +1 -1
  19. fides/ui-build/static/admin/_next/static/chunks/{1975.78e719130cfe3fd6.js → 1975.50599b6774562644.js} +1 -1
  20. fides/ui-build/static/admin/_next/static/chunks/{2040-fdecc41a18e40bdc.js → 2040-01d5edb1802d3482.js} +1 -1
  21. fides/ui-build/static/admin/_next/static/chunks/2397-40506a386a3a469a.js +1 -0
  22. fides/ui-build/static/admin/_next/static/chunks/{2921-66f65496c3a09316.js → 2921-edfdffa353a611e4.js} +1 -1
  23. fides/ui-build/static/admin/_next/static/chunks/3377-4c129258b4c4ea28.js +1 -0
  24. fides/ui-build/static/admin/_next/static/chunks/{3696-90c8b336bbc46782.js → 3696-259be222ea12392a.js} +1 -1
  25. fides/ui-build/static/admin/_next/static/chunks/3700-42976bfaad3b91c9.js +1 -0
  26. fides/ui-build/static/admin/_next/static/chunks/3772-aa7beafe5df5e656.js +1 -0
  27. fides/ui-build/static/admin/_next/static/chunks/{3923-98bea73b618292aa.js → 3923-fa1d71afc7dc9e6e.js} +1 -1
  28. fides/ui-build/static/admin/_next/static/chunks/{401-ffe4e8436e1eceb9.js → 401-5270e3e23b08ab2b.js} +1 -1
  29. fides/ui-build/static/admin/_next/static/chunks/431-e01ee730c8ad9ece.js +1 -0
  30. fides/ui-build/static/admin/_next/static/chunks/4817-5f9b9c9bafe888f1.js +1 -0
  31. fides/ui-build/static/admin/_next/static/chunks/{5185-51eaa78e3ed6bfb7.js → 5185-325e5435a0c7dcb7.js} +1 -1
  32. fides/ui-build/static/admin/_next/static/chunks/5258-2d28b2c64acf5de3.js +1 -0
  33. fides/ui-build/static/admin/_next/static/chunks/{5279-12c9cbdc67ad7b14.js → 5279-21929b12c927b022.js} +1 -1
  34. fides/ui-build/static/admin/_next/static/chunks/549-c3b4c51f45a84a52.js +1 -0
  35. fides/ui-build/static/admin/_next/static/chunks/{5643-10a36584c399526c.js → 5643-7583c1f8dbd83273.js} +1 -1
  36. fides/ui-build/static/admin/_next/static/chunks/{5783-d119cb132abd8a91.js → 5783-55c0387508e50f3e.js} +1 -1
  37. fides/ui-build/static/admin/_next/static/chunks/{6277-182efc294d413f64.js → 6277-ca31d48a33202761.js} +1 -1
  38. fides/ui-build/static/admin/_next/static/chunks/6315-2d4e86a32fc40458.js +1 -0
  39. fides/ui-build/static/admin/_next/static/chunks/6344-ca66a6e10d128179.js +1 -0
  40. fides/ui-build/static/admin/_next/static/chunks/{6853-7004a8c420b1ca02.js → 6853-cb15625a713b3ef9.js} +1 -1
  41. fides/ui-build/static/admin/_next/static/chunks/{6954-4b24e1731c1cc3b3.js → 6954-08b59d28d7a2a43b.js} +1 -1
  42. fides/ui-build/static/admin/_next/static/chunks/7245-895bb7c6a6c797bc.js +1 -0
  43. fides/ui-build/static/admin/_next/static/chunks/{7476-d055aa931da47ac0.js → 7476-f25fce73eeb1f9c6.js} +1 -1
  44. fides/ui-build/static/admin/_next/static/chunks/7488-df17b592fbeaa1eb.js +1 -0
  45. fides/ui-build/static/admin/_next/static/chunks/{7630-d0d3a0fe3f95e971.js → 7630-71582de0e818e28f.js} +1 -1
  46. fides/ui-build/static/admin/_next/static/chunks/7773-98d34d188ae0a694.js +1 -0
  47. fides/ui-build/static/admin/_next/static/chunks/{796-02086581996a0548.js → 796-7944f684f8945506.js} +1 -1
  48. fides/ui-build/static/admin/_next/static/chunks/8011-56031d82d5428981.js +1 -0
  49. fides/ui-build/static/admin/_next/static/chunks/8373-7f940f5ac9c38b1f.js +1 -0
  50. fides/ui-build/static/admin/_next/static/chunks/9046-31b16a7e872c22be.js +1 -0
  51. fides/ui-build/static/admin/_next/static/chunks/9070-13f237db78da586d.js +1 -0
  52. fides/ui-build/static/admin/_next/static/chunks/9330-cea1bf40f5d27e53.js +1 -0
  53. fides/ui-build/static/admin/_next/static/chunks/{9676.b86ecbcfe5afd25d.js → 9676.1ea49d4b6e0541f2.js} +1 -1
  54. fides/ui-build/static/admin/_next/static/chunks/9682-2754256aeae141bb.js +1 -0
  55. fides/ui-build/static/admin/_next/static/chunks/{9826-ccedc28e978ca9e1.js → 9826-e71887e2c4283249.js} +1 -1
  56. fides/ui-build/static/admin/_next/static/chunks/9899-15530c468d5656a1.js +1 -0
  57. fides/ui-build/static/admin/_next/static/chunks/9965-54037b6c8f36d14b.js +1 -0
  58. fides/ui-build/static/admin/_next/static/chunks/pages/{404-2eb8aed4939f1142.js → 404-2014144a1a0fa64f.js} +1 -1
  59. fides/ui-build/static/admin/_next/static/chunks/pages/{_app-a7c02dd2ff07f9e1.js → _app-9e869a44215709ed.js} +9 -9
  60. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/manual-4f3ba02774f27795.js +1 -0
  61. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-2ca59996860a33c5.js → multiple-1c9cef80deccb15d.js} +1 -1
  62. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-4adeec3bcec05f7b.js +1 -0
  63. fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-7a258b7ecd6da4b8.js → add-vendors-f7bdc2da53137ffd.js} +1 -1
  64. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{configure-fb5017ff5fa54fcc.js → configure-a27b220fe76bdc8e.js} +1 -1
  65. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-e1e2fd704ac2d71d.js → [id]-542fd4a4322122f1.js} +1 -1
  66. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-experience-92182be6603c2842.js → privacy-experience-4254abef7bb52edd.js} +1 -1
  67. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-5fc78b78a51c239c.js → [id]-d31d1c233e94dc1f.js} +1 -1
  68. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-b79bcb93b5f4c734.js → new-2ea057e6217993f9.js} +1 -1
  69. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-notices-ab54b19609bff325.js → privacy-notices-8e76cbfaf71fdcb9.js} +1 -1
  70. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-069f4e3ee96ebf77.js → properties-eb557180eded0abd.js} +1 -1
  71. fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-93730a4316c0d980.js +1 -0
  72. fides/ui-build/static/admin/_next/static/chunks/pages/{consent-d2bf72508c3cad55.js → consent-c64589e53338e59a.js} +1 -1
  73. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-2fa4b3a58f75f81d.js → [resourceUrn]-d3d1841bc8105e56.js} +1 -1
  74. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-8cd4d1d6ba000333.js +1 -0
  75. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-69b429a9d30ebaf1.js +1 -0
  76. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-5b31e3d7727b917a.js → [resourceUrn]-791c522ad1d9a2ce.js} +1 -1
  77. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources-8c7103ebf01d6e6a.js +1 -0
  78. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-a53ef0161235ee47.js +1 -0
  79. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-f85f4f8fcf1bfbdb.js +1 -0
  80. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/data-explorer-3619e454763dba09.js +1 -0
  81. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-ace848575e688200.js +1 -0
  82. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-53ca31c50c43007f.js +1 -0
  83. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-f87e4a0f664f4cde.js +1 -0
  84. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-844a8de0d1b506e2.js → [resourceUrn]-699762cb8a66237e.js} +1 -1
  85. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-11b07cf2d91b17ef.js → detection-d970d0b82db36c88.js} +1 -1
  86. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-5525cf287d4ab493.js → [resourceUrn]-a6343038a447699c.js} +1 -1
  87. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-ed4723e1b67d890e.js → discovery-ce82ba79f9bf825c.js} +1 -1
  88. fides/ui-build/static/admin/_next/static/chunks/pages/datamap-ae7a4c1c4eabc0d4.js +1 -0
  89. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-179e5d09ccff50c1.js +1 -0
  90. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-59466e5e238c59d0.js +1 -0
  91. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-36d90c8c39fb0d1c.js +1 -0
  92. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-db54d01fd8f6df50.js +1 -0
  93. fides/ui-build/static/admin/_next/static/chunks/pages/dataset-55d312af5228e098.js +1 -0
  94. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/[id]-488beba62e832660.js +1 -0
  95. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/new-4aad5495f9bf81ce.js +1 -0
  96. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-496ec7ecca8259dc.js +1 -0
  97. fides/ui-build/static/admin/_next/static/chunks/pages/{index-b74d1e8608ae5b5d.js → index-8a2ba955d92d52ee.js} +1 -1
  98. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-4580f70eb41b6a7d.js +1 -0
  99. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-f69b04d3b4cf43b1.js +1 -0
  100. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{[id]-e8d2140787045acd.js → [id]-d6eed2dc5d27f625.js} +1 -1
  101. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{add-template-e3f93462a08251bf.js → add-template-c7b43fa365f4be10.js} +1 -1
  102. fides/ui-build/static/admin/_next/static/chunks/pages/{messaging-b5f7d6afdecd013d.js → messaging-c7ba755c2e0e2377.js} +1 -1
  103. fides/ui-build/static/admin/_next/static/chunks/pages/poc/{ant-components-248ad9f65a872442.js → ant-components-f14bfd5890a0e939.js} +1 -1
  104. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{AntForm-aedb66a62042b10a.js → AntForm-e4274a4d5d23eea9.js} +1 -1
  105. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikAntFormItem-018df38b7cd77fdb.js → FormikAntFormItem-f5bce1ceb0502f04.js} +1 -1
  106. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikControlled-6ca9099d03aab817.js → FormikControlled-90b4ea9f9deca6e2.js} +1 -1
  107. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikField-0f2c90786ea005a4.js → FormikField-d6043ae8dae6ef7d.js} +1 -1
  108. fides/ui-build/static/admin/_next/static/chunks/pages/poc/{forms-200b51a725f8b2d1.js → forms-520ba5ae02f47bda.js} +1 -1
  109. fides/ui-build/static/admin/_next/static/chunks/pages/poc/{table-migration-29fb7b39f8962650.js → table-migration-b46f432b51421fae.js} +1 -1
  110. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{[id]-febf156d2977f3ac.js → [id]-fe4ed3ad75151e36.js} +1 -1
  111. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-de681c2d022c9e0d.js +1 -0
  112. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-8f577df28ebca869.js → configure-04ebf2fb6fc4358a.js} +1 -1
  113. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-cd8ba2eef9085377.js +1 -0
  114. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-57a75c7e9659271a.js → [id]-f75a407d78857ab3.js} +1 -1
  115. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-8964c2300206bc89.js → add-property-975ff605e1dbc09c.js} +1 -1
  116. fides/ui-build/static/admin/_next/static/chunks/pages/{properties-08472b2a6bf1d392.js → properties-e7fdf3a9a3e8c267.js} +1 -1
  117. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-764b6ce8e030d4a1.js +1 -0
  118. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/{[purpose_id]-f3e6e74e0efb005c.js → [purpose_id]-da78452b3c41b29e.js} +1 -1
  119. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{consent-4d658222ec800511.js → consent-6442e761ecb5c65a.js} +1 -1
  120. fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-ea9baf24de35d3b1.js +1 -0
  121. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-744f669431b84f71.js → domain-records-44d06e280990854d.js} +1 -1
  122. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domains-a3275554ffe8e640.js → domains-6f61d886aa6f5ce7.js} +1 -1
  123. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{email-templates-604790638c656fbd.js → email-templates-11148b182370fd83.js} +1 -1
  124. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-be2a885150adc133.js → locations-33448bf0a1d53870.js} +1 -1
  125. fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers/{[key]-77239269acc2d31a.js → [key]-4a18d8135c0dbf2a.js} +1 -1
  126. fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers/{new-8bf1821722b082e9.js → new-41957281b8ec26b1.js} +1 -1
  127. fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers-776258bad0941a7d.js +1 -0
  128. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{organization-3c86162afe9759df.js → organization-3c315036f1fc9f90.js} +1 -1
  129. fides/ui-build/static/admin/_next/static/chunks/pages/settings/privacy-requests-00917525c9245a90.js +1 -0
  130. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-4fe3b90747d885e5.js → regulations-5d924b2f1f926b88.js} +1 -1
  131. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/{test-datasets-2deb6becece69d46.js → test-datasets-8067e12227210f48.js} +1 -1
  132. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-4d470bbf199a2f9c.js → [id]-1a902922759cae76.js} +1 -1
  133. fides/ui-build/static/admin/_next/static/chunks/pages/systems-277ea1f34c3714cf.js +1 -0
  134. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-cecea5832cb1f3b0.js +1 -0
  135. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-98f737e735eaa0f0.js → [id]-726fbc0a34ffba1f.js} +1 -1
  136. fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-562624e5461083ec.js → user-management-df9b75ab01c1a2ea.js} +1 -1
  137. fides/ui-build/static/admin/_next/static/chunks/{webpack-2766492c5dbceb0a.js → webpack-118fb4723d13c14f.js} +1 -1
  138. fides/ui-build/static/admin/_next/static/css/372d6a236c84613f.css +1 -0
  139. fides/ui-build/static/admin/_next/static/zmEQMSpOBih8kmA1t-EWO/_buildManifest.js +1 -0
  140. fides/ui-build/static/admin/add-systems/manual.html +1 -1
  141. fides/ui-build/static/admin/add-systems/multiple.html +1 -1
  142. fides/ui-build/static/admin/add-systems.html +1 -1
  143. fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
  144. fides/ui-build/static/admin/consent/configure.html +1 -1
  145. fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
  146. fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
  147. fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
  148. fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
  149. fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
  150. fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
  151. fides/ui-build/static/admin/consent/properties.html +1 -1
  152. fides/ui-build/static/admin/consent/reporting.html +1 -1
  153. fides/ui-build/static/admin/consent.html +1 -1
  154. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
  155. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
  156. fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
  157. fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
  158. fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
  159. fides/ui-build/static/admin/data-catalog.html +1 -1
  160. fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +1 -1
  161. fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/data-explorer.html +1 -0
  162. fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +1 -1
  163. fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
  164. fides/ui-build/static/admin/data-discovery/activity.html +1 -1
  165. fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
  166. fides/ui-build/static/admin/data-discovery/detection.html +1 -1
  167. fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
  168. fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
  169. fides/ui-build/static/admin/datamap.html +1 -1
  170. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
  171. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
  172. fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
  173. fides/ui-build/static/admin/dataset/new.html +1 -1
  174. fides/ui-build/static/admin/dataset.html +1 -1
  175. fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
  176. fides/ui-build/static/admin/datastore-connection/new.html +1 -1
  177. fides/ui-build/static/admin/datastore-connection.html +1 -1
  178. fides/ui-build/static/admin/index.html +1 -1
  179. fides/ui-build/static/admin/integrations/[id].html +1 -1
  180. fides/ui-build/static/admin/integrations.html +1 -1
  181. fides/ui-build/static/admin/lib/fides-preview.js +1 -1
  182. fides/ui-build/static/admin/lib/fides-tcf.js +2 -2
  183. fides/ui-build/static/admin/lib/fides.js +2 -2
  184. fides/ui-build/static/admin/login/[provider].html +1 -1
  185. fides/ui-build/static/admin/login.html +1 -1
  186. fides/ui-build/static/admin/messaging/[id].html +1 -1
  187. fides/ui-build/static/admin/messaging/add-template.html +1 -1
  188. fides/ui-build/static/admin/messaging.html +1 -1
  189. fides/ui-build/static/admin/poc/ant-components.html +1 -1
  190. fides/ui-build/static/admin/poc/form-experiments/AntForm.html +1 -1
  191. fides/ui-build/static/admin/poc/form-experiments/FormikAntFormItem.html +1 -1
  192. fides/ui-build/static/admin/poc/form-experiments/FormikControlled.html +1 -1
  193. fides/ui-build/static/admin/poc/form-experiments/FormikField.html +1 -1
  194. fides/ui-build/static/admin/poc/form-experiments/FormikSpreadField.html +1 -1
  195. fides/ui-build/static/admin/poc/forms.html +1 -1
  196. fides/ui-build/static/admin/poc/table-migration.html +1 -1
  197. fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
  198. fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
  199. fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
  200. fides/ui-build/static/admin/privacy-requests.html +1 -1
  201. fides/ui-build/static/admin/properties/[id].html +1 -1
  202. fides/ui-build/static/admin/properties/add-property.html +1 -1
  203. fides/ui-build/static/admin/properties.html +1 -1
  204. fides/ui-build/static/admin/reporting/datamap.html +1 -1
  205. fides/ui-build/static/admin/settings/about/alpha.html +1 -1
  206. fides/ui-build/static/admin/settings/about.html +1 -1
  207. fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +1 -1
  208. fides/ui-build/static/admin/settings/consent.html +1 -1
  209. fides/ui-build/static/admin/settings/custom-fields/[id].html +1 -1
  210. fides/ui-build/static/admin/settings/custom-fields/new.html +1 -1
  211. fides/ui-build/static/admin/settings/custom-fields.html +1 -1
  212. fides/ui-build/static/admin/settings/domain-records.html +1 -1
  213. fides/ui-build/static/admin/settings/domains.html +1 -1
  214. fides/ui-build/static/admin/settings/email-templates.html +1 -1
  215. fides/ui-build/static/admin/settings/locations.html +1 -1
  216. fides/ui-build/static/admin/settings/messaging-providers/[key].html +1 -1
  217. fides/ui-build/static/admin/settings/messaging-providers/new.html +1 -1
  218. fides/ui-build/static/admin/settings/messaging-providers.html +1 -1
  219. fides/ui-build/static/admin/settings/organization.html +1 -1
  220. fides/ui-build/static/admin/settings/privacy-requests.html +1 -1
  221. fides/ui-build/static/admin/settings/regulations.html +1 -1
  222. fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
  223. fides/ui-build/static/admin/systems/configure/[id].html +1 -1
  224. fides/ui-build/static/admin/systems.html +1 -1
  225. fides/ui-build/static/admin/taxonomy.html +1 -1
  226. fides/ui-build/static/admin/user-management/new.html +1 -1
  227. fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
  228. fides/ui-build/static/admin/user-management.html +1 -1
  229. fides/ui-build/static/admin/_next/static/chunks/155-c1ae010c664e2245.js +0 -1
  230. fides/ui-build/static/admin/_next/static/chunks/3585-efd5d41f08e180c4.js +0 -1
  231. fides/ui-build/static/admin/_next/static/chunks/3855-12ee1dfbbe47fd28.js +0 -1
  232. fides/ui-build/static/admin/_next/static/chunks/3872-04d3afbfa41a7782.js +0 -1
  233. fides/ui-build/static/admin/_next/static/chunks/409-c1256ecda1b15db6.js +0 -1
  234. fides/ui-build/static/admin/_next/static/chunks/431-78bf05f35d7eec4f.js +0 -1
  235. fides/ui-build/static/admin/_next/static/chunks/4558-de5ced790b3380dc.js +0 -1
  236. fides/ui-build/static/admin/_next/static/chunks/4608-a9941d0c236ebca1.js +0 -1
  237. fides/ui-build/static/admin/_next/static/chunks/4718-6585c97c26647e65.js +0 -1
  238. fides/ui-build/static/admin/_next/static/chunks/502-d3ecae97b67befbd.js +0 -1
  239. fides/ui-build/static/admin/_next/static/chunks/504-88caa30c03374e9b.js +0 -1
  240. fides/ui-build/static/admin/_next/static/chunks/5309-3b6cf0cc9d0c6a83.js +0 -1
  241. fides/ui-build/static/admin/_next/static/chunks/5574-c31ea831371610d5.js +0 -1
  242. fides/ui-build/static/admin/_next/static/chunks/6882-10296485ec326e6b.js +0 -1
  243. fides/ui-build/static/admin/_next/static/chunks/7045-f15044a4d4525946.js +0 -1
  244. fides/ui-build/static/admin/_next/static/chunks/7079-bbc7b856802a4834.js +0 -1
  245. fides/ui-build/static/admin/_next/static/chunks/7158-04745cc8d684b2e7.js +0 -1
  246. fides/ui-build/static/admin/_next/static/chunks/7218-e2983b96b95e33b4.js +0 -1
  247. fides/ui-build/static/admin/_next/static/chunks/7725-f2a7be705b75dcc3.js +0 -1
  248. fides/ui-build/static/admin/_next/static/chunks/7929-0fd0d4948bc8d70e.js +0 -1
  249. fides/ui-build/static/admin/_next/static/chunks/8002-ed832921ad190832.js +0 -1
  250. fides/ui-build/static/admin/_next/static/chunks/9046-2a332fe338535c84.js +0 -1
  251. fides/ui-build/static/admin/_next/static/chunks/9226-4a7027057f55ca2a.js +0 -1
  252. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/manual-4ec03eed67572861.js +0 -1
  253. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-58920afe2b67f952.js +0 -1
  254. fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-ae4909cad9b67822.js +0 -1
  255. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-4a1af12d2d7cd660.js +0 -1
  256. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-99573a1ee3ef8f4c.js +0 -1
  257. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources-6e429b7511028d60.js +0 -1
  258. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-56fd0f3e465e52b6.js +0 -1
  259. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-29c1fb777bd464e0.js +0 -1
  260. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-0d512528b498d75c.js +0 -1
  261. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-040813022f0890c9.js +0 -1
  262. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-2635ef588bf06145.js +0 -1
  263. fides/ui-build/static/admin/_next/static/chunks/pages/datamap-15616bea02397ef4.js +0 -1
  264. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-d4031e438c363fff.js +0 -1
  265. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-9463af37079762d0.js +0 -1
  266. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-60a4a9eb4aab4c11.js +0 -1
  267. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-ea198c4a7869f402.js +0 -1
  268. fides/ui-build/static/admin/_next/static/chunks/pages/dataset-0e3a6ac4797ffbbb.js +0 -1
  269. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/[id]-816e02b6cbe4a684.js +0 -1
  270. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/new-b6838162200141b3.js +0 -1
  271. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-223c2d1ded51bfb1.js +0 -1
  272. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-153eb88ab4e7dc6d.js +0 -1
  273. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-f682b1def859931e.js +0 -1
  274. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-648d775d0fce49dc.js +0 -1
  275. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-7af00f72cf694077.js +0 -1
  276. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-f7753e9effae3816.js +0 -1
  277. fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-5edfec10a945ca43.js +0 -1
  278. fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers-8d92be437793c96f.js +0 -1
  279. fides/ui-build/static/admin/_next/static/chunks/pages/settings/privacy-requests-8cbdfd08e0fa88fb.js +0 -1
  280. fides/ui-build/static/admin/_next/static/chunks/pages/systems-0f1d833282f09684.js +0 -1
  281. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-a8cfa7de4948b374.js +0 -1
  282. fides/ui-build/static/admin/_next/static/css/64fac6fb884435c2.css +0 -1
  283. fides/ui-build/static/admin/_next/static/vSOB67a-1uIVzRUKBYMSo/_buildManifest.js +0 -1
  284. {ethyca_fides-2.71.1rc0.dist-info → ethyca_fides-2.71.2b0.dist-info}/WHEEL +0 -0
  285. {ethyca_fides-2.71.1rc0.dist-info → ethyca_fides-2.71.2b0.dist-info}/entry_points.txt +0 -0
  286. {ethyca_fides-2.71.1rc0.dist-info → ethyca_fides-2.71.2b0.dist-info}/licenses/LICENSE +0 -0
  287. {ethyca_fides-2.71.1rc0.dist-info → ethyca_fides-2.71.2b0.dist-info}/top_level.txt +0 -0
  288. /fides/ui-build/static/admin/_next/static/{vSOB67a-1uIVzRUKBYMSo → zmEQMSpOBih8kmA1t-EWO}/_ssgManifest.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-03T10:03:48-0700",
11
+ "date": "2025-10-03T09:34:20-0700",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "43bcd93b9c3859ad4a79f3825f1ebc789a58caf3",
15
- "version": "2.71.1rc0"
14
+ "full-revisionid": "521a48a9c7dbc813d08cf2053f318328912e86b6",
15
+ "version": "2.71.2b0"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -54,6 +54,7 @@ from fides.common.api.v1.urn_registry import DATASETS_CLEAN, V1_URL_PREFIX
54
54
  from fides.service.dataset.dataset_service import (
55
55
  DatasetNotFoundException,
56
56
  DatasetService,
57
+ LinkedDatasetException,
57
58
  )
58
59
  from fides.service.taxonomy.taxonomy_service import TaxonomyService
59
60
 
@@ -126,7 +127,7 @@ async def update_dataset(
126
127
  except DatasetNotFoundException as e:
127
128
  raise HTTPException(
128
129
  status_code=HTTP_404_NOT_FOUND,
129
- detail={"message": str(e)},
130
+ detail=str(e),
130
131
  )
131
132
 
132
133
 
@@ -248,7 +249,7 @@ async def get_dataset(
248
249
  except DatasetNotFoundException as e:
249
250
  raise HTTPException(
250
251
  status_code=HTTP_404_NOT_FOUND,
251
- detail={"message": str(e)},
252
+ detail=str(e),
252
253
  )
253
254
 
254
255
 
@@ -275,7 +276,12 @@ async def delete_dataset(
275
276
  except DatasetNotFoundException as e:
276
277
  raise HTTPException(
277
278
  status_code=HTTP_404_NOT_FOUND,
278
- detail={"message": str(e)},
279
+ detail=str(e),
280
+ )
281
+ except LinkedDatasetException as e:
282
+ raise HTTPException(
283
+ status_code=HTTP_400_BAD_REQUEST,
284
+ detail=str(e),
279
285
  )
280
286
 
281
287
 
@@ -530,6 +530,10 @@ class PrivacyNotice(PrivacyNoticeBase, Base):
530
530
  # to prevent the dry update from being added to Session.new
531
531
  updated_attributes.pop("translations", [])
532
532
  updated_attributes.pop("children", [])
533
+ # The source PrivacyNotice may have cached/computed attributes (e.g., @cached_property)
534
+ # stored on the instance dict. These should not be included in historical payloads.
535
+ # For example, 'cookies' is cached on the PrivacyNotice instance when accessed.
536
+ updated_attributes.pop("cookies", None)
533
537
 
534
538
  # create a new object with the updated attribute data to keep this
535
539
  # ORM object (i.e., `self`) pristine
@@ -676,6 +680,10 @@ def create_historical_record_for_notice_and_translation(
676
680
  history_data: dict = create_historical_data_from_record(privacy_notice)
677
681
  history_data.pop("translations", None)
678
682
  history_data.pop("parent_id", None)
683
+ # The source PrivacyNotice may have cached/computed attributes (e.g., @cached_property)
684
+ # stored on the instance dict. These should not be included in historical payloads.
685
+ # For example, 'cookies' is cached on the PrivacyNotice instance when accessed.
686
+ history_data.pop("cookies", None)
679
687
 
680
688
  updated_translation_data: dict = create_historical_data_from_record(
681
689
  notice_translation
@@ -369,7 +369,7 @@ class PrivacyRequest(
369
369
  return {
370
370
  "id": self.id,
371
371
  "external_id": self.external_id,
372
- "status": self.status.value,
372
+ "status": self.status.value if self.status is not None else None,
373
373
  "requested_at": (
374
374
  self.requested_at.isoformat() if self.requested_at else None
375
375
  ),
@@ -46,6 +46,7 @@ from fides.api.util.saas_util import (
46
46
  ISO_8601_DATETIME,
47
47
  MASKED_OBJECT_FIELDS,
48
48
  PRIVACY_REQUEST_ID,
49
+ PRIVACY_REQUEST_OBJECT,
49
50
  REPLY_TO,
50
51
  REPLY_TO_TOKEN,
51
52
  UUID,
@@ -211,6 +212,7 @@ class SaaSQueryConfig(QueryConfig[SaaSRequestParams]):
211
212
  input_data: Dict[str, List[Any]],
212
213
  policy: Optional[Policy],
213
214
  read_request: SaaSRequest,
215
+ privacy_request: Optional[PrivacyRequest] = None,
214
216
  ) -> List[Tuple[SaaSRequestParams, Dict[str, Any]]]:
215
217
  """
216
218
  Takes the identity and reference values from input_data and combines them
@@ -223,6 +225,10 @@ class SaaSQueryConfig(QueryConfig[SaaSRequestParams]):
223
225
  self.current_request = read_request
224
226
 
225
227
  request_params = []
228
+
229
+ if privacy_request:
230
+ input_data[PRIVACY_REQUEST_OBJECT] = [privacy_request.to_safe_dict()]
231
+
226
232
  param_value_maps = self.generate_param_value_maps(input_data, read_request)
227
233
 
228
234
  for param_value_map in param_value_maps:
@@ -342,6 +348,14 @@ class SaaSQueryConfig(QueryConfig[SaaSRequestParams]):
342
348
  if self.privacy_request:
343
349
  param_values[PRIVACY_REQUEST_ID] = self.privacy_request.id
344
350
 
351
+ privacy_request_object = input_data.get(PRIVACY_REQUEST_OBJECT)
352
+ if (
353
+ isinstance(privacy_request_object, list)
354
+ and len(privacy_request_object) > 0
355
+ and isinstance(privacy_request_object[0], dict)
356
+ ):
357
+ param_values[PRIVACY_REQUEST_OBJECT] = privacy_request_object[0]
358
+
345
359
  custom_privacy_request_fields = input_data.get(CUSTOM_PRIVACY_REQUEST_FIELDS)
346
360
  if (
347
361
  isinstance(custom_privacy_request_fields, list)
@@ -462,6 +476,8 @@ class SaaSQueryConfig(QueryConfig[SaaSRequestParams]):
462
476
  if self.privacy_request:
463
477
  param_values[PRIVACY_REQUEST_ID] = self.privacy_request.id
464
478
 
479
+ param_values[PRIVACY_REQUEST_OBJECT] = privacy_request.to_safe_dict()
480
+
465
481
  param_values[CUSTOM_PRIVACY_REQUEST_FIELDS] = custom_privacy_request_fields
466
482
  param_values[UUID] = str(uuid4())
467
483
  param_values[ISO_8601_DATETIME] = datetime.now().strftime("%Y-%m-%dT%H:%M:%SZ")
@@ -67,6 +67,7 @@ from fides.api.util.logger_context_utils import (
67
67
  from fides.api.util.saas_util import (
68
68
  ALL_OBJECT_FIELDS,
69
69
  CUSTOM_PRIVACY_REQUEST_FIELDS,
70
+ PRIVACY_REQUEST_OBJECT,
70
71
  assign_placeholders,
71
72
  map_param_values,
72
73
  )
@@ -276,6 +277,8 @@ class SaaSConnector(BaseConnector[AuthenticatedClient], Contextualizable):
276
277
  if custom_privacy_request_fields:
277
278
  input_data[CUSTOM_PRIVACY_REQUEST_FIELDS] = [custom_privacy_request_fields]
278
279
 
280
+ input_data[PRIVACY_REQUEST_OBJECT] = [privacy_request.to_safe_dict()]
281
+
279
282
  rows: List[Row] = []
280
283
  for read_request in read_requests:
281
284
  self.set_saas_request_state(read_request)
@@ -300,7 +303,12 @@ class SaaSConnector(BaseConnector[AuthenticatedClient], Contextualizable):
300
303
  # if a path is provided, it means we want to generate HTTP requests from the config
301
304
  if read_request.path:
302
305
  prepared_requests: List[Tuple[SaaSRequestParams, Dict[str, Any]]] = (
303
- query_config.generate_requests(input_data, policy, read_request)
306
+ query_config.generate_requests(
307
+ input_data,
308
+ policy,
309
+ read_request,
310
+ privacy_request=privacy_request,
311
+ )
304
312
  )
305
313
 
306
314
  # Iterates through initial list of prepared requests and through subsequent
@@ -26,6 +26,7 @@ PRIVACY_REQUEST_ID = "privacy_request_id"
26
26
  MASKED_OBJECT_FIELDS = "masked_object_fields"
27
27
  ALL_OBJECT_FIELDS = "all_object_fields"
28
28
  CUSTOM_PRIVACY_REQUEST_FIELDS = "custom_privacy_request_fields"
29
+ PRIVACY_REQUEST_OBJECT = "privacy_request"
29
30
  UUID = "uuid"
30
31
  ISO_8601_DATETIME = "iso_8601_datetime"
31
32
  FIELD_LIST = "field_list"
@@ -9,6 +9,8 @@ languages:
9
9
  name: Catalan
10
10
  - id: cs
11
11
  name: Czech
12
+ - id: cy
13
+ name: Welsh
12
14
  - id: da
13
15
  name: Danish
14
16
  - id: de
@@ -6,6 +6,7 @@ from loguru import logger
6
6
  from sqlalchemy import select
7
7
  from sqlalchemy.orm import Session
8
8
 
9
+ from fides.api.models.datasetconfig import DatasetConfig # type: ignore[attr-defined]
9
10
  from fides.api.schemas.dataset import ValidateDatasetResponse
10
11
  from fides.service.dataset.dataset_validator import DatasetValidator
11
12
 
@@ -26,6 +27,10 @@ class DatasetNotFoundException(DatasetError):
26
27
  """Raised when a dataset is not found"""
27
28
 
28
29
 
30
+ class LinkedDatasetException(DatasetError):
31
+ """Raised when attempting to delete a dataset that's associated to a DatasetConfig"""
32
+
33
+
29
34
  class DatasetService:
30
35
  def __init__(self, db: Session):
31
36
  self.db = db
@@ -68,6 +73,40 @@ class DatasetService:
68
73
  def delete_dataset(self, fides_key: str) -> CtlDataset:
69
74
  """Delete a dataset by fides key"""
70
75
  dataset = self.get_dataset(fides_key)
76
+
77
+ # Check if dataset is associated with any DatasetConfigs
78
+ associated_configs = (
79
+ self.db.query(DatasetConfig)
80
+ .filter(DatasetConfig.ctl_dataset_id == dataset.id)
81
+ .all()
82
+ )
83
+
84
+ if associated_configs:
85
+ # Create detailed error message
86
+ integration_details = []
87
+ for config in associated_configs:
88
+ connection_name = (
89
+ config.connection_config.name or config.connection_config.key
90
+ )
91
+ detail = f"'{connection_name}' ({config.connection_config.connection_type.value})" # type: ignore[attr-defined]
92
+
93
+ # Add system information if available
94
+ if config.connection_config.system_id:
95
+ system = config.connection_config.system
96
+ if system:
97
+ system_name = system.name or system.fides_key
98
+ detail += f" in system '{system_name}'"
99
+
100
+ integration_details.append(detail)
101
+
102
+ message = (
103
+ f"Cannot delete dataset '{fides_key}' because it is associated with "
104
+ f"the following integration(s): {', '.join(integration_details)}. "
105
+ f"Remove the dataset from these integrations before deleting."
106
+ )
107
+
108
+ raise LinkedDatasetException(message)
109
+
71
110
  dataset.delete(self.db)
72
111
  return dataset
73
112
 
@@ -90,65 +90,120 @@ class PrivacyRequestService:
90
90
  if privacy_request_data.location:
91
91
  return
92
92
 
93
- # Get the Privacy Center configuration from the database
94
- privacy_center_config_record = PrivacyCenterConfigModel.filter(
95
- db=self.db, conditions=PrivacyCenterConfigModel.single_row # type: ignore[arg-type]
96
- ).first()
93
+ config_dict = self._resolve_privacy_center_config_dict(
94
+ privacy_request_data.property_id
95
+ )
96
+ if not config_dict:
97
+ return
97
98
 
98
- if not privacy_center_config_record:
99
- # No Privacy Center config found, skip validation
99
+ privacy_center_config = self._parse_privacy_center_config(config_dict)
100
+ if not privacy_center_config:
100
101
  return
101
102
 
102
- try:
103
- # Parse the config using the Pydantic schema
104
- privacy_center_config = PrivacyCenterConfigSchema.model_validate(
105
- privacy_center_config_record.config
103
+ action = self._get_matching_action(
104
+ privacy_center_config, privacy_request_data.policy_key
105
+ )
106
+ if not action or not action.custom_privacy_request_fields:
107
+ return
108
+
109
+ missing_required = self._is_required_location_missing(
110
+ action, privacy_request_data
111
+ )
112
+ if missing_required:
113
+ # Find the first location field name to reference in the error for clarity
114
+ first_location_field = next(
115
+ (
116
+ name
117
+ for name, cfg in action.custom_privacy_request_fields.items()
118
+ if isinstance(cfg, LocationCustomPrivacyRequestField)
119
+ and getattr(cfg, "required", False)
120
+ ),
121
+ "location",
106
122
  )
107
- except Exception as exc:
123
+ raise PrivacyRequestError(
124
+ f"Location is required for field '{first_location_field}' but was not provided",
125
+ privacy_request_data.model_dump(mode="json"),
126
+ )
127
+
128
+ def _resolve_privacy_center_config_dict(
129
+ self, property_id: Optional[str]
130
+ ) -> Optional[Dict[str, Any]]:
131
+ """Return the applicable Privacy Center config as a dict using precedence.
132
+
133
+ Precedence:
134
+ 1) The request's property config (if provided)
135
+ 2) The default property's config (if available)
136
+ 3) The single-row Privacy Center config table (legacy/global)
137
+ """
138
+ # 1) Request's property config
139
+ if property_id:
140
+ prop = Property.get_by(self.db, field="id", value=property_id)
141
+ if prop and getattr(prop, "privacy_center_config", None):
142
+ return prop.privacy_center_config # type: ignore[return-value]
143
+
144
+ # 2) Default property config
145
+ default_prop = Property.get_by(self.db, field="is_default", value=True)
146
+ if default_prop and getattr(default_prop, "privacy_center_config", None):
147
+ return default_prop.privacy_center_config # type: ignore[return-value]
148
+
149
+ # 3) Single-row global config
150
+ privacy_center_config_record = PrivacyCenterConfigModel.filter(
151
+ db=self.db, conditions=PrivacyCenterConfigModel.single_row # type: ignore[arg-type]
152
+ ).first()
153
+ if privacy_center_config_record:
154
+ return privacy_center_config_record.config # type: ignore[return-value]
155
+ return None
156
+
157
+ def _parse_privacy_center_config(
158
+ self, config_dict: Dict[str, Any]
159
+ ) -> Optional[PrivacyCenterConfigSchema]:
160
+ """Parse a config dict into a schema instance, logging and skipping on error."""
161
+ try:
162
+ return PrivacyCenterConfigSchema.model_validate(config_dict)
163
+ except Exception as exc: # pylint: disable=broad-except
108
164
  logger.warning(
109
165
  f"Could not parse Privacy Center config for location validation: {exc}"
110
166
  )
111
- return
167
+ return None
112
168
 
113
- # Find the action that matches the policy key
114
- matching_action = None
169
+ @staticmethod
170
+ def _get_matching_action(
171
+ privacy_center_config: PrivacyCenterConfigSchema, policy_key: str
172
+ ) -> Optional[Any]:
173
+ """Return the action entry matching the given policy key, if any."""
115
174
  for action in privacy_center_config.actions:
116
- if action.policy_key == privacy_request_data.policy_key:
117
- matching_action = action
118
- break
175
+ if action.policy_key == policy_key:
176
+ return action
177
+ return None
178
+
179
+ @staticmethod
180
+ def _is_required_location_missing(
181
+ action: Any, privacy_request_data: PrivacyRequestCreate
182
+ ) -> bool:
183
+ """Check if any required location fields exist without values in the request."""
184
+ if not getattr(action, "custom_privacy_request_fields", None):
185
+ return False
186
+
187
+ custom_fields = action.custom_privacy_request_fields
188
+ for field_name, field_config in custom_fields.items():
189
+ if not isinstance(field_config, LocationCustomPrivacyRequestField):
190
+ continue
191
+ if not getattr(field_config, "required", False):
192
+ continue
119
193
 
120
- if not matching_action or not matching_action.custom_privacy_request_fields:
121
- # No matching action or no custom fields defined
122
- return
194
+ # Check if this location field has a value in the request custom fields
195
+ field_has_value = False
196
+ if privacy_request_data.custom_privacy_request_fields:
197
+ field_data = privacy_request_data.custom_privacy_request_fields.get(
198
+ field_name
199
+ )
200
+ if field_data and getattr(field_data, "value", None):
201
+ field_has_value = True
202
+
203
+ if not field_has_value:
204
+ return True
123
205
 
124
- # Check if any location fields are required
125
- for (
126
- field_name,
127
- field_config,
128
- ) in matching_action.custom_privacy_request_fields.items():
129
- if isinstance(field_config, LocationCustomPrivacyRequestField):
130
- # This is a location field - check if it's required
131
- if field_config.required:
132
- # Check if this field has a value in the request
133
- field_has_value = False
134
- if privacy_request_data.custom_privacy_request_fields:
135
- field_data = (
136
- privacy_request_data.custom_privacy_request_fields.get(
137
- field_name
138
- )
139
- )
140
- if (
141
- field_data
142
- and hasattr(field_data, "value")
143
- and field_data.value
144
- ):
145
- field_has_value = True
146
-
147
- if not field_has_value:
148
- raise PrivacyRequestError(
149
- f"Location is required for field '{field_name}' but was not provided",
150
- privacy_request_data.model_dump(mode="json"),
151
- )
206
+ return False
152
207
 
153
208
  # pylint: disable=too-many-branches
154
209
  def create_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/64fac6fb884435c2.css" as="style"/><link rel="stylesheet" href="/_next/static/css/64fac6fb884435c2.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-2766492c5dbceb0a.js" defer=""></script><script src="/_next/static/chunks/framework-c92fc3344e6fd165.js" defer=""></script><script src="/_next/static/chunks/main-090643377c8254e6.js" defer=""></script><script src="/_next/static/chunks/pages/_app-a7c02dd2ff07f9e1.js" defer=""></script><script src="/_next/static/chunks/pages/404-2eb8aed4939f1142.js" defer=""></script><script src="/_next/static/vSOB67a-1uIVzRUKBYMSo/_buildManifest.js" defer=""></script><script src="/_next/static/vSOB67a-1uIVzRUKBYMSo/_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":"vSOB67a-1uIVzRUKBYMSo","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/372d6a236c84613f.css" as="style"/><link rel="stylesheet" href="/_next/static/css/372d6a236c84613f.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-118fb4723d13c14f.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-9e869a44215709ed.js" defer=""></script><script src="/_next/static/chunks/pages/404-2014144a1a0fa64f.js" defer=""></script><script src="/_next/static/zmEQMSpOBih8kmA1t-EWO/_buildManifest.js" defer=""></script><script src="/_next/static/zmEQMSpOBih8kmA1t-EWO/_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":"zmEQMSpOBih8kmA1t-EWO","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -0,0 +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(20595),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(20595),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(96306),r=i(88038),a=i.n(r),o=i(86677);i(27378);var l=i(25980),c=i(90867),g=i(42478),d=i(77830),u=()=>{let e=(0,o.useRouter)();return(0,t.jsx)(s.xuv,{bg:"gray.50",border:"1px solid",borderColor:"blue.400",borderRadius:"md",justifyContent:"space-between",p:5,mb:5,mt:5,children:(0,t.jsxs)(s.xuv,{children:[(0,t.jsxs)(s.Kqy,{direction:{base:"column",sm:"row"},justifyContent:"space-between",children:[(0,t.jsx)(s.xvT,{fontWeight:"semibold",children:"Configure your storage and messaging provider"}),(0,t.jsx)(s.wpx,{onClick:()=>{e.push(d.AD)},children:"Configure"})]}),(0,t.jsxs)(s.xvT,{children:["Before Fides can process your privacy requests we need two simple steps to configure your storage and email client."," "]})]})})},f=e=>{let{children:n,title:i,padded:r=!0,mainProps:d}=e,f=(0,l.hz)(),m=(0,o.useRouter)(),h="/privacy-requests"===m.pathname||"/datastore-connection"===m.pathname,x=!(f.flags.messagingConfiguration&&h),{data:p}=(0,g.JE)(void 0,{skip:x}),{data:y}=(0,c.PW)(void 0,{skip:x}),j=f.flags.messagingConfiguration&&(!p||!y)&&h;return(0,t.jsxs)(s.kCb,{"data-testid":i,direction:"column",h:"100vh",children:[(0,t.jsxs)(a(),{children:[(0,t.jsxs)("title",{children:["Fides Admin UI - ",i]}),(0,t.jsx)("meta",{name:"description",content:"Privacy Engineering Platform"}),(0,t.jsx)("link",{rel:"icon",href:"/favicon.ico"})]}),(0,t.jsxs)(s.kCb,{as:"main",direction:"column",py:r?6:0,px:r?10:0,h:r?"calc(100% - 48px)":"full",flex:1,minWidth:0,overflow:"auto",...d,children:[j?(0,t.jsx)(u,{}):null,n]})]})}},58754:function(e,n,i){var t=i(24246),s=i(96306),r=i(70788);n.Z=e=>{let{heading:n,breadcrumbItems:i,isSticky:a=!0,children:o,rightContent:l,style:c,...g}=e;return(0,t.jsxs)("div",{...g,style:a?{position:"sticky",top:"-24px",paddingTop:"24px",paddingBottom:"24px",paddingLeft:"40px",marginLeft:"-40px",paddingRight:"40px",marginRight:"-40px",marginTop:"-24px",left:0,zIndex:20,backgroundColor:"white",...c}:{paddingBottom:"24px",...c},children:[(0,t.jsxs)(s.jqI,{justify:"space-between",children:["string"==typeof n?(0,t.jsx)(s.lQT,{className:i||o?"pb-4":void 0,level:1,"data-testid":"page-heading",children:n}):n,l&&(0,t.jsx)("div",{"data-testid":"page-header-right-content",children:l})]}),!!i&&(0,t.jsx)(r.m,{className:o?"pb-4":void 0,items:i,"data-testid":"page-breadcrumb"}),o]})}},70788:function(e,n,i){i.d(n,{m:function(){return c}});var t=i(24246),s=i(96306),r=i(79894),a=i.n(r),o=i(27378);let{Text:l}=s.AntTypography,c=e=>{let{items:n,...i}=e,r=(0,o.useMemo)(()=>null==n?void 0:n.map((e,i)=>{let r=i===n.length-1,o={...e},c=o.onClick&&!o.href;return("string"==typeof o.title&&(o.title=(0,t.jsx)(l,{style:{color:"inherit",maxWidth:r?void 0:400},ellipsis:!r,id:r?"breadcrumb-current-page":void 0,children:o.title})),c)?o.title=(0,t.jsx)(s.wpx,{type:"text",size:"small",icon:o.icon,onClick:o.onClick,className:"ant-breadcrumb-link -mt-px px-1 text-inherit",children:o.title}):(o.icon&&(o.title=(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"anticon align-text-bottom",children:o.icon}),o.title]})),o.href&&o.title&&(o.title=(0,t.jsx)(a(),{href:o.href,className:"ant-breadcrumb-link",children:o.title}),delete o.href)),o}),[n]);return(0,t.jsx)(s.zrq,{items:r,...i})}},42478:function(e,n,i){i.d(n,{FU:function(){return c},JE:function(){return s},Ki:function(){return d},SU:function(){return u},W:function(){return f},h9:function(){return r},jc:function(){return t},qt:function(){return l},sn:function(){return g}});let{useGetEmailInviteStatusQuery:t,useGetActiveMessagingProviderQuery:s,useCreateMessagingConfigurationMutation:r,useCreateMessagingConfigurationSecretsMutation:a,useGetMessagingConfigurationDetailsQuery:o,useGetMessagingConfigurationsQuery:l,useGetMessagingConfigurationByKeyQuery:c,useUpdateMessagingConfigurationByKeyMutation:g,useUpdateMessagingConfigurationSecretsByKeyMutation:d,useCreateTestConnectionMessageMutation:u,useDeleteMessagingConfigurationByKeyMutation:f}=i(78780).u.injectEndpoints({endpoints:e=>({getEmailInviteStatus:e.query({query:()=>({url:"/messaging/email-invite/status"}),providesTags:()=>["Email Invite Status"]}),createMessagingConfiguration:e.mutation({query:e=>({url:"messaging/config",method:"POST",body:e}),invalidatesTags:["Messaging Config","Configuration Settings"]}),getActiveMessagingProvider:e.query({queryFn:async(e,n,i,t)=>{let s=await t({url:"messaging/default/active"});return s.error&&404===s.error.status?{data:null}:s},providesTags:["Messaging Config"]}),createMessagingConfigurationSecrets:e.mutation({query:e=>({url:"messaging/default/".concat(e.service_type,"/secret"),method:"PUT",body:e.details}),invalidatesTags:["Messaging Config","Configuration Settings"]}),getMessagingConfigurationDetails:e.query({query:e=>({url:"messaging/default/".concat(e.type)}),providesTags:["Messaging Config"]}),getMessagingConfigurations:e.query({query:()=>({url:"messaging/config"}),providesTags:["Messaging Config"]}),getMessagingConfigurationByKey:e.query({query:e=>({url:"messaging/config/".concat(e.key)}),providesTags:["Messaging Config"]}),createTestConnectionMessage:e.mutation({query:e=>({url:"messaging/test/".concat(e.service_type),method:"POST",body:e.details}),invalidatesTags:["Messaging Config"]}),updateMessagingConfigurationByKey:e.mutation({query:e=>({url:"messaging/config/".concat(e.key),method:"PATCH",body:e.config}),invalidatesTags:["Messaging Config","Configuration Settings"]}),updateMessagingConfigurationSecretsByKey:e.mutation({query:e=>({url:"messaging/config/".concat(e.key,"/secret"),method:"PUT",body:e.secrets}),invalidatesTags:["Messaging Config","Configuration Settings"]}),deleteMessagingConfigurationByKey:e.mutation({query:e=>({url:"messaging/config/".concat(e.key),method:"DELETE"}),invalidatesTags:["Messaging Config","Configuration Settings"]})})})},71115:function(e,n,i){i.r(n),i.d(n,{default:function(){return d}});var t=i(24246),s=i(96306),r=i(25980),a=i(62165),o=i(16394);let l=e=>{let{flag:n,value:i,override:r}=e;return"boolean"!=typeof i?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.xvT,{fontSize:"sm",children:n}),(0,t.jsx)(s.xvT,{fontSize:"sm",children:i})]}):a.Ky[n].userCannotModify?null:(0,t.jsxs)(s.NIc,{display:"contents",children:[(0,t.jsx)(s.xuv,{justifySelf:"center",children:(0,t.jsx)(s.rAg,{id:"flag-".concat(n),checked:i,onChange:()=>r({flag:n,value:!i})})}),(0,t.jsx)(s.xuv,{children:(0,t.jsx)(s.lXp,{margin:0,fontSize:"sm",htmlFor:"flag-".concat(n),title:n,children:(0,o.Py)(n)})}),(0,t.jsx)(s.xuv,{children:(0,t.jsx)(s.xvT,{fontSize:"sm",children:a.Ky[n].description})})]})};var c=i(77213),g=i(58754),d=e=>{let{showAlphaFeatures:n=!1}=e,i=(0,r.hz)(),{flags:o,override:d,reset:u}=(0,a.Vb)(),f=a.R$.filter(e=>e.startsWith("alpha")),m=a.R$.filter(e=>!e.startsWith("alpha"));return(0,t.jsxs)(c.Z,{title:"About Fides",children:[(0,t.jsx)(g.Z,{heading:"About Fides",children:(0,t.jsxs)(s.kCb,{direction:"column",gap:4,children:[(0,t.jsxs)(s.xuv,{children:[(0,t.jsxs)(s.xvT,{as:"span",fontWeight:"bold",children:["Fides Core Version:"," "]}),(0,t.jsx)(s.xvT,{as:"pre",display:"inline",children:i.version})]}),i.plusVersion?(0,t.jsxs)(s.xuv,{children:[(0,t.jsxs)(s.xvT,{as:"span",fontWeight:"bold",children:["Fides Plus Version:"," "]}),(0,t.jsx)(s.xvT,{as:"pre",display:"inline",children:i.plusVersion})]}):null,(0,t.jsx)(s.izJ,{})]})}),(0,t.jsxs)(s.kCb,{alignItems:"center",gap:4,children:[(0,t.jsx)(s.X6q,{as:"h2",fontSize:"xl",children:"Beta Features"}),(0,t.jsx)(s.wpx,{onClick:u,children:"Reset"})]}),(0,t.jsx)(s.rjZ,{gridTemplateColumns:"1fr 2fr 6fr",gridColumnGap:4,gridRowGap:2,alignItems:"center",className:"py-6",children:m.map(e=>(0,t.jsx)(l,{flag:e,value:o[e],override:d},e))}),n&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.kCb,{alignItems:"center",gap:4,children:[(0,t.jsx)(s.X6q,{as:"h2",fontSize:"xl",children:"Alpha Features"}),(0,t.jsx)(s.wpx,{onClick:u,children:"Reset"})]}),(0,t.jsx)(s.rjZ,{gridTemplateColumns:"1fr 2fr 6fr",gridColumnGap:4,gridRowGap:2,alignItems:"center",className:"py-6",children:f.map(e=>(0,t.jsx)(l,{flag:e,value:o[e],override:d},e))})]}),(0,t.jsxs)(s.xuv,{children:[(0,t.jsxs)(s.xvT,{fontSize:"sm",children:["Please visit"," ",(0,t.jsx)(s.rUS,{color:"complimentary.500",href:"https://docs.ethyca.com",isExternal:!0,children:"docs.ethyca.com"})," ","for more information on these features."]}),(0,t.jsxs)(s.xvT,{fontSize:"sm",children:["For questions and feedback, please join us at"," ",(0,t.jsx)(s.rUS,{color:"complimentary.500",href:"https://fidescommunity.slack.com",isExternal:!0,children:"fidescommunity.slack.com"}),"."]})]})]})}}}]);
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(20595),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(20595),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(20595),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(20595),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"}),"."]})]})]})}}}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1437],{30952:function(e,a,n){"use strict";n.d(a,{f:function(){return l}});var i=n(24246),t=n(66726),s=n.n(t),r=n(27378),o=n(26917);let l=e=>{let{value:a,onChange:n,placeholder:t,...l}=e,[_,F]=(0,r.useState)(a);(0,r.useEffect)(()=>{F(a||"")},[a]);let d=s()(n,500),u=(0,r.useCallback)(e=>{F(e),d(e)},[]);return(0,i.jsx)(o.Z,{value:_,onChange:u,onClear:()=>{F(""),n("")},placeholder:t,...l})}},26089:function(e,a,n){"use strict";var i=n(24246),t=n(20595),s=n(99830),r=n.n(s);a.Z=e=>{let{onClick:a,children:n}=e;return(0,i.jsx)(t.wpx,{onClick:a,type:"link",role:"link",size:"small",className:r().toastLink,children:n})}},29850:function(e,a,n){"use strict";n.d(a,{R:function(){return F}});var i=n(24246),t=n(20595),s=n(27378),r=n(65450);let o=e=>{let{children:a,className:n,style:s,...r}=e;return(0,i.jsx)(t.wpx,{...r,type:"text",className:"w-full justify-start ".concat(n),style:{fontWeight:600,padding:"var(--ant-select-option-padding)",backgroundColor:"var(--ant-select-option-selected-bg)",...s},children:a})};var l=n(16394);let _=(e,a)=>(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(o,{onClick:a,"data-testid":"add-new-system",id:"add-new-system",children:"Add new system +"}),e]}),F=e=>{var a;let{onAddSystem:n,...o}=e,[F,d]=(0,s.useState)(),{data:u,isFetching:c}=(0,r.xF)({page:1,size:25,search:F||void 0}),m=null==u?void 0:null===(a=u.items)||void 0===a?void 0:a.map(e=>({value:e.fides_key,label:e.name})),h=(0,s.useCallback)(e=>{(null==e?void 0:e.length)>1&&d(e),(null==e?void 0:e.length)===0&&d(void 0)},[d]),S=(0,s.useMemo)(()=>(0,l.Ds)(h,300),[h]);return(0,i.jsx)(t.WPr,{placeholder:"Search...","aria-label":"Search for a system to select",popupRender:n?e=>_(e,n):void 0,"data-testid":"system-select",...o,styles:{popup:{root:{minWidth:"500px"}},...o.styles},filterOption:!1,options:m,onSearch:S,loading:o.loading||c})}},79283:function(e,a,n){"use strict";n.d(a,{l:function(){return F}});var i=n(24246),t=n(20595),s=n(72707),r=n.n(s);let o=e=>{let{data:{formattedTitle:a,description:n,name:s,primaryName:r}}=e;return(0,i.jsxs)(t.jqI,{gap:12,title:"".concat(a," - ").concat(n),children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("strong",{children:r||s}),r&&": ".concat(s)]}),(0,i.jsx)("em",{children:n})]})},l=e=>"options"in e&&Array.isArray(e.options),_=e=>({...e,className:r().option,formattedTitle:e.formattedTitle||[e.primaryName,e.name].filter(e=>e).join(": ")}),F=e=>{let{options:a,...n}=e,s=null==a?void 0:a.map(e=>l(e)?{...e,options:e.options.map(_)}:_(e));return(0,i.jsx)(t.WPr,{options:s,filterOption:(e,a)=>{var n,i;return(null==a?void 0:null===(n=a.formattedTitle)||void 0===n?void 0:n.toLowerCase().includes(e.toLowerCase()))||(null==a?void 0:null===(i=a.value)||void 0===i?void 0:i.toLowerCase().includes(e.toLowerCase()))||!1},optionFilterProp:"label",autoFocus:!0,variant:"borderless",optionRender:o,styles:{popup:{root:{minWidth:"500px"}}},className:"w-full p-0","data-testid":"taxonomy-select",...n})}},34929:function(e,a,n){"use strict";var i=n(24246),t=n(64925),s=n.n(t),r=n(27378),o=n(16134),l=n(30002),_=n(28079),F=n(57072);let d=()=>{let{isLoading:e}=(0,_.fd)(),a=(0,o.C)(_.U3),{isLoading:n}=(0,F.MO)(),i=(0,o.C)(F.qb),{isLoading:t}=(0,l.te)();return{dataUses:a,dataSubjects:(0,o.C)(l.ZL),dataCategories:i,isLoading:e||n||t}};a.Z=()=>{let{dataUses:e,dataCategories:a,dataSubjects:n,isLoading:t}=d(),o=function(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return e.split(".").slice(0,a).join(".")},l=function(e,a){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,i=a(e);if(!i)return{};let t=a(o(e,n)),s=!!i.parent_key;return{name:i.name||void 0,primaryName:s&&(null==t?void 0:t.name)!==i.name&&(null==t?void 0:t.name)||void 0}},_=function(e,a){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,{name:t,primaryName:s}=l(e,a,n);return t?s?(0,i.jsxs)(r.Fragment,{children:[(0,i.jsxs)("strong",{children:[s,":"]})," ",t]},e):(0,i.jsx)("strong",{children:t},e):e},F=a=>s()(e,{fides_key:a}),u=e=>s()(a,{fides_key:e}),c=e=>s()(n,{fides_key:e});return{getDataUses:()=>e,getDataUseByKey:F,getDataUseDisplayName:e=>_(e,F,1),getDataUseDisplayNameProps:e=>l(e,F,1),getDataCategories:()=>a,getDataCategoryByKey:u,getDataCategoryDisplayName:e=>_(e,u,2),getDataCategoryDisplayNameProps:e=>l(e,u,2),getDataSubjects:()=>n,getDataSubjectByKey:c,getDataSubjectDisplayName:e=>{let a=c(e);return a?a.name:e},getPrimaryKey:o,isLoading:t}}},8411:function(e,a,n){"use strict";n.d(a,{NA:function(){return s},Z8:function(){return t}});var i=n(85054);let t={[i._F.ER]:"Eritrea",[i._F.DJ]:"Djibouti",[i._F.MR]:"Mauritania",[i._F.NA]:"Namibia",[i._F.GH]:"Ghana",[i._F.SS]:"South Sudan",[i._F.SC]:"Seychelles",[i._F.IO]:"British Indian Ocean Territory",[i._F.GQ]:"Equatorial Guinea",[i._F.AO]:"Angola",[i._F.CG]:"Republic of the Congo",[i._F.BW]:"Botswana",[i._F.BI]:"Burundi",[i._F.DZ]:"Algeria",[i._F.TD]:"Chad",[i._F.NG]:"Nigeria",[i._F.TZ]:"Tanzania",[i._F.EH]:"Western Sahara",[i._F.SN]:"Senegal",[i._F.LR]:"Liberia",[i._F.ZA]:"South Africa",[i._F.CV]:"Cape Verde",[i._F.GM]:"Gambia",[i._F.SD]:"Sudan",[i._F.KM]:"Comoros",[i._F.SZ]:"Eswatini",[i._F.UG]:"Uganda",[i._F.MG]:"Madagascar",[i._F.RW]:"Rwanda",[i._F.CD]:"DR Congo",[i._F.CM]:"Cameroon",[i._F.SH]:"Saint Helena, Ascension and Tristan da Cunha",[i._F.TG]:"Togo",[i._F.MU]:"Mauritius",[i._F.NE]:"Niger",[i._F.BJ]:"Benin",[i._F.EG]:"Egypt",[i._F.LS]:"Lesotho",[i._F.ET]:"Ethiopia",[i._F.MA]:"Morocco",[i._F.YT]:"Mayotte",[i._F.BF]:"Burkina Faso",[i._F.RE]:"R\xe9union",[i._F.ST]:"S\xe3o Tom\xe9 and Pr\xedncipe",[i._F.CF]:"Central African Republic",[i._F.MZ]:"Mozambique",[i._F.MW]:"Malawi",[i._F.ML]:"Mali",[i._F.ZM]:"Zambia",[i._F.LY]:"Libya",[i._F.GW]:"Guinea-Bissau",[i._F.SO]:"Somalia",[i._F.KE]:"Kenya",[i._F.GN]:"Guinea",[i._F.ZW]:"Zimbabwe",[i._F.TN]:"Tunisia",[i._F.SL]:"Sierra Leone",[i._F.GA]:"Gabon",[i._F.CI]:"Ivory Coast",[i._F.JO]:"Jordan",[i._F.PK]:"Pakistan",[i._F.KP]:"North Korea",[i._F.MO]:"Macau",[i._F.AM]:"Armenia",[i._F.SY]:"Syria",[i._F.TJ]:"Tajikistan",[i._F.SA]:"Saudi Arabia",[i._F.KR]:"South Korea",[i._F.NP]:"Nepal",[i._F.PH]:"Philippines",[i._F.IQ]:"Iraq",[i._F.LB]:"Lebanon",[i._F.MN]:"Mongolia",[i._F.PS]:"Palestine",[i._F.YE]:"Yemen",[i._F.JP]:"Japan",[i._F.KZ]:"Kazakhstan",[i._F.LK]:"Sri Lanka",[i._F.MM]:"Myanmar",[i._F.KG]:"Kyrgyzstan",[i._F.CN]:"China",[i._F.AF]:"Afghanistan",[i._F.OM]:"Oman",[i._F.IN]:"India",[i._F.LA]:"Laos",[i._F.UZ]:"Uzbekistan",[i._F.MV]:"Maldives",[i._F.ID]:"Indonesia",[i._F.VN]:"Vietnam",[i._F.MY]:"Malaysia",[i._F.TW]:"Taiwan",[i._F.KH]:"Cambodia",[i._F.AE]:"United Arab Emirates",[i._F.HK]:"Hong Kong",[i._F.GE]:"Georgia (Country)",[i._F.BD]:"Bangladesh",[i._F.KW]:"Kuwait",[i._F.TM]:"Turkmenistan",[i._F.QA]:"Qatar",[i._F.BH]:"Bahrain",[i._F.BN]:"Brunei",[i._F.TH]:"Thailand",[i._F.BT]:"Bhutan",[i._F.SG]:"Singapore",[i._F.IL]:"Israel",[i._F.AZ]:"Azerbaijan",[i._F.TL]:"Timor-Leste",[i._F.IR]:"Iran",[i._F.TR]:"Turkey",[i._F.MK]:"North Macedonia",[i._F.IE]:"Ireland",[i._F.DK]:"Denmark",[i._F.SK]:"Slovakia",[i._F.MD]:"Moldova",[i._F.AX]:"\xc5land Islands",[i._F.PL]:"Poland",[i._F.BA]:"Bosnia and Herzegovina",[i._F.SM]:"San Marino",[i._F.CZ]:"Czechia",[i._F.EE]:"Estonia",[i._F.XK]:"Kosovo",[i._F.FO]:"Faroe Islands",[i._F.SJ]:"Svalbard and Jan Mayen",[i._F.GG]:"Guernsey",[i._F.FR]:"France",[i._F.NL]:"Netherlands",[i._F.FI]:"Finland",[i._F.PT]:"Portugal",[i._F.DE]:"Germany",[i._F.MT]:"Malta",[i._F.JE]:"Jersey",[i._F.IS]:"Iceland",[i._F.ES]:"Spain",[i._F.GI]:"Gibraltar",[i._F.NO]:"Norway",[i._F.CY]:"Cyprus",[i._F.RS]:"Serbia",[i._F.LT]:"Lithuania",[i._F.MC]:"Monaco",[i._F.LU]:"Luxembourg",[i._F.UA]:"Ukraine",[i._F.IM]:"Isle of Man",[i._F.RO]:"Romania",[i._F.BE]:"Belgium",[i._F.SE]:"Sweden",[i._F.ME]:"Montenegro",[i._F.LV]:"Latvia",[i._F.VA]:"Vatican City",[i._F.AT]:"Austria",[i._F.AL]:"Albania",[i._F.LI]:"Liechtenstein",[i._F.GR]:"Greece",[i._F.IT]:"Italy",[i._F.AD]:"Andorra",[i._F.GB]:"United Kingdom",[i._F.RU]:"Russia",[i._F.SI]:"Slovenia",[i._F.BY]:"Belarus",[i._F.CH]:"Switzerland",[i._F.HU]:"Hungary",[i._F.BG]:"Bulgaria",[i._F.HR]:"Croatia",[i._F.TC]:"Turks and Caicos Islands",[i._F.CW]:"Cura\xe7ao",[i._F.GP]:"Guadeloupe",[i._F.UM]:"United States Minor Outlying Islands",[i._F.GT]:"Guatemala",[i._F.PM]:"Saint Pierre and Miquelon",[i._F.BQ]:"Caribbean Netherlands",[i._F.GL]:"Greenland",[i._F.SX]:"Sint Maarten",[i._F.PA]:"Panama",[i._F.AW]:"Aruba",[i._F.MQ]:"Martinique",[i._F.AG]:"Antigua and Barbuda",[i._F.BM]:"Bermuda",[i._F.CU]:"Cuba",[i._F.GD]:"Grenada",[i._F.NI]:"Nicaragua",[i._F.LC]:"Saint Lucia",[i._F.KN]:"Saint Kitts and Nevis",[i._F.DO]:"Dominican Republic",[i._F.VC]:"Saint Vincent and the Grenadines",[i._F.BZ]:"Belize",[i._F.HT]:"Haiti",[i._F.JM]:"Jamaica",[i._F.BS]:"Bahamas",[i._F.MX]:"Mexico",[i._F.MF]:"Saint Martin",[i._F.SV]:"El Salvador",[i._F.BL]:"Saint Barth\xe9lemy",[i._F.AI]:"Anguilla",[i._F.MS]:"Montserrat",[i._F.VG]:"British Virgin Islands",[i._F.BB]:"Barbados",[i._F.HN]:"Honduras",[i._F.KY]:"Cayman Islands",[i._F.DM]:"Dominica",[i._F.TT]:"Trinidad and Tobago",[i._F.CR]:"Costa Rica",[i._F.SR]:"Suriname",[i._F.CX]:"Christmas Island",[i._F.WS]:"Samoa",[i._F.PF]:"French Polynesia",[i._F.AS]:"American Samoa",[i._F.NC]:"New Caledonia",[i._F.TK]:"Tokelau",[i._F.PW]:"Palau",[i._F.KI]:"Kiribati",[i._F.VU]:"Vanuatu",[i._F.PN]:"Pitcairn Islands",[i._F.CK]:"Cook Islands",[i._F.FJ]:"Fiji",[i._F.PG]:"Papua New Guinea",[i._F.MP]:"Northern Mariana Islands",[i._F.NU]:"Niue",[i._F.TV]:"Tuvalu",[i._F.NF]:"Norfolk Island",[i._F.TO]:"Tonga",[i._F.FM]:"Micronesia",[i._F.SB]:"Solomon Islands",[i._F.NR]:"Nauru",[i._F.WF]:"Wallis and Futuna",[i._F.GU]:"Guam",[i._F.AU]:"Australia",[i._F.NZ]:"New Zealand",[i._F.MH]:"Marshall Islands",[i._F.CC]:"Cocos (Keeling) Islands",[i._F.VE]:"Venezuela",[i._F.PY]:"Paraguay",[i._F.BR]:"Brazil",[i._F.CO]:"Colombia",[i._F.PE]:"Peru",[i._F.CL]:"Chile",[i._F.UY]:"Uruguay",[i._F.AR]:"Argentina",[i._F.GY]:"Guyana",[i._F.BO]:"Bolivia",[i._F.GF]:"French Guiana",[i._F.EC]:"Ecuador",[i._F.FK]:"Falkland Islands",[i._F.US_AL]:"Alabama",[i._F.US_AK]:"Alaska",[i._F.US_AZ]:"Arizona",[i._F.US_AR]:"Arkansas",[i._F.US_CA]:"California",[i._F.US_CO]:"Colorado",[i._F.US_CT]:"Connecticut",[i._F.US_DE]:"Delaware",[i._F.US_DC]:"District of Columbia (DC)",[i._F.US_FL]:"Florida",[i._F.US_GA]:"Georgia",[i._F.US_HI]:"Hawaii",[i._F.US_ID]:"Idaho",[i._F.US_IL]:"Illinois",[i._F.US_IN]:"Indiana",[i._F.US_IA]:"Iowa",[i._F.US_KS]:"Kansas",[i._F.US_KY]:"Kentucky",[i._F.US_LA]:"Louisiana",[i._F.US_ME]:"Maine",[i._F.US_MD]:"Maryland",[i._F.US_MA]:"Massachusetts",[i._F.US_MI]:"Michigan",[i._F.US_MN]:"Minnesota",[i._F.US_MS]:"Mississippi",[i._F.US_MO]:"Missouri",[i._F.US_MT]:"Montana",[i._F.US_NE]:"Nebraska",[i._F.US_NV]:"Nevada",[i._F.US_NH]:"New Hampshire",[i._F.US_NJ]:"New Jersey",[i._F.US_NM]:"New Mexico",[i._F.US_NY]:"New York",[i._F.US_NC]:"North Carolina",[i._F.US_ND]:"North Dakota",[i._F.US_OH]:"Ohio",[i._F.US_OK]:"Oklahoma",[i._F.US_OR]:"Oregon",[i._F.US_PA]:"Pennsylvania",[i._F.US_PR]:"Puerto Rico",[i._F.US_RI]:"Rhode Island",[i._F.US_SC]:"South Carolina",[i._F.US_SD]:"South Dakota",[i._F.US_TN]:"Tennessee",[i._F.US_TX]:"Texas",[i._F.US_UT]:"Utah",[i._F.US_VA]:"Virginia",[i._F.US_VI]:"United States Virgin Islands",[i._F.US_VT]:"Vermont",[i._F.US_WA]:"Washington",[i._F.US_WV]:"West Virginia",[i._F.US_WI]:"Wisconsin",[i._F.US_WY]:"Wyoming",[i._F.CA_AB]:"Alberta",[i._F.CA_BC]:"British Columbia",[i._F.CA_MB]:"Manitoba",[i._F.CA_NB]:"New Brunswick",[i._F.CA_NL]:"Newfoundland and Labrador",[i._F.CA_NS]:"Nova Scotia",[i._F.CA_ON]:"Ontario",[i._F.CA_PE]:"Prince Edward Island",[i._F.CA_QC]:"Quebec",[i._F.CA_SK]:"Saskatchewan",[i._F.CA_NT]:"Northwest Territories",[i._F.CA_NU]:"Nunavut",[i._F.CA_YT]:"Yukon",[i._F.CA]:"Canada",[i._F.US]:"United States",[i._F.MEXICO_CENTRAL_AMERICA]:"Mexico and Central America",[i._F.CARIBBEAN]:"Caribbean",[i._F.EEA]:"European Economic Area (EEA)",[i._F.NON_EEA]:"Non European Economic Area",[i._F.GLOBAL]:"Global"},s=new Map(Object.entries(t));Object.entries(t).map(e=>({value:e[0],label:e[1]}))},14908:function(e,a,n){"use strict";var i=n(86677),t=n(27378);let s=e=>e.startsWith("#")?e.slice(1):e;a.Z=e=>{let{tabKeys:a,initialTab:n}=e,r=(0,i.useRouter)(),o=r.asPath.split("#")[1]||a[0],[l,_]=(0,t.useState)(o);return(0,t.useEffect)(()=>{n&&a.includes(n)&&_(n)},[n,a,r.isReady]),{activeTab:l,onTabChange:(0,t.useCallback)(async e=>{if(!a.includes(e)){await r.replace({pathname:r.pathname,query:r.query,hash:void 0}),_(a[0]);return}r.isReady&&(await r.replace({pathname:r.pathname,query:r.query,hash:s(e)},void 0,{shallow:!0}),_(e))},[r,a]),setActiveTab:_}}},77685:function(e,a,n){"use strict";n.d(a,{i:function(){return N}});var i=n(24246),t=n(20595),s=n(34090),r=n(27378),o=n(55484),l=n(16134),_=n(25980),F=n(97181),d=n(40324),u=n(812),c=n(17245),m=n(45938),h=n(8133),S=n(33335),p=n(32885),g=n(57865),y=n(93237),C=n(65450),v=n(36345);let{Text:f}=t.AntTypography,b={name:"",vendor_id:void 0,description:"",tags:[]},N=e=>{let{onSuccessfulSubmit:a,toastOnSuccess:n,...N}=e,[A,M]=(0,r.useState)(!1),U=(0,l.T)(),{tcf:x,dictionaryService:I}=(0,_.hz)(),{isLoading:j}=(0,p.Rd)(void 0,{skip:!I}),w=(0,l.C)(p.o),T=(0,l.C)(g.gU),[B]=(0,C.in)(),[k]=(0,p.Qk)(),[L]=(0,C.f7)(),{successAlert:E,errorAlert:G}=(0,c.VY)(),{setSuggestions:R,setLockedForGVL:D}=g.dictSuggestionsSlice.actions,P=(0,r.useRef)(null),K=(0,r.useMemo)(()=>o.Ry().shape({name:o.Z_().required().label("System name").test("is-unique","",async(e,a)=>{let{data:n}=await B({page:1,size:10,search:e});return!((null==n?void 0:n.items)||[]).filter(a=>a.name===e).some(a=>a.name===e)||a.createError({message:'You already have a system called "'.concat(e,'". Please specify a unique name for this system.')})})}),[B]),O=e=>{if(I){if(!e){U(R("hiding")),U(D(!1));return}U(R("showing")),x&&(0,u.cj)(e)===u.c6.GVL?U(D(!0)):U(D(!1))}},W=()=>{N.onClose(),U(R("initial")),U(D(!1))},V=async e=>{if(M(!0),e.vendor_id){let i=await k([e.vendor_id]);if((0,u.D4)(i))G((0,u.e$)(i.error));else{let{data:e}=i,t=e.systems[0];null==a||a(t.fides_key,t.name),n&&E("".concat(e.name," has been added to your system inventory.")),W()}}else{let i={...e,fides_key:(0,S.E)(e.name),system_type:"",body:"",privacy_declarations:[]},t=await L(i);if((0,u.D4)(t))G((0,u.e$)(t.error));else{let{fides_key:i,name:s}=t.data;null==a||a(i,s),n&&E("".concat(e.name," has been added to your system inventory."))}W()}M(!1)};return(0,i.jsx)(h.Z,{title:"Add New System",...N,onClose:W,children:(0,i.jsx)(s.J9,{initialValues:b,onSubmit:V,validationSchema:K,innerRef:P,children:e=>{let{dirty:a,isValid:n}=e;return(0,i.jsxs)(s.l0,{children:[(0,i.jsx)(m.Gt,{id:"new-system-modal",name:"Add New System"}),(0,i.jsxs)(t.jqI,{vertical:!0,gap:20,className:"pb-6 pt-4",children:[(0,i.jsx)(f,{children:"Fides will add this system to your inventory and configure it for consent using the categories of consent listed below. Optionally, you can check if this system is listed within the Fides compass library by selecting the compass icon below."}),I?(0,i.jsx)(v.Z,{label:"System name",options:w,onVendorSelected:O,isCreate:!0,lockedForGVL:T,isLoading:j}):(0,i.jsx)(d.j0,{id:"name",name:"name",label:"System name",tooltip:"Give the system a unique, and relevant name for reporting purposes. e.g. “Email Data Warehouse”",variant:"stacked",isRequired:!0}),(0,i.jsx)(y.Sv,{id:"description",name:"description",label:"Description",tooltip:"What services does this system perform?",disabled:T}),(0,i.jsx)(F.d,{mode:"tags",id:"tags",name:"tags",label:"System Tags",options:[],layout:"stacked",tooltip:"Are there any tags to associate with this system?",disabled:T})]}),(0,i.jsxs)(t.jqI,{justify:"space-between",children:[(0,i.jsx)(t.wpx,{htmlType:"reset",onClick:W,"data-testid":"cancel-btn",children:"Cancel"}),(0,i.jsx)(t.wpx,{htmlType:"submit",type:"primary",disabled:j||!a||!n,loading:A,"data-testid":"save-btn",children:"Save"})]})]})}})})}},93237:function(e,a,n){"use strict";n.d(a,{Sv:function(){return m},Yb:function(){return c},dQ:function(){return h},lm:function(){return S}});var i=n(24246),t=n(20595),s=n(34090),r=n(27378),o=n(16134),l=n(40324),_=n(46238),F=n(32885),d=n(57865);let u=(e,a,n)=>{var i,t;let[l,_,{setValue:u,setTouched:c}]=(0,s.U$)({name:e,type:n||void 0}),m=!!(_.touched&&_.error),{error:h}=_,S={...l,value:null!==(i=l.value)&&void 0!==i?i:""},[p,g]=(0,r.useState)(null!==(t=S.value)&&void 0!==t?t:""),{values:y}=(0,s.u6)(),{vendor_id:C}=y,v=(0,o.C)((0,F.$e)(C||"")),f=(0,o.C)(d.bN),b=(0,r.useRef)();return(0,r.useEffect)(()=>{"showing"===f&&g(S.value)},[f,g]),(0,r.useEffect)(()=>{if("showing"===f&&v){let n=a?a(v):v[e];S.value!==n&&(u(n),setTimeout(()=>{var e;c(!0),null===(e=b.current)||void 0===e||e.blur()},300))}},[f,u,v,b.current]),(0,r.useEffect)(()=>{"hiding"===f&&u(p)},[f,u,p]),{field:S,isInvalid:m,isShowingSuggestions:f,error:h,inputRef:b}},c=e=>{let{label:a,tooltip:n,disabled:s,isRequired:r=!1,dictField:o,name:F,placeholder:d,id:c}=e,{field:m,isInvalid:h,isShowingSuggestions:S,error:p,inputRef:g}=u(F,o);return(0,i.jsx)(t.NIc,{isInvalid:h,isRequired:r,children:(0,i.jsxs)(t.gCW,{alignItems:"start",children:[(0,i.jsxs)(t.kCb,{alignItems:"center",children:[(0,i.jsx)(l.__,{htmlFor:c||F,fontSize:"xs",my:0,mr:1,children:a}),(0,i.jsx)(_.b,{label:n})]}),(0,i.jsx)(l.oi,{...m,ref:g,isRequired:r,isDisabled:s,"data-testid":"input-".concat(m.name),placeholder:d,isPassword:!1,color:"showing"===S?"complimentary.500":"gray.800"}),(0,i.jsx)(l.Bc,{isInvalid:h,message:p,fieldName:m.name})]})})},m=e=>{let{label:a,tooltip:n,disabled:s,isRequired:r=!1,dictField:o,name:F,id:d}=e,{field:c,isInvalid:m,isShowingSuggestions:h,error:S}=u(F,o);return(0,i.jsx)(t.NIc,{isInvalid:m,isRequired:r,children:(0,i.jsxs)(t.gCW,{alignItems:"start",children:[(0,i.jsxs)(t.kCb,{alignItems:"center",children:[(0,i.jsx)(l.__,{htmlFor:d||F,fontSize:"xs",my:0,mr:1,children:a}),(0,i.jsx)(_.b,{label:n})]}),(0,i.jsx)(t.gxH,{...c,size:"sm","data-testid":"input-".concat(c.name),focusBorderColor:"primary.600",color:"showing"===h?"complimentary.500":"gray.800",isDisabled:s}),(0,i.jsx)(l.Bc,{isInvalid:m,message:S,fieldName:c.name})]})})},h=e=>{let{label:a,tooltip:n,dictField:r,name:o,id:F,disabled:d}=e,{field:c,isInvalid:m,error:h}=u(o,r,"checkbox");return(0,i.jsxs)(t.NIc,{isInvalid:m,width:"full",children:[(0,i.jsxs)(t.xuv,{display:"flex",alignItems:"center",justifyContent:"space-between",children:[(0,i.jsxs)(t.Ugi,{spacing:1,children:[(0,i.jsx)(l.__,{htmlFor:F||o,fontSize:"xs",my:0,mr:0,children:a}),(0,i.jsx)(_.b,{label:n})]}),(0,i.jsx)(t.Ugi,{children:(0,i.jsx)(s.gN,{name:c.name,children:e=>{let{form:{setFieldValue:a}}=e;return(0,i.jsx)(t.rAg,{checked:c.checked,onChange:e=>{a(c.name,e)},disabled:d,className:"mr-2","data-testid":"input-".concat(c.name),size:"small"})}})})]}),(0,i.jsx)(l.Bc,{isInvalid:m,message:h,fieldName:c.name})]})},S=e=>{let{label:a,tooltip:n,dictField:r,name:o,id:F,disabled:d}=e,{field:c,isInvalid:m,error:h,isShowingSuggestions:S}=u(o,r,"numeric"),{setFieldValue:p}=(0,s.u6)();return(0,i.jsxs)(t.NIc,{isInvalid:m,width:"full",children:[(0,i.jsxs)(t.xuv,{display:"flex",alignItems:"center",justifyContent:"space-between",children:[(0,i.jsxs)(t.Ugi,{spacing:1,children:[(0,i.jsx)(l.__,{htmlFor:F||o,fontSize:"xs",my:0,mr:0,children:a}),(0,i.jsx)(_.b,{label:n})]}),(0,i.jsx)(t.Ugi,{children:(0,i.jsxs)(t.Y2U,{value:c.value,name:c.name,size:"xs",onBlur:c.onBlur,onChange:e=>{p(c.name,e)},w:"100%",colorScheme:"terracotta",inputMode:"numeric","data-testid":"input-".concat(c.name),color:"showing"===S?"complimentary.500":"gray.800",focusBorderColor:"primary.600",isDisabled:d,children:[(0,i.jsx)(t.zuI,{}),(0,i.jsxs)(t.FiK,{children:[(0,i.jsx)(t.WQu,{}),(0,i.jsx)(t.Y_d,{})]})]})})]}),(0,i.jsx)(l.Bc,{isInvalid:m,message:h,fieldName:c.name})]})}},99830:function(e){e.exports={toastLink:"ToastLink_toastLink__OLSeq"}},72707:function(e){e.exports={option:"TaxonomySelect_option__vY6v2"}}}]);