ethyca-fides 2.66.2b2__py2.py3-none-any.whl → 2.66.2rc0__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 (282) hide show
  1. {ethyca_fides-2.66.2b2.dist-info → ethyca_fides-2.66.2rc0.dist-info}/METADATA +1 -1
  2. {ethyca_fides-2.66.2b2.dist-info → ethyca_fides-2.66.2rc0.dist-info}/RECORD +259 -270
  3. fides/_version.py +3 -3
  4. fides/api/api/v1/endpoints/dataset_config_endpoints.py +5 -13
  5. fides/api/api/v1/endpoints/drp_endpoints.py +1 -7
  6. fides/api/api/v1/endpoints/privacy_request_endpoints.py +1 -44
  7. fides/api/api/v1/endpoints/user_endpoints.py +7 -83
  8. fides/api/app_setup.py +2 -3
  9. fides/api/common_exceptions.py +0 -4
  10. fides/api/db/base.py +0 -1
  11. fides/api/db/database.py +1 -1
  12. fides/api/graph/execution.py +0 -30
  13. fides/api/graph/traversal.py +1 -1
  14. fides/api/models/{manual_task/manual_task.py → manual_task.py} +0 -10
  15. fides/api/models/policy.py +0 -23
  16. fides/api/models/privacy_request/execution_log.py +0 -1
  17. fides/api/models/privacy_request/privacy_request.py +13 -31
  18. fides/api/oauth/roles.py +0 -2
  19. fides/api/schemas/application_config.py +1 -11
  20. fides/api/schemas/masking/masking_secrets.py +1 -1
  21. fides/api/schemas/policy.py +0 -1
  22. fides/api/schemas/privacy_request.py +0 -5
  23. fides/api/service/connectors/base_connector.py +0 -1
  24. fides/api/service/connectors/bigquery_connector.py +19 -67
  25. fides/api/service/connectors/dynamodb_connector.py +1 -2
  26. fides/api/service/connectors/fides_connector.py +0 -1
  27. fides/api/service/connectors/http_connector.py +0 -1
  28. fides/api/service/connectors/manual_task_connector.py +0 -1
  29. fides/api/service/connectors/manual_webhook_connector.py +1 -2
  30. fides/api/service/connectors/mongodb_connector.py +0 -1
  31. fides/api/service/connectors/okta_connector.py +0 -1
  32. fides/api/service/connectors/query_configs/bigquery_query_config.py +32 -91
  33. fides/api/service/connectors/rds_mysql_connector.py +0 -1
  34. fides/api/service/connectors/rds_postgres_connector.py +0 -1
  35. fides/api/service/connectors/s3_connector.py +0 -1
  36. fides/api/service/connectors/saas_connector.py +0 -1
  37. fides/api/service/connectors/scylla_connector.py +0 -1
  38. fides/api/service/connectors/sql_connector.py +4 -36
  39. fides/api/service/connectors/website_connector.py +0 -1
  40. fides/api/service/privacy_request/request_runner_service.py +53 -142
  41. fides/api/service/privacy_request/request_service.py +22 -1
  42. fides/api/task/create_request_tasks.py +1 -1
  43. fides/api/task/deprecated_graph_task.py +6 -24
  44. fides/api/task/execute_request_tasks.py +12 -89
  45. fides/api/task/filter_results.py +1 -1
  46. fides/api/task/graph_task.py +3 -38
  47. fides/api/task/manual/manual_task_graph_task.py +126 -118
  48. fides/api/task/manual/manual_task_utils.py +105 -52
  49. fides/api/util/cache.py +0 -5
  50. fides/api/util/encryption/secrets_util.py +18 -48
  51. fides/common/api/scope_registry.py +0 -3
  52. fides/common/api/v1/urn_registry.py +1 -1
  53. fides/config/execution_settings.py +0 -4
  54. fides/config/utils.py +0 -1
  55. fides/service/privacy_request/privacy_request_service.py +1 -6
  56. fides/ui-build/static/admin/404.html +1 -1
  57. fides/ui-build/static/admin/_next/static/8108ANFxs99VY7KZ_Xev2/_buildManifest.js +1 -0
  58. fides/ui-build/static/admin/_next/static/chunks/1817-e601e737e3cc7a0e.js +1 -0
  59. fides/ui-build/static/admin/_next/static/chunks/{203-4e777c324a01dbec.js → 203-5a663f465ba26bb4.js} +1 -1
  60. fides/ui-build/static/admin/_next/static/chunks/431-34f0b91c26f8d9ab.js +1 -0
  61. fides/ui-build/static/admin/_next/static/chunks/6780-e3d40aa17a4bf2e9.js +1 -0
  62. fides/ui-build/static/admin/_next/static/chunks/pages/{_app-f2c3d287bac00395.js → _app-39ccb07327c2c5d5.js} +56 -56
  63. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-2265ecb899d45fbc.js +1 -0
  64. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-5d522637871ac6c8.js +1 -0
  65. fides/ui-build/static/admin/_next/static/chunks/pages/{integrations-f10a7dcf7541c865.js → integrations-e2d5d7e2a5265e68.js} +1 -1
  66. fides/ui-build/static/admin/_next/static/chunks/pages/poc/{table-migration-05616e2ae20ff4f8.js → table-migration-69ad86b7a8a9a115.js} +1 -1
  67. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-32600543eb7b584f.js +1 -0
  68. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-10ce53ea356f8bad.js +1 -0
  69. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-5501bbb129fee9c4.js +1 -0
  70. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-cbe4c8f9096b6543.js +1 -0
  71. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/[id]-ff5738706da07801.js +1 -0
  72. fides/ui-build/static/admin/_next/static/css/2cadb5f62dcd7c2b.css +1 -0
  73. fides/ui-build/static/admin/_next/static/css/{23cf870196941c9a.css → 5bfb2473e5701527.css} +1 -1
  74. fides/ui-build/static/admin/_next/static/css/{8bc1833f1fa53ff0.css → 94965f224bc991e9.css} +1 -1
  75. fides/ui-build/static/admin/add-systems/manual.html +1 -1
  76. fides/ui-build/static/admin/add-systems/multiple.html +1 -1
  77. fides/ui-build/static/admin/add-systems.html +1 -1
  78. fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
  79. fides/ui-build/static/admin/consent/configure.html +1 -1
  80. fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
  81. fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
  82. fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
  83. fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
  84. fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
  85. fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
  86. fides/ui-build/static/admin/consent/properties.html +1 -1
  87. fides/ui-build/static/admin/consent/reporting.html +1 -1
  88. fides/ui-build/static/admin/consent.html +1 -1
  89. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
  90. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
  91. fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
  92. fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
  93. fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
  94. fides/ui-build/static/admin/data-catalog.html +1 -1
  95. fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +1 -1
  96. fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +1 -1
  97. fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
  98. fides/ui-build/static/admin/data-discovery/activity.html +1 -1
  99. fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
  100. fides/ui-build/static/admin/data-discovery/detection.html +1 -1
  101. fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
  102. fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
  103. fides/ui-build/static/admin/datamap.html +1 -1
  104. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
  105. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
  106. fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
  107. fides/ui-build/static/admin/dataset/new.html +1 -1
  108. fides/ui-build/static/admin/dataset.html +1 -1
  109. fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
  110. fides/ui-build/static/admin/datastore-connection/new.html +1 -1
  111. fides/ui-build/static/admin/datastore-connection.html +1 -1
  112. fides/ui-build/static/admin/index.html +1 -1
  113. fides/ui-build/static/admin/integrations/[id].html +1 -1
  114. fides/ui-build/static/admin/integrations.html +1 -1
  115. fides/ui-build/static/admin/lib/fides-ext-gpp.js +1 -1
  116. fides/ui-build/static/admin/lib/fides-headless.js +1 -1
  117. fides/ui-build/static/admin/lib/fides-preview.js +1 -1
  118. fides/ui-build/static/admin/lib/fides-tcf.js +3 -3
  119. fides/ui-build/static/admin/lib/fides.js +3 -3
  120. fides/ui-build/static/admin/login/[provider].html +1 -1
  121. fides/ui-build/static/admin/login.html +1 -1
  122. fides/ui-build/static/admin/messaging/[id].html +1 -1
  123. fides/ui-build/static/admin/messaging/add-template.html +1 -1
  124. fides/ui-build/static/admin/messaging.html +1 -1
  125. fides/ui-build/static/admin/poc/ant-components.html +1 -1
  126. fides/ui-build/static/admin/poc/form-experiments/AntForm.html +1 -1
  127. fides/ui-build/static/admin/poc/form-experiments/FormikAntFormItem.html +1 -1
  128. fides/ui-build/static/admin/poc/form-experiments/FormikControlled.html +1 -1
  129. fides/ui-build/static/admin/poc/form-experiments/FormikField.html +1 -1
  130. fides/ui-build/static/admin/poc/form-experiments/FormikSpreadField.html +1 -1
  131. fides/ui-build/static/admin/poc/forms.html +1 -1
  132. fides/ui-build/static/admin/poc/table-migration.html +1 -1
  133. fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
  134. fides/ui-build/static/admin/privacy-requests/configure/messaging.html +1 -1
  135. fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
  136. fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
  137. fides/ui-build/static/admin/privacy-requests.html +1 -1
  138. fides/ui-build/static/admin/properties/[id].html +1 -1
  139. fides/ui-build/static/admin/properties/add-property.html +1 -1
  140. fides/ui-build/static/admin/properties.html +1 -1
  141. fides/ui-build/static/admin/reporting/datamap.html +1 -1
  142. fides/ui-build/static/admin/settings/about/alpha.html +1 -1
  143. fides/ui-build/static/admin/settings/about.html +1 -1
  144. fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +1 -1
  145. fides/ui-build/static/admin/settings/consent.html +1 -1
  146. fides/ui-build/static/admin/settings/custom-fields.html +1 -1
  147. fides/ui-build/static/admin/settings/domain-records.html +1 -1
  148. fides/ui-build/static/admin/settings/domains.html +1 -1
  149. fides/ui-build/static/admin/settings/email-templates.html +1 -1
  150. fides/ui-build/static/admin/settings/locations.html +1 -1
  151. fides/ui-build/static/admin/settings/organization.html +1 -1
  152. fides/ui-build/static/admin/settings/regulations.html +1 -1
  153. fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
  154. fides/ui-build/static/admin/systems/configure/[id].html +1 -1
  155. fides/ui-build/static/admin/systems.html +1 -1
  156. fides/ui-build/static/admin/taxonomy.html +1 -1
  157. fides/ui-build/static/admin/user-management/new.html +1 -1
  158. fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
  159. fides/ui-build/static/admin/user-management.html +1 -1
  160. fides/api/alembic/migrations/versions/7e9a2b52f498_adding_masking_secrets.py +0 -60
  161. fides/api/alembic/migrations/versions/a7065df4dcf1_add_finalized_fields_to_privacy_request.py +0 -65
  162. fides/api/alembic/migrations/versions/d0031087eacb_create_manualtaskconditionaldependency_.py +0 -106
  163. fides/api/models/manual_task/__init__.py +0 -2
  164. fides/api/models/manual_task/conditional_dependency.py +0 -144
  165. fides/api/models/masking_secret.py +0 -72
  166. fides/api/task/conditional_dependencies/__init__.py +0 -0
  167. fides/api/task/conditional_dependencies/evaluator.py +0 -109
  168. fides/api/task/conditional_dependencies/schemas.py +0 -54
  169. fides/api/task/manual/manual_task_address.py +0 -46
  170. fides/ui-build/static/admin/_next/static/EACyrT3Bb5qN9POVQHTCB/_buildManifest.js +0 -1
  171. fides/ui-build/static/admin/_next/static/chunks/1817-6f35f58cd08b04ae.js +0 -1
  172. fides/ui-build/static/admin/_next/static/chunks/431-ade3e312fac3430b.js +0 -1
  173. fides/ui-build/static/admin/_next/static/chunks/6780-a00c87739acc004d.js +0 -1
  174. fides/ui-build/static/admin/_next/static/chunks/8237-55049f8f5fd5e058.js +0 -1
  175. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-71579a199158952e.js +0 -1
  176. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-7d3115059503b904.js +0 -1
  177. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-c73497fc333c324d.js +0 -1
  178. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-7498d1d5974a78b0.js +0 -1
  179. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-2d3a2d967767a131.js +0 -1
  180. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-6a9068df48bdee05.js +0 -1
  181. fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/[id]-fe58cebba358119d.js +0 -1
  182. fides/ui-build/static/admin/_next/static/css/79e296c724c1568c.css +0 -1
  183. {ethyca_fides-2.66.2b2.dist-info → ethyca_fides-2.66.2rc0.dist-info}/WHEEL +0 -0
  184. {ethyca_fides-2.66.2b2.dist-info → ethyca_fides-2.66.2rc0.dist-info}/entry_points.txt +0 -0
  185. {ethyca_fides-2.66.2b2.dist-info → ethyca_fides-2.66.2rc0.dist-info}/licenses/LICENSE +0 -0
  186. {ethyca_fides-2.66.2b2.dist-info → ethyca_fides-2.66.2rc0.dist-info}/top_level.txt +0 -0
  187. /fides/ui-build/static/admin/_next/static/{EACyrT3Bb5qN9POVQHTCB → 8108ANFxs99VY7KZ_Xev2}/_ssgManifest.js +0 -0
  188. /fides/ui-build/static/admin/_next/static/chunks/{2921-86f1547ac40a5cdf.js → 2921-455e6357b74d2f76.js} +0 -0
  189. /fides/ui-build/static/admin/_next/static/chunks/{3450-1cc2bb07ed142203.js → 3450-0ba194991d0cca88.js} +0 -0
  190. /fides/ui-build/static/admin/_next/static/chunks/{3855-e2fa6db53d32c3de.js → 3855-e172870d3e21b0dd.js} +0 -0
  191. /fides/ui-build/static/admin/_next/static/chunks/{3872-84b7e380b88b4454.js → 3872-46cebf7ec1b31a2b.js} +0 -0
  192. /fides/ui-build/static/admin/_next/static/chunks/{3923-13a6b4da2d51bf8f.js → 3923-6cc911dafccc5f63.js} +0 -0
  193. /fides/ui-build/static/admin/_next/static/chunks/{401-3cc1fee61494e3bd.js → 401-1b529d5800aa1f3a.js} +0 -0
  194. /fides/ui-build/static/admin/_next/static/chunks/{409-45a125437261580c.js → 409-a257e14acebcd73b.js} +0 -0
  195. /fides/ui-build/static/admin/_next/static/chunks/{4121-f50675521dfee6eb.js → 4121-2bc09fc4ddbfe5cb.js} +0 -0
  196. /fides/ui-build/static/admin/_next/static/chunks/{4230-840c287045c88b34.js → 4230-60100f7ef3ddcde1.js} +0 -0
  197. /fides/ui-build/static/admin/_next/static/chunks/{4608-a8e3100e2806dbff.js → 4608-bbb7bf511a05c3c2.js} +0 -0
  198. /fides/ui-build/static/admin/_next/static/chunks/{5309-1172322bf91b5d57.js → 5309-b2c4803370634ff8.js} +0 -0
  199. /fides/ui-build/static/admin/_next/static/chunks/{5574-9312f97b637d9ee2.js → 5574-b13021775a15bfd2.js} +0 -0
  200. /fides/ui-build/static/admin/_next/static/chunks/{6084-5d7598b7bcb548cf.js → 6084-7178ff6ea6822475.js} +0 -0
  201. /fides/ui-build/static/admin/_next/static/chunks/{6662-efb2cf74641647f2.js → 6662-507be5d46e5b719b.js} +0 -0
  202. /fides/ui-build/static/admin/_next/static/chunks/{6853-4f8bf6558f8c6a46.js → 6853-2ad3e08fe6f9f5f2.js} +0 -0
  203. /fides/ui-build/static/admin/_next/static/chunks/{6882-586b84aeb02d5830.js → 6882-6af16fef26c21e06.js} +0 -0
  204. /fides/ui-build/static/admin/_next/static/chunks/{6954-34e062e4bffc7e71.js → 6954-bb875d9ac89f6030.js} +0 -0
  205. /fides/ui-build/static/admin/_next/static/chunks/{7476-d206c11823c91088.js → 7476-281ee9a8286556f3.js} +0 -0
  206. /fides/ui-build/static/admin/_next/static/chunks/{7630-b1c93688013ef013.js → 7630-9aac73191ed5ed13.js} +0 -0
  207. /fides/ui-build/static/admin/_next/static/chunks/{787-cbe2d0bfb513d90a.js → 787-fb41002f797eb2df.js} +0 -0
  208. /fides/ui-build/static/admin/_next/static/chunks/{79-3db1941d274f40c7.js → 79-7e87aff851423d4a.js} +0 -0
  209. /fides/ui-build/static/admin/_next/static/chunks/{796-98d4bd68909fbe1e.js → 796-329a5f823ec258a5.js} +0 -0
  210. /fides/ui-build/static/admin/_next/static/chunks/{9046-c8233981762585b4.js → 9046-5c4c22c375de25b1.js} +0 -0
  211. /fides/ui-build/static/admin/_next/static/chunks/{9226-72ad691ca57b83ef.js → 9226-746771d47dff6266.js} +0 -0
  212. /fides/ui-build/static/admin/_next/static/chunks/{9826-3c578665c6d3b21d.js → 9826-111aaee8bd8dbd09.js} +0 -0
  213. /fides/ui-build/static/admin/_next/static/chunks/{9951-595d0f1588215081.js → 9951-9b753ad7c3f51bdf.js} +0 -0
  214. /fides/ui-build/static/admin/_next/static/chunks/pages/{404-2d803dab6a00f353.js → 404-aece2c920ea14514.js} +0 -0
  215. /fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{manual-acb59f8b5e97512a.js → manual-98777246bec9dc2a.js} +0 -0
  216. /fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-8ff7f37913ad736a.js → multiple-dc75dc6e37e52f05.js} +0 -0
  217. /fides/ui-build/static/admin/_next/static/chunks/pages/{add-systems-0943633a8e422695.js → add-systems-a71c0aff4e0e6535.js} +0 -0
  218. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-d00c9034cdeb0236.js → add-vendors-24d226b5a8de5c74.js} +0 -0
  219. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{configure-0e1ca0f4c8e7f4da.js → configure-6a8ef51138ac926a.js} +0 -0
  220. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-fc3a011154a2e1de.js → [id]-1edf582ba3cd3bbb.js} +0 -0
  221. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-experience-09d4408014bcfe1c.js → privacy-experience-685771e5f7196d87.js} +0 -0
  222. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-d67542783ef5ddac.js → [id]-6ccedc70dc447089.js} +0 -0
  223. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-3f20e8a316bb3d5b.js → new-944bca1cc57985b5.js} +0 -0
  224. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-notices-23e9dcd4590312d2.js → privacy-notices-84f4bd14ce8673bc.js} +0 -0
  225. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-057cad65e7414a44.js → properties-6f86ab63a08a6528.js} +0 -0
  226. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{reporting-8f891957c8944137.js → reporting-afdbd4665657cfa1.js} +0 -0
  227. /fides/ui-build/static/admin/_next/static/chunks/pages/{consent-e17c56eec8d91371.js → consent-73d3cbf68f7c3a31.js} +0 -0
  228. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-99c9092d65c94807.js → [resourceUrn]-11d52f1570759c4d.js} +0 -0
  229. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-80a6cc8e8573514a.js → [projectUrn]-6ba9e160dae64695.js} +0 -0
  230. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{projects-774fecea22ba8852.js → projects-32eac8bbd217615a.js} +0 -0
  231. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-f6bd6aff389cb9fe.js → [resourceUrn]-b83afa5565d0c84e.js} +0 -0
  232. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{resources-6c3714ee97a718c1.js → resources-7648bbd4f6711e4d.js} +0 -0
  233. /fides/ui-build/static/admin/_next/static/chunks/pages/{data-catalog-8a7f9285da66b965.js → data-catalog-6f630d42ac9fb6b4.js} +0 -0
  234. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{action-center-85e140788e251272.js → action-center-9ddb52ebb7ac4c71.js} +0 -0
  235. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{activity-5af9381f02b2aff6.js → activity-9aa744d56cdacb0d.js} +0 -0
  236. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-31e6c54794a9883e.js → [resourceUrn]-393e20924c83373e.js} +0 -0
  237. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-2822a423a7ad0550.js → detection-8733807dad4bc96e.js} +0 -0
  238. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-6421ce247549c5d6.js → [resourceUrn]-14bd7500362ff224.js} +0 -0
  239. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-3eac407ac5181a3c.js → discovery-9e7dfd5a6acc2e8f.js} +0 -0
  240. /fides/ui-build/static/admin/_next/static/chunks/pages/{datamap-d2b275d83089820d.js → datamap-7674b97d655c193b.js} +0 -0
  241. /fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/{[...subfieldNames]-1c98bd0959d9570a.js → [...subfieldNames]-c0d2bfd465df20e0.js} +0 -0
  242. /fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/{[collectionName]-e548cabda7da32c9.js → [collectionName]-28280a8a39a6e37c.js} +0 -0
  243. /fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{[datasetId]-a8e8b5f4ee7af86c.js → [datasetId]-006b695e5af5ef24.js} +0 -0
  244. /fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{new-513c862c3a707735.js → new-82fb246d87e58ebd.js} +0 -0
  245. /fides/ui-build/static/admin/_next/static/chunks/pages/{dataset-747b7a13289f1cd7.js → dataset-20165c31ab1bc7cf.js} +0 -0
  246. /fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-3d22525b3c327b2e.js → [id]-b4a6bcc87d126840.js} +0 -0
  247. /fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-d2cad97495e86adb.js → new-f95d7b0bbfc58f5a.js} +0 -0
  248. /fides/ui-build/static/admin/_next/static/chunks/pages/{datastore-connection-0f29b47402292070.js → datastore-connection-c391c6fad56eec48.js} +0 -0
  249. /fides/ui-build/static/admin/_next/static/chunks/pages/{index-12ac3e317fc86f21.js → index-1919aab9e5834b51.js} +0 -0
  250. /fides/ui-build/static/admin/_next/static/chunks/pages/integrations/{[id]-f9c0eac932188593.js → [id]-0a58aee2d1e7fa01.js} +0 -0
  251. /fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{[id]-5627d0d0668077f9.js → [id]-53fecfb9dd6a1e0c.js} +0 -0
  252. /fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{add-template-feca66ad5c5fe54a.js → add-template-76b01cec5fde10a9.js} +0 -0
  253. /fides/ui-build/static/admin/_next/static/chunks/pages/{messaging-c1bd3e7adbe8d2d3.js → messaging-5094ffea13f32ed9.js} +0 -0
  254. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{ant-components-64a322d01aae5ca7.js → ant-components-5c08e8447c45ce44.js} +0 -0
  255. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{AntForm-8bca16a7726e7eb2.js → AntForm-06ad5f34585480aa.js} +0 -0
  256. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikAntFormItem-b0f246fc3b67ebf7.js → FormikAntFormItem-6f071c2bc9446cb0.js} +0 -0
  257. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikControlled-1a0852b090bfc392.js → FormikControlled-efcc38c58991ac9e.js} +0 -0
  258. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikField-11f3de1b45e36583.js → FormikField-430ba5c979abfb7c.js} +0 -0
  259. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{forms-1b73a1c2b6c6285f.js → forms-5c561880bf131afb.js} +0 -0
  260. /fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-e551a860ec727802.js → configure-d888a69a3bbe040e.js} +0 -0
  261. /fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-dd99183f93763ae4.js → [id]-d3d8e3d7583ec635.js} +0 -0
  262. /fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-0bdbc1fcbf553b8f.js → add-property-1af10ed303815d46.js} +0 -0
  263. /fides/ui-build/static/admin/_next/static/chunks/pages/{properties-e959378bb32b6b73.js → properties-cebc0dc186be499a.js} +0 -0
  264. /fides/ui-build/static/admin/_next/static/chunks/pages/reporting/{datamap-2a98bd257edd8f47.js → datamap-e130c0197362e8f3.js} +0 -0
  265. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/{alpha-8f98a4895e74725e.js → alpha-5e1322de868d615e.js} +0 -0
  266. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{about-8155a35a62fdb5ae.js → about-241f95e372b65d0f.js} +0 -0
  267. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/{[purpose_id]-668d74c041d74650.js → [purpose_id]-fc201657f4a782c7.js} +0 -0
  268. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{consent-a989532a12c40dcf.js → consent-c2d39cba8396ef3a.js} +0 -0
  269. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{custom-fields-45bea76ff7eda3cb.js → custom-fields-d992103cc55901ae.js} +0 -0
  270. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-51333dbd21cb37c8.js → domain-records-41242f805599feda.js} +0 -0
  271. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domains-bde86e5f6c09da5a.js → domains-2e885f74c92f669c.js} +0 -0
  272. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{email-templates-4f9a5cc8bea7725b.js → email-templates-ff112655ad5f41e5.js} +0 -0
  273. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-6946e78a5d43e654.js → locations-023e1895552817de.js} +0 -0
  274. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{organization-55a10e01dffc8039.js → organization-ac403c0886b20e20.js} +0 -0
  275. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-102efd9199e87124.js → regulations-86062a18e081a52a.js} +0 -0
  276. /fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/{test-datasets-f91f22cf96566ed4.js → test-datasets-7a3396ac819c7904.js} +0 -0
  277. /fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-d4a57ea18935dd70.js → [id]-8314a819837f5b2a.js} +0 -0
  278. /fides/ui-build/static/admin/_next/static/chunks/pages/{systems-648a0ff4920579ce.js → systems-21f423a7c417aa9d.js} +0 -0
  279. /fides/ui-build/static/admin/_next/static/chunks/pages/{taxonomy-0b9d1a24188f65a9.js → taxonomy-6387fcc8cce872eb.js} +0 -0
  280. /fides/ui-build/static/admin/_next/static/chunks/pages/user-management/{new-bc4eb541906781e6.js → new-a2524414e968f862.js} +0 -0
  281. /fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-45bfa04e45a7d13f.js → user-management-173ac3a1ed2b05a6.js} +0 -0
  282. /fides/ui-build/static/admin/_next/static/chunks/{webpack-63a0c45b150a1037.js → webpack-ff0cd6bff75588da.js} +0 -0
fides/_version.py CHANGED
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2025-07-29T12:07:43-0300",
11
+ "date": "2025-07-29T12:24:25-0400",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "4ba0450a533ee5c9b65ed8ae70df97cfb829ef8d",
15
- "version": "2.66.2b2"
14
+ "full-revisionid": "0d085cb0c09afcc5309f42f6c24de184d443af13",
15
+ "version": "2.66.2rc0"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -1,7 +1,7 @@
1
1
  from typing import Annotated, Any, Dict, List, Optional
2
2
 
3
3
  import yaml
4
- from fastapi import Depends, HTTPException, Query, Request
4
+ from fastapi import Depends, HTTPException, Request
5
5
  from fastapi.encoders import jsonable_encoder
6
6
  from fastapi.params import Security
7
7
  from fastapi_pagination import Page, Params
@@ -68,18 +68,10 @@ from fides.api.models.sql_models import ( # type: ignore[attr-defined] # isort:
68
68
  )
69
69
 
70
70
  X_YAML = "application/x-yaml"
71
- MAX_DATASET_CONFIGS_FOR_INTEGRATION_FORM = 1000
72
71
 
73
72
  router = APIRouter(tags=["Dataset Configs"], prefix=V1_URL_PREFIX)
74
73
 
75
74
 
76
- # Custom Params class with higher limit for dataset configs
77
- class DatasetConfigParams(Params):
78
- size: int = Query(
79
- 50, ge=1, le=MAX_DATASET_CONFIGS_FOR_INTEGRATION_FORM, description="Page size"
80
- )
81
-
82
-
83
75
  # Helper method to inject the parent ConnectionConfig into these child routes
84
76
  def _get_connection_config(
85
77
  connection_key: FidesKey, db: Session = Depends(deps.get_db)
@@ -139,7 +131,7 @@ def validate_dataset(
139
131
  response_model=BulkPutDataset,
140
132
  )
141
133
  def put_dataset_configs(
142
- dataset_pairs: Annotated[List[DatasetConfigCtlDataset], Field(max_length=MAX_DATASET_CONFIGS_FOR_INTEGRATION_FORM)], # type: ignore
134
+ dataset_pairs: Annotated[List[DatasetConfigCtlDataset], Field(max_length=50)], # type: ignore
143
135
  db: Session = Depends(deps.get_db),
144
136
  dataset_config_service: DatasetConfigService = Depends(get_dataset_config_service),
145
137
  connection_config: ConnectionConfig = Depends(_get_connection_config),
@@ -189,7 +181,7 @@ def put_dataset_configs(
189
181
  response_model=BulkPutDataset,
190
182
  )
191
183
  def patch_dataset_configs(
192
- dataset_pairs: Annotated[List[DatasetConfigCtlDataset], Field(max_length=MAX_DATASET_CONFIGS_FOR_INTEGRATION_FORM)], # type: ignore
184
+ dataset_pairs: Annotated[List[DatasetConfigCtlDataset], Field(max_length=50)], # type: ignore
193
185
  dataset_config_service: DatasetConfigService = Depends(get_dataset_config_service),
194
186
  connection_config: ConnectionConfig = Depends(_get_connection_config),
195
187
  ) -> BulkPutDataset:
@@ -225,7 +217,7 @@ def patch_dataset_configs(
225
217
  response_model=BulkPutDataset,
226
218
  )
227
219
  def patch_datasets(
228
- datasets: Annotated[List[FideslangDataset], Field(max_length=1000)], # type: ignore
220
+ datasets: Annotated[List[FideslangDataset], Field(max_length=50)], # type: ignore
229
221
  dataset_config_service: DatasetConfigService = Depends(get_dataset_config_service),
230
222
  connection_config: ConnectionConfig = Depends(_get_connection_config),
231
223
  ) -> BulkPutDataset:
@@ -375,7 +367,7 @@ def get_dataset(
375
367
  )
376
368
  def get_dataset_configs(
377
369
  db: Session = Depends(deps.get_db),
378
- params: DatasetConfigParams = Depends(),
370
+ params: Params = Depends(),
379
371
  connection_config: ConnectionConfig = Depends(_get_connection_config),
380
372
  ) -> AbstractPage[DatasetConfig]:
381
373
  """Returns all Dataset Configs attached to current Connection Config."""
@@ -125,13 +125,7 @@ async def create_drp_privacy_request(
125
125
  "Decrypting identity for DRP privacy request {}", privacy_request.id
126
126
  )
127
127
 
128
- cache_data(privacy_request, mapped_identity, None, data)
129
-
130
- if masking_secrets := policy.generate_masking_secrets():
131
- logger.info(
132
- "Caching masking secrets for privacy request {}", privacy_request.id
133
- )
134
- privacy_request.persist_masking_secrets(masking_secrets)
128
+ cache_data(privacy_request, policy, mapped_identity, None, data)
135
129
 
136
130
  queue_privacy_request(privacy_request.id)
137
131
 
@@ -4,7 +4,7 @@ import csv
4
4
  import io
5
5
  import json
6
6
  from collections import defaultdict
7
- from datetime import datetime, timezone
7
+ from datetime import datetime
8
8
  from typing import (
9
9
  Annotated,
10
10
  Any,
@@ -146,7 +146,6 @@ from fides.common.api.v1.urn_registry import (
146
146
  PRIVACY_REQUEST_BULK_SOFT_DELETE,
147
147
  PRIVACY_REQUEST_DENY,
148
148
  PRIVACY_REQUEST_FILTERED_RESULTS,
149
- PRIVACY_REQUEST_FINALIZE,
150
149
  PRIVACY_REQUEST_MANUAL_WEBHOOK_ACCESS_INPUT,
151
150
  PRIVACY_REQUEST_MANUAL_WEBHOOK_ERASURE_INPUT,
152
151
  PRIVACY_REQUEST_NOTIFICATIONS,
@@ -1863,48 +1862,6 @@ def resume_privacy_request_from_requires_input(
1863
1862
  return privacy_request # type: ignore[return-value]
1864
1863
 
1865
1864
 
1866
- @router.post(
1867
- PRIVACY_REQUEST_FINALIZE,
1868
- status_code=HTTP_200_OK,
1869
- response_model=PrivacyRequestResponse,
1870
- dependencies=[Security(verify_oauth_client, scopes=[PRIVACY_REQUEST_REVIEW])],
1871
- )
1872
- def finalize_privacy_request(
1873
- privacy_request_id: str,
1874
- *,
1875
- db: Session = Depends(deps.get_db),
1876
- client: ClientDetail = Security(
1877
- verify_oauth_client,
1878
- scopes=[PRIVACY_REQUEST_REVIEW],
1879
- ),
1880
- ) -> PrivacyRequestResponse:
1881
- """
1882
- Finalizes a privacy request, moving it from the 'requires_finalization' state to 'complete'.
1883
- This is done by re-queueing the request, which will then hit the finalization logic in the
1884
- request runner service. This logic marks the privacy request as complete
1885
- and sends out any configured messaging to the user.
1886
- """
1887
- privacy_request = get_privacy_request_or_error(db, privacy_request_id)
1888
-
1889
- if privacy_request.status != PrivacyRequestStatus.requires_manual_finalization:
1890
- raise HTTPException(
1891
- status_code=HTTP_400_BAD_REQUEST,
1892
- detail=f"Cannot manually finalize privacy request '{privacy_request_id}': status is {privacy_request.status}, not requires_manual_finalization.",
1893
- )
1894
-
1895
- # Set finalized_by and finalized_at here, so the request runner service knows not to
1896
- # put the request back into the requires_finalization state.
1897
- privacy_request.finalized_at = datetime.now(timezone.utc)
1898
- privacy_request.finalized_by = client.user_id
1899
- privacy_request.save(db=db)
1900
-
1901
- queue_privacy_request(
1902
- privacy_request_id=privacy_request_id,
1903
- )
1904
-
1905
- return privacy_request # type: ignore[return-value]
1906
-
1907
-
1908
1865
  @router.get(
1909
1866
  REQUEST_TASKS,
1910
1867
  dependencies=[Security(verify_oauth_client, scopes=[PRIVACY_REQUEST_READ])],
@@ -6,7 +6,6 @@ from typing import List, Optional
6
6
 
7
7
  import jose.exceptions
8
8
  from fastapi import Depends, HTTPException, Security
9
- from fastapi.security import SecurityScopes
10
9
  from fastapi_pagination import Page, Params
11
10
  from fastapi_pagination.bases import AbstractPage
12
11
  from fastapi_pagination.ext.sqlalchemy import paginate
@@ -40,9 +39,7 @@ from fides.api.oauth.roles import APPROVER, VIEWER
40
39
  from fides.api.oauth.utils import (
41
40
  create_temporary_user_for_login_flow,
42
41
  extract_payload,
43
- extract_token_and_load_client,
44
42
  get_current_user,
45
- has_permissions,
46
43
  oauth2_scheme,
47
44
  verify_oauth_client,
48
45
  )
@@ -68,7 +65,6 @@ from fides.common.api.scope_registry import (
68
65
  USER_DELETE,
69
66
  USER_PASSWORD_RESET,
70
67
  USER_READ,
71
- USER_READ_OWN,
72
68
  USER_UPDATE,
73
69
  )
74
70
  from fides.common.api.v1 import urn_registry as urls
@@ -111,37 +107,6 @@ def _validate_current_user(user_id: str, user_from_token: FidesUser) -> None:
111
107
  )
112
108
 
113
109
 
114
- def verify_user_read_scopes(
115
- authorization: str = Security(oauth2_scheme),
116
- db: Session = Depends(get_db),
117
- ) -> ClientDetail:
118
- """
119
- Custom dependency that verifies the user has either USER_READ or USER_READ_OWN scope.
120
- Returns the client if authorized.
121
- """
122
- token_data, client = extract_token_and_load_client(authorization, db)
123
-
124
- # Try USER_READ first
125
- if has_permissions(
126
- token_data=token_data,
127
- client=client,
128
- endpoint_scopes=SecurityScopes([USER_READ]),
129
- ):
130
- return client
131
-
132
- if has_permissions(
133
- token_data=token_data,
134
- client=client,
135
- endpoint_scopes=SecurityScopes([USER_READ_OWN]),
136
- ):
137
- return client
138
-
139
- raise HTTPException(
140
- status_code=HTTP_403_FORBIDDEN,
141
- detail="Not authorized.",
142
- )
143
-
144
-
145
110
  @router.put(
146
111
  urls.USER_DETAIL,
147
112
  dependencies=[Security(verify_oauth_client)],
@@ -533,38 +498,14 @@ def delete_user(
533
498
 
534
499
  @router.get(
535
500
  urls.USER_DETAIL,
536
- dependencies=[Security(verify_user_read_scopes)],
501
+ dependencies=[Security(verify_oauth_client, scopes=[USER_READ])],
537
502
  response_model=UserResponse,
538
503
  )
539
- def get_user(
540
- *,
541
- db: Session = Depends(get_db),
542
- user_id: str,
543
- client: ClientDetail = Security(verify_user_read_scopes),
544
- authorization: str = Security(oauth2_scheme),
545
- ) -> FidesUser:
546
- """Returns a User based on an Id. Users with USER_READ_OWN scope can only access their own data."""
504
+ def get_user(*, db: Session = Depends(get_db), user_id: str) -> FidesUser:
505
+ """Returns a User based on an Id"""
547
506
  user: Optional[FidesUser] = FidesUser.get_by_key_or_id(db, data={"id": user_id})
548
507
  if user is None:
549
508
  raise HTTPException(status_code=HTTP_404_NOT_FOUND, detail="User not found")
550
- token_data, _ = extract_token_and_load_client(authorization, db)
551
- # Check if user has USER_READ_OWN scope and is trying to access someone else's data
552
- # The verify_user_read_scopes dependency already verified the user has either USER_READ or USER_READ_OWN
553
- # We need to check if they have USER_READ_OWN and are accessing their own data
554
- if has_permissions(
555
- token_data=token_data,
556
- client=client,
557
- endpoint_scopes=SecurityScopes([USER_READ]),
558
- ):
559
- logger.debug("Returning user with id: '{}'.", user_id)
560
- return user
561
-
562
- # User has USER_READ_OWN scope, check if they're accessing their own data
563
- if user.id != client.user_id:
564
- raise HTTPException(
565
- status_code=HTTP_403_FORBIDDEN,
566
- detail="You can only access your own user data with USER_READ_OWN scope.",
567
- )
568
509
 
569
510
  logger.debug("Returning user with id: '{}'.", user_id)
570
511
  return user
@@ -572,7 +513,7 @@ def get_user(
572
513
 
573
514
  @router.get(
574
515
  urls.USERS,
575
- dependencies=[Security(verify_user_read_scopes)],
516
+ dependencies=[Security(verify_oauth_client, scopes=[USER_READ])],
576
517
  response_model=Page[UserResponse],
577
518
  )
578
519
  def get_users(
@@ -580,28 +521,11 @@ def get_users(
580
521
  db: Session = Depends(get_db),
581
522
  params: Params = Depends(),
582
523
  username: Optional[str] = None,
583
- client: ClientDetail = Security(verify_user_read_scopes),
584
- authorization: str = Security(oauth2_scheme),
585
524
  ) -> AbstractPage[FidesUser]:
586
- """Returns a paginated list of users. Users with USER_READ_OWN scope only see their own data."""
525
+ """Returns a paginated list of all users"""
587
526
  query = FidesUser.query(db)
588
-
589
- # Check if user has USER_READ_OWN scope and filter accordingly
590
- # The verify_user_read_scopes dependency already verified the user has either USER_READ or USER_READ_OWN
591
- token_data, _ = extract_token_and_load_client(authorization, db)
592
- if has_permissions(
593
- token_data=token_data,
594
- client=client,
595
- endpoint_scopes=SecurityScopes([USER_READ]),
596
- ):
597
- # User has USER_READ scope, can see all users
598
- if username:
599
- query = query.filter(FidesUser.username.ilike(f"%{escape_like(username)}%"))
600
- else:
601
- # User has USER_READ_OWN scope, only show their own data
602
- query = query.filter(FidesUser.id == client.user_id)
603
- if username:
604
- query = query.filter(FidesUser.username.ilike(f"%{escape_like(username)}%"))
527
+ if username:
528
+ query = query.filter(FidesUser.username.ilike(f"%{escape_like(username)}%"))
605
529
 
606
530
  logger.debug("Returning a paginated list of users.")
607
531
 
fides/api/app_setup.py CHANGED
@@ -171,9 +171,8 @@ async def run_database_startup(app: FastAPI) -> None:
171
171
  if CONFIG.database.automigrate:
172
172
  try:
173
173
  configure_db(CONFIG.database.sync_database_uri)
174
- if not CONFIG.test_mode:
175
- with get_autoclose_db_session() as session:
176
- seed_db(session)
174
+ with get_autoclose_db_session() as session:
175
+ seed_db(session)
177
176
  if CONFIG.database.load_samples:
178
177
  async with get_async_autoclose_db_session() as async_session:
179
178
  await seed.load_samples(async_session)
@@ -283,10 +283,6 @@ class MalisciousUrlException(Exception):
283
283
  """Fides has detected a potentially maliscious URL."""
284
284
 
285
285
 
286
- class MaskingSecretsExpired(BaseException):
287
- """The cached masking secrets have expired for the given privacy request."""
288
-
289
-
290
286
  class AuthenticationError(HTTPException):
291
287
  """To be raised when attempting to fetch an access token using
292
288
  invalid credentials.
fides/api/db/base.py CHANGED
@@ -33,7 +33,6 @@ from fides.api.models.identity_salt import IdentitySalt
33
33
  from fides.api.models.location_regulation_selections import LocationRegulationSelections
34
34
  from fides.api.models.manual_task import (
35
35
  ManualTask,
36
- ManualTaskConditionalDependency,
37
36
  ManualTaskConfig,
38
37
  ManualTaskConfigField,
39
38
  ManualTaskInstance,
fides/api/db/database.py CHANGED
@@ -123,7 +123,7 @@ def get_db_health(
123
123
 
124
124
 
125
125
  def seed_db(session: Session) -> None:
126
- """Load default resources into the database"""
126
+ """Load default resources into the database, and optionally load samples."""
127
127
  load_default_resources(session)
128
128
 
129
129
 
@@ -1,7 +1,6 @@
1
1
  from typing import Any, Callable, Dict, List, Optional, Set, Tuple
2
2
 
3
3
  from fideslang.validation import FidesKey
4
- from loguru import logger
5
4
 
6
5
  from fides.api.graph.config import (
7
6
  Collection,
@@ -118,8 +117,6 @@ class ExecutionNode(Contextualizable): # pylint: disable=too-many-instance-attr
118
117
  The values are cast based on field types, if those types are specified.
119
118
  """
120
119
  out = {}
121
- failed_conversions: Dict[str, Dict[str, Any]] = {}
122
-
123
120
  for key, values in input_data.items():
124
121
  path: FieldPath = FieldPath.parse(key)
125
122
  field: Optional[Field] = self.collection.field(path)
@@ -129,31 +126,4 @@ class ExecutionNode(Contextualizable): # pylint: disable=too-many-instance-attr
129
126
  filtered = list(filter(lambda x: x is not None, cast_values))
130
127
  if filtered:
131
128
  out[key] = filtered
132
- elif values: # Had input values but all failed conversion
133
- # Track conversion failures for logging
134
- failed_conversions[key] = {"field": field, "input_values": values}
135
-
136
- # Log conversion failures if any occurred
137
- if failed_conversions:
138
- field_details = []
139
- for field_name, failure_info in failed_conversions.items():
140
- field = failure_info["field"]
141
- values = failure_info["input_values"]
142
-
143
- expected_type = field.data_type() if field else "unknown"
144
- actual_types = {type(v).__name__ for v in values if v is not None}
145
- actual_type_str = (
146
- ", ".join(sorted(actual_types)) if actual_types else "NoneType"
147
- )
148
-
149
- field_details.append(
150
- f"{field_name} (expected: {expected_type}, got: {actual_type_str})"
151
- )
152
-
153
- logger.warning(
154
- "Type conversion failures for {}: {}",
155
- self.address,
156
- "; ".join(field_details),
157
- )
158
-
159
129
  return out
@@ -115,7 +115,7 @@ class BaseTraversal:
115
115
  )
116
116
 
117
117
  # Ensure manual_task collections execute right after ROOT
118
- from fides.api.task.manual.manual_task_address import ManualTaskAddress
118
+ from fides.api.task.manual.manual_task_utils import ManualTaskAddress
119
119
 
120
120
  for addr in self.traversal_node_dict.keys():
121
121
  if ManualTaskAddress.is_manual_task_address(addr):
@@ -26,9 +26,6 @@ from fides.api.schemas.base_class import FidesSchema
26
26
  if TYPE_CHECKING:
27
27
  from fides.api.models.attachment import Attachment
28
28
  from fides.api.models.fides_user import FidesUser
29
- from fides.api.models.manual_task.conditional_dependency import (
30
- ManualTaskConditionalDependency,
31
- )
32
29
 
33
30
  # ------------------------------------------------------------
34
31
  # Enums
@@ -245,13 +242,6 @@ class ManualTask(Base):
245
242
  viewonly=True, # No cascade delete - submissions are historical data
246
243
  )
247
244
 
248
- conditional_dependencies = relationship(
249
- "ManualTaskConditionalDependency",
250
- back_populates="task",
251
- uselist=True,
252
- cascade="all, delete-orphan",
253
- )
254
-
255
245
  # Properties
256
246
  @property
257
247
  def assigned_users(self) -> list[str]:
@@ -25,9 +25,7 @@ from fides.api.models.client import ClientDetail
25
25
  from fides.api.models.connectionconfig import ConnectionConfig
26
26
  from fides.api.models.sql_models import DataCategory # type: ignore
27
27
  from fides.api.models.storage import StorageConfig, get_active_default_storage_config
28
- from fides.api.schemas.masking.masking_secrets import MaskingSecretCache
29
28
  from fides.api.schemas.policy import ActionType, DrpAction
30
- from fides.api.service.masking.strategy.masking_strategy import MaskingStrategy
31
29
  from fides.api.util.data_category import _validate_data_category
32
30
  from fides.config import CONFIG
33
31
 
@@ -142,27 +140,6 @@ class Policy(Base):
142
140
  except IndexError:
143
141
  return None
144
142
 
145
- def generate_masking_secrets(self) -> Optional[List[MaskingSecretCache]]:
146
- """
147
- Returns a list of masking secrets for the masking strategies in the policy.
148
- """
149
-
150
- masking_secrets: List[MaskingSecretCache] = []
151
- erasure_rules = self.get_rules_for_action(action_type=ActionType.erasure)
152
- unique_masking_strategies_by_name: Set[str] = set()
153
- for rule in erasure_rules:
154
- strategy_name: str = rule.masking_strategy["strategy"] # type: ignore
155
- configuration = rule.masking_strategy["configuration"] # type: ignore
156
- if strategy_name in unique_masking_strategies_by_name:
157
- continue
158
- unique_masking_strategies_by_name.add(strategy_name)
159
- masking_strategy = MaskingStrategy.get_strategy(
160
- strategy_name, configuration
161
- )
162
- if masking_strategy.secrets_required():
163
- masking_secrets.extend(masking_strategy.generate_secrets_for_cache())
164
- return masking_secrets
165
-
166
143
  def applies_to(self, node: "TraversalNode") -> bool:
167
144
  """
168
145
  Returns True if any data category in the traversal node starts with any of the policy's target categories.
@@ -24,7 +24,6 @@ EXECUTION_CHECKPOINTS = [
24
24
  CurrentStep.finalize_consent,
25
25
  CurrentStep.email_post_send,
26
26
  CurrentStep.post_webhooks,
27
- CurrentStep.finalization,
28
27
  ]
29
28
 
30
29
  COMPLETED_EXECUTION_LOG_STATUSES = [
@@ -50,7 +50,6 @@ from fides.api.models.comment import Comment, CommentReference, CommentReference
50
50
  from fides.api.models.fides_user import FidesUser
51
51
  from fides.api.models.field_types import EncryptedLargeDataDescriptor
52
52
  from fides.api.models.manual_webhook import AccessManualWebhook
53
- from fides.api.models.masking_secret import MaskingSecret
54
53
  from fides.api.models.policy import (
55
54
  Policy,
56
55
  PolicyPreWebhook,
@@ -99,6 +98,7 @@ from fides.api.util.cache import (
99
98
  get_drp_request_body_cache_key,
100
99
  get_encryption_cache_key,
101
100
  get_identity_cache_key,
101
+ get_masking_secret_cache_key,
102
102
  )
103
103
  from fides.api.util.collection_util import Row, extract_key_for_address
104
104
  from fides.api.util.constants import API_DATE_FORMAT
@@ -145,12 +145,6 @@ class PrivacyRequest(
145
145
  ForeignKey(FidesUser.id_field_path, ondelete="SET NULL"),
146
146
  nullable=True,
147
147
  )
148
- finalized_at = Column(DateTime(timezone=True), nullable=True)
149
- finalized_by = Column(
150
- String,
151
- ForeignKey(FidesUser.id_field_path, ondelete="SET NULL"),
152
- nullable=True,
153
- )
154
148
  submitted_by = Column(
155
149
  String,
156
150
  ForeignKey(FidesUser.id_field_path, ondelete="SET NULL"),
@@ -295,13 +289,6 @@ class PrivacyRequest(
295
289
  order_by="RequestTask.created_at",
296
290
  )
297
291
 
298
- masking_secrets: "RelationshipProperty[List[MaskingSecret]]" = relationship(
299
- "MaskingSecret",
300
- back_populates="privacy_request",
301
- uselist=True,
302
- passive_deletes="all",
303
- )
304
-
305
292
  @property
306
293
  def days_left(self: PrivacyRequest) -> Union[int, None]:
307
294
  if self.due_date is None:
@@ -579,24 +566,19 @@ class PrivacyRequest(
579
566
  encryption_key,
580
567
  )
581
568
 
582
- def persist_masking_secrets(
583
- self, masking_secrets: List[MaskingSecretCache]
584
- ) -> None:
585
- """Persists masking encryption secrets to database."""
586
- if not masking_secrets:
569
+ def cache_masking_secret(self, masking_secret: MaskingSecretCache) -> None:
570
+ """Sets masking encryption secrets in the Fides app cache if provided"""
571
+ if not masking_secret:
587
572
  return
588
-
589
- session = Session.object_session(self)
590
- for masking_secret in masking_secrets:
591
- MaskingSecret.create(
592
- db=session,
593
- data={
594
- "privacy_request_id": self.id,
595
- "secret": masking_secret.secret,
596
- "masking_strategy": masking_secret.masking_strategy,
597
- "secret_type": masking_secret.secret_type,
598
- },
599
- )
573
+ cache: FidesopsRedis = get_cache()
574
+ cache.set_with_autoexpire(
575
+ get_masking_secret_cache_key(
576
+ self.id,
577
+ masking_strategy=masking_secret.masking_strategy,
578
+ secret_type=masking_secret.secret_type,
579
+ ),
580
+ FidesopsRedis.encode_obj(masking_secret.secret),
581
+ )
600
582
 
601
583
  def get_cached_identity_data(self) -> Dict[str, Any]:
602
584
  """Retrieves any identity data pertaining to this request from the cache"""
fides/api/oauth/roles.py CHANGED
@@ -47,7 +47,6 @@ from fides.common.api.scope_registry import (
47
47
  SYSTEM_READ,
48
48
  USER_PERMISSION_ASSIGN_OWNERS,
49
49
  USER_READ,
50
- USER_READ_OWN,
51
50
  WEBHOOK_READ,
52
51
  )
53
52
 
@@ -127,7 +126,6 @@ viewer_scopes = [ # Intentionally omitted USER_PERMISSION_READ and PRIVACY_REQU
127
126
 
128
127
  respondent_scopes = [
129
128
  PRIVACY_REQUEST_MANUAL_STEPS_RESPOND, # allows respondents to respond to assigned manual steps
130
- USER_READ_OWN,
131
129
  ]
132
130
 
133
131
  external_respondent_scopes = [
@@ -11,14 +11,6 @@ from fides.api.schemas.messaging.messaging import MessagingServiceType
11
11
  from fides.config.admin_ui_settings import ErrorNotificationMode
12
12
 
13
13
 
14
- class SqlDryRunMode(str, Enum):
15
- """SQL dry run mode for controlling execution of SQL statements in privacy requests"""
16
-
17
- none = "none"
18
- access = "access"
19
- erasure = "erasure"
20
-
21
-
22
14
  class StorageTypeApiAccepted(Enum):
23
15
  """Enum for storage destination types accepted in API updates"""
24
16
 
@@ -70,9 +62,7 @@ class ExecutionApplicationConfig(FidesSchema):
70
62
  subject_identity_verification_required: Optional[bool] = None
71
63
  disable_consent_identity_verification: Optional[bool] = None
72
64
  require_manual_request_approval: Optional[bool] = None
73
- sql_dry_run: Optional[SqlDryRunMode] = None
74
-
75
- model_config = ConfigDict(use_enum_values=True, extra="forbid")
65
+ model_config = ConfigDict(extra="forbid")
76
66
 
77
67
 
78
68
  class AdminUIConfig(FidesSchema):
@@ -5,7 +5,7 @@ from typing import Callable, Generic, TypeVar
5
5
  T = TypeVar("T")
6
6
 
7
7
 
8
- class SecretType(str, Enum):
8
+ class SecretType(Enum):
9
9
  """Enum that holds all possible types of secrets across all masking strategies"""
10
10
 
11
11
  key = "key"
@@ -28,7 +28,6 @@ class CurrentStep(EnumType):
28
28
  finalize_consent = "finalize_consent"
29
29
  email_post_send = "email_post_send"
30
30
  post_webhooks = "post_webhooks"
31
- finalization = "finalization"
32
31
 
33
32
 
34
33
  # action types we actively support in policies/requests
@@ -124,8 +124,6 @@ class PrivacyRequestResubmit(PrivacyRequestCreate):
124
124
  identity_verified_at: Optional[datetime] = None
125
125
  custom_privacy_request_fields_approved_at: Optional[datetime] = None
126
126
  custom_privacy_request_fields_approved_by: Optional[str] = None
127
- finalized_at: Optional[datetime] = None
128
- finalized_by: Optional[str] = None
129
127
 
130
128
 
131
129
  class ConsentRequestCreate(FidesSchema):
@@ -289,7 +287,6 @@ class PrivacyRequestStatus(str, EnumType):
289
287
  complete = "complete"
290
288
  paused = "paused"
291
289
  awaiting_email_send = "awaiting_email_send"
292
- requires_manual_finalization = "requires_manual_finalization"
293
290
  canceled = "canceled"
294
291
  error = "error"
295
292
 
@@ -323,8 +320,6 @@ class PrivacyRequestResponse(FidesSchema):
323
320
  source: Optional[PrivacyRequestSource] = None
324
321
  deleted_at: Optional[datetime] = None
325
322
  deleted_by: Optional[str] = None
326
- finalized_at: Optional[datetime] = None
327
- finalized_by: Optional[str] = None
328
323
  model_config = ConfigDict(from_attributes=True, use_enum_values=True)
329
324
 
330
325
 
@@ -82,7 +82,6 @@ class BaseConnector(Generic[DB_CONNECTOR_TYPE], ABC):
82
82
  privacy_request: PrivacyRequest,
83
83
  request_task: RequestTask,
84
84
  rows: List[Row],
85
- input_data: Optional[Dict[str, List[Any]]] = None,
86
85
  ) -> int:
87
86
  """Execute a masking request. Return the number of rows that have been updated
88
87