ethyca-fides 2.69.3b1__py2.py3-none-any.whl → 2.70.0__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.3b1.dist-info → ethyca_fides-2.70.0.dist-info}/METADATA +1 -1
- {ethyca_fides-2.69.3b1.dist-info → ethyca_fides-2.70.0.dist-info}/RECORD +254 -232
- fides/_version.py +3 -3
- fides/api/alembic/migrations/versions/4d8c0fcc5771_adding_default_system_groups.py +78 -0
- fides/api/alembic/migrations/versions/5fa78b1f324d_add_event_audit_table.py +82 -0
- fides/api/alembic/migrations/versions/b9bfa12c167b_add_not_applicable_to_asset_consentstatus.py +46 -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/privacy_request_endpoints.py +87 -23
- fides/api/db/base.py +1 -0
- fides/api/db/seed.py +34 -0
- fides/api/models/asset.py +1 -0
- fides/api/models/event_audit.py +68 -0
- fides/api/models/messaging.py +30 -10
- 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/privacy_center_config.py +29 -5
- fides/api/service/deps.py +10 -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/tasks/__init__.py +1 -0
- fides/api/util/cache.py +1 -1
- 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/taxonomy/taxonomy_service.py +49 -3
- fides/ui-build/static/admin/404.html +1 -1
- fides/ui-build/static/admin/_next/static/chunks/1115-7888473b3dc28cda.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/155-88303b05c6e115a5.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/1817-ee9e29a6b8c4af50.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/2040-ab6212a3074f34f9.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/2121.1de2fa060eae34aa.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3585-451504ea5ed7a1ea.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3696-c25dc8d1b0e1aee1.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3700-2a7094f112a1608a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3855-12ee1dfbbe47fd28.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3872-3514b712afd683c0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/409-c1256ecda1b15db6.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/431-78bf05f35d7eec4f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4558-de5ced790b3380dc.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4608-96f480766541124b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4718-6585c97c26647e65.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/502-a40d39e615f7b664.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/504-afd3588f1908ac33.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5185-33f50cf9ae17b42e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5309-3b6cf0cc9d0c6a83.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5574-b8c4cba5a6938c00.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{5596-bb601cbf40e47a0f.js → 5596-29a7c8322530b7cf.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/5698.2135391a128cc373.js +164 -0
- fides/ui-build/static/admin/_next/static/chunks/5783-8de76df87af55e98.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6084-2cd165179c428a6f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6416-18d438ff85d807f8.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6882-447f15e87b8c48a5.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7045-f15044a4d4525946.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7158-835ba42fd881d8dd.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7202.3febe9e89640c712.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7476-0b6e114658b15eaa.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7630-e7ea13be69c118a1.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7725-dd6736855807936a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7929-0fd0d4948bc8d70e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/796-e07ac2c543f569e3.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/8002-25fd174aec9b077b.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-2a332fe338535c84.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9226-2f960b7ca530642a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{9676.9fd9552ef744c717.js → 9676.b86ecbcfe5afd25d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/9826-c02be5882205bbbc.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{9951-0c8a80f01e431957.js → 9951-651d521d9a02b6df.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{_app-a653cee14ce2366b.js → _app-302177edeb0dc4f5.js} +63 -226
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{manual-adaec1ec185160af.js → manual-939253f8daf349b2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-f90aa48500c1cbde.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure-c0db068d1863222f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-59a8aff5935482ec.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-17cdca29c6d4cdd6.js → properties-069f4e3ee96ebf77.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-09be5455ba85db39.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent-e5a33654a2dfaf35.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/{[resourceUrn]-d0dbba5bff738b57.js → [resourceUrn]-293c1f2d9aefb447.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-be7b385073f22414.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/resources/{[resourceUrn]-cfc118e68285405c.js → [resourceUrn]-18501152fa1e4f40.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-351caadeef03876a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-758d51b4d37dbd09.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-0e4d9ff89c63793c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-1554afcb8b9da2ab.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-2635ef588bf06145.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-8f736b078e9842da.js → [resourceUrn]-0497f3ffdb632516.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-eb814e3c22807871.js → detection-a780390da99f3e43.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-6875b7783fcfda2f.js → [resourceUrn]-1901c26cdde820da.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-172dbd7740e212ca.js → discovery-0cea22af5929c81f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datamap-619f27c745188adb.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-ef71f387fbbab425.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-d790553662caf5c3.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-cb63db8594fe8dc1.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-78e052c8f95110c4.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset-d6d7ee8bd8858a8a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-785205655317b1d3.js → [id]-cc149157d290a94d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-a6985f77afbc5bc0.js → new-4c9fb068a5561658.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-a832084ce294f8af.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/index-269b8f81546dad66.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-8b13bb5f7bee61c6.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-6f109ef64304ef59.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-8566e3b7b2a632fa.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-1b38b656807ed0cd.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure-b00532a0ad4f6927.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-65f0d5672041a202.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-3d2a77cb07aa8dc0.js → [id]-322a01e2bceab3fb.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-210e7e3b3d776d44.js → add-property-777ed2d73812043d.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{properties-18257b6a70fa8a97.js → properties-08472b2a6bf1d392.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-5b423687e227ad4d.js +1 -0
- 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-55e36839d219a503.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-26ce8fc493993765.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domain-records-7ddf9d992fe714a6.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-7c78ae51f0dd7102.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-05ffbda19ab894b9.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers/[key]-b0d93bf478bf63ee.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers/new-084f9756b9987285.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/messaging-providers-6c51ffd46bb598e7.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-44456bfe54ac4ad5.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/privacy-requests-fbe7e8030d837aed.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-a86bafe1b4e1205f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]-1895c6a13b543436.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/systems-e99fbd1b2d1bfd12.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-9ffcf98b8ad56bf7.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]-763861f5eb207db5.js → [id]-ff4711db191099cd.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/webpack-2766492c5dbceb0a.js +1 -0
- fides/ui-build/static/admin/_next/static/v72X5v2wmNmYdDpd8p1YY/_buildManifest.js +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/_b75ACzlGNz3tZqGUPTE5/_buildManifest.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/1099-718ce18b9bd70cdb.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/1345-1961771e9619db39.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/1817-9423665774c2c08f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3620-34355b0c44325537.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3642-c052564812532324.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3729-c8accd71498f6fe4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3855-0565d44d150c985a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3872-c022bb7259a9f323.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4164-cadb4c6528662248.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/431-86ad2beeb93c95c9.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4608-caa9cb70fb66ac99.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4786-d2b03ba5c82a02ed.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4808-57c5ac15fd8b0d81.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4831-c0d20b2a0b7332bb.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4844-e5064a161a7e5a12.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5258-0062e0a1e4f8c03e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5487-46774dc9df554af1.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/549-170c96caa601e15a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6084-2c7b81cbcae7e3b4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7476-fdd0eb08a12e0334.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7630-8613916021366672.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/787-f2eca25837ff7305.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/79-68834fd07d69f428.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/796-8fbae2fc714e7a3a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/8002-193a97fe4de8b779.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9046-1afcfb1c4dbdd6c6.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9826-d49a56431e896acb.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-0a2b2f4a30245089.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure-b7b7fb3e8b2ea816.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-23d3e50db42f31b3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-75be0acd400cf527.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent-9b4e0a08ae6216c7.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects-25c5916c8357f98d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-9fa11c01b44ba8f1.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-fb16cb8fd2b3826f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-a481a5be96dede96.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-6c65b86a61340753.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-7fe1ca395914f77f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datamap-ea1eabce2a3fc2c7.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-3c629aecee30c575.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]-a13ea13e0316d5a2.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]-a6ae353b3b1536cc.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-85b28db67d96f201.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset-409fe1a086fb7d38.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-93d5c01dd927bad2.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/index-bf3042fdbfb12b3d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-e545f8ef5c945f45.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-f297e6cdb9fe97b9.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-6e864b293571a508.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-0fc3f1f3b1cd6f2a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-089c166287a89166.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure-5a3cd9b14a37ef27.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-73be3cfaaa95ece4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-adbea0f9fd21ff3a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/alpha-b678e7577eef5e5c.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/about-3f3039c7e86cab2f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-d502bf1e7580df06.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-b841d63011827b43.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domain-records-50f9b26c6907d6de.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-5ae0d30eb3b770ab.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-f5924e64a15a0dc3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-88f6badc1bb38b97.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/privacy-requests-d5f8db89c7e91a02.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-0366184eda09a933.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]-a659f18a30ef89f3.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems-f4bf47ed2c4746ba.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-2d9548cfa6086e8f.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/webpack-606818148553db7b.js +0 -1
- fides/ui-build/static/admin/privacy-requests/configure/messaging.html +0 -1
- {ethyca_fides-2.69.3b1.dist-info → ethyca_fides-2.70.0.dist-info}/WHEEL +0 -0
- {ethyca_fides-2.69.3b1.dist-info → ethyca_fides-2.70.0.dist-info}/entry_points.txt +0 -0
- {ethyca_fides-2.69.3b1.dist-info → ethyca_fides-2.70.0.dist-info}/licenses/LICENSE +0 -0
- {ethyca_fides-2.69.3b1.dist-info → ethyca_fides-2.70.0.dist-info}/top_level.txt +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/{2921-765918f8aa37fdb2.js → 2921-66f65496c3a09316.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/{3923-23df37eef17d6ea2.js → 3923-a551756b413367ea.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/{401-45f399d4d1325340.js → 401-ffe4e8436e1eceb9.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/{6853-8fb39280a8f0eb89.js → 6853-7004a8c420b1ca02.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/{6954-3b26ff8259c4d5c3.js → 6954-599f2de2c902e9b2.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/{404-8d9c703c96662265.js → 404-2eb8aed4939f1142.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-20050dbae806179d.js → multiple-83ed7da0bb90b0a5.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-7b8cec88b5ad53d1.js → add-vendors-46b88bda3d7b15c5.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-c30382719d6f797a.js → [id]-fd41ffaff543e05a.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-experience-dff842dbed2bc6c8.js → privacy-experience-92a337ee96845af2.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-074cdbfc678ba791.js → [id]-1fd2cda8707314f6.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-bcddda632b4df409.js → new-2987e397445713c5.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-8ffd8d148269d323.js → [projectUrn]-6a4b0d49dcbf17a8.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{resources-9b7e4b86b1e8a40a.js → resources-af80fdca3bbdc82f.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{[id]-f03f1fdaa1f5a0c6.js → [id]-d8c5c03fb2f31d65.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{add-template-8f90e275e932940b.js → add-template-0e0c06e3c8aabe02.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/{messaging-68385a251c7ade5f.js → messaging-3f15804cf9625f01.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{ant-components-fc7d652910f3ad8d.js → ant-components-248ad9f65a872442.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{AntForm-fb6e6f4b276b6189.js → AntForm-aedb66a62042b10a.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikAntFormItem-00869abf79950a9a.js → FormikAntFormItem-018df38b7cd77fdb.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikControlled-5716d749236c9f70.js → FormikControlled-6ca9099d03aab817.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikField-d6dfb9daa3935db3.js → FormikField-0f2c90786ea005a4.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{forms-9697549bce7060be.js → forms-200b51a725f8b2d1.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{table-migration-888656ae0bd40f62.js → table-migration-e551fccfcaae76e7.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/{[purpose_id]-c64b87694eda4785.js → [purpose_id]-f3e6e74e0efb005c.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-e29384f7a3db5221.js → locations-77fb85bdd0be42b5.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-46d06037fcadaf00.js → regulations-2866ac99faa5a542.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-98a3277820e232c7.js → user-management-82fcf1151e2fe2ba.js} +0 -0
- /fides/ui-build/static/admin/_next/static/{_b75ACzlGNz3tZqGUPTE5 → v72X5v2wmNmYdDpd8p1YY}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
from typing import Any, Dict, Optional, Union
|
|
2
|
+
|
|
3
|
+
from pydantic import BaseModel, ConfigDict, model_validator
|
|
4
|
+
|
|
5
|
+
from fides.api.custom_types import PhoneNumber
|
|
6
|
+
from fides.api.schemas.base_class import NoValidationSchema
|
|
7
|
+
from fides.api.schemas.connection_configuration.connection_secrets_base_aws import (
|
|
8
|
+
BaseAWSSchema,
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class MessagingServiceSecretsMailgun(BaseModel):
|
|
13
|
+
"""The secrets required to connect to Mailgun."""
|
|
14
|
+
|
|
15
|
+
mailgun_api_key: str
|
|
16
|
+
model_config = ConfigDict(extra="forbid")
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class MessagingServiceSecretsTwilioSMS(BaseModel):
|
|
20
|
+
"""The secrets required to connect to Twilio SMS."""
|
|
21
|
+
|
|
22
|
+
twilio_account_sid: str
|
|
23
|
+
twilio_auth_token: str
|
|
24
|
+
twilio_messaging_service_sid: Optional[str] = None
|
|
25
|
+
twilio_sender_phone_number: Optional[PhoneNumber] = None
|
|
26
|
+
model_config = ConfigDict(extra="forbid")
|
|
27
|
+
|
|
28
|
+
@model_validator(mode="before")
|
|
29
|
+
@classmethod
|
|
30
|
+
def validate_fields(cls, values: Dict[str, Any]) -> Dict[str, Any]:
|
|
31
|
+
sender_phone = values.get("twilio_sender_phone_number")
|
|
32
|
+
if not values.get("twilio_messaging_service_sid") and not sender_phone:
|
|
33
|
+
raise ValueError(
|
|
34
|
+
"Either the twilio_messaging_service_sid or the twilio_sender_phone_number should be supplied."
|
|
35
|
+
)
|
|
36
|
+
return values
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class MessagingServiceSecretsTwilioEmail(BaseModel):
|
|
40
|
+
"""The secrets required to connect to twilio email."""
|
|
41
|
+
|
|
42
|
+
twilio_api_key: str
|
|
43
|
+
model_config = ConfigDict(extra="forbid")
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class MessagingServiceSecretsMailchimpTransactional(BaseModel):
|
|
47
|
+
"""The secrets required to connect to Mailchimp Transactional."""
|
|
48
|
+
|
|
49
|
+
mailchimp_transactional_api_key: str
|
|
50
|
+
model_config = ConfigDict(extra="forbid")
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class MessagingServiceSecretsMailchimpTransactionalDocs(
|
|
54
|
+
MessagingServiceSecretsMailchimpTransactional,
|
|
55
|
+
NoValidationSchema,
|
|
56
|
+
):
|
|
57
|
+
"""The secrets required to connect Mailchimp Transactional, for documentation"""
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
class MessagingSecretsMailgunDocs(MessagingServiceSecretsMailgun, NoValidationSchema):
|
|
61
|
+
"""The secrets required to connect to Mailgun, for documentation"""
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
class MessagingSecretsTwilioSMSDocs(
|
|
65
|
+
MessagingServiceSecretsTwilioSMS, NoValidationSchema
|
|
66
|
+
):
|
|
67
|
+
"""The secrets required to connect to Twilio sms, for documentation"""
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
class MessagingSecretsTwilioEmailDocs(
|
|
71
|
+
MessagingServiceSecretsTwilioEmail, NoValidationSchema
|
|
72
|
+
):
|
|
73
|
+
"""The secrets required to connect to Twilio email, for documentation"""
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
class MessagingServiceSecretsAWS_SES(BaseAWSSchema):
|
|
77
|
+
"""The secrets required to connect to AWS SES."""
|
|
78
|
+
|
|
79
|
+
model_config = ConfigDict(extra="forbid")
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
class MessagingServiceSecretsAWS_SESDocs(
|
|
83
|
+
MessagingServiceSecretsAWS_SES, NoValidationSchema
|
|
84
|
+
):
|
|
85
|
+
"""The secrets required to connect to AWS SES, for documentation"""
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
SUPPORTED_MESSAGING_SERVICE_SECRETS = Union[
|
|
89
|
+
MessagingServiceSecretsMailgun,
|
|
90
|
+
MessagingServiceSecretsTwilioSMS,
|
|
91
|
+
MessagingServiceSecretsTwilioEmail,
|
|
92
|
+
MessagingServiceSecretsMailchimpTransactional,
|
|
93
|
+
MessagingServiceSecretsAWS_SES,
|
|
94
|
+
]
|
|
95
|
+
|
|
96
|
+
PossibleMessagingSecrets = Union[
|
|
97
|
+
MessagingSecretsMailgunDocs,
|
|
98
|
+
MessagingSecretsTwilioSMSDocs,
|
|
99
|
+
MessagingSecretsTwilioEmailDocs,
|
|
100
|
+
MessagingServiceSecretsMailchimpTransactionalDocs,
|
|
101
|
+
MessagingServiceSecretsAWS_SESDocs,
|
|
102
|
+
]
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
from abc import ABC
|
|
2
|
-
from typing import Any, Dict, List, Literal, Optional, Union
|
|
2
|
+
from typing import Annotated, Any, Dict, List, Literal, Optional, Union
|
|
3
3
|
|
|
4
|
-
from pydantic import
|
|
4
|
+
from pydantic import (
|
|
5
|
+
ConfigDict,
|
|
6
|
+
Discriminator,
|
|
7
|
+
Field,
|
|
8
|
+
Tag,
|
|
9
|
+
field_validator,
|
|
10
|
+
model_validator,
|
|
11
|
+
)
|
|
5
12
|
|
|
6
13
|
from fides.api.models.location_regulation_selections import PrivacyNoticeRegion
|
|
7
14
|
from fides.api.schemas.base_class import FidesSchema
|
|
@@ -86,9 +93,26 @@ class LocationCustomPrivacyRequestField(BaseCustomPrivacyRequestField):
|
|
|
86
93
|
return values
|
|
87
94
|
|
|
88
95
|
|
|
89
|
-
# Create a
|
|
90
|
-
|
|
91
|
-
|
|
96
|
+
# Create a discriminated union type using the field_type to properly distinguish between types
|
|
97
|
+
def get_field_type_discriminator(v: Any) -> str:
|
|
98
|
+
"""Discriminator function for CustomPrivacyRequestFieldUnion"""
|
|
99
|
+
if isinstance(v, dict):
|
|
100
|
+
field_type = v.get("field_type")
|
|
101
|
+
else:
|
|
102
|
+
# For model instances, get field_type attribute
|
|
103
|
+
field_type = getattr(v, "field_type", None)
|
|
104
|
+
|
|
105
|
+
if field_type == "location":
|
|
106
|
+
return "location"
|
|
107
|
+
return "custom"
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
CustomPrivacyRequestFieldUnion = Annotated[
|
|
111
|
+
Union[
|
|
112
|
+
Annotated[LocationCustomPrivacyRequestField, Tag("location")],
|
|
113
|
+
Annotated[CustomPrivacyRequestField, Tag("custom")],
|
|
114
|
+
],
|
|
115
|
+
Discriminator(get_field_type_discriminator),
|
|
92
116
|
]
|
|
93
117
|
|
|
94
118
|
|
fides/api/service/deps.py
CHANGED
|
@@ -8,6 +8,7 @@ from fides.config import FidesConfig
|
|
|
8
8
|
from fides.config.config_proxy import ConfigProxy
|
|
9
9
|
from fides.service.dataset.dataset_config_service import DatasetConfigService
|
|
10
10
|
from fides.service.dataset.dataset_service import DatasetService
|
|
11
|
+
from fides.service.event_audit_service import EventAuditService
|
|
11
12
|
from fides.service.messaging.messaging_service import MessagingService
|
|
12
13
|
from fides.service.privacy_request.privacy_request_service import PrivacyRequestService
|
|
13
14
|
from fides.service.system.system_service import SystemService
|
|
@@ -47,8 +48,15 @@ def get_user_service(
|
|
|
47
48
|
return UserService(db, config, config_proxy)
|
|
48
49
|
|
|
49
50
|
|
|
50
|
-
def
|
|
51
|
-
return
|
|
51
|
+
def get_event_audit_service(db: Session = Depends(get_db)) -> EventAuditService:
|
|
52
|
+
return EventAuditService(db)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def get_taxonomy_service(
|
|
56
|
+
db: Session = Depends(get_db),
|
|
57
|
+
event_audit_service: EventAuditService = Depends(get_event_audit_service),
|
|
58
|
+
) -> TaxonomyService:
|
|
59
|
+
return TaxonomyService(db, event_audit_service)
|
|
52
60
|
|
|
53
61
|
|
|
54
62
|
def get_system_service(db: AsyncSession = Depends(get_async_db)) -> SystemService:
|
|
@@ -44,7 +44,6 @@ from fides.api.service.messaging.messaging_crud_service import (
|
|
|
44
44
|
get_enabled_messaging_template_by_type_and_property,
|
|
45
45
|
)
|
|
46
46
|
from fides.api.tasks import DatabaseTask, celery_app
|
|
47
|
-
from fides.api.util.logger import Pii
|
|
48
47
|
from fides.config import CONFIG
|
|
49
48
|
from fides.config.config_proxy import ConfigProxy
|
|
50
49
|
from fides.service.messaging.aws_ses_service import AWS_SES_Service
|
|
@@ -663,9 +662,9 @@ def _mailgun_dispatcher(
|
|
|
663
662
|
raise MessageDispatchException(
|
|
664
663
|
f"Email failed to send with status code {response.status_code}"
|
|
665
664
|
)
|
|
666
|
-
except Exception as
|
|
667
|
-
logger.error("Email failed to send: {}",
|
|
668
|
-
raise MessageDispatchException(f"Email failed to send due to: {
|
|
665
|
+
except Exception as exc:
|
|
666
|
+
logger.error("Email failed to send: {}", str(exc))
|
|
667
|
+
raise MessageDispatchException(f"Email failed to send due to: {str(exc)}")
|
|
669
668
|
|
|
670
669
|
|
|
671
670
|
def _twilio_email_dispatcher(
|
|
@@ -707,14 +706,14 @@ def _twilio_email_dispatcher(
|
|
|
707
706
|
logger.error(
|
|
708
707
|
"Email failed to send: %s: %s",
|
|
709
708
|
response.status_code,
|
|
710
|
-
|
|
709
|
+
str(response.body),
|
|
711
710
|
)
|
|
712
711
|
raise MessageDispatchException(
|
|
713
|
-
f"Email failed to send: {response.status_code}, {
|
|
712
|
+
f"Email failed to send: {response.status_code}, {str(response.body)}"
|
|
714
713
|
)
|
|
715
|
-
except Exception as
|
|
716
|
-
logger.error("Email failed to send: {}",
|
|
717
|
-
raise MessageDispatchException(f"Email failed to send due to: {
|
|
714
|
+
except Exception as exc:
|
|
715
|
+
logger.error("Email failed to send: {}", str(exc))
|
|
716
|
+
raise MessageDispatchException(f"Email failed to send due to: {str(exc)}")
|
|
718
717
|
|
|
719
718
|
|
|
720
719
|
def _twilio_sms_dispatcher(
|
|
@@ -753,9 +752,9 @@ def _twilio_sms_dispatcher(
|
|
|
753
752
|
raise MessageDispatchException(
|
|
754
753
|
"Message failed to send. Either sender phone number or messaging service sid must be provided."
|
|
755
754
|
)
|
|
756
|
-
except TwilioRestException as
|
|
757
|
-
logger.error("Twilio SMS failed to send: {}",
|
|
758
|
-
raise MessageDispatchException(f"Twilio SMS failed to send due to: {
|
|
755
|
+
except TwilioRestException as exc:
|
|
756
|
+
logger.error("Twilio SMS failed to send: {}", str(exc))
|
|
757
|
+
raise MessageDispatchException(f"Twilio SMS failed to send due to: {str(exc)}")
|
|
759
758
|
|
|
760
759
|
|
|
761
760
|
def _aws_ses_dispatcher(
|
|
@@ -769,9 +768,11 @@ def _aws_ses_dispatcher(
|
|
|
769
768
|
|
|
770
769
|
try:
|
|
771
770
|
aws_ses_serivce.send_email(to, message.subject, message.body)
|
|
772
|
-
except Exception as
|
|
773
|
-
logger.error("Email failed to send: {}",
|
|
774
|
-
raise MessageDispatchException(
|
|
771
|
+
except Exception as exc:
|
|
772
|
+
logger.error("Email failed to send: {}", str(exc))
|
|
773
|
+
raise MessageDispatchException(
|
|
774
|
+
f"AWS SES email failed to send due to: {str(exc)}"
|
|
775
|
+
)
|
|
775
776
|
|
|
776
777
|
|
|
777
778
|
def _get_template_id_if_exists(
|
|
@@ -25,7 +25,7 @@ from fides.api.schemas.messaging.messaging import (
|
|
|
25
25
|
|
|
26
26
|
def update_messaging_config(
|
|
27
27
|
db: Session, key: FidesKey, config: MessagingConfigRequest
|
|
28
|
-
) ->
|
|
28
|
+
) -> MessagingConfig:
|
|
29
29
|
existing_config_with_key: Optional[MessagingConfig] = MessagingConfig.get_by(
|
|
30
30
|
db=db, field="key", value=key
|
|
31
31
|
)
|
|
@@ -38,7 +38,7 @@ def update_messaging_config(
|
|
|
38
38
|
|
|
39
39
|
def create_or_update_messaging_config(
|
|
40
40
|
db: Session, config: MessagingConfigRequest
|
|
41
|
-
) ->
|
|
41
|
+
) -> MessagingConfig:
|
|
42
42
|
data = {
|
|
43
43
|
"key": config.key,
|
|
44
44
|
"name": config.name,
|
|
@@ -46,16 +46,10 @@ def create_or_update_messaging_config(
|
|
|
46
46
|
}
|
|
47
47
|
if config.details:
|
|
48
48
|
data["details"] = config.details.__dict__ # type: ignore
|
|
49
|
-
|
|
49
|
+
return MessagingConfig.create_or_update(
|
|
50
50
|
db=db,
|
|
51
51
|
data=data,
|
|
52
52
|
)
|
|
53
|
-
return MessagingConfigResponse(
|
|
54
|
-
name=messaging_config.name,
|
|
55
|
-
key=messaging_config.key,
|
|
56
|
-
service_type=messaging_config.service_type.value, # type: ignore
|
|
57
|
-
details=messaging_config.details,
|
|
58
|
-
)
|
|
59
53
|
|
|
60
54
|
|
|
61
55
|
def delete_messaging_config(db: Session, key: FidesKey) -> None:
|
|
@@ -84,6 +78,8 @@ def get_messaging_config_by_key(db: Session, key: FidesKey) -> MessagingConfigRe
|
|
|
84
78
|
key=config.key,
|
|
85
79
|
service_type=config.service_type.value, # type: ignore[attr-defined]
|
|
86
80
|
details=config.details,
|
|
81
|
+
last_test_timestamp=config.last_test_timestamp,
|
|
82
|
+
last_test_succeeded=config.last_test_succeeded,
|
|
87
83
|
)
|
|
88
84
|
|
|
89
85
|
|
|
@@ -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)
|
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/cache.py
CHANGED
|
@@ -220,7 +220,7 @@ def get_cache() -> FidesopsRedis:
|
|
|
220
220
|
|
|
221
221
|
if not connected:
|
|
222
222
|
raise common_exceptions.RedisConnectionError(
|
|
223
|
-
"Unable to establish Redis connection.
|
|
223
|
+
"Unable to establish Redis connection. Fides is unable to accept PrivacyRequests."
|
|
224
224
|
)
|
|
225
225
|
|
|
226
226
|
return _connection
|
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
|
|
|
@@ -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/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-
|
|
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-2766492c5dbceb0a.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-302177edeb0dc4f5.js" defer=""></script><script src="/_next/static/chunks/pages/404-2eb8aed4939f1142.js" defer=""></script><script src="/_next/static/v72X5v2wmNmYdDpd8p1YY/_buildManifest.js" defer=""></script><script src="/_next/static/v72X5v2wmNmYdDpd8p1YY/_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":"v72X5v2wmNmYdDpd8p1YY","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
|
@@ -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"}),"."]})]})]})}}}]);
|