ethyca-fides 2.57.1b8__py2.py3-none-any.whl → 2.57.1rc0__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. {ethyca_fides-2.57.1b8.dist-info → ethyca_fides-2.57.1rc0.dist-info}/METADATA +1 -1
  2. {ethyca_fides-2.57.1b8.dist-info → ethyca_fides-2.57.1rc0.dist-info}/RECORD +207 -217
  3. fides/_version.py +3 -3
  4. fides/api/api/v1/endpoints/config_endpoints.py +2 -4
  5. fides/api/api/v1/endpoints/generic_overrides.py +6 -48
  6. fides/api/models/asset.py +18 -37
  7. fides/api/models/attachment.py +8 -6
  8. fides/api/models/comment.py +17 -17
  9. fides/api/models/connectionconfig.py +1 -1
  10. fides/api/models/detection_discovery.py +0 -12
  11. fides/api/models/location_regulation_selections.py +0 -1
  12. fides/api/models/{privacy_request/privacy_request.py → privacy_request.py} +691 -82
  13. fides/api/models/sql_models.py +5 -28
  14. fides/api/oauth/jwt.py +0 -18
  15. fides/api/oauth/utils.py +11 -11
  16. fides/api/schemas/dataset.py +2 -22
  17. fides/api/schemas/saas/strategy_configuration.py +0 -1
  18. fides/api/service/pagination/pagination_strategy_cursor.py +1 -15
  19. fides/api/service/pagination/pagination_strategy_link.py +1 -1
  20. fides/api/tasks/storage.py +111 -12
  21. fides/config/__init__.py +1 -1
  22. fides/data/language/languages.yml +0 -2
  23. fides/data/location/locations.yml +1 -244
  24. fides/ui-build/static/admin/404.html +1 -1
  25. fides/ui-build/static/admin/_next/static/chunks/3320-87c75df57a47487e.js +1 -0
  26. fides/ui-build/static/admin/_next/static/chunks/3627-fb83adac32c128e6.js +1 -0
  27. fides/ui-build/static/admin/_next/static/chunks/3662-420d9807c30008ab.js +1 -0
  28. fides/ui-build/static/admin/_next/static/chunks/3949-9888699e2ac564c4.js +1 -0
  29. fides/ui-build/static/admin/_next/static/chunks/4481-ca8d2c75d634b6bc.js +1 -0
  30. fides/ui-build/static/admin/_next/static/chunks/4723-81d28e5be5c7b6d7.js +1 -0
  31. fides/ui-build/static/admin/_next/static/chunks/5574-a4047e826a8cd4c3.js +1 -0
  32. fides/ui-build/static/admin/_next/static/chunks/5834-bd9ed01c4ab2ef5c.js +1 -0
  33. fides/ui-build/static/admin/_next/static/chunks/5973-67c7562997f7d5cb.js +1 -0
  34. fides/ui-build/static/admin/_next/static/chunks/6277-515c922445b8edc5.js +1 -0
  35. fides/ui-build/static/admin/_next/static/chunks/6954-6eb480eb132239c3.js +1 -0
  36. fides/ui-build/static/admin/_next/static/chunks/7044-9dc90893067f38ae.js +1 -0
  37. fides/ui-build/static/admin/_next/static/chunks/7980-2597c279c30fbcda.js +1 -0
  38. fides/ui-build/static/admin/_next/static/chunks/9767-4c591bd478c72650.js +1 -0
  39. fides/ui-build/static/admin/_next/static/chunks/pages/{_app-e53d13729068a001.js → _app-9ceff88561dc1250.js} +8 -8
  40. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{manual-5593bb1b6de0473d.js → manual-d7f60624cbc12217.js} +1 -1
  41. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-6a7208eee5e588fb.js → multiple-18b0b521255289a3.js} +1 -1
  42. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-136bcbd20ac59bf5.js +1 -0
  43. fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-ba0c5fa9764cbd89.js → add-vendors-64f83e9a2b777bf3.js} +1 -1
  44. fides/ui-build/static/admin/_next/static/chunks/pages/consent/{configure-1af99ffa7a507e86.js → configure-e11ace4f273ebb47.js} +1 -1
  45. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-c02510104f9e503a.js → [id]-443e6dd191ce5588.js} +1 -1
  46. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{new-e96415629f3b4223.js → new-36162d5bea29dcc2.js} +1 -1
  47. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-66827da90b8a2d1e.js → [id]-2d651499c07d12d9.js} +1 -1
  48. fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-13d48f980bf707e5.js → new-36e57d2f2446be82.js} +1 -1
  49. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-942d68a88b321067.js +1 -0
  50. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-00526324583139ab.js +1 -0
  51. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-f0ab51d0d5f995de.js +1 -0
  52. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-2220c30c3863b5a5.js +1 -0
  53. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-740824dfa6823e26.js +1 -0
  54. fides/ui-build/static/admin/_next/static/chunks/pages/dataset-5541ecd2f62711a5.js +1 -0
  55. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-9bb953098f68f1ee.js → [id]-0616437e1a82d3ed.js} +1 -1
  56. fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-cdcf42d4cb24b45a.js → new-f8218440494e8532.js} +1 -1
  57. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-a6448ce6ba7f0cf5.js +1 -0
  58. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-1a6965d78bfb26b0.js +1 -0
  59. fides/ui-build/static/admin/_next/static/chunks/pages/messaging-f263e6bacf0f2d19.js +1 -0
  60. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-b96ee3fea3920fcf.js +1 -0
  61. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-1b0f9469cb65abfc.js +1 -0
  62. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-eebd2f4ead19cfd6.js +1 -0
  63. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-4769f55b138073f7.js +1 -0
  64. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-775f55b3f80cd452.js +1 -0
  65. fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-14def4ca3cc9cda5.js +1 -0
  66. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-21f26c0dc4d09e9f.js +1 -0
  67. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-44f7fbfee9cf9267.js → [id]-82d9af34546adaa2.js} +1 -1
  68. fides/ui-build/static/admin/_next/static/css/957d0e4fea846ff0.css +1 -0
  69. fides/ui-build/static/admin/_next/static/rOPehh5NMs1hjog7nTw1q/_buildManifest.js +1 -0
  70. fides/ui-build/static/admin/add-systems/manual.html +1 -1
  71. fides/ui-build/static/admin/add-systems/multiple.html +1 -1
  72. fides/ui-build/static/admin/add-systems.html +1 -1
  73. fides/ui-build/static/admin/ant-poc.html +1 -1
  74. fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
  75. fides/ui-build/static/admin/consent/configure.html +1 -1
  76. fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
  77. fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
  78. fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
  79. fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
  80. fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
  81. fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
  82. fides/ui-build/static/admin/consent/properties.html +1 -1
  83. fides/ui-build/static/admin/consent/reporting.html +1 -1
  84. fides/ui-build/static/admin/consent.html +1 -1
  85. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
  86. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
  87. fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
  88. fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
  89. fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
  90. fides/ui-build/static/admin/data-catalog.html +1 -1
  91. fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +1 -1
  92. fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +1 -1
  93. fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
  94. fides/ui-build/static/admin/data-discovery/activity.html +1 -1
  95. fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
  96. fides/ui-build/static/admin/data-discovery/detection.html +1 -1
  97. fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
  98. fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
  99. fides/ui-build/static/admin/datamap.html +1 -1
  100. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
  101. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
  102. fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
  103. fides/ui-build/static/admin/dataset/new.html +1 -1
  104. fides/ui-build/static/admin/dataset.html +1 -1
  105. fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
  106. fides/ui-build/static/admin/datastore-connection/new.html +1 -1
  107. fides/ui-build/static/admin/datastore-connection.html +1 -1
  108. fides/ui-build/static/admin/index.html +1 -1
  109. fides/ui-build/static/admin/integrations/[id].html +1 -1
  110. fides/ui-build/static/admin/integrations.html +1 -1
  111. fides/ui-build/static/admin/lib/fides-ext-gpp.js +1 -1
  112. fides/ui-build/static/admin/lib/fides-headless.js +1 -1
  113. fides/ui-build/static/admin/lib/fides-tcf.js +3 -3
  114. fides/ui-build/static/admin/lib/fides.js +2 -2
  115. fides/ui-build/static/admin/login/[provider].html +1 -1
  116. fides/ui-build/static/admin/login.html +1 -1
  117. fides/ui-build/static/admin/messaging/[id].html +1 -1
  118. fides/ui-build/static/admin/messaging/add-template.html +1 -1
  119. fides/ui-build/static/admin/messaging.html +1 -1
  120. fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
  121. fides/ui-build/static/admin/privacy-requests/configure/messaging.html +1 -1
  122. fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
  123. fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
  124. fides/ui-build/static/admin/privacy-requests.html +1 -1
  125. fides/ui-build/static/admin/properties/[id].html +1 -1
  126. fides/ui-build/static/admin/properties/add-property.html +1 -1
  127. fides/ui-build/static/admin/properties.html +1 -1
  128. fides/ui-build/static/admin/reporting/datamap.html +1 -1
  129. fides/ui-build/static/admin/settings/about.html +1 -1
  130. fides/ui-build/static/admin/settings/consent.html +1 -1
  131. fides/ui-build/static/admin/settings/custom-fields.html +1 -1
  132. fides/ui-build/static/admin/settings/domain-records.html +1 -1
  133. fides/ui-build/static/admin/settings/domains.html +1 -1
  134. fides/ui-build/static/admin/settings/email-templates.html +1 -1
  135. fides/ui-build/static/admin/settings/locations.html +1 -1
  136. fides/ui-build/static/admin/settings/organization.html +1 -1
  137. fides/ui-build/static/admin/settings/regulations.html +1 -1
  138. fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
  139. fides/ui-build/static/admin/systems/configure/[id].html +1 -1
  140. fides/ui-build/static/admin/systems.html +1 -1
  141. fides/ui-build/static/admin/taxonomy.html +1 -1
  142. fides/ui-build/static/admin/user-management/new.html +1 -1
  143. fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
  144. fides/ui-build/static/admin/user-management.html +1 -1
  145. fides/api/alembic/migrations/versions/1d2f04ac19f2_add_page_column_to_asset_table.py +0 -49
  146. fides/api/alembic/migrations/versions/7c3fbee90c78_add_user_assigned_data_uses_and_system_.py +0 -54
  147. fides/api/alembic/migrations/versions/9a1eacd2666b_add_description_column_to_asset.py +0 -25
  148. fides/api/models/privacy_request/__init__.py +0 -44
  149. fides/api/models/privacy_request/consent.py +0 -155
  150. fides/api/models/privacy_request/execution_log.py +0 -108
  151. fides/api/models/privacy_request/provided_identity.py +0 -149
  152. fides/api/models/privacy_request/request_task.py +0 -284
  153. fides/api/models/privacy_request/webhook.py +0 -94
  154. fides/api/service/storage/s3.py +0 -133
  155. fides/api/service/storage/util.py +0 -10
  156. fides/ui-build/static/admin/_next/static/chunks/1376-c177d8d0c60b1166.js +0 -1
  157. fides/ui-build/static/admin/_next/static/chunks/3320-317483e6c10bae51.js +0 -1
  158. fides/ui-build/static/admin/_next/static/chunks/355-6a87b50acf54e985.js +0 -1
  159. fides/ui-build/static/admin/_next/static/chunks/3662-6a0cafa3023aa7a2.js +0 -1
  160. fides/ui-build/static/admin/_next/static/chunks/4481-f2f57e7a75a90e79.js +0 -1
  161. fides/ui-build/static/admin/_next/static/chunks/4723-1a785d558dfb6441.js +0 -1
  162. fides/ui-build/static/admin/_next/static/chunks/605-c782df008a0ff167.js +0 -1
  163. fides/ui-build/static/admin/_next/static/chunks/6362-72451aeb32815d26.js +0 -1
  164. fides/ui-build/static/admin/_next/static/chunks/6954-f7daf613febc36ef.js +0 -1
  165. fides/ui-build/static/admin/_next/static/chunks/7434-3d4a0beb84ec57f7.js +0 -1
  166. fides/ui-build/static/admin/_next/static/chunks/7495-2f5c8dfba2eabb4f.js +0 -1
  167. fides/ui-build/static/admin/_next/static/chunks/7958-d2bc63e1be612f36.js +0 -1
  168. fides/ui-build/static/admin/_next/static/chunks/7980-91800d54c5964ba3.js +0 -1
  169. fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-a33f82e79cb09478.js +0 -1
  170. fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-1a3bb713fc7bc298.js +0 -1
  171. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-5892ca5d93ea6165.js +0 -1
  172. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-5c37c3ad1c3cfba5.js +0 -1
  173. fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-4fac7e0a54eebc32.js +0 -1
  174. fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-45016545c099e183.js +0 -1
  175. fides/ui-build/static/admin/_next/static/chunks/pages/dataset-5ddd3cd7d29e89c0.js +0 -1
  176. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-108945832a7edd7d.js +0 -1
  177. fides/ui-build/static/admin/_next/static/chunks/pages/integrations-e96e959d10afebea.js +0 -1
  178. fides/ui-build/static/admin/_next/static/chunks/pages/messaging-5a161e167c251519.js +0 -1
  179. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-c3e234ad95e6e213.js +0 -1
  180. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-347e203faa31716f.js +0 -1
  181. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-729fa8ed0f10bc8e.js +0 -1
  182. fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-ff6edba56dfec090.js +0 -1
  183. fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-ad368857e86fe01b.js +0 -1
  184. fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-f45920358a405167.js +0 -1
  185. fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-ae133b6e8e1107f2.js +0 -1
  186. fides/ui-build/static/admin/_next/static/css/dd9922a434d21e22.css +0 -1
  187. fides/ui-build/static/admin/_next/static/lO31cDp9wEzsNdiUnl8It/_buildManifest.js +0 -1
  188. {ethyca_fides-2.57.1b8.dist-info → ethyca_fides-2.57.1rc0.dist-info}/LICENSE +0 -0
  189. {ethyca_fides-2.57.1b8.dist-info → ethyca_fides-2.57.1rc0.dist-info}/WHEEL +0 -0
  190. {ethyca_fides-2.57.1b8.dist-info → ethyca_fides-2.57.1rc0.dist-info}/entry_points.txt +0 -0
  191. {ethyca_fides-2.57.1b8.dist-info → ethyca_fides-2.57.1rc0.dist-info}/top_level.txt +0 -0
  192. /fides/ui-build/static/admin/_next/static/chunks/{1150-d4a5eef84e70de22.js → 1150-73440d7b319558e8.js} +0 -0
  193. /fides/ui-build/static/admin/_next/static/chunks/{2397-c6d0dcb3b921555f.js → 2397-7177ecf4ebe68feb.js} +0 -0
  194. /fides/ui-build/static/admin/_next/static/chunks/{3086-d099019708303444.js → 3086-be6b52546c3efc90.js} +0 -0
  195. /fides/ui-build/static/admin/_next/static/chunks/{3855-4d5d936a58a0dd5f.js → 3855-5c7b11871f59e0e0.js} +0 -0
  196. /fides/ui-build/static/admin/_next/static/chunks/{3872-2b2bf5ebd4b0a70f.js → 3872-f3d5054bdc584eaa.js} +0 -0
  197. /fides/ui-build/static/admin/_next/static/chunks/{5246-ac8b0fcb44b00af7.js → 5246-9fc6af1a6499e0a4.js} +0 -0
  198. /fides/ui-build/static/admin/_next/static/chunks/{5258-a05dcab2f9315dab.js → 5258-3a650be9142cf914.js} +0 -0
  199. /fides/ui-build/static/admin/_next/static/chunks/{5480-c6c1fb87006e471a.js → 5480-f5bec5e881f72f8d.js} +0 -0
  200. /fides/ui-build/static/admin/_next/static/chunks/{5487-509639439bf9fb46.js → 5487-d96e1abc93f92631.js} +0 -0
  201. /fides/ui-build/static/admin/_next/static/chunks/{5826-e3970cd9440be33b.js → 5826-16e497af363a0cbc.js} +0 -0
  202. /fides/ui-build/static/admin/_next/static/chunks/{6315-daf94fa7520fb253.js → 6315-dee79f6861c94d2d.js} +0 -0
  203. /fides/ui-build/static/admin/_next/static/chunks/{6372-41afe1e6a9181cc7.js → 6372-f1b54f3cb4888660.js} +0 -0
  204. /fides/ui-build/static/admin/_next/static/chunks/{6853-7f95c36e396d3fb8.js → 6853-cacea421af3bfc26.js} +0 -0
  205. /fides/ui-build/static/admin/_next/static/chunks/{7751-130668529ab1d0b6.js → 7751-25e0c1307988ffd7.js} +0 -0
  206. /fides/ui-build/static/admin/_next/static/chunks/{79-1c326c00cf111c00.js → 79-ba88d0cf4c65aaa2.js} +0 -0
  207. /fides/ui-build/static/admin/_next/static/chunks/{8433-b2a96b825124b596.js → 8433-969280d321d1c3a2.js} +0 -0
  208. /fides/ui-build/static/admin/_next/static/chunks/{8499-34620330ecf2ac53.js → 8499-07507004e8275df2.js} +0 -0
  209. /fides/ui-build/static/admin/_next/static/chunks/{9046-e7b9a3fd010b01ad.js → 9046-80f1ea44f89fe32c.js} +0 -0
  210. /fides/ui-build/static/admin/_next/static/chunks/{9282-6ee061da1eb51d65.js → 9282-1a5a2f6f4d9ed586.js} +0 -0
  211. /fides/ui-build/static/admin/_next/static/chunks/{9999-8600f6f495a80b38.js → 9999-f2e40d5b13343220.js} +0 -0
  212. /fides/ui-build/static/admin/_next/static/chunks/pages/{404-8e0baa6e128803ab.js → 404-1087258931760074.js} +0 -0
  213. /fides/ui-build/static/admin/_next/static/chunks/pages/{ant-poc-39267961e03be6c5.js → ant-poc-b3b4d0a98450ffd1.js} +0 -0
  214. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-experience-ed38f18c095141fe.js → privacy-experience-35e9df60b21e21a6.js} +0 -0
  215. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-notices-7339b3cdf5d4da32.js → privacy-notices-da37afbe5ec81339.js} +0 -0
  216. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-b5b3196eba90246a.js → properties-c57b209feef7c2da.js} +0 -0
  217. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{reporting-38b8ec1a221610ff.js → reporting-97fea4ac45093cbd.js} +0 -0
  218. /fides/ui-build/static/admin/_next/static/chunks/pages/{consent-df2388d953c85c2a.js → consent-24bef021ee71e36c.js} +0 -0
  219. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-5e851b9f27bda8a4.js → [resourceUrn]-6cbd79481199812d.js} +0 -0
  220. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-9f9112b22fdfb32a.js → [projectUrn]-46b9790da2fec05a.js} +0 -0
  221. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{projects-ddca867936c89a72.js → projects-1f965b9c496071d1.js} +0 -0
  222. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-85e3d6f1b2afd3e7.js → [resourceUrn]-e7833c1c606081a9.js} +0 -0
  223. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{resources-9831226436d884b5.js → resources-bed368d048ea6883.js} +0 -0
  224. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{activity-a0749240265da17d.js → activity-1d7936f05d23097f.js} +0 -0
  225. /fides/ui-build/static/admin/_next/static/chunks/pages/{datamap-819ac99e7a56465a.js → datamap-9cd0c40bef77b120.js} +0 -0
  226. /fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/{[...subfieldNames]-259d4a94861afe2b.js → [...subfieldNames]-ab9bc1a3640547db.js} +0 -0
  227. /fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/{[collectionName]-25283f5bcac8fa73.js → [collectionName]-17ec8385bb1fa6d4.js} +0 -0
  228. /fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{[datasetId]-aaedf8f2a849c97f.js → [datasetId]-e14c1c07658f8a10.js} +0 -0
  229. /fides/ui-build/static/admin/_next/static/chunks/pages/{datastore-connection-61adfcd5f7f69101.js → datastore-connection-b8eaa9b9d3832b30.js} +0 -0
  230. /fides/ui-build/static/admin/_next/static/chunks/pages/{index-1072281d6cfe8295.js → index-94e6d589c4edf360.js} +0 -0
  231. /fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{[id]-268918d8c1dfe82a.js → [id]-6b032de0a6c2c400.js} +0 -0
  232. /fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{add-template-cd75949bee7497b6.js → add-template-c0d6ae68ff7979c6.js} +0 -0
  233. /fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{[id]-d1f4178b8a7e2145.js → [id]-bbe5854b7d19b7e9.js} +0 -0
  234. /fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-37e800a20e654064.js → configure-4bad69cd42c9722c.js} +0 -0
  235. /fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-92145503c4d2d75e.js → [id]-b4c808a8a0287d11.js} +0 -0
  236. /fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-ab94805694ebd35c.js → add-property-5a701477b006a63b.js} +0 -0
  237. /fides/ui-build/static/admin/_next/static/chunks/pages/{properties-5e623dcd92418638.js → properties-9a1899dfe052023e.js} +0 -0
  238. /fides/ui-build/static/admin/_next/static/chunks/pages/reporting/{datamap-710839776b9995ce.js → datamap-a3fa3ad77730a03b.js} +0 -0
  239. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{about-175d39bdd74f148c.js → about-d073be113e9ca7b0.js} +0 -0
  240. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{custom-fields-1262d596c0cdcd81.js → custom-fields-744e7bbc200557e7.js} +0 -0
  241. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-f0c6e6034d37dbcf.js → domain-records-c5cd5fb578de9515.js} +0 -0
  242. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{email-templates-6ee49492a7769f89.js → email-templates-39c7ae3602ac69b2.js} +0 -0
  243. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-deb754d42982562b.js → locations-45e33ba111f8f8b0.js} +0 -0
  244. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-f9e97decfe56b018.js → regulations-94975aeab348528e.js} +0 -0
  245. /fides/ui-build/static/admin/_next/static/chunks/pages/{systems-4d6a17a7a24aca97.js → systems-c320df35d51dc537.js} +0 -0
  246. /fides/ui-build/static/admin/_next/static/chunks/pages/{taxonomy-46f47c04a01319cf.js → taxonomy-181ea5b0ac975239.js} +0 -0
  247. /fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-5b752ba934baee94.js → [id]-622e16a17a11c096.js} +0 -0
  248. /fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-4fbb29cf0a611aae.js → user-management-aa872b21bb835d34.js} +0 -0
  249. /fides/ui-build/static/admin/_next/static/chunks/{webpack-815e3c35038201da.js → webpack-4df2ba5ee2d40f0a.js} +0 -0
  250. /fides/ui-build/static/admin/_next/static/{lO31cDp9wEzsNdiUnl8It → rOPehh5NMs1hjog7nTw1q}/_ssgManifest.js +0 -0
@@ -295,38 +295,15 @@ class Dataset(Base, FidesBase):
295
295
  collections = Column(JSON)
296
296
  fides_meta = Column(JSON)
297
297
 
298
- @classmethod
299
- def create(
300
- cls: Type["Dataset"],
301
- db: Session,
302
- *,
303
- data: dict[str, Any],
304
- check_name: bool = False,
305
- ) -> "Dataset":
306
- """
307
- Override create to check for existing datasets with the same fides_key.
308
- Duplicate names are allowed.
309
- """
310
- # Check if dataset with same fides_key already exists
311
- if "fides_key" in data:
312
- existing_by_key = (
313
- db.query(cls).filter(cls.fides_key == data["fides_key"]).first()
314
- )
315
- if existing_by_key:
316
- raise KeyOrNameAlreadyExists(
317
- f'Dataset with fides_key "{data["fides_key"]}" already exists.'
318
- )
319
-
320
- # Create the dataset using the parent class's method
321
- db_obj = cls(**data)
322
- return cls.persist_obj(db, db_obj)
323
-
324
298
  @classmethod
325
299
  def create_from_dataset_dict(cls, db: Session, dataset: dict) -> "Dataset":
326
300
  """Add a method to create directly using a synchronous session"""
327
301
  validated_dataset: FideslangDataset = FideslangDataset(**dataset)
328
- data_dict = validated_dataset.model_dump(mode="json")
329
- return cls.create(db=db, data=data_dict)
302
+ ctl_dataset = cls(**validated_dataset.model_dump(mode="json"))
303
+ db.add(ctl_dataset)
304
+ db.commit()
305
+ db.refresh(ctl_dataset)
306
+ return ctl_dataset
330
307
 
331
308
  @property
332
309
  def field_data_categories(self) -> Set[str]:
fides/api/oauth/jwt.py CHANGED
@@ -14,21 +14,3 @@ def generate_jwe(payload: str, encryption_key: str, encoding: str = "UTF-8") ->
14
14
  encryption_key,
15
15
  encryption=_JWT_ENCRYPTION_ALGORITHM,
16
16
  ).decode(encoding)
17
-
18
-
19
- def decrypt_jwe(token: str, encryption_key: str, encoding: str = "UTF-8") -> str:
20
- """Decrypts a JWE token and returns the payload as a string.
21
-
22
- Args:
23
- token: The JWE token to decrypt.
24
- encryption_key: The key used to decrypt the token.
25
- encoding: The encoding to use for the decrypted payload.
26
-
27
- Returns:
28
- The decrypted payload as a string.
29
- """
30
- decrypted_payload = jwe.decrypt(
31
- token,
32
- encryption_key,
33
- )
34
- return decrypted_payload.decode(encoding)
fides/api/oauth/utils.py CHANGED
@@ -339,16 +339,7 @@ def has_permissions(
339
339
  has_role: bool = _has_scope_via_role(
340
340
  token_data=token_data, client=client, endpoint_scopes=endpoint_scopes
341
341
  )
342
-
343
- has_required_permissions = has_direct_scope or has_role
344
- if not has_required_permissions:
345
- scopes_required = ",".join(endpoint_scopes.scopes)
346
- logger.debug(
347
- "Authorization failed. Missing required scopes: {}. Neither direct scopes nor role-derived scopes were sufficient.",
348
- scopes_required,
349
- )
350
-
351
- return has_required_permissions
342
+ return has_direct_scope or has_role
352
343
 
353
344
 
354
345
  def _has_scope_via_role(
@@ -394,7 +385,16 @@ def _has_direct_scopes(
394
385
 
395
386
  def has_scope_subset(user_scopes: List[str], endpoint_scopes: SecurityScopes) -> bool:
396
387
  """Are the required scopes a subset of the scopes belonging to the user?"""
397
- return set(endpoint_scopes.scopes).issubset(user_scopes)
388
+ if not set(endpoint_scopes.scopes).issubset(user_scopes):
389
+ scopes_required = ",".join(endpoint_scopes.scopes)
390
+ scopes_provided = ",".join(user_scopes)
391
+ logger.debug(
392
+ "Auth token missing required scopes: {}. Scopes provided: {}.",
393
+ scopes_required,
394
+ scopes_provided,
395
+ )
396
+ return False
397
+ return True
398
398
 
399
399
 
400
400
  def create_temporary_user_for_login_flow(config: FidesConfig) -> FidesUser:
@@ -1,8 +1,8 @@
1
1
  from typing import Any, Dict, List, Optional, Union
2
2
 
3
- from fideslang.models import Dataset, DatasetCollection
3
+ from fideslang.models import Dataset
4
4
  from fideslang.validation import FidesKey
5
- from pydantic import ConfigDict, Field
5
+ from pydantic import ConfigDict
6
6
 
7
7
  from fides.api.schemas.api import BulkResponse, BulkUpdateFailed
8
8
  from fides.api.schemas.base_class import FidesSchema
@@ -72,23 +72,3 @@ class DatasetReachability(FidesSchema):
72
72
 
73
73
  reachable: bool
74
74
  details: Optional[Union[str, List[Dict[str, Any]]]]
75
-
76
-
77
- class DatasetResponse(Dataset):
78
- """
79
- Dataset response model for API endpoints.
80
-
81
- Note: This class extends the Dataset model from fideslang rather than having a proper
82
- dedicated API response model. We had to make the collections field
83
- Optional and allow null values to support the minimal=true parameter in API responses,
84
- even though collections is required in the base fideslang Dataset model.
85
- """
86
-
87
- collections: Optional[List[DatasetCollection]] = Field( # type: ignore
88
- description="An array of objects that describe the Dataset's collections.",
89
- default=None,
90
- )
91
-
92
- model_config = ConfigDict(
93
- extra="ignore", from_attributes=False, coerce_numbers_to_str=True
94
- )
@@ -89,7 +89,6 @@ class CursorPaginationConfiguration(StrategyConfiguration):
89
89
 
90
90
  cursor_param: str
91
91
  field: str
92
- has_next: Optional[str] = None
93
92
 
94
93
 
95
94
  class ApiKeyAuthenticationConfiguration(StrategyConfiguration):
@@ -1,7 +1,6 @@
1
1
  from typing import Any, Dict, Optional
2
2
 
3
3
  import pydash
4
- from loguru import logger
5
4
  from requests import Response
6
5
 
7
6
  from fides.api.schemas.saas.shared_schemas import SaaSRequestParams
@@ -16,7 +15,6 @@ class CursorPaginationStrategy(PaginationStrategy):
16
15
  def __init__(self, configuration: CursorPaginationConfiguration):
17
16
  self.cursor_param = configuration.cursor_param
18
17
  self.field = configuration.field
19
- self.has_next = configuration.has_next
20
18
 
21
19
  def get_next_request(
22
20
  self,
@@ -29,15 +27,11 @@ class CursorPaginationStrategy(PaginationStrategy):
29
27
 
30
28
  # get the last object in the array and read the cursor value
31
29
  cursor = None
32
- has_next = None
33
30
  object_list = (
34
31
  pydash.get(response.json(), data_path) if data_path else response.json()
35
32
  )
36
33
  if object_list and isinstance(object_list, list):
37
- last_object = object_list.pop()
38
- cursor = pydash.get(last_object, self.field)
39
- if self.has_next:
40
- has_next = pydash.get(last_object, self.has_next)
34
+ cursor = pydash.get(object_list.pop(), self.field)
41
35
 
42
36
  # If the cursor value isn't found, try to find the value in response.json() using the field value
43
37
  if cursor is None:
@@ -47,14 +41,6 @@ class CursorPaginationStrategy(PaginationStrategy):
47
41
  if cursor is None:
48
42
  return None
49
43
 
50
- if self.has_next and has_next is None:
51
- has_next = pydash.get(response.json(), self.has_next)
52
-
53
- if self.has_next:
54
- logger.debug(f"The {self.has_next} field has a value of {has_next}")
55
- if str(has_next).lower() != "true":
56
- return None
57
-
58
44
  # add or replace cursor_param with new cursor value
59
45
  request_params.query_params[self.cursor_param] = cursor
60
46
 
@@ -43,7 +43,7 @@ class LinkPaginationStrategy(PaginationStrategy):
43
43
 
44
44
  if self.has_next:
45
45
  has_next = pydash.get(response.json(), self.has_next)
46
- logger.debug(f"The {self.has_next} field has a value of {has_next}")
46
+ logger.info(f"The {self.has_next} field has a value of {has_next}")
47
47
  if str(has_next).lower() != "true":
48
48
  return None
49
49
 
@@ -1,10 +1,11 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import json
4
+ import os
4
5
  import secrets
5
6
  import zipfile
6
7
  from io import BytesIO
7
- from typing import TYPE_CHECKING, Any, Dict, Optional, Union
8
+ from typing import Any, Dict, Optional, Union
8
9
 
9
10
  import pandas as pd
10
11
  from botocore.exceptions import ClientError, ParamValidationError
@@ -12,18 +13,11 @@ from fideslang.validation import AnyHttpUrlString
12
13
  from loguru import logger
13
14
 
14
15
  from fides.api.cryptography.cryptographic_util import bytes_to_b64_str
16
+ from fides.api.models.privacy_request import PrivacyRequest
15
17
  from fides.api.schemas.storage.storage import ResponseFormat, StorageSecrets
16
18
  from fides.api.service.privacy_request.dsr_package.dsr_report_builder import (
17
19
  DsrReportBuilder,
18
20
  )
19
- from fides.api.service.storage.s3 import (
20
- create_presigned_url_for_s3,
21
- generic_upload_to_s3,
22
- )
23
- from fides.api.service.storage.util import (
24
- LOCAL_FIDES_UPLOAD_DIRECTORY,
25
- get_local_filename,
26
- )
27
21
  from fides.api.util.aws_util import get_s3_client
28
22
  from fides.api.util.cache import get_cache, get_encryption_cache_key
29
23
  from fides.api.util.encryption.aes_gcm_encryption_scheme import (
@@ -32,8 +26,7 @@ from fides.api.util.encryption.aes_gcm_encryption_scheme import (
32
26
  from fides.api.util.storage_util import storage_json_encoder
33
27
  from fides.config import CONFIG
34
28
 
35
- if TYPE_CHECKING:
36
- from fides.api.models.privacy_request import PrivacyRequest
29
+ LOCAL_FIDES_UPLOAD_DIRECTORY = "fides_uploads"
37
30
 
38
31
 
39
32
  def encrypt_access_request_results(data: Union[str, bytes], request_id: str) -> str:
@@ -108,6 +101,105 @@ def write_to_in_memory_buffer(
108
101
  raise NotImplementedError(f"No handling for response format {resp_format}.")
109
102
 
110
103
 
104
+ def create_presigned_url_for_s3(
105
+ s3_client: Any, bucket_name: str, file_key: str
106
+ ) -> AnyHttpUrlString:
107
+ """ "Generate a presigned URL to share an S3 object
108
+
109
+ :param s3_client: s3 base client
110
+ :param bucket_name: string
111
+ :param file_key: string
112
+ :return: Presigned URL as string.
113
+ """
114
+ response = s3_client.generate_presigned_url(
115
+ "get_object",
116
+ Params={"Bucket": bucket_name, "Key": file_key},
117
+ ExpiresIn=CONFIG.security.subject_request_download_link_ttl_seconds,
118
+ )
119
+
120
+ # The response contains the presigned URL
121
+ return response
122
+
123
+
124
+ def generic_upload_to_s3( # pylint: disable=R0913
125
+ storage_secrets: Dict[StorageSecrets, Any],
126
+ bucket_name: str,
127
+ file_key: str,
128
+ auth_method: str,
129
+ document: bytes,
130
+ ) -> Optional[AnyHttpUrlString]:
131
+ """Uploads arbitrary data to s3 returned from an access request"""
132
+ logger.info("Starting S3 Upload of {}", file_key)
133
+
134
+ try:
135
+ s3_client = get_s3_client(auth_method, storage_secrets)
136
+ try:
137
+ s3_client.put_object(Bucket=bucket_name, Key=file_key, Body=document)
138
+ except Exception as e:
139
+ logger.error("Encountered error while uploading s3 object: {}", e)
140
+ raise e
141
+
142
+ presigned_url: AnyHttpUrlString = create_presigned_url_for_s3(
143
+ s3_client, bucket_name, file_key
144
+ )
145
+
146
+ return presigned_url
147
+ except ClientError as e:
148
+ logger.error(
149
+ "Encountered error while uploading and generating link for s3 object: {}", e
150
+ )
151
+ raise e
152
+ except ParamValidationError as e:
153
+ raise ValueError(f"The parameters you provided are incorrect: {e}")
154
+
155
+
156
+ def generic_retrieve_from_s3(
157
+ storage_secrets: Dict[StorageSecrets, Any],
158
+ bucket_name: str,
159
+ file_key: str,
160
+ auth_method: str,
161
+ ) -> Optional[bytes]:
162
+ """Retrieves arbitrary data from s3"""
163
+ logger.info("Starting S3 Retrieve of {}", file_key)
164
+
165
+ try:
166
+ s3_client = get_s3_client(auth_method, storage_secrets)
167
+ try:
168
+ response = s3_client.get_object(Bucket=bucket_name, Key=file_key)
169
+ return response["Body"].read()
170
+ except Exception as e:
171
+ logger.error("Encountered error while retrieving s3 object: {}", e)
172
+ raise e
173
+ except ClientError as e:
174
+ logger.error("Encountered error while retrieving s3 object: {}", e)
175
+ raise e
176
+ except ParamValidationError as e:
177
+ raise ValueError(f"The parameters you provided are incorrect: {e}")
178
+
179
+
180
+ def generic_delete_from_s3(
181
+ storage_secrets: Dict[StorageSecrets, Any],
182
+ bucket_name: str,
183
+ file_key: str,
184
+ auth_method: str,
185
+ ) -> None:
186
+ """Deletes arbitrary data from s3"""
187
+ logger.info("Starting S3 Delete of {}", file_key)
188
+
189
+ try:
190
+ s3_client = get_s3_client(auth_method, storage_secrets)
191
+ try:
192
+ s3_client.delete_object(Bucket=bucket_name, Key=file_key)
193
+ except Exception as e:
194
+ logger.error("Encountered error while deleting s3 object: {}", e)
195
+ raise e
196
+ except ClientError as e:
197
+ logger.error("Encountered error while deleting s3 object: {}", e)
198
+ raise e
199
+ except ParamValidationError as e:
200
+ raise ValueError(f"The parameters you provided are incorrect: {e}")
201
+
202
+
111
203
  def upload_to_s3( # pylint: disable=R0913
112
204
  storage_secrets: Dict[StorageSecrets, Any],
113
205
  data: Dict,
@@ -115,7 +207,7 @@ def upload_to_s3( # pylint: disable=R0913
115
207
  file_key: str,
116
208
  resp_format: str,
117
209
  privacy_request: Optional[PrivacyRequest],
118
- document: Optional[BytesIO],
210
+ document: Optional[bytes],
119
211
  auth_method: str,
120
212
  ) -> Optional[AnyHttpUrlString]:
121
213
  """Uploads arbitrary data to s3 returned from an access request"""
@@ -157,6 +249,13 @@ def upload_to_s3( # pylint: disable=R0913
157
249
  raise ValueError(f"The parameters you provided are incorrect: {e}")
158
250
 
159
251
 
252
+ def get_local_filename(file_key: str) -> str:
253
+ """Verifies that the local storage directory exists"""
254
+ if not os.path.exists(LOCAL_FIDES_UPLOAD_DIRECTORY):
255
+ os.makedirs(LOCAL_FIDES_UPLOAD_DIRECTORY)
256
+ return f"{LOCAL_FIDES_UPLOAD_DIRECTORY}/{file_key}"
257
+
258
+
160
259
  def upload_to_local(
161
260
  data: Dict,
162
261
  file_key: str,
fides/config/__init__.py CHANGED
@@ -133,7 +133,7 @@ def censor_config(config: Union[FidesConfig, Dict[str, Any]]) -> Dict[str, Any]:
133
133
  data = as_dict[key]
134
134
  filtered[key] = {}
135
135
  for field in value:
136
- if data and field in data:
136
+ if field in data:
137
137
  filtered[key][field] = data[field]
138
138
 
139
139
  return filtered
@@ -45,8 +45,6 @@ languages:
45
45
  name: Italian
46
46
  - id: ja
47
47
  name: Japanese
48
- - id: ko
49
- name: Korean
50
48
  - id: lt
51
49
  name: Lithuanian
52
50
  - id: lv