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
fides/_version.py
CHANGED
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2025-09-
|
|
11
|
+
"date": "2025-09-10T16:14:21-0400",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "2.
|
|
14
|
+
"full-revisionid": "cb174101f57cbd0c9f18c818631b1fcab77b8d6b",
|
|
15
|
+
"version": "2.70.0rc0"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"""adding default system groups
|
|
2
|
+
|
|
3
|
+
Revision ID: 4d8c0fcc5771
|
|
4
|
+
Revises: 5fa78b1f324d
|
|
5
|
+
Create Date: 2025-09-10 05:40:19.064377
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from alembic import op
|
|
10
|
+
|
|
11
|
+
# revision identifiers, used by Alembic.
|
|
12
|
+
revision = "4d8c0fcc5771"
|
|
13
|
+
down_revision = "5fa78b1f324d"
|
|
14
|
+
branch_labels = None
|
|
15
|
+
depends_on = None
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def upgrade():
|
|
19
|
+
# Insert default system groups into taxonomy_element table
|
|
20
|
+
op.execute(
|
|
21
|
+
"""
|
|
22
|
+
INSERT INTO taxonomy_element (id, created_at, updated_at, taxonomy_type, fides_key, name, description, parent_key, active, tags, organization_fides_key)
|
|
23
|
+
VALUES
|
|
24
|
+
('tax_' || gen_random_uuid(), now(), now(), 'system_group', 'analytics_business_intelligence', 'Analytics & Business intelligence', 'System group for analytics and business intelligence systems', NULL, true, NULL, 'default_organization'),
|
|
25
|
+
('tax_' || gen_random_uuid(), now(), now(), 'system_group', 'customer_management', 'Customer management', 'System group for customer management systems', NULL, true, NULL, 'default_organization'),
|
|
26
|
+
('tax_' || gen_random_uuid(), now(), now(), 'system_group', 'internal_operations', 'Internal operations', 'System group for internal operations systems', NULL, true, NULL, 'default_organization'),
|
|
27
|
+
('tax_' || gen_random_uuid(), now(), now(), 'system_group', 'legal_compliance', 'Legal & Compliance', 'System group for legal and compliance systems', NULL, true, NULL, 'default_organization'),
|
|
28
|
+
('tax_' || gen_random_uuid(), now(), now(), 'system_group', 'marketing', 'Marketing', 'System group for marketing systems', NULL, true, NULL, 'default_organization'),
|
|
29
|
+
('tax_' || gen_random_uuid(), now(), now(), 'system_group', 'payments_billing', 'Payments & Billing', 'System group for payments and billing systems', NULL, true, NULL, 'default_organization'),
|
|
30
|
+
('tax_' || gen_random_uuid(), now(), now(), 'system_group', 'product_service_delivery', 'Product & Service delivery', 'System group for product and service delivery systems', NULL, true, NULL, 'default_organization'),
|
|
31
|
+
('tax_' || gen_random_uuid(), now(), now(), 'system_group', 'research_development', 'Research & Development', 'System group for research and development systems', NULL, true, NULL, 'default_organization'),
|
|
32
|
+
('tax_' || gen_random_uuid(), now(), now(), 'system_group', 'sales_revenue_operations', 'Sales & Revenue operations', 'System group for sales and revenue operations systems', NULL, true, NULL, 'default_organization'),
|
|
33
|
+
('tax_' || gen_random_uuid(), now(), now(), 'system_group', 'security_fraud', 'Security & Fraud', 'System group for security and fraud systems', NULL, true, NULL, 'default_organization')
|
|
34
|
+
"""
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
# Insert default system groups into system_group table with white labels
|
|
38
|
+
op.execute(
|
|
39
|
+
"""
|
|
40
|
+
INSERT INTO system_group (id, created_at, updated_at, fides_key, label_color, data_steward_username, data_uses)
|
|
41
|
+
VALUES
|
|
42
|
+
('sys_' || gen_random_uuid(), now(), now(), 'analytics_business_intelligence', 'taxonomy_white', NULL, '{}'),
|
|
43
|
+
('sys_' || gen_random_uuid(), now(), now(), 'customer_management', 'taxonomy_white', NULL, '{}'),
|
|
44
|
+
('sys_' || gen_random_uuid(), now(), now(), 'internal_operations', 'taxonomy_white', NULL, '{}'),
|
|
45
|
+
('sys_' || gen_random_uuid(), now(), now(), 'legal_compliance', 'taxonomy_white', NULL, '{}'),
|
|
46
|
+
('sys_' || gen_random_uuid(), now(), now(), 'marketing', 'taxonomy_white', NULL, '{}'),
|
|
47
|
+
('sys_' || gen_random_uuid(), now(), now(), 'payments_billing', 'taxonomy_white', NULL, '{}'),
|
|
48
|
+
('sys_' || gen_random_uuid(), now(), now(), 'product_service_delivery', 'taxonomy_white', NULL, '{}'),
|
|
49
|
+
('sys_' || gen_random_uuid(), now(), now(), 'research_development', 'taxonomy_white', NULL, '{}'),
|
|
50
|
+
('sys_' || gen_random_uuid(), now(), now(), 'sales_revenue_operations', 'taxonomy_white', NULL, '{}'),
|
|
51
|
+
('sys_' || gen_random_uuid(), now(), now(), 'security_fraud', 'taxonomy_white', NULL, '{}')
|
|
52
|
+
"""
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def downgrade():
|
|
57
|
+
# Remove default system groups from both tables
|
|
58
|
+
op.execute(
|
|
59
|
+
"""
|
|
60
|
+
DELETE FROM system_group
|
|
61
|
+
WHERE fides_key IN (
|
|
62
|
+
'analytics_business_intelligence', 'customer_management', 'internal_operations',
|
|
63
|
+
'legal_compliance', 'marketing', 'payments_billing', 'product_service_delivery',
|
|
64
|
+
'research_development', 'sales_revenue_operations', 'security_fraud'
|
|
65
|
+
)
|
|
66
|
+
"""
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
op.execute(
|
|
70
|
+
"""
|
|
71
|
+
DELETE FROM taxonomy_element
|
|
72
|
+
WHERE fides_key IN (
|
|
73
|
+
'analytics_business_intelligence', 'customer_management', 'internal_operations',
|
|
74
|
+
'legal_compliance', 'marketing', 'payments_billing', 'product_service_delivery',
|
|
75
|
+
'research_development', 'sales_revenue_operations', 'security_fraud'
|
|
76
|
+
) AND taxonomy_type = 'system_group'
|
|
77
|
+
"""
|
|
78
|
+
)
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"""add event audit table
|
|
2
|
+
|
|
3
|
+
Revision ID: 5fa78b1f324d
|
|
4
|
+
Revises: fd7571bef683
|
|
5
|
+
Create Date: 2025-09-09 17:51:15.715976
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import sqlalchemy as sa
|
|
10
|
+
from alembic import op
|
|
11
|
+
from sqlalchemy.dialects import postgresql
|
|
12
|
+
|
|
13
|
+
# revision identifiers, used by Alembic.
|
|
14
|
+
revision = "5fa78b1f324d"
|
|
15
|
+
down_revision = "fd7571bef683"
|
|
16
|
+
branch_labels = None
|
|
17
|
+
depends_on = None
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def upgrade():
|
|
21
|
+
op.create_table(
|
|
22
|
+
"event_audit",
|
|
23
|
+
sa.Column("id", sa.String(length=255), nullable=False),
|
|
24
|
+
sa.Column(
|
|
25
|
+
"created_at",
|
|
26
|
+
sa.DateTime(timezone=True),
|
|
27
|
+
server_default=sa.text("now()"),
|
|
28
|
+
nullable=True,
|
|
29
|
+
),
|
|
30
|
+
sa.Column(
|
|
31
|
+
"updated_at",
|
|
32
|
+
sa.DateTime(timezone=True),
|
|
33
|
+
server_default=sa.text("now()"),
|
|
34
|
+
nullable=True,
|
|
35
|
+
),
|
|
36
|
+
sa.Column("event_type", sa.String(), nullable=False),
|
|
37
|
+
sa.Column("user_id", sa.String(), nullable=True),
|
|
38
|
+
sa.Column("resource_type", sa.String(), nullable=True),
|
|
39
|
+
sa.Column("resource_identifier", sa.String(), nullable=True),
|
|
40
|
+
sa.Column("description", sa.Text(), nullable=True),
|
|
41
|
+
sa.Column(
|
|
42
|
+
"event_details", postgresql.JSONB(astext_type=sa.Text()), nullable=True
|
|
43
|
+
),
|
|
44
|
+
sa.Column(
|
|
45
|
+
"status",
|
|
46
|
+
sa.Enum("succeeded", "failed", name="eventauditstatus"),
|
|
47
|
+
nullable=False,
|
|
48
|
+
),
|
|
49
|
+
sa.PrimaryKeyConstraint("id"),
|
|
50
|
+
)
|
|
51
|
+
op.create_index(
|
|
52
|
+
op.f("ix_event_audit_event_type"), "event_audit", ["event_type"], unique=False
|
|
53
|
+
)
|
|
54
|
+
op.create_index(op.f("ix_event_audit_id"), "event_audit", ["id"], unique=False)
|
|
55
|
+
op.create_index(
|
|
56
|
+
op.f("ix_event_audit_resource_identifier"),
|
|
57
|
+
"event_audit",
|
|
58
|
+
["resource_identifier"],
|
|
59
|
+
unique=False,
|
|
60
|
+
)
|
|
61
|
+
op.create_index(
|
|
62
|
+
op.f("ix_event_audit_resource_type"),
|
|
63
|
+
"event_audit",
|
|
64
|
+
["resource_type"],
|
|
65
|
+
unique=False,
|
|
66
|
+
)
|
|
67
|
+
op.create_index(
|
|
68
|
+
op.f("ix_event_audit_user_id"), "event_audit", ["user_id"], unique=False
|
|
69
|
+
)
|
|
70
|
+
op.create_index(
|
|
71
|
+
op.f("ix_event_audit_status"), "event_audit", ["status"], unique=False
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def downgrade():
|
|
76
|
+
op.drop_index(op.f("ix_event_audit_status"), table_name="event_audit")
|
|
77
|
+
op.drop_index(op.f("ix_event_audit_user_id"), table_name="event_audit")
|
|
78
|
+
op.drop_index(op.f("ix_event_audit_resource_type"), table_name="event_audit")
|
|
79
|
+
op.drop_index(op.f("ix_event_audit_resource_identifier"), table_name="event_audit")
|
|
80
|
+
op.drop_index(op.f("ix_event_audit_id"), table_name="event_audit")
|
|
81
|
+
op.drop_index(op.f("ix_event_audit_event_type"), table_name="event_audit")
|
|
82
|
+
op.drop_table("event_audit")
|
fides/api/alembic/migrations/versions/b9bfa12c167b_add_not_applicable_to_asset_consentstatus.py
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"""Add not_applicable to asset ConsentStatus
|
|
2
|
+
|
|
3
|
+
Revision ID: b9bfa12c167b
|
|
4
|
+
Revises: 30369bb8ae01
|
|
5
|
+
Create Date: 2025-09-09 16:44:23.146325
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import sqlalchemy as sa
|
|
10
|
+
from alembic import op
|
|
11
|
+
|
|
12
|
+
# revision identifiers, used by Alembic.
|
|
13
|
+
revision = "b9bfa12c167b"
|
|
14
|
+
down_revision = "30369bb8ae01"
|
|
15
|
+
branch_labels = None
|
|
16
|
+
depends_on = None
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def upgrade():
|
|
20
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
21
|
+
op.execute("ALTER TYPE consentstatus ADD VALUE 'not_applicable'")
|
|
22
|
+
# ### end Alembic commands ###
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def downgrade():
|
|
26
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
27
|
+
# Remove any records that have the new enum value before dropping it
|
|
28
|
+
op.execute(
|
|
29
|
+
"UPDATE asset SET consent_status = 'unknown' WHERE consent_status = 'not_applicable'"
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
# Recreate the enum without the new value
|
|
33
|
+
op.execute("ALTER TYPE consentstatus RENAME TO consentstatus_old")
|
|
34
|
+
op.execute(
|
|
35
|
+
"CREATE TYPE consentstatus AS ENUM ('cmp_error', 'pre_consent', 'with_consent', 'without_consent', 'exempt', 'unknown')"
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
# Drop default, change type, and set default back
|
|
39
|
+
op.execute("ALTER TABLE asset ALTER COLUMN consent_status DROP DEFAULT")
|
|
40
|
+
op.execute(
|
|
41
|
+
"ALTER TABLE asset ALTER COLUMN consent_status TYPE consentstatus USING "
|
|
42
|
+
"consent_status::text::consentstatus"
|
|
43
|
+
)
|
|
44
|
+
op.execute("ALTER TABLE asset ALTER COLUMN consent_status SET DEFAULT 'unknown'")
|
|
45
|
+
op.execute("DROP TYPE consentstatus_old")
|
|
46
|
+
# ### end Alembic commands ###
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"""Adds new fields to MessagingConfig for test info
|
|
2
|
+
|
|
3
|
+
Revision ID: fd7571bef683
|
|
4
|
+
Revises: b9bfa12c167b
|
|
5
|
+
Create Date: 2024-10-09 23:08:01.901592
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import sqlalchemy as sa
|
|
10
|
+
from alembic import op
|
|
11
|
+
|
|
12
|
+
# revision identifiers, used by Alembic.
|
|
13
|
+
revision = "fd7571bef683"
|
|
14
|
+
down_revision = "b9bfa12c167b"
|
|
15
|
+
branch_labels = None
|
|
16
|
+
depends_on = None
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def upgrade():
|
|
20
|
+
op.add_column(
|
|
21
|
+
"messagingconfig",
|
|
22
|
+
sa.Column("last_test_timestamp", sa.DateTime(timezone=True), nullable=True),
|
|
23
|
+
)
|
|
24
|
+
op.add_column(
|
|
25
|
+
"messagingconfig", sa.Column("last_test_succeeded", sa.Boolean(), nullable=True)
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def downgrade():
|
|
30
|
+
op.drop_column("messagingconfig", "last_test_succeeded")
|
|
31
|
+
op.drop_column("messagingconfig", "last_test_timestamp")
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import Dict, List, Optional
|
|
1
|
+
from typing import Any, Dict, List, Optional
|
|
2
2
|
|
|
3
3
|
from fastapi import Depends, Security
|
|
4
4
|
from fastapi.encoders import jsonable_encoder
|
|
@@ -26,6 +26,7 @@ from fides.api.common_exceptions import (
|
|
|
26
26
|
MessagingConfigNotFoundException,
|
|
27
27
|
MessagingTemplateValidationException,
|
|
28
28
|
)
|
|
29
|
+
from fides.api.models.application_config import ApplicationConfig
|
|
29
30
|
from fides.api.models.messaging import (
|
|
30
31
|
MessagingConfig,
|
|
31
32
|
default_messaging_config_key,
|
|
@@ -46,16 +47,16 @@ from fides.api.schemas.messaging.messaging import (
|
|
|
46
47
|
MessagingConfigResponse,
|
|
47
48
|
MessagingConfigStatus,
|
|
48
49
|
MessagingConfigStatusMessage,
|
|
50
|
+
MessagingConnectionTestStatus,
|
|
49
51
|
MessagingMethod,
|
|
50
52
|
MessagingServiceType,
|
|
51
53
|
MessagingTemplateDefault,
|
|
52
54
|
MessagingTemplateWithPropertiesDetail,
|
|
55
|
+
MessagingTestBodyParams,
|
|
53
56
|
TestMessagingStatusMessage,
|
|
54
57
|
UserEmailInviteStatus,
|
|
55
58
|
)
|
|
56
|
-
from fides.api.schemas.messaging.
|
|
57
|
-
possible_messaging_secrets,
|
|
58
|
-
)
|
|
59
|
+
from fides.api.schemas.messaging.shared_schemas import PossibleMessagingSecrets
|
|
59
60
|
from fides.api.schemas.redis_cache import Identity
|
|
60
61
|
from fides.api.service.messaging.message_dispatch_service import dispatch_message
|
|
61
62
|
from fides.api.service.messaging.messaging_crud_service import (
|
|
@@ -91,10 +92,14 @@ from fides.common.api.v1.urn_registry import (
|
|
|
91
92
|
MESSAGING_TEMPLATE_BY_ID,
|
|
92
93
|
MESSAGING_TEMPLATE_DEFAULT_BY_TEMPLATE_TYPE,
|
|
93
94
|
MESSAGING_TEST,
|
|
95
|
+
MESSAGING_TEST_DEPRECATED,
|
|
94
96
|
V1_URL_PREFIX,
|
|
95
97
|
)
|
|
98
|
+
from fides.config import get_config
|
|
96
99
|
from fides.config.config_proxy import ConfigProxy
|
|
97
100
|
|
|
101
|
+
CONFIG = get_config()
|
|
102
|
+
|
|
98
103
|
router = APIRouter(tags=["Messaging"], prefix=V1_URL_PREFIX)
|
|
99
104
|
|
|
100
105
|
|
|
@@ -107,33 +112,73 @@ router = APIRouter(tags=["Messaging"], prefix=V1_URL_PREFIX)
|
|
|
107
112
|
def post_config(
|
|
108
113
|
*,
|
|
109
114
|
db: Session = Depends(deps.get_db),
|
|
110
|
-
|
|
115
|
+
messaging_config_request: MessagingConfigRequest,
|
|
111
116
|
) -> MessagingConfigResponse:
|
|
112
117
|
"""
|
|
113
118
|
Given a messaging config, create corresponding MessagingConfig object, provided no config already exists
|
|
114
119
|
"""
|
|
115
120
|
|
|
116
121
|
try:
|
|
117
|
-
|
|
118
|
-
|
|
122
|
+
# set default values for the name and type if they're not provided
|
|
123
|
+
if not messaging_config_request.name:
|
|
124
|
+
messaging_config_request.name = default_messaging_config_name(
|
|
125
|
+
messaging_config_request.service_type.value
|
|
126
|
+
)
|
|
127
|
+
if not messaging_config_request.key:
|
|
128
|
+
messaging_config_request.key = default_messaging_config_key(
|
|
129
|
+
messaging_config_request.service_type.value
|
|
130
|
+
)
|
|
131
|
+
messaging_config = create_or_update_messaging_config(
|
|
132
|
+
db=db, config=messaging_config_request
|
|
133
|
+
)
|
|
134
|
+
if messaging_config_request.secrets:
|
|
135
|
+
update_config_secrets(
|
|
136
|
+
db,
|
|
137
|
+
messaging_config,
|
|
138
|
+
unvalidated_messaging_secrets=messaging_config_request.secrets,
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
# if there is only one messaging config, make it the default
|
|
142
|
+
messaging_config_count = db.query(MessagingConfig).count()
|
|
143
|
+
if messaging_config_count == 1:
|
|
144
|
+
ApplicationConfig.update_api_set(
|
|
145
|
+
db,
|
|
146
|
+
{
|
|
147
|
+
"notifications": {
|
|
148
|
+
"notification_service_type": messaging_config.service_type
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
)
|
|
152
|
+
|
|
153
|
+
return MessagingConfigResponse(
|
|
154
|
+
name=messaging_config.name,
|
|
155
|
+
key=messaging_config.key,
|
|
156
|
+
service_type=messaging_config.service_type.value, # type: ignore
|
|
157
|
+
details=messaging_config.details,
|
|
158
|
+
last_test_timestamp=messaging_config.last_test_timestamp,
|
|
159
|
+
last_test_succeeded=messaging_config.last_test_succeeded,
|
|
160
|
+
)
|
|
161
|
+
except ValueError as exc:
|
|
162
|
+
failed_key = messaging_config_request.key
|
|
119
163
|
logger.warning(
|
|
120
164
|
"Create failed for messaging config {}: {}",
|
|
121
|
-
|
|
122
|
-
|
|
165
|
+
failed_key,
|
|
166
|
+
str(exc),
|
|
123
167
|
)
|
|
124
168
|
raise HTTPException(
|
|
125
169
|
status_code=HTTP_400_BAD_REQUEST,
|
|
126
|
-
detail=f"Config with key {
|
|
170
|
+
detail=f"Config with key {failed_key} failed to be added: {exc}",
|
|
127
171
|
)
|
|
128
172
|
except Exception as exc:
|
|
173
|
+
failed_key = messaging_config_request.key
|
|
129
174
|
logger.warning(
|
|
130
175
|
"Create failed for messaging config {}: {}",
|
|
131
|
-
|
|
132
|
-
|
|
176
|
+
failed_key,
|
|
177
|
+
str(exc),
|
|
133
178
|
)
|
|
134
179
|
raise HTTPException(
|
|
135
180
|
status_code=HTTP_500_INTERNAL_SERVER_ERROR,
|
|
136
|
-
detail=f"Config with key {
|
|
181
|
+
detail=f"Config with key {failed_key} failed to be added: {exc}",
|
|
137
182
|
)
|
|
138
183
|
|
|
139
184
|
|
|
@@ -146,13 +191,23 @@ def patch_config_by_key(
|
|
|
146
191
|
config_key: FidesKey,
|
|
147
192
|
*,
|
|
148
193
|
db: Session = Depends(deps.get_db),
|
|
149
|
-
|
|
194
|
+
messaging_config_request: MessagingConfigRequest,
|
|
150
195
|
) -> Optional[MessagingConfigResponse]:
|
|
151
196
|
"""
|
|
152
197
|
Updates config for messaging by key, provided config with key can be found.
|
|
153
198
|
"""
|
|
154
199
|
try:
|
|
155
|
-
|
|
200
|
+
messaging_config = update_messaging_config(
|
|
201
|
+
db=db, key=config_key, config=messaging_config_request
|
|
202
|
+
)
|
|
203
|
+
return MessagingConfigResponse(
|
|
204
|
+
name=messaging_config.name,
|
|
205
|
+
key=messaging_config.key,
|
|
206
|
+
service_type=messaging_config.service_type.value, # type: ignore
|
|
207
|
+
details=messaging_config.details,
|
|
208
|
+
last_test_timestamp=messaging_config.last_test_timestamp,
|
|
209
|
+
last_test_succeeded=messaging_config.last_test_succeeded,
|
|
210
|
+
)
|
|
156
211
|
except MessagingConfigNotFoundException:
|
|
157
212
|
logger.warning("No messaging config found with key {}", config_key)
|
|
158
213
|
raise HTTPException(
|
|
@@ -162,12 +217,12 @@ def patch_config_by_key(
|
|
|
162
217
|
except Exception as exc:
|
|
163
218
|
logger.warning(
|
|
164
219
|
"Patch failed for messaging config {}: {}",
|
|
165
|
-
|
|
166
|
-
|
|
220
|
+
config_key,
|
|
221
|
+
str(exc),
|
|
167
222
|
)
|
|
168
223
|
raise HTTPException(
|
|
169
224
|
status_code=HTTP_500_INTERNAL_SERVER_ERROR,
|
|
170
|
-
detail=f"Config with key {
|
|
225
|
+
detail=f"Config with key {config_key} failed to be added",
|
|
171
226
|
)
|
|
172
227
|
|
|
173
228
|
|
|
@@ -294,17 +349,19 @@ def get_messaging_status(
|
|
|
294
349
|
def put_default_config(
|
|
295
350
|
*,
|
|
296
351
|
db: Session = Depends(deps.get_db),
|
|
297
|
-
|
|
352
|
+
messaging_config_request: MessagingConfigRequestBase,
|
|
298
353
|
) -> Optional[MessagingConfigResponse]:
|
|
299
354
|
"""
|
|
300
355
|
Updates default messaging config for given service type.
|
|
301
356
|
"""
|
|
302
357
|
logger.info(
|
|
303
358
|
"Starting upsert for default messaging config of type '{}'",
|
|
304
|
-
|
|
359
|
+
messaging_config_request.service_type,
|
|
360
|
+
)
|
|
361
|
+
incoming_data = messaging_config_request.model_dump(mode="json")
|
|
362
|
+
existing_default = MessagingConfig.get_by_type(
|
|
363
|
+
db, messaging_config_request.service_type
|
|
305
364
|
)
|
|
306
|
-
incoming_data = messaging_config.model_dump(mode="json")
|
|
307
|
-
existing_default = MessagingConfig.get_by_type(db, messaging_config.service_type)
|
|
308
365
|
if existing_default:
|
|
309
366
|
# take the key of the existing default and add that to the incoming data, to ensure we overwrite the same record
|
|
310
367
|
incoming_data["key"] = existing_default.key
|
|
@@ -312,14 +369,22 @@ def put_default_config(
|
|
|
312
369
|
else:
|
|
313
370
|
# set a key and name for our config if we're creating a new default
|
|
314
371
|
incoming_data["name"] = default_messaging_config_name(
|
|
315
|
-
|
|
372
|
+
messaging_config_request.service_type.value
|
|
316
373
|
)
|
|
317
374
|
incoming_data["key"] = default_messaging_config_key(
|
|
318
|
-
|
|
375
|
+
messaging_config_request.service_type.value
|
|
319
376
|
)
|
|
320
|
-
|
|
377
|
+
messaging_config = create_or_update_messaging_config(
|
|
321
378
|
db, MessagingConfigRequest(**incoming_data)
|
|
322
379
|
)
|
|
380
|
+
return MessagingConfigResponse(
|
|
381
|
+
name=messaging_config.name,
|
|
382
|
+
key=messaging_config.key,
|
|
383
|
+
service_type=messaging_config.service_type.value, # type: ignore
|
|
384
|
+
details=messaging_config.details,
|
|
385
|
+
last_test_timestamp=messaging_config.last_test_timestamp,
|
|
386
|
+
last_test_succeeded=messaging_config.last_test_succeeded,
|
|
387
|
+
)
|
|
323
388
|
|
|
324
389
|
|
|
325
390
|
@router.put(
|
|
@@ -332,7 +397,7 @@ def put_default_config_secrets(
|
|
|
332
397
|
service_type: MessagingServiceType,
|
|
333
398
|
*,
|
|
334
399
|
db: Session = Depends(deps.get_db),
|
|
335
|
-
unvalidated_messaging_secrets:
|
|
400
|
+
unvalidated_messaging_secrets: PossibleMessagingSecrets,
|
|
336
401
|
) -> TestMessagingStatusMessage:
|
|
337
402
|
messaging_config = MessagingConfig.get_by_type(db, service_type=service_type)
|
|
338
403
|
if not messaging_config:
|
|
@@ -353,7 +418,7 @@ def put_config_secrets(
|
|
|
353
418
|
config_key: FidesKey,
|
|
354
419
|
*,
|
|
355
420
|
db: Session = Depends(deps.get_db),
|
|
356
|
-
unvalidated_messaging_secrets:
|
|
421
|
+
unvalidated_messaging_secrets: PossibleMessagingSecrets,
|
|
357
422
|
) -> TestMessagingStatusMessage:
|
|
358
423
|
"""
|
|
359
424
|
Add or update secrets for messaging config.
|
|
@@ -371,7 +436,7 @@ def put_config_secrets(
|
|
|
371
436
|
def update_config_secrets(
|
|
372
437
|
db: Session,
|
|
373
438
|
messaging_config: MessagingConfig,
|
|
374
|
-
unvalidated_messaging_secrets:
|
|
439
|
+
unvalidated_messaging_secrets: PossibleMessagingSecrets,
|
|
375
440
|
) -> TestMessagingStatusMessage:
|
|
376
441
|
try:
|
|
377
442
|
secrets_schema = get_schema_for_secrets(
|
|
@@ -512,11 +577,70 @@ def delete_config_by_key(
|
|
|
512
577
|
},
|
|
513
578
|
)
|
|
514
579
|
def send_test_message(
|
|
580
|
+
service_type: MessagingServiceType,
|
|
581
|
+
*,
|
|
582
|
+
db: Session = Depends(deps.get_db),
|
|
583
|
+
params: MessagingTestBodyParams,
|
|
584
|
+
) -> Dict[str, str]:
|
|
585
|
+
"""
|
|
586
|
+
Sends a test message to the provided email or phone number.
|
|
587
|
+
"""
|
|
588
|
+
config = MessagingConfig.get_by_type(db, service_type)
|
|
589
|
+
if not config:
|
|
590
|
+
raise HTTPException(
|
|
591
|
+
status_code=404,
|
|
592
|
+
detail=f"No messaging config found with service type: {service_type}",
|
|
593
|
+
)
|
|
594
|
+
try:
|
|
595
|
+
dispatch_message(
|
|
596
|
+
db,
|
|
597
|
+
action_type=MessagingActionType.TEST_MESSAGE,
|
|
598
|
+
to_identity=Identity(
|
|
599
|
+
email=params.to_identity.email,
|
|
600
|
+
phone_number=params.to_identity.phone_number,
|
|
601
|
+
),
|
|
602
|
+
service_type=service_type.value,
|
|
603
|
+
)
|
|
604
|
+
except MessageDispatchException as exc:
|
|
605
|
+
config.update_test_status(
|
|
606
|
+
test_status=MessagingConnectionTestStatus.failed, db=db
|
|
607
|
+
)
|
|
608
|
+
raise HTTPException(
|
|
609
|
+
status_code=400,
|
|
610
|
+
detail=f"There was an error sending the test message: {exc}",
|
|
611
|
+
)
|
|
612
|
+
config.update_test_status(
|
|
613
|
+
test_status=MessagingConnectionTestStatus.succeeded, db=db
|
|
614
|
+
)
|
|
615
|
+
return {"details": "Test message successfully sent"}
|
|
616
|
+
|
|
617
|
+
|
|
618
|
+
@router.post(
|
|
619
|
+
MESSAGING_TEST_DEPRECATED,
|
|
620
|
+
deprecated=True,
|
|
621
|
+
status_code=HTTP_200_OK,
|
|
622
|
+
dependencies=[Security(verify_oauth_client, scopes=[MESSAGING_CREATE_OR_UPDATE])],
|
|
623
|
+
response_model=Dict[str, Any],
|
|
624
|
+
responses={
|
|
625
|
+
HTTP_200_OK: {
|
|
626
|
+
"content": {
|
|
627
|
+
"application/json": {
|
|
628
|
+
"example": {
|
|
629
|
+
"details": "Test message successfully sent",
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
},
|
|
635
|
+
)
|
|
636
|
+
def send_test_message_deprecated(
|
|
515
637
|
message_info: Identity,
|
|
516
638
|
db: Session = Depends(deps.get_db),
|
|
517
639
|
config_proxy: ConfigProxy = Depends(deps.get_config_proxy),
|
|
518
|
-
) -> Dict[str,
|
|
519
|
-
"""
|
|
640
|
+
) -> Dict[str, Any]:
|
|
641
|
+
"""
|
|
642
|
+
This endpoint is deprecated. Please use the `POST /messaging/test/{service_type}`
|
|
643
|
+
"""
|
|
520
644
|
try:
|
|
521
645
|
dispatch_message(
|
|
522
646
|
db,
|
|
@@ -524,11 +648,17 @@ def send_test_message(
|
|
|
524
648
|
to_identity=message_info,
|
|
525
649
|
service_type=config_proxy.notifications.notification_service_type,
|
|
526
650
|
)
|
|
527
|
-
except MessageDispatchException as
|
|
651
|
+
except MessageDispatchException as exc:
|
|
528
652
|
raise HTTPException(
|
|
529
|
-
status_code=400,
|
|
530
|
-
|
|
531
|
-
|
|
653
|
+
status_code=400,
|
|
654
|
+
detail=f"There was an error sending the test message: {exc}",
|
|
655
|
+
)
|
|
656
|
+
return {
|
|
657
|
+
"details": "Test message successfully sent",
|
|
658
|
+
"warnings": [
|
|
659
|
+
"This endpoint is deprecated. Please use the `POST /messaging/test/{service_type}`"
|
|
660
|
+
],
|
|
661
|
+
}
|
|
532
662
|
|
|
533
663
|
|
|
534
664
|
@router.get(
|
fides/api/db/base.py
CHANGED
|
@@ -22,6 +22,7 @@ from fides.api.models.detection_discovery.monitor_task import (
|
|
|
22
22
|
MonitorTaskExecutionLog,
|
|
23
23
|
)
|
|
24
24
|
from fides.api.models.detection_discovery.web_monitor import WebMonitorGroupJob
|
|
25
|
+
from fides.api.models.event_audit import EventAudit
|
|
25
26
|
from fides.api.models.experience_notices import ExperienceNotices
|
|
26
27
|
from fides.api.models.fides_cloud import FidesCloud
|
|
27
28
|
from fides.api.models.fides_user import FidesUser
|
fides/api/db/seed.py
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Provides functions that seed the application with data.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
+
import os
|
|
5
6
|
from typing import Dict, List, Optional
|
|
6
7
|
|
|
7
8
|
from fideslang.default_taxonomy import DEFAULT_TAXONOMY
|
|
@@ -17,6 +18,7 @@ from fides.api.common_exceptions import KeyOrNameAlreadyExists
|
|
|
17
18
|
from fides.api.db.base_class import FidesBase
|
|
18
19
|
from fides.api.db.ctl_session import sync_session
|
|
19
20
|
from fides.api.db.system import upsert_system
|
|
21
|
+
from fides.api.models.application_config import ApplicationConfig
|
|
20
22
|
from fides.api.models.client import ClientDetail
|
|
21
23
|
from fides.api.models.connectionconfig import ConnectionConfig
|
|
22
24
|
from fides.api.models.datasetconfig import DatasetConfig
|
|
@@ -37,7 +39,16 @@ from fides.api.schemas.connection_configuration.saas_config_template_values impo
|
|
|
37
39
|
SaasConnectionTemplateValues,
|
|
38
40
|
)
|
|
39
41
|
from fides.api.schemas.dataset import DatasetConfigCtlDataset
|
|
42
|
+
from fides.api.schemas.messaging.messaging import (
|
|
43
|
+
MessagingConfigRequest,
|
|
44
|
+
MessagingServiceDetailsMailgun,
|
|
45
|
+
MessagingServiceType,
|
|
46
|
+
)
|
|
47
|
+
from fides.api.schemas.messaging.shared_schemas import MessagingSecretsMailgunDocs
|
|
40
48
|
from fides.api.schemas.policy import ActionType, DrpAction
|
|
49
|
+
from fides.api.service.messaging.messaging_crud_service import (
|
|
50
|
+
create_or_update_messaging_config,
|
|
51
|
+
)
|
|
41
52
|
from fides.api.util.connection_util import patch_connection_configs
|
|
42
53
|
from fides.api.util.data_category import get_user_data_categories
|
|
43
54
|
from fides.api.util.errors import AlreadyExistsError, QueryError
|
|
@@ -486,6 +497,29 @@ async def load_samples(async_session: AsyncSession) -> None:
|
|
|
486
497
|
except QueryError: # pragma: no cover
|
|
487
498
|
pass # The upsert_resources function will log any error
|
|
488
499
|
|
|
500
|
+
if os.getenv("MAILGUN_DOMAIN") and os.getenv("MAILGUN_API_KEY"):
|
|
501
|
+
log.info("Loading Mailgun messaging config")
|
|
502
|
+
with sync_session() as db:
|
|
503
|
+
messaging_config = create_or_update_messaging_config(
|
|
504
|
+
db=db,
|
|
505
|
+
config=MessagingConfigRequest(
|
|
506
|
+
key="my_mailgun_config",
|
|
507
|
+
name="Mailgun",
|
|
508
|
+
service_type=MessagingServiceType.mailgun,
|
|
509
|
+
details=MessagingServiceDetailsMailgun(
|
|
510
|
+
domain=os.getenv("MAILGUN_DOMAIN")
|
|
511
|
+
),
|
|
512
|
+
),
|
|
513
|
+
)
|
|
514
|
+
messaging_config.set_secrets(
|
|
515
|
+
db=db,
|
|
516
|
+
messaging_secrets=MessagingSecretsMailgunDocs(
|
|
517
|
+
mailgun_api_key=os.getenv("MAILGUN_API_KEY")
|
|
518
|
+
),
|
|
519
|
+
)
|
|
520
|
+
CONFIG.notifications.notification_service_type = "mailgun"
|
|
521
|
+
ApplicationConfig.update_config_set(db, CONFIG)
|
|
522
|
+
|
|
489
523
|
|
|
490
524
|
def load_default_organization(db: Session) -> None:
|
|
491
525
|
"""
|