diff --git a/CHANGELOG.md b/CHANGELOG.md index d52970a3..705cb263 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,15 @@ The types of changes are: - `Fixed` for any bug fixes. - `Security` in case of vulnerabilities. -## [Unreleased](https://github.com/ethyca/fideslang/compare/2.2.2...main) +## [Unreleased](https://github.com/ethyca/fideslang/compare/3.0.0...main) + +## [3.0.0](https://github.com/ethyca/fideslang/compare/2.2.2...3.0.0) + +### Removed + +- Removed `DataQualifier` construct and all references [#186](https://github.com/ethyca/fideslang/pull/186) +- Removed `Registry` construct and all references [#186](https://github.com/ethyca/fideslang/pull/186) +- Removed deprecated fields on `System`, `DataUse` and `Dataset` models. [#186](https://github.com/ethyca/fideslang/pull/186) ## [2.2.2](https://github.com/ethyca/fideslang/compare/2.2.1...2.2.2) diff --git a/README.md b/README.md index d2d4729f..b8462107 100644 --- a/README.md +++ b/README.md @@ -48,19 +48,6 @@ Examples of a Data Subject are: Learn more about [Data Subject Categories in the taxonomy reference now](https://ethyca.github.io/fideslang/taxonomy/data_subjects/). -### 4. Data Identification Qualifiers - -Data Identification Qualifiers describe the degree of identification of the given data. -Think of this as a spectrum: on one end is completely anonymous data, i.e. it is impossible to identify an individual from it; on the other end is data that specifically identifies an individual. - -Along this spectrum are labels that describe the degree of identification that a given data might provide, such as: - -- `identified_data` -- `anonymized_data` -- `aggregated_data` - -Learn more about [Data Identification Qualifiers in the taxonomy reference now](https://ethyca.github.io/fideslang/taxonomy/data_qualifiers/). - ### Extensibility & Interoperability The taxonomy is designed to support common privacy compliance regulations and standards out of the box, these include GDPR, CCPA, LGPD and ISO 19944. diff --git a/data_files/data_qualifiers.csv b/data_files/data_qualifiers.csv deleted file mode 100644 index 6103544b..00000000 --- a/data_files/data_qualifiers.csv +++ /dev/null @@ -1,7 +0,0 @@ -fides_key,is_default,name,organization_fides_key,parent_key,replaced_by,tags,version_added,version_deprecated,description -data_qualifier,,Data Qualifier,,,,,,, -aggregated,True,Aggregated Data,default_organization,data_qualifier,,,2.0.0,,Statistical data that does not contain individually identifying information but includes information about groups of individuals that renders individual identification impossible. -aggregated.anonymized,True,Anonymized Data,default_organization,aggregated,,,2.0.0,,Data where all attributes have been sufficiently altered that the individaul cannot be reidentified by this data or in combination with other datasets. -aggregated.anonymized.unlinked_pseudonymized,True,Unlinked Pseudonymized Data,default_organization,aggregated.anonymized,,,2.0.0,,"Data for which all identifiers have been substituted with unrelated values and linkages broken such that it may not be reversed, even by the party that performed the pseudonymization." -aggregated.anonymized.unlinked_pseudonymized.pseudonymized,True,Pseudonymized Data,default_organization,aggregated.anonymized.unlinked_pseudonymized,,,2.0.0,,"Data for which all identifiers have been substituted with unrelated values, rendering the individual unidentifiable and cannot be reasonably reversed other than by the party that performed the pseudonymization." -aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified,True,Identified Data,default_organization,aggregated.anonymized.unlinked_pseudonymized.pseudonymized,,,2.0.0,,Data that directly identifies an individual. diff --git a/data_files/data_qualifiers.json b/data_files/data_qualifiers.json deleted file mode 100644 index 99b151ea..00000000 --- a/data_files/data_qualifiers.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "data_qualifier": [ - { - "version_added": "2.0.0", - "version_deprecated": null, - "replaced_by": null, - "is_default": true, - "fides_key": "aggregated", - "organization_fides_key": "default_organization", - "tags": null, - "name": "Aggregated Data", - "description": "Statistical data that does not contain individually identifying information but includes information about groups of individuals that renders individual identification impossible.", - "parent_key": null - }, - { - "version_added": "2.0.0", - "version_deprecated": null, - "replaced_by": null, - "is_default": true, - "fides_key": "aggregated.anonymized", - "organization_fides_key": "default_organization", - "tags": null, - "name": "Anonymized Data", - "description": "Data where all attributes have been sufficiently altered that the individaul cannot be reidentified by this data or in combination with other datasets.", - "parent_key": "aggregated" - }, - { - "version_added": "2.0.0", - "version_deprecated": null, - "replaced_by": null, - "is_default": true, - "fides_key": "aggregated.anonymized.unlinked_pseudonymized", - "organization_fides_key": "default_organization", - "tags": null, - "name": "Unlinked Pseudonymized Data", - "description": "Data for which all identifiers have been substituted with unrelated values and linkages broken such that it may not be reversed, even by the party that performed the pseudonymization.", - "parent_key": "aggregated.anonymized" - }, - { - "version_added": "2.0.0", - "version_deprecated": null, - "replaced_by": null, - "is_default": true, - "fides_key": "aggregated.anonymized.unlinked_pseudonymized.pseudonymized", - "organization_fides_key": "default_organization", - "tags": null, - "name": "Pseudonymized Data", - "description": "Data for which all identifiers have been substituted with unrelated values, rendering the individual unidentifiable and cannot be reasonably reversed other than by the party that performed the pseudonymization.", - "parent_key": "aggregated.anonymized.unlinked_pseudonymized" - }, - { - "version_added": "2.0.0", - "version_deprecated": null, - "replaced_by": null, - "is_default": true, - "fides_key": "aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified", - "organization_fides_key": "default_organization", - "tags": null, - "name": "Identified Data", - "description": "Data that directly identifies an individual.", - "parent_key": "aggregated.anonymized.unlinked_pseudonymized.pseudonymized" - } - ] -} diff --git a/data_files/data_qualifiers.yml b/data_files/data_qualifiers.yml deleted file mode 100644 index c26bfb38..00000000 --- a/data_files/data_qualifiers.yml +++ /dev/null @@ -1,58 +0,0 @@ -data_qualifier: -- version_added: 2.0.0 - version_deprecated: null - replaced_by: null - is_default: true - fides_key: aggregated - organization_fides_key: default_organization - tags: null - name: Aggregated Data - description: Statistical data that does not contain individually identifying information - but includes information about groups of individuals that renders individual identification - impossible. - parent_key: null -- version_added: 2.0.0 - version_deprecated: null - replaced_by: null - is_default: true - fides_key: aggregated.anonymized - organization_fides_key: default_organization - tags: null - name: Anonymized Data - description: Data where all attributes have been sufficiently altered that the individaul - cannot be reidentified by this data or in combination with other datasets. - parent_key: aggregated -- version_added: 2.0.0 - version_deprecated: null - replaced_by: null - is_default: true - fides_key: aggregated.anonymized.unlinked_pseudonymized - organization_fides_key: default_organization - tags: null - name: Unlinked Pseudonymized Data - description: Data for which all identifiers have been substituted with unrelated - values and linkages broken such that it may not be reversed, even by the party - that performed the pseudonymization. - parent_key: aggregated.anonymized -- version_added: 2.0.0 - version_deprecated: null - replaced_by: null - is_default: true - fides_key: aggregated.anonymized.unlinked_pseudonymized.pseudonymized - organization_fides_key: default_organization - tags: null - name: Pseudonymized Data - description: Data for which all identifiers have been substituted with unrelated - values, rendering the individual unidentifiable and cannot be reasonably reversed - other than by the party that performed the pseudonymization. - parent_key: aggregated.anonymized.unlinked_pseudonymized -- version_added: 2.0.0 - version_deprecated: null - replaced_by: null - is_default: true - fides_key: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified - organization_fides_key: default_organization - tags: null - name: Identified Data - description: Data that directly identifies an individual. - parent_key: aggregated.anonymized.unlinked_pseudonymized.pseudonymized diff --git a/data_files/data_uses.csv b/data_files/data_uses.csv index 875f5e52..4b1477a9 100644 --- a/data_files/data_uses.csv +++ b/data_files/data_uses.csv @@ -1,56 +1,56 @@ -fides_key,is_default,legal_basis,legitimate_interest,legitimate_interest_impact_assessment,name,organization_fides_key,parent_key,recipients,replaced_by,special_category,tags,version_added,version_deprecated,description -data_use,,,,,Data Use,,,,,,,,, -analytics,True,,,,Analytics,default_organization,data_use,,,,,2.0.0,,"Provides analytics for activities such as system and advertising performance reporting, insights and fraud detection." -analytics.reporting,True,,,,Analytics for Reporting,default_organization,analytics,,,,,2.0.0,,Provides analytics for general reporting such as system and advertising performance. -analytics.reporting.ad_performance,True,,,,Analytics for Advertising Performance,default_organization,analytics.reporting,,,,,2.0.0,,Provides analytics for reporting of advertising performance. -analytics.reporting.content_performance,True,,,,Analytics for Content Performance,default_organization,analytics.reporting,,,,,2.0.0,,Analytics for reporting on content performance. -analytics.reporting.campaign_insights,True,,,,Analytics for Insights,default_organization,analytics.reporting,,,,,2.0.0,,Provides analytics for reporting of campaign insights related to advertising and promotion activities. -analytics.reporting.system,True,,,,Analytics for System Activity,default_organization,analytics.reporting,,,,,2.0.0,,Provides analytics for reporting on system activity. -analytics.reporting.system.performance,True,,,,Analytics for System Performance,default_organization,analytics.reporting.system,,,,,2.0.0,,Provides analytics for reporting on system performance. -collect,True,,,,Collect,default_organization,data_use,,,,,2.0.0,,Collects or stores data in order to use it for another purpose which has not yet been expressly defined. -employment,True,,,,Employment,default_organization,data_use,,,,,2.0.0,,Processes data for the purpose of recruitment or employment and human resources (HR) related activities. -employment.recruitment,True,,,,Employment Recruitment,default_organization,employment,,,,,2.0.0,,Processes data of prospective employees for the purpose of recruitment. -essential,True,,,,Essential,default_organization,data_use,,,,,2.0.0,,"Operates the service or product, including legal obligations, support and basic system operations." -essential.fraud_detection,True,,,,Essential Fraud Detection,default_organization,essential,,,,,2.0.0,,"Detects possible fraud or misuse of the product, service, application or system." -essential.legal_obligation,True,,,,Essential Legal Obligation,default_organization,essential,,,,,2.0.0,,Provides service to meet a legal or compliance obligation such as consent management. -essential.service,True,,,,Essential for Service,default_organization,essential,,,,,2.0.0,,"Provides the essential product, service, application or system, without which the product/service would not be possible." -essential.service.authentication,True,,,,Essential Service Authentication,default_organization,essential.service,,,,,2.0.0,,"Authenticate users to the product, service, application or system." -essential.service.notifications,True,,,,Essential Service Notifications,default_organization,essential.service,,,,,2.0.0,,"Sends notifications about the product, service, application or system." -essential.service.operations,True,,,,Essential for Operations,default_organization,essential.service,,,,,2.0.0,,"Essential to ensure the operation of the product, service, application or system." -essential.service.payment_processing,True,,,,Essential for Payment Processing,default_organization,essential.service,,,,,2.0.0,,"Essential to processes payments for the product, service, application or system." -essential.service.security,True,,,,Essential for Security,default_organization,essential.service,,,,,2.0.0,,"Essential to provide security for the product, service, application or system" -essential.service.upgrades,True,,,,Essential for Service Upgrades,default_organization,essential.service,,,,,2.0.0,,Provides timely system upgrade information options. -essential.service.notifications.email,True,,,,Essential Email Service Notifications,default_organization,essential.service.notifications,,,,,2.0.0,,"Sends email notifications about the product, service, application or system." -essential.service.notifications.sms,True,,,,Essential SMS Service Notifications,default_organization,essential.service.notifications,,,,,2.0.0,,"Sends SMS notifications about the product, service, application or system." -essential.service.operations.support,True,,,,Essential for Operations Support,default_organization,essential.service.operations,,,,,2.0.0,,"Provides support for the product, service, application or system." -essential.service.operations.improve,True,,,,Essential for Support Improvement,default_organization,essential.service.operations,,,,,2.0.0,,"Essential to optimize and improve support for the product, service, application or system." -finance,True,,,,Finance,default_organization,data_use,,,,,2.0.0,,Enables finance and accounting activities such as audits and tax reporting. -functional,True,,,,Functional,default_organization,data_use,,,,,2.0.0,,"Used for specific, necessary, and legitimate purposes" -functional.storage,True,,,,Local Data Storage,default_organization,functional,,,,,2.0.0,,"Stores or accesses information from the device as needed when using a product, service, application, or system" -functional.service,True,,,,Service,default_organization,functional,,,,,2.0.0,,"Functions relating to provided services, products, applications or systems." -functional.service.improve,True,,,,Improve Service,default_organization,functional.service,,,,,2.0.0,,"Improves the specific product, service, application or system." -marketing,True,,,,Marketing,default_organization,data_use,,,,,2.0.0,,"Enables marketing, promotion, advertising and sales activities for the product, service, application or system." -marketing.advertising,True,,,,"Advertising, Marketing or Promotion",default_organization,marketing,,,,,2.0.0,,"Advertises or promotes the product, service, application or system and associated services." -marketing.communications,True,,,,Marketing Communications,default_organization,marketing,,,,,2.0.0,,"Uses combined channels to message and market to a customer, user or prospect." -marketing.advertising.first_party,True,,,,First Party Advertising,default_organization,marketing.advertising,,,,,2.0.0,,Serves advertisements based on first party data collected or derived about the user. -marketing.advertising.frequency_capping,True,,,,Frequency Capping,default_organization,marketing.advertising,,,,,2.0.0,,Restricts the number of times a specific advertisement is shown to an individual. -marketing.advertising.negative_targeting,True,,,,Negative Targeting,default_organization,marketing.advertising,,,,,2.0.0,,Enforces rules used to ensure a certain audience or group is not targeted by advertising. -marketing.advertising.profiling,True,,,,Profiling for Advertising,default_organization,marketing.advertising,,,,,2.0.0,,Creates audience profiles for the purpose of targeted advertising -marketing.advertising.serving,True,,,,Essential for Serving Ads,default_organization,marketing.advertising,,,,,2.0.0,,Essential to the delivery of advertising and content. -marketing.advertising.third_party,True,,,,Third Party Advertising,default_organization,marketing.advertising,,,,,2.0.0,,Serves advertisements based on data within the system or joined with data provided by 3rd parties. -marketing.advertising.first_party.contextual,True,,,,First Party Contextual Advertising,default_organization,marketing.advertising.first_party,,,,,2.0.0,,Serves advertisements based on current content being viewed by the user of the system or service. -marketing.advertising.first_party.targeted,True,,,,First Party Personalized Advertising,default_organization,marketing.advertising.first_party,,,,,2.0.0,,Targets advertisements based on data collected or derived about the user from use of the system. -marketing.advertising.third_party.targeted,True,,,,Third Party Targeted Advertising,default_organization,marketing.advertising.third_party,,,,,2.0.0,,Targets advertisements based on data within the system or joined with data provided by 3rd parties. -marketing.communications.email,True,,,,Marketing Email Communications,default_organization,marketing.communications,,,,,2.0.0,,Sends email marketing communications. -marketing.communications.sms,True,,,,Marketing SMS Communications,default_organization,marketing.communications,,,,,2.0.0,,Sends SMS marketing communications. -operations,True,,,,Operations,default_organization,data_use,,,,,2.0.0,,Supports business processes necessary to the organization's operation. -personalize,True,,,,Personalize,default_organization,data_use,,,,,2.0.0,,"Personalizes the product, service, application or system." -personalize.content,True,,,,Content Personalization,default_organization,personalize,,,,,2.0.0,,"Personalizes the content of the product, service, application or system." -personalize.system,True,,,,System Personalization,default_organization,personalize,,,,,2.0.0,,Personalizes the system. -personalize.content.limited,True,,,,Limited Content Personalization,default_organization,personalize.content,,,,,2.1.1,,Uses limited data for the purpose of serving content. -personalize.content.profiling,True,,,,Profiling for Personalization,default_organization,personalize.content,,,,,2.1.1,,Creates profiles for the purpose of serving content. -personalize.content.profiled,True,,,,Targeted Content Personalization,default_organization,personalize.content,,,,,2.1.1,,Uses profiles for the purpose of serving content. -sales,True,,,,Sales,default_organization,data_use,,,,,2.0.0,,Supports sales activities such as communications and outreach. -third_party_sharing,True,,,,Third Party Sharing,default_organization,data_use,,,,,2.0.0,,Transfers data to third parties outside of the system or service's scope. -third_party_sharing.legal_obligation,True,,,,Sharing for Legal Obligation,default_organization,third_party_sharing,,,,,2.0.0,,"Shares data for legal obligations, including contracts, applicable laws or regulations." -train_ai_system,True,,,,Train AI System,default_organization,data_use,,,,,2.0.0,,Trains an AI system or data model for machine learning. +fides_key,is_default,name,organization_fides_key,parent_key,replaced_by,tags,version_added,version_deprecated,description +data_use,,Data Use,,,,,,, +analytics,TRUE,Analytics,default_organization,data_use,,,2.0.0,,"Provides analytics for activities such as system and advertising performance reporting, insights and fraud detection." +analytics.reporting,TRUE,Analytics for Reporting,default_organization,analytics,,,2.0.0,,Provides analytics for general reporting such as system and advertising performance. +analytics.reporting.ad_performance,TRUE,Analytics for Advertising Performance,default_organization,analytics.reporting,,,2.0.0,,Provides analytics for reporting of advertising performance. +analytics.reporting.content_performance,TRUE,Analytics for Content Performance,default_organization,analytics.reporting,,,2.0.0,,Analytics for reporting on content performance. +analytics.reporting.campaign_insights,TRUE,Analytics for Insights,default_organization,analytics.reporting,,,2.0.0,,Provides analytics for reporting of campaign insights related to advertising and promotion activities. +analytics.reporting.system,TRUE,Analytics for System Activity,default_organization,analytics.reporting,,,2.0.0,,Provides analytics for reporting on system activity. +analytics.reporting.system.performance,TRUE,Analytics for System Performance,default_organization,analytics.reporting.system,,,2.0.0,,Provides analytics for reporting on system performance. +collect,TRUE,Collect,default_organization,data_use,,,2.0.0,,Collects or stores data in order to use it for another purpose which has not yet been expressly defined. +employment,TRUE,Employment,default_organization,data_use,,,2.0.0,,Processes data for the purpose of recruitment or employment and human resources (HR) related activities. +employment.recruitment,TRUE,Employment Recruitment,default_organization,employment,,,2.0.0,,Processes data of prospective employees for the purpose of recruitment. +essential,TRUE,Essential,default_organization,data_use,,,2.0.0,,"Operates the service or product, including legal obligations, support and basic system operations." +essential.fraud_detection,TRUE,Essential Fraud Detection,default_organization,essential,,,2.0.0,,"Detects possible fraud or misuse of the product, service, application or system." +essential.legal_obligation,TRUE,Essential Legal Obligation,default_organization,essential,,,2.0.0,,Provides service to meet a legal or compliance obligation such as consent management. +essential.service,TRUE,Essential for Service,default_organization,essential,,,2.0.0,,"Provides the essential product, service, application or system, without which the product/service would not be possible." +essential.service.authentication,TRUE,Essential Service Authentication,default_organization,essential.service,,,2.0.0,,"Authenticate users to the product, service, application or system." +essential.service.notifications,TRUE,Essential Service Notifications,default_organization,essential.service,,,2.0.0,,"Sends notifications about the product, service, application or system." +essential.service.operations,TRUE,Essential for Operations,default_organization,essential.service,,,2.0.0,,"Essential to ensure the operation of the product, service, application or system." +essential.service.payment_processing,TRUE,Essential for Payment Processing,default_organization,essential.service,,,2.0.0,,"Essential to processes payments for the product, service, application or system." +essential.service.security,TRUE,Essential for Security,default_organization,essential.service,,,2.0.0,,"Essential to provide security for the product, service, application or system" +essential.service.upgrades,TRUE,Essential for Service Upgrades,default_organization,essential.service,,,2.0.0,,Provides timely system upgrade information options. +essential.service.notifications.email,TRUE,Essential Email Service Notifications,default_organization,essential.service.notifications,,,2.0.0,,"Sends email notifications about the product, service, application or system." +essential.service.notifications.sms,TRUE,Essential SMS Service Notifications,default_organization,essential.service.notifications,,,2.0.0,,"Sends SMS notifications about the product, service, application or system." +essential.service.operations.support,TRUE,Essential for Operations Support,default_organization,essential.service.operations,,,2.0.0,,"Provides support for the product, service, application or system." +essential.service.operations.improve,TRUE,Essential for Support Improvement,default_organization,essential.service.operations,,,2.0.0,,"Essential to optimize and improve support for the product, service, application or system." +finance,TRUE,Finance,default_organization,data_use,,,2.0.0,,Enables finance and accounting activities such as audits and tax reporting. +functional,TRUE,Functional,default_organization,data_use,,,2.0.0,,"Used for specific, necessary, and legitimate purposes" +functional.storage,TRUE,Local Data Storage,default_organization,functional,,,2.0.0,,"Stores or accesses information from the device as needed when using a product, service, application, or system" +functional.service,TRUE,Service,default_organization,functional,,,2.0.0,,"Functions relating to provided services, products, applications or systems." +functional.service.improve,TRUE,Improve Service,default_organization,functional.service,,,2.0.0,,"Improves the specific product, service, application or system." +marketing,TRUE,Marketing,default_organization,data_use,,,2.0.0,,"Enables marketing, promotion, advertising and sales activities for the product, service, application or system." +marketing.advertising,TRUE,"Advertising, Marketing or Promotion",default_organization,marketing,,,2.0.0,,"Advertises or promotes the product, service, application or system and associated services." +marketing.communications,TRUE,Marketing Communications,default_organization,marketing,,,2.0.0,,"Uses combined channels to message and market to a customer, user or prospect." +marketing.advertising.first_party,TRUE,First Party Advertising,default_organization,marketing.advertising,,,2.0.0,,Serves advertisements based on first party data collected or derived about the user. +marketing.advertising.frequency_capping,TRUE,Frequency Capping,default_organization,marketing.advertising,,,2.0.0,,Restricts the number of times a specific advertisement is shown to an individual. +marketing.advertising.negative_targeting,TRUE,Negative Targeting,default_organization,marketing.advertising,,,2.0.0,,Enforces rules used to ensure a certain audience or group is not targeted by advertising. +marketing.advertising.profiling,TRUE,Profiling for Advertising,default_organization,marketing.advertising,,,2.0.0,,Creates audience profiles for the purpose of targeted advertising +marketing.advertising.serving,TRUE,Essential for Serving Ads,default_organization,marketing.advertising,,,2.0.0,,Essential to the delivery of advertising and content. +marketing.advertising.third_party,TRUE,Third Party Advertising,default_organization,marketing.advertising,,,2.0.0,,Serves advertisements based on data within the system or joined with data provided by 3rd parties. +marketing.advertising.first_party.contextual,TRUE,First Party Contextual Advertising,default_organization,marketing.advertising.first_party,,,2.0.0,,Serves advertisements based on current content being viewed by the user of the system or service. +marketing.advertising.first_party.targeted,TRUE,First Party Personalized Advertising,default_organization,marketing.advertising.first_party,,,2.0.0,,Targets advertisements based on data collected or derived about the user from use of the system. +marketing.advertising.third_party.targeted,TRUE,Third Party Targeted Advertising,default_organization,marketing.advertising.third_party,,,2.0.0,,Targets advertisements based on data within the system or joined with data provided by 3rd parties. +marketing.communications.email,TRUE,Marketing Email Communications,default_organization,marketing.communications,,,2.0.0,,Sends email marketing communications. +marketing.communications.sms,TRUE,Marketing SMS Communications,default_organization,marketing.communications,,,2.0.0,,Sends SMS marketing communications. +operations,TRUE,Operations,default_organization,data_use,,,2.0.0,,Supports business processes necessary to the organization's operation. +personalize,TRUE,Personalize,default_organization,data_use,,,2.0.0,,"Personalizes the product, service, application or system." +personalize.content,TRUE,Content Personalization,default_organization,personalize,,,2.0.0,,"Personalizes the content of the product, service, application or system." +personalize.system,TRUE,System Personalization,default_organization,personalize,,,2.0.0,,Personalizes the system. +personalize.content.limited,TRUE,Limited Content Personalization,default_organization,personalize.content,,,2.1.1,,Uses limited data for the purpose of serving content. +personalize.content.profiling,TRUE,Profiling for Personalization,default_organization,personalize.content,,,2.1.1,,Creates profiles for the purpose of serving content. +personalize.content.profiled,TRUE,Targeted Content Personalization,default_organization,personalize.content,,,2.1.1,,Uses profiles for the purpose of serving content. +sales,TRUE,Sales,default_organization,data_use,,,2.0.0,,Supports sales activities such as communications and outreach. +third_party_sharing,TRUE,Third Party Sharing,default_organization,data_use,,,2.0.0,,Transfers data to third parties outside of the system or service's scope. +third_party_sharing.legal_obligation,TRUE,Sharing for Legal Obligation,default_organization,third_party_sharing,,,2.0.0,,"Shares data for legal obligations, including contracts, applicable laws or regulations." +train_ai_system,TRUE,Train AI System,default_organization,data_use,,,2.0.0,,Trains an AI system or data model for machine learning. \ No newline at end of file diff --git a/data_files/data_uses.json b/data_files/data_uses.json index cd2c46c3..e5794089 100644 --- a/data_files/data_uses.json +++ b/data_files/data_uses.json @@ -10,12 +10,7 @@ "tags": null, "name": "Analytics", "description": "Provides analytics for activities such as system and advertising performance reporting, insights and fraud detection.", - "parent_key": null, - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": null }, { "version_added": "2.0.0", @@ -27,12 +22,7 @@ "tags": null, "name": "Analytics for Reporting", "description": "Provides analytics for general reporting such as system and advertising performance.", - "parent_key": "analytics", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "analytics" }, { "version_added": "2.0.0", @@ -44,12 +34,7 @@ "tags": null, "name": "Analytics for Advertising Performance", "description": "Provides analytics for reporting of advertising performance.", - "parent_key": "analytics.reporting", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "analytics.reporting" }, { "version_added": "2.0.0", @@ -61,12 +46,7 @@ "tags": null, "name": "Analytics for Content Performance", "description": "Analytics for reporting on content performance.", - "parent_key": "analytics.reporting", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "analytics.reporting" }, { "version_added": "2.0.0", @@ -78,12 +58,7 @@ "tags": null, "name": "Analytics for Insights", "description": "Provides analytics for reporting of campaign insights related to advertising and promotion activities.", - "parent_key": "analytics.reporting", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "analytics.reporting" }, { "version_added": "2.0.0", @@ -95,12 +70,7 @@ "tags": null, "name": "Analytics for System Activity", "description": "Provides analytics for reporting on system activity.", - "parent_key": "analytics.reporting", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "analytics.reporting" }, { "version_added": "2.0.0", @@ -112,12 +82,7 @@ "tags": null, "name": "Analytics for System Performance", "description": "Provides analytics for reporting on system performance.", - "parent_key": "analytics.reporting.system", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "analytics.reporting.system" }, { "version_added": "2.0.0", @@ -129,12 +94,7 @@ "tags": null, "name": "Collect", "description": "Collects or stores data in order to use it for another purpose which has not yet been expressly defined.", - "parent_key": null, - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": null }, { "version_added": "2.0.0", @@ -146,12 +106,7 @@ "tags": null, "name": "Employment", "description": "Processes data for the purpose of recruitment or employment and human resources (HR) related activities.", - "parent_key": null, - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": null }, { "version_added": "2.0.0", @@ -163,12 +118,7 @@ "tags": null, "name": "Employment Recruitment", "description": "Processes data of prospective employees for the purpose of recruitment.", - "parent_key": "employment", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "employment" }, { "version_added": "2.0.0", @@ -180,12 +130,7 @@ "tags": null, "name": "Essential", "description": "Operates the service or product, including legal obligations, support and basic system operations.", - "parent_key": null, - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": null }, { "version_added": "2.0.0", @@ -197,12 +142,7 @@ "tags": null, "name": "Essential Fraud Detection", "description": "Detects possible fraud or misuse of the product, service, application or system.", - "parent_key": "essential", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "essential" }, { "version_added": "2.0.0", @@ -214,12 +154,7 @@ "tags": null, "name": "Essential Legal Obligation", "description": "Provides service to meet a legal or compliance obligation such as consent management.", - "parent_key": "essential", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "essential" }, { "version_added": "2.0.0", @@ -231,12 +166,7 @@ "tags": null, "name": "Essential for Service", "description": "Provides the essential product, service, application or system, without which the product/service would not be possible.", - "parent_key": "essential", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "essential" }, { "version_added": "2.0.0", @@ -248,12 +178,7 @@ "tags": null, "name": "Essential Service Authentication", "description": "Authenticate users to the product, service, application or system.", - "parent_key": "essential.service", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "essential.service" }, { "version_added": "2.0.0", @@ -265,12 +190,7 @@ "tags": null, "name": "Essential Service Notifications", "description": "Sends notifications about the product, service, application or system.", - "parent_key": "essential.service", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "essential.service" }, { "version_added": "2.0.0", @@ -282,12 +202,7 @@ "tags": null, "name": "Essential for Operations", "description": "Essential to ensure the operation of the product, service, application or system.", - "parent_key": "essential.service", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "essential.service" }, { "version_added": "2.0.0", @@ -299,12 +214,7 @@ "tags": null, "name": "Essential for Payment Processing", "description": "Essential to processes payments for the product, service, application or system.", - "parent_key": "essential.service", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "essential.service" }, { "version_added": "2.0.0", @@ -316,12 +226,7 @@ "tags": null, "name": "Essential for Security", "description": "Essential to provide security for the product, service, application or system", - "parent_key": "essential.service", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "essential.service" }, { "version_added": "2.0.0", @@ -333,12 +238,7 @@ "tags": null, "name": "Essential for Service Upgrades", "description": "Provides timely system upgrade information options.", - "parent_key": "essential.service", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "essential.service" }, { "version_added": "2.0.0", @@ -350,12 +250,7 @@ "tags": null, "name": "Essential Email Service Notifications", "description": "Sends email notifications about the product, service, application or system.", - "parent_key": "essential.service.notifications", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "essential.service.notifications" }, { "version_added": "2.0.0", @@ -367,12 +262,7 @@ "tags": null, "name": "Essential SMS Service Notifications", "description": "Sends SMS notifications about the product, service, application or system.", - "parent_key": "essential.service.notifications", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "essential.service.notifications" }, { "version_added": "2.0.0", @@ -384,12 +274,7 @@ "tags": null, "name": "Essential for Operations Support", "description": "Provides support for the product, service, application or system.", - "parent_key": "essential.service.operations", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "essential.service.operations" }, { "version_added": "2.0.0", @@ -401,12 +286,7 @@ "tags": null, "name": "Essential for Support Improvement", "description": "Essential to optimize and improve support for the product, service, application or system.", - "parent_key": "essential.service.operations", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "essential.service.operations" }, { "version_added": "2.0.0", @@ -418,12 +298,7 @@ "tags": null, "name": "Finance", "description": "Enables finance and accounting activities such as audits and tax reporting.", - "parent_key": null, - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": null }, { "version_added": "2.0.0", @@ -435,12 +310,7 @@ "tags": null, "name": "Functional", "description": "Used for specific, necessary, and legitimate purposes", - "parent_key": null, - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": null }, { "version_added": "2.0.0", @@ -452,12 +322,7 @@ "tags": null, "name": "Local Data Storage", "description": "Stores or accesses information from the device as needed when using a product, service, application, or system", - "parent_key": "functional", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "functional" }, { "version_added": "2.0.0", @@ -469,12 +334,7 @@ "tags": null, "name": "Service", "description": "Functions relating to provided services, products, applications or systems.", - "parent_key": "functional", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "functional" }, { "version_added": "2.0.0", @@ -486,12 +346,7 @@ "tags": null, "name": "Improve Service", "description": "Improves the specific product, service, application or system.", - "parent_key": "functional.service", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "functional.service" }, { "version_added": "2.0.0", @@ -503,12 +358,7 @@ "tags": null, "name": "Marketing", "description": "Enables marketing, promotion, advertising and sales activities for the product, service, application or system.", - "parent_key": null, - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": null }, { "version_added": "2.0.0", @@ -520,12 +370,7 @@ "tags": null, "name": "Advertising, Marketing or Promotion", "description": "Advertises or promotes the product, service, application or system and associated services.", - "parent_key": "marketing", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "marketing" }, { "version_added": "2.0.0", @@ -537,12 +382,7 @@ "tags": null, "name": "Marketing Communications", "description": "Uses combined channels to message and market to a customer, user or prospect.", - "parent_key": "marketing", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "marketing" }, { "version_added": "2.0.0", @@ -554,12 +394,7 @@ "tags": null, "name": "First Party Advertising", "description": "Serves advertisements based on first party data collected or derived about the user.", - "parent_key": "marketing.advertising", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "marketing.advertising" }, { "version_added": "2.0.0", @@ -571,12 +406,7 @@ "tags": null, "name": "Frequency Capping", "description": "Restricts the number of times a specific advertisement is shown to an individual.", - "parent_key": "marketing.advertising", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "marketing.advertising" }, { "version_added": "2.0.0", @@ -588,12 +418,7 @@ "tags": null, "name": "Negative Targeting", "description": "Enforces rules used to ensure a certain audience or group is not targeted by advertising.", - "parent_key": "marketing.advertising", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "marketing.advertising" }, { "version_added": "2.0.0", @@ -605,12 +430,7 @@ "tags": null, "name": "Profiling for Advertising", "description": "Creates audience profiles for the purpose of targeted advertising", - "parent_key": "marketing.advertising", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "marketing.advertising" }, { "version_added": "2.0.0", @@ -622,12 +442,7 @@ "tags": null, "name": "Essential for Serving Ads", "description": "Essential to the delivery of advertising and content.", - "parent_key": "marketing.advertising", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "marketing.advertising" }, { "version_added": "2.0.0", @@ -639,12 +454,7 @@ "tags": null, "name": "Third Party Advertising", "description": "Serves advertisements based on data within the system or joined with data provided by 3rd parties.", - "parent_key": "marketing.advertising", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "marketing.advertising" }, { "version_added": "2.0.0", @@ -656,12 +466,7 @@ "tags": null, "name": "First Party Contextual Advertising", "description": "Serves advertisements based on current content being viewed by the user of the system or service.", - "parent_key": "marketing.advertising.first_party", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "marketing.advertising.first_party" }, { "version_added": "2.0.0", @@ -673,12 +478,7 @@ "tags": null, "name": "First Party Personalized Advertising", "description": "Targets advertisements based on data collected or derived about the user from use of the system.", - "parent_key": "marketing.advertising.first_party", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "marketing.advertising.first_party" }, { "version_added": "2.0.0", @@ -690,12 +490,7 @@ "tags": null, "name": "Third Party Targeted Advertising", "description": "Targets advertisements based on data within the system or joined with data provided by 3rd parties.", - "parent_key": "marketing.advertising.third_party", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "marketing.advertising.third_party" }, { "version_added": "2.0.0", @@ -707,12 +502,7 @@ "tags": null, "name": "Marketing Email Communications", "description": "Sends email marketing communications.", - "parent_key": "marketing.communications", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "marketing.communications" }, { "version_added": "2.0.0", @@ -724,12 +514,7 @@ "tags": null, "name": "Marketing SMS Communications", "description": "Sends SMS marketing communications.", - "parent_key": "marketing.communications", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "marketing.communications" }, { "version_added": "2.0.0", @@ -741,12 +526,7 @@ "tags": null, "name": "Operations", "description": "Supports business processes necessary to the organization's operation.", - "parent_key": null, - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": null }, { "version_added": "2.0.0", @@ -758,12 +538,7 @@ "tags": null, "name": "Personalize", "description": "Personalizes the product, service, application or system.", - "parent_key": null, - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": null }, { "version_added": "2.0.0", @@ -775,12 +550,7 @@ "tags": null, "name": "Content Personalization", "description": "Personalizes the content of the product, service, application or system.", - "parent_key": "personalize", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "personalize" }, { "version_added": "2.0.0", @@ -792,12 +562,7 @@ "tags": null, "name": "System Personalization", "description": "Personalizes the system.", - "parent_key": "personalize", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "personalize" }, { "version_added": "2.1.1", @@ -809,12 +574,7 @@ "tags": null, "name": "Limited Content Personalization", "description": "Uses limited data for the purpose of serving content.", - "parent_key": "personalize.content", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "personalize.content" }, { "version_added": "2.1.1", @@ -826,12 +586,7 @@ "tags": null, "name": "Profiling for Personalization", "description": "Creates profiles for the purpose of serving content.", - "parent_key": "personalize.content", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "personalize.content" }, { "version_added": "2.1.1", @@ -843,12 +598,7 @@ "tags": null, "name": "Targeted Content Personalization", "description": "Uses profiles for the purpose of serving content.", - "parent_key": "personalize.content", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "personalize.content" }, { "version_added": "2.0.0", @@ -860,12 +610,7 @@ "tags": null, "name": "Sales", "description": "Supports sales activities such as communications and outreach.", - "parent_key": null, - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": null }, { "version_added": "2.0.0", @@ -877,12 +622,7 @@ "tags": null, "name": "Third Party Sharing", "description": "Transfers data to third parties outside of the system or service's scope.", - "parent_key": null, - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": null }, { "version_added": "2.0.0", @@ -894,12 +634,7 @@ "tags": null, "name": "Sharing for Legal Obligation", "description": "Shares data for legal obligations, including contracts, applicable laws or regulations.", - "parent_key": "third_party_sharing", - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": "third_party_sharing" }, { "version_added": "2.0.0", @@ -911,12 +646,7 @@ "tags": null, "name": "Train AI System", "description": "Trains an AI system or data model for machine learning.", - "parent_key": null, - "legal_basis": null, - "special_category": null, - "recipients": null, - "legitimate_interest": null, - "legitimate_interest_impact_assessment": null + "parent_key": null } ] } diff --git a/data_files/data_uses.yml b/data_files/data_uses.yml index 8fd69bcc..249e7fa4 100644 --- a/data_files/data_uses.yml +++ b/data_files/data_uses.yml @@ -10,11 +10,6 @@ data_use: description: Provides analytics for activities such as system and advertising performance reporting, insights and fraud detection. parent_key: null - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -26,11 +21,6 @@ data_use: description: Provides analytics for general reporting such as system and advertising performance. parent_key: analytics - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -41,11 +31,6 @@ data_use: name: Analytics for Advertising Performance description: Provides analytics for reporting of advertising performance. parent_key: analytics.reporting - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -56,11 +41,6 @@ data_use: name: Analytics for Content Performance description: Analytics for reporting on content performance. parent_key: analytics.reporting - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -72,11 +52,6 @@ data_use: description: Provides analytics for reporting of campaign insights related to advertising and promotion activities. parent_key: analytics.reporting - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -87,11 +62,6 @@ data_use: name: Analytics for System Activity description: Provides analytics for reporting on system activity. parent_key: analytics.reporting - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -102,11 +72,6 @@ data_use: name: Analytics for System Performance description: Provides analytics for reporting on system performance. parent_key: analytics.reporting.system - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -118,11 +83,6 @@ data_use: description: Collects or stores data in order to use it for another purpose which has not yet been expressly defined. parent_key: null - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -134,11 +94,6 @@ data_use: description: Processes data for the purpose of recruitment or employment and human resources (HR) related activities. parent_key: null - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -149,11 +104,6 @@ data_use: name: Employment Recruitment description: Processes data of prospective employees for the purpose of recruitment. parent_key: employment - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -165,11 +115,6 @@ data_use: description: Operates the service or product, including legal obligations, support and basic system operations. parent_key: null - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -181,11 +126,6 @@ data_use: description: Detects possible fraud or misuse of the product, service, application or system. parent_key: essential - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -197,11 +137,6 @@ data_use: description: Provides service to meet a legal or compliance obligation such as consent management. parent_key: essential - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -213,11 +148,6 @@ data_use: description: Provides the essential product, service, application or system, without which the product/service would not be possible. parent_key: essential - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -228,11 +158,6 @@ data_use: name: Essential Service Authentication description: Authenticate users to the product, service, application or system. parent_key: essential.service - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -243,11 +168,6 @@ data_use: name: Essential Service Notifications description: Sends notifications about the product, service, application or system. parent_key: essential.service - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -259,11 +179,6 @@ data_use: description: Essential to ensure the operation of the product, service, application or system. parent_key: essential.service - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -275,11 +190,6 @@ data_use: description: Essential to processes payments for the product, service, application or system. parent_key: essential.service - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -291,11 +201,6 @@ data_use: description: Essential to provide security for the product, service, application or system parent_key: essential.service - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -306,11 +211,6 @@ data_use: name: Essential for Service Upgrades description: Provides timely system upgrade information options. parent_key: essential.service - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -322,11 +222,6 @@ data_use: description: Sends email notifications about the product, service, application or system. parent_key: essential.service.notifications - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -338,11 +233,6 @@ data_use: description: Sends SMS notifications about the product, service, application or system. parent_key: essential.service.notifications - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -353,11 +243,6 @@ data_use: name: Essential for Operations Support description: Provides support for the product, service, application or system. parent_key: essential.service.operations - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -369,11 +254,6 @@ data_use: description: Essential to optimize and improve support for the product, service, application or system. parent_key: essential.service.operations - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -384,11 +264,6 @@ data_use: name: Finance description: Enables finance and accounting activities such as audits and tax reporting. parent_key: null - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -399,11 +274,6 @@ data_use: name: Functional description: Used for specific, necessary, and legitimate purposes parent_key: null - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -415,11 +285,6 @@ data_use: description: Stores or accesses information from the device as needed when using a product, service, application, or system parent_key: functional - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -431,11 +296,6 @@ data_use: description: Functions relating to provided services, products, applications or systems. parent_key: functional - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -446,11 +306,6 @@ data_use: name: Improve Service description: Improves the specific product, service, application or system. parent_key: functional.service - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -462,11 +317,6 @@ data_use: description: Enables marketing, promotion, advertising and sales activities for the product, service, application or system. parent_key: null - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -478,11 +328,6 @@ data_use: description: Advertises or promotes the product, service, application or system and associated services. parent_key: marketing - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -494,11 +339,6 @@ data_use: description: Uses combined channels to message and market to a customer, user or prospect. parent_key: marketing - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -510,11 +350,6 @@ data_use: description: Serves advertisements based on first party data collected or derived about the user. parent_key: marketing.advertising - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -526,11 +361,6 @@ data_use: description: Restricts the number of times a specific advertisement is shown to an individual. parent_key: marketing.advertising - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -542,11 +372,6 @@ data_use: description: Enforces rules used to ensure a certain audience or group is not targeted by advertising. parent_key: marketing.advertising - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -557,11 +382,6 @@ data_use: name: Profiling for Advertising description: Creates audience profiles for the purpose of targeted advertising parent_key: marketing.advertising - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -572,11 +392,6 @@ data_use: name: Essential for Serving Ads description: Essential to the delivery of advertising and content. parent_key: marketing.advertising - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -588,11 +403,6 @@ data_use: description: Serves advertisements based on data within the system or joined with data provided by 3rd parties. parent_key: marketing.advertising - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -604,11 +414,6 @@ data_use: description: Serves advertisements based on current content being viewed by the user of the system or service. parent_key: marketing.advertising.first_party - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -620,11 +425,6 @@ data_use: description: Targets advertisements based on data collected or derived about the user from use of the system. parent_key: marketing.advertising.first_party - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -636,11 +436,6 @@ data_use: description: Targets advertisements based on data within the system or joined with data provided by 3rd parties. parent_key: marketing.advertising.third_party - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -651,11 +446,6 @@ data_use: name: Marketing Email Communications description: Sends email marketing communications. parent_key: marketing.communications - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -666,11 +456,6 @@ data_use: name: Marketing SMS Communications description: Sends SMS marketing communications. parent_key: marketing.communications - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -681,11 +466,6 @@ data_use: name: Operations description: Supports business processes necessary to the organization's operation. parent_key: null - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -696,11 +476,6 @@ data_use: name: Personalize description: Personalizes the product, service, application or system. parent_key: null - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -711,11 +486,6 @@ data_use: name: Content Personalization description: Personalizes the content of the product, service, application or system. parent_key: personalize - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -726,11 +496,6 @@ data_use: name: System Personalization description: Personalizes the system. parent_key: personalize - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.1.1 version_deprecated: null replaced_by: null @@ -741,11 +506,6 @@ data_use: name: Limited Content Personalization description: Uses limited data for the purpose of serving content. parent_key: personalize.content - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.1.1 version_deprecated: null replaced_by: null @@ -756,11 +516,6 @@ data_use: name: Profiling for Personalization description: Creates profiles for the purpose of serving content. parent_key: personalize.content - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.1.1 version_deprecated: null replaced_by: null @@ -771,11 +526,6 @@ data_use: name: Targeted Content Personalization description: Uses profiles for the purpose of serving content. parent_key: personalize.content - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -786,11 +536,6 @@ data_use: name: Sales description: Supports sales activities such as communications and outreach. parent_key: null - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -802,11 +547,6 @@ data_use: description: Transfers data to third parties outside of the system or service's scope. parent_key: null - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -818,11 +558,6 @@ data_use: description: Shares data for legal obligations, including contracts, applicable laws or regulations. parent_key: third_party_sharing - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -833,8 +568,3 @@ data_use: name: Train AI System description: Trains an AI system or data model for machine learning. parent_key: null - legal_basis: null - special_category: null - recipients: null - legitimate_interest: null - legitimate_interest_impact_assessment: null diff --git a/demo_resources/demo_dataset.yml b/demo_resources/demo_dataset.yml index 29867d45..e9967a08 100644 --- a/demo_resources/demo_dataset.yml +++ b/demo_resources/demo_dataset.yml @@ -5,47 +5,31 @@ dataset: description: Data collected about users for our analytics system. meta: null data_categories: [] - data_qualifiers: - - aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified - retention: "30 days after account deletion" - third_country_transfers: - - GBR - - CAN collections: - name: users description: User information data_categories: [] - data_qualifiers: - - aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified fields: - name: created_at description: User's creation timestamp data_categories: - system.operations - data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified - name: email description: User's Email data_categories: - user.contact.email - data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified - retention: Account termination - name: first_name description: User's first name data_categories: - user.name - data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified - retention: Account termination - name: food_preference description: User's favorite food data_categories: [] - data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified - name: state description: User's State data_categories: - user.contact.state - data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified - name: uuid description: User's unique ID data_categories: - user.unique_id - data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified diff --git a/demo_resources/demo_extended_taxonomy.yml b/demo_resources/demo_extended_taxonomy.yml index b75af01d..e23693fa 100644 --- a/demo_resources/demo_extended_taxonomy.yml +++ b/demo_resources/demo_extended_taxonomy.yml @@ -2,11 +2,6 @@ data_use: - fides_key: third_party_sharing.personalized_advertising.direct_marketing name: Direct Marketing description: User information for direct marketing purposes - recipients: - - Processor - marketing co. - legal_basis: Legitimate Interests - special_category: Vital Interests - legitimate_interest_impact_assessment: https://example.org/legitimate_interest_assessment parent_key: third_party_sharing.personalized_advertising data_subject: diff --git a/demo_resources/demo_policy.yml b/demo_resources/demo_policy.yml index 61ff9c3b..159175bb 100644 --- a/demo_resources/demo_policy.yml +++ b/demo_resources/demo_policy.yml @@ -17,4 +17,3 @@ policy: matches: ANY values: - customer - data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified diff --git a/demo_resources/demo_registry.yml b/demo_resources/demo_registry.yml deleted file mode 100644 index 7d4658e0..00000000 --- a/demo_resources/demo_registry.yml +++ /dev/null @@ -1,4 +0,0 @@ -registry: - - fides_key: demo_registry - name: Demo Registry - description: Demo Registry diff --git a/demo_resources/demo_system.yml b/demo_resources/demo_system.yml index 72448167..647f9440 100644 --- a/demo_resources/demo_system.yml +++ b/demo_resources/demo_system.yml @@ -4,14 +4,6 @@ system: description: A system used for analyzing customer behaviour. system_type: Service administrating_department: Engineering - data_responsibility_title: Controller - third_country_transfers: - - USA - - CAN - data_protection_impact_assessment: - is_required: True - progress: Complete - link: https://example.org/analytics_system_data_protection_impact_assessment ingress: - fides_key: demo_users_dataset type: dataset @@ -23,7 +15,6 @@ system: data_use: improve.system data_subjects: - customer - data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified ingress: - demo_users_dataset @@ -31,7 +22,6 @@ system: name: Demo Marketing System description: Collect data about our users for marketing. system_type: Service - data_responsibility_title: Processor privacy_declarations: - name: Collect data for marketing data_categories: @@ -40,4 +30,3 @@ system: data_use: advertising data_subjects: - customer - data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified diff --git a/mkdocs/docs/csv/data_qualifiers.csv b/mkdocs/docs/csv/data_qualifiers.csv deleted file mode 100644 index 6103544b..00000000 --- a/mkdocs/docs/csv/data_qualifiers.csv +++ /dev/null @@ -1,7 +0,0 @@ -fides_key,is_default,name,organization_fides_key,parent_key,replaced_by,tags,version_added,version_deprecated,description -data_qualifier,,Data Qualifier,,,,,,, -aggregated,True,Aggregated Data,default_organization,data_qualifier,,,2.0.0,,Statistical data that does not contain individually identifying information but includes information about groups of individuals that renders individual identification impossible. -aggregated.anonymized,True,Anonymized Data,default_organization,aggregated,,,2.0.0,,Data where all attributes have been sufficiently altered that the individaul cannot be reidentified by this data or in combination with other datasets. -aggregated.anonymized.unlinked_pseudonymized,True,Unlinked Pseudonymized Data,default_organization,aggregated.anonymized,,,2.0.0,,"Data for which all identifiers have been substituted with unrelated values and linkages broken such that it may not be reversed, even by the party that performed the pseudonymization." -aggregated.anonymized.unlinked_pseudonymized.pseudonymized,True,Pseudonymized Data,default_organization,aggregated.anonymized.unlinked_pseudonymized,,,2.0.0,,"Data for which all identifiers have been substituted with unrelated values, rendering the individual unidentifiable and cannot be reasonably reversed other than by the party that performed the pseudonymization." -aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified,True,Identified Data,default_organization,aggregated.anonymized.unlinked_pseudonymized.pseudonymized,,,2.0.0,,Data that directly identifies an individual. diff --git a/mkdocs/docs/csv/data_uses.csv b/mkdocs/docs/csv/data_uses.csv index 875f5e52..4b1477a9 100644 --- a/mkdocs/docs/csv/data_uses.csv +++ b/mkdocs/docs/csv/data_uses.csv @@ -1,56 +1,56 @@ -fides_key,is_default,legal_basis,legitimate_interest,legitimate_interest_impact_assessment,name,organization_fides_key,parent_key,recipients,replaced_by,special_category,tags,version_added,version_deprecated,description -data_use,,,,,Data Use,,,,,,,,, -analytics,True,,,,Analytics,default_organization,data_use,,,,,2.0.0,,"Provides analytics for activities such as system and advertising performance reporting, insights and fraud detection." -analytics.reporting,True,,,,Analytics for Reporting,default_organization,analytics,,,,,2.0.0,,Provides analytics for general reporting such as system and advertising performance. -analytics.reporting.ad_performance,True,,,,Analytics for Advertising Performance,default_organization,analytics.reporting,,,,,2.0.0,,Provides analytics for reporting of advertising performance. -analytics.reporting.content_performance,True,,,,Analytics for Content Performance,default_organization,analytics.reporting,,,,,2.0.0,,Analytics for reporting on content performance. -analytics.reporting.campaign_insights,True,,,,Analytics for Insights,default_organization,analytics.reporting,,,,,2.0.0,,Provides analytics for reporting of campaign insights related to advertising and promotion activities. -analytics.reporting.system,True,,,,Analytics for System Activity,default_organization,analytics.reporting,,,,,2.0.0,,Provides analytics for reporting on system activity. -analytics.reporting.system.performance,True,,,,Analytics for System Performance,default_organization,analytics.reporting.system,,,,,2.0.0,,Provides analytics for reporting on system performance. -collect,True,,,,Collect,default_organization,data_use,,,,,2.0.0,,Collects or stores data in order to use it for another purpose which has not yet been expressly defined. -employment,True,,,,Employment,default_organization,data_use,,,,,2.0.0,,Processes data for the purpose of recruitment or employment and human resources (HR) related activities. -employment.recruitment,True,,,,Employment Recruitment,default_organization,employment,,,,,2.0.0,,Processes data of prospective employees for the purpose of recruitment. -essential,True,,,,Essential,default_organization,data_use,,,,,2.0.0,,"Operates the service or product, including legal obligations, support and basic system operations." -essential.fraud_detection,True,,,,Essential Fraud Detection,default_organization,essential,,,,,2.0.0,,"Detects possible fraud or misuse of the product, service, application or system." -essential.legal_obligation,True,,,,Essential Legal Obligation,default_organization,essential,,,,,2.0.0,,Provides service to meet a legal or compliance obligation such as consent management. -essential.service,True,,,,Essential for Service,default_organization,essential,,,,,2.0.0,,"Provides the essential product, service, application or system, without which the product/service would not be possible." -essential.service.authentication,True,,,,Essential Service Authentication,default_organization,essential.service,,,,,2.0.0,,"Authenticate users to the product, service, application or system." -essential.service.notifications,True,,,,Essential Service Notifications,default_organization,essential.service,,,,,2.0.0,,"Sends notifications about the product, service, application or system." -essential.service.operations,True,,,,Essential for Operations,default_organization,essential.service,,,,,2.0.0,,"Essential to ensure the operation of the product, service, application or system." -essential.service.payment_processing,True,,,,Essential for Payment Processing,default_organization,essential.service,,,,,2.0.0,,"Essential to processes payments for the product, service, application or system." -essential.service.security,True,,,,Essential for Security,default_organization,essential.service,,,,,2.0.0,,"Essential to provide security for the product, service, application or system" -essential.service.upgrades,True,,,,Essential for Service Upgrades,default_organization,essential.service,,,,,2.0.0,,Provides timely system upgrade information options. -essential.service.notifications.email,True,,,,Essential Email Service Notifications,default_organization,essential.service.notifications,,,,,2.0.0,,"Sends email notifications about the product, service, application or system." -essential.service.notifications.sms,True,,,,Essential SMS Service Notifications,default_organization,essential.service.notifications,,,,,2.0.0,,"Sends SMS notifications about the product, service, application or system." -essential.service.operations.support,True,,,,Essential for Operations Support,default_organization,essential.service.operations,,,,,2.0.0,,"Provides support for the product, service, application or system." -essential.service.operations.improve,True,,,,Essential for Support Improvement,default_organization,essential.service.operations,,,,,2.0.0,,"Essential to optimize and improve support for the product, service, application or system." -finance,True,,,,Finance,default_organization,data_use,,,,,2.0.0,,Enables finance and accounting activities such as audits and tax reporting. -functional,True,,,,Functional,default_organization,data_use,,,,,2.0.0,,"Used for specific, necessary, and legitimate purposes" -functional.storage,True,,,,Local Data Storage,default_organization,functional,,,,,2.0.0,,"Stores or accesses information from the device as needed when using a product, service, application, or system" -functional.service,True,,,,Service,default_organization,functional,,,,,2.0.0,,"Functions relating to provided services, products, applications or systems." -functional.service.improve,True,,,,Improve Service,default_organization,functional.service,,,,,2.0.0,,"Improves the specific product, service, application or system." -marketing,True,,,,Marketing,default_organization,data_use,,,,,2.0.0,,"Enables marketing, promotion, advertising and sales activities for the product, service, application or system." -marketing.advertising,True,,,,"Advertising, Marketing or Promotion",default_organization,marketing,,,,,2.0.0,,"Advertises or promotes the product, service, application or system and associated services." -marketing.communications,True,,,,Marketing Communications,default_organization,marketing,,,,,2.0.0,,"Uses combined channels to message and market to a customer, user or prospect." -marketing.advertising.first_party,True,,,,First Party Advertising,default_organization,marketing.advertising,,,,,2.0.0,,Serves advertisements based on first party data collected or derived about the user. -marketing.advertising.frequency_capping,True,,,,Frequency Capping,default_organization,marketing.advertising,,,,,2.0.0,,Restricts the number of times a specific advertisement is shown to an individual. -marketing.advertising.negative_targeting,True,,,,Negative Targeting,default_organization,marketing.advertising,,,,,2.0.0,,Enforces rules used to ensure a certain audience or group is not targeted by advertising. -marketing.advertising.profiling,True,,,,Profiling for Advertising,default_organization,marketing.advertising,,,,,2.0.0,,Creates audience profiles for the purpose of targeted advertising -marketing.advertising.serving,True,,,,Essential for Serving Ads,default_organization,marketing.advertising,,,,,2.0.0,,Essential to the delivery of advertising and content. -marketing.advertising.third_party,True,,,,Third Party Advertising,default_organization,marketing.advertising,,,,,2.0.0,,Serves advertisements based on data within the system or joined with data provided by 3rd parties. -marketing.advertising.first_party.contextual,True,,,,First Party Contextual Advertising,default_organization,marketing.advertising.first_party,,,,,2.0.0,,Serves advertisements based on current content being viewed by the user of the system or service. -marketing.advertising.first_party.targeted,True,,,,First Party Personalized Advertising,default_organization,marketing.advertising.first_party,,,,,2.0.0,,Targets advertisements based on data collected or derived about the user from use of the system. -marketing.advertising.third_party.targeted,True,,,,Third Party Targeted Advertising,default_organization,marketing.advertising.third_party,,,,,2.0.0,,Targets advertisements based on data within the system or joined with data provided by 3rd parties. -marketing.communications.email,True,,,,Marketing Email Communications,default_organization,marketing.communications,,,,,2.0.0,,Sends email marketing communications. -marketing.communications.sms,True,,,,Marketing SMS Communications,default_organization,marketing.communications,,,,,2.0.0,,Sends SMS marketing communications. -operations,True,,,,Operations,default_organization,data_use,,,,,2.0.0,,Supports business processes necessary to the organization's operation. -personalize,True,,,,Personalize,default_organization,data_use,,,,,2.0.0,,"Personalizes the product, service, application or system." -personalize.content,True,,,,Content Personalization,default_organization,personalize,,,,,2.0.0,,"Personalizes the content of the product, service, application or system." -personalize.system,True,,,,System Personalization,default_organization,personalize,,,,,2.0.0,,Personalizes the system. -personalize.content.limited,True,,,,Limited Content Personalization,default_organization,personalize.content,,,,,2.1.1,,Uses limited data for the purpose of serving content. -personalize.content.profiling,True,,,,Profiling for Personalization,default_organization,personalize.content,,,,,2.1.1,,Creates profiles for the purpose of serving content. -personalize.content.profiled,True,,,,Targeted Content Personalization,default_organization,personalize.content,,,,,2.1.1,,Uses profiles for the purpose of serving content. -sales,True,,,,Sales,default_organization,data_use,,,,,2.0.0,,Supports sales activities such as communications and outreach. -third_party_sharing,True,,,,Third Party Sharing,default_organization,data_use,,,,,2.0.0,,Transfers data to third parties outside of the system or service's scope. -third_party_sharing.legal_obligation,True,,,,Sharing for Legal Obligation,default_organization,third_party_sharing,,,,,2.0.0,,"Shares data for legal obligations, including contracts, applicable laws or regulations." -train_ai_system,True,,,,Train AI System,default_organization,data_use,,,,,2.0.0,,Trains an AI system or data model for machine learning. +fides_key,is_default,name,organization_fides_key,parent_key,replaced_by,tags,version_added,version_deprecated,description +data_use,,Data Use,,,,,,, +analytics,TRUE,Analytics,default_organization,data_use,,,2.0.0,,"Provides analytics for activities such as system and advertising performance reporting, insights and fraud detection." +analytics.reporting,TRUE,Analytics for Reporting,default_organization,analytics,,,2.0.0,,Provides analytics for general reporting such as system and advertising performance. +analytics.reporting.ad_performance,TRUE,Analytics for Advertising Performance,default_organization,analytics.reporting,,,2.0.0,,Provides analytics for reporting of advertising performance. +analytics.reporting.content_performance,TRUE,Analytics for Content Performance,default_organization,analytics.reporting,,,2.0.0,,Analytics for reporting on content performance. +analytics.reporting.campaign_insights,TRUE,Analytics for Insights,default_organization,analytics.reporting,,,2.0.0,,Provides analytics for reporting of campaign insights related to advertising and promotion activities. +analytics.reporting.system,TRUE,Analytics for System Activity,default_organization,analytics.reporting,,,2.0.0,,Provides analytics for reporting on system activity. +analytics.reporting.system.performance,TRUE,Analytics for System Performance,default_organization,analytics.reporting.system,,,2.0.0,,Provides analytics for reporting on system performance. +collect,TRUE,Collect,default_organization,data_use,,,2.0.0,,Collects or stores data in order to use it for another purpose which has not yet been expressly defined. +employment,TRUE,Employment,default_organization,data_use,,,2.0.0,,Processes data for the purpose of recruitment or employment and human resources (HR) related activities. +employment.recruitment,TRUE,Employment Recruitment,default_organization,employment,,,2.0.0,,Processes data of prospective employees for the purpose of recruitment. +essential,TRUE,Essential,default_organization,data_use,,,2.0.0,,"Operates the service or product, including legal obligations, support and basic system operations." +essential.fraud_detection,TRUE,Essential Fraud Detection,default_organization,essential,,,2.0.0,,"Detects possible fraud or misuse of the product, service, application or system." +essential.legal_obligation,TRUE,Essential Legal Obligation,default_organization,essential,,,2.0.0,,Provides service to meet a legal or compliance obligation such as consent management. +essential.service,TRUE,Essential for Service,default_organization,essential,,,2.0.0,,"Provides the essential product, service, application or system, without which the product/service would not be possible." +essential.service.authentication,TRUE,Essential Service Authentication,default_organization,essential.service,,,2.0.0,,"Authenticate users to the product, service, application or system." +essential.service.notifications,TRUE,Essential Service Notifications,default_organization,essential.service,,,2.0.0,,"Sends notifications about the product, service, application or system." +essential.service.operations,TRUE,Essential for Operations,default_organization,essential.service,,,2.0.0,,"Essential to ensure the operation of the product, service, application or system." +essential.service.payment_processing,TRUE,Essential for Payment Processing,default_organization,essential.service,,,2.0.0,,"Essential to processes payments for the product, service, application or system." +essential.service.security,TRUE,Essential for Security,default_organization,essential.service,,,2.0.0,,"Essential to provide security for the product, service, application or system" +essential.service.upgrades,TRUE,Essential for Service Upgrades,default_organization,essential.service,,,2.0.0,,Provides timely system upgrade information options. +essential.service.notifications.email,TRUE,Essential Email Service Notifications,default_organization,essential.service.notifications,,,2.0.0,,"Sends email notifications about the product, service, application or system." +essential.service.notifications.sms,TRUE,Essential SMS Service Notifications,default_organization,essential.service.notifications,,,2.0.0,,"Sends SMS notifications about the product, service, application or system." +essential.service.operations.support,TRUE,Essential for Operations Support,default_organization,essential.service.operations,,,2.0.0,,"Provides support for the product, service, application or system." +essential.service.operations.improve,TRUE,Essential for Support Improvement,default_organization,essential.service.operations,,,2.0.0,,"Essential to optimize and improve support for the product, service, application or system." +finance,TRUE,Finance,default_organization,data_use,,,2.0.0,,Enables finance and accounting activities such as audits and tax reporting. +functional,TRUE,Functional,default_organization,data_use,,,2.0.0,,"Used for specific, necessary, and legitimate purposes" +functional.storage,TRUE,Local Data Storage,default_organization,functional,,,2.0.0,,"Stores or accesses information from the device as needed when using a product, service, application, or system" +functional.service,TRUE,Service,default_organization,functional,,,2.0.0,,"Functions relating to provided services, products, applications or systems." +functional.service.improve,TRUE,Improve Service,default_organization,functional.service,,,2.0.0,,"Improves the specific product, service, application or system." +marketing,TRUE,Marketing,default_organization,data_use,,,2.0.0,,"Enables marketing, promotion, advertising and sales activities for the product, service, application or system." +marketing.advertising,TRUE,"Advertising, Marketing or Promotion",default_organization,marketing,,,2.0.0,,"Advertises or promotes the product, service, application or system and associated services." +marketing.communications,TRUE,Marketing Communications,default_organization,marketing,,,2.0.0,,"Uses combined channels to message and market to a customer, user or prospect." +marketing.advertising.first_party,TRUE,First Party Advertising,default_organization,marketing.advertising,,,2.0.0,,Serves advertisements based on first party data collected or derived about the user. +marketing.advertising.frequency_capping,TRUE,Frequency Capping,default_organization,marketing.advertising,,,2.0.0,,Restricts the number of times a specific advertisement is shown to an individual. +marketing.advertising.negative_targeting,TRUE,Negative Targeting,default_organization,marketing.advertising,,,2.0.0,,Enforces rules used to ensure a certain audience or group is not targeted by advertising. +marketing.advertising.profiling,TRUE,Profiling for Advertising,default_organization,marketing.advertising,,,2.0.0,,Creates audience profiles for the purpose of targeted advertising +marketing.advertising.serving,TRUE,Essential for Serving Ads,default_organization,marketing.advertising,,,2.0.0,,Essential to the delivery of advertising and content. +marketing.advertising.third_party,TRUE,Third Party Advertising,default_organization,marketing.advertising,,,2.0.0,,Serves advertisements based on data within the system or joined with data provided by 3rd parties. +marketing.advertising.first_party.contextual,TRUE,First Party Contextual Advertising,default_organization,marketing.advertising.first_party,,,2.0.0,,Serves advertisements based on current content being viewed by the user of the system or service. +marketing.advertising.first_party.targeted,TRUE,First Party Personalized Advertising,default_organization,marketing.advertising.first_party,,,2.0.0,,Targets advertisements based on data collected or derived about the user from use of the system. +marketing.advertising.third_party.targeted,TRUE,Third Party Targeted Advertising,default_organization,marketing.advertising.third_party,,,2.0.0,,Targets advertisements based on data within the system or joined with data provided by 3rd parties. +marketing.communications.email,TRUE,Marketing Email Communications,default_organization,marketing.communications,,,2.0.0,,Sends email marketing communications. +marketing.communications.sms,TRUE,Marketing SMS Communications,default_organization,marketing.communications,,,2.0.0,,Sends SMS marketing communications. +operations,TRUE,Operations,default_organization,data_use,,,2.0.0,,Supports business processes necessary to the organization's operation. +personalize,TRUE,Personalize,default_organization,data_use,,,2.0.0,,"Personalizes the product, service, application or system." +personalize.content,TRUE,Content Personalization,default_organization,personalize,,,2.0.0,,"Personalizes the content of the product, service, application or system." +personalize.system,TRUE,System Personalization,default_organization,personalize,,,2.0.0,,Personalizes the system. +personalize.content.limited,TRUE,Limited Content Personalization,default_organization,personalize.content,,,2.1.1,,Uses limited data for the purpose of serving content. +personalize.content.profiling,TRUE,Profiling for Personalization,default_organization,personalize.content,,,2.1.1,,Creates profiles for the purpose of serving content. +personalize.content.profiled,TRUE,Targeted Content Personalization,default_organization,personalize.content,,,2.1.1,,Uses profiles for the purpose of serving content. +sales,TRUE,Sales,default_organization,data_use,,,2.0.0,,Supports sales activities such as communications and outreach. +third_party_sharing,TRUE,Third Party Sharing,default_organization,data_use,,,2.0.0,,Transfers data to third parties outside of the system or service's scope. +third_party_sharing.legal_obligation,TRUE,Sharing for Legal Obligation,default_organization,third_party_sharing,,,2.0.0,,"Shares data for legal obligations, including contracts, applicable laws or regulations." +train_ai_system,TRUE,Train AI System,default_organization,data_use,,,2.0.0,,Trains an AI system or data model for machine learning. \ No newline at end of file diff --git a/mkdocs/docs/explorer.md b/mkdocs/docs/explorer.md index 61d29ac8..b3f7122a 100644 --- a/mkdocs/docs/explorer.md +++ b/mkdocs/docs/explorer.md @@ -9,7 +9,6 @@ The taxonomy explorer is a useful way to visualize and review the taxonomy for t -
@@ -35,6 +34,3 @@ The taxonomy explorer is a useful way to visualize and review the taxonomy for t
- - - diff --git a/mkdocs/docs/index.md b/mkdocs/docs/index.md index f0b2c567..b6ae41c8 100644 --- a/mkdocs/docs/index.md +++ b/mkdocs/docs/index.md @@ -17,7 +17,6 @@ The Fides taxonomy, or categorization, is made up of four main classification gr -
@@ -59,6 +58,7 @@ Data Uses are also hierarchical with natural inheritance, meaning you can easily Learn more about [Data Uses in the taxonomy reference now](taxonomy/data_uses.md). ### 3. Data Subjects + Data Subjects is a label commonly used in the regulatory world to describe the users of a system who's data is being processed. In many systems a generic user label may be sufficient, however the taxonomy is intended to provide greater control through specificity where needed. Examples of this are: @@ -71,23 +71,10 @@ Examples of this are: Learn more about [Data Subjects in the taxonomy reference now](taxonomy/data_subjects.md). -### 4. Data Qualifiers -Data Qualifiers describe the degree of identification of the given data. Think of this as a spectrum: on one end is completely anonymous data, i.e. it is impossible to identify an individual from it, and on the other end is data that specifically identifies an individual. - -Along this spectrum are labels that describe the degree of identification that a given data might provide, such as: - -- `identified` -- `anonymized` -- `aggregated` - -Learn more about [Data Qualifiers in the taxonomy reference now](taxonomy/data_qualifiers.md). - ### Extensibility and Interoperability + The taxonomy is designed to support common privacy compliance regulations `and standards out of the box, these include GDPR, CCPA, LGPD and ISO 19944. You can extend the taxonomy to support your system needs. If you do this, we recommend extending from the existing class structures to ensure interoperability inside and outside your organization. If you have suggestions for missing classifications or concepts, please submit them for addition. - - - diff --git a/mkdocs/docs/js/vis.js b/mkdocs/docs/js/vis.js index 063d4fb2..014d02fe 100644 --- a/mkdocs/docs/js/vis.js +++ b/mkdocs/docs/js/vis.js @@ -733,8 +733,7 @@ Promise.all([ d3.csv("csv/data_categories.csv"), d3.csv("csv/data_uses.csv"), d3.csv("csv/data_subjects.csv"), - d3.csv("csv/data_qualifiers.csv"), -]).then(([categoriesCSV, usesCSV, subjectsCSV, qualifiersCSV]) => { +]).then(([categoriesCSV, usesCSV, subjectsCSV]) => { const tooltip = new VisTooltip(); const colors = { @@ -820,24 +819,6 @@ Promise.all([ "#f73ffc", "#fb409e", ]), - qualifiers: d3 - .scaleOrdinal() - .domain([ - "data_qualifier", - "aggregated", - "aggregated.anonymized", - "aggregated.anonymized.unlinked_pseudonymized", - "aggregated.anonymized.unlinked_pseudonymized.pseudonymized", - "aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified", - ]) - .range([ - "#2a3045", - "#0861ce", - "#8459cc", - "#c14cbb", - "#ed43a0", - "#ff4a7f", - ]), }; const accessor = { @@ -859,13 +840,11 @@ Promise.all([ const categoriesRoot = stratify(categoriesCSV); const usesRoot = stratify(usesCSV); const subjectsRoot = stratify(subjectsCSV); - const qualifiersRoot = stratify(qualifiersCSV); const chartData = { categories: categoriesRoot, uses: usesRoot, subjects: subjectsRoot, - qualifiers: qualifiersRoot, }; const chartDataButtons = d3 .select("#data-control") diff --git a/mkdocs/docs/js/vis2-absolute.js b/mkdocs/docs/js/vis2-absolute.js index 9a001726..71eef370 100644 --- a/mkdocs/docs/js/vis2-absolute.js +++ b/mkdocs/docs/js/vis2-absolute.js @@ -733,8 +733,7 @@ Promise.all([ d3.csv("https://ethyca.github.io/fideslang/csv/data_categories.csv"), d3.csv("https://ethyca.github.io/fideslang/csv/data_uses.csv"), d3.csv("https://ethyca.github.io/fideslang/csv/data_subjects.csv"), - d3.csv("https://ethyca.github.io/fideslang/csv/data_qualifiers.csv"), -]).then(([categoriesCSV, usesCSV, subjectsCSV, qualifiersCSV]) => { +]).then(([categoriesCSV, usesCSV, subjectsCSV]) => { const tooltip = new VisTooltip(); const colors = { @@ -820,24 +819,6 @@ Promise.all([ "#f73ffc", "#fb409e", ]), - qualifiers: d3 - .scaleOrdinal() - .domain([ - "data_qualifier", - "aggregated", - "aggregated.anonymized", - "aggregated.anonymized.unlinked_pseudonymized", - "aggregated.anonymized.unlinked_pseudonymized.pseudonymized", - "aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified", - ]) - .range([ - "#2a3045", - "#0861ce", - "#8459cc", - "#c14cbb", - "#ed43a0", - "#ff4a7f", - ]), }; const accessor = { @@ -859,13 +840,11 @@ Promise.all([ const categoriesRoot = stratify(categoriesCSV); const usesRoot = stratify(usesCSV); const subjectsRoot = stratify(subjectsCSV); - const qualifiersRoot = stratify(qualifiersCSV); const chartData = { categories: categoriesRoot, uses: usesRoot, subjects: subjectsRoot, - qualifiers: qualifiersRoot, }; const chartDataButtons = d3 .select("#data-control") diff --git a/mkdocs/docs/js/vis2.js b/mkdocs/docs/js/vis2.js index c06794c8..93051cea 100644 --- a/mkdocs/docs/js/vis2.js +++ b/mkdocs/docs/js/vis2.js @@ -733,8 +733,7 @@ Promise.all([ d3.csv("../csv/data_categories.csv"), d3.csv("../csv/data_uses.csv"), d3.csv("../csv/data_subjects.csv"), - d3.csv("../csv/data_qualifiers.csv"), -]).then(([categoriesCSV, usesCSV, subjectsCSV, qualifiersCSV]) => { +]).then(([categoriesCSV, usesCSV, subjectsCSV]) => { const tooltip = new VisTooltip(); const colors = { @@ -820,24 +819,6 @@ Promise.all([ "#f73ffc", "#fb409e", ]), - qualifiers: d3 - .scaleOrdinal() - .domain([ - "data_qualifier", - "aggregated", - "aggregated.anonymized", - "aggregated.anonymized.unlinked_pseudonymized", - "aggregated.anonymized.unlinked_pseudonymized.pseudonymized", - "aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified", - ]) - .range([ - "#2a3045", - "#0861ce", - "#8459cc", - "#c14cbb", - "#ed43a0", - "#ff4a7f", - ]), }; const accessor = { @@ -859,13 +840,11 @@ Promise.all([ const categoriesRoot = stratify(categoriesCSV); const usesRoot = stratify(usesCSV); const subjectsRoot = stratify(subjectsCSV); - const qualifiersRoot = stratify(qualifiersCSV); const chartData = { categories: categoriesRoot, uses: usesRoot, subjects: subjectsRoot, - qualifiers: qualifiersRoot, }; const chartDataButtons = d3 .select("#data-control") diff --git a/mkdocs/docs/resources/dataset.md b/mkdocs/docs/resources/dataset.md index 3c70c521..ef94b4ff 100644 --- a/mkdocs/docs/resources/dataset.md +++ b/mkdocs/docs/resources/dataset.md @@ -4,16 +4,15 @@ A Dataset takes a database schema (tables and columns) and adds Fides privacy ca ``` organization - |-> registry (optional) - |-> system - |-> ** dataset ** - |-> collections - |-> fields + |-> system + |-> ** dataset ** + |-> collections + |-> fields ``` * The schema is represented as a set of "collections" (tables) that contain "fields" (columns). These can also be arbitrarily nested to handle document-type databases (e.g., NoSQL or S3). -* At each level -- Dataset, collection, and field, you can assign one or more Data Categories and Data Qualifiers. The Categories and Qualifiers declared at each child level is additive. +* At each level -- Dataset, collection, and field, you can assign one or more Data Categories. The Categories declared at each child level are additive. You use your Datasets by adding them to Systems. A System can contain any number of Datasets, and a Dataset can be added to any number of Systems. When a dataset is referenced by a system, all applicable data categories set on the dataset are treated as part of the system. @@ -43,22 +42,9 @@ The fides key of the [Organization](../../resources/organization/) to which this An optional object that provides additional information about the Dataset. You can structure the object however you like. It can be a simple set of `key: value` properties or a deeply nested hierarchy of objects. How you use the object is up to you: Fides ignores it. -**third_country_transfers**     _constrained string_ - -An optional array to identify any third countries where data is transited to. For consistency purposes, these fields are required to follow the Alpha-3 code set in [ISO 3166-1](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3) - -**joint_controller**  [array] - -An optional array of contact information if a Joint Controller exists. This information can also be stored at the [system](../../resources/system/) level (`name`, `address`, `email`, `phone`). - -**retention**  _string_ - -An optional string to describe the retention policy for a dataset. This field can also be applied more granularly at either the Collection or field level of a Dataset - **data_categories**     [_string_]
-**data_qualifiers**     [_string_]
-Arrays of Data Category and Data Qualifier resources, identified by `fides_key`, that apply to all collections in the Dataset. +Arrays of Data Category resources, identified by `fides_key`, that apply to all collections in the Dataset. **collections**     [_object_]
@@ -73,13 +59,8 @@ A UI-friendly label for the collection. A human-readable description of the collection. **collections.data_categories**     [_string_]
-**collections.data_qualifiers**     [_string_]
-Arrays of Data Category and Data Qualifier resources, identified by `fides_key`, that apply to all fields in the collection. - -**collections.retention**  _string_ - -An optional string to describe the retention policy for a Dataset collection. This field can also be applied more granularly at the field level of a Dataset. +Arrays of Data Category resources, identified by `fides_key`, that apply to all fields in the collection. **collections.fields**     [_object_]
@@ -97,14 +78,6 @@ A human-readable description of the field. Arrays of Data Categories, identified by `fides_key`, that applies to this field. -**collections.fields.data_qualifier**     _string_
- -A Data Qualifier that applies to this field. Note that this field holds a single value, therefore, the property name is singular. - -**collections.fields.retention**  _string_ - -An optional string to describe the retention policy for a field within a Dataset collection. - **collections.fields.fields**     [_object_]
An optional array of objects that describe hierarchical/nested fields (typically found in NoSQL databases) @@ -118,21 +91,11 @@ dataset: - fides_key: demo_users_dataset name: Demo Users Dataset description: Data collected about users for our analytics system. - third_country_transfers: - - USA - - CAN - joint_controller: - name: Dave L. Epper - address: 1 Acme Pl. New York, NY - email: controller@acmeinc.com - phone: +1 555 555 5555 - retention: 1 year post account deletion collections: - name: users description: User information data_categories: - user - retention: 30 days post account deletion fields: - name: first_name description: User's first name @@ -146,7 +109,6 @@ dataset: description: User's phone numbers data_categories: - user.contact.phone_number - retention: end of user relationship fields: - name: mobile description: User's mobile phone number @@ -165,19 +127,10 @@ dataset: "fides_key": "demo_users_dataset", "name": "Demo Users Dataset", "description": "Data collected about users for our analytics system.", - "third_country_transfers": ["USA", "CAN"], - "joint_controller": { - "name": "Dave L. Epper", - "address": "1 Acme Pl. New York, NY", - "email": "controller@acmeinc.com", - "phone": "+1 555 555 5555" - }, - "retention": "1 year post account deletion", "collections": [ { "name": "users", "description": "User information", - "retention": "30 days post account deletion", "fields": [ { "name": "first_name", @@ -199,7 +152,6 @@ dataset: "data_categories": [ "user.contact.phone_number" ], - "retention": "end of user relationship", "fields": [ { "name": "mobile", diff --git a/mkdocs/docs/resources/policy.md b/mkdocs/docs/resources/policy.md index fa700054..ce7d1051 100644 --- a/mkdocs/docs/resources/policy.md +++ b/mkdocs/docs/resources/policy.md @@ -1,6 +1,6 @@ # Policy -A Policy is your privacy policy as code, it lists a set of acceptable and non-acceptable rules and uses all 4 privacy attributes (`data_category`, `data_use`, `data_subject`, and `data_qualifier`). The purpose of the policy is to state what types of data are allowed for certain usages. +A Policy is your privacy policy as code, it lists a set of acceptable and non-acceptable rules and uses all 3 privacy attributes (`data_category`, `data_use`, `data_subject`). The purpose of the policy is to state what types of data are allowed for certain usages. ``` organization @@ -34,10 +34,6 @@ The [Data Use](../../taxonomy/data_uses/) privacy attribute describes the variou The [Data Subjects](../../taxonomy/data_subjects/) privacy attribute describes the individual persons whose data your rule pertains to. -**data_qualifier**     _string_      - -The [Data Qualifier](../../taxonomy/data_qualifiers/) privacy attribute describes the acceptable or non-acceptable level of deidentification for this data. - **matches**     _enum_      * `ANY` @@ -76,7 +72,6 @@ policy: matches: ANY values: - customer - data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified ``` **Demo manifest file:** `/fides/demo_resources/demo_policy.yml` @@ -113,7 +108,6 @@ policy: "customer" ] }, - "data_qualifier": "aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified" } ] } diff --git a/mkdocs/docs/resources/registry.md b/mkdocs/docs/resources/registry.md deleted file mode 100644 index 2adc7ccc..00000000 --- a/mkdocs/docs/resources/registry.md +++ /dev/null @@ -1,53 +0,0 @@ -# Registry - -A Registry is a collection of System resources. You may add a System to a Registry by setting the System's `registry_id` field. - - ``` - organization - |-> ** registry ** (optional) - |-> system - ``` - -* A System may belong to only one Registry. - -* All Registries are siblings: You cannot create a hierarchy of Registries. -* Collecting your systems into Registries is optional. - -## Object Structure - -**fides_key**     _constrained string_ - -A string token of your own invention that uniquely identifies this Registry. It's your responsibility to ensure that the value is unique across all of your Registry objects. The value may only contain alphanumeric characters, underscores, and hyphens. (`[A-Za-z0-9_.-]`). - -**name**     _string_ - -A UI-friendly label for the Registry. - -**description**     _string_ - -A human-readable description of the Registry. - -**organization_fides_key**     _string_     default: `default_organization` - -The fides key of the [Organization](../../resources/organization/) to which this Registry belongs. - -## Examples - -### **Manifest File** - -```yaml -registry: - - fides_key: user_systems_registry - name: User Systems Registry - description: A Registry for all of the user-related systems. -``` - -### **API Payload** - -```json -{ - "fides_key": "user_systems_registry", - "name": "User Systems Registry", - "description": "A Registry for all of the user-related systems." -} -``` diff --git a/mkdocs/docs/resources/system.md b/mkdocs/docs/resources/system.md index 09d27508..9e461b6b 100644 --- a/mkdocs/docs/resources/system.md +++ b/mkdocs/docs/resources/system.md @@ -1,12 +1,11 @@ # System -A System is a model for describing anything that processes data for your organization (applications, services, 3rd party APIs, etc.) and describes how these datasets are used for business functions of instances of your data resources. It contains all 4 privacy attributes (`data_category`, `data_use`, `data_subject`, and `data_qualifier`). +A System is a model for describing anything that processes data for your organization (applications, services, 3rd party APIs, etc.) and describes how these datasets are used for business functions of instances of your data resources. It contains all 3 privacy attributes (`data_category`, `data_use`, and `data_subject`). ``` organization - |-> registry (optional) - |-> ** system ** - |-> privacy declarations + |-> ** system ** + |-> privacy declarations ``` ## Object Structure @@ -27,33 +26,10 @@ A human-readable description of the System. A required value to describe the type of system being modeled, examples include: Service, Application, Third Party, etc. -**data_responsibility_title**     _enum_ - -An attribute to describe the role of responsibility over the personal data, used when exporting to a data map. -Defaults to `Controller` if not set explicitly. - -* `Controller` -* `Processor` -* `Sub-Processor` - **administrating_department**     _string_ An optional value to identify the owning department or group of the system within your organization -**third_country_transfers**     _constrained string_ - -An optional array to identify any third countries where data is transited to. For consistency purposes, these fields are required to follow the Alpha-3 code set in [ISO 3166-1](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3) - -**joint_controller**  [array] - -An optional array of contact information if a Joint Controller exists. This information can also be more granularly stored at the [dataset](../../resources/dataset/) level (`name`, `address`, `email`, `phone`). - -**data_protection_impact_assessment**     [array]      - -The array of properties that declare the requirement for and information surrounding a Data Protection Impact Assessment (`is_required`, `progress`, `link`). - -Information will be exported as part of the data map or Record of Processing Activites (RoPA) - **egress**     [array]      The resources to which the System sends data. @@ -64,7 +40,7 @@ The resources from which the System receives data. **privacy_declarations**     [array]      -The array of declarations describing the types of data in your system. This is a list of the privcy attributes (`data_category`, `data_use`, `data_subject`, and `data_qualifier`) for each of your systems. +The array of declarations describing the types of data in your system. This is a list of the privcy attributes (`data_category`, `data_use`, and `data_subject`) for each of your systems. If a dataset is referenced as part of the system, all applicable data categories set on the dataset are treated as part of the system. @@ -82,20 +58,7 @@ system: name: Demo Analytics System description: A system used for analyzing customer behaviour. system_type: Service - data_responsibility_title: Controller administrating_department: Engineering - third_country_transfers: - - USA - - CAN - joint_controller: - name: Dave L. Epper - address: 1 Acme Pl. New York, NY - email: controller@acmeinc.com - phone: +1 555 555 5555 - data_protection_impact_assessment: - is_required: True - progress: Complete - link: https://example.org/analytics_system_data_protection_impact_assessment egress: - fides_key: another_demo_system type: system @@ -114,7 +77,6 @@ system: data_use: improve.system data_subjects: - customer - data_qualifier: identified_data egress: - another_demo_system ingress: @@ -132,15 +94,7 @@ system: "name": "Demo Analytics System", "description": "A system used for analyzing customer behaviour.", "system_type": "Service", - "data_responsibility_title": "Controller", "administrating_department": "Engineering", - "third_country_transfers": ["USA", "CAN"], - "joint_controller": { - "name": "Dave L. Epper", - "address": "1 Acme Pl. New York, NY", - "email": "controller@acmeinc.com", - "phone": "+1 555 555 5555" - }, "egress": [ { "fides_key": "another_demo_system", @@ -166,7 +120,6 @@ system: "data_subjects": [ "customer" ], - "data_qualifier": "identified_data", "egress": ["another_demo_system"], "ingress": ["yet_another_demo_system"] } diff --git a/mkdocs/docs/taxonomy/data_qualifiers.md b/mkdocs/docs/taxonomy/data_qualifiers.md deleted file mode 100644 index 96ec3ef0..00000000 --- a/mkdocs/docs/taxonomy/data_qualifiers.md +++ /dev/null @@ -1,24 +0,0 @@ -# Data Qualifiers Reference - -Data Qualifiers describe the degree of identification of the given data. Think of this as a spectrum: on one end is completely anonymous data, i.e. it is impossible to identify an individual from it, and on the other end is data that specifically identifies an individual. - -!!! Note "Extensibility and interoperability" - Data Qualifiers in the taxonomy are designed to support common privacy regulations and standards out of the box, these include GDPR, CCPA, LGPD and ISO 19944. - - You can extend the taxonomy to support your system needs. If you do this, we recommend extending from the existing class structures to ensure interoperability inside and outside your organization. - - If you have suggestions for core classes that should ship with the taxonomy, [please submit your requests here](https://github.com/ethyca/privacy-taxonomy/issues) - - -## Data Qualifiers - -Data Qualifiers are arranged as a series of nested subcategories, going from least identifiable (aggregated) to most identifiable (identified). - -| Label | Parent Key | Description | -| --- | --- | --- | -| `aggregated` | `-` | Statistical data that does not contain individually identifying information but includes information about groups of individuals that renders individual identification impossible. | -| `anonymized` | `anonymized` | Data where all attributes have been sufficiently altered that the individual cannot be reidentified by this data or in combination with other datasets. | -| `unlinked_pseudonymized` | `aggregated.anonymized` | Data for which all identifiers have been substituted with unrelated values and linkages broken such that it may not be reversed, even by the party that performed the pseudonymization. | -| `pseudonymized` | `aggregated.anonymized.unlinked_pseudonymized` | Data for which all identifiers have been substituted with unrelated values, rendering the individual unidentifiable and cannot be reasonably reversed other than by the party that performed the pseudonymization. | -| `identified` | `aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified` | Data that directly identifies an individual. | - diff --git a/mkdocs/mkdocs.yml b/mkdocs/mkdocs.yml index cae7cf78..21b0bbba 100644 --- a/mkdocs/mkdocs.yml +++ b/mkdocs/mkdocs.yml @@ -13,11 +13,9 @@ nav: - Data Categories: taxonomy/data_categories.md - Data Uses: taxonomy/data_uses.md - Data Subjects: taxonomy/data_subjects.md - - Data Qualifiers: taxonomy/data_qualifiers.md - Resources: - Organization: resources/organization.md - Policy: resources/policy.md - - Registry: resources/registry.md - System: resources/system.md - Dataset: resources/dataset.md - About Ethyca: https://ethyca.github.io/fides/ethyca/ @@ -63,4 +61,4 @@ extra_css: - https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.7.2/styles/default.min.css - css/fides.css - css/taxonomy.css - - css/logo.css \ No newline at end of file + - css/logo.css diff --git a/scripts/export_default_taxonomy.py b/scripts/export_default_taxonomy.py index fe1b3400..7d2d96cc 100644 --- a/scripts/export_default_taxonomy.py +++ b/scripts/export_default_taxonomy.py @@ -13,7 +13,6 @@ FILE_RESOURCE_PAIRS: Tuple[Tuple[str, str], ...] = ( ("data_categories", "data_category"), ("data_subjects", "data_subject"), - ("data_qualifiers", "data_qualifier"), ("data_uses", "data_use"), ) DATA_DIR = "data_files" diff --git a/src/fideslang/__init__.py b/src/fideslang/__init__.py index 4295434d..8d4eb755 100644 --- a/src/fideslang/__init__.py +++ b/src/fideslang/__init__.py @@ -27,7 +27,6 @@ from .models import ( DataCategory, DataFlow, - DataQualifier, Dataset, DatasetField, DatasetFieldBase, @@ -43,7 +42,6 @@ PolicyRule, PrivacyDeclaration, PrivacyRule, - Registry, System, Taxonomy, ) @@ -51,13 +49,11 @@ FidesModelType = Union[Type[FidesModel], Type[Evaluation]] model_map: Dict[str, FidesModelType] = { "data_category": DataCategory, - "data_qualifier": DataQualifier, "data_subject": DataSubject, "data_use": DataUse, "dataset": Dataset, "organization": Organization, "policy": Policy, - "registry": Registry, "system": System, "evaluation": Evaluation, } diff --git a/src/fideslang/default_taxonomy/__init__.py b/src/fideslang/default_taxonomy/__init__.py index 47937331..b032904b 100644 --- a/src/fideslang/default_taxonomy/__init__.py +++ b/src/fideslang/default_taxonomy/__init__.py @@ -3,7 +3,6 @@ from fideslang.models import Taxonomy from .data_categories import DEFAULT_DATA_CATEGORIES -from .data_qualifiers import DEFAULT_DATA_QUALIFIERS from .data_subjects import DEFAULT_DATA_SUBJECTS from .data_uses import DEFAULT_DATA_USES from .organizations import DEFAULT_ORGANIZATIONS @@ -14,7 +13,6 @@ DEFAULT_TAXONOMY = Taxonomy( data_category=sorted(DEFAULT_DATA_CATEGORIES, key=sort_data_types), - data_qualifier=sorted(DEFAULT_DATA_QUALIFIERS, key=sort_data_types), data_subject=sorted(DEFAULT_DATA_SUBJECTS, key=sort_data_types), data_use=sorted(DEFAULT_DATA_USES, key=sort_data_types), organization=DEFAULT_ORGANIZATIONS, diff --git a/src/fideslang/default_taxonomy/data_qualifiers.py b/src/fideslang/default_taxonomy/data_qualifiers.py deleted file mode 100644 index eb46e2cc..00000000 --- a/src/fideslang/default_taxonomy/data_qualifiers.py +++ /dev/null @@ -1,45 +0,0 @@ -from functools import partial - -from fideslang.models import DataQualifier - -from .utils import default_factory - -default_qualifier_factory = partial(default_factory, taxonomy_class=DataQualifier) - - -DEFAULT_DATA_QUALIFIERS = [ - default_qualifier_factory( - fides_key="aggregated", - organization_fides_key="default_organization", - name="Aggregated Data", - description="Statistical data that does not contain individually identifying information but includes information about groups of individuals that renders individual identification impossible.", - ), - default_qualifier_factory( - fides_key="aggregated.anonymized", - organization_fides_key="default_organization", - name="Anonymized Data", - description="Data where all attributes have been sufficiently altered that the individaul cannot be reidentified by this data or in combination with other datasets.", - parent_key="aggregated", - ), - default_qualifier_factory( - fides_key="aggregated.anonymized.unlinked_pseudonymized", - organization_fides_key="default_organization", - name="Unlinked Pseudonymized Data", - description="Data for which all identifiers have been substituted with unrelated values and linkages broken such that it may not be reversed, even by the party that performed the pseudonymization.", - parent_key="aggregated.anonymized", - ), - default_qualifier_factory( - fides_key="aggregated.anonymized.unlinked_pseudonymized.pseudonymized", - organization_fides_key="default_organization", - name="Pseudonymized Data", - description="Data for which all identifiers have been substituted with unrelated values, rendering the individual unidentifiable and cannot be reasonably reversed other than by the party that performed the pseudonymization.", - parent_key="aggregated.anonymized.unlinked_pseudonymized", - ), - default_qualifier_factory( - fides_key="aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified", - organization_fides_key="default_organization", - name="Identified Data", - description="Data that directly identifies an individual.", - parent_key="aggregated.anonymized.unlinked_pseudonymized.pseudonymized", - ), -] diff --git a/src/fideslang/default_taxonomy/utils.py b/src/fideslang/default_taxonomy/utils.py index dc85cabf..f97cc94f 100644 --- a/src/fideslang/default_taxonomy/utils.py +++ b/src/fideslang/default_taxonomy/utils.py @@ -1,8 +1,8 @@ from typing import Dict, Union -from fideslang.models import DataCategory, DataQualifier, DataSubject, DataUse +from fideslang.models import DataCategory, DataSubject, DataUse -CustomType = Union[DataCategory, DataSubject, DataQualifier, DataUse] +CustomType = Union[DataCategory, DataSubject, DataUse] def default_factory(taxonomy_class: CustomType, **kwargs: Dict) -> CustomType: diff --git a/src/fideslang/models.py b/src/fideslang/models.py index 599b8fd9..1f96de9b 100644 --- a/src/fideslang/models.py +++ b/src/fideslang/models.py @@ -7,7 +7,6 @@ from enum import Enum from typing import Any, Dict, List, Optional, Union -from warnings import warn from pydantic import ( AnyUrl, @@ -23,7 +22,6 @@ from fideslang.validation import ( FidesKey, FidesVersion, - check_valid_country_code, deprecated_version_later_than_added, has_versioning_if_default, is_deprecated_if_replaced, @@ -35,10 +33,6 @@ valid_data_type, ) -# Reusable Validators -country_code_validator = validator("third_country_transfers", allow_reuse=True)( - check_valid_country_code -) matching_parent_key_validator = validator("parent_key", allow_reuse=True, always=True)( matching_parent_key ) @@ -188,19 +182,6 @@ class DataSubjectRightsEnum(str, Enum): OBJECT_TO_AUTOMATED_PROCESSING = "Object to Automated Processing" -class LegalBasisEnum(str, Enum): - """ - Deprecated. The model for allowable legal basis categories on data uses. - """ - - CONSENT = "Consent" - CONTRACT = "Contract" - LEGAL_OBLIGATION = "Legal Obligation" - VITAL_INTEREST = "Vital Interest" - PUBLIC_INTEREST = "Public Interest" - LEGITIMATE_INTEREST = "Legitimate Interests" - - class LegalBasisForProcessingEnum(str, Enum): """ The model for allowable legal basis categories on privacy declarations. @@ -240,22 +221,6 @@ class LegalBasisForTransfersEnum(str, Enum): OTHER = "Other" -class SpecialCategoriesEnum(str, Enum): - """ - Deprecated. Special Categories Enum that was used on Data Uses. - """ - - CONSENT = "Consent" - EMPLOYMENT = "Employment" - VITAL_INTEREST = "Vital Interests" - NON_PROFIT_BODIES = "Non-profit Bodies" - PUBLIC_BY_DATA_SUBJECT = "Public by Data Subject" - LEGAL_CLAIMS = "Legal Claims" - PUBLIC_INTEREST = "Substantial Public Interest" - MEDICAL = "Medical" - PUBLIC_HEALTH_INTEREST = "Public Health Interest" - - class SpecialCategoryLegalBasisEnum(str, Enum): """ The model for the legal basis for processing special categories of personal data @@ -286,15 +251,6 @@ class DataCategory(FidesModel, DefaultModel): _no_self_reference: classmethod = no_self_reference_validator -class DataQualifier(FidesModel, DefaultModel): - """The DataQualifier resource model.""" - - parent_key: Optional[FidesKey] - - _matching_parent_key: classmethod = matching_parent_key_validator - _no_self_reference: classmethod = no_self_reference_validator - - class Cookies(BaseModel): """The Cookies resource model""" @@ -352,67 +308,9 @@ class DataUse(FidesModel, DefaultModel): """The DataUse resource model.""" parent_key: Optional[FidesKey] = None - legal_basis: Optional[LegalBasisEnum] = Field( - description="Deprecated. The legal basis category of which the data use falls under. This field is used as part of the creation of an exportable data map.", - ) - special_category: Optional[SpecialCategoriesEnum] = Field( - description="Deprecated. The special category for processing of which the data use falls under. This field is used as part of the creation of an exportable data map.", - ) - recipients: Optional[List[str]] = Field( - description="Deprecated. An array of recipients when sharing personal data outside of your organization.", - ) - legitimate_interest: Optional[bool] = Field( - description="Deprecated. A boolean representation of if the legal basis used is `Legitimate Interest`. Validated at run time and looks for a `legitimate_interest_impact_assessment` to exist if true.", - ) - legitimate_interest_impact_assessment: Optional[AnyUrl] = Field( - description="Deprecated. A url pointing to the legitimate interest impact assessment. Required if the legal bases used is legitimate interest.", - ) - _matching_parent_key: classmethod = matching_parent_key_validator _no_self_reference: classmethod = no_self_reference_validator - @root_validator - @classmethod - def deprecate_fields(cls, values: Dict) -> Dict: - """ - Warn of Data Use fields pending deprecation. - """ - deprecated_fields = [ - "legal_basis", - "recipients", - "special_category", - "legitimate_interest", - "legitimate_interest_impact_assessment", - ] - for field in deprecated_fields: - if values.get(field) is not None: - warn( - f"The {field} field is deprecated, and will be removed in a future version of fideslang.", - DeprecationWarning, - ) - return values - - @validator("legitimate_interest", always=True) - @classmethod - def set_legitimate_interest(cls, value: bool, values: Dict) -> bool: - """Sets if a legitimate interest is used.""" - if values["legal_basis"] == "Legitimate Interests": - value = True - return value - - @validator("legitimate_interest_impact_assessment", always=True) - @classmethod - def ensure_impact_assessment(cls, value: AnyUrl, values: Dict) -> AnyUrl: - """ - Validates an impact assessment is applied if a - legitimate interest has been defined. - """ - if values["legitimate_interest"]: - assert ( - value is not None - ), "Impact assessment cannot be null for a legitimate interest, please provide a valid url" - return value - # Dataset class DatasetFieldBase(BaseModel): @@ -442,13 +340,6 @@ class MyDatasetField(DatasetFieldBase): data_categories: Optional[List[FidesKey]] = Field( description="Arrays of Data Categories, identified by `fides_key`, that applies to this field.", ) - data_qualifier: FidesKey = Field( - default="aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified", - description="A Data Qualifier that applies to this field. Note that this field holds a single value, therefore, the property name is singular.", - ) - retention: Optional[str] = Field( - description="An optional string to describe the retention policy for a dataset. This field can also be applied more granularly at either the Collection or field level of a Dataset.", - ) class EdgeDirection(str, Enum): @@ -619,13 +510,6 @@ class DatasetCollection(FidesopsMetaBackwardsCompat): data_categories: Optional[List[FidesKey]] = Field( description="Array of Data Category resources identified by `fides_key`, that apply to all fields in the collection.", ) - data_qualifier: FidesKey = Field( - default="aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified", - description="Array of Data Qualifier resources identified by `fides_key`, that apply to all fields in the collection.", - ) - retention: Optional[str] = Field( - description="An optional string to describe the retention policy for a Dataset collection. This field can also be applied more granularly at the field level of a Dataset.", - ) fields: List[DatasetField] = Field( description="An array of objects that describe the collection's fields.", ) @@ -687,21 +571,9 @@ class Dataset(FidesModel, FidesopsMetaBackwardsCompat): data_categories: Optional[List[FidesKey]] = Field( description="Array of Data Category resources identified by `fides_key`, that apply to all collections in the Dataset.", ) - data_qualifier: Optional[FidesKey] = Field( - description="Deprecated. Array of Data Qualifier resources identified by `fides_key`, that apply to all collections in the Dataset.", - ) fides_meta: Optional[DatasetMetadata] = Field( description=DatasetMetadata.__doc__, default=None ) - joint_controller: Optional[ContactDetails] = Field( - description="Deprecated. " + ContactDetails.__doc__, - ) - retention: Optional[str] = Field( - description="Deprecated. An optional string to describe the retention policy for a dataset. This field can also be applied more granularly at either the Collection or field level of a Dataset.", - ) - third_country_transfers: Optional[List[str]] = Field( - description="Deprecated. An optional array to identify any third countries where data is transited to. For consistency purposes, these fields are required to follow the Alpha-3 code set in [ISO 3166-1](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3).", - ) collections: List[DatasetCollection] = Field( description="An array of objects that describe the Dataset's collections.", ) @@ -709,31 +581,10 @@ class Dataset(FidesModel, FidesopsMetaBackwardsCompat): _sort_collections: classmethod = validator("collections", allow_reuse=True)( sort_list_objects_by_name ) - _check_valid_country_code: classmethod = country_code_validator _unique_items_in_list: classmethod = validator("collections", allow_reuse=True)( unique_items_in_list ) - @root_validator - @classmethod - def deprecate_fields(cls, values: Dict) -> Dict: - """ - Warn of Dataset fields pending deprecation. - """ - deprecated_fields = [ - "joint_controller", - "data_qualifier", - "retention", - "third_country_transfers", - ] - for field in deprecated_fields: - if values.get(field) is not None: - warn( - f"The {field} field is deprecated, and will be removed in a future version of fideslang.", - DeprecationWarning, - ) - return values - # Evaluation class ViolationAttributes(BaseModel): @@ -748,9 +599,6 @@ class ViolationAttributes(BaseModel): data_uses: List[str] = Field( description="A list of data uses which led to an evaluation violation.", ) - data_qualifier: str = Field( - description="The data qualifier which led to an evaluation violation.", - ) class Violation(BaseModel): @@ -898,10 +746,6 @@ class PolicyRule(BaseModel): data_subjects: PrivacyRule = Field( description=PrivacyRule.__doc__, ) - data_qualifier: FidesKey = Field( - default="aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified", - description="The fides key of the data qualifier to be used in a privacy rule.", - ) class Policy(FidesModel): @@ -920,41 +764,6 @@ class Policy(FidesModel): ) -# Registry -class Registry(FidesModel): - """ - The Registry resource model. - - Systems can be assigned to this resource, but it doesn't inherently - point to any other resources. - """ - - -# System -class DataProtectionImpactAssessment(BaseModel): - """ - The DataProtectionImpactAssessment (DPIA) resource model. - - Contains information in regard to the data protection - impact assessment exported on a data map or Record of - Processing Activities (RoPA). - - A legal requirement under GDPR for any project that - introduces a high risk to personal information. - """ - - is_required: bool = Field( - default=False, - description="A boolean value determining if a data protection impact assessment is required. Defaults to False.", - ) - progress: Optional[str] = Field( - description="The optional status of a Data Protection Impact Assessment. Returned on an exported data map or RoPA.", - ) - link: Optional[AnyUrl] = Field( - description="The optional link to the Data Protection Impact Assessment. Returned on an exported data map or RoPA.", - ) - - class PrivacyDeclaration(BaseModel): """ The PrivacyDeclaration resource model. @@ -972,9 +781,6 @@ class PrivacyDeclaration(BaseModel): data_use: FidesKey = Field( description="The Data Use describing a system in a privacy declaration.", ) - data_qualifier: Optional[FidesKey] = Field( - description="Deprecated. The fides key of the data qualifier describing a system in a privacy declaration.", - ) data_subjects: List[FidesKey] = Field( default_factory=list, description="An array of data subjects describing a system in a privacy declaration.", @@ -1026,20 +832,6 @@ class PrivacyDeclaration(BaseModel): description="Cookies associated with this data use to deliver services and functionality", ) - @validator("data_qualifier") - @classmethod - def deprecate_data_qualifier(cls, value: FidesKey) -> FidesKey: - """ - Warn that the `data_qualifier` field is deprecated, if set. - """ - if value is not None: - warn( - "The data_qualifier field is deprecated, and will be removed in a future version of fideslang.", - DeprecationWarning, - ) - - return value - class Config: """Config for the Privacy Declaration""" @@ -1128,9 +920,6 @@ class System(FidesModel): Describes an application and includes a list of PrivacyDeclaration resources. """ - registry_id: Optional[int] = Field( - description="The id of the system registry, if used.", - ) meta: Optional[Dict] = meta_field fidesctl_meta: Optional[SystemMetadata] = Field( description=SystemMetadata.__doc__, @@ -1138,9 +927,6 @@ class System(FidesModel): system_type: str = Field( description="A required value to describe the type of system being modeled, examples include: Service, Application, Third Party, etc.", ) - data_responsibility_title: Optional[DataResponsibilityTitle] = Field( - description="Deprecated. The responsibility or role over the system that processes personal data", - ) egress: Optional[List[DataFlow]] = Field( description="The resources to which the system sends data." ) @@ -1150,19 +936,10 @@ class System(FidesModel): privacy_declarations: List[PrivacyDeclaration] = Field( description=PrivacyDeclaration.__doc__, ) - joint_controller: Optional[ContactDetails] = Field( - description="Deprecated. " + ContactDetails.__doc__, - ) - third_country_transfers: Optional[List[str]] = Field( - description="Deprecated. An optional array to identify any third countries where data is transited to. For consistency purposes, these fields are required to follow the Alpha-3 code set in ISO 3166-1.", - ) administrating_department: Optional[str] = Field( default="Not defined", description="An optional value to identify the owning department or group of the system within your organization", ) - data_protection_impact_assessment: Optional[DataProtectionImpactAssessment] = Field( - description="Deprecated. " + DataProtectionImpactAssessment.__doc__, - ) vendor_id: Optional[str] = Field( description="The unique identifier for the vendor that's associated with this system." ) @@ -1228,7 +1005,7 @@ class System(FidesModel): ) joint_controller_info: Optional[str] = Field( description="The party or parties that share the responsibility for processing personal data." - ) # Use joint_controller_info in favor of joint_controller + ) data_security_practices: Optional[str] = Field( description="The data security practices employed by this system." ) @@ -1257,28 +1034,6 @@ class System(FidesModel): "privacy_declarations", allow_reuse=True )(sort_list_objects_by_name) - _check_valid_country_code: classmethod = country_code_validator - - @root_validator - @classmethod - def deprecate_fields(cls, values: Dict) -> Dict: - """ - Warn of System fields pending deprecation. - """ - deprecated_fields = [ - "joint_controller", - "third_country_transfers", - "data_responsibility_title", - "data_protection_impact_assessment", - ] - for field in deprecated_fields: - if values.get(field) is not None: - warn( - f"The {field} field is deprecated, and will be removed in a future version of fideslang.", - DeprecationWarning, - ) - return values - @validator("privacy_declarations", each_item=True) @classmethod def privacy_declarations_reference_data_flows( @@ -1326,11 +1081,9 @@ class Taxonomy(BaseModel): data_category: List[DataCategory] = Field(default_factory=list) data_subject: Optional[List[DataSubject]] = Field(default_factory=list) data_use: Optional[List[DataUse]] = Field(default_factory=list) - data_qualifier: Optional[List[DataQualifier]] = Field(default_factory=list) dataset: Optional[List[Dataset]] = Field(default_factory=list) system: Optional[List[System]] = Field(default_factory=list) policy: Optional[List[Policy]] = Field(default_factory=list) - registry: Optional[List[Registry]] = Field(default_factory=list) organization: List[Organization] = Field(default_factory=list) diff --git a/src/fideslang/validation.py b/src/fideslang/validation.py index b7f4a3d6..6a0236c3 100644 --- a/src/fideslang/validation.py +++ b/src/fideslang/validation.py @@ -8,10 +8,6 @@ from packaging.version import Version from pydantic import ConstrainedStr -from fideslang.default_fixtures import COUNTRY_CODES - -VALID_COUNTRY_CODES = [country["alpha3Code"] for country in COUNTRY_CODES] - class FidesValidationError(ValueError): """Custom exception for when the pydantic ValidationError can't be used.""" @@ -174,21 +170,6 @@ def matching_parent_key(parent_key: FidesKey, values: Dict) -> FidesKey: return parent_key -def check_valid_country_code(country_code_list: List) -> List: - """ - Validate all listed countries (if present) are valid country codes. - """ - if country_code_list is not None: - for country_code in country_code_list: - if country_code not in VALID_COUNTRY_CODES: - raise FidesValidationError( - "The country identified as {} is not a valid Alpha-3 code per ISO 3166.".format( - country_code - ) - ) - return country_code_list - - def parse_data_type_string(type_string: Optional[str]) -> Tuple[Optional[str], bool]: """Parse the data type string. Arrays are expressed in the form 'type[]'. diff --git a/tests/conftest.py b/tests/conftest.py index e41f992f..6dbebc9c 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -22,12 +22,6 @@ def resources_dict(): name="Custom Data Category", description="Custom Data Category", ), - "data_qualifier": models.DataQualifier( - organization_fides_key=1, - fides_key="custom_data_qualifier", - name="Custom Data Qualifier", - description="Custom Data Qualifier", - ), "dataset": models.Dataset( organization_fides_key=1, fides_key="test_sample_db_dataset", @@ -47,14 +41,12 @@ def resources_dict(): description="A First Name Field", path="another.path", data_categories=["user.name"], - data_qualifier="aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified", ), models.DatasetField( name="Email", description="User's Email", path="another.another.path", data_categories=["user.contact.email"], - data_qualifier="aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified", ), ], ) @@ -93,18 +85,9 @@ def resources_dict(): data_categories=models.PrivacyRule(matches="NONE", values=[]), data_uses=models.PrivacyRule(matches="NONE", values=["provide.system"]), data_subjects=models.PrivacyRule(matches="ANY", values=[]), - data_qualifier="aggregated.anonymized.unlinked_pseudonymized.pseudonymized", - ), - "registry": models.Registry( - organization_fides_key=1, - fides_key="test_registry", - name="Test Registry", - description="Test Regsitry", - systems=[], ), "system": models.System( organization_fides_key=1, - registryId=1, fides_key="test_system", system_type="SYSTEM", name="Test System", @@ -115,7 +98,6 @@ def resources_dict(): data_categories=[], data_use="provide", data_subjects=[], - data_qualifier="aggregated_data", ) ], ), diff --git a/tests/data/failing_dataset_collection_taxonomy.yml b/tests/data/failing_dataset_collection_taxonomy.yml index 6b0ae18e..dd29d344 100644 --- a/tests/data/failing_dataset_collection_taxonomy.yml +++ b/tests/data/failing_dataset_collection_taxonomy.yml @@ -7,13 +7,11 @@ dataset: description: User's information data_categories: - user.political_opinion - data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized fields: - name: First_Name description: A First Name Field data_categories: - user.name - data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified system: - fides_key: customer_data_sharing_system @@ -28,7 +26,6 @@ system: data_categories: - user data_use: advertising - data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified data_subjects: - customer ingress: @@ -53,4 +50,3 @@ policy: matches: ANY values: - customer - data_qualifier: aggregated diff --git a/tests/data/failing_dataset_field_taxonomy.yml b/tests/data/failing_dataset_field_taxonomy.yml index 9891efcc..502b6eec 100644 --- a/tests/data/failing_dataset_field_taxonomy.yml +++ b/tests/data/failing_dataset_field_taxonomy.yml @@ -10,12 +10,10 @@ dataset: description: A First Name Field data_categories: - user.name - data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified - name: political_opinion description: User's political opinion data_categories: - user.political_opinion - data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized system: - fides_key: customer_data_sharing_system name: Customer Data Sharing System @@ -29,7 +27,6 @@ system: data_categories: - user data_use: advertising - data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified data_subjects: - customer ingress: @@ -54,4 +51,3 @@ policy: matches: ANY values: - customer - data_qualifier: aggregated diff --git a/tests/data/failing_dataset_taxonomy.yml b/tests/data/failing_dataset_taxonomy.yml index 61e2fb92..01cff66b 100644 --- a/tests/data/failing_dataset_taxonomy.yml +++ b/tests/data/failing_dataset_taxonomy.yml @@ -4,7 +4,6 @@ dataset: description: This is a Sample Database Dataset data_categories: - user.political_opinion - data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized collections: - name: users description: User's information @@ -13,7 +12,6 @@ dataset: description: A First Name Field data_categories: - user.name - data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified system: - fides_key: customer_data_sharing_system @@ -28,7 +26,6 @@ system: data_categories: - user data_use: advertising - data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified data_subjects: - customer ingress: @@ -53,4 +50,3 @@ policy: matches: ANY values: - customer - data_qualifier: aggregated diff --git a/tests/data/failing_declaration_taxonomy.yml b/tests/data/failing_declaration_taxonomy.yml index 53b1a42c..ebca27b6 100644 --- a/tests/data/failing_declaration_taxonomy.yml +++ b/tests/data/failing_declaration_taxonomy.yml @@ -8,7 +8,6 @@ system: data_categories: - user.political_opinion data_use: third_party_sharing.payment_processing - data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified data_subjects: - customer @@ -31,4 +30,3 @@ policy: matches: ANY values: - customer - data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified diff --git a/tests/data/failing_nested_dataset.yml b/tests/data/failing_nested_dataset.yml index a0e005c2..2a1ac33d 100644 --- a/tests/data/failing_nested_dataset.yml +++ b/tests/data/failing_nested_dataset.yml @@ -34,7 +34,6 @@ system: data_use: improve.system data_subjects: - customer - data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified ingress: - test_failing_nested_dataset_field @@ -57,4 +56,3 @@ policy: matches: OTHER values: - anonymous_user - data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified diff --git a/tests/data/passing_declaration_taxonomy.yml b/tests/data/passing_declaration_taxonomy.yml index d2ede112..aac30812 100644 --- a/tests/data/passing_declaration_taxonomy.yml +++ b/tests/data/passing_declaration_taxonomy.yml @@ -8,7 +8,6 @@ system: data_categories: - user.political_opinion data_use: third_party_sharing.payment_processing - data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified data_subjects: - customer @@ -31,4 +30,3 @@ policy: matches: ANY values: - customer - data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified diff --git a/tests/fideslang/test_default_taxonomy.py b/tests/fideslang/test_default_taxonomy.py index c47a749b..d04f8e9b 100644 --- a/tests/fideslang/test_default_taxonomy.py +++ b/tests/fideslang/test_default_taxonomy.py @@ -9,7 +9,6 @@ "data_category": 85, "data_use": 55, "data_subject": 15, - "data_qualifier": 5, } @@ -46,7 +45,11 @@ def test_name_uniqueness(self, data_type: str) -> None: @pytest.mark.parametrize("data_type", taxonomy_counts.keys()) def test_description_uniqueness(self, data_type: str) -> None: - keys = [x.description for x in getattr(DEFAULT_TAXONOMY, data_type) if not x.version_deprecated] + keys = [ + x.description + for x in getattr(DEFAULT_TAXONOMY, data_type) + if not x.version_deprecated + ] duplicate_keys = { key: value for key, value in Counter(keys).items() if value > 1 } diff --git a/tests/fideslang/test_models.py b/tests/fideslang/test_models.py index a9221282..eae33275 100644 --- a/tests/fideslang/test_models.py +++ b/tests/fideslang/test_models.py @@ -1,4 +1,4 @@ -from pytest import deprecated_call, mark, raises +from pytest import mark, raises from fideslang import DataFlow, Dataset, Organization, PrivacyDeclaration, System from fideslang.models import ( @@ -69,7 +69,6 @@ class TestPrivacyDeclaration: def test_privacydeclaration_valid(self) -> None: assert PrivacyDeclaration( data_categories=[], - data_qualifier="aggregated_data", data_subjects=[], data_use="provide", egress=[], @@ -77,19 +76,6 @@ def test_privacydeclaration_valid(self) -> None: name="declaration-name", ) - def test_privacy_declaration_data_qualifier_deprecation(self) -> None: - with deprecated_call(match="data_qualifier"): - assert PrivacyDeclaration( - data_categories=[], - data_qualifier="aggregated_data", - data_subjects=[], - data_use="provide", - dataset_references=[], - egress=["test_system_2"], - ingress=["test_system_3"], - name="declaration-name", - ) - class TestSystem: # TODO: these tests are not effectively evaluating whether the provided constructor args @@ -121,7 +107,6 @@ def test_system_valid(self) -> None: privacy_declarations=[ PrivacyDeclaration( data_categories=[], - data_qualifier="aggregated_data", data_subjects=[], data_use="provide", egress=["test_system_2"], @@ -132,7 +117,6 @@ def test_system_valid(self) -> None: ], ) ], - registry_id=1, system_type="SYSTEM", tags=["some", "tags"], ) @@ -172,7 +156,6 @@ def test_system_valid_nested_meta(self) -> None: privacy_declarations=[ PrivacyDeclaration( data_categories=[], - data_qualifier="aggregated_data", data_subjects=[], data_use="provide", egress=["test_system_2"], @@ -180,7 +163,6 @@ def test_system_valid_nested_meta(self) -> None: name="declaration-name", ) ], - registry_id=1, system_type="SYSTEM", tags=["some", "tags"], ) @@ -209,7 +191,6 @@ def test_system_valid_no_meta(self) -> None: privacy_declarations=[ PrivacyDeclaration( data_categories=[], - data_qualifier="aggregated_data", data_subjects=[], data_use="provide", egress=["test_system_2"], @@ -217,7 +198,6 @@ def test_system_valid_no_meta(self) -> None: name="declaration-name", ) ], - registry_id=1, system_type="SYSTEM", tags=["some", "tags"], ) @@ -233,13 +213,11 @@ def test_system_valid_no_egress_or_ingress(self) -> None: privacy_declarations=[ PrivacyDeclaration( data_categories=[], - data_qualifier="aggregated_data", data_subjects=[], data_use="provide", name="declaration-name", ) ], - registry_id=1, system_type="SYSTEM", tags=["some", "tags"], ) @@ -262,7 +240,6 @@ def test_system_no_egress(self) -> None: privacy_declarations=[ PrivacyDeclaration( data_categories=[], - data_qualifier="aggregated_data", data_subjects=[], data_use="provide", egress=["test_system_2"], @@ -270,7 +247,6 @@ def test_system_no_egress(self) -> None: name="declaration-name", ) ], - registry_id=1, system_type="SYSTEM", tags=["some", "tags"], ) @@ -293,7 +269,6 @@ def test_system_no_ingress(self) -> None: privacy_declarations=[ PrivacyDeclaration( data_categories=[], - data_qualifier="aggregated_data", data_subjects=[], data_use="provide", egress=["test_system_2"], @@ -301,7 +276,6 @@ def test_system_no_ingress(self) -> None: name="declaration-name", ) ], - registry_id=1, system_type="SYSTEM", tags=["some", "tags"], ) @@ -323,14 +297,12 @@ def test_system_user_ingress_valid(self) -> None: privacy_declarations=[ PrivacyDeclaration( data_categories=[], - data_qualifier="aggregated_data", data_subjects=[], data_use="provide", ingress=["user"], name="declaration-name", ) ], - registry_id=1, system_type="SYSTEM", tags=["some", "tags"], ) @@ -342,7 +314,6 @@ def test_expanded_system(self): tags=["some", "tags"], name="Exponential Interactive, Inc d/b/a VDX.tv", description="My system test", - registry_id=1, meta={"some": "meta stuff"}, system_type="SYSTEM", egress=[ @@ -376,7 +347,6 @@ def test_expanded_system(self): "user.demographic", "user.privacy_preferences", ], - data_qualifier="aggregated_data", data_use="functional.storage", data_subjects=[], egress=["test_system_2"], @@ -400,7 +370,6 @@ def test_expanded_system(self): ], ) ], - third_country_transfers=["ARM"], vendor_id="gvl.1", dataset_references=["test_fides_key_dataset"], processes_personal_data=True, @@ -437,7 +406,6 @@ def test_expanded_system(self): def test_flexible_legal_basis_default(self): pd = PrivacyDeclaration( data_categories=[], - data_qualifier="aggregated_data", data_subjects=[], data_use="provide", ingress=["user"], @@ -445,44 +413,6 @@ def test_flexible_legal_basis_default(self): ) assert pd.flexible_legal_basis_for_processing - @mark.parametrize( - "deprecated_field,value", - [ - ("data_responsibility_title", "Controller"), - ( - "joint_controller", - { - "name": "Jane Doe", - "address": "104 Test Lane; Test Town, TX, 32522", - "email": "jane@example.com", - "phone": "345-255-2555", - }, - ), - ("third_country_transfers", ["GBR"]), - ( - "data_protection_impact_assessment", - { - "is_required": True, - "progress": "pending", - "link": "https://www.example.com/dpia", - }, - ), - ], - ) - def test_system_deprecated_fields(self, deprecated_field, value) -> None: - with deprecated_call(match=deprecated_field): - assert System( - **{ - "description": "Test System", - "fides_key": "test_system", - "name": "Test System", - "registry": 1, - "system_type": "SYSTEM", - "privacy_declarations": [], - deprecated_field: value, - } - ) - class TestDataset: def test_valid_dataset(self): @@ -500,20 +430,17 @@ def test_valid_dataset(self): } }, }, - data_qualifier="dataset_qualifier_1", data_categories=["dataset_data_category_1"], fides_meta={"after": ["other_dataset"]}, collections=[ DatasetCollection( name="dataset_collection_1", - data_qualifier="data_collection_data_qualifier_1", data_categories=["dataset_collection_data_category_1"], fides_meta={"after": ["third_dataset.blue_collection"]}, fields=[ DatasetField( name="dataset_field_1", data_categories=["dataset_field_data_category_1"], - data_qualifier="dataset_field_data_qualifier_1", fides_meta={ "references": [ { @@ -530,14 +457,12 @@ def test_valid_dataset(self): ), DatasetCollection( name="dataset_collection_2", - data_qualifier="data_collection_data_qualifier_2", data_categories=["dataset_collection_data_category_2"], fides_meta={"after": ["orange_dataset.dataset_collection_1"]}, fields=[ DatasetField( name="dataset_field_2", data_categories=["dataset_field_data_category_2"], - data_qualifier="dataset_field_data_qualifier_2", fides_meta={ "identity": "email", "primary_key": False, @@ -549,29 +474,9 @@ def test_valid_dataset(self): ], ) - @mark.parametrize( - "deprecated_field,value", - [ - ("data_qualifier", "dataset_qualifier_1"), - ("joint_controller", {"name": "Controller_name"}), - ("retention", "90 days"), - ("third_country_transfers", ["IRL"]), - ], - ) - def test_dataset_deprecated_fields(self, deprecated_field, value) -> None: - with deprecated_call(match=deprecated_field): - assert Dataset( - **{ - "fides_key": "test_dataset", - "collections": [], - deprecated_field: value, - } - ) - def test_dataset_collection_skip_processing(self): collection = DatasetCollection( name="dataset_collection_1", - data_qualifier="data_collection_data_qualifier_1", data_categories=["dataset_collection_data_category_1"], fields=[], ) @@ -579,7 +484,6 @@ def test_dataset_collection_skip_processing(self): collection = DatasetCollection( name="dataset_collection_1", - data_qualifier="data_collection_data_qualifier_1", data_categories=["dataset_collection_data_category_1"], fides_meta={"after": ["third_dataset.blue_collection"]}, fields=[], @@ -589,7 +493,6 @@ def test_dataset_collection_skip_processing(self): collection = DatasetCollection( name="dataset_collection_1", - data_qualifier="data_collection_data_qualifier_1", data_categories=["dataset_collection_data_category_1"], fides_meta={"skip_processing": True}, fields=[], @@ -602,16 +505,3 @@ class TestDataUse: def test_minimal_data_use(self): assert DataUse(fides_key="new_use") - @mark.parametrize( - "deprecated_field,value", - [ - ("legal_basis", "Legal Obligation"), - ("special_category", "Substantial Public Interest"), - ("recipients", ["Advertising Bureau"]), - ("legitimate_interest", False), - ("legitimate_interest_impact_assessment", "https://www.example.com"), - ], - ) - def test_datause_deprecated_fields(self, deprecated_field, value) -> None: - with deprecated_call(match=deprecated_field): - assert DataUse(**{"fides_key": "new_use", deprecated_field: value}) diff --git a/tests/fideslang/test_relationships.py b/tests/fideslang/test_relationships.py index d9628442..2e37dfaa 100644 --- a/tests/fideslang/test_relationships.py +++ b/tests/fideslang/test_relationships.py @@ -5,7 +5,6 @@ ContactDetails, DataCategory, DataFlow, - DataProtectionImpactAssessment, Dataset, DatasetCollection, DatasetField, @@ -64,17 +63,12 @@ def test_dont_find_other_objects(self) -> None: fides_key="default_organization", name="Demo Organization", description="An e-commerce organization", - third_country_transfers=["USA", "CAN", "GBR"], system_type="service", - data_protection_impact_assessment=DataProtectionImpactAssessment( - is_required=True, progress="ezpz", link="https://ethyca.com" - ), privacy_declarations=[ PrivacyDeclaration( name="privacy_declaration_1", data_categories=["privacy_declaration_data_category_1"], data_use="privacy_declaration_data_use_1", - data_qualifier="privacy_declaration_data_qualifier_1", data_subjects=[ "privacy_declaration_data_subject_1", "privacy_declaration_data_subject_2", @@ -91,7 +85,6 @@ def test_dont_find_other_objects(self) -> None: "default_organization", "privacy_declaration_data_category_1", "privacy_declaration_data_use_1", - "privacy_declaration_data_qualifier_1", "privacy_declaration_data_subject_1", "privacy_declaration_data_subject_2", "privacy_declaration_data_set_1", @@ -130,10 +123,6 @@ def test_find_referenced_fides_keys_3(self) -> None: fides_key="direct_marketing", name="Direct Marketing", description="User information for direct marketing purposes", - recipients=["Processor - marketing co."], - legal_basis="Legitimate Interests", - special_category="Vital Interests", - legitimate_interest_impact_assessment="https://example.org/legitimate_interest_assessment", parent_key=None, ) expected_referenced_key = {"direct_marketing", "default_organization"} @@ -192,7 +181,6 @@ def test_get_referenced_missing_privacy_declaration_keys(self): name="privacy_declaration_1", data_categories=["privacy_declaration_data_category_1"], data_use="privacy_declaration_data_use_1", - data_qualifier="privacy_declaration_data_qualifier_1", data_subjects=["privacy_declaration_data_subject_1"], dataset_references=["privacy_declaration_data_set_1"], ) @@ -204,7 +192,6 @@ def test_get_referenced_missing_privacy_declaration_keys(self): "default_organization", "privacy_declaration_data_category_1", "privacy_declaration_data_use_1", - "privacy_declaration_data_qualifier_1", "privacy_declaration_data_subject_1", "privacy_declaration_data_set_1", } @@ -231,7 +218,6 @@ def test_get_referenced_missing_policy_keys(self): "values": ["policy_rule_data_subject_1"], "matches": MatchesEnum.ANY, }, - data_qualifier="policy_rule_data_qualifier_1", ) ], ) @@ -242,7 +228,6 @@ def test_get_referenced_missing_policy_keys(self): "policy_rule_data_category_1", "policy_rule_data_use_1", "policy_rule_data_subject_1", - "policy_rule_data_qualifier_1", } referenced_keys = relationships.get_referenced_missing_keys(taxonomy) assert not referenced_keys.difference(expected_referenced_key) @@ -252,18 +237,15 @@ def test_get_referenced_missing_dataset_keys(self): dataset=[ Dataset( fides_key="dataset_1", - data_qualifier="dataset_qualifier_1", data_categories=["dataset_data_category_1"], collections=[ DatasetCollection( name="dataset_collection_1", - data_qualifier="data_collection_data_qualifier_1", data_categories=["dataset_collection_data_category_1"], fields=[ DatasetField( name="dataset_field_1", data_categories=["dataset_field_data_category_1"], - data_qualifier="dataset_field_data_qualifier_1", ) ], ) @@ -273,12 +255,9 @@ def test_get_referenced_missing_dataset_keys(self): ) expected_referenced_key = { "default_organization", - "dataset_qualifier_1", "dataset_data_category_1", - "data_collection_data_qualifier_1", "dataset_collection_data_category_1", "dataset_field_data_category_1", - "dataset_field_data_qualifier_1", } referenced_keys = relationships.get_referenced_missing_keys(taxonomy) assert not referenced_keys.difference(expected_referenced_key) diff --git a/tests/fideslang/test_validation.py b/tests/fideslang/test_validation.py index a932f26b..2131083f 100644 --- a/tests/fideslang/test_validation.py +++ b/tests/fideslang/test_validation.py @@ -6,12 +6,10 @@ DataCategory, DataFlow, Dataset, - DataUse, - DataSubject, - DataQualifier, DatasetCollection, DatasetField, DatasetMetadata, + DataSubject, DataUse, FidesCollectionKey, FidesDatasetReference, @@ -25,7 +23,7 @@ ) from fideslang.validation import FidesKey, FidesValidationError, valid_data_type -DEFAULT_TAXONOMY_CLASSES = [DataCategory, DataUse, DataQualifier, DataSubject] +DEFAULT_TAXONOMY_CLASSES = [DataCategory, DataUse, DataSubject] @pytest.mark.unit @@ -412,7 +410,6 @@ def test_valid_policy_rule(): data_categories=PrivacyRule(matches="NONE", values=[]), data_uses=PrivacyRule(matches="NONE", values=["provide.service"]), data_subjects=PrivacyRule(matches="ANY", values=[]), - data_qualifier="aggregated.anonymized.unlinked_pseudonymized.pseudonymized", ) @@ -433,7 +430,6 @@ def test_valid_policy(): def test_create_valid_system(): System( organization_fides_key=1, - registryId=1, fides_key="test_system", system_type="SYSTEM", name="Test System", @@ -444,7 +440,6 @@ def test_create_valid_system(): data_categories=[], data_use="provide.service", data_subjects=[], - data_qualifier="aggregated_data", dataset_references=[], ) ], @@ -458,57 +453,7 @@ def test_create_valid_system(): assert True -@pytest.mark.unit -@pytest.mark.parametrize("country_code", ["United States", "US", "usa"]) -def test_invalid_country_identifier(country_code: str): - """Validate some invalid country identifiers raise an error""" - with pytest.raises(ValidationError): - System( - organization_fides_key=1, - registryId=1, - fides_key="test_system", - system_type="SYSTEM", - name="Test System", - description="Test Policy", - third_country_transfers=[country_code], - privacy_declarations=[ - PrivacyDeclaration( - name="declaration-name", - data_categories=[], - data_use="provide.service", - data_subjects=[], - data_qualifier="aggregated_data", - dataset_references=["test_system"], - ) - ], - ) - assert True - -@pytest.mark.unit -@pytest.mark.parametrize("country_code", ["CAN", "USA", "GBR"]) -def test_valid_country_identifier(country_code: str): - """Validates usage of alpha-3 codes per ISO 3166""" - System( - organization_fides_key=1, - registryId=1, - fides_key="test_system", - system_type="SYSTEM", - name="Test System", - description="Test Policy", - third_country_transfers=[country_code], - privacy_declarations=[ - PrivacyDeclaration( - name="declaration-name", - data_categories=[], - data_use="provide.service", - data_subjects=[], - data_qualifier="aggregated_data", - dataset_references=["test_system"], - ) - ], - ) - assert True @pytest.mark.unit