ethyca-fides 2.59.2b1__py2.py3-none-any.whl → 2.59.2b3__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.
Files changed (255) hide show
  1. {ethyca_fides-2.59.2b1.dist-info → ethyca_fides-2.59.2b3.dist-info}/METADATA +1 -1
  2. {ethyca_fides-2.59.2b1.dist-info → ethyca_fides-2.59.2b3.dist-info}/RECORD +199 -200
  3. fides/_version.py +3 -3
  4. fides/api/api/v1/endpoints/storage_endpoints.py +2 -2
  5. fides/api/schemas/connection_configuration/connection_secrets_mysql.py +12 -0
  6. fides/api/schemas/consentable_item.py +5 -8
  7. fides/api/schemas/storage/storage.py +6 -4
  8. fides/api/service/connectors/mysql_connector.py +13 -1
  9. fides/api/service/connectors/saas_connector.py +18 -13
  10. fides/api/service/saas_request/saas_request_override_factory.py +3 -3
  11. fides/api/service/storage/storage_authenticator_service.py +10 -15
  12. fides/api/task/graph_task.py +2 -3
  13. fides/api/tasks/storage.py +5 -1
  14. fides/api/util/aws_util.py +28 -17
  15. fides/api/util/consent_util.py +10 -4
  16. fides/api/worker/__init__.py +1 -1
  17. fides/ui-build/static/admin/404.html +1 -1
  18. fides/ui-build/static/admin/_next/static/WiKelYdZvuyhqjL7rLRaz/_buildManifest.js +1 -0
  19. fides/ui-build/static/admin/_next/static/chunks/1100-0046887f49e9e7c7.js +1 -0
  20. fides/ui-build/static/admin/_next/static/chunks/{1817-11bb237f57d9ad27.js → 1817-90e54de7c706b571.js} +1 -1
  21. fides/ui-build/static/admin/_next/static/chunks/{1904-3c40738cb0fd2a7c.js → 1904-e1034674c6eef004.js} +1 -1
  22. fides/ui-build/static/admin/_next/static/chunks/{2479-50f431c0e2c0de3c.js → 2479-b4f7654c27a15c05.js} +1 -1
  23. fides/ui-build/static/admin/_next/static/chunks/3503-2e773a38d4a79c2d.js +1 -0
  24. fides/ui-build/static/admin/_next/static/chunks/3513-2ee2ff13c15af241.js +1 -0
  25. fides/ui-build/static/admin/_next/static/chunks/{3702-31d37a0217f82615.js → 3702-8a6360b2deef2a87.js} +1 -1
  26. fides/ui-build/static/admin/_next/static/chunks/3855-7a43acdb1f8de2f5.js +1 -0
  27. fides/ui-build/static/admin/_next/static/chunks/3872-53b86dcc7ee3ddec.js +1 -0
  28. fides/ui-build/static/admin/_next/static/chunks/401-a15fcc78cc272c09.js +1 -0
  29. fides/ui-build/static/admin/_next/static/chunks/4060-93514991b84ca46c.js +1 -0
  30. fides/ui-build/static/admin/_next/static/chunks/4121-01e2b9f905b8ca29.js +1 -0
  31. fides/ui-build/static/admin/_next/static/chunks/4481-c19a0c5e273a3ec7.js +1 -0
  32. fides/ui-build/static/admin/_next/static/chunks/5487-b6957c5ba835167b.js +1 -0
  33. fides/ui-build/static/admin/_next/static/chunks/{5826-226c8843e715b6ad.js → 5826-8a035114917033bb.js} +1 -1
  34. fides/ui-build/static/admin/_next/static/chunks/5835-2e2aa29b4a8bf4e6.js +1 -0
  35. fides/ui-build/static/admin/_next/static/chunks/5973-4b83cf367b6d82a2.js +1 -0
  36. fides/ui-build/static/admin/_next/static/chunks/6277-2f2d89b83a19ee67.js +1 -0
  37. fides/ui-build/static/admin/_next/static/chunks/{6372-0ca1b9521b5489fd.js → 6372-3d6d19a89e1d7a37.js} +1 -1
  38. fides/ui-build/static/admin/_next/static/chunks/{6853-7d7eb22f19d3806c.js → 6853-45e8c48ad0fdf1db.js} +1 -1
  39. fides/ui-build/static/admin/_next/static/chunks/6954-6de30beefefac64a.js +1 -0
  40. fides/ui-build/static/admin/_next/static/chunks/7751-f83e9877478aafcf.js +1 -0
  41. fides/ui-build/static/admin/_next/static/chunks/79-576004c5ee5116f6.js +1 -0
  42. fides/ui-build/static/admin/_next/static/chunks/8433-234a6feeb457cbb8.js +1 -0
  43. fides/ui-build/static/admin/_next/static/chunks/8934-e357867355f1f924.js +1 -0
  44. fides/ui-build/static/admin/_next/static/chunks/9282-c7f853a8175266bc.js +1 -0
  45. fides/ui-build/static/admin/_next/static/chunks/9327-0bc418b9b16cc2c5.js +1 -0
  46. fides/ui-build/static/admin/_next/static/chunks/{9392.da35a8e778812d91.js → 9392.9178313b7a01d889.js} +1 -1
  47. fides/ui-build/static/admin/_next/static/chunks/9572-c34e18bd40467909.js +1 -0
  48. fides/ui-build/static/admin/_next/static/chunks/{9676.f297a1347ac09c56.js → 9676.d1e42fd1d03c4a76.js} +1 -1
  49. fides/ui-build/static/admin/_next/static/chunks/9719-d3de30714871f267.js +1 -0
  50. fides/ui-build/static/admin/_next/static/chunks/9767-ee5b0af0e65d3802.js +1 -0
  51. fides/ui-build/static/admin/_next/static/chunks/{9951-8ceba69296972ce9.js → 9951-a0ba5bccbbbd5f33.js} +1 -1
  52. fides/ui-build/static/admin/_next/static/chunks/9965-8880affd11242777.js +1 -0
  53. fides/ui-build/static/admin/_next/static/chunks/pages/{404-a3c57a06ff67cf1f.js → 404-b482dd9e6ba3397d.js} +1 -1
  54. fides/ui-build/static/admin/_next/static/chunks/pages/{_app-fc9e922ec354be47.js → _app-dc66d9fb6547cb04.js} +17 -17
  55. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/manual-e16fcedb2215db13.js +1 -0
  56. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-93907c53f342831f.js → multiple-892fc00510cddef8.js} +1 -1
  57. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-cb85a0014fad7c58.js +1 -0
  58. fides/ui-build/static/admin/_next/static/chunks/pages/ant-poc-2bade915860dd327.js +1 -0
  59. fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-5e83ee7792c0f75f.js → add-vendors-cc58c1e18966fcfd.js} +1 -1
  60. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{configure-ea7b2c628260c84c.js → configure-422f4d002822a5ce.js} +1 -1
  61. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-7122d8a8c20e7cd2.js → [id]-cd8bb60adf783c4a.js} +1 -1
  62. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-experience-85ddbe3ae50c7527.js → privacy-experience-046051bb82ec1c53.js} +1 -1
  63. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-5a9269aa00a16596.js → [id]-72dd15bfd87616c9.js} +1 -1
  64. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-78808c75ba86c0be.js → new-8bbccdd747f4100c.js} +1 -1
  65. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-1f402b7525f78140.js +1 -0
  66. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-893753088b9729a3.js → properties-55cc394ebc428e59.js} +1 -1
  67. fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-de9118ec446ce994.js +1 -0
  68. fides/ui-build/static/admin/_next/static/chunks/pages/{consent-7e5adfec9134a268.js → consent-ec420ff6cfb82abd.js} +1 -1
  69. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-4b2c10ff79e46e50.js → [projectUrn]-b0b976e8dd5e4cd6.js} +1 -1
  70. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{projects-05bbb01e37766b80.js → projects-4ea56a1c3010ba99.js} +1 -1
  71. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-7efbc1558febf026.js +1 -0
  72. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-cdd23dc94e1fbf89.js +1 -0
  73. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-94308fff1468b5e6.js +1 -0
  74. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-920ed6df7e0aa3a5.js +1 -0
  75. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-7e25ddfe45048b35.js +1 -0
  76. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-1bcaa606739ea1c5.js → [resourceUrn]-10f789d4ab2b8927.js} +1 -1
  77. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-22f55dc12354b4c6.js → detection-f473b2ee1c67be3c.js} +1 -1
  78. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-86111c25dc30ef2b.js → [resourceUrn]-2569551ae75ea5a2.js} +1 -1
  79. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-853be75f08b9ab5c.js → discovery-ad077f30849fdc0a.js} +1 -1
  80. fides/ui-build/static/admin/_next/static/chunks/pages/{datamap-6c63a6295668ed4e.js → datamap-4b12c6b141f6cda3.js} +1 -1
  81. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/{[...subfieldNames]-7a99a6c5c2fc2abe.js → [...subfieldNames]-da407b63cd3f5276.js} +1 -1
  82. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/{[collectionName]-39aab1de4df0660d.js → [collectionName]-76205fa5ddc5c3ae.js} +1 -1
  83. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{[datasetId]-2cf04998a7521a7d.js → [datasetId]-ab7c88da427b6396.js} +1 -1
  84. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{new-f3a6dd67f012b005.js → new-8dba366b1d55a15c.js} +1 -1
  85. fides/ui-build/static/admin/_next/static/chunks/pages/{dataset-3b703775de1ca75e.js → dataset-ee98d1a24a68f13b.js} +1 -1
  86. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-b905c75f68786c2f.js → [id]-e39d66c8dfdc4c6f.js} +1 -1
  87. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-abd92bec98bdbb66.js → new-8f2cfc79022cb6d0.js} +1 -1
  88. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-340e311fa02584dc.js +1 -0
  89. fides/ui-build/static/admin/_next/static/chunks/pages/index-259c1f1281f9b634.js +1 -0
  90. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-0fc3ffd11ba163f9.js +1 -0
  91. fides/ui-build/static/admin/_next/static/chunks/pages/{integrations-2ce76b506ba8404a.js → integrations-d584110d81e5b395.js} +1 -1
  92. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{[id]-8950b4aff799099c.js → [id]-1d18e28fa55a149b.js} +1 -1
  93. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{add-template-4cad85d5b6d52734.js → add-template-11bdab1b292c6f89.js} +1 -1
  94. fides/ui-build/static/admin/_next/static/chunks/pages/messaging-de5efa1ff6d0e9ea.js +1 -0
  95. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{[id]-2fc14bda8d314449.js → [id]-96350050e842bde5.js} +1 -1
  96. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-e8e9ae8d58acceb2.js +1 -0
  97. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-a76f1d1a19e61fe8.js +1 -0
  98. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure-6b9a46fef5031a0b.js +1 -0
  99. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-630db544f2a27167.js +1 -0
  100. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-6cca2c8ebbff78aa.js → [id]-835b7c4dd2240d16.js} +1 -1
  101. fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-f09f98007725fa51.js → add-property-984851804558be53.js} +1 -1
  102. fides/ui-build/static/admin/_next/static/chunks/pages/{properties-9034bab3d7200d9b.js → properties-d2b95b0ebae06804.js} +1 -1
  103. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/{datamap-a36cf070c98a6cbd.js → datamap-5d1aededc7523146.js} +1 -1
  104. fides/ui-build/static/admin/_next/static/chunks/pages/settings/about-44f96bcf57cd4cbf.js +1 -0
  105. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-0ba66c149139737a.js +1 -0
  106. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-943dfe977678edb5.js +1 -0
  107. fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-39d098cbcb33d4f5.js +1 -0
  108. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-368a4183139ea5e0.js → domain-records-87df4b6493ca8162.js} +1 -1
  109. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-45a8a86266308028.js +1 -0
  110. fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-272eb2c0b7ffd290.js +1 -0
  111. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-18f56b6b76abb71d.js → locations-a8cd013bdd3aef75.js} +1 -1
  112. fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-aaa200f916ba79d8.js +1 -0
  113. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-0350314337abff11.js → regulations-5abb227df116c9c4.js} +1 -1
  114. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-da1b2dd3ec61a08e.js +1 -0
  115. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-022910a52efbad76.js → [id]-693c726f22ae11c5.js} +1 -1
  116. fides/ui-build/static/admin/_next/static/chunks/pages/systems-5eccb5fe50f7aaa9.js +1 -0
  117. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-0611d707ce426ec7.js +1 -0
  118. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/{new-082c3156175f9267.js → new-65ef1bdebb679666.js} +1 -1
  119. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-32ec340d4b390d07.js → [id]-28abb07c95f2c7c2.js} +1 -1
  120. fides/ui-build/static/admin/_next/static/chunks/pages/user-management-4eb69d5c6af8581b.js +1 -0
  121. fides/ui-build/static/admin/_next/static/chunks/webpack-cf42f5a0e9af0ace.js +1 -0
  122. fides/ui-build/static/admin/_next/static/css/{72caf4a266697967.css → e728309361a9758b.css} +1 -1
  123. fides/ui-build/static/admin/add-systems/manual.html +1 -1
  124. fides/ui-build/static/admin/add-systems/multiple.html +1 -1
  125. fides/ui-build/static/admin/add-systems.html +1 -1
  126. fides/ui-build/static/admin/ant-poc.html +1 -1
  127. fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
  128. fides/ui-build/static/admin/consent/configure.html +1 -1
  129. fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
  130. fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
  131. fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
  132. fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
  133. fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
  134. fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
  135. fides/ui-build/static/admin/consent/properties.html +1 -1
  136. fides/ui-build/static/admin/consent/reporting.html +1 -1
  137. fides/ui-build/static/admin/consent.html +1 -1
  138. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
  139. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
  140. fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
  141. fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
  142. fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
  143. fides/ui-build/static/admin/data-catalog.html +1 -1
  144. fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +1 -1
  145. fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +1 -1
  146. fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
  147. fides/ui-build/static/admin/data-discovery/activity.html +1 -1
  148. fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
  149. fides/ui-build/static/admin/data-discovery/detection.html +1 -1
  150. fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
  151. fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
  152. fides/ui-build/static/admin/datamap.html +1 -1
  153. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
  154. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
  155. fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
  156. fides/ui-build/static/admin/dataset/new.html +1 -1
  157. fides/ui-build/static/admin/dataset.html +1 -1
  158. fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
  159. fides/ui-build/static/admin/datastore-connection/new.html +1 -1
  160. fides/ui-build/static/admin/datastore-connection.html +1 -1
  161. fides/ui-build/static/admin/index.html +1 -1
  162. fides/ui-build/static/admin/integrations/[id].html +1 -1
  163. fides/ui-build/static/admin/integrations.html +1 -1
  164. fides/ui-build/static/admin/login/[provider].html +1 -1
  165. fides/ui-build/static/admin/login.html +1 -1
  166. fides/ui-build/static/admin/messaging/[id].html +1 -1
  167. fides/ui-build/static/admin/messaging/add-template.html +1 -1
  168. fides/ui-build/static/admin/messaging.html +1 -1
  169. fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
  170. fides/ui-build/static/admin/privacy-requests/configure/messaging.html +1 -1
  171. fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
  172. fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
  173. fides/ui-build/static/admin/privacy-requests.html +1 -1
  174. fides/ui-build/static/admin/properties/[id].html +1 -1
  175. fides/ui-build/static/admin/properties/add-property.html +1 -1
  176. fides/ui-build/static/admin/properties.html +1 -1
  177. fides/ui-build/static/admin/reporting/datamap.html +1 -1
  178. fides/ui-build/static/admin/settings/about.html +1 -1
  179. fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +1 -1
  180. fides/ui-build/static/admin/settings/consent.html +1 -1
  181. fides/ui-build/static/admin/settings/custom-fields.html +1 -1
  182. fides/ui-build/static/admin/settings/domain-records.html +1 -1
  183. fides/ui-build/static/admin/settings/domains.html +1 -1
  184. fides/ui-build/static/admin/settings/email-templates.html +1 -1
  185. fides/ui-build/static/admin/settings/locations.html +1 -1
  186. fides/ui-build/static/admin/settings/organization.html +1 -1
  187. fides/ui-build/static/admin/settings/regulations.html +1 -1
  188. fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
  189. fides/ui-build/static/admin/systems/configure/[id].html +1 -1
  190. fides/ui-build/static/admin/systems.html +1 -1
  191. fides/ui-build/static/admin/taxonomy.html +1 -1
  192. fides/ui-build/static/admin/user-management/new.html +1 -1
  193. fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
  194. fides/ui-build/static/admin/user-management.html +1 -1
  195. fides/ui-build/static/admin/_next/static/4ZsbAUsCLedx18AUPZCUU/_buildManifest.js +0 -1
  196. fides/ui-build/static/admin/_next/static/chunks/1100-22c375e757f23150.js +0 -1
  197. fides/ui-build/static/admin/_next/static/chunks/146-106021bf1ae6e912.js +0 -1
  198. fides/ui-build/static/admin/_next/static/chunks/3086-ffd15c92ea81b3d6.js +0 -1
  199. fides/ui-build/static/admin/_next/static/chunks/3244-4b76482dcc5d576f.js +0 -1
  200. fides/ui-build/static/admin/_next/static/chunks/3855-da54ef27afd56c46.js +0 -1
  201. fides/ui-build/static/admin/_next/static/chunks/3872-68b4ceba8f632bc0.js +0 -1
  202. fides/ui-build/static/admin/_next/static/chunks/401-49cdd118a89cc343.js +0 -1
  203. fides/ui-build/static/admin/_next/static/chunks/4060-bad5f07013c7bb49.js +0 -1
  204. fides/ui-build/static/admin/_next/static/chunks/4121-4914fb77e60d31f4.js +0 -1
  205. fides/ui-build/static/admin/_next/static/chunks/4481-7a992683e9191bc9.js +0 -1
  206. fides/ui-build/static/admin/_next/static/chunks/5102-3acf312a8f0d7720.js +0 -1
  207. fides/ui-build/static/admin/_next/static/chunks/5480-d177a83facd21738.js +0 -1
  208. fides/ui-build/static/admin/_next/static/chunks/5487-22de631f1d186527.js +0 -1
  209. fides/ui-build/static/admin/_next/static/chunks/5973-1020589bef6dd253.js +0 -1
  210. fides/ui-build/static/admin/_next/static/chunks/6277-c46c9eb59177b850.js +0 -1
  211. fides/ui-build/static/admin/_next/static/chunks/6395-04041b53946664b1.js +0 -1
  212. fides/ui-build/static/admin/_next/static/chunks/6954-981a8a444780bedb.js +0 -1
  213. fides/ui-build/static/admin/_next/static/chunks/7751-09c6424d673d8aa4.js +0 -1
  214. fides/ui-build/static/admin/_next/static/chunks/79-7ca48fb1a0b52f96.js +0 -1
  215. fides/ui-build/static/admin/_next/static/chunks/8433-dd6d8dae02275d66.js +0 -1
  216. fides/ui-build/static/admin/_next/static/chunks/8934-6881185f0c5c0f6d.js +0 -1
  217. fides/ui-build/static/admin/_next/static/chunks/9282-23b38e03f897722f.js +0 -1
  218. fides/ui-build/static/admin/_next/static/chunks/9327-fb7ef941b5176077.js +0 -1
  219. fides/ui-build/static/admin/_next/static/chunks/9572-8f5947db1a6da260.js +0 -1
  220. fides/ui-build/static/admin/_next/static/chunks/9767-162b0f8524990149.js +0 -1
  221. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/manual-c4c0c42bbe0f5548.js +0 -1
  222. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-a8c51c7bdbb405e2.js +0 -1
  223. fides/ui-build/static/admin/_next/static/chunks/pages/ant-poc-8fcf312148606e7e.js +0 -1
  224. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-047c409bc5e12d1a.js +0 -1
  225. fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-01d1371e690ae190.js +0 -1
  226. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-d08a38d4f198691a.js +0 -1
  227. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-cc5431e4fbd6d39e.js +0 -1
  228. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-f073ddcfb916988e.js +0 -1
  229. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-cf48ed7dc04c3af2.js +0 -1
  230. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-73025c2ac5a00347.js +0 -1
  231. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-52c3f076edb49944.js +0 -1
  232. fides/ui-build/static/admin/_next/static/chunks/pages/index-1bccf315f995267a.js +0 -1
  233. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-afcf73fd0337dde0.js +0 -1
  234. fides/ui-build/static/admin/_next/static/chunks/pages/messaging-57c7aa44af163623.js +0 -1
  235. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-3219ddeb37d46398.js +0 -1
  236. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-8e17802ab6b2d3fd.js +0 -1
  237. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure-d8d23d06ce1d9dae.js +0 -1
  238. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-9d71495b42f34038.js +0 -1
  239. fides/ui-build/static/admin/_next/static/chunks/pages/settings/about-92dada8329e89092.js +0 -1
  240. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-7986cf3b36456353.js +0 -1
  241. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-f6d6e3d9d556387c.js +0 -1
  242. fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-e6c477f2ac098e0b.js +0 -1
  243. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-255655d6c367faad.js +0 -1
  244. fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-e4498b6310074705.js +0 -1
  245. fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-c01d24583e9485f0.js +0 -1
  246. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-d5f777510ab8dfd2.js +0 -1
  247. fides/ui-build/static/admin/_next/static/chunks/pages/systems-e9a111ef0c32161e.js +0 -1
  248. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-517419b35435604a.js +0 -1
  249. fides/ui-build/static/admin/_next/static/chunks/pages/user-management-c8ca51efbeccf39b.js +0 -1
  250. fides/ui-build/static/admin/_next/static/chunks/webpack-01277b766c8eb076.js +0 -1
  251. {ethyca_fides-2.59.2b1.dist-info → ethyca_fides-2.59.2b3.dist-info}/WHEEL +0 -0
  252. {ethyca_fides-2.59.2b1.dist-info → ethyca_fides-2.59.2b3.dist-info}/entry_points.txt +0 -0
  253. {ethyca_fides-2.59.2b1.dist-info → ethyca_fides-2.59.2b3.dist-info}/licenses/LICENSE +0 -0
  254. {ethyca_fides-2.59.2b1.dist-info → ethyca_fides-2.59.2b3.dist-info}/top_level.txt +0 -0
  255. /fides/ui-build/static/admin/_next/static/{4ZsbAUsCLedx18AUPZCUU → WiKelYdZvuyhqjL7rLRaz}/_ssgManifest.js +0 -0
fides/_version.py CHANGED
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2025-04-16T22:35:59-0400",
11
+ "date": "2025-04-18T13:02:59-0700",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "f64e628f1502e4a7c7045e517a74550c9d5cd661",
15
- "version": "2.59.2b1"
14
+ "full-revisionid": "a519c45aafb62a2f424457ed2d702ef4be4af781",
15
+ "version": "2.59.2b3"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -220,7 +220,7 @@ def put_config_secrets(
220
220
 
221
221
  msg = f"Secrets updated for StorageConfig with key: {config_key}."
222
222
  if verify:
223
- status = secrets_are_valid(secrets_schema, storage_config.type)
223
+ status = secrets_are_valid(secrets_schema, storage_config)
224
224
  if status:
225
225
  logger.info(
226
226
  "Storage secrets are valid for config with key '{}'", config_key
@@ -534,7 +534,7 @@ def put_default_config_secrets(
534
534
 
535
535
  msg = f"Secrets updated for default config of storage type: {storage_type.value}."
536
536
  if verify:
537
- status = secrets_are_valid(secrets_schema, storage_config.type)
537
+ status = secrets_are_valid(secrets_schema, storage_config)
538
538
  if status:
539
539
  logger.info(
540
540
  "Storage secrets are valid for default config of storage type '{}'",
@@ -1,3 +1,4 @@
1
+ from enum import Enum
1
2
  from typing import ClassVar, List, Optional
2
3
 
3
4
  from pydantic import Field
@@ -8,6 +9,12 @@ from fides.api.schemas.connection_configuration.connection_secrets import (
8
9
  )
9
10
 
10
11
 
12
+ class MySQLSSLMode(str, Enum):
13
+ preferred = "preferred"
14
+ required = "required"
15
+ disabled = "disabled"
16
+
17
+
11
18
  class MySQLSchema(ConnectionConfigSecretsSchema):
12
19
  """Schema to validate the secrets needed to connect to a MySQL Database"""
13
20
 
@@ -40,6 +47,11 @@ class MySQLSchema(ConnectionConfigSecretsSchema):
40
47
  title="SSH required",
41
48
  description="Indicates whether an SSH tunnel is required for the connection. Enable this option if your MySQL server is behind a firewall and requires SSH tunneling for remote connections.",
42
49
  )
50
+ ssl_mode: Optional[MySQLSSLMode] = Field(
51
+ None, # TODO: support for verify-ca and verify-full
52
+ title="SSL Mode",
53
+ description="The SSL mode to use for the connection. Valid values are 'required', 'preferred', and 'disabled'.",
54
+ )
43
55
 
44
56
  _required_components: ClassVar[List[str]] = ["host", "dbname"]
45
57
 
@@ -3,7 +3,6 @@ from typing import Dict, List, Literal, Optional
3
3
  from pydantic import BaseModel, Field
4
4
 
5
5
  from fides.api.models.consent_automation import ConsentableItem as ConsentableItemModel
6
- from fides.api.models.privacy_notice import UserConsentPreference
7
6
  from fides.api.schemas.base_class import FidesSchema
8
7
 
9
8
 
@@ -85,10 +84,8 @@ class ConsentWebhookResult(BaseModel):
85
84
 
86
85
  identity_map: Dict[
87
86
  Literal["email", "phone_number", "fides_user_device", "external_id"], str
88
- ] = {}
89
- notice_map: Dict[str, UserConsentPreference] = {}
90
-
91
- @property
92
- def success(self) -> bool:
93
- """Returns true if both the identity map and notice map are not empty."""
94
- return bool(self.identity_map) and bool(self.notice_map)
87
+ ] = Field(default_factory=dict, description="The identity of the user.")
88
+ notice_id_map: Dict[str, str] = Field(
89
+ default_factory=dict,
90
+ description="A map of privacy notice IDs to user consent preferences.",
91
+ )
@@ -85,6 +85,8 @@ class StorageSecrets(Enum):
85
85
  # s3-specific
86
86
  AWS_ACCESS_KEY_ID = "aws_access_key_id"
87
87
  AWS_SECRET_ACCESS_KEY = "aws_secret_access_key"
88
+ REGION_NAME = "region_name"
89
+ AWS_ASSUME_ROLE = "assume_role_arn"
88
90
 
89
91
 
90
92
  class StorageSecretsLocal(BaseModel):
@@ -94,10 +96,10 @@ class StorageSecretsLocal(BaseModel):
94
96
 
95
97
 
96
98
  class StorageSecretsS3(BaseModel):
97
- """The secrets required to connect to an S3 bucket."""
98
-
99
- aws_access_key_id: str
100
- aws_secret_access_key: str
99
+ aws_access_key_id: Optional[str] = None
100
+ aws_secret_access_key: Optional[str] = None
101
+ region_name: Optional[str] = None
102
+ assume_role_arn: Optional[str] = None
101
103
  model_config = ConfigDict(extra="forbid")
102
104
 
103
105
 
@@ -1,10 +1,11 @@
1
- from typing import List
1
+ from typing import Dict, List
2
2
 
3
3
  from sqlalchemy.engine import Engine, LegacyCursorResult, create_engine # type: ignore
4
4
 
5
5
  from fides.api.graph.execution import ExecutionNode
6
6
  from fides.api.schemas.connection_configuration.connection_secrets_mysql import (
7
7
  MySQLSchema,
8
+ MySQLSSLMode,
8
9
  )
9
10
  from fides.api.service.connectors.query_configs.mysql_query_config import (
10
11
  MySQLQueryConfig,
@@ -69,16 +70,27 @@ class MySQLConnector(SQLConnector):
69
70
  uri = self.build_ssh_uri(local_address=self.ssh_server.local_bind_address)
70
71
  else:
71
72
  uri = (self.configuration.secrets or {}).get("url") or self.build_uri()
73
+ connect_args = self.get_connect_args()
72
74
  return create_engine(
73
75
  uri,
74
76
  hide_parameters=self.hide_parameters,
75
77
  echo=not self.hide_parameters,
78
+ connect_args=connect_args,
76
79
  )
77
80
 
78
81
  def query_config(self, node: ExecutionNode) -> SQLQueryConfig:
79
82
  """Query wrapper corresponding to the input execution_node."""
80
83
  return MySQLQueryConfig(node)
81
84
 
85
+ def get_connect_args(self) -> Dict[str, Dict[str, MySQLSSLMode]]:
86
+ """Get connection arguments for the engine"""
87
+ ssl_mode = self.configuration.secrets.get("ssl_mode", MySQLSSLMode.preferred)
88
+ return {
89
+ "ssl": {
90
+ "mode": ssl_mode,
91
+ }
92
+ }
93
+
82
94
  @staticmethod
83
95
  def cursor_result_to_rows(results: LegacyCursorResult) -> List[Row]:
84
96
  """
@@ -4,6 +4,7 @@ from json import JSONDecodeError
4
4
  from typing import Any, Dict, List, Optional, Tuple, Union, cast
5
5
 
6
6
  import pydash
7
+ from fideslang.validation import FidesKey
7
8
  from loguru import logger
8
9
  from requests import Response
9
10
  from sqlalchemy.orm import Session
@@ -18,7 +19,6 @@ from fides.api.common_exceptions import (
18
19
  from fides.api.graph.execution import ExecutionNode
19
20
  from fides.api.models.connectionconfig import ConnectionConfig, ConnectionTestStatus
20
21
  from fides.api.models.policy import Policy
21
- from fides.api.models.privacy_notice import UserConsentPreference
22
22
  from fides.api.models.privacy_request import PrivacyRequest, RequestTask
23
23
  from fides.api.schemas.consentable_item import (
24
24
  ConsentableItem,
@@ -687,15 +687,16 @@ class SaaSConnector(BaseConnector[AuthenticatedClient], Contextualizable):
687
687
 
688
688
  if notice_based_override_function:
689
689
  # follow the notice-based SaaS consent flow
690
- notice_id_to_preference_map, filtered_preferences = (
691
- build_user_consent_and_filtered_preferences_for_service(
692
- self.configuration.system,
693
- privacy_request,
694
- session,
695
- True,
696
- )
690
+ (
691
+ notice_preference_map,
692
+ filtered_preferences,
693
+ ) = build_user_consent_and_filtered_preferences_for_service(
694
+ self.configuration.system,
695
+ privacy_request,
696
+ session,
697
+ True,
697
698
  )
698
- if not notice_id_to_preference_map:
699
+ if not notice_preference_map:
699
700
  logger.info(
700
701
  "Skipping consent requests on node {}: No actionable consent preferences to propagate",
701
702
  node.address.value,
@@ -723,12 +724,13 @@ class SaaSConnector(BaseConnector[AuthenticatedClient], Contextualizable):
723
724
  )
724
725
  consent_propagation_status = self._invoke_consent_request_override(
725
726
  notice_based_override_function,
727
+ self.configuration.key,
726
728
  self.create_client(),
727
729
  policy,
728
730
  privacy_request,
729
731
  self.secrets,
730
732
  identity_data,
731
- notice_id_to_preference_map, # type: ignore[arg-type]
733
+ notice_preference_map, # type: ignore[arg-type]
732
734
  notice_based_consentable_item_hierarchy,
733
735
  )
734
736
  if consent_propagation_status == ConsentPropagationStatus.no_update_needed:
@@ -800,6 +802,7 @@ class SaaSConnector(BaseConnector[AuthenticatedClient], Contextualizable):
800
802
  )
801
803
  consent_propagation_status = self._invoke_consent_request_override(
802
804
  override_function,
805
+ self.configuration.key,
803
806
  self.create_client(),
804
807
  policy,
805
808
  privacy_request,
@@ -997,12 +1000,13 @@ class SaaSConnector(BaseConnector[AuthenticatedClient], Contextualizable):
997
1000
  @staticmethod
998
1001
  def _invoke_consent_request_override(
999
1002
  override_function: RequestOverrideFunction,
1003
+ connection_key: FidesKey,
1000
1004
  client: AuthenticatedClient,
1001
1005
  policy: Policy,
1002
1006
  privacy_request: PrivacyRequest,
1003
1007
  secrets: Any,
1004
1008
  identity_data: Optional[Dict[str, Any]] = None,
1005
- notice_id_to_preference_map: Optional[Dict[str, UserConsentPreference]] = None,
1009
+ notice_preference_map: Optional[Dict[str, Dict[str, Any]]] = None,
1006
1010
  consentable_items_hierarchy: Optional[List[ConsentableItem]] = None,
1007
1011
  ) -> ConsentPropagationStatus:
1008
1012
  """
@@ -1011,13 +1015,14 @@ class SaaSConnector(BaseConnector[AuthenticatedClient], Contextualizable):
1011
1015
  """
1012
1016
  try:
1013
1017
  logger.info("Invoking consent request override function...")
1014
- if notice_id_to_preference_map:
1018
+ if notice_preference_map:
1015
1019
  # At this point, we've already validated the override function signature to take these params
1016
1020
  return override_function(
1021
+ connection_key,
1017
1022
  client,
1018
1023
  secrets,
1019
1024
  identity_data,
1020
- notice_id_to_preference_map,
1025
+ notice_preference_map,
1021
1026
  consentable_items_hierarchy,
1022
1027
  ) # type: ignore
1023
1028
  return override_function(
@@ -248,7 +248,7 @@ def validate_update_consent_function(f: Callable) -> None:
248
248
  )
249
249
  if len(sig.parameters) < 5:
250
250
  raise InvalidSaaSRequestOverrideException(
251
- "Provided SaaS update consent function must declare at least 4 parameters"
251
+ "Provided SaaS update consent function must declare at least 5 parameters"
252
252
  )
253
253
 
254
254
 
@@ -258,9 +258,9 @@ def validate_process_consent_webhook_function(f: Callable) -> None:
258
258
  raise InvalidSaaSRequestOverrideException(
259
259
  "Provided SaaS process consent webhook function must return a ConsentWebhookResult"
260
260
  )
261
- if len(sig.parameters) < 5:
261
+ if len(sig.parameters) < 4:
262
262
  raise InvalidSaaSRequestOverrideException(
263
- "Provided SaaS process consent webhook function must declare at least 5 parameters"
263
+ "Provided SaaS process consent webhook function must declare at least 4 parameters"
264
264
  )
265
265
 
266
266
 
@@ -1,4 +1,4 @@
1
- from typing import Any, Dict, Union
1
+ from typing import Any
2
2
 
3
3
  from botocore.exceptions import ClientError
4
4
  from google.auth.exceptions import GoogleAuthError
@@ -6,6 +6,7 @@ from google.auth.transport.requests import Request
6
6
  from google.oauth2 import service_account
7
7
  from loguru import logger
8
8
 
9
+ from fides.api.models.storage import StorageConfig
9
10
  from fides.api.schemas.storage.storage import (
10
11
  SUPPORTED_STORAGE_SECRETS,
11
12
  AWSAuthMethod,
@@ -17,31 +18,25 @@ from fides.api.util.aws_util import get_aws_session
17
18
 
18
19
  def secrets_are_valid(
19
20
  secrets: SUPPORTED_STORAGE_SECRETS,
20
- storage_type: Union[StorageType, str],
21
+ storage_config: StorageConfig,
21
22
  ) -> bool:
22
23
  """Authenticates upload destination with appropriate upload method"""
23
- if not isinstance(storage_type, StorageType):
24
- # try to coerce into an enum
25
- try:
26
- storage_type = StorageType[storage_type]
27
- except KeyError:
28
- raise ValueError(
29
- "storage_type argument must be a valid StorageType enum member."
30
- )
31
- uploader: Any = _get_authenticator_from_config(storage_type)
32
- return uploader(secrets)
24
+ uploader: Any = _get_authenticator_from_config(storage_config.type) # type: ignore
25
+ return uploader(storage_config, secrets)
33
26
 
34
27
 
35
- def _s3_authenticator(secrets: Dict[StorageSecrets, Any]) -> bool:
28
+ def _s3_authenticator(
29
+ config: StorageConfig, secrets: dict[StorageSecrets, Any]
30
+ ) -> bool:
36
31
  """Authenticates secrets for s3, returns true if secrets are valid"""
37
32
  try:
38
- get_aws_session(AWSAuthMethod.SECRET_KEYS.value, secrets.model_dump(mode="json")) # type: ignore
33
+ get_aws_session(config.details["auth_method"] or AWSAuthMethod.SECRET_KEYS.value, secrets.model_dump(mode="json")) # type: ignore
39
34
  return True
40
35
  except ClientError:
41
36
  return False
42
37
 
43
38
 
44
- def _gcs_authenticator(secrets: Dict) -> bool:
39
+ def _gcs_authenticator(storage_config: StorageConfig, secrets: dict) -> bool:
45
40
  """Autenticates secrets for Google Cloud Storage, returns true if secrets are valid"""
46
41
  try:
47
42
  credentials = service_account.Credentials.from_service_account_info(
@@ -125,16 +125,15 @@ def retry(
125
125
  ActionDisabled,
126
126
  NotSupportedForCollection,
127
127
  ) as exc:
128
- traceback.print_exc()
129
128
  logger.warning(
130
- "Skipping collection {} for privacy_request: {}",
129
+ "{} - Skipping collection {} for privacy_request: {}",
130
+ exc.__class__.__name__,
131
131
  self.execution_node.address,
132
132
  self.resources.request.id,
133
133
  )
134
134
  self.log_skipped(action_type, exc)
135
135
  return default_return
136
136
  except SkippingConsentPropagation as exc:
137
- traceback.print_exc()
138
137
  logger.warning(
139
138
  "Skipping consent propagation on collection {} for privacy_request: {}",
140
139
  self.execution_node.address,
@@ -131,7 +131,11 @@ def upload_to_s3( # pylint: disable=R0913
131
131
  raise ValueError("Privacy request must be provided")
132
132
 
133
133
  try:
134
- s3_client = get_s3_client(auth_method, storage_secrets)
134
+ s3_client = get_s3_client(
135
+ auth_method,
136
+ storage_secrets,
137
+ assume_role_arn=CONFIG.credentials["storage"].get("aws_s3_assume_role_arn"),
138
+ )
135
139
 
136
140
  # handles file chunking
137
141
  try:
@@ -22,6 +22,10 @@ def get_aws_session(
22
22
  if storage_secrets is None:
23
23
  # set to an empty dict to allow for more dynamic code downstream
24
24
  storage_secrets = {}
25
+
26
+ stored_region_name = storage_secrets.get("region_name") # type: ignore
27
+ stored_assume_role_arn: Optional[str] = storage_secrets.get("assume_role_arn") # type: ignore
28
+
25
29
  if auth_method == AWSAuthMethod.SECRET_KEYS.value:
26
30
  if not storage_secrets:
27
31
  err_msg = "Storage secrets not found for S3 storage."
@@ -33,12 +37,10 @@ def get_aws_session(
33
37
  aws_secret_access_key=storage_secrets[
34
38
  StorageSecrets.AWS_SECRET_ACCESS_KEY.value # type: ignore
35
39
  ],
36
- region_name=storage_secrets.get("region_name"), # type: ignore
40
+ region_name=stored_region_name,
37
41
  )
38
42
  elif auth_method == AWSAuthMethod.AUTOMATIC.value:
39
- session = Session(
40
- region_name=storage_secrets.get("region_name"), # type: ignore
41
- )
43
+ session = Session(region_name=stored_region_name)
42
44
  logger.info("Successfully created automatic session")
43
45
  else:
44
46
  logger.error("AWS auth method not supported: {}", auth_method)
@@ -48,20 +50,13 @@ def get_aws_session(
48
50
  sts_client = session.client("sts")
49
51
  sts_client.get_caller_identity()
50
52
 
51
- if assume_role_arn:
53
+ target_assume_role_arn = assume_role_arn or stored_assume_role_arn
54
+ if target_assume_role_arn:
52
55
  try:
53
- response = sts_client.assume_role(
54
- RoleArn=assume_role_arn, RoleSessionName="FidesAssumeRoleSession"
55
- )
56
- temp_credentials = response["Credentials"]
57
- logger.info(
58
- f"Assumed role {assume_role_arn} and got temporary credentials."
59
- )
60
- return Session(
61
- aws_access_key_id=temp_credentials["AccessKeyId"],
62
- aws_secret_access_key=temp_credentials["SecretAccessKey"],
63
- aws_session_token=temp_credentials["SessionToken"],
64
- region_name=storage_secrets.get("region_name"), # type: ignore
56
+ return get_assumed_role_session(
57
+ target_assume_role_arn,
58
+ sts_client,
59
+ stored_region_name,
65
60
  )
66
61
  except ClientError as error:
67
62
  logger.exception(
@@ -72,6 +67,22 @@ def get_aws_session(
72
67
  return session
73
68
 
74
69
 
70
+ def get_assumed_role_session(
71
+ assume_role_arn: str, sts_client: Any, region_name: Optional[str] = None
72
+ ) -> Session:
73
+ response = sts_client.assume_role(
74
+ RoleArn=assume_role_arn, RoleSessionName="FidesAssumeRoleSession"
75
+ )
76
+ temp_credentials = response["Credentials"]
77
+ logger.info(f"Assumed role {assume_role_arn} and got temporary credentials.")
78
+ return Session(
79
+ aws_access_key_id=temp_credentials["AccessKeyId"],
80
+ aws_secret_access_key=temp_credentials["SecretAccessKey"],
81
+ aws_session_token=temp_credentials["SessionToken"],
82
+ region_name=region_name,
83
+ )
84
+
85
+
75
86
  def get_s3_client(
76
87
  auth_method: str,
77
88
  storage_secrets: Optional[Dict[StorageSecrets, Any]],
@@ -64,7 +64,7 @@ def build_user_consent_and_filtered_preferences_for_service(
64
64
  session: Session,
65
65
  is_notice_based: bool = False,
66
66
  ) -> Tuple[
67
- Optional[Union[bool, Dict[str, UserConsentPreference]]],
67
+ Optional[Union[bool, Dict[str, Dict[str, Any]]]],
68
68
  List[PrivacyPreferenceHistory],
69
69
  ]:
70
70
  """
@@ -109,7 +109,7 @@ def build_user_consent_and_filtered_preferences_for_service(
109
109
 
110
110
  # 1. NOTICE-BASED WORKFLOW
111
111
  if is_notice_based:
112
- notice_id_to_preference_map: Dict[str, UserConsentPreference] = {}
112
+ notice_preference_map: Dict[str, Dict[str, Any]] = {}
113
113
  # retrieve notices from the DB if they are associated with a relevant preference
114
114
  notices_with_preference: Query = session.query(PrivacyNotice).filter(
115
115
  PrivacyNotice.notice_key.in_(
@@ -125,10 +125,16 @@ def build_user_consent_and_filtered_preferences_for_service(
125
125
  ]
126
126
  # we only expect max 1 preference in this list
127
127
  if preference and preference[0]:
128
- notice_id_to_preference_map[notice.id] = preference[0].preference # type: ignore[assignment]
128
+ notice_preference_map[notice.id] = {
129
+ "preference": preference[0].preference,
130
+ "notice_key": notice.notice_key,
131
+ }
129
132
  filtered_preferences.append(preference[0])
130
133
 
131
- return notice_id_to_preference_map, filtered_preferences
134
+ return (
135
+ notice_preference_map,
136
+ filtered_preferences,
137
+ )
132
138
 
133
139
  # 2. GLOBAL (OPT-IN/OUT) WORKFLOW
134
140
  preference_to_propagate: UserConsentPreference = (
@@ -1,4 +1,3 @@
1
- import json
2
1
  from typing import Any, List, Optional
3
2
 
4
3
  from celery import VERSION_BANNER
@@ -6,6 +5,7 @@ from celery.apps.worker import Worker
6
5
  from celery.signals import celeryd_after_setup
7
6
  from loguru import logger
8
7
 
8
+ from fides.api.db.base import Base # type: ignore
9
9
  from fides.api.service.saas_request.override_implementations import *
10
10
  from fides.api.tasks import (
11
11
  DSR_QUEUE_NAME,
@@ -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/72caf4a266697967.css" as="style"/><link rel="stylesheet" href="/_next/static/css/72caf4a266697967.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-01277b766c8eb076.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-fc9e922ec354be47.js" defer=""></script><script src="/_next/static/chunks/pages/404-a3c57a06ff67cf1f.js" defer=""></script><script src="/_next/static/4ZsbAUsCLedx18AUPZCUU/_buildManifest.js" defer=""></script><script src="/_next/static/4ZsbAUsCLedx18AUPZCUU/_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":"4ZsbAUsCLedx18AUPZCUU","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/e728309361a9758b.css" as="style"/><link rel="stylesheet" href="/_next/static/css/e728309361a9758b.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-cf42f5a0e9af0ace.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-dc66d9fb6547cb04.js" defer=""></script><script src="/_next/static/chunks/pages/404-b482dd9e6ba3397d.js" defer=""></script><script src="/_next/static/WiKelYdZvuyhqjL7rLRaz/_buildManifest.js" defer=""></script><script src="/_next/static/WiKelYdZvuyhqjL7rLRaz/_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":"WiKelYdZvuyhqjL7rLRaz","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -0,0 +1 @@
1
+ self.__BUILD_MANIFEST=function(s,e,t,a,c,n,i,d,o,r,u,g,p,f,b,j,k,h,m,y,l,v,I,_,U,w,q,x,N,B,F,z,A,D,E,L,M,S,T,C,P,G,H,J,K,O){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":[U,"static/chunks/pages/index-259c1f1281f9b634.js"],"/404":["static/chunks/pages/404-b482dd9e6ba3397d.js"],"/_error":["static/chunks/pages/_error-bede3a8288930dcf.js"],"/add-systems":[U,"static/chunks/pages/add-systems-cb85a0014fad7c58.js"],"/add-systems/manual":[s,e,a,c,n,b,t,r,j,m,w,i,"static/chunks/pages/add-systems/manual-e16fcedb2215db13.js"],"/add-systems/multiple":[s,e,t,r,y,q,"static/chunks/pages/add-systems/multiple-892fc00510cddef8.js"],"/ant-poc":["static/chunks/pages/ant-poc-2bade915860dd327.js"],"/consent":["static/chunks/pages/consent-ec420ff6cfb82abd.js"],"/consent/configure":[s,e,t,r,y,"static/chunks/pages/consent/configure-422f4d002822a5ce.js"],"/consent/configure/add-vendors":[s,e,t,r,y,q,"static/chunks/pages/consent/configure/add-vendors-cc58c1e18966fcfd.js"],"/consent/privacy-experience":[s,e,b,t,x,"static/chunks/pages/consent/privacy-experience-046051bb82ec1c53.js"],"/consent/privacy-experience/new":[a,c,g,N,d,k,B,"static/chunks/pages/consent/privacy-experience/new-300fd2800c417d0b.js"],"/consent/privacy-experience/[id]":[a,c,g,N,d,k,B,"static/chunks/pages/consent/privacy-experience/[id]-cd8bb60adf783c4a.js"],"/consent/privacy-notices":[s,e,t,x,"static/chunks/pages/consent/privacy-notices-1f402b7525f78140.js"],"/consent/privacy-notices/new":[a,c,g,F,d,k,z,"static/chunks/pages/consent/privacy-notices/new-8bbccdd747f4100c.js"],"/consent/privacy-notices/[id]":[a,c,g,F,d,k,z,"static/chunks/pages/consent/privacy-notices/[id]-72dd15bfd87616c9.js"],"/consent/properties":[s,e,t,A,"static/chunks/pages/consent/properties-55cc394ebc428e59.js"],"/consent/reporting":[s,e,a,t,"static/chunks/pages/consent/reporting-de9118ec446ce994.js"],"/data-catalog":[s,e,a,c,n,t,"static/css/95ac327e5d70148d.css","static/chunks/pages/data-catalog-7efbc1558febf026.js"],"/data-catalog/[systemId]/projects":[s,e,a,c,n,t,p,l,i,"static/chunks/pages/data-catalog/[systemId]/projects-4ea56a1c3010ba99.js"],"/data-catalog/[systemId]/projects/[projectUrn]":[s,e,t,D,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-b0b976e8dd5e4cd6.js"],"/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]":[s,e,a,c,n,t,p,l,E,i,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]-ac033a16f043e6f9.js"],"/data-catalog/[systemId]/resources":[s,e,t,D,"static/chunks/pages/data-catalog/[systemId]/resources-305555b74c357bf2.js"],"/data-catalog/[systemId]/resources/[resourceUrn]":[s,e,a,c,n,t,p,l,E,i,"static/chunks/pages/data-catalog/[systemId]/resources/[resourceUrn]-71e26d262afcaea5.js"],"/data-discovery/action-center":[s,e,t,"static/chunks/pages/data-discovery/action-center-920ed6df7e0aa3a5.js"],"/data-discovery/action-center/[monitorId]":[s,e,a,c,n,t,o,"static/chunks/pages/data-discovery/action-center/[monitorId]-94308fff1468b5e6.js"],"/data-discovery/action-center/[monitorId]/[systemId]":[s,e,a,c,n,t,o,r,m,i,"static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-cdd23dc94e1fbf89.js"],"/data-discovery/activity":[s,e,t,"static/chunks/pages/data-discovery/activity-7e25ddfe45048b35.js"],"/data-discovery/detection":[s,e,t,o,h,L,"static/chunks/pages/data-discovery/detection-f473b2ee1c67be3c.js"],"/data-discovery/detection/[resourceUrn]":[s,e,t,o,h,L,"static/chunks/pages/data-discovery/detection/[resourceUrn]-10f789d4ab2b8927.js"],"/data-discovery/discovery":[s,e,a,c,n,t,o,p,h,M,i,"static/chunks/pages/data-discovery/discovery-ad077f30849fdc0a.js"],"/data-discovery/discovery/[resourceUrn]":[s,e,a,c,n,t,o,p,h,M,i,"static/chunks/pages/data-discovery/discovery/[resourceUrn]-2569551ae75ea5a2.js"],"/datamap":[s,e,"static/chunks/255-7db55b0e3a0f9dea.js",t,j,S,"static/chunks/pages/datamap-4b12c6b141f6cda3.js"],"/dataset":[s,e,u,t,f,"static/chunks/pages/dataset-ee98d1a24a68f13b.js"],"/dataset/new":[u,f,"static/chunks/pages/dataset/new-8dba366b1d55a15c.js"],"/dataset/[datasetId]":[s,e,"static/chunks/9729-fcf6ff4e3534e4a8.js",t,v,"static/chunks/pages/dataset/[datasetId]-ab7c88da427b6396.js"],"/dataset/[datasetId]/[collectionName]":[s,e,a,c,n,I,t,v,i,"static/chunks/pages/dataset/[datasetId]/[collectionName]-76205fa5ddc5c3ae.js"],"/dataset/[datasetId]/[collectionName]/[...subfieldNames]":[s,e,a,c,n,I,t,v,i,"static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-da407b63cd3f5276.js"],"/datastore-connection":["static/css/5f393dea1c0d031c.css","static/chunks/pages/datastore-connection-340e311fa02584dc.js"],"/datastore-connection/new":[u,b,f,T,"static/chunks/pages/datastore-connection/new-8f2cfc79022cb6d0.js"],"/datastore-connection/[id]":[u,f,T,"static/chunks/pages/datastore-connection/[id]-e39d66c8dfdc4c6f.js"],"/fides-js-docs":["static/chunks/2fbcc6de-a6c61724c327e9fa.js","static/chunks/e3251fe7-5777b5d778e6fffa.js",a,c,n,u,I,C,"static/css/ab65b8cc3144bfc8.css","static/chunks/905-8ab919e7b274ed50.js","static/chunks/pages/fides-js-docs-80b241bf6cddb72e.js"],"/integrations":[a,c,n,"static/chunks/6834-dcda0a8ed484775e.js",P,"static/chunks/pages/integrations-d584110d81e5b395.js"],"/integrations/[id]":[s,e,a,c,n,t,P,"static/css/92c81f666644c594.css","static/chunks/pages/integrations/[id]-0fc3ffd11ba163f9.js"],"/login":["static/chunks/pages/login-0cb0eb44bf2dd24c.js"],"/login/[provider]":["static/chunks/pages/login/[provider]-c58beef131c3a82d.js"],"/messaging":[s,e,a,c,n,t,"static/chunks/pages/messaging-de5efa1ff6d0e9ea.js"],"/messaging/add-template":[d,G,"static/chunks/pages/messaging/add-template-11bdab1b292c6f89.js"],"/messaging/[id]":[d,G,"static/chunks/pages/messaging/[id]-1d18e28fa55a149b.js"],"/privacy-requests":[s,e,t,H,"static/chunks/pages/privacy-requests-630db544f2a27167.js"],"/privacy-requests/configure":["static/chunks/pages/privacy-requests/configure-6b9a46fef5031a0b.js"],"/privacy-requests/configure/messaging":["static/chunks/pages/privacy-requests/configure/messaging-e8e9ae8d58acceb2.js"],"/privacy-requests/configure/storage":["static/chunks/pages/privacy-requests/configure/storage-a76f1d1a19e61fe8.js"],"/privacy-requests/[id]":[a,c,n,H,"static/css/b89fc4b36b501cf6.css","static/chunks/pages/privacy-requests/[id]-96350050e842bde5.js"],"/properties":[s,e,t,A,"static/chunks/pages/properties-d2b95b0ebae06804.js"],"/properties/add-property":[d,J,"static/chunks/pages/properties/add-property-984851804558be53.js"],"/properties/[id]":[d,J,"static/chunks/pages/properties/[id]-835b7c4dd2240d16.js"],"/reporting/datamap":[s,e,a,c,n,C,t,j,S,"static/chunks/pages/reporting/datamap-5d1aededc7523146.js"],"/settings/about":["static/chunks/pages/settings/about-44f96bcf57cd4cbf.js"],"/settings/consent":["static/chunks/pages/settings/consent-943dfe977678edb5.js"],"/settings/consent/[configuration_id]/[purpose_id]":[s,e,t,"static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-0ba66c149139737a.js"],"/settings/custom-fields":[s,e,t,"static/chunks/pages/settings/custom-fields-39d098cbcb33d4f5.js"],"/settings/domain-records":[s,e,t,"static/chunks/pages/settings/domain-records-87df4b6493ca8162.js"],"/settings/domains":["static/chunks/pages/settings/domains-45a8a86266308028.js"],"/settings/email-templates":["static/chunks/pages/settings/email-templates-272eb2c0b7ffd290.js"],"/settings/locations":[s,K,"static/chunks/pages/settings/locations-a8cd013bdd3aef75.js"],"/settings/organization":["static/chunks/pages/settings/organization-aaa200f916ba79d8.js"],"/settings/regulations":[s,K,"static/chunks/pages/settings/regulations-5abb227df116c9c4.js"],"/systems":[s,e,t,"static/chunks/pages/systems-5eccb5fe50f7aaa9.js"],"/systems/configure/[id]":[s,e,a,c,n,b,t,o,r,j,m,w,i,"static/chunks/pages/systems/configure/[id]-693c726f22ae11c5.js"],"/systems/configure/[id]/test-datasets":[u,f,"static/chunks/pages/systems/configure/[id]/test-datasets-da1b2dd3ec61a08e.js"],"/taxonomy":["static/chunks/678d4732-50255cc09048e643.js",a,c,n,g,"static/chunks/570-c99f07161bd339cd.js","static/css/34a7eb08b86ddb57.css","static/chunks/pages/taxonomy-0611d707ce426ec7.js"],"/user-management":[_,"static/chunks/pages/user-management-4eb69d5c6af8581b.js"],"/user-management/new":[_,O,"static/chunks/pages/user-management/new-65ef1bdebb679666.js"],"/user-management/profile/[id]":[_,O,"static/chunks/pages/user-management/profile/[id]-28abb07c95f2c7c2.js"],sortedPages:["/","/404","/_app","/_error","/add-systems","/add-systems/manual","/add-systems/multiple","/ant-poc","/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]","/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/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/c78d26b1-88a3e1bacb2a03c2.js","static/chunks/6060-cb1ab5be7067bf7b.js","static/chunks/4481-c19a0c5e273a3ec7.js","static/chunks/2858-0b44609b6be7850b.js","static/chunks/2866-a73888c17a195cbe.js","static/chunks/9278-9b1b5970f0702668.js","static/css/d2d4e9a6923e6730.css","static/chunks/9282-c7f853a8175266bc.js","static/chunks/9719-d3de30714871f267.js","static/chunks/401-a15fcc78cc272c09.js","static/chunks/6527-0eed08abe252a918.js","static/chunks/4294-5b3aa9d605217915.js","static/chunks/6372-3d6d19a89e1d7a37.js","static/chunks/9327-0bc418b9b16cc2c5.js","static/chunks/5277-e8a036319456127f.js","static/chunks/9951-a0ba5bccbbbd5f33.js","static/chunks/6277-2f2d89b83a19ee67.js","static/chunks/3702-8a6360b2deef2a87.js","static/chunks/3503-2e773a38d4a79c2d.js","static/chunks/8934-e357867355f1f924.js","static/chunks/7751-f83e9877478aafcf.js","static/chunks/5487-b6957c5ba835167b.js","static/chunks/8702-d1c8296f9f6afc10.js","static/chunks/3513-2ee2ff13c15af241.js","static/css/972dc7eef106ee7c.css","static/chunks/9965-8880affd11242777.js","static/chunks/5826-8a035114917033bb.js","static/chunks/6853-45e8c48ad0fdf1db.js","static/chunks/9014-eeae6f581158e645.js","static/chunks/1817-90e54de7c706b571.js","static/chunks/3615-5e2d062d684b8fa1.js","static/chunks/6954-6de30beefefac64a.js","static/chunks/79-576004c5ee5116f6.js","static/chunks/3872-53b86dcc7ee3ddec.js","static/chunks/3855-7a43acdb1f8de2f5.js","static/chunks/2479-b4f7654c27a15c05.js","static/chunks/1904-e1034674c6eef004.js","static/chunks/9572-c34e18bd40467909.js","static/chunks/9767-ee5b0af0e65d3802.js","static/chunks/9187-851756440f79cd75.js","static/chunks/5973-4b83cf367b6d82a2.js","static/chunks/1100-0046887f49e9e7c7.js","static/chunks/8433-234a6feeb457cbb8.js","static/chunks/4060-93514991b84ca46c.js","static/chunks/5835-2e2aa29b4a8bf4e6.js","static/chunks/4121-01e2b9f905b8ca29.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1100],{58754:function(e,t,n){var r=n(24246),i=n(91922),s=n(70788);t.Z=e=>{let{heading:t,breadcrumbItems:n,isSticky:a=!0,children:l,rightContent:o,style:u,...c}=e;return(0,r.jsxs)("div",{...c,style:a?{position:"sticky",top:"-24px",paddingTop:"24px",paddingBottom:"24px",paddingLeft:"40px",marginLeft:"-40px",paddingRight:"40px",marginRight:"-40px",marginTop:"-24px",left:0,zIndex:20,backgroundColor:"white",...u}:{paddingBottom:"24px",...u},children:[(0,r.jsxs)(i.jqI,{justify:"space-between",children:["string"==typeof t?(0,r.jsx)(i.lQT,{className:n||l?"pb-4":void 0,level:1,"data-testid":"page-heading",children:t}):t,o&&(0,r.jsx)("div",{"data-testid":"page-header-right-content",children:o})]}),!!n&&(0,r.jsx)(s.m,{className:l?"pb-4":void 0,items:n,"data-testid":"page-breadcrumb"}),l]})}},10342:function(e,t,n){var r=n(24246),i=n(91922),s=n(46238);t.Z=e=>{let{title:t,tooltip:n,children:a,...l}=e;return(0,r.jsxs)(i.xuv,{borderRadius:"md",border:"1px solid",borderColor:"gray.200",...l,children:[(0,r.jsxs)(i.X6q,{as:"h3",fontSize:"sm",fontWeight:"semibold",color:"gray.700",py:4,px:6,backgroundColor:"gray.50",borderRadius:"md",textAlign:"left",children:[t,n?(0,r.jsx)(i.xvT,{as:"span",mx:1,children:(0,r.jsx)(s.b,{label:n})}):void 0]}),(0,r.jsx)(i.Kqy,{p:6,spacing:6,children:a})]})}},70788:function(e,t,n){n.d(t,{m:function(){return u}});var r=n(24246),i=n(91922),s=n(79894),a=n.n(s),l=n(27378);let{Text:o}=i.AntTypography,u=e=>{let{items:t,...n}=e,s=(0,l.useMemo)(()=>null==t?void 0:t.map((e,n)=>{let s=n===t.length-1,l={...e},u=l.onClick&&!l.href;return("string"==typeof l.title&&(l.title=(0,r.jsx)(o,{style:{color:"inherit",maxWidth:s?void 0:400},ellipsis:!s,children:l.title})),u)?l.title=(0,r.jsx)(i.wpx,{type:"text",size:"small",icon:l.icon,onClick:l.onClick,className:"ant-breadcrumb-link -mt-px px-1 text-inherit",children:l.title}):(l.icon&&(l.title=(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"anticon align-text-bottom",children:l.icon}),l.title]})),l.href&&l.title&&(l.title=(0,r.jsx)(a(),{href:l.href,className:"ant-breadcrumb-link",children:l.title}),delete l.href)),l}),[t]);return(0,r.jsx)(i.zrq,{items:s,...n})}},67810:function(e,t,n){n.d(t,{Z:function(){return s}}),(r=i||(i={})).PRIVACY_REQUEST_REVIEW_APPROVE="privacy_request_review_approve",r.PRIVACY_REQUEST_REVIEW_DENY="privacy_request_review_deny",r.PRIVACY_REQUEST_RECEIPT="privacy_request_receipt",r.PRIVACY_REQUEST_COMPLETE_ACCESS="privacy_request_complete_access",r.PRIVACY_REQUEST_COMPLETE_DELETION="privacy_request_complete_deletion",r.SUBJECT_IDENTITY_VERIFICATION="subject_identity_verification";var r,i,s={[i.PRIVACY_REQUEST_COMPLETE_ACCESS]:"Access request completed",[i.PRIVACY_REQUEST_COMPLETE_DELETION]:"Erasure request completed",[i.PRIVACY_REQUEST_RECEIPT]:"Privacy request received",[i.PRIVACY_REQUEST_REVIEW_APPROVE]:"Privacy request approved",[i.PRIVACY_REQUEST_REVIEW_DENY]:"Privacy request denied",[i.SUBJECT_IDENTITY_VERIFICATION]:"Subject identity verification"}},20149:function(e,t,n){var r=n(24246),i=n(77830),s=n(91922),a=n(34090),l=n(86677),o=n(16134),u=n(10342),c=n(40324),d=n(51472),p=n(67810),m=n(64826);let g=()=>{var e;let t=(0,o.C)(m.Zp),n=(0,o.C)(m.G1);(0,m.gz)({page:t,size:n});let i=(0,o.C)(m.YO),{values:s,setFieldValue:l}=(0,a.u6)();return(0,r.jsx)(d.Z,{label:"Associated properties",addButtonLabel:"Add property",idField:"id",nameField:"name",allItems:i.map(e=>({id:e.id,name:e.name})),values:null!==(e=s.properties)&&void 0!==e?e:[],setValues:e=>l("properties",e),draggable:!0,maxHeight:100,baseTestId:"property"})};t.Z=e=>{let{template:t,handleSubmit:n,handleDelete:o}=e,d=(0,l.useRouter)(),m=()=>{d.push(i.q)},f={type:t.type,content:t.content,properties:t.properties||[],is_enabled:t.is_enabled,id:t.id||""};return(0,r.jsx)(a.J9,{enableReinitialize:!0,initialValues:f,onSubmit:n,children:e=>{let{dirty:t,isValid:n,isSubmitting:i}=e;return(0,r.jsxs)(a.l0,{style:{paddingTop:"12px",paddingBottom:"12px"},children:[(0,r.jsx)(s.xuv,{py:3,children:(0,r.jsxs)(u.Z,{title:"".concat(p.Z[f.type]),children:[(0,r.jsx)(c.j0,{isRequired:!0,label:"Email subject",name:"content.subject",variant:"stacked"}),(0,r.jsx)(c.Ks,{isRequired:!0,label:"Message body",name:"content.body",value:"test",variant:"stacked",resize:!0}),(0,r.jsx)(s.xuv,{py:3,children:(0,r.jsx)(g,{})}),(0,r.jsx)(c.w8,{name:"is_enabled",label:"Enable message",variant:"switchFirst"})]})}),(0,r.jsxs)(s.kCb,{justifyContent:"space-between",width:"100%",paddingTop:2,children:[f.id&&o&&(0,r.jsx)(s.wpx,{"data-testid":"delete-template-button",loading:!1,className:"mr-3",onClick:o,children:"Delete"}),(0,r.jsxs)(s.kCb,{justifyContent:"right",width:"100%",paddingTop:2,children:[(0,r.jsx)(s.wpx,{loading:!1,className:"mr-3",onClick:m,children:"Cancel"}),(0,r.jsx)(s.wpx,{htmlType:"submit",type:"primary",disabled:i||!t||!n,loading:i,"data-testid":"submit-btn",children:"Save"})]})]})]})}})}},5058:function(e,t,n){n.d(t,{Vw:function(){return s},ms:function(){return r},pS:function(){return i},vm:function(){return a}});let{useGetSummaryMessagingTemplatesQuery:r,usePutMessagingTemplateByIdMutation:i,useCreateMessagingTemplateByTypeMutation:s,usePatchMessagingTemplateByIdMutation:a}=n(78780).u.injectEndpoints({endpoints:e=>({getSummaryMessagingTemplates:e.query({query:e=>({method:"GET",url:"plus/messaging/templates/summary",params:e}),providesTags:()=>["Property-Specific Messaging Templates"]}),putMessagingTemplateById:e.mutation({query:e=>{let{templateId:t,template:n}=e;return{url:"plus/messaging/templates/".concat(t),method:"PUT",body:n}},invalidatesTags:()=>["Property-Specific Messaging Templates"]}),patchMessagingTemplateById:e.mutation({query:e=>{let{templateId:t,template:n}=e;return{url:"plus/messaging/templates/".concat(t),method:"PATCH",body:n}},invalidatesTags:()=>["Property-Specific Messaging Templates"]}),createMessagingTemplateByType:e.mutation({query:e=>{let{templateType:t,template:n}=e;return{url:"plus/messaging/templates/".concat(t),method:"POST",body:n}},invalidatesTags:()=>["Property-Specific Messaging Templates"]})})})},47466:function(e,t,n){n.d(t,{KC:function(){return a},ew:function(){return l},gQ:function(){return s},jM:function(){return r},lE:function(){return i}});let{useGetMessagingTemplatesQuery:r,useUpdateMessagingTemplatesMutation:i,useGetMessagingTemplateByIdQuery:s,useGetMessagingTemplateDefaultQuery:a,useDeleteMessagingTemplateByIdMutation:l}=n(78780).u.injectEndpoints({endpoints:e=>({getMessagingTemplates:e.query({query:()=>({url:"messaging/templates"}),providesTags:()=>["Messaging Templates"]}),updateMessagingTemplates:e.mutation({query:e=>({url:"messaging/templates",method:"PUT",body:e}),invalidatesTags:()=>["Messaging Templates"]}),getMessagingTemplateById:e.query({query:e=>({url:"/messaging/templates/".concat(e)}),providesTags:()=>["Property-Specific Messaging Templates"]}),getMessagingTemplateDefault:e.query({query:e=>({url:"/messaging/templates/default/".concat(e)})}),deleteMessagingTemplateById:e.mutation({query:e=>({url:"/messaging/templates/".concat(e),method:"DELETE"}),invalidatesTags:()=>["Property-Specific Messaging Templates"]})})})},31883:function(e,t,n){n.d(t,{Bw:function(){return r.Bw},D4:function(){return r.D4}});var r=n(19043)},11055:function(e,t,n){n.d(t,{M:function(){return d}});var r=n(24246),i=n(29427),s=n(27378),a=n(40976),l=n(18397),o=n(42308),u=n(25431),c=n(39556);let d=(0,s.forwardRef)(function({children:e,as:t="ul",axis:n="y",onReorder:d,values:g,...f},y){let h=(0,o.h)(()=>l.E[t]),x=[],E=(0,s.useRef)(!1);return(0,i.k)(!!g,"Reorder.Group must be provided a values prop"),(0,s.useEffect)(()=>{E.current=!1}),(0,r.jsx)(h,{...f,ref:y,ignoreStrict:!0,children:(0,r.jsx)(a.Y.Provider,{value:{axis:n,registerItem:(e,t)=>{let r=x.findIndex(t=>e===t.value);-1!==r?x[r].layout=t[n]:x.push({value:e,layout:t[n]}),x.sort(m)},updateOrder:(e,t,n)=>{if(E.current)return;let r=function(e,t,n,r){if(!r)return e;let i=e.findIndex(e=>e.value===t);if(-1===i)return e;let s=r>0?1:-1,a=e[i+s];if(!a)return e;let l=e[i],o=a.layout,d=(0,c.t)(o.min,o.max,.5);return 1===s&&l.layout.max+n>d||-1===s&&l.layout.min+n<d?(0,u.uo)(e,i,i+s):e}(x,e,t,n);x!==r&&(E.current=!0,d(r.map(p).filter(e=>-1!==g.indexOf(e))))}},children:e})})});function p(e){return e.value}function m(e,t){return e.layout.min-t.layout.min}},7078:function(e,t,n){n.d(t,{e:function(){return T}});var r=n(24246),i=n(29427),s=n(27378),a=n(40976),l=n(18397),o=n(42308),u=n(69222),c=n(67412);function d(e){let t=(0,o.h)(()=>(0,u.BX)(e)),{isStatic:n}=(0,s.useContext)(c._);if(n){let[,n]=(0,s.useState)(e);(0,s.useEffect)(()=>t.on("change",n),[])}return t}var p=n(13998);let m=e=>e&&"object"==typeof e&&e.mix,g=e=>m(e)?e.mix:void 0;var f=n(64306),y=n(95984);function h(e,t){let n=d(t()),r=()=>n.set(t());return r(),(0,f.L)(()=>{let t=()=>y.Wi.preRender(r,!1,!0),n=e.map(e=>e.on("change",t));return()=>{n.forEach(e=>e()),(0,y.Pn)(r)}}),n}function x(e,t){let n=(0,o.h)(()=>[]);return h(e,()=>{n.length=0;let r=e.length;for(let t=0;t<r;t++)n[t]=e[t].get();return t(n)})}var E=n(3522);function v(e,t=0){return(0,E.i)(e)?e:d(t)}let T=(0,s.forwardRef)(function({children:e,style:t={},value:n,as:c="li",onDrag:d,layout:m=!0,...f},y){let E=(0,o.h)(()=>l.E[c]),T=(0,s.useContext)(a.Y),b={x:v(t.x),y:v(t.y)},_=function(e,t,n,r){if("function"==typeof e)return function(e){u.S1.current=[],e();let t=h(u.S1.current,e);return u.S1.current=void 0,t}(e);let i="function"==typeof t?t:function(...e){let t=!Array.isArray(e[0]),n=t?0:-1,r=e[0+n],i=e[1+n],s=e[2+n],a=e[3+n],l=(0,p.s)(i,s,{mixer:g(s[0]),...a});return t?l(r):l}(t,void 0,void 0);return Array.isArray(e)?x(e,i):x([e],([e])=>i(e))}([b.x,b.y],([e,t])=>e||t?1:"unset");(0,i.k)(!!T,"Reorder.Item must be a child of Reorder.Group");let{axis:C,registerItem:j,updateOrder:R}=T;return(0,r.jsx)(E,{drag:C,...f,dragSnapToOrigin:!0,style:{...t,x:b.x,y:b.y,zIndex:_},layout:m,onDrag:(e,t)=>{let{velocity:r}=t;r[C]&&R(n,b[C].get(),r[C]),d&&d(e,t)},onLayoutMeasure:e=>j(n,e),ref:y,ignoreStrict:!0,children:e})})},40976:function(e,t,n){n.d(t,{Y:function(){return r}});let r=(0,n(27378).createContext)(null)},47397:function(e,t,n){n.d(t,{o:function(){return a}});var r=n(42308);class i{constructor(){this.componentControls=new Set}subscribe(e){return this.componentControls.add(e),()=>this.componentControls.delete(e)}start(e,t){this.componentControls.forEach(n=>{n.start(e.nativeEvent||e,t)})}}let s=()=>new i;function a(){return(0,r.h)(s)}},76649:function(e,t,n){n.d(t,{Ln:function(){return r}});let r=(e,t)=>s(e,t),i=Symbol("SOME"),s=(e,t)=>"string"==typeof e?e===typeof t:Array.isArray(e)?i in e?e.some(e=>s(e,t)):!!Array.isArray(t)&&(0===e.length||t.every(t=>e.some(e=>s(e,t)))):"object"==typeof t&&null!==t&&Object.entries(e).every(([e,n])=>s(n,t[e]));class a{static narrow(e){return new a(t=>r(e,t))}constructor(e){this.NF=void 0,this.NF=e}satisfied(e){return this.NF(e)}build(e){return e}and(e){let t=this.NF,n=e instanceof a?e.NF:e instanceof Function?e:t=>r(e,t);return new a(e=>t(e)&&n(e))}}new a(e=>!0)}}]);