ethyca-fides 2.69.3b1__py2.py3-none-any.whl → 2.70.0rc0__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.0rc0.dist-info}/METADATA +1 -1
- {ethyca_fides-2.69.3b1.dist-info → ethyca_fides-2.70.0rc0.dist-info}/RECORD +251 -229
- 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/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/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/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/IEGnswU38MkVE0gbr0ZXX/_buildManifest.js +1 -0
- 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-17079d2f8cf94941.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-919e2dff24e40397.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-e08a732e348aa667.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-a94e19870fe3e210.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-b20c53b82a54f5ea.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-ae3f3470e2734933.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-1b9c4b2749e3ece4.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/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.0rc0.dist-info}/WHEEL +0 -0
- {ethyca_fides-2.69.3b1.dist-info → ethyca_fides-2.70.0rc0.dist-info}/entry_points.txt +0 -0
- {ethyca_fides-2.69.3b1.dist-info → ethyca_fides-2.70.0rc0.dist-info}/licenses/LICENSE +0 -0
- {ethyca_fides-2.69.3b1.dist-info → ethyca_fides-2.70.0rc0.dist-info}/top_level.txt +0 -0
- /fides/ui-build/static/admin/_next/static/{_b75ACzlGNz3tZqGUPTE5 → IEGnswU38MkVE0gbr0ZXX}/_ssgManifest.js +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
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"""EventAudit model and related enums for comprehensive audit logging."""
|
|
2
|
+
|
|
3
|
+
from enum import Enum as EnumType
|
|
4
|
+
|
|
5
|
+
from sqlalchemy import Column, String, Text
|
|
6
|
+
from sqlalchemy.dialects.postgresql import JSONB
|
|
7
|
+
from sqlalchemy.ext.declarative import declared_attr
|
|
8
|
+
|
|
9
|
+
from fides.api.db.base_class import Base
|
|
10
|
+
from fides.api.db.util import EnumColumn
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class EventAuditType(str, EnumType):
|
|
14
|
+
"""Hierarchical event types for audit logging - variable depth as needed."""
|
|
15
|
+
|
|
16
|
+
# System
|
|
17
|
+
system_updated = "system.updated"
|
|
18
|
+
|
|
19
|
+
# System group
|
|
20
|
+
system_group_created = "system_group.created"
|
|
21
|
+
system_group_updated = "system_group.updated"
|
|
22
|
+
system_group_deleted = "system_group.deleted"
|
|
23
|
+
|
|
24
|
+
# Taxonomy
|
|
25
|
+
taxonomy_created = "taxonomy.created"
|
|
26
|
+
taxonomy_updated = "taxonomy.updated"
|
|
27
|
+
taxonomy_deleted = "taxonomy.deleted"
|
|
28
|
+
taxonomy_usage_updated = "taxonomy.usage.updated"
|
|
29
|
+
taxonomy_usage_deleted = "taxonomy.usage.deleted"
|
|
30
|
+
taxonomy_element_created = "taxonomy.element.created"
|
|
31
|
+
taxonomy_element_updated = "taxonomy.element.updated"
|
|
32
|
+
taxonomy_element_deleted = "taxonomy.element.deleted"
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class EventAuditStatus(str, EnumType):
|
|
36
|
+
"""Status enum for event audit logging."""
|
|
37
|
+
|
|
38
|
+
succeeded = "succeeded"
|
|
39
|
+
failed = "failed"
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class EventAudit(Base):
|
|
43
|
+
"""Audit log for significant business events across the Fides platform."""
|
|
44
|
+
|
|
45
|
+
@declared_attr
|
|
46
|
+
def __tablename__(cls) -> str:
|
|
47
|
+
return "event_audit"
|
|
48
|
+
|
|
49
|
+
# Uses EventAuditType values but left as String to avoid future migrations
|
|
50
|
+
event_type = Column(String, index=True, nullable=False)
|
|
51
|
+
user_id = Column(String, nullable=True, index=True)
|
|
52
|
+
|
|
53
|
+
# Resource information
|
|
54
|
+
resource_type = Column(String, nullable=True, index=True)
|
|
55
|
+
resource_identifier = Column(String, nullable=True, index=True)
|
|
56
|
+
|
|
57
|
+
# User-friendly description of event
|
|
58
|
+
description = Column(Text, nullable=True)
|
|
59
|
+
|
|
60
|
+
# Structured data about event
|
|
61
|
+
event_details = Column(JSONB, nullable=True)
|
|
62
|
+
|
|
63
|
+
# Status of the event
|
|
64
|
+
status = Column(
|
|
65
|
+
EnumColumn(EventAuditStatus),
|
|
66
|
+
index=True,
|
|
67
|
+
nullable=False,
|
|
68
|
+
)
|
fides/api/models/messaging.py
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
from datetime import datetime
|
|
3
4
|
from typing import Dict, Optional, Type, Union
|
|
4
5
|
|
|
5
6
|
from loguru import logger
|
|
6
7
|
from pydantic import ValidationError
|
|
7
|
-
from sqlalchemy import Column, Enum, String
|
|
8
|
+
from sqlalchemy import Boolean, Column, DateTime, Enum, String
|
|
8
9
|
from sqlalchemy.dialects.postgresql import JSONB
|
|
9
10
|
from sqlalchemy.ext.mutable import MutableDict
|
|
10
11
|
from sqlalchemy.orm import Session
|
|
@@ -18,17 +19,18 @@ from fides.api.db.base_class import Base, JSONTypeOverride
|
|
|
18
19
|
from fides.api.schemas.messaging.messaging import (
|
|
19
20
|
EMAIL_MESSAGING_SERVICES,
|
|
20
21
|
SMS_MESSAGING_SERVICES,
|
|
21
|
-
|
|
22
|
+
MessagingConnectionTestStatus,
|
|
22
23
|
MessagingMethod,
|
|
24
|
+
MessagingServiceType,
|
|
25
|
+
)
|
|
26
|
+
from fides.api.schemas.messaging.shared_schemas import (
|
|
27
|
+
SUPPORTED_MESSAGING_SERVICE_SECRETS,
|
|
23
28
|
MessagingServiceSecretsAWS_SES,
|
|
24
29
|
MessagingServiceSecretsMailchimpTransactional,
|
|
25
30
|
MessagingServiceSecretsMailgun,
|
|
26
31
|
MessagingServiceSecretsTwilioEmail,
|
|
27
32
|
MessagingServiceSecretsTwilioSMS,
|
|
28
|
-
|
|
29
|
-
)
|
|
30
|
-
from fides.api.schemas.messaging.messaging_secrets_docs_only import (
|
|
31
|
-
possible_messaging_secrets,
|
|
33
|
+
PossibleMessagingSecrets,
|
|
32
34
|
)
|
|
33
35
|
from fides.api.util.logger import Pii
|
|
34
36
|
from fides.config import CONFIG
|
|
@@ -48,7 +50,7 @@ def get_messaging_method(
|
|
|
48
50
|
|
|
49
51
|
def get_schema_for_secrets(
|
|
50
52
|
service_type: MessagingServiceType,
|
|
51
|
-
secrets:
|
|
53
|
+
secrets: PossibleMessagingSecrets,
|
|
52
54
|
) -> SUPPORTED_MESSAGING_SERVICE_SECRETS:
|
|
53
55
|
"""
|
|
54
56
|
Returns the secrets that pertain to `service_type` represented as a Pydantic schema
|
|
@@ -87,6 +89,8 @@ class MessagingConfig(Base):
|
|
|
87
89
|
Enum(MessagingServiceType), index=True, unique=True, nullable=False
|
|
88
90
|
)
|
|
89
91
|
details = Column(MutableDict.as_mutable(JSONB), nullable=True)
|
|
92
|
+
last_test_timestamp = Column(DateTime(timezone=True))
|
|
93
|
+
last_test_succeeded = Column(Boolean)
|
|
90
94
|
secrets = Column(
|
|
91
95
|
MutableDict.as_mutable(
|
|
92
96
|
StringEncryptedType(
|
|
@@ -136,7 +140,7 @@ class MessagingConfig(Base):
|
|
|
136
140
|
self,
|
|
137
141
|
*,
|
|
138
142
|
db: Session,
|
|
139
|
-
messaging_secrets:
|
|
143
|
+
messaging_secrets: PossibleMessagingSecrets,
|
|
140
144
|
) -> None:
|
|
141
145
|
"""Creates or updates secrets associated with a config id"""
|
|
142
146
|
|
|
@@ -185,6 +189,18 @@ class MessagingConfig(Base):
|
|
|
185
189
|
f"Unknown notification_service_type {active_default_messaging_type} configured"
|
|
186
190
|
)
|
|
187
191
|
|
|
192
|
+
def update_test_status(
|
|
193
|
+
self, test_status: MessagingConnectionTestStatus, db: Session
|
|
194
|
+
) -> None:
|
|
195
|
+
"""
|
|
196
|
+
Updates last_test_timestamp and last_test_succeeded after an attempt to send a test message.
|
|
197
|
+
"""
|
|
198
|
+
self.last_test_timestamp = datetime.now()
|
|
199
|
+
self.last_test_succeeded = (
|
|
200
|
+
test_status == MessagingConnectionTestStatus.succeeded
|
|
201
|
+
)
|
|
202
|
+
self.save(db)
|
|
203
|
+
|
|
188
204
|
|
|
189
205
|
def default_messaging_config_name(service_type: str) -> str:
|
|
190
206
|
"""
|
|
@@ -192,7 +208,7 @@ def default_messaging_config_name(service_type: str) -> str:
|
|
|
192
208
|
|
|
193
209
|
Returns a name to be used in a default messaging config for the given type.
|
|
194
210
|
"""
|
|
195
|
-
return
|
|
211
|
+
return MessagingServiceType(service_type).human_readable
|
|
196
212
|
|
|
197
213
|
|
|
198
214
|
def default_messaging_config_key(service_type: str) -> str:
|
|
@@ -201,4 +217,8 @@ def default_messaging_config_key(service_type: str) -> str:
|
|
|
201
217
|
|
|
202
218
|
Returns a key to be used in a default messaging config for the given type.
|
|
203
219
|
"""
|
|
204
|
-
|
|
220
|
+
# Historically, when a key was not supplied, the service type string itself
|
|
221
|
+
# was used as the key (e.g. "mailgun"). Reverting to that behaviour keeps
|
|
222
|
+
# backward-compatibility with existing tests and API consumers that may rely
|
|
223
|
+
# on this convention.
|
|
224
|
+
return service_type.lower()
|
fides/api/models/taxonomy.py
CHANGED
|
@@ -85,10 +85,17 @@ class Taxonomy(Base, FidesBase):
|
|
|
85
85
|
raise ValidationError(
|
|
86
86
|
f"Cannot create taxonomy '{fides_key}'. This is a taxonomy managed by the system."
|
|
87
87
|
)
|
|
88
|
-
applies_to = data.
|
|
88
|
+
applies_to = data.get("applies_to", [])
|
|
89
|
+
|
|
90
|
+
# Create a copy of data without applies_to to avoid modifying the input
|
|
91
|
+
data_without_applies_to = {
|
|
92
|
+
key: value for key, value in data.items() if key != "applies_to"
|
|
93
|
+
}
|
|
89
94
|
|
|
90
95
|
# Create the taxonomy
|
|
91
|
-
taxonomy: Taxonomy = super().create(
|
|
96
|
+
taxonomy: Taxonomy = super().create(
|
|
97
|
+
db=db, data=data_without_applies_to, check_name=check_name
|
|
98
|
+
)
|
|
92
99
|
|
|
93
100
|
# Reconcile allowed usages if applies_to was provided
|
|
94
101
|
if applies_to:
|
|
@@ -98,10 +105,15 @@ class Taxonomy(Base, FidesBase):
|
|
|
98
105
|
|
|
99
106
|
def update(self, db: Session, *, data: Dict[str, Any]) -> "Taxonomy":
|
|
100
107
|
"""Update a Taxonomy with proper handling of applies_to."""
|
|
101
|
-
applies_to = data.
|
|
108
|
+
applies_to = data.get("applies_to", None)
|
|
109
|
+
|
|
110
|
+
# Create a copy of data without applies_to to avoid modifying the input
|
|
111
|
+
data_without_applies_to = {
|
|
112
|
+
key: value for key, value in data.items() if key != "applies_to"
|
|
113
|
+
}
|
|
102
114
|
|
|
103
115
|
# Update the base fields
|
|
104
|
-
super().update(db=db, data=
|
|
116
|
+
super().update(db=db, data=data_without_applies_to)
|
|
105
117
|
|
|
106
118
|
# If applies_to was provided, reconcile allowed usages
|
|
107
119
|
if applies_to is not None:
|
|
@@ -53,8 +53,11 @@ class NotificationApplicationConfig(FidesSchema):
|
|
|
53
53
|
|
|
54
54
|
@field_validator("notification_service_type", mode="before")
|
|
55
55
|
@classmethod
|
|
56
|
-
def validate_notification_service_type(cls, value: str) -> Optional[str]:
|
|
56
|
+
def validate_notification_service_type(cls, value: Optional[str]) -> Optional[str]:
|
|
57
57
|
"""Ensure the provided type is a valid value."""
|
|
58
|
+
if value is None:
|
|
59
|
+
return None # Allow None values for disabling messaging
|
|
60
|
+
|
|
58
61
|
value = value.lower() # force lowercase for safety
|
|
59
62
|
try:
|
|
60
63
|
MessagingServiceType[value]
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
from datetime import datetime
|
|
3
4
|
from enum import Enum
|
|
4
5
|
from typing import Any, Dict, List, Optional, Tuple, Type, Union
|
|
5
6
|
|
|
@@ -7,15 +8,14 @@ from fideslang.default_taxonomy import DEFAULT_TAXONOMY
|
|
|
7
8
|
from fideslang.validation import FidesKey
|
|
8
9
|
from pydantic import BaseModel, ConfigDict, Field, model_validator
|
|
9
10
|
|
|
10
|
-
from fides.api.custom_types import
|
|
11
|
+
from fides.api.custom_types import SafeStr
|
|
11
12
|
from fides.api.schemas import Msg
|
|
12
13
|
from fides.api.schemas.api import BulkResponse, BulkUpdateFailed
|
|
13
|
-
from fides.api.schemas.
|
|
14
|
-
BaseAWSSchema,
|
|
15
|
-
)
|
|
14
|
+
from fides.api.schemas.messaging.shared_schemas import PossibleMessagingSecrets
|
|
16
15
|
from fides.api.schemas.privacy_preference import MinimalPrivacyPreferenceHistorySchema
|
|
17
16
|
from fides.api.schemas.privacy_request import Consent
|
|
18
17
|
from fides.api.schemas.property import MinimalProperty
|
|
18
|
+
from fides.api.schemas.redis_cache import IdentityBase
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
class MessagingMethod(Enum):
|
|
@@ -44,6 +44,25 @@ class MessagingServiceType(Enum):
|
|
|
44
44
|
return member
|
|
45
45
|
return None
|
|
46
46
|
|
|
47
|
+
@property
|
|
48
|
+
def human_readable(self) -> str:
|
|
49
|
+
"""
|
|
50
|
+
Human-readable mapping for MessagingServiceType
|
|
51
|
+
"""
|
|
52
|
+
readable_mapping: Dict[str, str] = {
|
|
53
|
+
MessagingServiceType.mailgun.value: "Mailgun",
|
|
54
|
+
MessagingServiceType.twilio_text.value: "Twilio SMS",
|
|
55
|
+
MessagingServiceType.twilio_email.value: "Twilio Email",
|
|
56
|
+
MessagingServiceType.mailchimp_transactional.value: "Mailchimp Transactional",
|
|
57
|
+
MessagingServiceType.aws_ses.value: "AWS SES",
|
|
58
|
+
}
|
|
59
|
+
try:
|
|
60
|
+
return readable_mapping[self.value]
|
|
61
|
+
except KeyError:
|
|
62
|
+
raise NotImplementedError(
|
|
63
|
+
"Add new MessagingServiceType to human_readable mapping"
|
|
64
|
+
)
|
|
65
|
+
|
|
47
66
|
|
|
48
67
|
EMAIL_MESSAGING_SERVICES: Tuple[str, ...] = (
|
|
49
68
|
MessagingServiceType.mailgun.value,
|
|
@@ -85,6 +104,12 @@ CONFIGURABLE_MESSAGING_ACTION_TYPES: Tuple[str, ...] = (
|
|
|
85
104
|
)
|
|
86
105
|
|
|
87
106
|
|
|
107
|
+
class MessagingTestBodyParams(BaseModel):
|
|
108
|
+
"""Body params required for testing messaging service"""
|
|
109
|
+
|
|
110
|
+
to_identity: IdentityBase
|
|
111
|
+
|
|
112
|
+
|
|
88
113
|
class ErrorNotificationBodyParams(BaseModel):
|
|
89
114
|
"""Body params required for privacy request error notifications."""
|
|
90
115
|
|
|
@@ -339,56 +364,6 @@ class MessagingServiceSecrets(Enum):
|
|
|
339
364
|
AWS_ASSUME_ROLE_ARN = "aws_assume_role_arn"
|
|
340
365
|
|
|
341
366
|
|
|
342
|
-
class MessagingServiceSecretsMailchimpTransactional(BaseModel):
|
|
343
|
-
"""The secrets required to connect to Mailchimp Transactional."""
|
|
344
|
-
|
|
345
|
-
mailchimp_transactional_api_key: str
|
|
346
|
-
model_config = ConfigDict(extra="forbid")
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
class MessagingServiceSecretsMailgun(BaseModel):
|
|
350
|
-
"""The secrets required to connect to Mailgun."""
|
|
351
|
-
|
|
352
|
-
mailgun_api_key: str
|
|
353
|
-
model_config = ConfigDict(extra="forbid")
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
class MessagingServiceSecretsTwilioSMS(BaseModel):
|
|
357
|
-
"""The secrets required to connect to Twilio SMS."""
|
|
358
|
-
|
|
359
|
-
twilio_account_sid: str
|
|
360
|
-
twilio_auth_token: str
|
|
361
|
-
twilio_messaging_service_sid: Optional[str] = None
|
|
362
|
-
twilio_sender_phone_number: Optional[PhoneNumber] = None
|
|
363
|
-
model_config = ConfigDict(extra="forbid")
|
|
364
|
-
|
|
365
|
-
@model_validator(mode="before")
|
|
366
|
-
@classmethod
|
|
367
|
-
def validate_fields(cls, values: Dict[str, Any]) -> Dict[str, Any]:
|
|
368
|
-
sender_phone = values.get("twilio_sender_phone_number")
|
|
369
|
-
if not values.get("twilio_messaging_service_sid") and not sender_phone:
|
|
370
|
-
raise ValueError(
|
|
371
|
-
"Either the twilio_messaging_service_sid or the twilio_sender_phone_number should be supplied."
|
|
372
|
-
)
|
|
373
|
-
return values
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
class MessagingServiceSecretsTwilioEmail(BaseModel):
|
|
377
|
-
"""The secrets required to connect to twilio email."""
|
|
378
|
-
|
|
379
|
-
twilio_api_key: str
|
|
380
|
-
model_config = ConfigDict(extra="forbid")
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
class MessagingServiceSecretsAWS_SES(BaseAWSSchema):
|
|
384
|
-
"""
|
|
385
|
-
The secrets required to connect to AWS SES.
|
|
386
|
-
Inherits basic AWS authentication schema.
|
|
387
|
-
"""
|
|
388
|
-
|
|
389
|
-
model_config = ConfigDict(extra="forbid")
|
|
390
|
-
|
|
391
|
-
|
|
392
367
|
class MessagingConfigBase(BaseModel):
|
|
393
368
|
"""Base model shared by messaging config related models"""
|
|
394
369
|
|
|
@@ -453,8 +428,9 @@ class MessagingConfigRequestBase(MessagingConfigBase):
|
|
|
453
428
|
class MessagingConfigRequest(MessagingConfigRequestBase):
|
|
454
429
|
"""Messaging Config Request Schema"""
|
|
455
430
|
|
|
456
|
-
name: str
|
|
431
|
+
name: Optional[str] = None
|
|
457
432
|
key: Optional[FidesKey] = None
|
|
433
|
+
secrets: Optional[PossibleMessagingSecrets] = None
|
|
458
434
|
|
|
459
435
|
|
|
460
436
|
class MessagingConfigResponse(MessagingConfigBase):
|
|
@@ -462,16 +438,8 @@ class MessagingConfigResponse(MessagingConfigBase):
|
|
|
462
438
|
|
|
463
439
|
name: str
|
|
464
440
|
key: FidesKey
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
SUPPORTED_MESSAGING_SERVICE_SECRETS = Union[
|
|
469
|
-
MessagingServiceSecretsMailgun,
|
|
470
|
-
MessagingServiceSecretsTwilioSMS,
|
|
471
|
-
MessagingServiceSecretsTwilioEmail,
|
|
472
|
-
MessagingServiceSecretsMailchimpTransactional,
|
|
473
|
-
MessagingServiceSecretsAWS_SES,
|
|
474
|
-
]
|
|
441
|
+
last_test_timestamp: Optional[datetime] = None
|
|
442
|
+
last_test_succeeded: Optional[bool] = None
|
|
475
443
|
|
|
476
444
|
|
|
477
445
|
class MessagingConnectionTestStatus(Enum):
|
|
@@ -479,7 +447,6 @@ class MessagingConnectionTestStatus(Enum):
|
|
|
479
447
|
|
|
480
448
|
succeeded = "succeeded"
|
|
481
449
|
failed = "failed"
|
|
482
|
-
skipped = "skipped"
|
|
483
450
|
|
|
484
451
|
|
|
485
452
|
class TestMessagingStatusMessage(Msg):
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from typing import Union
|
|
2
2
|
|
|
3
3
|
from fides.api.schemas.base_class import NoValidationSchema
|
|
4
|
-
from fides.api.schemas.messaging.
|
|
4
|
+
from fides.api.schemas.messaging.shared_schemas import (
|
|
5
5
|
MessagingServiceSecretsAWS_SES,
|
|
6
6
|
MessagingServiceSecretsMailchimpTransactional,
|
|
7
7
|
MessagingServiceSecretsMailgun,
|
|
@@ -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
|
+
]
|
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
|