ethyca-fides 2.71.2b0__py2.py3-none-any.whl → 2.72.0rc1__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of ethyca-fides might be problematic. Click here for more details.

Files changed (307) hide show
  1. {ethyca_fides-2.71.2b0.dist-info → ethyca_fides-2.72.0rc1.dist-info}/METADATA +1 -1
  2. {ethyca_fides-2.71.2b0.dist-info → ethyca_fides-2.72.0rc1.dist-info}/RECORD +257 -241
  3. fides/_version.py +3 -3
  4. fides/api/alembic/migrations/versions/4bfbeff34611_add_polling_status.py +45 -12
  5. fides/api/api/v1/endpoints/connection_endpoints.py +38 -45
  6. fides/api/api/v1/endpoints/saas_config_endpoints.py +60 -48
  7. fides/api/api/v1/endpoints/system.py +11 -43
  8. fides/api/api/v1/endpoints/user_endpoints.py +8 -1
  9. fides/api/app_setup.py +1 -3
  10. fides/api/common_exceptions.py +4 -0
  11. fides/api/email_templates/get_email_template.py +3 -0
  12. fides/api/email_templates/template_names.py +1 -0
  13. fides/api/email_templates/templates/manual_task_digest.html +316 -0
  14. fides/api/models/detection_discovery/monitor_task.py +1 -0
  15. fides/api/models/digest/digest_execution.py +11 -1
  16. fides/api/models/event_audit.py +9 -0
  17. fides/api/models/messaging_template.py +7 -0
  18. fides/api/schemas/connection_configuration/connection_config.py +1 -30
  19. fides/api/schemas/messaging/messaging.py +15 -0
  20. fides/api/service/connectors/saas/connector_registry_service.py +1 -138
  21. fides/api/service/deps.py +8 -0
  22. fides/api/service/messaging/message_dispatch_service.py +38 -1
  23. fides/api/tasks/__init__.py +0 -1
  24. fides/api/util/connection_util.py +99 -215
  25. fides/api/util/event_audit_util.py +230 -0
  26. fides/api/util/masking_util.py +31 -0
  27. fides/api/util/saas_config_updater.py +66 -0
  28. fides/service/connection/__init__.py +0 -0
  29. fides/service/connection/connection_service.py +651 -0
  30. fides/service/event_audit_service.py +16 -22
  31. fides/ui-build/static/admin/404.html +1 -1
  32. fides/ui-build/static/admin/_next/static/ODdLh9UEeAsudRtjifMM5/_buildManifest.js +1 -0
  33. fides/ui-build/static/admin/_next/static/chunks/{1437-fb699e9d69c3e325.js → 1437-4604a69888906ec0.js} +1 -1
  34. fides/ui-build/static/admin/_next/static/chunks/155-bf4e3ffb18f29226.js +1 -0
  35. fides/ui-build/static/admin/_next/static/chunks/{1817-10b392e1dd9c4673.js → 1817-6a6b4aea9d242c5b.js} +1 -1
  36. fides/ui-build/static/admin/_next/static/chunks/{2040-01d5edb1802d3482.js → 2040-8eead9d29546a50f.js} +1 -1
  37. fides/ui-build/static/admin/_next/static/chunks/{2397-40506a386a3a469a.js → 2397-92f628c53688925b.js} +1 -1
  38. fides/ui-build/static/admin/_next/static/chunks/2921-9b596ba7f5267afc.js +1 -0
  39. fides/ui-build/static/admin/_next/static/chunks/3377-80612c111e047cb6.js +1 -0
  40. fides/ui-build/static/admin/_next/static/chunks/{3696-259be222ea12392a.js → 3696-e4abb6a922b954a2.js} +1 -1
  41. fides/ui-build/static/admin/_next/static/chunks/3700-1f9f6e5ebfa3ab0a.js +1 -0
  42. fides/ui-build/static/admin/_next/static/chunks/401-c2f1e4ea077f1f26.js +1 -0
  43. fides/ui-build/static/admin/_next/static/chunks/4496-dd1ef427be497620.js +1 -0
  44. fides/ui-build/static/admin/_next/static/chunks/5185-bf5655b5d697b714.js +1 -0
  45. fides/ui-build/static/admin/_next/static/chunks/{5258-2d28b2c64acf5de3.js → 5258-63325c03319e87dc.js} +1 -1
  46. fides/ui-build/static/admin/_next/static/chunks/{5279-21929b12c927b022.js → 5279-fcac4a8575f41ecc.js} +1 -1
  47. fides/ui-build/static/admin/_next/static/chunks/5643-7800464c8df7a78e.js +1 -0
  48. fides/ui-build/static/admin/_next/static/chunks/{5783-55c0387508e50f3e.js → 5783-7deeb7de5d2db4c4.js} +1 -1
  49. fides/ui-build/static/admin/_next/static/chunks/6277-0ab2a15c37b83b8d.js +1 -0
  50. fides/ui-build/static/admin/_next/static/chunks/{6315-2d4e86a32fc40458.js → 6315-d0b886d849c2e5e3.js} +1 -1
  51. fides/ui-build/static/admin/_next/static/chunks/{6853-cb15625a713b3ef9.js → 6853-6d64d627df6f8194.js} +1 -1
  52. fides/ui-build/static/admin/_next/static/chunks/6954-8b106311a3be35f4.js +1 -0
  53. fides/ui-build/static/admin/_next/static/chunks/7245-53a20677c49b41c8.js +1 -0
  54. fides/ui-build/static/admin/_next/static/chunks/{7476-f25fce73eeb1f9c6.js → 7476-08717f00da5f89ab.js} +1 -1
  55. fides/ui-build/static/admin/_next/static/chunks/{7488-df17b592fbeaa1eb.js → 7488-bad160a2bfd89871.js} +1 -1
  56. fides/ui-build/static/admin/_next/static/chunks/7630-775c578fa8109b0f.js +1 -0
  57. fides/ui-build/static/admin/_next/static/chunks/{8011-56031d82d5428981.js → 8011-c23d609ed3f0efa5.js} +1 -1
  58. fides/ui-build/static/admin/_next/static/chunks/8212-67ac884660ddb63a.js +1 -0
  59. fides/ui-build/static/admin/_next/static/chunks/{8373-7f940f5ac9c38b1f.js → 8373-43b6df89a2085d6b.js} +1 -1
  60. fides/ui-build/static/admin/_next/static/chunks/{9046-31b16a7e872c22be.js → 9046-28fe0723e3b6584f.js} +1 -1
  61. fides/ui-build/static/admin/_next/static/chunks/9070-6d3aaaf5aa5913ba.js +1 -0
  62. fides/ui-build/static/admin/_next/static/chunks/{9330-cea1bf40f5d27e53.js → 9330-6eb11127296c54c2.js} +1 -1
  63. fides/ui-build/static/admin/_next/static/chunks/{9682-2754256aeae141bb.js → 9682-65d253d54f84f6f2.js} +1 -1
  64. fides/ui-build/static/admin/_next/static/chunks/{9899-15530c468d5656a1.js → 9899-63998972698a49fb.js} +1 -1
  65. fides/ui-build/static/admin/_next/static/chunks/9965-4709f43bf62af9a9.js +1 -0
  66. fides/ui-build/static/admin/_next/static/chunks/pages/{_app-9e869a44215709ed.js → _app-4f697016cf2fb1bb.js} +43 -43
  67. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/multiple-e2a5c951347195e3.js +1 -0
  68. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-0058fe05f2d23d1a.js +1 -0
  69. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience-b6b2d50d894cefa5.js +1 -0
  70. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-a7fe3925771bb6c3.js +1 -0
  71. fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-e9ec351281c54822.js +1 -0
  72. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{projects-69b429a9d30ebaf1.js → projects-3c935e93208d2bdd.js} +1 -1
  73. fides/ui-build/static/admin/_next/static/chunks/pages/{data-catalog-a53ef0161235ee47.js → data-catalog-79d06a04698c47c0.js} +1 -1
  74. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-e50e9c8e11412b2a.js +1 -0
  75. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/data-explorer-dd93cffd6744837d.js +1 -0
  76. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/{[monitorId]-ace848575e688200.js → [monitorId]-878aa4ab0746df5b.js} +1 -1
  77. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{action-center-53ca31c50c43007f.js → action-center-a2e9c0bfa67c633d.js} +1 -1
  78. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{activity-f87e4a0f664f4cde.js → activity-70ca690b253a118e.js} +1 -1
  79. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{new-db54d01fd8f6df50.js → new-5c20080cdb053b1d.js} +1 -1
  80. fides/ui-build/static/admin/_next/static/chunks/pages/{dataset-55d312af5228e098.js → dataset-96355a68e8c28fe8.js} +1 -1
  81. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-488beba62e832660.js → [id]-448729ee9d1d78c3.js} +1 -1
  82. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-4aad5495f9bf81ce.js → new-42c720ec5c941573.js} +1 -1
  83. fides/ui-build/static/admin/_next/static/chunks/pages/{index-8a2ba955d92d52ee.js → index-ca794e85c16cba67.js} +1 -1
  84. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-2f1dc17eba11fb4e.js +1 -0
  85. fides/ui-build/static/admin/_next/static/chunks/pages/{integrations-f69b04d3b4cf43b1.js → integrations-bbec0140433a199b.js} +1 -1
  86. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/digests/[id]-058125922d1eaeec.js +1 -0
  87. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/digests/new-7a5f76708c79f714.js +1 -0
  88. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/digests-4b5feea248275c28.js +1 -0
  89. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/providers/[key]-d08f3a7cd2d011ec.js +1 -0
  90. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/providers/new-cb2c7fbc26886052.js +1 -0
  91. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/providers-37eb88a387fca86f.js +1 -0
  92. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates/[id]-a6ae72abe59ff830.js +1 -0
  93. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates/add-template-a3e4b5b575b31be1.js +1 -0
  94. fides/ui-build/static/admin/_next/static/chunks/pages/notifications/templates-74585f6d9ff1245f.js +1 -0
  95. fides/ui-build/static/admin/_next/static/chunks/pages/notifications-9644c0f088a01fea.js +1 -0
  96. fides/ui-build/static/admin/_next/static/chunks/pages/poc/ant-components-39b5586d9c8b64aa.js +1 -0
  97. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/AntForm-5163f3213377bd35.js +1 -0
  98. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikAntFormItem-0b1547cd9b114c6b.js +1 -0
  99. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikControlled-da562cba4cffd6bb.js +1 -0
  100. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikField-3a587676869d2ef6.js +1 -0
  101. fides/ui-build/static/admin/_next/static/chunks/pages/poc/forms-defc3b917306a6d8.js +1 -0
  102. fides/ui-build/static/admin/_next/static/chunks/pages/poc/{table-migration-b46f432b51421fae.js → table-migration-11a70bcfa672ce8f.js} +1 -1
  103. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-787621468b5a7619.js +1 -0
  104. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/{storage-de681c2d022c9e0d.js → storage-24a8c2ab57625556.js} +1 -1
  105. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-da634187d8201ab3.js +1 -0
  106. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-e410d13a2b35cff4.js +1 -0
  107. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-aec1bf8a409ec75f.js +1 -0
  108. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-4c20c08ca7ea8cff.js +1 -0
  109. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{custom-fields-ea9baf24de35d3b1.js → custom-fields-8e4a76376927afd5.js} +1 -1
  110. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-2e88cc7a6074a28b.js +1 -0
  111. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-33448bf0a1d53870.js → locations-20789aa0c84d544e.js} +1 -1
  112. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{organization-3c315036f1fc9f90.js → organization-f84a13eb9688cb5f.js} +1 -1
  113. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-5be9ce7a745ce908.js +1 -0
  114. fides/ui-build/static/admin/_next/static/chunks/pages/systems-86f5557384124f79.js +1 -0
  115. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-2589729c47976357.js +1 -0
  116. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-726fbc0a34ffba1f.js → [id]-6217433a26599521.js} +1 -1
  117. fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-df9b75ab01c1a2ea.js → user-management-b6c4bf35c003965d.js} +1 -1
  118. fides/ui-build/static/admin/_next/static/css/de09ed8a0adf1ca2.css +1 -0
  119. fides/ui-build/static/admin/add-systems/manual.html +1 -1
  120. fides/ui-build/static/admin/add-systems/multiple.html +1 -1
  121. fides/ui-build/static/admin/add-systems.html +1 -1
  122. fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
  123. fides/ui-build/static/admin/consent/configure.html +1 -1
  124. fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
  125. fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
  126. fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
  127. fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
  128. fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
  129. fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
  130. fides/ui-build/static/admin/consent/properties.html +1 -1
  131. fides/ui-build/static/admin/consent/reporting.html +1 -1
  132. fides/ui-build/static/admin/consent.html +1 -1
  133. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
  134. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
  135. fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
  136. fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
  137. fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
  138. fides/ui-build/static/admin/data-catalog.html +1 -1
  139. fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +1 -1
  140. fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/data-explorer.html +1 -1
  141. fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +1 -1
  142. fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
  143. fides/ui-build/static/admin/data-discovery/activity.html +1 -1
  144. fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
  145. fides/ui-build/static/admin/data-discovery/detection.html +1 -1
  146. fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
  147. fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
  148. fides/ui-build/static/admin/datamap.html +1 -1
  149. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
  150. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
  151. fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
  152. fides/ui-build/static/admin/dataset/new.html +1 -1
  153. fides/ui-build/static/admin/dataset.html +1 -1
  154. fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
  155. fides/ui-build/static/admin/datastore-connection/new.html +1 -1
  156. fides/ui-build/static/admin/datastore-connection.html +1 -1
  157. fides/ui-build/static/admin/index.html +1 -1
  158. fides/ui-build/static/admin/integrations/[id].html +1 -1
  159. fides/ui-build/static/admin/integrations.html +1 -1
  160. fides/ui-build/static/admin/login/[provider].html +1 -1
  161. fides/ui-build/static/admin/login.html +1 -1
  162. fides/ui-build/static/admin/notifications/digests/[id].html +1 -0
  163. fides/ui-build/static/admin/notifications/digests/new.html +1 -0
  164. fides/ui-build/static/admin/notifications/digests.html +1 -0
  165. fides/ui-build/static/admin/notifications/providers/[key].html +1 -0
  166. fides/ui-build/static/admin/notifications/providers/new.html +1 -0
  167. fides/ui-build/static/admin/notifications/providers.html +1 -0
  168. fides/ui-build/static/admin/notifications/templates/[id].html +1 -0
  169. fides/ui-build/static/admin/notifications/templates/add-template.html +1 -0
  170. fides/ui-build/static/admin/notifications/templates.html +1 -0
  171. fides/ui-build/static/admin/notifications.html +1 -0
  172. fides/ui-build/static/admin/poc/ant-components.html +1 -1
  173. fides/ui-build/static/admin/poc/form-experiments/AntForm.html +1 -1
  174. fides/ui-build/static/admin/poc/form-experiments/FormikAntFormItem.html +1 -1
  175. fides/ui-build/static/admin/poc/form-experiments/FormikControlled.html +1 -1
  176. fides/ui-build/static/admin/poc/form-experiments/FormikField.html +1 -1
  177. fides/ui-build/static/admin/poc/form-experiments/FormikSpreadField.html +1 -1
  178. fides/ui-build/static/admin/poc/forms.html +1 -1
  179. fides/ui-build/static/admin/poc/table-migration.html +1 -1
  180. fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
  181. fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
  182. fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
  183. fides/ui-build/static/admin/privacy-requests.html +1 -1
  184. fides/ui-build/static/admin/properties/[id].html +1 -1
  185. fides/ui-build/static/admin/properties/add-property.html +1 -1
  186. fides/ui-build/static/admin/properties.html +1 -1
  187. fides/ui-build/static/admin/reporting/datamap.html +1 -1
  188. fides/ui-build/static/admin/settings/about/alpha.html +1 -1
  189. fides/ui-build/static/admin/settings/about.html +1 -1
  190. fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +1 -1
  191. fides/ui-build/static/admin/settings/consent.html +1 -1
  192. fides/ui-build/static/admin/settings/custom-fields/[id].html +1 -1
  193. fides/ui-build/static/admin/settings/custom-fields/new.html +1 -1
  194. fides/ui-build/static/admin/settings/custom-fields.html +1 -1
  195. fides/ui-build/static/admin/settings/domain-records.html +1 -1
  196. fides/ui-build/static/admin/settings/domains.html +1 -1
  197. fides/ui-build/static/admin/settings/email-templates.html +1 -1
  198. fides/ui-build/static/admin/settings/locations.html +1 -1
  199. fides/ui-build/static/admin/settings/organization.html +1 -1
  200. fides/ui-build/static/admin/settings/privacy-requests.html +1 -1
  201. fides/ui-build/static/admin/settings/regulations.html +1 -1
  202. fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
  203. fides/ui-build/static/admin/systems/configure/[id].html +1 -1
  204. fides/ui-build/static/admin/systems.html +1 -1
  205. fides/ui-build/static/admin/taxonomy.html +1 -1
  206. fides/ui-build/static/admin/user-management/new.html +1 -1
  207. fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
  208. fides/ui-build/static/admin/user-management.html +1 -1
  209. fides/ui-build/static/admin/_next/static/chunks/155-3d03f101c662c054.js +0 -1
  210. fides/ui-build/static/admin/_next/static/chunks/2921-edfdffa353a611e4.js +0 -1
  211. fides/ui-build/static/admin/_next/static/chunks/3377-4c129258b4c4ea28.js +0 -1
  212. fides/ui-build/static/admin/_next/static/chunks/3700-42976bfaad3b91c9.js +0 -1
  213. fides/ui-build/static/admin/_next/static/chunks/401-5270e3e23b08ab2b.js +0 -1
  214. fides/ui-build/static/admin/_next/static/chunks/5185-325e5435a0c7dcb7.js +0 -1
  215. fides/ui-build/static/admin/_next/static/chunks/5643-7583c1f8dbd83273.js +0 -1
  216. fides/ui-build/static/admin/_next/static/chunks/6277-ca31d48a33202761.js +0 -1
  217. fides/ui-build/static/admin/_next/static/chunks/6954-08b59d28d7a2a43b.js +0 -1
  218. fides/ui-build/static/admin/_next/static/chunks/7245-895bb7c6a6c797bc.js +0 -1
  219. fides/ui-build/static/admin/_next/static/chunks/7630-71582de0e818e28f.js +0 -1
  220. fides/ui-build/static/admin/_next/static/chunks/9070-13f237db78da586d.js +0 -1
  221. fides/ui-build/static/admin/_next/static/chunks/9965-54037b6c8f36d14b.js +0 -1
  222. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/multiple-1c9cef80deccb15d.js +0 -1
  223. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-4adeec3bcec05f7b.js +0 -1
  224. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience-4254abef7bb52edd.js +0 -1
  225. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-8e76cbfaf71fdcb9.js +0 -1
  226. fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-93730a4316c0d980.js +0 -1
  227. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-f85f4f8fcf1bfbdb.js +0 -1
  228. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/data-explorer-3619e454763dba09.js +0 -1
  229. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-4580f70eb41b6a7d.js +0 -1
  230. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/[id]-d6eed2dc5d27f625.js +0 -1
  231. fides/ui-build/static/admin/_next/static/chunks/pages/messaging/add-template-c7b43fa365f4be10.js +0 -1
  232. fides/ui-build/static/admin/_next/static/chunks/pages/messaging-c7ba755c2e0e2377.js +0 -1
  233. fides/ui-build/static/admin/_next/static/chunks/pages/poc/ant-components-f14bfd5890a0e939.js +0 -1
  234. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/AntForm-e4274a4d5d23eea9.js +0 -1
  235. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikAntFormItem-f5bce1ceb0502f04.js +0 -1
  236. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikControlled-90b4ea9f9deca6e2.js +0 -1
  237. fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/FormikField-d6043ae8dae6ef7d.js +0 -1
  238. fides/ui-build/static/admin/_next/static/chunks/pages/poc/forms-520ba5ae02f47bda.js +0 -1
  239. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-fe4ed3ad75151e36.js +0 -1
  240. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-cd8ba2eef9085377.js +0 -1
  241. fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-764b6ce8e030d4a1.js +0 -1
  242. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-da78452b3c41b29e.js +0 -1
  243. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-6442e761ecb5c65a.js +0 -1
  244. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-6f61d886aa6f5ce7.js +0 -1
  245. fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers/[key]-4a18d8135c0dbf2a.js +0 -1
  246. fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers/new-41957281b8ec26b1.js +0 -1
  247. fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers-776258bad0941a7d.js +0 -1
  248. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-8067e12227210f48.js +0 -1
  249. fides/ui-build/static/admin/_next/static/chunks/pages/systems-277ea1f34c3714cf.js +0 -1
  250. fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-cecea5832cb1f3b0.js +0 -1
  251. fides/ui-build/static/admin/_next/static/css/372d6a236c84613f.css +0 -1
  252. fides/ui-build/static/admin/_next/static/zmEQMSpOBih8kmA1t-EWO/_buildManifest.js +0 -1
  253. fides/ui-build/static/admin/messaging/[id].html +0 -1
  254. fides/ui-build/static/admin/messaging/add-template.html +0 -1
  255. fides/ui-build/static/admin/messaging.html +0 -1
  256. fides/ui-build/static/admin/settings/messaging-providers/[key].html +0 -1
  257. fides/ui-build/static/admin/settings/messaging-providers/new.html +0 -1
  258. fides/ui-build/static/admin/settings/messaging-providers.html +0 -1
  259. {ethyca_fides-2.71.2b0.dist-info → ethyca_fides-2.72.0rc1.dist-info}/WHEEL +0 -0
  260. {ethyca_fides-2.71.2b0.dist-info → ethyca_fides-2.72.0rc1.dist-info}/entry_points.txt +0 -0
  261. {ethyca_fides-2.71.2b0.dist-info → ethyca_fides-2.72.0rc1.dist-info}/licenses/LICENSE +0 -0
  262. {ethyca_fides-2.71.2b0.dist-info → ethyca_fides-2.72.0rc1.dist-info}/top_level.txt +0 -0
  263. /fides/ui-build/static/admin/_next/static/{zmEQMSpOBih8kmA1t-EWO → ODdLh9UEeAsudRtjifMM5}/_ssgManifest.js +0 -0
  264. /fides/ui-build/static/admin/_next/static/chunks/{1099-27b2d4e59a569b38.js → 1099-d1b22e891705eaf8.js} +0 -0
  265. /fides/ui-build/static/admin/_next/static/chunks/{1115-8fb5000847f73ec7.js → 1115-584dac093cef6cc3.js} +0 -0
  266. /fides/ui-build/static/admin/_next/static/chunks/{3772-aa7beafe5df5e656.js → 3772-b945c6839e43c753.js} +0 -0
  267. /fides/ui-build/static/admin/_next/static/chunks/{3923-fa1d71afc7dc9e6e.js → 3923-c1e41661ebf57178.js} +0 -0
  268. /fides/ui-build/static/admin/_next/static/chunks/{4817-5f9b9c9bafe888f1.js → 4817-066598cef25d7e88.js} +0 -0
  269. /fides/ui-build/static/admin/_next/static/chunks/{549-c3b4c51f45a84a52.js → 549-3e3b8d01bc984f96.js} +0 -0
  270. /fides/ui-build/static/admin/_next/static/chunks/{7773-98d34d188ae0a694.js → 7773-24899908bf8ff659.js} +0 -0
  271. /fides/ui-build/static/admin/_next/static/chunks/{796-7944f684f8945506.js → 796-6fe49d134f660156.js} +0 -0
  272. /fides/ui-build/static/admin/_next/static/chunks/{9826-e71887e2c4283249.js → 9826-1f42934a2863992e.js} +0 -0
  273. /fides/ui-build/static/admin/_next/static/chunks/pages/{404-2014144a1a0fa64f.js → 404-962d132471cd41ba.js} +0 -0
  274. /fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{manual-4f3ba02774f27795.js → manual-055d058d16c02957.js} +0 -0
  275. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-f7bdc2da53137ffd.js → add-vendors-7c829e58485fc821.js} +0 -0
  276. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{configure-a27b220fe76bdc8e.js → configure-5c58b69dd473cc06.js} +0 -0
  277. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-542fd4a4322122f1.js → [id]-58460ac9c1dface5.js} +0 -0
  278. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-d31d1c233e94dc1f.js → [id]-25ce8366e689363b.js} +0 -0
  279. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-2ea057e6217993f9.js → new-faa457089616711a.js} +0 -0
  280. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-eb557180eded0abd.js → properties-45a2901a35edc8f7.js} +0 -0
  281. /fides/ui-build/static/admin/_next/static/chunks/pages/{consent-c64589e53338e59a.js → consent-a7a4e419e4086033.js} +0 -0
  282. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-d3d1841bc8105e56.js → [resourceUrn]-3b59925f6c9a13a9.js} +0 -0
  283. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-8cd4d1d6ba000333.js → [projectUrn]-ffb6e0fe6712342e.js} +0 -0
  284. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-791c522ad1d9a2ce.js → [resourceUrn]-8d7d9152e215c3b6.js} +0 -0
  285. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{resources-8c7103ebf01d6e6a.js → resources-96be972a983616e3.js} +0 -0
  286. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-699762cb8a66237e.js → [resourceUrn]-260f5deb68966b70.js} +0 -0
  287. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-d970d0b82db36c88.js → detection-d735dab3d9f3adc5.js} +0 -0
  288. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-a6343038a447699c.js → [resourceUrn]-c7f055275a2c503f.js} +0 -0
  289. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-ce82ba79f9bf825c.js → discovery-b1cfd55c7e127865.js} +0 -0
  290. /fides/ui-build/static/admin/_next/static/chunks/pages/{datamap-ae7a4c1c4eabc0d4.js → datamap-18f255a8bbeecaa4.js} +0 -0
  291. /fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/{[...subfieldNames]-179e5d09ccff50c1.js → [...subfieldNames]-e04a4e16ccf32aef.js} +0 -0
  292. /fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/{[collectionName]-59466e5e238c59d0.js → [collectionName]-a40c4febe16a0a6d.js} +0 -0
  293. /fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{[datasetId]-36d90c8c39fb0d1c.js → [datasetId]-f500a77eefb057e7.js} +0 -0
  294. /fides/ui-build/static/admin/_next/static/chunks/pages/{datastore-connection-496ec7ecca8259dc.js → datastore-connection-a8fc95a46de38b35.js} +0 -0
  295. /fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-04ebf2fb6fc4358a.js → configure-1926359bdf5d6c30.js} +0 -0
  296. /fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-f75a407d78857ab3.js → [id]-47118b9976ad7212.js} +0 -0
  297. /fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-975ff605e1dbc09c.js → add-property-2e6b0d8b409ba1fd.js} +0 -0
  298. /fides/ui-build/static/admin/_next/static/chunks/pages/{properties-e7fdf3a9a3e8c267.js → properties-32486c25255c9cb1.js} +0 -0
  299. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields/{[id]-bd1042a0e9be6aff.js → [id]-a270325109398f48.js} +0 -0
  300. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields/{new-469ad83c8cfa1290.js → new-2e0c8e249f286427.js} +0 -0
  301. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-44d06e280990854d.js → domain-records-e3dcef1ec8cf8b9e.js} +0 -0
  302. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{email-templates-11148b182370fd83.js → email-templates-7469d2f85396c693.js} +0 -0
  303. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{privacy-requests-00917525c9245a90.js → privacy-requests-b72df6f3d460125f.js} +0 -0
  304. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-5d924b2f1f926b88.js → regulations-aa02bc818e089c49.js} +0 -0
  305. /fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-1a902922759cae76.js → [id]-2fc7c0d3988427b3.js} +0 -0
  306. /fides/ui-build/static/admin/_next/static/chunks/pages/user-management/{new-629c88e90699369b.js → new-e399005c3bb4db1b.js} +0 -0
  307. /fides/ui-build/static/admin/_next/static/chunks/{webpack-118fb4723d13c14f.js → webpack-8eac1ea5c825c8b4.js} +0 -0
@@ -0,0 +1,230 @@
1
+ from datetime import datetime
2
+ from enum import Enum
3
+ from typing import Any, Dict, Optional, Tuple
4
+
5
+ from fides.api.common_exceptions import NoSuchConnectionTypeSecretSchemaError
6
+ from fides.api.models.connectionconfig import ConnectionConfig
7
+ from fides.api.models.event_audit import EventAuditType
8
+ from fides.api.schemas.connection_configuration.connection_oauth_config import (
9
+ OAuthConfigSchema,
10
+ )
11
+ from fides.api.util.connection_type import get_connection_type_secret_schema
12
+ from fides.api.util.masking_util import mask_sensitive_fields
13
+
14
+
15
+ def normalize_value(value: Any) -> Any:
16
+ """
17
+ Normalize values for consistent comparison and serialization.
18
+
19
+ - Converts datetime objects to ISO strings
20
+ - Converts enums to their string values
21
+ - Converts lists of enums to lists of string values
22
+ - Treats None and empty strings as equivalent (both become None)
23
+ """
24
+ # Treat None and empty strings as equivalent
25
+ if value == "" or value is None:
26
+ return None
27
+ if isinstance(value, datetime):
28
+ return value.isoformat()
29
+ if isinstance(value, Enum):
30
+ return value.value
31
+ if (
32
+ isinstance(value, list) and value and hasattr(value[0], "value")
33
+ ): # List of enums
34
+ return [item.value for item in value]
35
+ return value
36
+
37
+
38
+ def _get_saas_connector_type(connection_config: ConnectionConfig) -> Optional[str]:
39
+ """
40
+ Helper function to extract SaaS connector type from connection config.
41
+
42
+ Args:
43
+ connection_config: The connection configuration
44
+
45
+ Returns:
46
+ SaaS connector type if available, None otherwise
47
+ """
48
+ connection_type = connection_config.connection_type.value # type: ignore[attr-defined]
49
+ if connection_type == "saas" and connection_config.saas_config:
50
+ try:
51
+ saas_config = connection_config.get_saas_config()
52
+ if saas_config:
53
+ return saas_config.type
54
+ except Exception:
55
+ # If SaaS config is invalid, try to get type directly from raw config
56
+ if (
57
+ isinstance(connection_config.saas_config, dict)
58
+ and "type" in connection_config.saas_config
59
+ ):
60
+ return connection_config.saas_config["type"]
61
+ return None
62
+
63
+
64
+ def _create_connection_event_details(
65
+ connection_config: ConnectionConfig,
66
+ operation_type: str,
67
+ changed_fields: Optional[set] = None,
68
+ ) -> Dict[str, Any]:
69
+ """
70
+ Create standardized event details for connection audit events.
71
+
72
+ Args:
73
+ connection_config: The connection configuration
74
+ operation_type: Type of operation (create, update, delete)
75
+ changed_fields: Set of field names that changed (None means include all fields)
76
+
77
+ Returns:
78
+ Standardized event details dictionary
79
+ """
80
+ event_details: dict[str, Any] = {
81
+ "operation_type": operation_type,
82
+ }
83
+
84
+ # Define fields to exclude from audit details
85
+ excluded_fields = {
86
+ "id",
87
+ "created_at",
88
+ "updated_at",
89
+ "secrets",
90
+ }
91
+
92
+ # Dynamically add connection config fields (only changed fields if specified)
93
+ configuration_changes: dict[str, Any] = {}
94
+ for column in connection_config.__table__.columns:
95
+ field_name = column.name
96
+ if field_name not in excluded_fields:
97
+ # If changed_fields is specified, only include fields that changed
98
+ if changed_fields is not None and field_name not in changed_fields:
99
+ continue
100
+
101
+ value = getattr(connection_config, field_name)
102
+
103
+ configuration_changes[field_name] = normalize_value(value)
104
+
105
+ event_details["configuration_changes"] = configuration_changes
106
+ return event_details
107
+
108
+
109
+ def generate_connection_audit_event_details(
110
+ event_type: EventAuditType,
111
+ connection_config: ConnectionConfig,
112
+ description: Optional[str] = None,
113
+ changed_fields: Optional[set] = None,
114
+ ) -> Tuple[Dict[str, Any], str]:
115
+ """
116
+ Create an audit event for connection operations.
117
+
118
+ Args:
119
+ event_type: Type of audit event
120
+ connection_config: The connection configuration
121
+ description: Human-readable description
122
+ changed_fields: Set of field names that changed (None means include all fields)
123
+
124
+ Returns:
125
+ Created EventAudit instance
126
+ """
127
+ # Determine operation type from event type
128
+ operation_type = event_type.value.split(".")[
129
+ -1
130
+ ] # e.g., "created", "updated", "deleted"
131
+
132
+ # Create standardized event details
133
+ if operation_type == "deleted":
134
+ event_details = {
135
+ "operation_type": operation_type,
136
+ }
137
+ else:
138
+ event_details = _create_connection_event_details(
139
+ connection_config,
140
+ operation_type,
141
+ changed_fields,
142
+ )
143
+
144
+ # Generate description if not provided
145
+ connection_type = connection_config.connection_type.value # type: ignore[attr-defined]
146
+ connector_type = _get_saas_connector_type(connection_config)
147
+
148
+ description = f"Connection {operation_type}: {connector_type if connector_type else connection_type} connection '{connection_config.key}'"
149
+
150
+ return event_details, description
151
+
152
+
153
+ def generate_connection_secrets_event_details(
154
+ event_type: EventAuditType,
155
+ connection_config: ConnectionConfig,
156
+ secrets_modified: Dict[str, Any],
157
+ ) -> Tuple[Dict[str, Any], str]:
158
+ """
159
+ Create an audit event for connection secrets operations.
160
+
161
+ Args:
162
+ event_type: Type of audit event (should be a connection.secrets.* event)
163
+ connection_config: The connection configuration
164
+ secrets_modified: Dict of secret field names and values that were modified
165
+ changed_fields: Set of field names that changed (None means include all fields)
166
+ description: Human-readable description
167
+
168
+ Returns:
169
+ Created EventAudit instance
170
+ """
171
+ # Determine operation type from event type
172
+ operation_type = event_type.value.split(".")[
173
+ -1
174
+ ] # e.g., "created", "updated", "deleted"
175
+
176
+ # Mask the secrets using the existing masking utility
177
+ saas_config = connection_config.get_saas_config()
178
+ connection_type = connection_config.connection_type.value # type: ignore[attr-defined]
179
+ connection_type = (
180
+ saas_config.type
181
+ if connection_type == "saas" and saas_config
182
+ else connection_type
183
+ )
184
+
185
+ # Get the secret schema for this connection type
186
+ try:
187
+ secret_schema = None
188
+
189
+ # For HTTPS connections with OAuth config, check if we should use OAuth schema
190
+ if connection_type == "https" and connection_config.oauth_config:
191
+ # Get OAuth fields dynamically from the schema
192
+ oauth_schema = OAuthConfigSchema.model_json_schema()
193
+ oauth_fields = set(oauth_schema.get("properties", {}).keys())
194
+ secrets_keys = set(secrets_modified.keys())
195
+
196
+ # If we're updating OAuth fields, use OAuth schema
197
+ if secrets_keys.intersection(oauth_fields):
198
+ secret_schema = oauth_schema
199
+
200
+ # If we haven't set a schema yet, use the connection type's secret schema
201
+ if secret_schema is None:
202
+ secret_schema = get_connection_type_secret_schema(
203
+ connection_type=connection_type
204
+ )
205
+
206
+ # Use existing masking function
207
+ masked_secrets = mask_sensitive_fields(secrets_modified, secret_schema)
208
+ except NoSuchConnectionTypeSecretSchemaError:
209
+ # if there is no schema, mask every secret
210
+ masked_secrets = {key: "**********" for key in secrets_modified}
211
+
212
+ # Create event details with masked secret values
213
+ event_details: dict[str, Any] = {
214
+ "secrets": masked_secrets,
215
+ }
216
+
217
+ # Add SaaS connector type if applicable
218
+ connector_type = _get_saas_connector_type(connection_config)
219
+ if connector_type:
220
+ event_details["saas_connector_type"] = connector_type
221
+
222
+ # Generate description
223
+ secret_names = ", ".join(secrets_modified) if secrets_modified else "secrets"
224
+
225
+ if connector_type:
226
+ description = f"Connection secrets {operation_type}: {connector_type} connection '{connection_config.key}' - {secret_names}"
227
+ else:
228
+ description = f"Connection secrets {operation_type}: {connection_type} connection '{connection_config.key}' - {secret_names}"
229
+
230
+ return event_details, description
@@ -0,0 +1,31 @@
1
+ from typing import Any, Dict
2
+
3
+
4
+ def mask_sensitive_fields(
5
+ connection_secrets: Dict[str, Any], secret_schema: Dict[str, Any]
6
+ ) -> Dict[str, Any]:
7
+ """
8
+ Mask sensitive fields in the given secrets based on the provided schema.
9
+ This function traverses the given secrets dictionary and uses the provided schema to
10
+ identify fields that have been marked as sensitive. The function replaces the sensitive
11
+ field values with a mask string ('********').
12
+ Args:
13
+ connection_secrets (Dict[str, Any]): The secrets to be masked.
14
+ secret_schema (Dict[str, Any]): The schema defining which fields are sensitive.
15
+ Returns:
16
+ Dict[str, Any]: The secrets dictionary with sensitive fields masked.
17
+ """
18
+ if connection_secrets is None:
19
+ return connection_secrets
20
+
21
+ secret_schema_properties = secret_schema["properties"]
22
+ new_connection_secrets = {}
23
+
24
+ for key, value in connection_secrets.items():
25
+ if key in secret_schema_properties:
26
+ if secret_schema_properties.get(key, {}).get("sensitive", False):
27
+ new_connection_secrets[key] = "**********"
28
+ else:
29
+ new_connection_secrets[key] = value
30
+
31
+ return new_connection_secrets
@@ -0,0 +1,66 @@
1
+ from typing import Iterable
2
+
3
+ from loguru import logger
4
+ from packaging.version import Version
5
+ from packaging.version import parse as parse_version
6
+ from sqlalchemy.orm import Session
7
+
8
+ from fides.api.models.connectionconfig import ConnectionConfig
9
+ from fides.api.schemas.saas.connector_template import ConnectorTemplate
10
+ from fides.api.schemas.saas.saas_config import SaaSConfig
11
+ from fides.api.service.connectors.saas.connector_registry_service import (
12
+ ConnectorRegistry,
13
+ )
14
+ from fides.api.util.saas_util import load_config_from_string
15
+ from fides.service.connection.connection_service import ConnectionService
16
+ from fides.service.event_audit_service import EventAuditService
17
+
18
+
19
+ def update_saas_configs(db: Session) -> None:
20
+ """
21
+ Updates SaaS config instances currently in the DB if to the
22
+ corresponding template in the registry are found.
23
+
24
+ Effectively an "update script" for SaaS config instances,
25
+ to be run on server bootstrap.
26
+ """
27
+ event_audit_service = EventAuditService(db)
28
+ saas_connection_service = ConnectionService(db, event_audit_service)
29
+ for connector_type in ConnectorRegistry.connector_types():
30
+ logger.debug(
31
+ "Determining if any updates are needed for connectors of type {} based on templates...",
32
+ connector_type,
33
+ )
34
+ template: ConnectorTemplate = ConnectorRegistry.get_connector_template( # type: ignore
35
+ connector_type
36
+ )
37
+ saas_config = SaaSConfig(**load_config_from_string(template.config))
38
+ template_version: Version = parse_version(saas_config.version)
39
+
40
+ connection_configs: Iterable[ConnectionConfig] = ConnectionConfig.filter(
41
+ db=db,
42
+ conditions=(ConnectionConfig.saas_config["type"].astext == connector_type),
43
+ ).all()
44
+ for connection_config in connection_configs:
45
+ saas_config_instance = SaaSConfig.model_validate(
46
+ connection_config.saas_config
47
+ )
48
+ if parse_version(saas_config_instance.version) < template_version:
49
+ logger.info(
50
+ "Updating SaaS config instance '{}' of type '{}' as its version, {}, was found to be lower than the template version {}",
51
+ saas_config_instance.fides_key,
52
+ connector_type,
53
+ saas_config_instance.version,
54
+ template_version,
55
+ )
56
+ try:
57
+ saas_connection_service.update_saas_instance(
58
+ connection_config,
59
+ template,
60
+ saas_config_instance,
61
+ )
62
+ except Exception:
63
+ logger.exception(
64
+ "Encountered error attempting to update SaaS config instance {}",
65
+ saas_config_instance.fides_key,
66
+ )
File without changes