ethyca-fides 2.67.2b2__py2.py3-none-any.whl → 2.67.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.
- {ethyca_fides-2.67.2b2.dist-info → ethyca_fides-2.67.2rc0.dist-info}/METADATA +2 -2
- {ethyca_fides-2.67.2b2.dist-info → ethyca_fides-2.67.2rc0.dist-info}/RECORD +107 -107
- fides/_version.py +3 -3
- fides/api/db/crud.py +41 -24
- fides/api/graph/traversal.py +1 -1
- fides/api/main.py +1 -2
- fides/api/models/detection_discovery/core.py +20 -33
- fides/api/models/manual_task/manual_task.py +6 -3
- fides/api/models/privacy_request/privacy_request.py +0 -78
- fides/api/service/privacy_request/dsr_package/dsr_report_builder.py +19 -3
- fides/api/task/create_request_tasks.py +3 -5
- fides/api/task/filter_results.py +1 -1
- fides/api/task/manual/manual_task_address.py +2 -4
- fides/api/task/manual/manual_task_graph_task.py +83 -87
- fides/api/task/manual/manual_task_utils.py +201 -84
- fides/api/tasks/storage.py +0 -3
- fides/api/util/aws_util.py +13 -1
- fides/api/util/storage_util.py +0 -19
- fides/ui-build/static/admin/404.html +1 -1
- fides/ui-build/static/admin/_next/static/{gqCWjlCr8J6bJ_5t4lTGZ → Y7C7V1jdXK7rWXDIdtD13}/_buildManifest.js +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/{[id]-330475705adbd36f.js → [id]-e0a755c69081fffa.js} +1 -1
- fides/ui-build/static/admin/add-systems/manual.html +1 -1
- fides/ui-build/static/admin/add-systems/multiple.html +1 -1
- fides/ui-build/static/admin/add-systems.html +1 -1
- fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
- fides/ui-build/static/admin/consent/configure.html +1 -1
- fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
- fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
- fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
- fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
- fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
- fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
- fides/ui-build/static/admin/consent/properties.html +1 -1
- fides/ui-build/static/admin/consent/reporting.html +1 -1
- fides/ui-build/static/admin/consent.html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
- fides/ui-build/static/admin/data-catalog.html +1 -1
- fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +1 -1
- fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +1 -1
- fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
- fides/ui-build/static/admin/data-discovery/activity.html +1 -1
- fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
- fides/ui-build/static/admin/data-discovery/detection.html +1 -1
- fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
- fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
- fides/ui-build/static/admin/datamap.html +1 -1
- fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
- fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
- fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
- fides/ui-build/static/admin/dataset/new.html +1 -1
- fides/ui-build/static/admin/dataset.html +1 -1
- fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
- fides/ui-build/static/admin/datastore-connection/new.html +1 -1
- fides/ui-build/static/admin/datastore-connection.html +1 -1
- fides/ui-build/static/admin/index.html +1 -1
- fides/ui-build/static/admin/integrations/[id].html +1 -1
- fides/ui-build/static/admin/integrations.html +1 -1
- fides/ui-build/static/admin/lib/fides-preview.js +1 -1
- fides/ui-build/static/admin/login/[provider].html +1 -1
- fides/ui-build/static/admin/login.html +1 -1
- fides/ui-build/static/admin/messaging/[id].html +1 -1
- fides/ui-build/static/admin/messaging/add-template.html +1 -1
- fides/ui-build/static/admin/messaging.html +1 -1
- fides/ui-build/static/admin/poc/ant-components.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/AntForm.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/FormikAntFormItem.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/FormikControlled.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/FormikField.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/FormikSpreadField.html +1 -1
- fides/ui-build/static/admin/poc/forms.html +1 -1
- fides/ui-build/static/admin/poc/table-migration.html +1 -1
- fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
- fides/ui-build/static/admin/privacy-requests/configure/messaging.html +1 -1
- fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
- fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
- fides/ui-build/static/admin/privacy-requests.html +1 -1
- fides/ui-build/static/admin/properties/[id].html +1 -1
- fides/ui-build/static/admin/properties/add-property.html +1 -1
- fides/ui-build/static/admin/properties.html +1 -1
- fides/ui-build/static/admin/reporting/datamap.html +1 -1
- fides/ui-build/static/admin/settings/about/alpha.html +1 -1
- fides/ui-build/static/admin/settings/about.html +1 -1
- fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +1 -1
- fides/ui-build/static/admin/settings/consent.html +1 -1
- fides/ui-build/static/admin/settings/custom-fields.html +1 -1
- fides/ui-build/static/admin/settings/domain-records.html +1 -1
- fides/ui-build/static/admin/settings/domains.html +1 -1
- fides/ui-build/static/admin/settings/email-templates.html +1 -1
- fides/ui-build/static/admin/settings/locations.html +1 -1
- fides/ui-build/static/admin/settings/organization.html +1 -1
- fides/ui-build/static/admin/settings/regulations.html +1 -1
- fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
- fides/ui-build/static/admin/systems/configure/[id].html +1 -1
- fides/ui-build/static/admin/systems.html +1 -1
- fides/ui-build/static/admin/taxonomy.html +1 -1
- fides/ui-build/static/admin/user-management/new.html +1 -1
- fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
- fides/ui-build/static/admin/user-management.html +1 -1
- {ethyca_fides-2.67.2b2.dist-info → ethyca_fides-2.67.2rc0.dist-info}/WHEEL +0 -0
- {ethyca_fides-2.67.2b2.dist-info → ethyca_fides-2.67.2rc0.dist-info}/entry_points.txt +0 -0
- {ethyca_fides-2.67.2b2.dist-info → ethyca_fides-2.67.2rc0.dist-info}/licenses/LICENSE +0 -0
- {ethyca_fides-2.67.2b2.dist-info → ethyca_fides-2.67.2rc0.dist-info}/top_level.txt +0 -0
- /fides/ui-build/static/admin/_next/static/{gqCWjlCr8J6bJ_5t4lTGZ → Y7C7V1jdXK7rWXDIdtD13}/_ssgManifest.js +0 -0
|
@@ -1,43 +1,40 @@
|
|
|
1
|
-
from typing import Optional
|
|
2
|
-
|
|
3
|
-
from loguru import logger
|
|
4
1
|
from sqlalchemy.orm import Session
|
|
5
2
|
|
|
6
3
|
from fides.api.graph.config import (
|
|
7
4
|
Collection,
|
|
8
5
|
CollectionAddress,
|
|
9
|
-
|
|
6
|
+
Field,
|
|
10
7
|
GraphDataset,
|
|
11
8
|
ScalarField,
|
|
12
9
|
)
|
|
10
|
+
from fides.api.graph.graph import Node
|
|
11
|
+
from fides.api.graph.traversal import TraversalNode
|
|
13
12
|
from fides.api.models.connectionconfig import ConnectionConfig
|
|
14
13
|
|
|
15
14
|
# Import application models
|
|
16
15
|
from fides.api.models.manual_task import (
|
|
17
16
|
ManualTask,
|
|
18
|
-
|
|
17
|
+
ManualTaskConfig,
|
|
19
18
|
ManualTaskConfigurationType,
|
|
19
|
+
ManualTaskEntityType,
|
|
20
|
+
ManualTaskInstance,
|
|
20
21
|
)
|
|
22
|
+
from fides.api.models.privacy_request import PrivacyRequest
|
|
23
|
+
from fides.api.schemas.policy import ActionType
|
|
21
24
|
from fides.api.task.manual.manual_task_address import ManualTaskAddress
|
|
22
25
|
|
|
23
|
-
PRIVACY_REQUEST_CONFIG_TYPES = {
|
|
24
|
-
ManualTaskConfigurationType.access_privacy_request,
|
|
25
|
-
ManualTaskConfigurationType.erasure_privacy_request,
|
|
26
|
-
}
|
|
27
|
-
|
|
28
26
|
|
|
29
27
|
def get_connection_configs_with_manual_tasks(db: Session) -> list[ConnectionConfig]:
|
|
30
28
|
"""
|
|
31
29
|
Get all connection configs that have manual tasks.
|
|
32
30
|
"""
|
|
33
|
-
|
|
31
|
+
return (
|
|
34
32
|
db.query(ConnectionConfig)
|
|
35
33
|
.join(ManualTask, ConnectionConfig.id == ManualTask.parent_entity_id)
|
|
36
34
|
.filter(ManualTask.parent_entity_type == "connection_config")
|
|
37
35
|
.filter(ConnectionConfig.disabled.is_(False))
|
|
38
36
|
.all()
|
|
39
37
|
)
|
|
40
|
-
return connection_configs
|
|
41
38
|
|
|
42
39
|
|
|
43
40
|
def get_manual_task_addresses(db: Session) -> list[CollectionAddress]:
|
|
@@ -51,11 +48,12 @@ def get_manual_task_addresses(db: Session) -> list[CollectionAddress]:
|
|
|
51
48
|
# Get all connection configs that have manual tasks (excluding disabled ones)
|
|
52
49
|
connection_configs_with_manual_tasks = get_connection_configs_with_manual_tasks(db)
|
|
53
50
|
|
|
54
|
-
#
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
51
|
+
# Create addresses for all connections that have manual tasks
|
|
52
|
+
manual_task_addresses = []
|
|
53
|
+
for config in connection_configs_with_manual_tasks:
|
|
54
|
+
manual_task_addresses.append(ManualTaskAddress.create(config.key))
|
|
55
|
+
|
|
56
|
+
return manual_task_addresses
|
|
59
57
|
|
|
60
58
|
|
|
61
59
|
def get_manual_task_for_connection_config(
|
|
@@ -75,18 +73,20 @@ def get_manual_task_for_connection_config(
|
|
|
75
73
|
)
|
|
76
74
|
|
|
77
75
|
|
|
78
|
-
def
|
|
76
|
+
def create_manual_data_traversal_node(
|
|
77
|
+
db: Session, address: CollectionAddress
|
|
78
|
+
) -> "TraversalNode":
|
|
79
79
|
"""
|
|
80
|
-
Create
|
|
80
|
+
Create a TraversalNode for a manual_data collection
|
|
81
81
|
"""
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
]
|
|
89
|
-
for config in
|
|
82
|
+
connection_key = address.dataset
|
|
83
|
+
|
|
84
|
+
# Get manual tasks for this connection to determine fields
|
|
85
|
+
manual_task = get_manual_task_for_connection_config(db, connection_key)
|
|
86
|
+
|
|
87
|
+
# Create fields based on ManualTaskConfigFields
|
|
88
|
+
fields: list[Field] = []
|
|
89
|
+
for config in manual_task.configs:
|
|
90
90
|
for field in config.field_definitions:
|
|
91
91
|
# Create a scalar field for each manual task field
|
|
92
92
|
# Extract data categories from field metadata if available
|
|
@@ -99,94 +99,211 @@ def create_data_category_scalar_fields(manual_task: ManualTask) -> list[ScalarFi
|
|
|
99
99
|
# Manual task fields don't have complex relationships
|
|
100
100
|
)
|
|
101
101
|
fields.append(scalar_field)
|
|
102
|
-
return fields
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
def create_conditional_dependency_scalar_fields(
|
|
106
|
-
field_addresses: set[str],
|
|
107
|
-
) -> list[ScalarField]:
|
|
108
|
-
fields: list[ScalarField] = []
|
|
109
|
-
for field_address in field_addresses:
|
|
110
|
-
# Use the full field address as the field name to preserve collection context
|
|
111
|
-
# This allows the manual task to receive data from specific collections
|
|
112
|
-
# e.g., "user.name" or "customer.profile.email" instead of just "name" or "email"
|
|
113
|
-
logger.info(
|
|
114
|
-
f"Creating conditional dependency scalar field for field address: {field_address}"
|
|
115
|
-
)
|
|
116
|
-
field_address_obj = FieldAddress.from_string(field_address)
|
|
117
102
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
)
|
|
124
|
-
|
|
103
|
+
# Create a synthetic Collection
|
|
104
|
+
collection = Collection(
|
|
105
|
+
name=ManualTaskAddress.MANUAL_DATA_COLLECTION,
|
|
106
|
+
fields=fields,
|
|
107
|
+
# Manual tasks don't have complex dependencies
|
|
108
|
+
after=set(),
|
|
109
|
+
)
|
|
125
110
|
|
|
126
|
-
|
|
111
|
+
# Create a synthetic GraphDataset
|
|
112
|
+
dataset = GraphDataset(
|
|
113
|
+
name=connection_key,
|
|
114
|
+
collections=[collection],
|
|
115
|
+
connection_key=connection_key,
|
|
116
|
+
after=set(),
|
|
117
|
+
)
|
|
127
118
|
|
|
119
|
+
node = Node(dataset, collection)
|
|
120
|
+
traversal_node = TraversalNode(node)
|
|
128
121
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
122
|
+
return traversal_node
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
def create_manual_task_instances_for_privacy_request(
|
|
126
|
+
db: Session, privacy_request: PrivacyRequest
|
|
127
|
+
) -> list[ManualTaskInstance]:
|
|
128
|
+
"""Create ManualTaskInstance entries for all active manual tasks relevant to a privacy request."""
|
|
129
|
+
instances = []
|
|
130
|
+
|
|
131
|
+
# Get all connection configs that have manual tasks (excluding disabled ones)
|
|
132
|
+
connection_configs_with_manual_tasks = get_connection_configs_with_manual_tasks(db)
|
|
134
133
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
for dependency in manual_task.conditional_dependencies
|
|
142
|
-
if dependency.condition_type == ManualTaskConditionalDependencyType.leaf
|
|
143
|
-
and dependency.field_address is not None
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
# Create scalar fields for data category fields and conditional dependency field addresses
|
|
147
|
-
fields: list[ScalarField] = []
|
|
148
|
-
fields.extend(create_data_category_scalar_fields(manual_task))
|
|
149
|
-
fields.extend(
|
|
150
|
-
create_conditional_dependency_scalar_fields(conditional_field_addresses)
|
|
134
|
+
# Determine the privacy request type based on policy rules
|
|
135
|
+
has_access_rules = bool(
|
|
136
|
+
privacy_request.policy.get_rules_for_action(action_type=ActionType.access)
|
|
137
|
+
)
|
|
138
|
+
has_erasure_rules = bool(
|
|
139
|
+
privacy_request.policy.get_rules_for_action(action_type=ActionType.erasure)
|
|
151
140
|
)
|
|
152
141
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
142
|
+
for connection_config in connection_configs_with_manual_tasks:
|
|
143
|
+
manual_tasks = (
|
|
144
|
+
db.query(ManualTask)
|
|
145
|
+
.filter(
|
|
146
|
+
ManualTask.parent_entity_id == connection_config.id,
|
|
147
|
+
ManualTask.parent_entity_type == "connection_config",
|
|
148
|
+
)
|
|
149
|
+
.all()
|
|
150
|
+
)
|
|
156
151
|
|
|
157
|
-
|
|
152
|
+
for manual_task in manual_tasks:
|
|
153
|
+
# Get the active config for this manual task, filtered by request type
|
|
154
|
+
active_config_query = db.query(ManualTaskConfig).filter(
|
|
155
|
+
ManualTaskConfig.task_id == manual_task.id,
|
|
156
|
+
ManualTaskConfig.is_current.is_(True),
|
|
157
|
+
)
|
|
158
|
+
|
|
159
|
+
# Filter by configuration type based on privacy request type
|
|
160
|
+
if has_access_rules and has_erasure_rules:
|
|
161
|
+
# If both access and erasure rules exist, include both types
|
|
162
|
+
active_config_query = active_config_query.filter(
|
|
163
|
+
ManualTaskConfig.config_type.in_(
|
|
164
|
+
[
|
|
165
|
+
ManualTaskConfigurationType.access_privacy_request,
|
|
166
|
+
ManualTaskConfigurationType.erasure_privacy_request,
|
|
167
|
+
]
|
|
168
|
+
)
|
|
169
|
+
)
|
|
170
|
+
elif has_access_rules:
|
|
171
|
+
# Only access rules - only include access configurations
|
|
172
|
+
active_config_query = active_config_query.filter(
|
|
173
|
+
ManualTaskConfig.config_type
|
|
174
|
+
== ManualTaskConfigurationType.access_privacy_request
|
|
175
|
+
)
|
|
176
|
+
elif has_erasure_rules:
|
|
177
|
+
# Only erasure rules - only include erasure configurations
|
|
178
|
+
active_config_query = active_config_query.filter(
|
|
179
|
+
ManualTaskConfig.config_type
|
|
180
|
+
== ManualTaskConfigurationType.erasure_privacy_request
|
|
181
|
+
)
|
|
182
|
+
else:
|
|
183
|
+
# No relevant rules - skip this manual task
|
|
184
|
+
continue
|
|
185
|
+
|
|
186
|
+
active_configs = active_config_query.all()
|
|
187
|
+
|
|
188
|
+
if not active_configs:
|
|
189
|
+
continue # Skip if no active configs
|
|
190
|
+
|
|
191
|
+
# Create instances for each active config
|
|
192
|
+
for active_config in active_configs:
|
|
193
|
+
# Check if instance already exists for this config
|
|
194
|
+
existing_instance = (
|
|
195
|
+
db.query(ManualTaskInstance)
|
|
196
|
+
.filter(
|
|
197
|
+
ManualTaskInstance.entity_id == privacy_request.id,
|
|
198
|
+
ManualTaskInstance.entity_type == "privacy_request",
|
|
199
|
+
ManualTaskInstance.task_id == manual_task.id,
|
|
200
|
+
ManualTaskInstance.config_id == active_config.id,
|
|
201
|
+
)
|
|
202
|
+
.first()
|
|
203
|
+
)
|
|
204
|
+
|
|
205
|
+
if not existing_instance:
|
|
206
|
+
instance = ManualTaskInstance(
|
|
207
|
+
entity_id=privacy_request.id,
|
|
208
|
+
entity_type=ManualTaskEntityType.privacy_request,
|
|
209
|
+
task_id=manual_task.id,
|
|
210
|
+
config_id=active_config.id,
|
|
211
|
+
)
|
|
212
|
+
db.add(instance)
|
|
213
|
+
instances.append(instance)
|
|
214
|
+
|
|
215
|
+
if instances:
|
|
216
|
+
db.commit()
|
|
217
|
+
|
|
218
|
+
return instances
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
def get_manual_task_instances_for_privacy_request(
|
|
222
|
+
db: Session, privacy_request: PrivacyRequest
|
|
223
|
+
) -> list[ManualTaskInstance]:
|
|
224
|
+
"""Get all manual task instances for a privacy request."""
|
|
225
|
+
return (
|
|
226
|
+
db.query(ManualTaskInstance)
|
|
227
|
+
.filter(
|
|
228
|
+
ManualTaskInstance.entity_id == privacy_request.id,
|
|
229
|
+
ManualTaskInstance.entity_type == "privacy_request",
|
|
230
|
+
)
|
|
231
|
+
.all()
|
|
232
|
+
)
|
|
158
233
|
|
|
159
234
|
|
|
160
|
-
def create_manual_task_artificial_graphs(
|
|
235
|
+
def create_manual_task_artificial_graphs(
|
|
236
|
+
db: Session,
|
|
237
|
+
) -> list:
|
|
161
238
|
"""
|
|
162
239
|
Create artificial GraphDataset objects for manual tasks that can be included
|
|
163
240
|
in the main dataset graph during the dataset configuration phase.
|
|
164
241
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
242
|
+
Manual tasks should be treated as data sources/datasets rather than being
|
|
243
|
+
appended to the traversal graph later.
|
|
244
|
+
|
|
245
|
+
Manual task collections are designed as root nodes that execute immediately when
|
|
246
|
+
the privacy request starts, in parallel with identity processing. They don't depend
|
|
247
|
+
on identity data since they provide manually-entered data rather than consuming it.
|
|
168
248
|
|
|
169
249
|
Args:
|
|
170
250
|
db: Database session
|
|
251
|
+
policy: The policy being executed (optional, for filtering manual task configs)
|
|
171
252
|
|
|
172
253
|
Returns:
|
|
173
|
-
List of GraphDataset objects representing manual tasks as
|
|
254
|
+
List of GraphDataset objects representing manual tasks as root nodes
|
|
174
255
|
"""
|
|
256
|
+
|
|
175
257
|
manual_task_graphs = []
|
|
176
258
|
manual_addresses = get_manual_task_addresses(db)
|
|
177
259
|
|
|
178
260
|
for address in manual_addresses:
|
|
179
261
|
connection_key = address.dataset
|
|
180
262
|
|
|
181
|
-
# Get
|
|
182
|
-
|
|
263
|
+
# Get manual tasks for this connection to determine fields
|
|
264
|
+
manual_task = get_manual_task_for_connection_config(db, connection_key)
|
|
265
|
+
|
|
266
|
+
# Create fields based only on ManualTaskConfigFields
|
|
267
|
+
fields: list = []
|
|
268
|
+
|
|
269
|
+
# Manual task collections act as root nodes - they don't need identity dependencies
|
|
270
|
+
# since they provide manually-entered data rather than consuming identity data.
|
|
271
|
+
current_configs = [
|
|
272
|
+
config for config in manual_task.configs if config.is_current
|
|
273
|
+
]
|
|
274
|
+
for config in current_configs:
|
|
275
|
+
if config.config_type not in [
|
|
276
|
+
ManualTaskConfigurationType.access_privacy_request,
|
|
277
|
+
ManualTaskConfigurationType.erasure_privacy_request,
|
|
278
|
+
]:
|
|
279
|
+
continue
|
|
280
|
+
|
|
281
|
+
for field in config.field_definitions:
|
|
282
|
+
# Create a scalar field for each manual task field
|
|
283
|
+
field_metadata = field.field_metadata or {}
|
|
284
|
+
data_categories = field_metadata.get("data_categories", [])
|
|
285
|
+
|
|
286
|
+
scalar_field = ScalarField(
|
|
287
|
+
name=field.field_key,
|
|
288
|
+
data_categories=data_categories,
|
|
289
|
+
)
|
|
290
|
+
fields.append(scalar_field)
|
|
291
|
+
|
|
292
|
+
if fields: # Only create graph if there are fields
|
|
293
|
+
# Create a synthetic Collection
|
|
294
|
+
collection = Collection(
|
|
295
|
+
name=ManualTaskAddress.MANUAL_DATA_COLLECTION,
|
|
296
|
+
fields=fields,
|
|
297
|
+
# Manual tasks have no dependencies - they're root nodes
|
|
298
|
+
after=set(),
|
|
299
|
+
)
|
|
183
300
|
|
|
184
|
-
|
|
185
|
-
# Create a synthetic GraphDataset with all manual task collections
|
|
301
|
+
# Create a synthetic GraphDataset
|
|
186
302
|
graph_dataset = GraphDataset(
|
|
187
303
|
name=connection_key,
|
|
188
304
|
collections=[collection],
|
|
189
305
|
connection_key=connection_key,
|
|
306
|
+
after=set(),
|
|
190
307
|
)
|
|
191
308
|
|
|
192
309
|
manual_task_graphs.append(graph_dataset)
|
fides/api/tasks/storage.py
CHANGED
|
@@ -122,9 +122,6 @@ def upload_to_s3( # pylint: disable=R0913
|
|
|
122
122
|
s3_client = get_s3_client(
|
|
123
123
|
auth_method,
|
|
124
124
|
storage_secrets,
|
|
125
|
-
assume_role_arn=CONFIG.credentials.get( # pylint: disable=no-member
|
|
126
|
-
"storage", {}
|
|
127
|
-
).get("aws_s3_assume_role_arn"),
|
|
128
125
|
)
|
|
129
126
|
except (ClientError, ParamValidationError) as e:
|
|
130
127
|
logger.error(f"Error getting s3 client: {str(e)}")
|
fides/api/util/aws_util.py
CHANGED
|
@@ -7,6 +7,7 @@ from loguru import logger
|
|
|
7
7
|
|
|
8
8
|
from fides.api.common_exceptions import StorageUploadError
|
|
9
9
|
from fides.api.schemas.storage.storage import AWSAuthMethod, StorageSecrets
|
|
10
|
+
from fides.config import CONFIG
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
def get_aws_session(
|
|
@@ -94,11 +95,22 @@ def get_s3_client(
|
|
|
94
95
|
|
|
95
96
|
If an `assume_role_arn` is provided, the secrets will be used to
|
|
96
97
|
assume that role and return a Session instantiated with that role.
|
|
98
|
+
|
|
99
|
+
If no `assume_role_arn` is provided, and `aws_s3_assume_role_arn` is
|
|
100
|
+
configured in the global `credentials.storage` config, then the secrets
|
|
101
|
+
will be used to assume that role and return a Session instantiated with
|
|
102
|
+
that role.
|
|
97
103
|
"""
|
|
104
|
+
|
|
105
|
+
configured_assume_role_arn = CONFIG.credentials.get( # pylint: disable=no-member
|
|
106
|
+
"storage", {}
|
|
107
|
+
).get( # pylint: disable=no-member
|
|
108
|
+
"aws_s3_assume_role_arn"
|
|
109
|
+
)
|
|
98
110
|
session = get_aws_session(
|
|
99
111
|
auth_method=auth_method,
|
|
100
112
|
storage_secrets=storage_secrets,
|
|
101
|
-
assume_role_arn=assume_role_arn,
|
|
113
|
+
assume_role_arn=assume_role_arn or configured_assume_role_arn,
|
|
102
114
|
)
|
|
103
115
|
|
|
104
116
|
# Configure S3 client to use signature version 4 for KMS compatibility
|
fides/api/util/storage_util.py
CHANGED
|
@@ -14,25 +14,6 @@ from fides.api.schemas.storage.storage_secrets_docs_only import possible_storage
|
|
|
14
14
|
from fides.api.util.custom_json_encoder import CustomJSONEncoder
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
def format_size(size_bytes: float) -> str:
|
|
18
|
-
"""
|
|
19
|
-
Format size in bytes to human readable format.
|
|
20
|
-
|
|
21
|
-
Args:
|
|
22
|
-
size_bytes: Size in bytes
|
|
23
|
-
|
|
24
|
-
Returns:
|
|
25
|
-
Formatted string with appropriate unit (B, KB, MB, GB, TB, PB)
|
|
26
|
-
"""
|
|
27
|
-
units = ["B", "KB", "MB", "GB", "TB"]
|
|
28
|
-
size = float(size_bytes)
|
|
29
|
-
for unit in units:
|
|
30
|
-
if size < 1024.0:
|
|
31
|
-
return f"{size:.1f} {unit}"
|
|
32
|
-
size /= 1024.0
|
|
33
|
-
return f"{size:.1f} PB"
|
|
34
|
-
|
|
35
|
-
|
|
36
17
|
def get_schema_for_secrets(
|
|
37
18
|
storage_type: Union[StorageType, str],
|
|
38
19
|
secrets: possible_storage_secrets,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/d9924caa849931b3.css" as="style"/><link rel="stylesheet" href="/_next/static/css/d9924caa849931b3.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-90e8ec1fc5c6455b.js" defer=""></script><script src="/_next/static/chunks/framework-c92fc3344e6fd165.js" defer=""></script><script src="/_next/static/chunks/main-090643377c8254e6.js" defer=""></script><script src="/_next/static/chunks/pages/_app-750d6bd16c971bb9.js" defer=""></script><script src="/_next/static/chunks/pages/404-2d803dab6a00f353.js" defer=""></script><script src="/_next/static/
|
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/d9924caa849931b3.css" as="style"/><link rel="stylesheet" href="/_next/static/css/d9924caa849931b3.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-90e8ec1fc5c6455b.js" defer=""></script><script src="/_next/static/chunks/framework-c92fc3344e6fd165.js" defer=""></script><script src="/_next/static/chunks/main-090643377c8254e6.js" defer=""></script><script src="/_next/static/chunks/pages/_app-750d6bd16c971bb9.js" defer=""></script><script src="/_next/static/chunks/pages/404-2d803dab6a00f353.js" defer=""></script><script src="/_next/static/Y7C7V1jdXK7rWXDIdtD13/_buildManifest.js" defer=""></script><script src="/_next/static/Y7C7V1jdXK7rWXDIdtD13/_ssgManifest.js" defer=""></script><style>.data-ant-cssinjs-cache-path{content:"";}</style></head><body><div id="__next"><div style="height:100%;display:flex"></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/404","query":{},"buildId":"Y7C7V1jdXK7rWXDIdtD13","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
self.__BUILD_MANIFEST=function(s,e,t,a,c,n,i,d,o,r,p,u,g,f,m,j,b,k,h,y,l,v,I,F,x,_,U,w,q,N,A,S,B,C,z,D,E,L,M,T,P,G,H,J,K,O,Q){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":[I,"static/chunks/pages/index-fbf9b845bb901238.js"],"/404":["static/chunks/pages/404-2d803dab6a00f353.js"],"/_error":["static/chunks/pages/_error-bede3a8288930dcf.js"],"/add-systems":[I,"static/chunks/pages/add-systems-0902f0bb4080643e.js"],"/add-systems/manual":[s,e,t,c,p,a,i,u,b,F,x,"static/chunks/pages/add-systems/manual-2a655ff3a97f2492.js"],"/add-systems/multiple":[i,g,_,"static/chunks/pages/add-systems/multiple-8ff7f37913ad736a.js"],"/consent":["static/chunks/pages/consent-e17c56eec8d91371.js"],"/consent/configure":[i,g,"static/chunks/pages/consent/configure-0e1ca0f4c8e7f4da.js"],"/consent/configure/add-vendors":[i,g,_,"static/chunks/pages/consent/configure/add-vendors-d00c9034cdeb0236.js"],"/consent/privacy-experience":[p,U,"static/chunks/pages/consent/privacy-experience-21f997c69fc3b4c2.js"],"/consent/privacy-experience/new":[s,d,f,m,w,"static/chunks/pages/consent/privacy-experience/new-e74cb5ea87f15b40.js"],"/consent/privacy-experience/[id]":[s,d,f,m,w,"static/chunks/pages/consent/privacy-experience/[id]-f22ddd9b48a5c418.js"],"/consent/privacy-notices":[U,"static/chunks/pages/consent/privacy-notices-ad105181bc91209b.js"],"/consent/privacy-notices/new":[s,d,f,m,q,"static/chunks/pages/consent/privacy-notices/new-a57d251c88ce68ae.js"],"/consent/privacy-notices/[id]":[s,d,f,m,q,"static/chunks/pages/consent/privacy-notices/[id]-da4124b7600a2a1d.js"],"/consent/properties":[N,"static/chunks/pages/consent/properties-057cad65e7414a44.js"],"/consent/reporting":["static/chunks/2150-930ffaf2c4718edc.js","static/chunks/pages/consent/reporting-b0c4235fe6d0b0c8.js"],"/data-catalog":[s,e,t,a,"static/css/95ac327e5d70148d.css","static/chunks/pages/data-catalog-7770a8dc34bd0fc0.js"],"/data-catalog/[systemId]/projects":[s,e,t,a,k,n,"static/chunks/pages/data-catalog/[systemId]/projects-29784a11fe0fbd0a.js"],"/data-catalog/[systemId]/projects/[projectUrn]":[A,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-80a6cc8e8573514a.js"],"/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]":[s,e,t,a,k,S,n,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]-aad6047a4604b945.js"],"/data-catalog/[systemId]/resources":[A,"static/chunks/pages/data-catalog/[systemId]/resources-6c3714ee97a718c1.js"],"/data-catalog/[systemId]/resources/[resourceUrn]":[s,e,t,a,k,S,n,"static/chunks/pages/data-catalog/[systemId]/resources/[resourceUrn]-b6b98cea25dd94fa.js"],"/data-discovery/action-center":[h,"static/chunks/pages/data-discovery/action-center-ee3c0a103346fc06.js"],"/data-discovery/action-center/[monitorId]":[s,e,t,h,B,y,"static/chunks/pages/data-discovery/action-center/[monitorId]-92b0bd97d8e79340.js"],"/data-discovery/action-center/[monitorId]/[systemId]":[s,e,t,i,b,h,B,"static/css/23cf870196941c9a.css","static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-3e5725cd06d7fe6c.js"],"/data-discovery/activity":[r,"static/chunks/pages/data-discovery/activity-ad6a84a6276f914c.js"],"/data-discovery/detection":[r,C,"static/chunks/pages/data-discovery/detection-2822a423a7ad0550.js"],"/data-discovery/detection/[resourceUrn]":[r,C,"static/chunks/pages/data-discovery/detection/[resourceUrn]-31e6c54794a9883e.js"],"/data-discovery/discovery":[s,e,t,a,r,z,n,"static/chunks/pages/data-discovery/discovery-56eb4c014f0d96a3.js"],"/data-discovery/discovery/[resourceUrn]":[s,e,t,a,r,z,n,"static/chunks/pages/data-discovery/discovery/[resourceUrn]-f98dd251babb7e28.js"],"/datamap":[t,"static/chunks/255-1bc0cbef7a59cdc6.js",u,D,"static/chunks/pages/datamap-d23b3ae139f0428b.js"],"/dataset":[o,j,"static/chunks/pages/dataset-f3348d0a92543bab.js"],"/dataset/new":[o,j,"static/chunks/pages/dataset/new-0d50084fbdf9b84c.js"],"/dataset/[datasetId]":["static/chunks/9729-fcf6ff4e3534e4a8.js",l,"static/chunks/pages/dataset/[datasetId]-a8e8b5f4ee7af86c.js"],"/dataset/[datasetId]/[collectionName]":[s,e,t,c,a,l,n,"static/chunks/pages/dataset/[datasetId]/[collectionName]-0fa72873e464f581.js"],"/dataset/[datasetId]/[collectionName]/[...subfieldNames]":[s,e,t,c,a,l,n,"static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-15301bd6bf7cf718.js"],"/datastore-connection":["static/css/5f393dea1c0d031c.css","static/chunks/pages/datastore-connection-3bd77864da523d41.js"],"/datastore-connection/new":[s,c,o,p,E,j,L,"static/chunks/pages/datastore-connection/new-c6614583b14dc9f2.js"],"/datastore-connection/[id]":[s,c,o,E,j,L,"static/chunks/pages/datastore-connection/[id]-7d6027570d05c57f.js"],"/fides-js-docs":["static/chunks/2fbcc6de-a6c61724c327e9fa.js","static/chunks/e3251fe7-5777b5d778e6fffa.js",s,e,t,c,o,"static/chunks/5619-9b50cec521203989.js",M,"static/css/ab65b8cc3144bfc8.css","static/chunks/5596-4378b2927dae65b2.js","static/chunks/pages/fides-js-docs-1f4335dca5c09860.js"],"/integrations":[s,e,t,c,d,T,P,n,"static/chunks/pages/integrations-7f15cd8538cdc24d.js"],"/integrations/[id]":[s,e,t,c,d,T,P,n,"static/chunks/pages/integrations/[id]-330475705adbd36f.js"],"/login":["static/chunks/pages/login-0cb0eb44bf2dd24c.js"],"/login/[provider]":["static/chunks/pages/login/[provider]-c58beef131c3a82d.js"],"/messaging":[s,e,"static/chunks/346-aa3b88efb85f2e28.js","static/chunks/pages/messaging-1bae386d8c190348.js"],"/messaging/add-template":[G,"static/chunks/pages/messaging/add-template-feca66ad5c5fe54a.js"],"/messaging/[id]":[G,"static/chunks/pages/messaging/[id]-5627d0d0668077f9.js"],"/poc/ant-components":["static/chunks/pages/poc/ant-components-64a322d01aae5ca7.js"],"/poc/form-experiments/AntForm":["static/chunks/pages/poc/form-experiments/AntForm-8bca16a7726e7eb2.js"],"/poc/form-experiments/FormikAntFormItem":["static/chunks/pages/poc/form-experiments/FormikAntFormItem-b0f246fc3b67ebf7.js"],"/poc/form-experiments/FormikControlled":["static/chunks/pages/poc/form-experiments/FormikControlled-1a0852b090bfc392.js"],"/poc/form-experiments/FormikField":["static/chunks/pages/poc/form-experiments/FormikField-11f3de1b45e36583.js"],"/poc/form-experiments/FormikSpreadField":[H,"static/chunks/pages/poc/form-experiments/FormikSpreadField-af097d661f6abcf4.js"],"/poc/forms":[H,"static/chunks/pages/poc/forms-1b73a1c2b6c6285f.js"],"/poc/table-migration":[i,g,"static/chunks/pages/poc/table-migration-05616e2ae20ff4f8.js"],"/privacy-requests":[s,"static/chunks/3550-d04125c828d591a1.js",J,"static/chunks/pages/privacy-requests-96a08c4431b5462c.js"],"/privacy-requests/configure":["static/chunks/pages/privacy-requests/configure-e551a860ec727802.js"],"/privacy-requests/configure/messaging":["static/chunks/pages/privacy-requests/configure/messaging-f1d818242d8550f8.js"],"/privacy-requests/configure/storage":["static/chunks/pages/privacy-requests/configure/storage-d40a26bddb126c5c.js"],"/privacy-requests/[id]":[J,"static/css/8bc1833f1fa53ff0.css","static/chunks/pages/privacy-requests/[id]-79f1576b1126975c.js"],"/properties":[N,"static/chunks/pages/properties-e959378bb32b6b73.js"],"/properties/add-property":[K,"static/chunks/pages/properties/add-property-0bdbc1fcbf553b8f.js"],"/properties/[id]":[K,"static/chunks/pages/properties/[id]-dd99183f93763ae4.js"],"/reporting/datamap":[s,e,t,M,u,D,"static/chunks/pages/reporting/datamap-9d1840f8309b706e.js"],"/settings/about":["static/chunks/pages/settings/about-37ba24a72a06862e.js"],"/settings/about/alpha":["static/chunks/pages/settings/about/alpha-1066f0c202ef744c.js"],"/settings/consent":["static/chunks/pages/settings/consent-f61b87e79367865b.js"],"/settings/consent/[configuration_id]/[purpose_id]":["static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-e891d01ece59669e.js"],"/settings/custom-fields":["static/chunks/pages/settings/custom-fields-f8eea5d508c60c64.js"],"/settings/domain-records":["static/chunks/pages/settings/domain-records-51333dbd21cb37c8.js"],"/settings/domains":["static/chunks/pages/settings/domains-bde86e5f6c09da5a.js"],"/settings/email-templates":["static/chunks/pages/settings/email-templates-4f9a5cc8bea7725b.js"],"/settings/locations":[O,y,"static/chunks/pages/settings/locations-ed6a140b362c5baa.js"],"/settings/organization":["static/chunks/pages/settings/organization-ff9a34264d48c35f.js"],"/settings/regulations":[O,y,"static/chunks/pages/settings/regulations-102efd9199e87124.js"],"/systems":["static/chunks/pages/systems-c05b49ddec1a1b4f.js"],"/systems/configure/[id]":[s,e,t,c,p,a,i,u,b,F,x,"static/chunks/pages/systems/configure/[id]-c8f5fbaa83dd9945.js"],"/systems/configure/[id]/test-datasets":[o,"static/chunks/pages/systems/configure/[id]/test-datasets-a4b6d41ca679298b.js"],"/taxonomy":["static/chunks/678d4732-50255cc09048e643.js",s,e,d,"static/chunks/6148-59a59d5c5925344f.js","static/css/34a7eb08b86ddb57.css","static/chunks/pages/taxonomy-df0d88716578e295.js"],"/user-management":[v,"static/chunks/pages/user-management-e98dfc7d4f2a4e16.js"],"/user-management/new":[v,Q,"static/chunks/pages/user-management/new-de8cb3739ab99c09.js"],"/user-management/profile/[id]":[v,Q,"static/chunks/pages/user-management/profile/[id]-da68efc31998dc66.js"],sortedPages:["/","/404","/_app","/_error","/add-systems","/add-systems/manual","/add-systems/multiple","/consent","/consent/configure","/consent/configure/add-vendors","/consent/privacy-experience","/consent/privacy-experience/new","/consent/privacy-experience/[id]","/consent/privacy-notices","/consent/privacy-notices/new","/consent/privacy-notices/[id]","/consent/properties","/consent/reporting","/data-catalog","/data-catalog/[systemId]/projects","/data-catalog/[systemId]/projects/[projectUrn]","/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]","/data-catalog/[systemId]/resources","/data-catalog/[systemId]/resources/[resourceUrn]","/data-discovery/action-center","/data-discovery/action-center/[monitorId]","/data-discovery/action-center/[monitorId]/[systemId]","/data-discovery/activity","/data-discovery/detection","/data-discovery/detection/[resourceUrn]","/data-discovery/discovery","/data-discovery/discovery/[resourceUrn]","/datamap","/dataset","/dataset/new","/dataset/[datasetId]","/dataset/[datasetId]/[collectionName]","/dataset/[datasetId]/[collectionName]/[...subfieldNames]","/datastore-connection","/datastore-connection/new","/datastore-connection/[id]","/fides-js-docs","/integrations","/integrations/[id]","/login","/login/[provider]","/messaging","/messaging/add-template","/messaging/[id]","/poc/ant-components","/poc/form-experiments/AntForm","/poc/form-experiments/FormikAntFormItem","/poc/form-experiments/FormikControlled","/poc/form-experiments/FormikField","/poc/form-experiments/FormikSpreadField","/poc/forms","/poc/table-migration","/privacy-requests","/privacy-requests/configure","/privacy-requests/configure/messaging","/privacy-requests/configure/storage","/privacy-requests/[id]","/properties","/properties/add-property","/properties/[id]","/reporting/datamap","/settings/about","/settings/about/alpha","/settings/consent","/settings/consent/[configuration_id]/[purpose_id]","/settings/custom-fields","/settings/domain-records","/settings/domains","/settings/email-templates","/settings/locations","/settings/organization","/settings/regulations","/systems","/systems/configure/[id]","/systems/configure/[id]/test-datasets","/taxonomy","/user-management","/user-management/new","/user-management/profile/[id]"]}}("static/chunks/8765-f622a35b40a7ec63.js","static/chunks/9278-08cc704317fe535e.js","static/chunks/5163-e682273cd76a7d07.js","static/chunks/409-ea70638a59296659.js","static/chunks/699-8ca44b0de9fa20f0.js","static/css/d2d4e9a6923e6730.css","static/chunks/401-3cc1fee61494e3bd.js","static/chunks/3662-f6a1ddca5ee42076.js","static/chunks/6527-0eed08abe252a918.js","static/chunks/431-1db919f6569a4021.js","static/chunks/5277-e8a036319456127f.js","static/chunks/9951-7c6639e5d062779e.js","static/chunks/3923-13a6b4da2d51bf8f.js","static/chunks/6419-d0c00d661b01f8fa.js","static/chunks/6084-ddbad3149364725d.js","static/chunks/5574-9312f97b637d9ee2.js","static/chunks/6780-b42a27e72707936d.js","static/chunks/6882-59ea739e3616ce83.js","static/chunks/7725-539d3a906f627531.js","static/css/10994e916bc9a00a.css","static/chunks/9226-2dcac54ab3fb94be.js","static/chunks/7476-cc0d9a94ed7aad53.js","static/css/972dc7eef106ee7c.css","static/chunks/3450-69f4e16978971bb8.js","static/css/304c6f148886a8d4.css","static/chunks/796-3bdda2a7868464af.js","static/chunks/6853-d0190d2cca9dbde2.js","static/chunks/1817-b78b58ae3b75d75a.js","static/chunks/6954-ba98e778a5b45ebf.js","static/chunks/79-2aab56be75e16187.js","static/chunks/3872-0a0f0032ca39a93f.js","static/chunks/3855-509ca7ac99b5eada.js","static/chunks/8735-40caf91800a3610c.js","static/chunks/5309-d9a488457898263b.js","static/chunks/9046-7085a401297c5520.js","static/chunks/4230-114e31621c19ea69.js","static/chunks/1467-8808ec8836e033f9.js","static/chunks/4608-f16f281f2d05d963.js","static/chunks/9187-7438242f0d380bb0.js","static/chunks/1316-2606e19807c08aa5.js","static/chunks/6662-ef0edd3598b1d431.js","static/chunks/7630-b1c93688013ef013.js","static/chunks/2921-86f1547ac40a5cdf.js","static/chunks/203-cd78ea279cecba60.js","static/chunks/787-c57185ad89c4e288.js","static/chunks/9826-3c578665c6d3b21d.js","static/chunks/4121-877e19d3fa078c7b.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
|
1
|
+
self.__BUILD_MANIFEST=function(s,e,t,a,c,n,i,d,o,r,p,u,g,f,m,j,b,k,h,y,l,v,I,F,x,_,U,w,q,N,A,S,B,C,z,D,E,L,M,T,P,G,H,J,K,O,Q){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":[I,"static/chunks/pages/index-fbf9b845bb901238.js"],"/404":["static/chunks/pages/404-2d803dab6a00f353.js"],"/_error":["static/chunks/pages/_error-bede3a8288930dcf.js"],"/add-systems":[I,"static/chunks/pages/add-systems-0902f0bb4080643e.js"],"/add-systems/manual":[s,e,t,c,p,a,i,u,b,F,x,"static/chunks/pages/add-systems/manual-2a655ff3a97f2492.js"],"/add-systems/multiple":[i,g,_,"static/chunks/pages/add-systems/multiple-8ff7f37913ad736a.js"],"/consent":["static/chunks/pages/consent-e17c56eec8d91371.js"],"/consent/configure":[i,g,"static/chunks/pages/consent/configure-0e1ca0f4c8e7f4da.js"],"/consent/configure/add-vendors":[i,g,_,"static/chunks/pages/consent/configure/add-vendors-d00c9034cdeb0236.js"],"/consent/privacy-experience":[p,U,"static/chunks/pages/consent/privacy-experience-21f997c69fc3b4c2.js"],"/consent/privacy-experience/new":[s,d,f,m,w,"static/chunks/pages/consent/privacy-experience/new-e74cb5ea87f15b40.js"],"/consent/privacy-experience/[id]":[s,d,f,m,w,"static/chunks/pages/consent/privacy-experience/[id]-f22ddd9b48a5c418.js"],"/consent/privacy-notices":[U,"static/chunks/pages/consent/privacy-notices-ad105181bc91209b.js"],"/consent/privacy-notices/new":[s,d,f,m,q,"static/chunks/pages/consent/privacy-notices/new-a57d251c88ce68ae.js"],"/consent/privacy-notices/[id]":[s,d,f,m,q,"static/chunks/pages/consent/privacy-notices/[id]-da4124b7600a2a1d.js"],"/consent/properties":[N,"static/chunks/pages/consent/properties-057cad65e7414a44.js"],"/consent/reporting":["static/chunks/2150-930ffaf2c4718edc.js","static/chunks/pages/consent/reporting-b0c4235fe6d0b0c8.js"],"/data-catalog":[s,e,t,a,"static/css/95ac327e5d70148d.css","static/chunks/pages/data-catalog-7770a8dc34bd0fc0.js"],"/data-catalog/[systemId]/projects":[s,e,t,a,k,n,"static/chunks/pages/data-catalog/[systemId]/projects-29784a11fe0fbd0a.js"],"/data-catalog/[systemId]/projects/[projectUrn]":[A,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-80a6cc8e8573514a.js"],"/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]":[s,e,t,a,k,S,n,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]-aad6047a4604b945.js"],"/data-catalog/[systemId]/resources":[A,"static/chunks/pages/data-catalog/[systemId]/resources-6c3714ee97a718c1.js"],"/data-catalog/[systemId]/resources/[resourceUrn]":[s,e,t,a,k,S,n,"static/chunks/pages/data-catalog/[systemId]/resources/[resourceUrn]-b6b98cea25dd94fa.js"],"/data-discovery/action-center":[h,"static/chunks/pages/data-discovery/action-center-ee3c0a103346fc06.js"],"/data-discovery/action-center/[monitorId]":[s,e,t,h,B,y,"static/chunks/pages/data-discovery/action-center/[monitorId]-92b0bd97d8e79340.js"],"/data-discovery/action-center/[monitorId]/[systemId]":[s,e,t,i,b,h,B,"static/css/23cf870196941c9a.css","static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-3e5725cd06d7fe6c.js"],"/data-discovery/activity":[r,"static/chunks/pages/data-discovery/activity-ad6a84a6276f914c.js"],"/data-discovery/detection":[r,C,"static/chunks/pages/data-discovery/detection-2822a423a7ad0550.js"],"/data-discovery/detection/[resourceUrn]":[r,C,"static/chunks/pages/data-discovery/detection/[resourceUrn]-31e6c54794a9883e.js"],"/data-discovery/discovery":[s,e,t,a,r,z,n,"static/chunks/pages/data-discovery/discovery-56eb4c014f0d96a3.js"],"/data-discovery/discovery/[resourceUrn]":[s,e,t,a,r,z,n,"static/chunks/pages/data-discovery/discovery/[resourceUrn]-f98dd251babb7e28.js"],"/datamap":[t,"static/chunks/255-1bc0cbef7a59cdc6.js",u,D,"static/chunks/pages/datamap-d23b3ae139f0428b.js"],"/dataset":[o,j,"static/chunks/pages/dataset-f3348d0a92543bab.js"],"/dataset/new":[o,j,"static/chunks/pages/dataset/new-0d50084fbdf9b84c.js"],"/dataset/[datasetId]":["static/chunks/9729-fcf6ff4e3534e4a8.js",l,"static/chunks/pages/dataset/[datasetId]-a8e8b5f4ee7af86c.js"],"/dataset/[datasetId]/[collectionName]":[s,e,t,c,a,l,n,"static/chunks/pages/dataset/[datasetId]/[collectionName]-0fa72873e464f581.js"],"/dataset/[datasetId]/[collectionName]/[...subfieldNames]":[s,e,t,c,a,l,n,"static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-15301bd6bf7cf718.js"],"/datastore-connection":["static/css/5f393dea1c0d031c.css","static/chunks/pages/datastore-connection-3bd77864da523d41.js"],"/datastore-connection/new":[s,c,o,p,E,j,L,"static/chunks/pages/datastore-connection/new-c6614583b14dc9f2.js"],"/datastore-connection/[id]":[s,c,o,E,j,L,"static/chunks/pages/datastore-connection/[id]-7d6027570d05c57f.js"],"/fides-js-docs":["static/chunks/2fbcc6de-a6c61724c327e9fa.js","static/chunks/e3251fe7-5777b5d778e6fffa.js",s,e,t,c,o,"static/chunks/5619-9b50cec521203989.js",M,"static/css/ab65b8cc3144bfc8.css","static/chunks/5596-4378b2927dae65b2.js","static/chunks/pages/fides-js-docs-1f4335dca5c09860.js"],"/integrations":[s,e,t,c,d,T,P,n,"static/chunks/pages/integrations-7f15cd8538cdc24d.js"],"/integrations/[id]":[s,e,t,c,d,T,P,n,"static/chunks/pages/integrations/[id]-e0a755c69081fffa.js"],"/login":["static/chunks/pages/login-0cb0eb44bf2dd24c.js"],"/login/[provider]":["static/chunks/pages/login/[provider]-c58beef131c3a82d.js"],"/messaging":[s,e,"static/chunks/346-aa3b88efb85f2e28.js","static/chunks/pages/messaging-1bae386d8c190348.js"],"/messaging/add-template":[G,"static/chunks/pages/messaging/add-template-feca66ad5c5fe54a.js"],"/messaging/[id]":[G,"static/chunks/pages/messaging/[id]-5627d0d0668077f9.js"],"/poc/ant-components":["static/chunks/pages/poc/ant-components-64a322d01aae5ca7.js"],"/poc/form-experiments/AntForm":["static/chunks/pages/poc/form-experiments/AntForm-8bca16a7726e7eb2.js"],"/poc/form-experiments/FormikAntFormItem":["static/chunks/pages/poc/form-experiments/FormikAntFormItem-b0f246fc3b67ebf7.js"],"/poc/form-experiments/FormikControlled":["static/chunks/pages/poc/form-experiments/FormikControlled-1a0852b090bfc392.js"],"/poc/form-experiments/FormikField":["static/chunks/pages/poc/form-experiments/FormikField-11f3de1b45e36583.js"],"/poc/form-experiments/FormikSpreadField":[H,"static/chunks/pages/poc/form-experiments/FormikSpreadField-af097d661f6abcf4.js"],"/poc/forms":[H,"static/chunks/pages/poc/forms-1b73a1c2b6c6285f.js"],"/poc/table-migration":[i,g,"static/chunks/pages/poc/table-migration-05616e2ae20ff4f8.js"],"/privacy-requests":[s,"static/chunks/3550-d04125c828d591a1.js",J,"static/chunks/pages/privacy-requests-96a08c4431b5462c.js"],"/privacy-requests/configure":["static/chunks/pages/privacy-requests/configure-e551a860ec727802.js"],"/privacy-requests/configure/messaging":["static/chunks/pages/privacy-requests/configure/messaging-f1d818242d8550f8.js"],"/privacy-requests/configure/storage":["static/chunks/pages/privacy-requests/configure/storage-d40a26bddb126c5c.js"],"/privacy-requests/[id]":[J,"static/css/8bc1833f1fa53ff0.css","static/chunks/pages/privacy-requests/[id]-79f1576b1126975c.js"],"/properties":[N,"static/chunks/pages/properties-e959378bb32b6b73.js"],"/properties/add-property":[K,"static/chunks/pages/properties/add-property-0bdbc1fcbf553b8f.js"],"/properties/[id]":[K,"static/chunks/pages/properties/[id]-dd99183f93763ae4.js"],"/reporting/datamap":[s,e,t,M,u,D,"static/chunks/pages/reporting/datamap-9d1840f8309b706e.js"],"/settings/about":["static/chunks/pages/settings/about-37ba24a72a06862e.js"],"/settings/about/alpha":["static/chunks/pages/settings/about/alpha-1066f0c202ef744c.js"],"/settings/consent":["static/chunks/pages/settings/consent-f61b87e79367865b.js"],"/settings/consent/[configuration_id]/[purpose_id]":["static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-e891d01ece59669e.js"],"/settings/custom-fields":["static/chunks/pages/settings/custom-fields-f8eea5d508c60c64.js"],"/settings/domain-records":["static/chunks/pages/settings/domain-records-51333dbd21cb37c8.js"],"/settings/domains":["static/chunks/pages/settings/domains-bde86e5f6c09da5a.js"],"/settings/email-templates":["static/chunks/pages/settings/email-templates-4f9a5cc8bea7725b.js"],"/settings/locations":[O,y,"static/chunks/pages/settings/locations-ed6a140b362c5baa.js"],"/settings/organization":["static/chunks/pages/settings/organization-ff9a34264d48c35f.js"],"/settings/regulations":[O,y,"static/chunks/pages/settings/regulations-102efd9199e87124.js"],"/systems":["static/chunks/pages/systems-c05b49ddec1a1b4f.js"],"/systems/configure/[id]":[s,e,t,c,p,a,i,u,b,F,x,"static/chunks/pages/systems/configure/[id]-c8f5fbaa83dd9945.js"],"/systems/configure/[id]/test-datasets":[o,"static/chunks/pages/systems/configure/[id]/test-datasets-a4b6d41ca679298b.js"],"/taxonomy":["static/chunks/678d4732-50255cc09048e643.js",s,e,d,"static/chunks/6148-59a59d5c5925344f.js","static/css/34a7eb08b86ddb57.css","static/chunks/pages/taxonomy-df0d88716578e295.js"],"/user-management":[v,"static/chunks/pages/user-management-e98dfc7d4f2a4e16.js"],"/user-management/new":[v,Q,"static/chunks/pages/user-management/new-de8cb3739ab99c09.js"],"/user-management/profile/[id]":[v,Q,"static/chunks/pages/user-management/profile/[id]-da68efc31998dc66.js"],sortedPages:["/","/404","/_app","/_error","/add-systems","/add-systems/manual","/add-systems/multiple","/consent","/consent/configure","/consent/configure/add-vendors","/consent/privacy-experience","/consent/privacy-experience/new","/consent/privacy-experience/[id]","/consent/privacy-notices","/consent/privacy-notices/new","/consent/privacy-notices/[id]","/consent/properties","/consent/reporting","/data-catalog","/data-catalog/[systemId]/projects","/data-catalog/[systemId]/projects/[projectUrn]","/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]","/data-catalog/[systemId]/resources","/data-catalog/[systemId]/resources/[resourceUrn]","/data-discovery/action-center","/data-discovery/action-center/[monitorId]","/data-discovery/action-center/[monitorId]/[systemId]","/data-discovery/activity","/data-discovery/detection","/data-discovery/detection/[resourceUrn]","/data-discovery/discovery","/data-discovery/discovery/[resourceUrn]","/datamap","/dataset","/dataset/new","/dataset/[datasetId]","/dataset/[datasetId]/[collectionName]","/dataset/[datasetId]/[collectionName]/[...subfieldNames]","/datastore-connection","/datastore-connection/new","/datastore-connection/[id]","/fides-js-docs","/integrations","/integrations/[id]","/login","/login/[provider]","/messaging","/messaging/add-template","/messaging/[id]","/poc/ant-components","/poc/form-experiments/AntForm","/poc/form-experiments/FormikAntFormItem","/poc/form-experiments/FormikControlled","/poc/form-experiments/FormikField","/poc/form-experiments/FormikSpreadField","/poc/forms","/poc/table-migration","/privacy-requests","/privacy-requests/configure","/privacy-requests/configure/messaging","/privacy-requests/configure/storage","/privacy-requests/[id]","/properties","/properties/add-property","/properties/[id]","/reporting/datamap","/settings/about","/settings/about/alpha","/settings/consent","/settings/consent/[configuration_id]/[purpose_id]","/settings/custom-fields","/settings/domain-records","/settings/domains","/settings/email-templates","/settings/locations","/settings/organization","/settings/regulations","/systems","/systems/configure/[id]","/systems/configure/[id]/test-datasets","/taxonomy","/user-management","/user-management/new","/user-management/profile/[id]"]}}("static/chunks/8765-f622a35b40a7ec63.js","static/chunks/9278-08cc704317fe535e.js","static/chunks/5163-e682273cd76a7d07.js","static/chunks/409-ea70638a59296659.js","static/chunks/699-8ca44b0de9fa20f0.js","static/css/d2d4e9a6923e6730.css","static/chunks/401-3cc1fee61494e3bd.js","static/chunks/3662-f6a1ddca5ee42076.js","static/chunks/6527-0eed08abe252a918.js","static/chunks/431-1db919f6569a4021.js","static/chunks/5277-e8a036319456127f.js","static/chunks/9951-7c6639e5d062779e.js","static/chunks/3923-13a6b4da2d51bf8f.js","static/chunks/6419-d0c00d661b01f8fa.js","static/chunks/6084-ddbad3149364725d.js","static/chunks/5574-9312f97b637d9ee2.js","static/chunks/6780-b42a27e72707936d.js","static/chunks/6882-59ea739e3616ce83.js","static/chunks/7725-539d3a906f627531.js","static/css/10994e916bc9a00a.css","static/chunks/9226-2dcac54ab3fb94be.js","static/chunks/7476-cc0d9a94ed7aad53.js","static/css/972dc7eef106ee7c.css","static/chunks/3450-69f4e16978971bb8.js","static/css/304c6f148886a8d4.css","static/chunks/796-3bdda2a7868464af.js","static/chunks/6853-d0190d2cca9dbde2.js","static/chunks/1817-b78b58ae3b75d75a.js","static/chunks/6954-ba98e778a5b45ebf.js","static/chunks/79-2aab56be75e16187.js","static/chunks/3872-0a0f0032ca39a93f.js","static/chunks/3855-509ca7ac99b5eada.js","static/chunks/8735-40caf91800a3610c.js","static/chunks/5309-d9a488457898263b.js","static/chunks/9046-7085a401297c5520.js","static/chunks/4230-114e31621c19ea69.js","static/chunks/1467-8808ec8836e033f9.js","static/chunks/4608-f16f281f2d05d963.js","static/chunks/9187-7438242f0d380bb0.js","static/chunks/1316-2606e19807c08aa5.js","static/chunks/6662-ef0edd3598b1d431.js","static/chunks/7630-b1c93688013ef013.js","static/chunks/2921-86f1547ac40a5cdf.js","static/chunks/203-cd78ea279cecba60.js","static/chunks/787-c57185ad89c4e288.js","static/chunks/9826-3c578665c6d3b21d.js","static/chunks/4121-877e19d3fa078c7b.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|