ethyca-fides 2.68.1b3__py2.py3-none-any.whl → 2.68.1b4__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 (248) hide show
  1. {ethyca_fides-2.68.1b3.dist-info → ethyca_fides-2.68.1b4.dist-info}/METADATA +1 -1
  2. {ethyca_fides-2.68.1b3.dist-info → ethyca_fides-2.68.1b4.dist-info}/RECORD +227 -221
  3. fides/_version.py +3 -3
  4. fides/api/alembic/migrations/versions/b1a2c3d4e5f6_add_location_to_privacy_request.py +26 -0
  5. fides/api/api/v1/api.py +2 -0
  6. fides/api/api/v1/endpoints/dsr_package_link.py +167 -0
  7. fides/api/api/v1/endpoints/privacy_request_endpoints.py +30 -0
  8. fides/api/api/v1/endpoints/user_endpoints.py +4 -0
  9. fides/api/models/privacy_request/privacy_request.py +1 -0
  10. fides/api/models/privacy_request/webhook.py +33 -1
  11. fides/api/oauth/utils.py +122 -57
  12. fides/api/schemas/application_config.py +7 -0
  13. fides/api/schemas/connection_configuration/connection_type_system_map.py +6 -0
  14. fides/api/schemas/enums/__init__.py +0 -0
  15. fides/api/schemas/enums/connection_category.py +20 -0
  16. fides/api/schemas/enums/integration_feature.py +23 -0
  17. fides/api/schemas/external_https.py +9 -0
  18. fides/api/schemas/privacy_request.py +16 -0
  19. fides/api/schemas/saas/display_info.py +19 -0
  20. fides/api/schemas/saas/saas_config.py +2 -0
  21. fides/api/schemas/storage/storage.py +2 -0
  22. fides/api/service/privacy_request/request_runner_service.py +41 -4
  23. fides/api/util/connection_type.py +20 -0
  24. fides/api/util/text.py +51 -0
  25. fides/common/api/v1/urn_registry.py +3 -0
  26. fides/service/privacy_request/privacy_request_service.py +83 -0
  27. fides/ui-build/static/admin/404.html +1 -1
  28. fides/ui-build/static/admin/_next/static/LRCvfOqg1kP5kGnkD84G4/_buildManifest.js +1 -0
  29. fides/ui-build/static/admin/_next/static/chunks/1099-b973dfdfc5c3de90.js +1 -0
  30. fides/ui-build/static/admin/_next/static/chunks/{1345-ab756811e19ff4fc.js → 1345-b60d1f3442379c73.js} +1 -1
  31. fides/ui-build/static/admin/_next/static/chunks/{1817-fd21f1f5ef0faffa.js → 1817-74692de5d760a664.js} +1 -1
  32. fides/ui-build/static/admin/_next/static/chunks/{1975.16126463309143e3.js → 1975.78e719130cfe3fd6.js} +1 -1
  33. fides/ui-build/static/admin/_next/static/chunks/{2921-0e5cc63a82e31830.js → 2921-2d9261e8e2e127c0.js} +1 -1
  34. fides/ui-build/static/admin/_next/static/chunks/{3620-6cceae71bae5b531.js → 3620-ebd89f91b82661e8.js} +1 -1
  35. fides/ui-build/static/admin/_next/static/chunks/3729-ccf90cdaae158f39.js +1 -0
  36. fides/ui-build/static/admin/_next/static/chunks/3847-2759bf1f47a1d29e.js +1 -0
  37. fides/ui-build/static/admin/_next/static/chunks/{3855-64541570e2f838fb.js → 3855-4174a4d4c205d6e8.js} +1 -1
  38. fides/ui-build/static/admin/_next/static/chunks/{3872-7a18d18a5e287e4e.js → 3872-660aba76572c811b.js} +1 -1
  39. fides/ui-build/static/admin/_next/static/chunks/{3923-5c87b3d7f1626678.js → 3923-c6cdc2e5278ae9a7.js} +1 -1
  40. fides/ui-build/static/admin/_next/static/chunks/{401-3902e3e98790d401.js → 401-8bc2c6c84172c096.js} +1 -1
  41. fides/ui-build/static/admin/_next/static/chunks/{4121-64ef70ef906bbdd0.js → 4121-9a4ebceff9accb7f.js} +1 -1
  42. fides/ui-build/static/admin/_next/static/chunks/{4608-70521532195124de.js → 4608-4d31340b0d0157c1.js} +1 -1
  43. fides/ui-build/static/admin/_next/static/chunks/4786-aaef673b30c19e2e.js +1 -0
  44. fides/ui-build/static/admin/_next/static/chunks/4808-a654c7f7a1ca62c8.js +1 -0
  45. fides/ui-build/static/admin/_next/static/chunks/{4844-351f99b6644b654e.js → 4844-cd7e1d0c7bb94094.js} +1 -1
  46. fides/ui-build/static/admin/_next/static/chunks/{5258-c6f96dc740eb5fb1.js → 5258-bc4a25d43e4aa07d.js} +1 -1
  47. fides/ui-build/static/admin/_next/static/chunks/{5487-338800277d36b8d7.js → 5487-37c78c4799ba5223.js} +1 -1
  48. fides/ui-build/static/admin/_next/static/chunks/549-2213dc1c34143cda.js +1 -0
  49. fides/ui-build/static/admin/_next/static/chunks/{6084-da63f20d9416a982.js → 6084-55cc66e7c94f0686.js} +1 -1
  50. fides/ui-build/static/admin/_next/static/chunks/{6853-1d947b75eb07188c.js → 6853-313ce974d33432fb.js} +1 -1
  51. fides/ui-build/static/admin/_next/static/chunks/{6954-24f9a4f27d67b732.js → 6954-021bd06d0ab59c3c.js} +1 -1
  52. fides/ui-build/static/admin/_next/static/chunks/{7476-a0dd03bfccf60d0c.js → 7476-2fc286c2a9125eb8.js} +1 -1
  53. fides/ui-build/static/admin/_next/static/chunks/{7630-9fbe06cfb98266fe.js → 7630-b9a41262a69edf5e.js} +1 -1
  54. fides/ui-build/static/admin/_next/static/chunks/768-034e121688a3bbdd.js +1 -0
  55. fides/ui-build/static/admin/_next/static/chunks/{787-3dd31844cf7fec55.js → 787-8df7118742e84908.js} +1 -1
  56. fides/ui-build/static/admin/_next/static/chunks/{79-dcd20e8b09501c17.js → 79-d2ace89108ead8ae.js} +1 -1
  57. fides/ui-build/static/admin/_next/static/chunks/{796-8773e04b64ce2260.js → 796-2de6dac5f311d54a.js} +1 -1
  58. fides/ui-build/static/admin/_next/static/chunks/8002-cfdc6574bd841892.js +1 -0
  59. fides/ui-build/static/admin/_next/static/chunks/{9046-57eab238570b8bf4.js → 9046-c44e41da49338c6c.js} +1 -1
  60. fides/ui-build/static/admin/_next/static/chunks/{9676.bf0a8a6ff6dfd2af.js → 9676.b7d5d1d90b9da224.js} +1 -1
  61. fides/ui-build/static/admin/_next/static/chunks/{9826-756c958aecab59a2.js → 9826-d9addbd5ac990fa4.js} +1 -1
  62. fides/ui-build/static/admin/_next/static/chunks/{9951-cdf73904a3adb27b.js → 9951-6ee5c0a23951a07f.js} +1 -1
  63. fides/ui-build/static/admin/_next/static/chunks/pages/{404-dd625a559ada46ca.js → 404-9644eb282f2dcd71.js} +1 -1
  64. fides/ui-build/static/admin/_next/static/chunks/pages/{_app-b6b09b2878b77b21.js → _app-284cba7174fa1f16.js} +11 -11
  65. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{manual-92cf5e313be1f9e2.js → manual-42b7fd34712f49bd.js} +1 -1
  66. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-d6c525ee731a2993.js → multiple-4f164eab0960bbe0.js} +1 -1
  67. fides/ui-build/static/admin/_next/static/chunks/pages/{add-systems-5664a3ea796e5ffb.js → add-systems-985d3c9179e69d7f.js} +1 -1
  68. fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-78f13de90111fd80.js → add-vendors-61090926e5f98a5d.js} +1 -1
  69. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{configure-0fc678f3d6d2fcec.js → configure-17ffe691b91cee2e.js} +1 -1
  70. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-126db59dc25ca326.js → [id]-95c13bca5c1e575e.js} +1 -1
  71. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-experience-289605267d6cce7e.js → privacy-experience-609399510a60beb9.js} +1 -1
  72. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-e9fd9b28ac9705af.js → [id]-d7d8f228ac74b26e.js} +1 -1
  73. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-28c003b6043bd16c.js → new-821c0f82d5a2b7d4.js} +1 -1
  74. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-notices-c643eff04525298e.js → privacy-notices-8365782543cf6ab9.js} +1 -1
  75. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-3ef5d01779a26455.js → properties-40a7aa65f4d13cf9.js} +1 -1
  76. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{reporting-baa4a2f8f08ac224.js → reporting-e4bacfc5c2ed2324.js} +1 -1
  77. fides/ui-build/static/admin/_next/static/chunks/pages/{consent-8d4be9e7ec7d2a35.js → consent-70c5c6aa5389d99f.js} +1 -1
  78. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-f27ec4578c674181.js → [resourceUrn]-adc500a03e239857.js} +1 -1
  79. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-27b6c255bd9e73b6.js → [projectUrn]-3207f62e5012611b.js} +1 -1
  80. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{projects-0f66dac32040519c.js → projects-7b42dee0fb696658.js} +1 -1
  81. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-3b938562df81c4b0.js → [resourceUrn]-c8b3d090e4ba60d3.js} +1 -1
  82. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-31a45ea2ca2a7f04.js +1 -0
  83. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-6172c2eb539319fd.js +1 -0
  84. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-945d354ff057fb03.js +1 -0
  85. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-d9795e00f39cf4e9.js +1 -0
  86. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{activity-21c141279e66237a.js → activity-657833fd8528280f.js} +1 -1
  87. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-3bc6a207693fd175.js → [resourceUrn]-22eec362dfbb1d2a.js} +1 -1
  88. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-da16e73df395ad1d.js → detection-4decce5ef996e563.js} +1 -1
  89. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-04b242632a114405.js → [resourceUrn]-01acdd1ad492fd89.js} +1 -1
  90. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-900fe50183a40d72.js → discovery-85fdbf4cde60d910.js} +1 -1
  91. fides/ui-build/static/admin/_next/static/chunks/pages/{datamap-4f1f7c3a9531a8f4.js → datamap-3a4b89fb21d14753.js} +1 -1
  92. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/{[...subfieldNames]-343294dcb10d9532.js → [...subfieldNames]-cb8d303f56091bd5.js} +1 -1
  93. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/{[collectionName]-1c097a0809fa5b6f.js → [collectionName]-401c8be76d9daec7.js} +1 -1
  94. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{[datasetId]-b47fa2498b534719.js → [datasetId]-97e2d375b21cfe43.js} +1 -1
  95. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{new-a31f881cab25704a.js → new-40ef544ca1f2c9b9.js} +1 -1
  96. fides/ui-build/static/admin/_next/static/chunks/pages/{dataset-858c59c9e67e318d.js → dataset-e3c763f8e71f8e24.js} +1 -1
  97. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-16c28d272225afb6.js → [id]-152e5d15705ec072.js} +1 -1
  98. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/new-651b10cae0e99a05.js +1 -0
  99. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-03c54bc9fb18d2b0.js +1 -0
  100. fides/ui-build/static/admin/_next/static/chunks/pages/{index-fec557d99211f577.js → index-3d19b9ffa15a928a.js} +1 -1
  101. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-4b0bb4ccfb237d41.js +1 -0
  102. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-78d4e0c14654148b.js +1 -0
  103. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{[id]-4a08ca7762a19700.js → [id]-72cb360a6d14e701.js} +1 -1
  104. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{add-template-343a965dcdb3d11e.js → add-template-0ed67cf774d5cbf5.js} +1 -1
  105. fides/ui-build/static/admin/_next/static/chunks/pages/{messaging-3ade4c54b1c8a11e.js → messaging-b06a2204e2a5b667.js} +1 -1
  106. fides/ui-build/static/admin/_next/static/chunks/pages/poc/{ant-components-9103bfb854f71410.js → ant-components-7050899b3f792129.js} +1 -1
  107. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{AntForm-3b97029bd4d3c3ea.js → AntForm-7c3466f4d5797e55.js} +1 -1
  108. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikAntFormItem-9d9beb8f0d8a278c.js → FormikAntFormItem-8de252f25871bab9.js} +1 -1
  109. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikControlled-84a4d8fc60f839ed.js → FormikControlled-cd6de0da47f980cf.js} +1 -1
  110. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikField-1fccf542ab2e33bf.js → FormikField-7c238a881fe30e28.js} +1 -1
  111. fides/ui-build/static/admin/_next/static/chunks/pages/poc/{forms-aa75263ae1ba67bb.js → forms-d4f3e8f67f76f146.js} +1 -1
  112. fides/ui-build/static/admin/_next/static/chunks/pages/poc/{table-migration-db334a1cbb102255.js → table-migration-c9220e20c1d93758.js} +1 -1
  113. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{[id]-11c1e4545c8f528c.js → [id]-b9d6886a3f157120.js} +1 -1
  114. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/{messaging-192a986f61c23268.js → messaging-9c1fd7867b2d80d7.js} +1 -1
  115. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/{storage-9216ac993d71387e.js → storage-fc959ed21dbce38c.js} +1 -1
  116. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-e55ec84d5380401d.js → configure-44a4a638dcb2722a.js} +1 -1
  117. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-1433c9f9501a884f.js +1 -0
  118. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-a74b51b704b80cb2.js → [id]-16e0b42cb342aa5f.js} +1 -1
  119. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-8d23f0c55ff6510a.js → add-property-ebd114a86b809391.js} +1 -1
  120. fides/ui-build/static/admin/_next/static/chunks/pages/{properties-77acceac4f99e7af.js → properties-901be5fa4a48f48c.js} +1 -1
  121. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-da9ced1e20681154.js +1 -0
  122. fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/{alpha-6aad3f563ed03b3f.js → alpha-0174554c0ac5958f.js} +1 -1
  123. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{about-c1b8f3606d160bb1.js → about-6f45ddbf675e66d2.js} +1 -1
  124. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/{[purpose_id]-d9f7f78810d58d08.js → [purpose_id]-275c49e6089c5c9f.js} +1 -1
  125. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{consent-ee2c7dde99b1dafb.js → consent-1a8d05e19f06d857.js} +1 -1
  126. fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-49d86b9ca4523ca6.js +1 -0
  127. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-31c270d228e00581.js → domain-records-f71b4b95d91db926.js} +1 -1
  128. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domains-996b3f250dd3ea1f.js → domains-a595cad18cf04673.js} +1 -1
  129. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{email-templates-ee94981326ddcbf4.js → email-templates-6f7f9751689b042c.js} +1 -1
  130. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-0b831c58966782b8.js → locations-e2c88d7f779fe604.js} +1 -1
  131. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{organization-94271ba4a224a353.js → organization-c65acd2b7ab04753.js} +1 -1
  132. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-41b8136e50320fd3.js → regulations-c1c699eeb40a9dc0.js} +1 -1
  133. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/{test-datasets-52b45569cbc82e60.js → test-datasets-a274e2191b87e315.js} +1 -1
  134. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-36d74e93e54aabaf.js → [id]-4a48b4f996a64957.js} +1 -1
  135. fides/ui-build/static/admin/_next/static/chunks/pages/{systems-24dfc8e2279ced2e.js → systems-30debc87925634d9.js} +1 -1
  136. fides/ui-build/static/admin/_next/static/chunks/pages/{taxonomy-d9675cf5e6083b27.js → taxonomy-ca625b1296a029f0.js} +1 -1
  137. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-866826d7959df487.js → [id]-7a3180b235eb8846.js} +1 -1
  138. fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-e63b61a8f99ccd57.js → user-management-5e2d0acf575252ca.js} +1 -1
  139. fides/ui-build/static/admin/_next/static/chunks/{webpack-6d0a487039bcf30c.js → webpack-4502d4d67006b48f.js} +1 -1
  140. fides/ui-build/static/admin/_next/static/css/43d0c0fc207767eb.css +1 -0
  141. fides/ui-build/static/admin/add-systems/manual.html +1 -1
  142. fides/ui-build/static/admin/add-systems/multiple.html +1 -1
  143. fides/ui-build/static/admin/add-systems.html +1 -1
  144. fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
  145. fides/ui-build/static/admin/consent/configure.html +1 -1
  146. fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
  147. fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
  148. fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
  149. fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
  150. fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
  151. fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
  152. fides/ui-build/static/admin/consent/properties.html +1 -1
  153. fides/ui-build/static/admin/consent/reporting.html +1 -1
  154. fides/ui-build/static/admin/consent.html +1 -1
  155. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
  156. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
  157. fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
  158. fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
  159. fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
  160. fides/ui-build/static/admin/data-catalog.html +1 -1
  161. fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +1 -1
  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/login/[provider].html +1 -1
  184. fides/ui-build/static/admin/login.html +1 -1
  185. fides/ui-build/static/admin/messaging/[id].html +1 -1
  186. fides/ui-build/static/admin/messaging/add-template.html +1 -1
  187. fides/ui-build/static/admin/messaging.html +1 -1
  188. fides/ui-build/static/admin/poc/ant-components.html +1 -1
  189. fides/ui-build/static/admin/poc/form-experiments/AntForm.html +1 -1
  190. fides/ui-build/static/admin/poc/form-experiments/FormikAntFormItem.html +1 -1
  191. fides/ui-build/static/admin/poc/form-experiments/FormikControlled.html +1 -1
  192. fides/ui-build/static/admin/poc/form-experiments/FormikField.html +1 -1
  193. fides/ui-build/static/admin/poc/form-experiments/FormikSpreadField.html +1 -1
  194. fides/ui-build/static/admin/poc/forms.html +1 -1
  195. fides/ui-build/static/admin/poc/table-migration.html +1 -1
  196. fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
  197. fides/ui-build/static/admin/privacy-requests/configure/messaging.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.html +1 -1
  210. fides/ui-build/static/admin/settings/domain-records.html +1 -1
  211. fides/ui-build/static/admin/settings/domains.html +1 -1
  212. fides/ui-build/static/admin/settings/email-templates.html +1 -1
  213. fides/ui-build/static/admin/settings/locations.html +1 -1
  214. fides/ui-build/static/admin/settings/organization.html +1 -1
  215. fides/ui-build/static/admin/settings/regulations.html +1 -1
  216. fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
  217. fides/ui-build/static/admin/systems/configure/[id].html +1 -1
  218. fides/ui-build/static/admin/systems.html +1 -1
  219. fides/ui-build/static/admin/taxonomy.html +1 -1
  220. fides/ui-build/static/admin/user-management/new.html +1 -1
  221. fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
  222. fides/ui-build/static/admin/user-management.html +1 -1
  223. fides/ui-build/static/admin/_next/static/_BLI2ArqQzY5XnXbrcxa2/_buildManifest.js +0 -1
  224. fides/ui-build/static/admin/_next/static/chunks/1099-7b2085a3931da9e4.js +0 -1
  225. fides/ui-build/static/admin/_next/static/chunks/1138-0d846ffef62c580f.js +0 -1
  226. fides/ui-build/static/admin/_next/static/chunks/3729-7d2d52400f1f7413.js +0 -1
  227. fides/ui-build/static/admin/_next/static/chunks/4786-53ef1662f2d0d98c.js +0 -1
  228. fides/ui-build/static/admin/_next/static/chunks/4808-8713433c84a62efe.js +0 -1
  229. fides/ui-build/static/admin/_next/static/chunks/549-e6453a3526023e85.js +0 -1
  230. fides/ui-build/static/admin/_next/static/chunks/602-80d113e801d7407d.js +0 -1
  231. fides/ui-build/static/admin/_next/static/chunks/8002-dcd02da6e5649a1c.js +0 -1
  232. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-ebf5e7fa4e2ffb49.js +0 -1
  233. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-b27c660039d951c9.js +0 -1
  234. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-8ce5d24af470888e.js +0 -1
  235. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-8e35e33928abbcdc.js +0 -1
  236. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/new-68f502d8b0b5792c.js +0 -1
  237. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-1eb9acb17b133fd1.js +0 -1
  238. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-e613543818d6cbd2.js +0 -1
  239. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-8069f7c33695fd45.js +0 -1
  240. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-48f447b31c786b80.js +0 -1
  241. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-e60d398e255f4e00.js +0 -1
  242. fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-a4dad8ca9de2d07b.js +0 -1
  243. fides/ui-build/static/admin/_next/static/css/92441453b27e9c34.css +0 -1
  244. {ethyca_fides-2.68.1b3.dist-info → ethyca_fides-2.68.1b4.dist-info}/WHEEL +0 -0
  245. {ethyca_fides-2.68.1b3.dist-info → ethyca_fides-2.68.1b4.dist-info}/entry_points.txt +0 -0
  246. {ethyca_fides-2.68.1b3.dist-info → ethyca_fides-2.68.1b4.dist-info}/licenses/LICENSE +0 -0
  247. {ethyca_fides-2.68.1b3.dist-info → ethyca_fides-2.68.1b4.dist-info}/top_level.txt +0 -0
  248. /fides/ui-build/static/admin/_next/static/{_BLI2ArqQzY5XnXbrcxa2 → LRCvfOqg1kP5kGnkD84G4}/_ssgManifest.js +0 -0
@@ -0,0 +1,23 @@
1
+ from enum import Enum
2
+
3
+
4
+ class IntegrationFeature(str, Enum):
5
+ """
6
+ Features that can be enabled for different integration types.
7
+ These control which tabs and functionality are available in the integration detail view.
8
+ """
9
+
10
+ # Enables data discovery and monitoring functionality - shows "Data discovery" tab
11
+ DATA_DISCOVERY = "DATA_DISCOVERY"
12
+
13
+ # Enables data synchronization to external systems - shows "Data sync" tab
14
+ DATA_SYNC = "DATA_SYNC"
15
+
16
+ # Enables task/workflow management for manual processes - shows "Tasks" tab
17
+ TASKS = "TASKS"
18
+
19
+ # Indicates integration doesn't require connection testing - shows "Details" tab instead of "Connection" tab
20
+ WITHOUT_CONNECTION = "WITHOUT_CONNECTION"
21
+
22
+ # Enables Data Subject Request automation for SAAS integrations
23
+ DSR_AUTOMATION = "DSR_AUTOMATION"
@@ -39,3 +39,12 @@ class RequestTaskJWE(BaseModel):
39
39
  request_task_id: str
40
40
  scopes: List[str]
41
41
  iat: str
42
+
43
+
44
+ class DownloadTokenJWE(BaseModel):
45
+ """Describes JWE that is given to users to access their privacy request download package"""
46
+
47
+ privacy_request_id: str
48
+ scopes: List[str]
49
+ iat: str
50
+ exp: str
@@ -18,6 +18,7 @@ from fides.api.schemas.user import PrivacyRequestReviewer
18
18
  from fides.api.util.collection_util import Row
19
19
  from fides.api.util.encryption.aes_gcm_encryption_scheme import verify_encryption_key
20
20
  from fides.api.util.enums import ColumnSort
21
+ from fides.api.util.text import normalize_location_code
21
22
  from fides.config import CONFIG
22
23
 
23
24
 
@@ -103,6 +104,7 @@ class PrivacyRequestCreate(FidesSchema):
103
104
  property_id: Optional[str] = None
104
105
  consent_preferences: Optional[List[Consent]] = None # TODO Slated for deprecation
105
106
  source: Optional[PrivacyRequestSource] = None
107
+ location: Optional[str] = None
106
108
 
107
109
  @field_validator("encryption_key")
108
110
  @classmethod
@@ -114,6 +116,18 @@ class PrivacyRequestCreate(FidesSchema):
114
116
  verify_encryption_key(value.encode(CONFIG.security.encoding))
115
117
  return value
116
118
 
119
+ @field_validator("location")
120
+ @classmethod
121
+ def validate_location(
122
+ cls: Type["PrivacyRequestCreate"], value: Optional[str] = None
123
+ ) -> Optional[str]:
124
+ """Validate and normalize location to ISO 3166 format"""
125
+ if value is None:
126
+ return None
127
+
128
+ # nuance here is the validator will coalesce values from the less strict format to ISO 3166 (i.e. "us_ca" -> "US-CA")
129
+ return normalize_location_code(value)
130
+
117
131
 
118
132
  class PrivacyRequestResubmit(PrivacyRequestCreate):
119
133
  """Schema used to copy a privacy request for resubmission"""
@@ -321,6 +335,7 @@ class PrivacyRequestResponse(FidesSchema):
321
335
  custom_privacy_request_fields_approved_by: Optional[str] = None
322
336
  custom_privacy_request_fields_approved_at: Optional[datetime] = None
323
337
  source: Optional[PrivacyRequestSource] = None
338
+ location: Optional[str] = None
324
339
  deleted_at: Optional[datetime] = None
325
340
  deleted_by: Optional[str] = None
326
341
  finalized_at: Optional[datetime] = None
@@ -437,6 +452,7 @@ class PrivacyRequestFilter(FidesSchema):
437
452
  errored_lt: Optional[datetime] = None
438
453
  errored_gt: Optional[datetime] = None
439
454
  external_id: Optional[str] = None
455
+ location: Optional[str] = None
440
456
  action_type: Optional[ActionType] = None
441
457
  verbose: Optional[bool] = False
442
458
  include_identities: Optional[bool] = False
@@ -0,0 +1,19 @@
1
+ from typing import List, Optional
2
+
3
+ from pydantic import BaseModel, ConfigDict
4
+
5
+ from fides.api.schemas.enums.connection_category import ConnectionCategory
6
+ from fides.api.schemas.enums.integration_feature import IntegrationFeature
7
+
8
+
9
+ class SaaSDisplayInfo(BaseModel):
10
+ """
11
+ Optional display information for SAAS integrations to enhance frontend presentation.
12
+ When not provided, smart defaults will be inferred based on the integration type.
13
+ """
14
+
15
+ category: Optional[ConnectionCategory] = None
16
+ tags: Optional[List[str]] = None
17
+ enabled_features: Optional[List[IntegrationFeature]] = None
18
+
19
+ model_config = ConfigDict(use_enum_values=True)
@@ -17,6 +17,7 @@ from fides.api.graph.config import (
17
17
  from fides.api.schemas.base_class import FidesSchema
18
18
  from fides.api.schemas.limiter.rate_limit_config import RateLimitConfig
19
19
  from fides.api.schemas.policy import ActionType
20
+ from fides.api.schemas.saas.display_info import SaaSDisplayInfo
20
21
  from fides.api.schemas.saas.shared_schemas import HTTPMethod
21
22
  from fides.api.service.saas_request.saas_request_override_factory import (
22
23
  SaaSRequestOverrideFactory,
@@ -428,6 +429,7 @@ class SaaSConfig(SaaSConfigBase):
428
429
  rate_limit_config: Optional[RateLimitConfig] = None
429
430
  consent_requests: Optional[ConsentRequestMap] = None
430
431
  user_guide: Optional[str] = None
432
+ display_info: Optional[SaaSDisplayInfo] = None
431
433
 
432
434
  @property
433
435
  def top_level_endpoint_dict(self) -> Dict[str, Endpoint]:
@@ -38,6 +38,7 @@ class StorageDetails(Enum):
38
38
  MAX_RETRIES = "max_retries"
39
39
  AUTH_METHOD = "auth_method"
40
40
  ENABLE_STREAMING = "enable_streaming"
41
+ ENABLE_ACCESS_PACKAGE_REDIRECT = "enable_access_package_redirect"
41
42
  model_config = ConfigDict(extra="forbid")
42
43
 
43
44
 
@@ -60,6 +61,7 @@ class StorageDetailsS3(FileBasedStorageDetails):
60
61
  bucket: str
61
62
  max_retries: Optional[int] = 0
62
63
  enable_streaming: Optional[bool] = False
64
+ enable_access_package_redirect: Optional[bool] = False
63
65
  model_config = ConfigDict(use_enum_values=True)
64
66
 
65
67
 
@@ -41,6 +41,9 @@ from fides.api.models.privacy_request import (
41
41
  ProvidedIdentityType,
42
42
  can_run_checkpoint,
43
43
  )
44
+ from fides.api.models.privacy_request.webhook import (
45
+ generate_privacy_request_download_token,
46
+ )
44
47
  from fides.api.schemas.base_class import FidesSchema
45
48
  from fides.api.schemas.messaging.messaging import (
46
49
  AccessRequestCompleteBodyParams,
@@ -49,6 +52,7 @@ from fides.api.schemas.messaging.messaging import (
49
52
  from fides.api.schemas.policy import ActionType, CurrentStep
50
53
  from fides.api.schemas.privacy_request import PrivacyRequestStatus
51
54
  from fides.api.schemas.redis_cache import Identity
55
+ from fides.api.schemas.storage.storage import StorageType
52
56
  from fides.api.service.connectors import FidesConnector, get_connector
53
57
  from fides.api.service.connectors.consent_email_connector import (
54
58
  CONSENT_EMAIL_CONNECTOR_TYPES,
@@ -82,6 +86,7 @@ from fides.api.util.logger import Pii, _log_exception, _log_warning
82
86
  from fides.api.util.logger_context_utils import LoggerContextKeys, log_context
83
87
  from fides.api.util.memory_watchdog import memory_limiter
84
88
  from fides.common.api.v1.urn_registry import (
89
+ PRIVACY_CENTER_DSR_PACKAGE,
85
90
  PRIVACY_REQUEST_TRANSFER_TO_PARENT,
86
91
  V1_URL_PREFIX,
87
92
  )
@@ -740,14 +745,17 @@ def run_privacy_request(
740
745
  else MessagingActionType.PRIVACY_REQUEST_COMPLETE_DELETION
741
746
  )
742
747
 
743
- if message_send_enabled(
748
+ message_send_result = message_send_enabled(
744
749
  session,
745
750
  privacy_request.property_id,
746
751
  action_type,
747
752
  legacy_request_completion_enabled,
748
- ) and not policy.get_rules_for_action(
753
+ )
754
+ has_consent_rules = policy.get_rules_for_action(
749
755
  action_type=ActionType.consent
750
- ):
756
+ )
757
+
758
+ if message_send_result and not has_consent_rules:
751
759
  if not access_result_urls:
752
760
  # For DSR 3.0, if the request had both access and erasure rules, this needs to be fetched
753
761
  # from the database because the Privacy Request would have exited
@@ -763,6 +771,7 @@ def run_privacy_request(
763
771
  access_result_urls,
764
772
  identity_data,
765
773
  privacy_request.property_id,
774
+ privacy_request.id,
766
775
  )
767
776
  except (
768
777
  IdentityNotFoundException,
@@ -780,6 +789,7 @@ def initiate_privacy_request_completion_email(
780
789
  access_result_urls: list[str],
781
790
  identity_data: dict[str, Any],
782
791
  property_id: Optional[str],
792
+ privacy_request_id: str,
783
793
  ) -> None:
784
794
  """
785
795
  :param session: SQLAlchemy Session
@@ -787,6 +797,7 @@ def initiate_privacy_request_completion_email(
787
797
  :param access_result_urls: list of urls generated by access request upload
788
798
  :param identity_data: Dict of identity data
789
799
  :param property_id: Property id associated with the privacy request
800
+ :param privacy_request_id: ID of the privacy request for generating DSR package links
790
801
  """
791
802
  config_proxy = ConfigProxy(session)
792
803
  if not (
@@ -801,6 +812,32 @@ def initiate_privacy_request_completion_email(
801
812
  phone_number=identity_data.get(ProvidedIdentityType.phone_number.value),
802
813
  )
803
814
  if policy.get_rules_for_action(action_type=ActionType.access):
815
+ # Check if any rule has enable_access_package_redirect=True and enable_streaming=True in storage config
816
+ # This can be extended to other storage types and non streaming access results in the future
817
+ use_dsr_package_links = False
818
+ for rule in policy.get_rules_for_action(action_type=ActionType.access):
819
+ storage_destination = rule.get_storage_destination(session)
820
+ if (
821
+ storage_destination.type == StorageType.s3
822
+ and storage_destination.details.get("enable_access_package_redirect")
823
+ and storage_destination.details.get("enable_streaming")
824
+ ):
825
+ use_dsr_package_links = True
826
+ break
827
+
828
+ # Generate appropriate URLs based on streaming configuration
829
+ if use_dsr_package_links and config_proxy.privacy_center.url:
830
+ # Use DSR package links instead of direct storage URLs
831
+ # Generate the download token for security
832
+ download_token = generate_privacy_request_download_token(privacy_request_id)
833
+
834
+ # Generate DSR package URLs for the messaging template system
835
+ dsr_package_url = f"{config_proxy.privacy_center.url}/api{PRIVACY_CENTER_DSR_PACKAGE.format(privacy_request_id=privacy_request_id)}?token={download_token}"
836
+ download_links = [dsr_package_url]
837
+ else:
838
+ # Use original direct storage URLs
839
+ download_links = access_result_urls
840
+
804
841
  # synchronous for now since failure to send complete emails is fatal to request
805
842
  dispatch_message(
806
843
  db=session,
@@ -808,7 +845,7 @@ def initiate_privacy_request_completion_email(
808
845
  to_identity=to_identity,
809
846
  service_type=config_proxy.notifications.notification_service_type,
810
847
  message_body_params=AccessRequestCompleteBodyParams(
811
- download_links=access_result_urls,
848
+ download_links=download_links,
812
849
  subject_request_download_time_in_days=CONFIG.security.subject_request_download_link_ttl_seconds
813
850
  / 86400,
814
851
  ),
@@ -230,6 +230,23 @@ def get_saas_connection_types(
230
230
  for item in saas_types:
231
231
  connector_template = ConnectorRegistry.get_connector_template(item)
232
232
  if connector_template is not None:
233
+ # Read display info from SAAS config if available
234
+ category = None
235
+ tags = None
236
+ enabled_features = None
237
+
238
+ try:
239
+ saas_config = SaaSConfig(
240
+ **load_config_from_string(connector_template.config)
241
+ )
242
+ if saas_config.display_info:
243
+ category = saas_config.display_info.category
244
+ tags = saas_config.display_info.tags
245
+ enabled_features = saas_config.display_info.enabled_features
246
+ except Exception:
247
+ # If config parsing fails, leave display info as None
248
+ pass
249
+
233
250
  saas_connection_types.append(
234
251
  ConnectionSystemTypeMap(
235
252
  identifier=item,
@@ -239,6 +256,9 @@ def get_saas_connection_types(
239
256
  authorization_required=connector_template.authorization_required,
240
257
  user_guide=connector_template.user_guide,
241
258
  supported_actions=connector_template.supported_actions,
259
+ category=category,
260
+ tags=tags,
261
+ enabled_features=enabled_features,
242
262
  )
243
263
  )
244
264
 
fides/api/util/text.py CHANGED
@@ -2,6 +2,57 @@ import re
2
2
 
3
3
  from anyascii import anyascii # type: ignore
4
4
 
5
+ # Regex to validate a ISO 3166-2 code:
6
+ # 1. Starts with a 2 letter country code (e.g. "US", "GB") (see ISO 3166-1 alpha-2)
7
+ # 2. (Optional) Ends with a 1-3 alphanumeric character region code (e.g. "CA", "123", "X") (see ISO 3166-2)
8
+ # 3. Country & region codes must be separated by a hyphen (e.g. "US-CA")
9
+ #
10
+ # Fides also supports a special `EEA` geolocation code to denote the European
11
+ # Economic Area; this is not part of ISO 3166-2, but is supported for convenience.
12
+ VALID_ISO_3166_LOCATION_REGEX = re.compile(
13
+ r"^(?:([a-z]{2})(-[a-z0-9]{1,3})?|(eea))$", re.IGNORECASE
14
+ )
15
+
16
+
17
+ def normalize_location_code(location: str) -> str:
18
+ """
19
+ Normalize a location code to ISO 3166-2 format.
20
+
21
+ Converts location codes to the idiomatic format:
22
+ - Uppercase (e.g., "us-ca" -> "US-CA")
23
+ - Hyphens instead of underscores (e.g., "US_CA" -> "US-CA")
24
+ - Supports special codes like "EEA"
25
+
26
+ Args:
27
+ location: Input location code (e.g., "us-ca", "US_NY", "gb", "eea")
28
+
29
+ Returns:
30
+ Normalized location code (e.g., "US-CA", "US-NY", "GB", "EEA")
31
+
32
+ Raises:
33
+ ValueError: If the normalized location doesn't match ISO 3166-2 format
34
+
35
+ Examples:
36
+ normalize_location_code("us-ca") -> "US-CA"
37
+ normalize_location_code("US_NY") -> "US-NY"
38
+ normalize_location_code("gb") -> "GB"
39
+ normalize_location_code("eea") -> "EEA"
40
+ """
41
+ if not location:
42
+ raise ValueError("Location code cannot be empty")
43
+
44
+ # Convert to uppercase and replace underscores with hyphens
45
+ normalized = location.upper().replace("_", "-")
46
+
47
+ # Validate against ISO 3166-2 format
48
+ if not VALID_ISO_3166_LOCATION_REGEX.match(normalized):
49
+ raise ValueError(
50
+ f"Invalid location format '{location}'. Must follow ISO 3166 format "
51
+ "(e.g., 'US', 'US-CA', 'GB', 'CA-ON', 'EEA')"
52
+ )
53
+
54
+ return normalized
55
+
5
56
 
6
57
  def to_snake_case(text: str) -> str:
7
58
  """
@@ -73,6 +73,9 @@ MESSAGING_EMAIL_INVITE_STATUS = "/messaging/email-invite/status"
73
73
  POLICY_LIST = "/dsr/policy"
74
74
  POLICY_DETAIL = "/dsr/policy/{policy_key}"
75
75
 
76
+ # Privacy Center URLs
77
+ PRIVACY_CENTER_DSR_PACKAGE = "/privacy-request/{privacy_request_id}/access-package"
78
+
76
79
  # Privacy request URLs
77
80
  PRIVACY_REQUESTS = "/privacy-request"
78
81
  PRIVACY_REQUEST_APPROVE = "/privacy-request/administrate/approve"
@@ -13,6 +13,9 @@ from fides.api.common_exceptions import (
13
13
  from fides.api.models.audit_log import AuditLog, AuditLogAction
14
14
  from fides.api.models.policy import Policy
15
15
  from fides.api.models.pre_approval_webhook import PreApprovalWebhook
16
+ from fides.api.models.privacy_center_config import (
17
+ PrivacyCenterConfig as PrivacyCenterConfigModel,
18
+ )
16
19
  from fides.api.models.privacy_preference import PrivacyPreferenceHistory
17
20
  from fides.api.models.privacy_request import (
18
21
  ConsentRequest,
@@ -25,6 +28,10 @@ from fides.api.models.worker_task import ExecutionLogStatus
25
28
  from fides.api.schemas.api import BulkUpdateFailed
26
29
  from fides.api.schemas.messaging.messaging import MessagingActionType
27
30
  from fides.api.schemas.policy import ActionType, CurrentStep
31
+ from fides.api.schemas.privacy_center_config import LocationCustomPrivacyRequestField
32
+ from fides.api.schemas.privacy_center_config import (
33
+ PrivacyCenterConfig as PrivacyCenterConfigSchema,
34
+ )
28
35
  from fides.api.schemas.privacy_request import (
29
36
  BulkPostPrivacyRequests,
30
37
  BulkReviewResponse,
@@ -71,6 +78,78 @@ class PrivacyRequestService:
71
78
  logger.info(f"Privacy request with ID {privacy_request_id} was not found.")
72
79
  return privacy_request
73
80
 
81
+ def _validate_required_location_fields(
82
+ self, privacy_request_data: PrivacyRequestCreate
83
+ ) -> None:
84
+ """Validate that location is provided for required location fields.
85
+
86
+ Looks up the actual Privacy Center configuration to check if any location
87
+ fields are marked as required for the specified policy.
88
+ """
89
+ # If location is already provided, no validation needed
90
+ if privacy_request_data.location:
91
+ return
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()
97
+
98
+ if not privacy_center_config_record:
99
+ # No Privacy Center config found, skip validation
100
+ return
101
+
102
+ try:
103
+ # Parse the config using the Pydantic schema
104
+ privacy_center_config = PrivacyCenterConfigSchema.model_validate(
105
+ privacy_center_config_record.config
106
+ )
107
+ except Exception as exc:
108
+ logger.warning(
109
+ f"Could not parse Privacy Center config for location validation: {exc}"
110
+ )
111
+ return
112
+
113
+ # Find the action that matches the policy key
114
+ matching_action = None
115
+ for action in privacy_center_config.actions:
116
+ if action.policy_key == privacy_request_data.policy_key:
117
+ matching_action = action
118
+ break
119
+
120
+ if not matching_action or not matching_action.custom_privacy_request_fields:
121
+ # No matching action or no custom fields defined
122
+ return
123
+
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
+ )
152
+
74
153
  # pylint: disable=too-many-branches
75
154
  def create_privacy_request(
76
155
  self,
@@ -111,6 +190,9 @@ class PrivacyRequestService:
111
190
  privacy_request_data.model_dump(mode="json"),
112
191
  )
113
192
 
193
+ # Validate location is provided for required location fields
194
+ self._validate_required_location_fields(privacy_request_data)
195
+
114
196
  policy = Policy.get_by(
115
197
  db=self.db,
116
198
  field="key",
@@ -151,6 +233,7 @@ class PrivacyRequestService:
151
233
  "consent_preferences",
152
234
  "property_id",
153
235
  "source",
236
+ "location",
154
237
  ]
155
238
 
156
239
  for field in OPTIONAL_FIELDS:
@@ -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/92441453b27e9c34.css" as="style"/><link rel="stylesheet" href="/_next/static/css/92441453b27e9c34.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-6d0a487039bcf30c.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-b6b09b2878b77b21.js" defer=""></script><script src="/_next/static/chunks/pages/404-dd625a559ada46ca.js" defer=""></script><script src="/_next/static/_BLI2ArqQzY5XnXbrcxa2/_buildManifest.js" defer=""></script><script src="/_next/static/_BLI2ArqQzY5XnXbrcxa2/_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":"_BLI2ArqQzY5XnXbrcxa2","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/43d0c0fc207767eb.css" as="style"/><link rel="stylesheet" href="/_next/static/css/43d0c0fc207767eb.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-4502d4d67006b48f.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-284cba7174fa1f16.js" defer=""></script><script src="/_next/static/chunks/pages/404-9644eb282f2dcd71.js" defer=""></script><script src="/_next/static/LRCvfOqg1kP5kGnkD84G4/_buildManifest.js" defer=""></script><script src="/_next/static/LRCvfOqg1kP5kGnkD84G4/_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":"LRCvfOqg1kP5kGnkD84G4","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -0,0 +1 @@
1
+ self.__BUILD_MANIFEST=function(s,e,t,c,a,n,i,d,o,r,p,u,g,f,m,j,k,b,h,y,l,v,I,F,x,_,U,w,q,N,A,S,B,C,z,D,E,L,M,T,P,G,H,J,K,O,Q,R){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":[F,"static/chunks/pages/index-3d19b9ffa15a928a.js"],"/404":["static/chunks/pages/404-9644eb282f2dcd71.js"],"/_error":["static/chunks/pages/_error-bede3a8288930dcf.js"],"/add-systems":[s,e,F,"static/chunks/pages/add-systems-985d3c9179e69d7f.js"],"/add-systems/manual":[t,s,c,a,n,g,e,d,f,m,h,x,_,"static/chunks/pages/add-systems/manual-42b7fd34712f49bd.js"],"/add-systems/multiple":[d,j,U,"static/chunks/pages/add-systems/multiple-4f164eab0960bbe0.js"],"/consent":["static/chunks/pages/consent-70c5c6aa5389d99f.js"],"/consent/configure":[d,j,"static/chunks/pages/consent/configure-17ffe691b91cee2e.js"],"/consent/configure/add-vendors":[d,j,U,"static/chunks/pages/consent/configure/add-vendors-61090926e5f98a5d.js"],"/consent/privacy-experience":[g,w,"static/chunks/pages/consent/privacy-experience-609399510a60beb9.js"],"/consent/privacy-experience/new":[t,o,k,b,q,"static/chunks/pages/consent/privacy-experience/new-e74cb5ea87f15b40.js"],"/consent/privacy-experience/[id]":[t,o,k,b,q,"static/chunks/pages/consent/privacy-experience/[id]-95c13bca5c1e575e.js"],"/consent/privacy-notices":[w,"static/chunks/pages/consent/privacy-notices-8365782543cf6ab9.js"],"/consent/privacy-notices/new":[t,o,k,b,N,"static/chunks/pages/consent/privacy-notices/new-821c0f82d5a2b7d4.js"],"/consent/privacy-notices/[id]":[t,o,k,b,N,"static/chunks/pages/consent/privacy-notices/[id]-d7d8f228ac74b26e.js"],"/consent/properties":[A,"static/chunks/pages/consent/properties-40a7aa65f4d13cf9.js"],"/consent/reporting":["static/chunks/2150-930ffaf2c4718edc.js","static/chunks/pages/consent/reporting-e4bacfc5c2ed2324.js"],"/data-catalog":[t,c,a,"static/css/95ac327e5d70148d.css","static/chunks/pages/data-catalog-31a45ea2ca2a7f04.js"],"/data-catalog/[systemId]/projects":[t,c,a,p,y,i,"static/chunks/pages/data-catalog/[systemId]/projects-7b42dee0fb696658.js"],"/data-catalog/[systemId]/projects/[projectUrn]":[S,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-3207f62e5012611b.js"],"/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]":[t,s,c,a,e,p,y,B,i,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]-adc500a03e239857.js"],"/data-catalog/[systemId]/resources":[S,"static/chunks/pages/data-catalog/[systemId]/resources-6c3714ee97a718c1.js"],"/data-catalog/[systemId]/resources/[resourceUrn]":[t,s,c,a,e,p,y,B,i,"static/chunks/pages/data-catalog/[systemId]/resources/[resourceUrn]-c8b3d090e4ba60d3.js"],"/data-discovery/action-center":["static/chunks/pages/data-discovery/action-center-d9795e00f39cf4e9.js"],"/data-discovery/action-center/[monitorId]":[t,s,c,a,e,C,l,"static/chunks/pages/data-discovery/action-center/[monitorId]-945d354ff057fb03.js"],"/data-discovery/action-center/[monitorId]/[systemId]":[t,s,c,a,e,d,h,C,"static/css/23cf870196941c9a.css","static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-6172c2eb539319fd.js"],"/data-discovery/activity":[s,e,u,"static/chunks/pages/data-discovery/activity-657833fd8528280f.js"],"/data-discovery/detection":[s,e,u,z,"static/chunks/pages/data-discovery/detection-4decce5ef996e563.js"],"/data-discovery/detection/[resourceUrn]":[s,e,u,z,"static/chunks/pages/data-discovery/detection/[resourceUrn]-22eec362dfbb1d2a.js"],"/data-discovery/discovery":[t,s,c,a,e,u,p,D,i,"static/chunks/pages/data-discovery/discovery-85fdbf4cde60d910.js"],"/data-discovery/discovery/[resourceUrn]":[t,s,c,a,e,u,p,D,i,"static/chunks/pages/data-discovery/discovery/[resourceUrn]-01acdd1ad492fd89.js"],"/datamap":[s,a,"static/chunks/255-1bc0cbef7a59cdc6.js",e,f,E,"static/chunks/pages/datamap-3a4b89fb21d14753.js"],"/dataset":[r,"static/chunks/pages/dataset-e3c763f8e71f8e24.js"],"/dataset/new":[s,r,e,"static/chunks/pages/dataset/new-40ef544ca1f2c9b9.js"],"/dataset/[datasetId]":["static/chunks/9729-fcf6ff4e3534e4a8.js",v,"static/chunks/pages/dataset/[datasetId]-97e2d375b21cfe43.js"],"/dataset/[datasetId]/[collectionName]":[t,c,a,n,v,L,i,"static/chunks/pages/dataset/[datasetId]/[collectionName]-401c8be76d9daec7.js"],"/dataset/[datasetId]/[collectionName]/[...subfieldNames]":[t,c,a,n,v,L,i,"static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-cb8d303f56091bd5.js"],"/datastore-connection":["static/css/5f393dea1c0d031c.css","static/chunks/pages/datastore-connection-03c54bc9fb18d2b0.js"],"/datastore-connection/new":[t,s,n,r,g,M,e,T,"static/chunks/pages/datastore-connection/new-651b10cae0e99a05.js"],"/datastore-connection/[id]":[t,s,n,r,M,e,T,"static/chunks/pages/datastore-connection/[id]-152e5d15705ec072.js"],"/fides-js-docs":["static/chunks/2fbcc6de-a6c61724c327e9fa.js","static/chunks/e3251fe7-5777b5d778e6fffa.js",t,c,a,n,r,"static/chunks/5619-9b50cec521203989.js",P,"static/css/0b4b1b65cc874774.css","static/chunks/5596-bb601cbf40e47a0f.js","static/chunks/pages/fides-js-docs-1f4335dca5c09860.js"],"/integrations":[t,s,c,a,n,o,G,e,m,H,i,"static/chunks/pages/integrations-78d4e0c14654148b.js"],"/integrations/[id]":[t,s,c,a,n,o,G,e,m,H,i,"static/chunks/pages/integrations/[id]-4b0bb4ccfb237d41.js"],"/login":["static/chunks/pages/login-0cb0eb44bf2dd24c.js"],"/login/[provider]":["static/chunks/pages/login/[provider]-c58beef131c3a82d.js"],"/messaging":[t,c,"static/chunks/346-aa3b88efb85f2e28.js","static/chunks/pages/messaging-b06a2204e2a5b667.js"],"/messaging/add-template":[J,"static/chunks/pages/messaging/add-template-0ed67cf774d5cbf5.js"],"/messaging/[id]":[J,"static/chunks/pages/messaging/[id]-72cb360a6d14e701.js"],"/poc/ant-components":["static/chunks/pages/poc/ant-components-7050899b3f792129.js"],"/poc/form-experiments/AntForm":["static/chunks/pages/poc/form-experiments/AntForm-7c3466f4d5797e55.js"],"/poc/form-experiments/FormikAntFormItem":["static/chunks/pages/poc/form-experiments/FormikAntFormItem-8de252f25871bab9.js"],"/poc/form-experiments/FormikControlled":["static/chunks/pages/poc/form-experiments/FormikControlled-cd6de0da47f980cf.js"],"/poc/form-experiments/FormikField":["static/chunks/pages/poc/form-experiments/FormikField-7c238a881fe30e28.js"],"/poc/form-experiments/FormikSpreadField":[K,"static/chunks/pages/poc/form-experiments/FormikSpreadField-af097d661f6abcf4.js"],"/poc/forms":[K,"static/chunks/pages/poc/forms-d4f3e8f67f76f146.js"],"/poc/table-migration":[d,j,"static/chunks/pages/poc/table-migration-c9220e20c1d93758.js"],"/privacy-requests":[t,s,"static/chunks/3550-d04125c828d591a1.js",e,"static/chunks/pages/privacy-requests-1433c9f9501a884f.js"],"/privacy-requests/configure":["static/chunks/pages/privacy-requests/configure-44a4a638dcb2722a.js"],"/privacy-requests/configure/messaging":[s,e,"static/chunks/pages/privacy-requests/configure/messaging-9c1fd7867b2d80d7.js"],"/privacy-requests/configure/storage":[s,e,"static/chunks/pages/privacy-requests/configure/storage-fc959ed21dbce38c.js"],"/privacy-requests/[id]":[s,e,"static/css/073713cd1eddda79.css","static/chunks/pages/privacy-requests/[id]-b9d6886a3f157120.js"],"/properties":[A,"static/chunks/pages/properties-901be5fa4a48f48c.js"],"/properties/add-property":[O,"static/chunks/pages/properties/add-property-ebd114a86b809391.js"],"/properties/[id]":[O,"static/chunks/pages/properties/[id]-16e0b42cb342aa5f.js"],"/reporting/datamap":[t,s,c,a,P,e,f,E,"static/chunks/pages/reporting/datamap-da9ced1e20681154.js"],"/settings/about":["static/chunks/pages/settings/about-6f45ddbf675e66d2.js"],"/settings/about/alpha":["static/chunks/pages/settings/about/alpha-0174554c0ac5958f.js"],"/settings/consent":["static/chunks/pages/settings/consent-1a8d05e19f06d857.js"],"/settings/consent/[configuration_id]/[purpose_id]":["static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-275c49e6089c5c9f.js"],"/settings/custom-fields":[s,e,"static/chunks/pages/settings/custom-fields-49d86b9ca4523ca6.js"],"/settings/domain-records":["static/chunks/pages/settings/domain-records-f71b4b95d91db926.js"],"/settings/domains":["static/chunks/pages/settings/domains-a595cad18cf04673.js"],"/settings/email-templates":["static/chunks/pages/settings/email-templates-6f7f9751689b042c.js"],"/settings/locations":[Q,l,"static/chunks/pages/settings/locations-e2c88d7f779fe604.js"],"/settings/organization":["static/chunks/pages/settings/organization-c65acd2b7ab04753.js"],"/settings/regulations":[Q,l,"static/chunks/pages/settings/regulations-c1c699eeb40a9dc0.js"],"/systems":["static/chunks/pages/systems-30debc87925634d9.js"],"/systems/configure/[id]":[t,s,c,a,n,g,e,d,f,m,h,x,_,"static/chunks/pages/systems/configure/[id]-4a48b4f996a64957.js"],"/systems/configure/[id]/test-datasets":[r,"static/chunks/pages/systems/configure/[id]/test-datasets-a274e2191b87e315.js"],"/taxonomy":["static/chunks/678d4732-50255cc09048e643.js",t,s,c,o,"static/chunks/6148-59a59d5c5925344f.js",e,"static/css/34a7eb08b86ddb57.css","static/chunks/pages/taxonomy-ca625b1296a029f0.js"],"/user-management":[I,"static/chunks/pages/user-management-5e2d0acf575252ca.js"],"/user-management/new":[I,R,"static/chunks/pages/user-management/new-de8cb3739ab99c09.js"],"/user-management/profile/[id]":[I,R,"static/chunks/pages/user-management/profile/[id]-7a3180b235eb8846.js"],sortedPages:["/","/404","/_app","/_error","/add-systems","/add-systems/manual","/add-systems/multiple","/consent","/consent/configure","/consent/configure/add-vendors","/consent/privacy-experience","/consent/privacy-experience/new","/consent/privacy-experience/[id]","/consent/privacy-notices","/consent/privacy-notices/new","/consent/privacy-notices/[id]","/consent/properties","/consent/reporting","/data-catalog","/data-catalog/[systemId]/projects","/data-catalog/[systemId]/projects/[projectUrn]","/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]","/data-catalog/[systemId]/resources","/data-catalog/[systemId]/resources/[resourceUrn]","/data-discovery/action-center","/data-discovery/action-center/[monitorId]","/data-discovery/action-center/[monitorId]/[systemId]","/data-discovery/activity","/data-discovery/detection","/data-discovery/detection/[resourceUrn]","/data-discovery/discovery","/data-discovery/discovery/[resourceUrn]","/datamap","/dataset","/dataset/new","/dataset/[datasetId]","/dataset/[datasetId]/[collectionName]","/dataset/[datasetId]/[collectionName]/[...subfieldNames]","/datastore-connection","/datastore-connection/new","/datastore-connection/[id]","/fides-js-docs","/integrations","/integrations/[id]","/login","/login/[provider]","/messaging","/messaging/add-template","/messaging/[id]","/poc/ant-components","/poc/form-experiments/AntForm","/poc/form-experiments/FormikAntFormItem","/poc/form-experiments/FormikControlled","/poc/form-experiments/FormikField","/poc/form-experiments/FormikSpreadField","/poc/forms","/poc/table-migration","/privacy-requests","/privacy-requests/configure","/privacy-requests/configure/messaging","/privacy-requests/configure/storage","/privacy-requests/[id]","/properties","/properties/add-property","/properties/[id]","/reporting/datamap","/settings/about","/settings/about/alpha","/settings/consent","/settings/consent/[configuration_id]/[purpose_id]","/settings/custom-fields","/settings/domain-records","/settings/domains","/settings/email-templates","/settings/locations","/settings/organization","/settings/regulations","/systems","/systems/configure/[id]","/systems/configure/[id]/test-datasets","/taxonomy","/user-management","/user-management/new","/user-management/profile/[id]"]}}("static/chunks/431-86ad2beeb93c95c9.js","static/chunks/768-034e121688a3bbdd.js","static/chunks/8765-f622a35b40a7ec63.js","static/chunks/9278-08cc704317fe535e.js","static/chunks/5163-e682273cd76a7d07.js","static/chunks/699-8ca44b0de9fa20f0.js","static/css/d2d4e9a6923e6730.css","static/chunks/401-8bc2c6c84172c096.js","static/chunks/3662-f6a1ddca5ee42076.js","static/chunks/6527-0eed08abe252a918.js","static/chunks/1099-b973dfdfc5c3de90.js","static/chunks/8002-cfdc6574bd841892.js","static/chunks/5277-e8a036319456127f.js","static/chunks/9951-6ee5c0a23951a07f.js","static/chunks/4808-a654c7f7a1ca62c8.js","static/chunks/3923-c6cdc2e5278ae9a7.js","static/chunks/6419-d0c00d661b01f8fa.js","static/chunks/6084-55cc66e7c94f0686.js","static/chunks/4844-cd7e1d0c7bb94094.js","static/chunks/3620-ebd89f91b82661e8.js","static/css/10994e916bc9a00a.css","static/chunks/5487-37c78c4799ba5223.js","static/chunks/7476-2fc286c2a9125eb8.js","static/css/972dc7eef106ee7c.css","static/chunks/4786-aaef673b30c19e2e.js","static/css/304c6f148886a8d4.css","static/chunks/796-2de6dac5f311d54a.js","static/chunks/6853-313ce974d33432fb.js","static/chunks/1817-74692de5d760a664.js","static/chunks/6954-021bd06d0ab59c3c.js","static/chunks/79-d2ace89108ead8ae.js","static/chunks/3872-660aba76572c811b.js","static/chunks/3855-4174a4d4c205d6e8.js","static/chunks/3847-2759bf1f47a1d29e.js","static/chunks/1345-b60d1f3442379c73.js","static/chunks/9046-c44e41da49338c6c.js","static/chunks/5258-bc4a25d43e4aa07d.js","static/chunks/549-2213dc1c34143cda.js","static/chunks/1467-8808ec8836e033f9.js","static/chunks/4608-4d31340b0d0157c1.js","static/chunks/9187-7438242f0d380bb0.js","static/chunks/1316-2606e19807c08aa5.js","static/chunks/3729-ccf90cdaae158f39.js","static/chunks/7630-b9a41262a69edf5e.js","static/chunks/2921-2d9261e8e2e127c0.js","static/chunks/787-8df7118742e84908.js","static/chunks/9826-d9addbd5ac990fa4.js","static/chunks/4121-9a4ebceff9accb7f.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1099],{56632:function(e,t,n){var a=n(89278),i=n(80068),o=n(50098);e.exports=function(e){return function(t,n,r){var s=Object(t);if(!i(t)){var l=a(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 a=n(56632)(n(66259));e.exports=a},66259:function(e,t,n){var a=n(95372),i=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)),a(e,i(t,3),l)}},94919:function(e,t,n){var a=n(91936),i=1/0;e.exports=function(e){return e?(e=a(e))===i||e===-i?(e<0?-1:1)*17976931348623157e292:e==e?e:0:0===e?e:0}},47991:function(e,t,n){var a=n(94919);e.exports=function(e){var t=a(e),n=t%1;return t==t?n?t-n:t:0}},12627:function(e,t,n){"use strict";var a=n(24246),i=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,a.jsx)(i.l,{options:c,...r})}},79283:function(e,t,n){"use strict";n.d(t,{l:function(){return l}});var a=n(24246),i=n(96306),o=n(72707),r=n.n(o);let s=e=>{let{data:{formattedTitle:t,description:n,name:o,primaryName:r}}=e;return(0,a.jsxs)(i.jqI,{gap:12,title:"".concat(t," - ").concat(n),children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("strong",{children:r||o}),r&&": ".concat(o)]}),(0,a.jsx)("em",{children:n})]})},l=e=>{let{options:t,...n}=e,o=null==t?void 0:t.map(e=>({...e,className:r().option,formattedTitle:[e.primaryName,e.name].filter(e=>e).join(": ")}));return(0,a.jsx)(i.WPr,{options:o,filterOption:(e,t)=>(null==t?void 0:t.formattedTitle.toLowerCase().includes(e.toLowerCase()))||(null==t?void 0:t.value.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 a=n(24246),i=n(64925),o=n.n(i),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)(),a=(0,s.C)(d.qb),{isLoading:i}=(0,l.te)();return{dataUses:t,dataSubjects:(0,s.C)(l.ZL),dataCategories:a,isLoading:e||n||i}};t.Z=()=>{let{dataUses:e,dataCategories:t,dataSubjects:n,isLoading:i}=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,a=t(e);if(!a)return{};let i=t(s(e,n)),o=!!a.parent_key;return{name:a.name||void 0,primaryName:o&&(null==i?void 0:i.name)!==a.name&&(null==i?void 0:i.name)||void 0}},c=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,{name:i,primaryName:o}=l(e,t,n);return i?o?(0,a.jsxs)(r.Fragment,{children:[(0,a.jsxs)("strong",{children:[o,":"]})," ",i]},e):(0,a.jsx)("strong",{children:i},e):e},d=t=>o()(e,{fides_key:t}),f=e=>o()(t,{fides_key:e}),g=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:g,getDataSubjectDisplayName:e=>{let t=g(e);return t?t.name:e},getPrimaryKey:s,isLoading:i}}},61099:function(e,t,n){"use strict";var a=n(24246),i=n(96306),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,g]=(0,o.useState)(!1),{getDataCategoryDisplayName:v}=(0,s.Z)(),[p]=(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=>{p({staged_resource_urn:u.urn,monitor_config_id:u.monitor_config_id,user_assigned_data_categories:[...x,e]})},y=e=>{var t;p({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,a.jsxs)(l.Z,{"data-testid":"edit-category-cell",children:[h&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(i.j8w,{"data-testid":"no-classifications",color:"white",children:"None"}),!_&&(0,a.jsx)(i.j8w,{onClick:()=>g(!0),addable:!0,"data-testid":"taxonomy-add-btn","aria-label":"Add category"})]}),b&&(0,a.jsxs)(a.Fragment,{children:[x.map(e=>(0,a.jsx)(i.j8w,{"data-testid":"user-classification-".concat(e),color:"white",closable:!0,onClose:()=>y(e),closeButtonLabel:"Remove category",children:v(e)},e)),(0,a.jsx)(i.j8w,{onClick:()=>g(!0),addable:!0,"data-testid":"taxonomy-add-btn","aria-label":"Add category"})]}),w&&(0,a.jsxs)(i.j8w,{onClick:()=>g(!0),color:"white","data-testid":"classification-".concat(m),hasSparkle:!0,children:[v(m),(0,a.jsx)(i.PJP.I8b,{size:10})]}),f&&(0,a.jsx)(i.xuv,{className:"select-wrapper",position:"absolute",zIndex:10,top:"0",left:"0",width:"100%",height:"max",bgColor:"#fff",children:(0,a.jsx)(r.Z,{selectedTaxonomies:x,onChange:e=>{g(!1),j(e)},onBlur:()=>g(!1),open:!0})})]})}},26183:function(e,t,n){"use strict";var a=n(24246);n(27378),t.Z=e=>{let{children:t,className:n,...i}=e;return(0,a.jsx)("div",{className:"relative flex w-full flex-wrap items-center gap-2 overflow-x-auto py-2 ".concat(n||""),...i,children:t})}},72707:function(e){e.exports={option:"TaxonomySelect_option__vY6v2"}}}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1345],{11611:function(e){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},55193:function(e,t,i){var a=i(99736),r=i(92360);e.exports=function(e){return"symbol"==typeof e||r(e)&&"[object Symbol]"==a(e)}},14908:function(e,t,i){"use strict";var a=i(86677),r=i(27378);let s=e=>e.startsWith("#")?e.slice(1):e;t.Z=e=>{let{tabKeys:t,initialTab:i}=e,l=(0,a.useRouter)(),o=l.asPath.split("#")[1]||t[0],[n,c]=(0,r.useState)(o);return(0,r.useEffect)(()=>{i&&t.includes(i)&&c(i)},[i,t,l.isReady]),{activeTab:n,onTabChange:(0,r.useCallback)(async e=>{if(!t.includes(e)){await l.replace({pathname:l.pathname,query:l.query,hash:void 0}),c(t[0]);return}l.isReady&&(await l.replace({pathname:l.pathname,query:l.query,hash:s(e)},void 0,{shallow:!0}),c(e))},[l,t])}}},69828:function(e,t,i){"use strict";i.d(t,{Y:function(){return l}});var a=i(24246),r=i(39941),s=i(70788);let l=[(0,a.jsx)(r.PJP.S9g,{},"layers"),(0,a.jsx)(r.PJP.ehp,{},"dataset"),(0,a.jsx)(r.PJP.iA_,{},"table"),(0,a.jsx)(r.PJP.$4y,{style:{transform:"rotate(-90deg)"}},"field")];t.Z=e=>{let{resourceUrn:t,parentLink:i,onPathClick:r=()=>{}}=e,o=[];if(t||o.push({title:"All activity"}),t){o.push({title:"All activity",href:i});let e=t.split(".");e.forEach((t,i)=>{0!==i&&o.push({title:t,icon:l[i-1],onClick:t=>{t.preventDefault(),r(e.slice(0,i+1).join("."))}})})}return(0,a.jsx)(s.m,{"data-testid":"results-breadcrumb",items:o})}},1039:function(e,t,i){"use strict";i.d(t,{Z:function(){return I}});var a,r,s=i(24246),l=i(59003),o=i(92222),n=i(39941),c=i(27378),d=i(47935),u=i(70675),h=i(72625),m=i(54409),g=i(79947),x=i(87667),j=i(50169),v=i(28278),L=i(54682),p=i(74241),f=e=>{let{resourceType:t,changeTypeOverride:i}=e,a=(0,o.Cl)(),r=[];return t?t===L.D$.SCHEMA?{columns:[a.accessor(e=>e.name,{id:"name",cell:e=>(0,s.jsx)(x.Z,{changeTypeOverride:i,result:e.row.original}),header:e=>(0,s.jsx)(d.Rr,{value:"Name",...e}),size:300}),a.accessor(e=>e.urn,{id:"project",cell:e=>(0,s.jsx)(d.G3,{value:(0,p.Z)(e.getValue())}),header:e=>(0,s.jsx)(d.Rr,{value:"Project",...e})}),a.display({id:"status",cell:e=>(0,s.jsx)(j.Z,{changeTypeOverride:i,result:e.row.original}),header:e=>(0,s.jsx)(d.Rr,{value:"Status",...e})}),a.accessor(e=>e.system,{id:"system",cell:e=>(0,s.jsx)(d.G3,{value:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"System",...e})}),a.accessor(e=>e.monitor_config_id,{id:"monitor",cell:e=>(0,s.jsx)(d.G3,{value:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"Detected by",...e})}),a.accessor(e=>e.updated_at,{id:"time",cell:e=>(0,s.jsx)(h.Cy,{time:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"When",...e})}),a.display({id:"actions",cell:e=>(0,s.jsx)(m.Z,{ignoreChildActions:i===v.E.MONITORED||i===v.E.MUTED,resource:e.row.original}),header:"Actions",size:200,meta:{disableRowClick:!0}})]}:t===L.D$.TABLE?{columns:[a.accessor(e=>e.name,{id:"name",cell:e=>(0,s.jsx)(x.Z,{changeTypeOverride:i,result:e.row.original}),header:e=>(0,s.jsx)(d.Rr,{value:"Table name",...e}),size:300}),a.accessor(e=>e.description,{id:"description",cell:e=>(0,s.jsx)(d.G3,{value:e.getValue(),cellProps:e}),header:e=>(0,s.jsx)(d.Rr,{value:"Description",...e}),meta:{showHeaderMenu:!0}}),a.display({id:"status",cell:e=>(0,s.jsx)(j.Z,{changeTypeOverride:i,result:e.row.original}),header:e=>(0,s.jsx)(d.Rr,{value:"Status",...e})}),a.accessor(e=>e.monitor_config_id,{id:"monitor",cell:e=>(0,s.jsx)(d.G3,{value:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"Detected by",...e})}),a.accessor(e=>e.updated_at,{id:"time",cell:e=>(0,s.jsx)(h.Cy,{time:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"When",...e})}),a.display({id:"actions",cell:e=>(0,s.jsx)(m.Z,{resource:e.row.original}),header:"Actions",size:200,meta:{disableRowClick:!0}})]}:t===L.D$.FIELD?{columns:[a.accessor(e=>e.name,{id:"name",cell:e=>(0,s.jsx)(x.Z,{changeTypeOverride:i,result:e.row.original}),header:e=>(0,s.jsx)(d.Rr,{value:"Field name",...e}),size:300}),a.accessor(e=>e.source_data_type,{id:"data-type",cell:e=>(0,s.jsx)(g.Z,{type:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"Data type",...e})}),a.accessor(e=>e.description,{id:"description",cell:e=>(0,s.jsx)(d.G3,{value:e.getValue(),cellProps:e}),header:e=>(0,s.jsx)(d.Rr,{value:"Description",...e}),meta:{showHeaderMenu:!0}}),a.display({id:"status",cell:e=>(0,s.jsx)(j.Z,{changeTypeOverride:i,result:e.row.original}),header:e=>(0,s.jsx)(d.Rr,{value:"Status",...e})}),a.accessor(e=>e.monitor_config_id,{id:"monitor",cell:e=>(0,s.jsx)(d.G3,{value:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"Detected by",...e})}),a.accessor(e=>e.updated_at,{id:"time",cell:e=>(0,s.jsx)(h.Cy,{time:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"When",...e})}),a.display({id:"actions",cell:e=>(0,s.jsx)(m.Z,{resource:e.row.original}),header:"Actions",size:200,meta:{disableRowClick:!0}})]}:t===L.D$.ENDPOINT?{columns:[a.accessor(e=>e.name,{id:"name",cell:e=>(0,s.jsx)(x.Z,{changeTypeOverride:i,result:e.row.original}),header:e=>(0,s.jsx)(d.Rr,{value:"Object",...e}),size:300}),a.accessor(e=>e.description,{id:"description",cell:e=>(0,s.jsx)(d.G3,{value:e.getValue(),cellProps:e}),header:e=>(0,s.jsx)(d.Rr,{value:"Description",...e}),meta:{showHeaderMenu:!0}}),a.display({id:"status",cell:e=>(0,s.jsx)(j.Z,{changeTypeOverride:i,result:e.row.original}),header:e=>(0,s.jsx)(d.Rr,{value:"Status",...e})}),a.accessor(e=>e.monitor_config_id,{id:"monitor",cell:e=>(0,s.jsx)(d.G3,{value:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"Detected by",...e})}),a.accessor(e=>e.updated_at,{id:"time",cell:e=>(0,s.jsx)(h.Cy,{time:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"When",...e})}),a.display({id:"actions",cell:e=>(0,s.jsx)(m.Z,{resource:e.row.original}),header:"Actions",size:200,meta:{disableRowClick:!0}})]}:{columns:r}:{columns:r}},y=i(14908);(a=r||(r={})).ACTION_REQUIRED="action-required",a.MONITORED="monitored",a.UNMONITORED="unmonitored";let D={"action-required":{label:"Action Required",key:"action-required",filters:[L.LL.ADDITION,L.LL.REMOVAL],childFilters:[L.LL.ADDITION,L.LL.REMOVAL]},monitored:{label:"Monitored",key:"monitored",filters:[L.LL.MONITORED],childFilters:[],changeTypeOverride:v.E.MONITORED},unmonitored:{label:"Unmonitored",key:"unmonitored",filters:[L.LL.MUTED],childFilters:[],changeTypeOverride:v.E.MUTED}};var R=()=>{var e,t,i;let{activeTab:a,onTabChange:s}=(0,y.Z)({tabKeys:Object.values(r)});return{filterTabs:Object.values(D),activeTabKey:a,onTabChange:s,activeDiffFilters:null===(e=D[a])||void 0===e?void 0:e.filters,activeChildDiffFilters:null===(t=D[a])||void 0===t?void 0:t.childFilters,activeChangeTypeOverride:null===(i=D[a])||void 0===i?void 0:i.changeTypeOverride}},b=i(47182),_=i(38347),T=i(7940),w=i(80285),C=i(36168),O=i(30952);let H={items:[],total:0,page:1,size:50,pages:1},M=()=>(0,s.jsx)(n.gCW,{mt:6,p:10,spacing:4,borderRadius:"base",maxW:"70%","data-testid":"empty-state",alignSelf:"center",margin:"auto",children:(0,s.jsxs)(n.gCW,{children:[(0,s.jsx)(n.xvT,{fontSize:"md",fontWeight:"600",children:"No activity found"}),(0,s.jsx)(n.xvT,{fontSize:"sm",children:"You're up to date!"})]})});var I=e=>{let{resourceUrn:t}=e,[i,a]=(0,c.useState)(""),{filterTabs:r,activeTabKey:h,onTabChange:m,activeDiffFilters:g,activeChildDiffFilters:x,activeChangeTypeOverride:j}=R(),{PAGE_SIZES:v,pageSize:p,setPageSize:y,onPreviousPageClick:D,isPreviousPageDisabled:I,onNextPageClick:Z,isNextPageDisabled:E,startRange:k,endRange:A,pageIndex:N,setTotalPages:P,resetPageIndexToDefault:V}=(0,d.oi)();(0,c.useEffect)(()=>{V()},[t,i,V,g,x]);let{isFetching:S,isLoading:F,data:z}=(0,u.z8)({staged_resource_urn:t,page:N,size:p,child_diff_status:x,diff_status:g,search:i}),U=(0,T.G)(null==z?void 0:z.items[0]),{columns:$}=f({resourceType:U,changeTypeOverride:j}),{items:G,total:q,pages:W}=(0,c.useMemo)(()=>null!=z?z:H,[z]);(0,c.useEffect)(()=>{P(W)},[W,P]);let B=(0,c.useMemo)(()=>$,[$]),{navigateToDetectionResults:J}=(0,b.Z)(),K=(0,l.b7)({getCoreRowModel:(0,o.sC)(),getGroupedRowModel:(0,o.qe)(),getExpandedRowModel:(0,o.rV)(),getRowId:w.Z,columns:B,manualPagination:!0,data:G,columnResizeMode:"onChange"});return F?(0,s.jsx)(d.I4,{rowHeight:36,numRows:36}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.A5g,{items:r.map(e=>({key:e.key,label:e.label})),activeKey:h,onChange:e=>m(e)}),(0,s.jsx)(d.Q$,{children:(0,s.jsx)(n.kCb,{direction:"row",alignItems:"center",justifyContent:"space-between",width:"full",children:(0,s.jsxs)(n.kCb,{gap:6,align:"center",children:[(0,s.jsx)(n.xuv,{flexShrink:0,children:(0,s.jsx)(O.f,{value:i,onChange:a})}),(0,s.jsx)(_.Z,{})]})})}),(0,s.jsx)(d.ZK,{tableInstance:K,onRowClick:e=>J({resourceUrn:e.urn,filterTab:h}),getRowIsClickable:e=>U!==L.D$.FIELD||(0,C.Z)(e),emptyTableNotice:(0,s.jsx)(M,{})}),(0,s.jsx)(d.s8,{totalRows:q||0,pageSizes:v,setPageSize:y,onPreviousPageClick:D,isPreviousPageDisabled:I||S,onNextPageClick:Z,isNextPageDisabled:E||S,startRange:k,endRange:A})]})}},54409:function(e,t,i){"use strict";i.d(t,{Z:function(){return g}});var a=i(24246),r=i(39941),s=i(812),l=i(25010),o=i(54682),n=i(31883);let c=(0,r.IUT)({displayName:"MonitorOffIcon",viewBox:"0 0 12 12",path:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M5.47125 1H5.85H6.15H6.51188L6.58875 1.36914L7.52062 5.83268L6.42408 4.98635L6.03375 3.11719L5.8038 4.50761L4.99323 3.882L5.40562 1.38867L5.47125 1ZM4.80795 5.0022L4.67675 5.79545L5.48735 6.42109L5.61854 5.62783L4.80795 5.0022ZM6.73856 6.49227L6.96125 7.55866L8.42407 8.6877L8.69498 8.00228L7.94864 7.42624L7.88625 7.58398L7.83501 7.33853L6.73856 6.49227ZM8.33138 6.45844L9.07755 7.03434L9.30188 6.4668H11.55H12V5.5293H11.55H9H8.69812L8.58375 5.82031L8.33138 6.45844ZM7.27551 9.06443L7.35399 9.125H7.28813L7.27551 9.06443ZM4.49147 6.91566L5.30209 7.54131L4.79437 10.6113L4.72875 11H4.35H4.05H3.69563L3.61313 10.6406L2.64563 6.46875H0.45H0V5.53125H0.45H2.69777L3.49646 6.1477L4.15125 8.97266L4.49147 6.91566Z",fill:"currentColor"}),(0,a.jsx)("g",{clipPath:"url(#clip0_341_3102)",children:(0,a.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M10.6755 10.4168L0.164222 2.304L0.775218 1.51237L11.2865 9.62517L10.6755 10.4168Z",fill:"currentColor"})}),(0,a.jsx)("defs",{children:(0,a.jsx)("clipPath",{id:"clip0_341_3102",children:(0,a.jsx)("rect",{width:"11.5",height:"9",fill:"white",transform:"translate(0 1.5)"})})})]})}),d=(0,r.IUT)({displayName:"MonitorOnIcon",viewBox:"0 0 12 10",path:(0,a.jsx)("path",{d:"M5.47125 0H5.85H6.15H6.51188L6.58875 0.369141L7.88625 6.58398L8.58375 4.82031L8.69812 4.5293H9H11.55H12V5.4668H11.55H9.30188L8.36625 7.83398L8.25188 8.125H7.95H7.65H7.28813L7.21125 7.75586L6.03375 2.11719L4.79437 9.61133L4.72875 10H4.35H4.05H3.69563L3.61313 9.64062L2.64563 5.46875H0.45H0V4.53125H0.45H3H3.35438L3.43688 4.89062L4.15125 7.97266L5.40562 0.388672L5.47125 0Z",fill:"currentColor"})});var u=i(79494),h=i(70675),m=i(7940),g=e=>{let{resource:t,ignoreChildActions:i=!1}=e,g=(0,m.G)(t),[x,{isLoading:j}]=(0,h.v8)(),[v,{isLoading:L}]=(0,h.vi)(),[p,{isLoading:f}]=(0,h.Tl)(),{successAlert:y,errorAlert:D}=(0,l.VY)(),R=async()=>{let e=await x({staged_resource_urn:t.urn,monitor_config_id:t.monitor_config_id});(0,n.D4)(e)?D((0,s.e$)(e.error,"Failed to confirm resource")):y("Data discovery has started. The results may take some time to appear in the “Data discovery“ tab.","".concat(t.name||"The resource"," is now being monitored."))},b=async()=>{let e=await p({staged_resource_urn:t.urn});(0,n.D4)(e)?D((0,s.e$)(e.error),"Failed to un-mute resource"):y("".concat(t.name||"The resource"," has been un-muted and is now being monitored."))},_=async()=>{let e=await x({staged_resource_urn:t.urn,monitor_config_id:t.monitor_config_id,unmute_children:!0,classify_monitored_resources:!0});(0,n.D4)(e)?D((0,s.e$)(e.error),"Failed to un-mute resource"):y("Data discovery has started. The results may take some time to appear in the “Data discovery“ tab.","".concat(t.name||"The resource"," is now being monitored."))},T=async()=>{let e=await v({staged_resource_urn:t.urn});(0,n.D4)(e)?D((0,s.e$)(e.error),"Failed to mute resource"):y("Ignored data will not be monitored for changes or added to Fides datasets.","".concat(t.name||"Resource"," ignored"))},w=j||L||f,{diff_status:C,child_diff_statuses:O}=t,H=g===o.D$.SCHEMA,M=g===o.D$.FIELD,I=O&&(O[o.LL.CLASSIFICATION_ADDITION]||O[o.LL.CLASSIFICATION_UPDATE]),Z=H&&void 0===C||!M&&C===o.LL.ADDITION||I,E=C!==o.LL.MUTED,k=C===o.LL.MUTED&&!M,A=C===o.LL.MUTED&&M,N=O&&(O[o.LL.ADDITION]||O[o.LL.REMOVAL]),P=C===o.LL.MONITORED&&!i&&N&&!I;return(0,a.jsxs)(r.Ugi,{children:[(Z||P)&&(0,a.jsx)(u.Z,{title:"Monitor",icon:(0,a.jsx)(d,{}),onClick:R,disabled:w,loading:j}),A&&(0,a.jsx)(u.Z,{title:"Un-Mute",icon:(0,a.jsx)(d,{}),onClick:b,disabled:w,loading:j}),k&&(0,a.jsx)(u.Z,{title:"Monitor",icon:(0,a.jsx)(d,{}),onClick:_,disabled:w,loading:j}),E&&(0,a.jsx)(u.Z,{title:"Ignore",icon:(0,a.jsx)(c,{}),onClick:T,disabled:w,loading:L})]})}},79947:function(e,t,i){"use strict";var a=i(24246),r=i(39941);t.Z=e=>{let{type:t}=e;return(0,a.jsx)(r.kCb,{align:"center",h:"full",children:!!t&&(0,a.jsx)(r.j8w,{children:t})})}},31883:function(e,t,i){"use strict";i.d(t,{Bw:function(){return a.Bw},D4:function(){return a.D4}});var a=i(19043)}}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1345],{11611:function(e){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},55193:function(e,t,i){var a=i(99736),r=i(92360);e.exports=function(e){return"symbol"==typeof e||r(e)&&"[object Symbol]"==a(e)}},14908:function(e,t,i){"use strict";var a=i(86677),r=i(27378);let s=e=>e.startsWith("#")?e.slice(1):e;t.Z=e=>{let{tabKeys:t,initialTab:i}=e,l=(0,a.useRouter)(),o=l.asPath.split("#")[1]||t[0],[n,c]=(0,r.useState)(o);return(0,r.useEffect)(()=>{i&&t.includes(i)&&c(i)},[i,t,l.isReady]),{activeTab:n,onTabChange:(0,r.useCallback)(async e=>{if(!t.includes(e)){await l.replace({pathname:l.pathname,query:l.query,hash:void 0}),c(t[0]);return}l.isReady&&(await l.replace({pathname:l.pathname,query:l.query,hash:s(e)},void 0,{shallow:!0}),c(e))},[l,t])}}},69828:function(e,t,i){"use strict";i.d(t,{Y:function(){return l}});var a=i(24246),r=i(96306),s=i(70788);let l=[(0,a.jsx)(r.PJP.S9g,{},"layers"),(0,a.jsx)(r.PJP.ehp,{},"dataset"),(0,a.jsx)(r.PJP.iA_,{},"table"),(0,a.jsx)(r.PJP.$4y,{style:{transform:"rotate(-90deg)"}},"field")];t.Z=e=>{let{resourceUrn:t,parentLink:i,onPathClick:r=()=>{}}=e,o=[];if(t||o.push({title:"All activity"}),t){o.push({title:"All activity",href:i});let e=t.split(".");e.forEach((t,i)=>{0!==i&&o.push({title:t,icon:l[i-1],onClick:t=>{t.preventDefault(),r(e.slice(0,i+1).join("."))}})})}return(0,a.jsx)(s.m,{"data-testid":"results-breadcrumb",items:o})}},1039:function(e,t,i){"use strict";i.d(t,{Z:function(){return I}});var a,r,s=i(24246),l=i(59003),o=i(92222),n=i(96306),c=i(27378),d=i(47935),u=i(70675),h=i(72625),m=i(54409),g=i(79947),x=i(87667),j=i(50169),v=i(28278),L=i(54682),p=i(74241),f=e=>{let{resourceType:t,changeTypeOverride:i}=e,a=(0,o.Cl)(),r=[];return t?t===L.D$.SCHEMA?{columns:[a.accessor(e=>e.name,{id:"name",cell:e=>(0,s.jsx)(x.Z,{changeTypeOverride:i,result:e.row.original}),header:e=>(0,s.jsx)(d.Rr,{value:"Name",...e}),size:300}),a.accessor(e=>e.urn,{id:"project",cell:e=>(0,s.jsx)(d.G3,{value:(0,p.Z)(e.getValue())}),header:e=>(0,s.jsx)(d.Rr,{value:"Project",...e})}),a.display({id:"status",cell:e=>(0,s.jsx)(j.Z,{changeTypeOverride:i,result:e.row.original}),header:e=>(0,s.jsx)(d.Rr,{value:"Status",...e})}),a.accessor(e=>e.system,{id:"system",cell:e=>(0,s.jsx)(d.G3,{value:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"System",...e})}),a.accessor(e=>e.monitor_config_id,{id:"monitor",cell:e=>(0,s.jsx)(d.G3,{value:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"Detected by",...e})}),a.accessor(e=>e.updated_at,{id:"time",cell:e=>(0,s.jsx)(h.Cy,{time:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"When",...e})}),a.display({id:"actions",cell:e=>(0,s.jsx)(m.Z,{ignoreChildActions:i===v.E.MONITORED||i===v.E.MUTED,resource:e.row.original}),header:"Actions",size:200,meta:{disableRowClick:!0}})]}:t===L.D$.TABLE?{columns:[a.accessor(e=>e.name,{id:"name",cell:e=>(0,s.jsx)(x.Z,{changeTypeOverride:i,result:e.row.original}),header:e=>(0,s.jsx)(d.Rr,{value:"Table name",...e}),size:300}),a.accessor(e=>e.description,{id:"description",cell:e=>(0,s.jsx)(d.G3,{value:e.getValue(),cellProps:e}),header:e=>(0,s.jsx)(d.Rr,{value:"Description",...e}),meta:{showHeaderMenu:!0}}),a.display({id:"status",cell:e=>(0,s.jsx)(j.Z,{changeTypeOverride:i,result:e.row.original}),header:e=>(0,s.jsx)(d.Rr,{value:"Status",...e})}),a.accessor(e=>e.monitor_config_id,{id:"monitor",cell:e=>(0,s.jsx)(d.G3,{value:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"Detected by",...e})}),a.accessor(e=>e.updated_at,{id:"time",cell:e=>(0,s.jsx)(h.Cy,{time:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"When",...e})}),a.display({id:"actions",cell:e=>(0,s.jsx)(m.Z,{resource:e.row.original}),header:"Actions",size:200,meta:{disableRowClick:!0}})]}:t===L.D$.FIELD?{columns:[a.accessor(e=>e.name,{id:"name",cell:e=>(0,s.jsx)(x.Z,{changeTypeOverride:i,result:e.row.original}),header:e=>(0,s.jsx)(d.Rr,{value:"Field name",...e}),size:300}),a.accessor(e=>e.source_data_type,{id:"data-type",cell:e=>(0,s.jsx)(g.Z,{type:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"Data type",...e})}),a.accessor(e=>e.description,{id:"description",cell:e=>(0,s.jsx)(d.G3,{value:e.getValue(),cellProps:e}),header:e=>(0,s.jsx)(d.Rr,{value:"Description",...e}),meta:{showHeaderMenu:!0}}),a.display({id:"status",cell:e=>(0,s.jsx)(j.Z,{changeTypeOverride:i,result:e.row.original}),header:e=>(0,s.jsx)(d.Rr,{value:"Status",...e})}),a.accessor(e=>e.monitor_config_id,{id:"monitor",cell:e=>(0,s.jsx)(d.G3,{value:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"Detected by",...e})}),a.accessor(e=>e.updated_at,{id:"time",cell:e=>(0,s.jsx)(h.Cy,{time:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"When",...e})}),a.display({id:"actions",cell:e=>(0,s.jsx)(m.Z,{resource:e.row.original}),header:"Actions",size:200,meta:{disableRowClick:!0}})]}:t===L.D$.ENDPOINT?{columns:[a.accessor(e=>e.name,{id:"name",cell:e=>(0,s.jsx)(x.Z,{changeTypeOverride:i,result:e.row.original}),header:e=>(0,s.jsx)(d.Rr,{value:"Object",...e}),size:300}),a.accessor(e=>e.description,{id:"description",cell:e=>(0,s.jsx)(d.G3,{value:e.getValue(),cellProps:e}),header:e=>(0,s.jsx)(d.Rr,{value:"Description",...e}),meta:{showHeaderMenu:!0}}),a.display({id:"status",cell:e=>(0,s.jsx)(j.Z,{changeTypeOverride:i,result:e.row.original}),header:e=>(0,s.jsx)(d.Rr,{value:"Status",...e})}),a.accessor(e=>e.monitor_config_id,{id:"monitor",cell:e=>(0,s.jsx)(d.G3,{value:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"Detected by",...e})}),a.accessor(e=>e.updated_at,{id:"time",cell:e=>(0,s.jsx)(h.Cy,{time:e.getValue()}),header:e=>(0,s.jsx)(d.Rr,{value:"When",...e})}),a.display({id:"actions",cell:e=>(0,s.jsx)(m.Z,{resource:e.row.original}),header:"Actions",size:200,meta:{disableRowClick:!0}})]}:{columns:r}:{columns:r}},y=i(14908);(a=r||(r={})).ACTION_REQUIRED="action-required",a.MONITORED="monitored",a.UNMONITORED="unmonitored";let D={"action-required":{label:"Action Required",key:"action-required",filters:[L.LL.ADDITION,L.LL.REMOVAL],childFilters:[L.LL.ADDITION,L.LL.REMOVAL]},monitored:{label:"Monitored",key:"monitored",filters:[L.LL.MONITORED],childFilters:[],changeTypeOverride:v.E.MONITORED},unmonitored:{label:"Unmonitored",key:"unmonitored",filters:[L.LL.MUTED],childFilters:[],changeTypeOverride:v.E.MUTED}};var R=()=>{var e,t,i;let{activeTab:a,onTabChange:s}=(0,y.Z)({tabKeys:Object.values(r)});return{filterTabs:Object.values(D),activeTabKey:a,onTabChange:s,activeDiffFilters:null===(e=D[a])||void 0===e?void 0:e.filters,activeChildDiffFilters:null===(t=D[a])||void 0===t?void 0:t.childFilters,activeChangeTypeOverride:null===(i=D[a])||void 0===i?void 0:i.changeTypeOverride}},b=i(47182),_=i(38347),T=i(7940),w=i(80285),C=i(36168),O=i(30952);let H={items:[],total:0,page:1,size:50,pages:1},M=()=>(0,s.jsx)(n.gCW,{mt:6,p:10,spacing:4,borderRadius:"base",maxW:"70%","data-testid":"empty-state",alignSelf:"center",margin:"auto",children:(0,s.jsxs)(n.gCW,{children:[(0,s.jsx)(n.xvT,{fontSize:"md",fontWeight:"600",children:"No activity found"}),(0,s.jsx)(n.xvT,{fontSize:"sm",children:"You're up to date!"})]})});var I=e=>{let{resourceUrn:t}=e,[i,a]=(0,c.useState)(""),{filterTabs:r,activeTabKey:h,onTabChange:m,activeDiffFilters:g,activeChildDiffFilters:x,activeChangeTypeOverride:j}=R(),{PAGE_SIZES:v,pageSize:p,setPageSize:y,onPreviousPageClick:D,isPreviousPageDisabled:I,onNextPageClick:E,isNextPageDisabled:Z,startRange:k,endRange:A,pageIndex:N,setTotalPages:P,resetPageIndexToDefault:V}=(0,d.oi)();(0,c.useEffect)(()=>{V()},[t,i,V,g,x]);let{isFetching:S,isLoading:F,data:z}=(0,u.z8)({staged_resource_urn:t,page:N,size:p,child_diff_status:x,diff_status:g,search:i}),U=(0,T.G)(null==z?void 0:z.items[0]),{columns:$}=f({resourceType:U,changeTypeOverride:j}),{items:G,total:q,pages:W}=(0,c.useMemo)(()=>null!=z?z:H,[z]);(0,c.useEffect)(()=>{P(W)},[W,P]);let B=(0,c.useMemo)(()=>$,[$]),{navigateToDetectionResults:J}=(0,b.Z)(),K=(0,l.b7)({getCoreRowModel:(0,o.sC)(),getGroupedRowModel:(0,o.qe)(),getExpandedRowModel:(0,o.rV)(),getRowId:w.Z,columns:B,manualPagination:!0,data:G,columnResizeMode:"onChange"});return F?(0,s.jsx)(d.I4,{rowHeight:36,numRows:36}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.A5g,{items:r.map(e=>({key:e.key,label:e.label})),activeKey:h,onChange:e=>m(e)}),(0,s.jsx)(d.Q$,{children:(0,s.jsx)(n.kCb,{direction:"row",alignItems:"center",justifyContent:"space-between",width:"full",children:(0,s.jsxs)(n.kCb,{gap:6,align:"center",children:[(0,s.jsx)(n.xuv,{flexShrink:0,children:(0,s.jsx)(O.f,{value:i,onChange:a})}),(0,s.jsx)(_.a,{})]})})}),(0,s.jsx)(d.ZK,{tableInstance:K,onRowClick:e=>J({resourceUrn:e.urn,filterTab:h}),getRowIsClickable:e=>U!==L.D$.FIELD||(0,C.Z)(e),emptyTableNotice:(0,s.jsx)(M,{})}),(0,s.jsx)(d.s8,{totalRows:q||0,pageSizes:v,setPageSize:y,onPreviousPageClick:D,isPreviousPageDisabled:I||S,onNextPageClick:E,isNextPageDisabled:Z||S,startRange:k,endRange:A})]})}},54409:function(e,t,i){"use strict";i.d(t,{Z:function(){return g}});var a=i(24246),r=i(96306),s=i(812),l=i(75573),o=i(54682),n=i(31883);let c=(0,r.IUT)({displayName:"MonitorOffIcon",viewBox:"0 0 12 12",path:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M5.47125 1H5.85H6.15H6.51188L6.58875 1.36914L7.52062 5.83268L6.42408 4.98635L6.03375 3.11719L5.8038 4.50761L4.99323 3.882L5.40562 1.38867L5.47125 1ZM4.80795 5.0022L4.67675 5.79545L5.48735 6.42109L5.61854 5.62783L4.80795 5.0022ZM6.73856 6.49227L6.96125 7.55866L8.42407 8.6877L8.69498 8.00228L7.94864 7.42624L7.88625 7.58398L7.83501 7.33853L6.73856 6.49227ZM8.33138 6.45844L9.07755 7.03434L9.30188 6.4668H11.55H12V5.5293H11.55H9H8.69812L8.58375 5.82031L8.33138 6.45844ZM7.27551 9.06443L7.35399 9.125H7.28813L7.27551 9.06443ZM4.49147 6.91566L5.30209 7.54131L4.79437 10.6113L4.72875 11H4.35H4.05H3.69563L3.61313 10.6406L2.64563 6.46875H0.45H0V5.53125H0.45H2.69777L3.49646 6.1477L4.15125 8.97266L4.49147 6.91566Z",fill:"currentColor"}),(0,a.jsx)("g",{clipPath:"url(#clip0_341_3102)",children:(0,a.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M10.6755 10.4168L0.164222 2.304L0.775218 1.51237L11.2865 9.62517L10.6755 10.4168Z",fill:"currentColor"})}),(0,a.jsx)("defs",{children:(0,a.jsx)("clipPath",{id:"clip0_341_3102",children:(0,a.jsx)("rect",{width:"11.5",height:"9",fill:"white",transform:"translate(0 1.5)"})})})]})}),d=(0,r.IUT)({displayName:"MonitorOnIcon",viewBox:"0 0 12 10",path:(0,a.jsx)("path",{d:"M5.47125 0H5.85H6.15H6.51188L6.58875 0.369141L7.88625 6.58398L8.58375 4.82031L8.69812 4.5293H9H11.55H12V5.4668H11.55H9.30188L8.36625 7.83398L8.25188 8.125H7.95H7.65H7.28813L7.21125 7.75586L6.03375 2.11719L4.79437 9.61133L4.72875 10H4.35H4.05H3.69563L3.61313 9.64062L2.64563 5.46875H0.45H0V4.53125H0.45H3H3.35438L3.43688 4.89062L4.15125 7.97266L5.40562 0.388672L5.47125 0Z",fill:"currentColor"})});var u=i(79494),h=i(70675),m=i(7940),g=e=>{let{resource:t,ignoreChildActions:i=!1}=e,g=(0,m.G)(t),[x,{isLoading:j}]=(0,h.v8)(),[v,{isLoading:L}]=(0,h.vi)(),[p,{isLoading:f}]=(0,h.Tl)(),{successAlert:y,errorAlert:D}=(0,l.VY)(),R=async()=>{let e=await x({staged_resource_urn:t.urn,monitor_config_id:t.monitor_config_id});(0,n.D4)(e)?D((0,s.e$)(e.error,"Failed to confirm resource")):y("Data discovery has started. The results may take some time to appear in the “Data discovery“ tab.","".concat(t.name||"The resource"," is now being monitored."))},b=async()=>{let e=await p({staged_resource_urn:t.urn});(0,n.D4)(e)?D((0,s.e$)(e.error),"Failed to un-mute resource"):y("".concat(t.name||"The resource"," has been un-muted and is now being monitored."))},_=async()=>{let e=await x({staged_resource_urn:t.urn,monitor_config_id:t.monitor_config_id,unmute_children:!0,classify_monitored_resources:!0});(0,n.D4)(e)?D((0,s.e$)(e.error),"Failed to un-mute resource"):y("Data discovery has started. The results may take some time to appear in the “Data discovery“ tab.","".concat(t.name||"The resource"," is now being monitored."))},T=async()=>{let e=await v({staged_resource_urn:t.urn});(0,n.D4)(e)?D((0,s.e$)(e.error),"Failed to mute resource"):y("Ignored data will not be monitored for changes or added to Fides datasets.","".concat(t.name||"Resource"," ignored"))},w=j||L||f,{diff_status:C,child_diff_statuses:O}=t,H=g===o.D$.SCHEMA,M=g===o.D$.FIELD,I=O&&(O[o.LL.CLASSIFICATION_ADDITION]||O[o.LL.CLASSIFICATION_UPDATE]),E=H&&void 0===C||!M&&C===o.LL.ADDITION||I,Z=C!==o.LL.MUTED,k=C===o.LL.MUTED&&!M,A=C===o.LL.MUTED&&M,N=O&&(O[o.LL.ADDITION]||O[o.LL.REMOVAL]),P=C===o.LL.MONITORED&&!i&&N&&!I;return(0,a.jsxs)(r.Ugi,{children:[(E||P)&&(0,a.jsx)(u.Z,{title:"Monitor",icon:(0,a.jsx)(d,{}),onClick:R,disabled:w,loading:j}),A&&(0,a.jsx)(u.Z,{title:"Un-Mute",icon:(0,a.jsx)(d,{}),onClick:b,disabled:w,loading:j}),k&&(0,a.jsx)(u.Z,{title:"Monitor",icon:(0,a.jsx)(d,{}),onClick:_,disabled:w,loading:j}),Z&&(0,a.jsx)(u.Z,{title:"Ignore",icon:(0,a.jsx)(c,{}),onClick:T,disabled:w,loading:L})]})}},79947:function(e,t,i){"use strict";var a=i(24246),r=i(96306);t.Z=e=>{let{type:t}=e;return(0,a.jsx)(r.kCb,{align:"center",h:"full",children:!!t&&(0,a.jsx)(r.j8w,{children:t})})}},31883:function(e,t,i){"use strict";i.d(t,{Bw:function(){return a.Bw},D4:function(){return a.D4}});var a=i(19043)}}]);