ethyca-fides 2.69.3b0__py2.py3-none-any.whl → 2.69.3b2__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.69.3b0.dist-info → ethyca_fides-2.69.3b2.dist-info}/METADATA +1 -1
- {ethyca_fides-2.69.3b0.dist-info → ethyca_fides-2.69.3b2.dist-info}/RECORD +267 -239
- fides/_version.py +3 -3
- fides/api/alembic/migrations/versions/30369bb8ae01_add_webmonitorgroupjob_model.py +67 -0
- fides/api/alembic/migrations/versions/5fa78b1f324d_add_event_audit_table.py +82 -0
- fides/api/alembic/migrations/versions/67d0e389b003_update_consentstatus_enum.py +47 -0
- fides/api/alembic/migrations/versions/b9bfa12c167b_add_not_applicable_to_asset_consentstatus.py +46 -0
- fides/api/alembic/migrations/versions/f36ce1bde293_add_system_groups.py +132 -0
- fides/api/alembic/migrations/versions/fd7571bef683_adds_new_fields_to_messagingconfig_for_.py +31 -0
- fides/api/api/v1/endpoints/messaging_endpoints.py +164 -34
- fides/api/api/v1/endpoints/system.py +140 -55
- fides/api/db/base.py +3 -0
- fides/api/db/seed.py +34 -0
- fides/api/main.py +2 -0
- fides/api/models/asset.py +3 -0
- fides/api/models/detection_discovery/web_monitor.py +61 -0
- fides/api/models/event_audit.py +68 -0
- fides/api/models/messaging.py +30 -10
- fides/api/models/sql_models.py +8 -0
- fides/api/models/system_group.py +85 -0
- fides/api/models/taxonomy.py +16 -4
- fides/api/schemas/application_config.py +4 -1
- fides/api/schemas/messaging/messaging.py +33 -66
- fides/api/schemas/messaging/messaging_secrets_docs_only.py +1 -1
- fides/api/schemas/messaging/shared_schemas.py +102 -0
- fides/api/schemas/saas/saas_config.py +2 -17
- fides/api/schemas/saas/strategy_configuration.py +12 -0
- fides/api/schemas/system.py +8 -0
- fides/api/service/async_dsr/async_dsr_service.py +130 -10
- fides/api/service/async_dsr/async_dsr_strategy.py +5 -0
- fides/api/service/async_dsr/async_dsr_strategy_callback.py +16 -0
- fides/api/service/async_dsr/async_dsr_strategy_factory.py +63 -0
- fides/api/service/async_dsr/async_dsr_strategy_polling.py +94 -0
- fides/api/service/connectors/saas_connector.py +25 -7
- fides/api/service/deps.py +17 -2
- fides/api/service/messaging/message_dispatch_service.py +16 -15
- fides/api/service/messaging/messaging_crud_service.py +5 -9
- fides/api/service/privacy_request/request_runner_service.py +18 -0
- fides/api/service/privacy_request/request_service.py +29 -20
- fides/api/service/strategy.py +6 -3
- fides/api/task/graph_task.py +1 -2
- fides/api/tasks/__init__.py +1 -0
- fides/api/util/filter_utils.py +0 -3
- fides/api/worker/__init__.py +2 -0
- fides/common/api/v1/urn_registry.py +2 -1
- fides/service/event_audit_service.py +115 -0
- fides/service/messaging/aws_ses_service.py +2 -4
- fides/service/system/__init__.py +0 -0
- fides/service/system/system_service.py +138 -0
- fides/service/taxonomy/taxonomy_service.py +49 -3
- fides/ui-build/static/admin/404.html +1 -1
- fides/ui-build/static/admin/_next/static/86A8z6OnbTuDYww0DJkX0/_buildManifest.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/1115-d5a834cdaa717edc.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/155-b5e4370b158e5ee3.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/1817-dc2bba3ca736d39e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/1841-2052c3239f2a0a1a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/1896-49010da5c2705fc5.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/2040-3f9c66c56a05b336.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/2751-58285ccf50a0ba4b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3377-c5e0cc3de1a5ffd1.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3696-fff4f944d7d5ff20.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{3855-ef5194cdb228beb6.js → 3855-8377b3fcbb3d93b0.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/3872-4786ccbe7c6f65b0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/409-e1deab19fc7e6d99.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4230-c55d5531697a715c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4608-2fbc3389681f6924.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4786-8d78ec773d171562.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5185-a219b390ef17ff4b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5309-e994c5195f99b1eb.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5783-c62c79e7be21be73.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6084-29cbe703bffdccfe.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6416-79eee298a5b3f80f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6780-eeb7775eb21d7a12.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{6853-b17673391117c976.js → 6853-91a8641cd2784b54.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/6882-55dbb142f7c40f53.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6954-6dfafd38b02d5852.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7476-3da7a490debad8e2.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7630-22f9c4b25d6aed29.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7725-b2fa93d747d3d85d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7929-4314e317b1717257.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/796-8e4da90ae82dfebb.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/8002-78d78545309b2c1c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/8373-bd50fa53cbcab2aa.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9037-453224ba3ee65b13.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9046-0f92802b0e3382a9.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9226-49dbcdb135bf9793.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9826-f316eb1d61cb90b6.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{9951-a88367a129b724ba.js → 9951-c389c51ca6353035.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{_app-fcdad91f6f66292b.js → _app-c780470042750062.js} +10 -10
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{manual-ace203dfacacbdc4.js → manual-fb9434d926ebf0b3.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-92034daafd2187a0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure-87919c1192e68b1a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-experience-9dda4de5ec580279.js → privacy-experience-ae8a64fffe3f8c66.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-d7d9ff9ed28fa790.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-226efa1dcd41437f.js → properties-c985ea8c1a0e0550.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{reporting-28b192e2c074b0f3.js → reporting-ddf6ba92355f81de.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent-35c0ae9d5b5a940c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-2c29ff7a01198f30.js → [resourceUrn]-6a196c704f1c6dd7.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-06ba907e7d91a724.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-8eb581024bc0172f.js → [resourceUrn]-9cee4e222ebb2b60.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-f99af5669b9ab44c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-db7f1a269d3e7fc2.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-de957913f9b47daa.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-5868591ff1e5f881.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-715064e1c9788e1a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-8f736b078e9842da.js → [resourceUrn]-9ae81f5c245b8a01.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-eb814e3c22807871.js → detection-6537c93c69b597c7.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-6875b7783fcfda2f.js → [resourceUrn]-5db26067d921a94a.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-172dbd7740e212ca.js → discovery-9f6a62614d7eb113.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datamap-aed0e6dafc143b97.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-72b9878ea9b91529.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-f36a46381a6c25d4.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-b653fd60e7db989b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-5bb96c8684a38bbf.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset-639046f6c76bc8bd.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-927b7e476c4b47d0.js → [id]-6bf117315d909ad1.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-cbe100d50df34285.js → new-1e2fa11f22dbc449.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-c55e3e0e19030f3f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/index-d66ea87b457af21e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-0159fbb2e0440709.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{integrations-95402b5001c07ef2.js → integrations-267d2742fffaebe5.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-670b05b03ba11e0a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-482a7256925a6e06.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure-331147598052f25c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-28083bfb2dec7b9f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-e784c05d056b2371.js → [id]-e02dc4b4b385c86f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-0a7a2db148a7561a.js → add-property-74c2a0ff4c992633.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{properties-da734840e4f9d04b.js → properties-7459d56e548925b2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/reporting/{datamap-6903f42a0412bfa6.js → datamap-aed018025b09c045.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/alpha-68eaac2d79133679.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/about-6c4904c157477285.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/{[purpose_id]-9495e2eb506606c7.js → [purpose_id]-7f2c50044806c094.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-e8cab942d09aa358.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-128f952a49a0e8dc.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domain-records-cca3d1a26e1269bb.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-07e1b9937a169e32.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-3bc799dac8423f50.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-2e635dcd11b78224.js → locations-9f36b6c213ae524c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers/[key]-f8887b2b29aed1b9.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers/new-5473558807e94462.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers-1065fbefd449719c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-3e23d92d789fff99.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/privacy-requests-907bfbb71d84646f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-aa1ada4d4ac09759.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-6e15332935f6b538.js → [id]-02b0dde03a1ad159.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems-4a6ef2509e8cedfc.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-16b122b83e57bb8c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management/{new-92f52c43f522a350.js → new-6304dad2c5fab694.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-64452dfae2c5e614.js → [id]-0a8ec3aa2ed59a33.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-9cec020f89544426.js → user-management-4036b023366b7eec.js} +1 -1
- fides/ui-build/static/admin/_next/static/css/018c12b58ee7f861.css +1 -0
- 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-ext-gpp.js +1 -1
- fides/ui-build/static/admin/lib/fides-headless.js +1 -1
- fides/ui-build/static/admin/lib/fides-preview.js +1 -1
- fides/ui-build/static/admin/lib/fides-tcf.js +2 -2
- fides/ui-build/static/admin/lib/fides.js +2 -2
- 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/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/messaging-providers/[key].html +1 -0
- fides/ui-build/static/admin/settings/messaging-providers/new.html +1 -0
- fides/ui-build/static/admin/settings/messaging-providers.html +1 -0
- fides/ui-build/static/admin/settings/organization.html +1 -1
- fides/ui-build/static/admin/settings/privacy-requests.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
- fides/ui-build/static/admin/_next/static/FFd0ddRZhjxA7iBCrjLzA/_buildManifest.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/1099-79646e64f26d62fa.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/1345-5e1c5b66e25c566e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/1817-0ca16d288fad916d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3620-602eb74dc896d556.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3729-c17ac8031a4c4fd1.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3847-f08c58d074858f48.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3872-f78dec02f0d959ae.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4164-355644b916ae0094.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4608-be8cba73f5d7c326.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4786-61154adf88e448e1.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4808-dd4157aa72648068.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4831-fd99c0b3784de128.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4844-46324c3d848b8b6a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5258-e880b606a2293803.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5487-02d00bad7c6830e0.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/549-38ea1d91ee2addaa.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6084-c153669d5567e242.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6954-5296188c19d7d0ac.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7476-45c5088baa8b66af.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7630-7ed6c6117775dffe.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/787-a8c7eab617e2fceb.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/79-65674011d455af4d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/796-9e1ca1a4030707c5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/8002-24af20d679efc04e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9046-712156d461165f56.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9826-dbae8dee941a7fac.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-bd0d82078e67cac3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure-7207ab23bdb36ce8.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-94c13aad1499eea9.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent-3e8bdefe714254ec.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-5f2d7b24804f861f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-30108b00ac769fc3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-3b0bcb9e98fab95c.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-9403d5b239e318d2.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-9a81d42a474e1e48.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-b6ae7adb8ef0b525.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datamap-c7390e046b2e2b7f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-dfd71c1e9c458b89.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-7cdc42ec5493b83d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-e12b11ba15bc3fc1.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-e32fccc4ca520d2b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset-7c59a6abf6ba6207.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-cce20440b177050b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/index-6cd8708106331b8d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-5d40db1ce8810e1d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-0f25a76dd18c5e20.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-ad6ad3e5bd72765d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-6032d82f0fc2893d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure-d83e5bd52a638234.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-baf31c3e4b081046.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/alpha-a82f3df840d5c1b5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/about-d06fb16487705b9d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-93a978443bf299db.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-9ecb803099082bf4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domain-records-16fdd91a81074dd1.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-4cdd6001e7cb9aee.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-1914de830ce5cfc4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-f547f1f33c12faf3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/privacy-requests-2ecc073f41628f62.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-20b1193ed76c56b0.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems-fbc8761ef4d55516.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-4d7827fc9c46b6b8.js +0 -1
- fides/ui-build/static/admin/_next/static/css/650df9c348000a26.css +0 -1
- fides/ui-build/static/admin/privacy-requests/configure/messaging.html +0 -1
- {ethyca_fides-2.69.3b0.dist-info → ethyca_fides-2.69.3b2.dist-info}/WHEEL +0 -0
- {ethyca_fides-2.69.3b0.dist-info → ethyca_fides-2.69.3b2.dist-info}/entry_points.txt +0 -0
- {ethyca_fides-2.69.3b0.dist-info → ethyca_fides-2.69.3b2.dist-info}/licenses/LICENSE +0 -0
- {ethyca_fides-2.69.3b0.dist-info → ethyca_fides-2.69.3b2.dist-info}/top_level.txt +0 -0
- /fides/ui-build/static/admin/_next/static/{FFd0ddRZhjxA7iBCrjLzA → 86A8z6OnbTuDYww0DJkX0}/_ssgManifest.js +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/{2921-52328140bc420d0f.js → 2921-cdc7a13973f4a0ba.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/{3923-bb2417b8dcade7a4.js → 3923-db57401384d1de8f.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/{401-4af0a912e249d30f.js → 401-4e56e924f35317f2.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/{404-471a6b18e712f050.js → 404-e4a1f93a7ce944f0.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-920fb469e0dda1d2.js → multiple-a4f821c4902f2df8.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-406170eaae4329c6.js → add-vendors-96245b63aafc5168.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-f80cf2d3966816fd.js → [id]-4fea66e59bd59de8.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-b378576cba255609.js → [id]-c8038e05f35da8d1.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-2ca1de7b88094ab0.js → new-f3a40101a8f3fd00.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-04cfe2cfba7b7cd8.js → [projectUrn]-965af6c1fd01334e.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{resources-de704de849960f01.js → resources-5afecf141308bfc5.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{[id]-3c6dc2f6e6bae960.js → [id]-4352e55f110556b4.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{add-template-4a6d4023a7791be8.js → add-template-c533120e94e049e3.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/{messaging-76b204c9b98d656f.js → messaging-b14f5f38b2d711a8.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{ant-components-bc0e2adf6e0d3ac7.js → ant-components-31d51e3b9227c8d5.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{AntForm-86ffcc1ad3fa912e.js → AntForm-8794a0d2e7554a05.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikAntFormItem-ec04f595465bdf69.js → FormikAntFormItem-90b31073e478c99c.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikControlled-41d309754ff0c1de.js → FormikControlled-0a6859a0225b7e00.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikField-cab1f78cec7808f9.js → FormikField-eb0552917907fe21.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{forms-eb6058221403b156.js → forms-b2a2a084d8cfe22d.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{table-migration-48500551fd6a7602.js → table-migration-0c944cfa9c6acbff.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-7c02e469d8c5bd74.js → regulations-f0f0ea35d0185ae3.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/{webpack-678e89d68dbcd94f.js → webpack-55e1c55932df2413.js} +0 -0
|
@@ -782,10 +782,28 @@ def run_privacy_request(
|
|
|
782
782
|
privacy_request.property_id,
|
|
783
783
|
privacy_request.id,
|
|
784
784
|
)
|
|
785
|
+
# Add success log for completion email
|
|
786
|
+
privacy_request.add_success_execution_log(
|
|
787
|
+
session,
|
|
788
|
+
connection_key=None,
|
|
789
|
+
dataset_name="Privacy request completion email",
|
|
790
|
+
collection_name=None,
|
|
791
|
+
message="Privacy request completion email sent successfully.",
|
|
792
|
+
action_type=privacy_request.policy.get_action_type(), # type: ignore
|
|
793
|
+
)
|
|
785
794
|
except (
|
|
786
795
|
IdentityNotFoundException,
|
|
787
796
|
MessageDispatchException,
|
|
788
797
|
) as e:
|
|
798
|
+
# Add error log for completion email failure
|
|
799
|
+
privacy_request.add_error_execution_log(
|
|
800
|
+
session,
|
|
801
|
+
connection_key=None,
|
|
802
|
+
dataset_name="Privacy request completion email",
|
|
803
|
+
collection_name=None,
|
|
804
|
+
message=f"Privacy request completion email failed: {str(e)}",
|
|
805
|
+
action_type=privacy_request.policy.get_action_type(), # type: ignore
|
|
806
|
+
)
|
|
789
807
|
privacy_request.error_processing(db=session)
|
|
790
808
|
# If dev mode, log traceback
|
|
791
809
|
_log_exception(e, CONFIG.dev_mode)
|
|
@@ -44,7 +44,12 @@ from fides.config import CONFIG
|
|
|
44
44
|
PRIVACY_REQUEST_STATUS_CHANGE_POLL = "privacy_request_status_change_poll"
|
|
45
45
|
DSR_DATA_REMOVAL = "dsr_data_removal"
|
|
46
46
|
INTERRUPTED_TASK_REQUEUE_POLL = "interrupted_task_requeue_poll"
|
|
47
|
+
REQUEUE_INTERRUPTED_TASKS_LOCK = "requeue_interrupted_tasks_lock"
|
|
47
48
|
ASYNC_TASKS_STATUS_POLLING = "async_tasks_status_polling"
|
|
49
|
+
ASYNC_TASKS_STATUS_POLLING_LOCK = "async_tasks_status_polling_lock"
|
|
50
|
+
ASYNC_TASKS_STATUS_POLLING_LOCK_TIMEOUT = (
|
|
51
|
+
300 # Starting timeout is shorter because the task goes directly to the workers.
|
|
52
|
+
)
|
|
48
53
|
|
|
49
54
|
|
|
50
55
|
def build_required_privacy_request_kwargs(
|
|
@@ -394,9 +399,6 @@ def get_cached_task_id(entity_id: str) -> Optional[str]:
|
|
|
394
399
|
raise
|
|
395
400
|
|
|
396
401
|
|
|
397
|
-
REQUEUE_INTERRUPTED_TASKS_LOCK = "requeue_interrupted_tasks_lock"
|
|
398
|
-
|
|
399
|
-
|
|
400
402
|
def _get_task_ids_from_dsr_queue(
|
|
401
403
|
redis_client: FidesopsRedis, chunk_size: int = 100
|
|
402
404
|
) -> Set[str]:
|
|
@@ -708,22 +710,29 @@ def poll_async_tasks_status(self: DatabaseTask) -> None:
|
|
|
708
710
|
"""
|
|
709
711
|
Poll the status of async tasks that are awaiting processing.
|
|
710
712
|
"""
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
.
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
713
|
+
with redis_lock(
|
|
714
|
+
ASYNC_TASKS_STATUS_POLLING_LOCK,
|
|
715
|
+
ASYNC_TASKS_STATUS_POLLING_LOCK_TIMEOUT,
|
|
716
|
+
) as lock:
|
|
717
|
+
if not lock:
|
|
718
|
+
logger.debug("Async tasks status polling lock not acquired, skipping")
|
|
719
|
+
return
|
|
720
|
+
with self.get_new_session() as db:
|
|
721
|
+
logger.debug("Polling for async tasks status")
|
|
722
|
+
|
|
723
|
+
# Get all tasks that are awaiting processing and are from polling async tasks
|
|
724
|
+
async_tasks = (
|
|
725
|
+
db.query(RequestTask)
|
|
726
|
+
.filter(RequestTask.status == ExecutionLogStatus.awaiting_processing)
|
|
727
|
+
.filter(RequestTask.async_type == AsyncTaskType.polling)
|
|
728
|
+
.all()
|
|
726
729
|
)
|
|
730
|
+
logger.info(f"Found {len(async_tasks)} async tasks awaiting processing")
|
|
731
|
+
|
|
732
|
+
if async_tasks:
|
|
733
|
+
from fides.api.service.async_dsr.async_dsr_service import ( # pylint: disable=cyclic-import
|
|
734
|
+
requeue_polling_request,
|
|
735
|
+
)
|
|
727
736
|
|
|
728
|
-
|
|
729
|
-
|
|
737
|
+
for async_task in async_tasks:
|
|
738
|
+
requeue_polling_request(db, async_task)
|
fides/api/service/strategy.py
CHANGED
|
@@ -41,13 +41,13 @@ class Strategy(ABC, Generic[C]):
|
|
|
41
41
|
"""Abstract base class for strategies"""
|
|
42
42
|
|
|
43
43
|
name: str
|
|
44
|
-
configuration_model: Type[C]
|
|
44
|
+
configuration_model: Optional[Type[C]] = None
|
|
45
45
|
|
|
46
46
|
@classmethod
|
|
47
47
|
def get_strategy(
|
|
48
48
|
cls: Type[T],
|
|
49
49
|
strategy_name: str,
|
|
50
|
-
configuration: Dict[str, Any],
|
|
50
|
+
configuration: Optional[Dict[str, Any]] = None,
|
|
51
51
|
) -> T:
|
|
52
52
|
"""
|
|
53
53
|
Returns the strategy given the name and configuration.
|
|
@@ -64,7 +64,10 @@ class Strategy(ABC, Generic[C]):
|
|
|
64
64
|
f"Strategy '{strategy_name}' does not exist. Valid strategies are [{valid_strategies}]"
|
|
65
65
|
)
|
|
66
66
|
try:
|
|
67
|
-
|
|
67
|
+
if strategy_class.configuration_model:
|
|
68
|
+
strategy_config = strategy_class.configuration_model(**configuration)
|
|
69
|
+
else:
|
|
70
|
+
return strategy_class() # type: ignore
|
|
68
71
|
except ValidationError as e:
|
|
69
72
|
raise FidesopsValidationError(message=str(e))
|
|
70
73
|
return strategy_class(strategy_config) # type: ignore
|
fides/api/task/graph_task.py
CHANGED
|
@@ -116,7 +116,6 @@ def retry(
|
|
|
116
116
|
# Run access or erasure request
|
|
117
117
|
return func(*args, **kwargs)
|
|
118
118
|
except AwaitingAsyncTask as ex:
|
|
119
|
-
traceback.print_exc()
|
|
120
119
|
logger.warning(
|
|
121
120
|
"Request Task {} {} {} awaiting async continuation",
|
|
122
121
|
self.request_task.id if self.request_task.id else None,
|
|
@@ -694,7 +693,7 @@ class GraphTask(ABC): # pylint: disable=too-many-instance-attributes
|
|
|
694
693
|
self.execution_node,
|
|
695
694
|
self.resources.policy,
|
|
696
695
|
self.resources.request,
|
|
697
|
-
self.
|
|
696
|
+
self.request_task,
|
|
698
697
|
formatted_input_data,
|
|
699
698
|
)
|
|
700
699
|
|
fides/api/tasks/__init__.py
CHANGED
|
@@ -19,6 +19,7 @@ from fides.config import CONFIG, FidesConfig
|
|
|
19
19
|
MESSAGING_QUEUE_NAME = "fidesops.messaging"
|
|
20
20
|
PRIVACY_PREFERENCES_QUEUE_NAME = "fides.privacy_preferences" # This queue is used in Fidesplus for saving privacy preferences and notices served
|
|
21
21
|
DSR_QUEUE_NAME = "fides.dsr" # This queue is used for running data subject requests
|
|
22
|
+
CONSENT_WEBHOOK_QUEUE_NAME = "fidesplus.consent_webhooks" # This queue is used for processing consent webhooks from 3rd-party APIs
|
|
22
23
|
DISCOVERY_MONITORS_DETECTION_QUEUE_NAME = "fidesplus.discovery_monitors_detection" # This queue is used for running discovery monitors detection tasks
|
|
23
24
|
DISCOVERY_MONITORS_CLASSIFICATION_QUEUE_NAME = "fidesplus.discovery_monitors_classification" # This queue is used for running discovery monitors classification tasks
|
|
24
25
|
DISCOVERY_MONITORS_PROMOTION_QUEUE_NAME = "fidesplus.discovery_monitors_promotion" # This queue is used for running discovery monitors promotion tasks
|
fides/api/util/filter_utils.py
CHANGED
|
@@ -12,9 +12,6 @@ class MissingTaxonomyField(ValueError):
|
|
|
12
12
|
pass
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
# FIXME: this code is basically the same as the one in filter_datamap_query
|
|
16
|
-
# in the fidesplus repo, but slightly more generic. Ideally we want to replace that with using this
|
|
17
|
-
# so we don't duplicate this logic in two different places
|
|
18
15
|
def apply_filters_to_query(
|
|
19
16
|
query: Select,
|
|
20
17
|
filter_params: FilterParams,
|
fides/api/worker/__init__.py
CHANGED
|
@@ -8,6 +8,7 @@ from loguru import logger
|
|
|
8
8
|
from fides.api.db.base import Base # type: ignore
|
|
9
9
|
from fides.api.service.saas_request.override_implementations import *
|
|
10
10
|
from fides.api.tasks import (
|
|
11
|
+
CONSENT_WEBHOOK_QUEUE_NAME,
|
|
11
12
|
DISCOVERY_MONITORS_CLASSIFICATION_QUEUE_NAME,
|
|
12
13
|
DISCOVERY_MONITORS_DETECTION_QUEUE_NAME,
|
|
13
14
|
DISCOVERY_MONITORS_PROMOTION_QUEUE_NAME,
|
|
@@ -39,6 +40,7 @@ def start_worker(
|
|
|
39
40
|
MESSAGING_QUEUE_NAME,
|
|
40
41
|
PRIVACY_PREFERENCES_QUEUE_NAME,
|
|
41
42
|
DSR_QUEUE_NAME,
|
|
43
|
+
CONSENT_WEBHOOK_QUEUE_NAME,
|
|
42
44
|
DISCOVERY_MONITORS_DETECTION_QUEUE_NAME,
|
|
43
45
|
DISCOVERY_MONITORS_CLASSIFICATION_QUEUE_NAME,
|
|
44
46
|
DISCOVERY_MONITORS_PROMOTION_QUEUE_NAME,
|
|
@@ -66,7 +66,8 @@ MESSAGING_ACTIVE_DEFAULT = "/messaging/default/active"
|
|
|
66
66
|
MESSAGING_STATUS = "/messaging/default/status"
|
|
67
67
|
MESSAGING_DEFAULT_SECRETS = "/messaging/default/{service_type}/secret"
|
|
68
68
|
MESSAGING_DEFAULT_BY_TYPE = "/messaging/default/{service_type}"
|
|
69
|
-
|
|
69
|
+
MESSAGING_TEST_DEPRECATED = "/messaging/config/test" # DEPRECATED
|
|
70
|
+
MESSAGING_TEST = "/messaging/test/{service_type}"
|
|
70
71
|
MESSAGING_EMAIL_INVITE_STATUS = "/messaging/email-invite/status"
|
|
71
72
|
|
|
72
73
|
# Policy URLs
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"""Service for creating and managing event audit records."""
|
|
2
|
+
|
|
3
|
+
from typing import Any, Dict, List, Optional
|
|
4
|
+
|
|
5
|
+
from loguru import logger
|
|
6
|
+
from sqlalchemy.orm import Session
|
|
7
|
+
|
|
8
|
+
from fides.api.models.event_audit import EventAudit, EventAuditStatus, EventAuditType
|
|
9
|
+
from fides.api.request_context import get_user_id
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class EventAuditService:
|
|
13
|
+
"""Service for creating and managing event audit records."""
|
|
14
|
+
|
|
15
|
+
def __init__(self, db: Session):
|
|
16
|
+
self.db = db
|
|
17
|
+
|
|
18
|
+
def create_event_audit(
|
|
19
|
+
self,
|
|
20
|
+
event_type: EventAuditType,
|
|
21
|
+
status: EventAuditStatus,
|
|
22
|
+
*,
|
|
23
|
+
user_id: Optional[str] = None,
|
|
24
|
+
resource_type: Optional[str] = None,
|
|
25
|
+
resource_identifier: Optional[str] = None,
|
|
26
|
+
description: Optional[str] = None,
|
|
27
|
+
event_details: Optional[Dict[str, Any]] = None,
|
|
28
|
+
) -> EventAudit:
|
|
29
|
+
"""Create a new audit event record."""
|
|
30
|
+
|
|
31
|
+
# Uses the passed in user_id or falls back to the authenticated user via get_user_id()
|
|
32
|
+
event_audit = EventAudit.create(
|
|
33
|
+
db=self.db,
|
|
34
|
+
data={
|
|
35
|
+
"event_type": event_type,
|
|
36
|
+
"status": status,
|
|
37
|
+
"user_id": user_id or get_user_id(),
|
|
38
|
+
"resource_type": resource_type,
|
|
39
|
+
"resource_identifier": resource_identifier,
|
|
40
|
+
"description": description,
|
|
41
|
+
"event_details": event_details,
|
|
42
|
+
},
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
if resource_identifier:
|
|
46
|
+
logger.debug(
|
|
47
|
+
"Created event audit: {} for resource: {} ({})",
|
|
48
|
+
event_type,
|
|
49
|
+
resource_type,
|
|
50
|
+
resource_identifier,
|
|
51
|
+
)
|
|
52
|
+
else:
|
|
53
|
+
logger.debug(
|
|
54
|
+
"Created event audit: {} for resource: {}",
|
|
55
|
+
event_type,
|
|
56
|
+
resource_type,
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
return event_audit
|
|
60
|
+
|
|
61
|
+
def get_events_for_resource(
|
|
62
|
+
self,
|
|
63
|
+
resource_type: str,
|
|
64
|
+
resource_identifier: Optional[str] = None,
|
|
65
|
+
limit: int = 100,
|
|
66
|
+
) -> List[EventAudit]:
|
|
67
|
+
"""Get audit events for a specific resource."""
|
|
68
|
+
|
|
69
|
+
query = self.db.query(EventAudit).filter(
|
|
70
|
+
EventAudit.resource_type == resource_type
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
if resource_identifier:
|
|
74
|
+
query = query.filter(EventAudit.resource_identifier == resource_identifier)
|
|
75
|
+
|
|
76
|
+
return query.order_by(EventAudit.created_at.desc()).limit(limit).all()
|
|
77
|
+
|
|
78
|
+
def get_events_by_user(self, user_id: str, limit: int = 100) -> List[EventAudit]:
|
|
79
|
+
"""Get audit events by a specific user."""
|
|
80
|
+
|
|
81
|
+
return (
|
|
82
|
+
self.db.query(EventAudit)
|
|
83
|
+
.filter(EventAudit.user_id == user_id)
|
|
84
|
+
.order_by(EventAudit.created_at.desc())
|
|
85
|
+
.limit(limit)
|
|
86
|
+
.all()
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
def get_events_by_type(
|
|
90
|
+
self, event_type: EventAuditType, limit: int = 100
|
|
91
|
+
) -> List[EventAudit]:
|
|
92
|
+
"""Get audit events of a specific type."""
|
|
93
|
+
|
|
94
|
+
return (
|
|
95
|
+
self.db.query(EventAudit)
|
|
96
|
+
.filter(EventAudit.event_type == event_type)
|
|
97
|
+
.order_by(EventAudit.created_at.desc())
|
|
98
|
+
.limit(limit)
|
|
99
|
+
.all()
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
def get_events_by_category(
|
|
103
|
+
self, category_prefix: str, limit: int = 100
|
|
104
|
+
) -> List[EventAudit]:
|
|
105
|
+
"""Get all events matching a category prefix (e.g., 'consent', 'system', 'taxonomy')."""
|
|
106
|
+
|
|
107
|
+
prefix_with_dot = category_prefix + "."
|
|
108
|
+
|
|
109
|
+
return (
|
|
110
|
+
self.db.query(EventAudit)
|
|
111
|
+
.filter(EventAudit.event_type.startswith(prefix_with_dot))
|
|
112
|
+
.order_by(EventAudit.created_at.desc())
|
|
113
|
+
.limit(limit)
|
|
114
|
+
.all()
|
|
115
|
+
)
|
|
@@ -4,10 +4,8 @@ from loguru import logger
|
|
|
4
4
|
|
|
5
5
|
from fides.api.models.messaging import MessagingConfig
|
|
6
6
|
from fides.api.models.property import CONFIG
|
|
7
|
-
from fides.api.schemas.messaging.messaging import
|
|
8
|
-
|
|
9
|
-
MessagingServiceSecretsAWS_SES,
|
|
10
|
-
)
|
|
7
|
+
from fides.api.schemas.messaging.messaging import MessagingServiceDetailsAWS_SES
|
|
8
|
+
from fides.api.schemas.messaging.shared_schemas import MessagingServiceSecretsAWS_SES
|
|
11
9
|
from fides.api.schemas.storage.storage import StorageSecrets
|
|
12
10
|
from fides.api.util.aws_util import get_aws_session
|
|
13
11
|
|
|
File without changes
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import datetime
|
|
2
|
+
from typing import Any, List, Optional, Union
|
|
3
|
+
|
|
4
|
+
from fastapi_pagination import Page, Params
|
|
5
|
+
from fastapi_pagination.ext.async_sqlalchemy import paginate as async_paginate
|
|
6
|
+
from fideslang.validation import FidesKey
|
|
7
|
+
from sqlalchemy import or_
|
|
8
|
+
from sqlalchemy.ext.asyncio import AsyncSession
|
|
9
|
+
from sqlalchemy.future import select
|
|
10
|
+
from sqlalchemy.sql.selectable import Select
|
|
11
|
+
|
|
12
|
+
from fides.api.db.crud import list_resource
|
|
13
|
+
from fides.api.models.sql_models import ( # type: ignore[attr-defined]
|
|
14
|
+
PrivacyDeclaration,
|
|
15
|
+
System,
|
|
16
|
+
)
|
|
17
|
+
from fides.api.schemas.filter_params import FilterParams
|
|
18
|
+
from fides.api.util.filter_utils import apply_filters_to_query
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class SystemService:
|
|
22
|
+
"""
|
|
23
|
+
Service for system management. Currently only used for listing systems.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
def __init__(self, db: AsyncSession):
|
|
27
|
+
self.db = db
|
|
28
|
+
|
|
29
|
+
async def get_systems(
|
|
30
|
+
self,
|
|
31
|
+
*,
|
|
32
|
+
search: Optional[str] = None,
|
|
33
|
+
data_uses: Optional[List[FidesKey]] = None,
|
|
34
|
+
data_categories: Optional[List[FidesKey]] = None,
|
|
35
|
+
data_subjects: Optional[List[FidesKey]] = None,
|
|
36
|
+
size: Optional[int] = None,
|
|
37
|
+
page: Optional[int] = None,
|
|
38
|
+
show_deleted: bool = False,
|
|
39
|
+
**kwargs: Any,
|
|
40
|
+
) -> Union[List[System], Page[System]]:
|
|
41
|
+
"""
|
|
42
|
+
Query systems with flexible filtering and optional pagination.
|
|
43
|
+
|
|
44
|
+
This function provides the core logic for listing systems with support for:
|
|
45
|
+
- Basic filtering (search, data uses, categories, subjects)
|
|
46
|
+
- Pagination
|
|
47
|
+
- Vendor deletion filtering
|
|
48
|
+
- Extension points for additional filtering
|
|
49
|
+
|
|
50
|
+
Args:
|
|
51
|
+
db: Database session
|
|
52
|
+
size: Page size for pagination (if None, no pagination)
|
|
53
|
+
page: Page number for pagination
|
|
54
|
+
show_deleted: Whether to include vendor-deleted systems
|
|
55
|
+
filter_params: Standard filter parameters (search, taxonomy filters)
|
|
56
|
+
|
|
57
|
+
Returns:
|
|
58
|
+
Either a list of all systems or a paginated page of systems
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
filter_params = None
|
|
62
|
+
if any([search, data_uses, data_categories, data_subjects]):
|
|
63
|
+
filter_params = FilterParams(
|
|
64
|
+
search=search,
|
|
65
|
+
data_uses=data_uses,
|
|
66
|
+
data_categories=data_categories,
|
|
67
|
+
data_subjects=data_subjects,
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
# If no parameters are provided, return all systems for backward compatibility
|
|
71
|
+
if not any([size, page, filter_params]):
|
|
72
|
+
return await list_resource(System, self.db)
|
|
73
|
+
|
|
74
|
+
query = self._build_systems_query(
|
|
75
|
+
filter_params=filter_params,
|
|
76
|
+
show_deleted=show_deleted,
|
|
77
|
+
**kwargs,
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
# Ensure distinct results
|
|
81
|
+
query = query.distinct(System.id)
|
|
82
|
+
|
|
83
|
+
# Return paginated or non-paginated results
|
|
84
|
+
if size or page:
|
|
85
|
+
pagination_params = Params(page=page or 1, size=size or 50)
|
|
86
|
+
return await async_paginate(self.db, query, pagination_params)
|
|
87
|
+
|
|
88
|
+
result = await self.db.execute(query)
|
|
89
|
+
return list(result.scalars().all())
|
|
90
|
+
|
|
91
|
+
def _build_systems_query(
|
|
92
|
+
self,
|
|
93
|
+
*,
|
|
94
|
+
filter_params: Optional[FilterParams] = None,
|
|
95
|
+
show_deleted: bool = False,
|
|
96
|
+
**kwargs: Any,
|
|
97
|
+
) -> Select:
|
|
98
|
+
"""
|
|
99
|
+
Build the base query for systems.
|
|
100
|
+
"""
|
|
101
|
+
|
|
102
|
+
query = select(System)
|
|
103
|
+
|
|
104
|
+
# Determine if we need to join with PrivacyDeclaration
|
|
105
|
+
needs_privacy_declaration = filter_params and any(
|
|
106
|
+
[
|
|
107
|
+
filter_params.data_uses,
|
|
108
|
+
filter_params.data_categories,
|
|
109
|
+
filter_params.data_subjects,
|
|
110
|
+
]
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
if needs_privacy_declaration:
|
|
114
|
+
query = query.outerjoin(
|
|
115
|
+
PrivacyDeclaration, System.id == PrivacyDeclaration.system_id
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
# Filter out vendor deleted systems unless explicitly asked for
|
|
119
|
+
if not show_deleted:
|
|
120
|
+
query = query.filter(
|
|
121
|
+
or_(
|
|
122
|
+
System.vendor_deleted_date.is_(None),
|
|
123
|
+
System.vendor_deleted_date >= datetime.datetime.now(),
|
|
124
|
+
)
|
|
125
|
+
)
|
|
126
|
+
|
|
127
|
+
# Apply standard filters if provided
|
|
128
|
+
if filter_params:
|
|
129
|
+
query = apply_filters_to_query(
|
|
130
|
+
query=query,
|
|
131
|
+
filter_params=filter_params,
|
|
132
|
+
search_model=System,
|
|
133
|
+
taxonomy_model=(
|
|
134
|
+
PrivacyDeclaration if needs_privacy_declaration else None
|
|
135
|
+
),
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
return query
|
|
@@ -7,12 +7,14 @@ from typing import Any, Dict, List, Literal, Optional, Union, overload
|
|
|
7
7
|
from sqlalchemy import or_
|
|
8
8
|
from sqlalchemy.orm import Session
|
|
9
9
|
|
|
10
|
+
from fides.api.models.event_audit import EventAuditStatus, EventAuditType
|
|
10
11
|
from fides.api.models.sql_models import ( # type:ignore[attr-defined]
|
|
11
12
|
DataCategory,
|
|
12
13
|
DataSubject,
|
|
13
14
|
DataUse,
|
|
14
15
|
)
|
|
15
16
|
from fides.api.models.taxonomy import TaxonomyUsage
|
|
17
|
+
from fides.service.event_audit_service import EventAuditService
|
|
16
18
|
|
|
17
19
|
from .handlers import LegacyTaxonomyHandler, TaxonomyHandler
|
|
18
20
|
from .utils import (
|
|
@@ -34,8 +36,9 @@ class TaxonomyService:
|
|
|
34
36
|
|
|
35
37
|
# Most of the main methods in this service have a type-specific overload to help with type hints
|
|
36
38
|
|
|
37
|
-
def __init__(self, db: Session):
|
|
39
|
+
def __init__(self, db: Session, event_audit_service: EventAuditService):
|
|
38
40
|
self.db = db
|
|
41
|
+
self.event_audit_service = event_audit_service
|
|
39
42
|
|
|
40
43
|
@overload
|
|
41
44
|
def get_elements(
|
|
@@ -121,7 +124,22 @@ class TaxonomyService:
|
|
|
121
124
|
|
|
122
125
|
# Centralized validation before delegation
|
|
123
126
|
self._validate_element_data(processed_data, taxonomy_type, action="create")
|
|
124
|
-
|
|
127
|
+
|
|
128
|
+
element = self._get_handler(taxonomy_type).create_element(processed_data)
|
|
129
|
+
|
|
130
|
+
self.event_audit_service.create_event_audit(
|
|
131
|
+
EventAuditType.taxonomy_element_created,
|
|
132
|
+
EventAuditStatus.succeeded,
|
|
133
|
+
resource_type="taxonomy_element",
|
|
134
|
+
resource_identifier=processed_data.get("fides_key"),
|
|
135
|
+
description=f"Created {taxonomy_type} element: {processed_data.get('fides_key')} ({processed_data.get('name')})",
|
|
136
|
+
event_details={
|
|
137
|
+
"taxonomy_type": taxonomy_type,
|
|
138
|
+
**processed_data,
|
|
139
|
+
},
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
return element
|
|
125
143
|
|
|
126
144
|
@overload
|
|
127
145
|
def update_element(
|
|
@@ -162,8 +180,12 @@ class TaxonomyService:
|
|
|
162
180
|
# Update the element via handler
|
|
163
181
|
updated_element = handler.update_element(fides_key, element_data)
|
|
164
182
|
|
|
183
|
+
# Return early if element was not found
|
|
184
|
+
if updated_element is None:
|
|
185
|
+
return None
|
|
186
|
+
|
|
165
187
|
# Handle hierarchical activation/deactivation logic at service level
|
|
166
|
-
if
|
|
188
|
+
if "active" in element_data:
|
|
167
189
|
if element_data["active"]:
|
|
168
190
|
activate_taxonomy_parents(updated_element, self.db)
|
|
169
191
|
else:
|
|
@@ -178,6 +200,18 @@ class TaxonomyService:
|
|
|
178
200
|
# Refresh the updated element to return the latest state
|
|
179
201
|
self.db.refresh(updated_element)
|
|
180
202
|
|
|
203
|
+
self.event_audit_service.create_event_audit(
|
|
204
|
+
EventAuditType.taxonomy_element_updated,
|
|
205
|
+
EventAuditStatus.succeeded,
|
|
206
|
+
resource_type="taxonomy_element",
|
|
207
|
+
resource_identifier=fides_key,
|
|
208
|
+
description=f"Updated {taxonomy_type} element: {fides_key} ({updated_element.name})", # type: ignore
|
|
209
|
+
event_details={
|
|
210
|
+
"taxonomy_type": taxonomy_type,
|
|
211
|
+
**element_data,
|
|
212
|
+
},
|
|
213
|
+
)
|
|
214
|
+
|
|
181
215
|
return updated_element
|
|
182
216
|
|
|
183
217
|
def delete_element(self, taxonomy_type: str, fides_key: str) -> None:
|
|
@@ -196,6 +230,18 @@ class TaxonomyService:
|
|
|
196
230
|
self._get_handler(taxonomy_type).delete_element(fides_key)
|
|
197
231
|
self.db.commit()
|
|
198
232
|
|
|
233
|
+
self.event_audit_service.create_event_audit(
|
|
234
|
+
EventAuditType.taxonomy_element_deleted,
|
|
235
|
+
EventAuditStatus.succeeded,
|
|
236
|
+
resource_type="taxonomy_element",
|
|
237
|
+
resource_identifier=fides_key,
|
|
238
|
+
description=f"Deleted {taxonomy_type} element: {fides_key}",
|
|
239
|
+
event_details={
|
|
240
|
+
"taxonomy_type": taxonomy_type,
|
|
241
|
+
"fides_key": fides_key,
|
|
242
|
+
},
|
|
243
|
+
)
|
|
244
|
+
|
|
199
245
|
@overload
|
|
200
246
|
def create_or_update_element(
|
|
201
247
|
self, taxonomy_type: Literal["data_categories"], element_data: Dict
|
|
@@ -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/
|
|
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/018c12b58ee7f861.css" as="style"/><link rel="stylesheet" href="/_next/static/css/018c12b58ee7f861.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-55e1c55932df2413.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-c780470042750062.js" defer=""></script><script src="/_next/static/chunks/pages/404-e4a1f93a7ce944f0.js" defer=""></script><script src="/_next/static/86A8z6OnbTuDYww0DJkX0/_buildManifest.js" defer=""></script><script src="/_next/static/86A8z6OnbTuDYww0DJkX0/_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":"86A8z6OnbTuDYww0DJkX0","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
self.__BUILD_MANIFEST=function(s,e,t,a,c,n,i,d,o,r,p,g,u,f,m,b,j,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,R,V,W,X,Y,Z,$){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":[U,"static/chunks/pages/index-d66ea87b457af21e.js"],"/404":["static/chunks/pages/404-e4a1f93a7ce944f0.js"],"/_error":["static/chunks/pages/_error-bede3a8288930dcf.js"],"/add-systems":[s,e,U,"static/chunks/pages/add-systems-92034daafd2187a0.js"],"/add-systems/manual":[s,t,a,c,i,u,e,n,r,f,m,l,w,q,"static/chunks/pages/add-systems/manual-fb9434d926ebf0b3.js"],"/add-systems/multiple":[r,b,N,"static/chunks/pages/add-systems/multiple-a4f821c4902f2df8.js"],"/consent":["static/chunks/pages/consent-35c0ae9d5b5a940c.js"],"/consent/configure":[r,b,"static/chunks/pages/consent/configure-87919c1192e68b1a.js"],"/consent/configure/add-vendors":[r,b,N,"static/chunks/pages/consent/configure/add-vendors-96245b63aafc5168.js"],"/consent/privacy-experience":[u,A,"static/chunks/pages/consent/privacy-experience-ae8a64fffe3f8c66.js"],"/consent/privacy-experience/new":[t,d,j,k,S,"static/chunks/pages/consent/privacy-experience/new-e74cb5ea87f15b40.js"],"/consent/privacy-experience/[id]":[t,d,j,k,S,"static/chunks/pages/consent/privacy-experience/[id]-4fea66e59bd59de8.js"],"/consent/privacy-notices":[A,"static/chunks/pages/consent/privacy-notices-d7d9ff9ed28fa790.js"],"/consent/privacy-notices/new":[t,d,j,k,B,"static/chunks/pages/consent/privacy-notices/new-f3a40101a8f3fd00.js"],"/consent/privacy-notices/[id]":[t,d,j,k,B,"static/chunks/pages/consent/privacy-notices/[id]-c8038e05f35da8d1.js"],"/consent/properties":[h,C,"static/chunks/pages/consent/properties-c985ea8c1a0e0550.js"],"/consent/reporting":[s,"static/chunks/2150-930ffaf2c4718edc.js","static/chunks/pages/consent/reporting-ddf6ba92355f81de.js"],"/data-catalog":[t,a,c,n,"static/css/95ac327e5d70148d.css","static/chunks/pages/data-catalog-f99af5669b9ab44c.js"],"/data-catalog/[systemId]/projects":[t,a,c,n,v,o,"static/chunks/pages/data-catalog/[systemId]/projects-06ba907e7d91a724.js"],"/data-catalog/[systemId]/projects/[projectUrn]":[z,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-965af6c1fd01334e.js"],"/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]":[s,t,a,c,e,n,v,D,o,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]-6a196c704f1c6dd7.js"],"/data-catalog/[systemId]/resources":[z,"static/chunks/pages/data-catalog/[systemId]/resources-5afecf141308bfc5.js"],"/data-catalog/[systemId]/resources/[resourceUrn]":[s,t,a,c,e,n,v,D,o,"static/chunks/pages/data-catalog/[systemId]/resources/[resourceUrn]-9cee4e222ebb2b60.js"],"/data-discovery/action-center":[I,"static/chunks/pages/data-discovery/action-center-5868591ff1e5f881.js"],"/data-discovery/action-center/[monitorId]":[s,t,a,c,e,I,E,F,"static/chunks/pages/data-discovery/action-center/[monitorId]-de957913f9b47daa.js"],"/data-discovery/action-center/[monitorId]/[systemId]":[s,t,a,c,e,r,l,I,E,"static/css/23cf870196941c9a.css","static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-db7f1a269d3e7fc2.js"],"/data-discovery/activity":[s,e,g,"static/chunks/pages/data-discovery/activity-715064e1c9788e1a.js"],"/data-discovery/detection":[s,e,g,L,"static/chunks/pages/data-discovery/detection-6537c93c69b597c7.js"],"/data-discovery/detection/[resourceUrn]":[s,e,g,L,"static/chunks/pages/data-discovery/detection/[resourceUrn]-9ae81f5c245b8a01.js"],"/data-discovery/discovery":[s,t,a,c,e,n,g,M,o,"static/chunks/pages/data-discovery/discovery-9f6a62614d7eb113.js"],"/data-discovery/discovery/[resourceUrn]":[s,t,a,c,e,n,g,M,o,"static/chunks/pages/data-discovery/discovery/[resourceUrn]-5db26067d921a94a.js"],"/datamap":[s,c,"static/chunks/255-1bc0cbef7a59cdc6.js",e,f,T,"static/chunks/pages/datamap-aed0e6dafc143b97.js"],"/dataset":[p,y,"static/chunks/pages/dataset-639046f6c76bc8bd.js"],"/dataset/new":[s,p,e,y,"static/chunks/pages/dataset/new-5bb96c8684a38bbf.js"],"/dataset/[datasetId]":["static/chunks/9729-fcf6ff4e3534e4a8.js",x,"static/chunks/pages/dataset/[datasetId]-b653fd60e7db989b.js"],"/dataset/[datasetId]/[collectionName]":[t,a,c,i,n,x,o,"static/chunks/pages/dataset/[datasetId]/[collectionName]-f36a46381a6c25d4.js"],"/dataset/[datasetId]/[collectionName]/[...subfieldNames]":[t,a,c,i,n,x,o,"static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-72b9878ea9b91529.js"],"/datastore-connection":["static/css/5f393dea1c0d031c.css","static/chunks/pages/datastore-connection-c55e3e0e19030f3f.js"],"/datastore-connection/new":[s,t,i,p,u,P,e,y,G,"static/chunks/pages/datastore-connection/new-1e2fa11f22dbc449.js"],"/datastore-connection/[id]":[s,t,i,p,P,e,y,G,"static/chunks/pages/datastore-connection/[id]-6bf117315d909ad1.js"],"/fides-js-docs":["static/chunks/2fbcc6de-a6c61724c327e9fa.js","static/chunks/e3251fe7-5777b5d778e6fffa.js",t,a,c,i,p,"static/chunks/5619-9b50cec521203989.js",H,"static/css/0b4b1b65cc874774.css","static/chunks/5596-bb601cbf40e47a0f.js","static/chunks/pages/fides-js-docs-1f4335dca5c09860.js"],"/integrations":[s,t,a,c,i,d,J,e,m,K,o,"static/chunks/pages/integrations-267d2742fffaebe5.js"],"/integrations/[id]":[s,t,a,c,i,d,J,e,m,K,o,"static/chunks/pages/integrations/[id]-0159fbb2e0440709.js"],"/login":["static/chunks/pages/login-0cb0eb44bf2dd24c.js"],"/login/[provider]":["static/chunks/pages/login/[provider]-c58beef131c3a82d.js"],"/messaging":[t,a,"static/chunks/346-aa3b88efb85f2e28.js","static/chunks/pages/messaging-b14f5f38b2d711a8.js"],"/messaging/add-template":[O,"static/chunks/pages/messaging/add-template-c533120e94e049e3.js"],"/messaging/[id]":[O,"static/chunks/pages/messaging/[id]-4352e55f110556b4.js"],"/poc/ant-components":["static/chunks/pages/poc/ant-components-31d51e3b9227c8d5.js"],"/poc/form-experiments/AntForm":["static/chunks/pages/poc/form-experiments/AntForm-8794a0d2e7554a05.js"],"/poc/form-experiments/FormikAntFormItem":["static/chunks/pages/poc/form-experiments/FormikAntFormItem-90b31073e478c99c.js"],"/poc/form-experiments/FormikControlled":["static/chunks/pages/poc/form-experiments/FormikControlled-0a6859a0225b7e00.js"],"/poc/form-experiments/FormikField":["static/chunks/pages/poc/form-experiments/FormikField-eb0552917907fe21.js"],"/poc/form-experiments/FormikSpreadField":[Q,"static/chunks/pages/poc/form-experiments/FormikSpreadField-af097d661f6abcf4.js"],"/poc/forms":[Q,"static/chunks/pages/poc/forms-b2a2a084d8cfe22d.js"],"/poc/table-migration":[r,b,"static/chunks/pages/poc/table-migration-0c944cfa9c6acbff.js"],"/privacy-requests":[s,t,"static/chunks/3550-d04125c828d591a1.js",e,R,"static/chunks/pages/privacy-requests-28083bfb2dec7b9f.js"],"/privacy-requests/configure":["static/chunks/pages/privacy-requests/configure-331147598052f25c.js"],"/privacy-requests/configure/storage":[s,e,"static/chunks/pages/privacy-requests/configure/storage-482a7256925a6e06.js"],"/privacy-requests/[id]":[s,e,R,"static/css/073713cd1eddda79.css","static/chunks/pages/privacy-requests/[id]-670b05b03ba11e0a.js"],"/properties":[h,C,"static/chunks/pages/properties-7459d56e548925b2.js"],"/properties/add-property":[h,V,"static/chunks/pages/properties/add-property-74c2a0ff4c992633.js"],"/properties/[id]":[h,V,"static/chunks/pages/properties/[id]-e02dc4b4b385c86f.js"],"/reporting/datamap":[s,t,a,c,H,e,f,T,"static/chunks/pages/reporting/datamap-aed018025b09c045.js"],"/settings/about":[W,"static/chunks/pages/settings/about-6c4904c157477285.js"],"/settings/about/alpha":[W,"static/chunks/pages/settings/about/alpha-68eaac2d79133679.js"],"/settings/consent":["static/chunks/pages/settings/consent-e8cab942d09aa358.js"],"/settings/consent/[configuration_id]/[purpose_id]":["static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-7f2c50044806c094.js"],"/settings/custom-fields":[s,e,"static/chunks/pages/settings/custom-fields-128f952a49a0e8dc.js"],"/settings/domain-records":["static/chunks/pages/settings/domain-records-cca3d1a26e1269bb.js"],"/settings/domains":["static/chunks/pages/settings/domains-07e1b9937a169e32.js"],"/settings/email-templates":["static/chunks/pages/settings/email-templates-3bc799dac8423f50.js"],"/settings/locations":[X,F,"static/chunks/pages/settings/locations-9f36b6c213ae524c.js"],"/settings/messaging-providers":[s,e,"static/chunks/pages/settings/messaging-providers-1065fbefd449719c.js"],"/settings/messaging-providers/new":[s,t,a,d,Y,e,Z,"static/chunks/pages/settings/messaging-providers/new-5473558807e94462.js"],"/settings/messaging-providers/[key]":[s,t,a,d,Y,e,Z,"static/chunks/pages/settings/messaging-providers/[key]-f8887b2b29aed1b9.js"],"/settings/organization":["static/chunks/pages/settings/organization-3e23d92d789fff99.js"],"/settings/privacy-requests":[s,e,"static/chunks/pages/settings/privacy-requests-907bfbb71d84646f.js"],"/settings/regulations":[X,F,"static/chunks/pages/settings/regulations-f0f0ea35d0185ae3.js"],"/systems":[s,t,a,c,"static/chunks/1896-49010da5c2705fc5.js",e,"static/chunks/pages/systems-4a6ef2509e8cedfc.js"],"/systems/configure/[id]":[s,t,a,c,i,u,e,n,r,f,m,l,w,q,"static/chunks/pages/systems/configure/[id]-02b0dde03a1ad159.js"],"/systems/configure/[id]/test-datasets":[p,"static/chunks/pages/systems/configure/[id]/test-datasets-aa1ada4d4ac09759.js"],"/taxonomy":["static/chunks/678d4732-50255cc09048e643.js",s,t,a,d,"static/chunks/6148-59a59d5c5925344f.js",e,"static/css/34a7eb08b86ddb57.css","static/chunks/pages/taxonomy-16b122b83e57bb8c.js"],"/user-management":[_,"static/chunks/pages/user-management-4036b023366b7eec.js"],"/user-management/new":[_,$,"static/chunks/pages/user-management/new-6304dad2c5fab694.js"],"/user-management/profile/[id]":[_,$,"static/chunks/pages/user-management/profile/[id]-0a8ec3aa2ed59a33.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/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/messaging-providers","/settings/messaging-providers/new","/settings/messaging-providers/[key]","/settings/organization","/settings/privacy-requests","/settings/regulations","/systems","/systems/configure/[id]","/systems/configure/[id]/test-datasets","/taxonomy","/user-management","/user-management/new","/user-management/profile/[id]"]}}("static/chunks/431-86ad2beeb93c95c9.js","static/chunks/1841-2052c3239f2a0a1a.js","static/chunks/8765-f622a35b40a7ec63.js","static/chunks/9278-08cc704317fe535e.js","static/chunks/5163-e682273cd76a7d07.js","static/chunks/409-e1deab19fc7e6d99.js","static/chunks/699-8ca44b0de9fa20f0.js","static/chunks/3662-f6a1ddca5ee42076.js","static/css/d2d4e9a6923e6730.css","static/chunks/401-4e56e924f35317f2.js","static/chunks/6527-0eed08abe252a918.js","static/chunks/8002-78d78545309b2c1c.js","static/chunks/5277-e8a036319456127f.js","static/chunks/9951-c389c51ca6353035.js","static/chunks/6416-79eee298a5b3f80f.js","static/chunks/3923-db57401384d1de8f.js","static/chunks/6419-d0c00d661b01f8fa.js","static/chunks/6084-29cbe703bffdccfe.js","static/chunks/2040-3f9c66c56a05b336.js","static/chunks/2751-58285ccf50a0ba4b.js","static/chunks/6780-eeb7775eb21d7a12.js","static/chunks/6882-55dbb142f7c40f53.js","static/chunks/7725-b2fa93d747d3d85d.js","static/css/10994e916bc9a00a.css","static/chunks/9226-49dbcdb135bf9793.js","static/chunks/7476-3da7a490debad8e2.js","static/css/972dc7eef106ee7c.css","static/chunks/4786-8d78ec773d171562.js","static/css/304c6f148886a8d4.css","static/chunks/796-8e4da90ae82dfebb.js","static/chunks/6853-91a8641cd2784b54.js","static/chunks/1817-dc2bba3ca736d39e.js","static/chunks/6954-6dfafd38b02d5852.js","static/chunks/5783-c62c79e7be21be73.js","static/chunks/3872-4786ccbe7c6f65b0.js","static/chunks/3855-8377b3fcbb3d93b0.js","static/chunks/7929-4314e317b1717257.js","static/chunks/5309-e994c5195f99b1eb.js","static/chunks/9046-0f92802b0e3382a9.js","static/chunks/4230-c55d5531697a715c.js","static/chunks/1467-8808ec8836e033f9.js","static/chunks/4608-2fbc3389681f6924.js","static/chunks/9187-7438242f0d380bb0.js","static/chunks/1316-2606e19807c08aa5.js","static/chunks/155-b5e4370b158e5ee3.js","static/chunks/7630-22f9c4b25d6aed29.js","static/chunks/2921-cdc7a13973f4a0ba.js","static/chunks/8373-bd50fa53cbcab2aa.js","static/chunks/5185-a219b390ef17ff4b.js","static/chunks/1115-d5a834cdaa717edc.js","static/chunks/9826-f316eb1d61cb90b6.js","static/chunks/9037-453224ba3ee65b13.js","static/chunks/3377-c5e0cc3de1a5ffd1.js","static/chunks/3696-fff4f944d7d5ff20.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1115],{77213:function(e,n,i){i.d(n,{Z:function(){return f}});var t=i(24246),s=i(96306),r=i(88038),a=i.n(r),o=i(86677);i(27378);var l=i(25980),c=i(90867),g=i(42478),d=i(77830),u=()=>{let e=(0,o.useRouter)();return(0,t.jsx)(s.xuv,{bg:"gray.50",border:"1px solid",borderColor:"blue.400",borderRadius:"md",justifyContent:"space-between",p:5,mb:5,mt:5,children:(0,t.jsxs)(s.xuv,{children:[(0,t.jsxs)(s.Kqy,{direction:{base:"column",sm:"row"},justifyContent:"space-between",children:[(0,t.jsx)(s.xvT,{fontWeight:"semibold",children:"Configure your storage and messaging provider"}),(0,t.jsx)(s.wpx,{onClick:()=>{e.push(d.AD)},children:"Configure"})]}),(0,t.jsxs)(s.xvT,{children:["Before Fides can process your privacy requests we need two simple steps to configure your storage and email client."," "]})]})})},f=e=>{let{children:n,title:i,padded:r=!0,mainProps:d}=e,f=(0,l.hz)(),m=(0,o.useRouter)(),h="/privacy-requests"===m.pathname||"/datastore-connection"===m.pathname,x=!(f.flags.messagingConfiguration&&h),{data:p}=(0,g.JE)(void 0,{skip:x}),{data:y}=(0,c.PW)(void 0,{skip:x}),j=f.flags.messagingConfiguration&&(!p||!y)&&h;return(0,t.jsxs)(s.kCb,{"data-testid":i,direction:"column",h:"100vh",children:[(0,t.jsxs)(a(),{children:[(0,t.jsxs)("title",{children:["Fides Admin UI - ",i]}),(0,t.jsx)("meta",{name:"description",content:"Privacy Engineering Platform"}),(0,t.jsx)("link",{rel:"icon",href:"/favicon.ico"})]}),(0,t.jsxs)(s.kCb,{as:"main",direction:"column",py:r?6:0,px:r?10:0,h:r?"calc(100% - 48px)":"full",flex:1,minWidth:0,overflow:"auto",...d,children:[j?(0,t.jsx)(u,{}):null,n]})]})}},58754:function(e,n,i){var t=i(24246),s=i(96306),r=i(70788);n.Z=e=>{let{heading:n,breadcrumbItems:i,isSticky:a=!0,children:o,rightContent:l,style:c,...g}=e;return(0,t.jsxs)("div",{...g,style:a?{position:"sticky",top:"-24px",paddingTop:"24px",paddingBottom:"24px",paddingLeft:"40px",marginLeft:"-40px",paddingRight:"40px",marginRight:"-40px",marginTop:"-24px",left:0,zIndex:20,backgroundColor:"white",...c}:{paddingBottom:"24px",...c},children:[(0,t.jsxs)(s.jqI,{justify:"space-between",children:["string"==typeof n?(0,t.jsx)(s.lQT,{className:i||o?"pb-4":void 0,level:1,"data-testid":"page-heading",children:n}):n,l&&(0,t.jsx)("div",{"data-testid":"page-header-right-content",children:l})]}),!!i&&(0,t.jsx)(r.m,{className:o?"pb-4":void 0,items:i,"data-testid":"page-breadcrumb"}),o]})}},70788:function(e,n,i){i.d(n,{m:function(){return c}});var t=i(24246),s=i(96306),r=i(79894),a=i.n(r),o=i(27378);let{Text:l}=s.AntTypography,c=e=>{let{items:n,...i}=e,r=(0,o.useMemo)(()=>null==n?void 0:n.map((e,i)=>{let r=i===n.length-1,o={...e},c=o.onClick&&!o.href;return("string"==typeof o.title&&(o.title=(0,t.jsx)(l,{style:{color:"inherit",maxWidth:r?void 0:400},ellipsis:!r,id:r?"breadcrumb-current-page":void 0,children:o.title})),c)?o.title=(0,t.jsx)(s.wpx,{type:"text",size:"small",icon:o.icon,onClick:o.onClick,className:"ant-breadcrumb-link -mt-px px-1 text-inherit",children:o.title}):(o.icon&&(o.title=(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"anticon align-text-bottom",children:o.icon}),o.title]})),o.href&&o.title&&(o.title=(0,t.jsx)(a(),{href:o.href,className:"ant-breadcrumb-link",children:o.title}),delete o.href)),o}),[n]);return(0,t.jsx)(s.zrq,{items:r,...i})}},42478:function(e,n,i){i.d(n,{FU:function(){return c},JE:function(){return s},Ki:function(){return d},SU:function(){return u},W:function(){return f},h9:function(){return r},jc:function(){return t},qt:function(){return l},sn:function(){return g}});let{useGetEmailInviteStatusQuery:t,useGetActiveMessagingProviderQuery:s,useCreateMessagingConfigurationMutation:r,useCreateMessagingConfigurationSecretsMutation:a,useGetMessagingConfigurationDetailsQuery:o,useGetMessagingConfigurationsQuery:l,useGetMessagingConfigurationByKeyQuery:c,useUpdateMessagingConfigurationByKeyMutation:g,useUpdateMessagingConfigurationSecretsByKeyMutation:d,useCreateTestConnectionMessageMutation:u,useDeleteMessagingConfigurationByKeyMutation:f}=i(78780).u.injectEndpoints({endpoints:e=>({getEmailInviteStatus:e.query({query:()=>({url:"/messaging/email-invite/status"}),providesTags:()=>["Email Invite Status"]}),createMessagingConfiguration:e.mutation({query:e=>({url:"messaging/config",method:"POST",body:e}),invalidatesTags:["Messaging Config","Configuration Settings"]}),getActiveMessagingProvider:e.query({queryFn:async(e,n,i,t)=>{let s=await t({url:"messaging/default/active"});return s.error&&404===s.error.status?{data:null}:s},providesTags:["Messaging Config"]}),createMessagingConfigurationSecrets:e.mutation({query:e=>({url:"messaging/default/".concat(e.service_type,"/secret"),method:"PUT",body:e.details}),invalidatesTags:["Messaging Config","Configuration Settings"]}),getMessagingConfigurationDetails:e.query({query:e=>({url:"messaging/default/".concat(e.type)}),providesTags:["Messaging Config"]}),getMessagingConfigurations:e.query({query:()=>({url:"messaging/config"}),providesTags:["Messaging Config"]}),getMessagingConfigurationByKey:e.query({query:e=>({url:"messaging/config/".concat(e.key)}),providesTags:["Messaging Config"]}),createTestConnectionMessage:e.mutation({query:e=>({url:"messaging/test/".concat(e.service_type),method:"POST",body:e.details}),invalidatesTags:["Messaging Config"]}),updateMessagingConfigurationByKey:e.mutation({query:e=>({url:"messaging/config/".concat(e.key),method:"PATCH",body:e.config}),invalidatesTags:["Messaging Config","Configuration Settings"]}),updateMessagingConfigurationSecretsByKey:e.mutation({query:e=>({url:"messaging/config/".concat(e.key,"/secret"),method:"PUT",body:e.secrets}),invalidatesTags:["Messaging Config","Configuration Settings"]}),deleteMessagingConfigurationByKey:e.mutation({query:e=>({url:"messaging/config/".concat(e.key),method:"DELETE"}),invalidatesTags:["Messaging Config","Configuration Settings"]})})})},71115:function(e,n,i){i.r(n),i.d(n,{default:function(){return d}});var t=i(24246),s=i(96306),r=i(25980),a=i(62165),o=i(16394);let l=e=>{let{flag:n,value:i,override:r}=e;return"boolean"!=typeof i?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.xvT,{fontSize:"sm",children:n}),(0,t.jsx)(s.xvT,{fontSize:"sm",children:i})]}):a.Ky[n].userCannotModify?null:(0,t.jsxs)(s.NIc,{display:"contents",children:[(0,t.jsx)(s.xuv,{justifySelf:"center",children:(0,t.jsx)(s.rAg,{id:"flag-".concat(n),checked:i,onChange:()=>r({flag:n,value:!i})})}),(0,t.jsx)(s.xuv,{children:(0,t.jsx)(s.lXp,{margin:0,fontSize:"sm",htmlFor:"flag-".concat(n),title:n,children:(0,o.Py)(n)})}),(0,t.jsx)(s.xuv,{children:(0,t.jsx)(s.xvT,{fontSize:"sm",children:a.Ky[n].description})})]})};var c=i(77213),g=i(58754),d=e=>{let{showAlphaFeatures:n=!1}=e,i=(0,r.hz)(),{flags:o,override:d,reset:u}=(0,a.Vb)(),f=a.R$.filter(e=>e.startsWith("alpha")),m=a.R$.filter(e=>!e.startsWith("alpha"));return(0,t.jsxs)(c.Z,{title:"About Fides",children:[(0,t.jsx)(g.Z,{heading:"About Fides",children:(0,t.jsxs)(s.kCb,{direction:"column",gap:4,children:[(0,t.jsxs)(s.xuv,{children:[(0,t.jsxs)(s.xvT,{as:"span",fontWeight:"bold",children:["Fides Core Version:"," "]}),(0,t.jsx)(s.xvT,{as:"pre",display:"inline",children:i.version})]}),i.plusVersion?(0,t.jsxs)(s.xuv,{children:[(0,t.jsxs)(s.xvT,{as:"span",fontWeight:"bold",children:["Fides Plus Version:"," "]}),(0,t.jsx)(s.xvT,{as:"pre",display:"inline",children:i.plusVersion})]}):null,(0,t.jsx)(s.izJ,{})]})}),(0,t.jsxs)(s.kCb,{alignItems:"center",gap:4,children:[(0,t.jsx)(s.X6q,{as:"h2",fontSize:"xl",children:"Beta Features"}),(0,t.jsx)(s.wpx,{onClick:u,children:"Reset"})]}),(0,t.jsx)(s.rjZ,{gridTemplateColumns:"1fr 2fr 6fr",gridColumnGap:4,gridRowGap:2,alignItems:"center",className:"py-6",children:m.map(e=>(0,t.jsx)(l,{flag:e,value:o[e],override:d},e))}),n&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.kCb,{alignItems:"center",gap:4,children:[(0,t.jsx)(s.X6q,{as:"h2",fontSize:"xl",children:"Alpha Features"}),(0,t.jsx)(s.wpx,{onClick:u,children:"Reset"})]}),(0,t.jsx)(s.rjZ,{gridTemplateColumns:"1fr 2fr 6fr",gridColumnGap:4,gridRowGap:2,alignItems:"center",className:"py-6",children:f.map(e=>(0,t.jsx)(l,{flag:e,value:o[e],override:d},e))})]}),(0,t.jsxs)(s.xuv,{children:[(0,t.jsxs)(s.xvT,{fontSize:"sm",children:["Please visit"," ",(0,t.jsx)(s.rUS,{color:"complimentary.500",href:"https://docs.ethyca.com",isExternal:!0,children:"docs.ethyca.com"})," ","for more information on these features."]}),(0,t.jsxs)(s.xvT,{fontSize:"sm",children:["For questions and feedback, please join us at"," ",(0,t.jsx)(s.rUS,{color:"complimentary.500",href:"https://fidescommunity.slack.com",isExternal:!0,children:"fidescommunity.slack.com"}),"."]})]})]})}}}]);
|