{"id":13568725,"url":"https://github.com/ethyca/fidesops","last_synced_at":"2025-04-04T05:30:27.117Z","repository":{"id":37020054,"uuid":"422537449","full_name":"ethyca/fidesops","owner":"ethyca","description":"Privacy as Code for DSAR Orchestration: Privacy Request automation to fulfill GDPR, CCPA, and LGPD data subject requests.","archived":true,"fork":false,"pushed_at":"2022-11-30T18:36:59.000Z","size":22377,"stargazers_count":47,"open_issues_count":152,"forks_count":16,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-03-14T06:18:09.836Z","etag":null,"topics":["compliance","compliance-as-code","compliance-automation","data-privacy","gdpr","gdpr-compliant","privacy","privacy-as-code"],"latest_commit_sha":null,"homepage":"https://ethyca.github.io/fidesops","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ethyca.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-10-29T10:44:14.000Z","updated_at":"2025-03-04T10:36:37.000Z","dependencies_parsed_at":"2023-01-17T13:45:57.235Z","dependency_job_id":null,"html_url":"https://github.com/ethyca/fidesops","commit_stats":null,"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethyca%2Ffidesops","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethyca%2Ffidesops/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethyca%2Ffidesops/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethyca%2Ffidesops/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ethyca","download_url":"https://codeload.github.com/ethyca/fidesops/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247128695,"owners_count":20888232,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["compliance","compliance-as-code","compliance-automation","data-privacy","gdpr","gdpr-compliant","privacy","privacy-as-code"],"created_at":"2024-08-01T14:00:30.938Z","updated_at":"2025-04-04T05:30:25.599Z","avatar_url":"https://github.com/ethyca.png","language":"Python","readme":"# Deprecation Notice\nFidesops is deprecated now. The codebase has been merged in into [Fides](https://github.com/ethyca/fides). \nVisit the Fides [Documentation](https://ethyca.github.io/fides) to learn more.\n\n## Meet Fidesops: Privacy as Code for DSAR Orchestration\n\n_A part of the [greater Fides ecosystem](https://github.com/ethyca/fides)._\n\n[![License][license-image]][license-url]\n[![Code style: black][black-image]][black-url]\n[![Checked with mypy][mypy-image]][mypy-url]\n[![Twitter][twitter-image]][twitter-url]\n\n![Fidesops banner](docs/fidesops/docs/img/fidesops.png \"Fidesops banner\")\n\n## :zap: Overview\n\n**Fidesops** (_fee-dez-äps_, combination of the Latin term \"Fidēs\" + \"operations\") is an extensible, [deployed](https://ethyca.github.io/fidesops/deployment/) engine that [fulfills any privacy request](https://ethyca.github.io/fidesops/guides/privacy_requests/) (e.g. access request, erasure request) by [connecting directly to your disparate databases](https://ethyca.github.io/fidesops/tutorial/postgres_connection/).\n\n![Fidesops overview](docs/fidesops/docs/img/fidesops-overview-diagram.png \"Fidesops overview\")\n\n## :rocket: Quick Start\n\nIf you're looking for a more detailed introduction to fidesops, we recommend following [our tutorial here](https://ethyca.github.io/fidesops/tutorial/).\n\n### System Requirements\n\n- [Docker](https://www.docker.com/products/docker-desktop) (20.10.8+)\n- [Python](https://www.python.org/downloads/) (3.8+)\n- [Nox](https://nox.thea.codes/en/stable/) (`pip install nox`)\n \nRun the quickstart in your terminal to give fidesops a test drive:\n\n```bash\ngit clone https://github.com/ethyca/fidesops.git\ncd fidesops\nnox -s quickstart\n```\n\nThis runs fidesops in docker along with the necessary data stores.  It also spins up a test postgres\ndatabase and a test mongo database to mimic your application.  This quickstart will walk you through executing privacy\nrequests against your system by making a series of API requests to fidesops.\n\nFollow these five easy steps:\n\n### Step One: Set up basic configuration (press `[enter]` to make each API request)\n\n- Authenticate by creating an Access Token\n- Connect to your application's postgres and mongo databases with ConnectionConfigs\n- Describe the types of data you have and their relationships with Datasets\n- Dictate where to upload your results with StorageConfigs (a local folder for now)\n\n### Step Two: Define an Access Policy\n\nPolicies help describe what data you care about and how you want to manage it.  In this example, you'll create an `access`\nPolicy,`example_request_policy`, to get all data with the data category: `user`.\n  \n### Step Three: Run a Privacy Request to Access Data\n\nFinally, you can issue a Privacy Request using Policy `example_request_policy` across your test databases for `jane@example.com`.\nThe following response will be uploaded to a local folder (for demo purposes). We've collected identifiable user\ninformation for Jane across tables in both the postgres and mongo databases.\n\n```json\n{\n  \"mongo_test:flights\": [\n    {\n      \"passenger_information\": {\n        \"full_name\": \"Jane Customer\"\n      }\n    }\n  ],\n  \"mongo_test:customer_details\": [\n    {\n      \"gender\": \"female\",\n      \"children\": [\n        \"Erica Example\"\n      ],\n      \"birthday\": \"1990-02-28T00:00:00\"\n    }\n  ],\n  \"postgres_example:address\": [\n    {\n      \"city\": \"Example Mountain\",\n      \"state\": \"TX\",\n      \"house\": 1111,\n      \"zip\": \"54321\",\n      \"street\": \"Example Place\"\n    }\n  ],\n  \"postgres_example:customer\": [\n    {\n      \"email\": \"jane@example.com\",\n      \"name\": \"Jane Customer\"\n    }\n  ],\n  \"mongo_test:rewards\": [\n    {\n      \"owner\": [\n        {\n          \"phone\": \"530-486-6983\"\n        },\n        {\n          \"phone\": \"818-695-1881\"\n        }\n      ]\n    },\n    {\n      \"owner\": [\n        {\n          \"phone\": \"254-344-9868\"\n        }\n      ]\n    }\n  ],\n  \"mongo_test:employee\": [\n    {\n      \"email\": \"employee-2@example.com\",\n      \"name\": \"Jane Employee\"\n    }\n  ],\n  \"mongo_test:conversations\": [\n    {\n      \"thread\": [\n        {\n          \"ccn\": \"987654321\",\n          \"chat_name\": \"Jane C\"\n        }\n      ]\n    },\n    {\n      \"thread\": [\n        {\n          \"ccn\": \"987654321\",\n          \"chat_name\": \"Jane C\"\n        },\n        {\n          \"chat_name\": \"Jane C\"\n        }\n      ]\n    }\n  ],\n  \"mongo_test:payment_card\": [\n    {\n      \"ccn\": \"987654321\",\n      \"code\": \"123\",\n      \"name\": \"Example Card 2\"\n    }\n  ],\n  \"postgres_example:payment_card\": [\n    {\n      \"ccn\": 373719391,\n      \"code\": 222,\n      \"name\": \"Example Card 3\"\n    }\n  ]\n}\n\n```\n\n### Step Four: Create an Erasure Policy\n\nNow you'll create another Policy, `example_erasure_policy`, that describes how to `erase` data with the same category, by replacing values with null.\n\n### Step Five: Issue a Privacy Request to erase data and verify\n\nThe last step is to issue a Privacy Request using `example_erasure_policy` to remove identifiable user data\nrelated to \"jane@example.com\". Then we'll re-run step #3 again to see what data is remaining for data category `user`:\n\n```json\n{}\n```\n\nThis returns an empty dictionary confirming Jane's fields with data category `user` have been removed.\n\nYou've learned how to use the fidesops API to connect a database and a final storage location, define policies that describe\nhow to handle user data, and execute access and erasure requests.  But there's a lot more to discover,\nso we'd recommend following [the tutorial](https://ethyca.github.io/fidesops/tutorial/) to keep learning.\n\n### Documentation\n\nFor more information on getting started with fidesops, how to configure and set up fidesops, and more about the Fides ecosystem of open source projects:\n\n- Documentation: \u003chttps://ethyca.github.io/fidesops/\u003e\n- How-to guides: \u003chttps://ethyca.github.io/fidesops/guides/oauth/\u003e\n- Deployment: \u003chttps://ethyca.github.io/fidesops/deployment/\u003e\n- Roadmap: \u003chttps://github.com/ethyca/fidesops/milestones\u003e\n- Website: www.ethyca.com/fides\n\n### Support\n\nJoin the conversation on:\n\n- [Slack](https://fid.es/join-slack)\n- [Twitter](https://twitter.com/ethyca)\n- [Discussions](https://github.com/ethyca/fidesops/discussions)\n\n### Contributing\n\nWe welcome and encourage all types of contributions and improvements!  Please see our [contribution guide](CONTRIBUTING.md) to opening issues for bugs, new features, and security or experience enhancements.\n\nRead about the [Fides community](https://ethyca.github.io/fidesops/community/github/) or dive into the [development guides](https://ethyca.github.io/fidesops/development/overview) for information about contributions, documentation, code style, testing and more. Ethyca is committed to fostering a safe and collaborative environment, such that all interactions are governed by the [Fides Code of Conduct](https://ethyca.github.io/fidesops/community/code_of_conduct/).\n\n## :balance_scale: License\n\nThe Fides ecosystem of tools ([fidesops](https://github.com/ethyca/fidesops) and [fidesctl](https://github.com/ethyca/fides)) are licensed under the [Apache Software License Version 2.0](https://www.apache.org/licenses/LICENSE-2.0).\nFides tools are built on [fideslang](https://github.com/ethyca/privacy-taxonomy), the Fides language specification, which is licensed under [CC by 4](https://github.com/ethyca/privacy-taxonomy/blob/main/LICENSE).\n\nFides is created and sponsored by [Ethyca](https://ethyca.com): a developer tools company building the trust infrastructure of the internet. If you have questions or need assistance getting started, let us know at fides@ethyca.com!\n\n[license-image]: https://img.shields.io/:license-Apache%202-blue.svg\n[license-url]: https://www.apache.org/licenses/LICENSE-2.0.txt\n[black-image]: https://img.shields.io/badge/code%20style-black-000000.svg\n[black-url]: https://github.com/psf/black/\n[mypy-image]: http://www.mypy-lang.org/static/mypy_badge.svg\n[mypy-url]: http://mypy-lang.org/\n[twitter-image]: https://img.shields.io/twitter/follow/ethyca?style=social\n[twitter-url]: https://twitter.com/ethyca\n","funding_links":[],"categories":["Awesome Privacy Engineering [![Awesome](https://awesome.re/badge.svg)](https://awesome.re)"],"sub_categories":["Data Deletion, Data Mapping, and Data Subject Access Requests"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethyca%2Ffidesops","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fethyca%2Ffidesops","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethyca%2Ffidesops/lists"}