From cd3bcf1090bb9c81ab56cc1b14980e3ed07ac48f Mon Sep 17 00:00:00 2001 From: Neville Samuell Date: Fri, 5 Sep 2025 15:11:04 -0400 Subject: [PATCH 1/3] Start implementing the 3.2.0 fideslang update --- CHANGELOG.md | 17 +- data_files/data_categories.csv | 82 ++- data_files/data_categories.json | 554 ++++++++++++++++-- data_files/data_categories.yml | 475 +++++++++++++-- data_files/data_uses.csv | 110 ++-- data_files/data_uses.json | 24 + data_files/data_uses.yml | 21 + docs/migration/v3.2.0.md | 125 ++++ mkdocs/docs/csv/data_categories.csv | 82 ++- mkdocs/docs/csv/data_uses.csv | 110 ++-- .../default_taxonomy/data_categories.py | 333 ++++++++++- tests/fideslang/test_default_taxonomy.py | 179 +++++- tests/fideslang/test_validation.py | 43 ++ 13 files changed, 1893 insertions(+), 262 deletions(-) create mode 100644 docs/migration/v3.2.0.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 386790b9..ae8e65ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,22 @@ The types of changes are: - `Fixed` for any bug fixes. - `Security` in case of vulnerabilities. -## [Unreleased](https://github.com/ethyca/fideslang/compare/3.1.0...main) +## [Unreleased](https://github.com/ethyca/fideslang/compare/3.2.0...main) + +## [3.2.0](https://github.com/ethyca/fideslang/compare/3.1.2...3.2.0) + +See [v3.2.0 Migration Guide](docs/migration/v3.2.0.md) for complete migration instructions. + +### Added +- 38 new data categories with enhanced hierarchies for professional, health, children, and demographic data [#35](https://github.com/ethyca/fideslang/pull/35) + +### Changed +- Major data category taxonomy restructuring: `user.biometric` → `user.biometrics`, `user.health_and_medical` → `user.health`, and other naming improvements [#35](https://github.com/ethyca/fideslang/pull/35) + +### Deprecated +- 26 categories deprecated with `replaced_by` pointers for backward compatibility [#35](https://github.com/ethyca/fideslang/pull/35) + +## [3.1.2](https://github.com/ethyca/fideslang/compare/3.1.1...3.1.2) ### Added - Added `fides_meta.redact` to datasets, collections, and fields [#35](https://github.com/ethyca/fideslang/pull/35) diff --git a/data_files/data_categories.csv b/data_files/data_categories.csv index b7c5657b..5c0f9712 100644 --- a/data_files/data_categories.csv +++ b/data_files/data_categories.csv @@ -7,51 +7,65 @@ user,True,User Data,default_organization,data_category,,,2.0.0,,"Data related to user.account,True,Account Information,default_organization,user,,,2.0.0,,Account creation or registration information. user.authorization,True,Authorization Information,default_organization,user,,,2.0.0,,Scope of permissions and access to a system. user.behavior,True,Observed Behavior,default_organization,user,,,2.0.0,,Behavioral data about the subject. -user.biometric,True,Biometric Data,default_organization,user,,,2.0.0,,Encoded characteristics provided by a user. -user.childrens,True,Children's Data,default_organization,user,,,2.0.0,,Data relating to children. +user.biometric,True,Biometric Data,default_organization,user,user.biometrics,,2.0.0,3.2.0,Encoded characteristics provided by a user. +user.biometrics,True,Biometrics,default_organization,user,,,3.2.0,,Encoded characteristics provided by a user. +user.childrens,True,Children's Data,default_organization,user,user.children,,2.0.0,3.2.0,Data relating to children. +user.children,True,Children,default_organization,user,,,3.2.0,,Data relating to children. user.contact,True,Contact Data,default_organization,user,,,2.0.0,,Contact data collected about a user. user.content,True,User Content,default_organization,user,,,2.0.0,,"Content related to, or created by the subject." user.demographic,True,Demographic Data,default_organization,user,,,2.0.0,,Demographic data about a user. user.location,True,Location Data,default_organization,user,,,2.0.0,,Records of the location of a user. user.device,True,Device Data,default_organization,user,,,2.0.0,,"Data related to a user's device, configuration and setting." user.payment,True,Payment Data,default_organization,user,,,2.0.0,,Payment data related to user. -user.social,True,Social Data,default_organization,user,,,2.0.0,,Social activity and interaction data. +user.social,True,Social Data,default_organization,user,user.social_activity,,2.0.0,3.2.0,Social activity and interaction data. +user.social_activity,True,Social Activity Data,default_organization,user,,,3.2.0,,Social activity and interaction data. +user.settings,True,User Settings,default_organization,user,,,3.2.0,,User preferences and settings data. user.unique_id,True,Unique ID,default_organization,user,,,2.0.0,,Unique identifier for a user assigned through system use. -user.telemetry,True,Telemetry Data,default_organization,user,,,2.0.0,,User identifiable measurement data from system sensors and monitoring. -user.user_sensor,True,User Sensor Data,default_organization,user,,,2.0.0,,Measurement data about a user's environment through system use. -user.workplace,True,Workplace,default_organization,user,,,2.0.0,,Organization of employment. -user.sensor,True,Sensor Data,default_organization,user,,,2.0.0,,Measurement data from sensors and monitoring systems. +user.telemetry,True,Telemetry Data,default_organization,user,user.device.telemetry,,2.0.0,3.2.0,User identifiable measurement data from system sensors and monitoring. +user.user_sensor,True,User Sensor Data,default_organization,user,user.device.sensor,,2.0.0,3.2.0,Measurement data about a user's environment through system use. +user.sensor,True,Sensor Data,default_organization,user,user.device.sensor,,2.0.0,3.2.0,Measurement data from sensors and monitoring systems. user.financial,True,Financial Data,default_organization,user,,,2.0.0,,Payment data and financial history. user.government_id,True,Government ID,default_organization,user,,,2.0.0,,State provided identification data. -user.health_and_medical,True,Health and Medical Data,default_organization,user,,,2.0.0,,Health records or individual's personal medical information. +user.health_and_medical,True,Health and Medical Data,default_organization,user,user.health,,2.0.0,3.2.0,Health records or individual's personal medical information. +user.health,True,Health Data,default_organization,user,,,3.2.0,,Health records or individual's personal medical information. user.name,True,Name,default_organization,user,,,2.0.0,,User's real name. user.criminal_history,True,Criminal History,default_organization,user,,,2.0.0,,Criminal records or information about the data subject. user.privacy_preferences,True,Privacy Preferences,default_organization,user,,,2.0.0,,Privacy preferences or settings set by the subject. -user.job_title,True,Job Title,default_organization,user,,,2.0.0,,Professional data. -user.account.settings,True,Account Settings,default_organization,user.account,,,2.0.0,,Account preferences and settings. +user.job_title,True,Job Title,default_organization,user,user.professional_information.job_title,,2.0.0,3.2.0,Professional data. +user.workplace,True,Workplace,default_organization,user,user.professional_information.workplace,,2.0.0,3.2.0,Organization of employment. +user.professional_information,True,Professional Information,default_organization,user,,,3.2.0,,Professional and employment-related information. +user.account.settings,True,Account Settings,default_organization,user.account,user.settings,,2.0.0,3.2.0,Account preferences and settings. user.account.username,True,Account Username,default_organization,user.account,,,2.0.0,,Username associated with account. user.authorization.credentials,True,Account password,default_organization,user.authorization,,,2.0.0,,Authentication credentials to a system. -user.authorization.biometric,True,Biometric Credentials,default_organization,user.authorization,,,2.0.0,,Credentials for system authentication. +user.authorization.biometric,True,Biometric Credentials,default_organization,user.authorization,user.authorization.biometrics,,2.0.0,3.2.0,Credentials for system authentication. +user.authorization.biometrics,True,Biometric Authentication,default_organization,user.authorization,,,3.2.0,,Credentials for system authentication. user.authorization.password,True,Password,default_organization,user.authorization,,,2.0.0,,Password for system authentication. user.behavior.browsing_history,True,Browsing History,default_organization,user.behavior,,,2.0.0,,Content browsing history of a user. user.behavior.media_consumption,True,Media Consumption,default_organization,user.behavior,,,2.0.0,,Content consumption history of the subject. user.behavior.purchase_history,True,Purchase History,default_organization,user.behavior,,,2.0.0,,Purchase history of the subject. user.behavior.search_history,True,Search History,default_organization,user.behavior,,,2.0.0,,Search history of the subject. -user.biometric.fingerprint,True,Fingerprint,default_organization,user.biometric,,,2.0.0,,Fingerprint encoded data about a subject. -user.biometric.retinal,True,Retina Scan,default_organization,user.biometric,,,2.0.0,,Retinal data about a subject. -user.biometric.voice,True,Voice Recording,default_organization,user.biometric,,,2.0.0,,Voice encoded data about a subject. -user.biometric.health,True,Biometric Health Data,default_organization,user.biometric,,,2.0.0,,Encoded characteristic collected about a user. +user.biometric.fingerprint,True,Fingerprint,default_organization,user.biometric,user.biometrics.fingerprint,,2.0.0,3.2.0,Fingerprint encoded data about a subject. +user.biometric.retinal,True,Retina Scan,default_organization,user.biometric,user.biometrics.retinal,,2.0.0,3.2.0,Retinal data about a subject. +user.biometric.voice,True,Voice Recording,default_organization,user.biometric,user.biometrics.voice,,2.0.0,3.2.0,Voice encoded data about a subject. +user.biometric.health,True,Biometric Health Data,default_organization,user.biometric,user.biometrics,,2.0.0,3.2.0,Encoded characteristic collected about a user. +user.biometrics.fingerprint,True,Fingerprint Data,default_organization,user.biometrics,,,3.2.0,,Fingerprint encoded data about a subject. +user.biometrics.retinal,True,Retinal Data,default_organization,user.biometrics,,,3.2.0,,Retinal data about a subject. +user.biometrics.voice,True,Voice Data,default_organization,user.biometrics,,,3.2.0,,Voice encoded data about a subject. +user.children.children_under_thirteen,True,Children Under Thirteen,default_organization,user.children,,,3.2.0,,Data relating to children under the age of thirteen. +user.children.thirteen_to_sixteen,True,Children Thirteen to Sixteen,default_organization,user.children,,,3.2.0,,Data relating to children between the ages of thirteen and sixteen. user.contact.address,True,User Contact Address,default_organization,user.contact,,,2.0.0,,Contact address data collected about a user. user.contact.email,True,User Contact Email,default_organization,user.contact,,,2.0.0,,User's contact email address. user.contact.phone_number,True,User Contact Phone Number,default_organization,user.contact,,,2.0.0,,User's phone number. -user.contact.url,True,User Website,default_organization,user.contact,,,2.0.0,,Subject's websites or links to social and personal profiles. +user.contact.url,True,User Website,default_organization,user.contact,user.contact.social_url,,2.0.0,3.2.0,Subject's websites or links to social and personal profiles. +user.contact.social_url,True,Social Media URL,default_organization,user.contact,,,3.2.0,,Subject's websites or links to social and personal profiles. user.contact.fax_number,True,Fax Number,default_organization,user.contact,,,2.0.0,,Data Subject's fax number. -user.contact.organization,True,Organization,default_organization,user.contact,,,2.0.0,,Data Subject's Organization. +user.contact.organization,True,Organization,default_organization,user.contact,user.contact,,2.0.0,3.2.0,Data Subject's Organization. user.contact.address.city,True,User Contact City,default_organization,user.contact.address,,,2.0.0,,User's city level address data. user.contact.address.country,True,User Contact Country,default_organization,user.contact.address,,,2.0.0,,User's country level address data. user.contact.address.postal_code,True,User Contact Postal Code,default_organization,user.contact.address,,,2.0.0,,User's postal code. user.contact.address.state,True,User Contact State,default_organization,user.contact.address,,,2.0.0,,User's state level address data. user.contact.address.street,True,User Contact Street,default_organization,user.contact.address,,,2.0.0,,User's street level address data. +user.contact.address.mailing_address,True,Mailing Address,default_organization,user.contact.address,,,3.2.0,,User's mailing address information. user.content.private,True,Private Content,default_organization,user.content,,,2.0.0,,"Private content related to, or created by the subject, not publicly available." user.content.public,True,Public Content,default_organization,user.content,,,2.0.0,,"Publicly shared Content related to, or created by the subject." user.content.self_image,True,User Image,default_organization,user.content,,,2.0.0,,Photograph or image in which subject is whole or partially recognized. @@ -65,10 +79,16 @@ user.demographic.profile,True,User Profile Data,default_organization,user.demogr user.demographic.race_ethnicity,True,Race,default_organization,user.demographic,,,2.0.0,,Race or ethnicity of data subject. user.demographic.religious_belief,True,Religion,default_organization,user.demographic,,,2.0.0,,Religion or religious beliefs of the data subject. user.demographic.sexual_orientation,True,Sexual Orientation,default_organization,user.demographic,,,2.0.0,,Sexual orientation of data subject. +user.demographic.citizenship_or_immigration_status,True,Citizenship or Immigration Status,default_organization,user.demographic,,,3.2.0,,Citizenship or immigration status of data subject. +user.demographic.philosophical_belief,True,Philosophical Belief,default_organization,user.demographic,,,3.2.0,,Philosophical beliefs or worldview of data subject. +user.demographic.protected_classifications,True,Protected Classifications,default_organization,user.demographic,,,3.2.0,,Protected classifications or sensitive attributes of data subject. +user.demographic.union_membership,True,Union Membership,default_organization,user.demographic,,,3.2.0,,Union membership status of data subject. user.device.cookie,True,Device Cookie,default_organization,user.device,,,2.0.0,,"Data related to a subject, stored within a cookie." user.device.cookie_id,True,Cookie ID,default_organization,user.device,,,2.0.0,,Cookie unique identification number. user.device.device_id,True,Device ID,default_organization,user.device,,,2.0.0,,Device unique identification number. user.device.ip_address,True,IP Address,default_organization,user.device,,,2.0.0,,Unique identifier related to device connection. +user.device.sensor,True,Device Sensor Data,default_organization,user.device,,,3.2.0,,Measurement data from device sensors and monitoring systems. +user.device.telemetry,True,Device Telemetry,default_organization,user.device,,,3.2.0,,User identifiable measurement data from device sensors and monitoring. user.financial.bank_account,True,Bank Account Information,default_organization,user.financial,,,2.0.0,,Bank account information belonging to the subject. user.financial.credit_card,True,Credit Card Information,default_organization,user.financial,,,2.0.0,,Credit card information belonging to the subject. user.government_id.birth_certificate,True,Birth Certificate,default_organization,user.government_id,,,2.0.0,,State issued certificate of birth. @@ -77,11 +97,29 @@ user.government_id.immigration,True,Immigration ID,default_organization,user.gov user.government_id.national_identification_number,True,National Identification Number,default_organization,user.government_id,,,2.0.0,,State issued personal identification number. user.government_id.passport_number,True,Passport Number,default_organization,user.government_id,,,2.0.0,,State issued passport data. user.government_id.vehicle_registration,True,Vehicle Registration,default_organization,user.government_id,,,2.0.0,,State issued license plate or vehicle registration data. -user.health_and_medical.genetic,True,User's Genetic Data,default_organization,user.health_and_medical,,,2.0.0,,Data about the genetic makeup provided by the subject. -user.health_and_medical.insurance_beneficiary_id,True,Medical Insurance ID,default_organization,user.health_and_medical,,,2.0.0,,Health insurance beneficiary number of the subject. -user.health_and_medical.record_id,True,Medical Record ID,default_organization,user.health_and_medical,,,2.0.0,,Medical record identifiers belonging to a subject. -user.location.imprecise,True,Imprecise Subject Location,default_organization,user.location,,,2.0.0,,Imprecise location derived from sensors (more than 500M). +user.health.genetic,True,Genetic Data,default_organization,user.health,,,3.2.0,,Data about the genetic makeup provided by the subject. +user.health.insurance_beneficiary_id,True,Health Insurance ID,default_organization,user.health,,,3.2.0,,Health insurance beneficiary number of the subject. +user.health.record_id,True,Health Record ID,default_organization,user.health,,,3.2.0,,Medical record identifiers belonging to a subject. +user.health.baby_formula,True,Baby Formula Information,default_organization,user.health,,,3.2.0,,Information about baby formula usage or preferences. +user.health.condition,True,Health Condition,default_organization,user.health,,,3.2.0,,Health condition or status information. +user.health.maternity_clothing,True,Maternity Clothing,default_organization,user.health,,,3.2.0,,Information about maternity clothing purchases or preferences. +user.health.medical_diagnosis,True,Medical Diagnosis,default_organization,user.health,,,3.2.0,,Medical diagnosis information. +user.health.medications,True,Medications,default_organization,user.health,,,3.2.0,,Information about medications. +user.health.prescriptions,True,Prescriptions,default_organization,user.health,,,3.2.0,,Prescription medication information. +user.health.reproductive_or_sexual,True,Reproductive or Sexual Health,default_organization,user.health,,,3.2.0,,Reproductive or sexual health information. +user.health.social_psychological_behavioral,True,"Social, Psychological, or Behavioral Health",default_organization,user.health,,,3.2.0,,"Social, psychological, or behavioral health information." +user.health.symptons,True,Health Symptoms,default_organization,user.health,,,3.2.0,,Health symptom information. +user.health.treatment,True,Medical Treatment,default_organization,user.health,,,3.2.0,,Medical treatment information. +user.health_and_medical.genetic,True,User's Genetic Data,default_organization,user.health_and_medical,user.health.genetic,,2.0.0,3.2.0,Data about the genetic makeup provided by the subject. +user.health_and_medical.insurance_beneficiary_id,True,Medical Insurance ID,default_organization,user.health_and_medical,user.health.insurance_beneficiary_id,,2.0.0,3.2.0,Health insurance beneficiary number of the subject. +user.health_and_medical.record_id,True,Medical Record ID,default_organization,user.health_and_medical,user.health.record_id,,2.0.0,3.2.0,Medical record identifiers belonging to a subject. +user.location.imprecise,True,Imprecise Subject Location,default_organization,user.location,user.location.coarse,,2.0.0,3.2.0,Imprecise location derived from sensors (more than 500M). +user.location.coarse,True,Coarse Subject Location,default_organization,user.location,,,3.2.0,,Coarse location derived from sensors (more than 500M). user.location.precise,True,Precise Subject Location,default_organization,user.location,,,2.0.0,,Precise location derived from sensors (less than 500M). user.name.first,True,First Name,default_organization,user.name,,,2.0.0,,Subject's first name. user.name.last,True,Last Name,default_organization,user.name,,,2.0.0,,"Subject's last, or family, name." -user.unique_id.pseudonymous,True,Pseudonymous User ID,default_organization,user.unique_id,,,2.0.0,,"A pseudonymous, or probabilistic identifier generated from other subject or device data belonging to the subject." +user.professional_information.job_title,True,Professional Job Title,default_organization,user.professional_information,,,3.2.0,,Professional job title or position. +user.professional_information.workplace,True,Professional Workplace,default_organization,user.professional_information,,,3.2.0,,Organization or workplace of employment. +user.unique_id.pseudonymous,True,Pseudonymous User ID,default_organization,user.unique_id,user.unique_id,,2.0.0,3.2.0,"A pseudonymous, or probabilistic identifier generated from other subject or device data belonging to the subject." +user.unique_id.deterministic,True,Deterministic User ID,default_organization,user.unique_id,,,3.2.0,,A deterministic identifier that can be consistently generated from user data. +user.unique_id.probablistic,True,Probabilistic User ID,default_organization,user.unique_id,,,3.2.0,,A probabilistic identifier generated from other subject or device data. diff --git a/data_files/data_categories.json b/data_files/data_categories.json index f9a3da94..92b3bcd8 100644 --- a/data_files/data_categories.json +++ b/data_files/data_categories.json @@ -86,8 +86,8 @@ }, { "version_added": "2.0.0", - "version_deprecated": null, - "replaced_by": null, + "version_deprecated": "3.2.0", + "replaced_by": "user.biometrics", "is_default": true, "fides_key": "user.biometric", "organization_fides_key": "default_organization", @@ -97,10 +97,22 @@ "parent_key": "user" }, { - "version_added": "2.0.0", + "version_added": "3.2.0", "version_deprecated": null, "replaced_by": null, "is_default": true, + "fides_key": "user.biometrics", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Biometrics", + "description": "Encoded characteristics provided by a user.", + "parent_key": "user" + }, + { + "version_added": "2.0.0", + "version_deprecated": "3.2.0", + "replaced_by": "user.children", + "is_default": true, "fides_key": "user.childrens", "organization_fides_key": "default_organization", "tags": null, @@ -108,6 +120,18 @@ "description": "Data relating to children.", "parent_key": "user" }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.children", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Children", + "description": "Data relating to children.", + "parent_key": "user" + }, { "version_added": "2.0.0", "version_deprecated": null, @@ -182,8 +206,8 @@ }, { "version_added": "2.0.0", - "version_deprecated": null, - "replaced_by": null, + "version_deprecated": "3.2.0", + "replaced_by": "user.social_activity", "is_default": true, "fides_key": "user.social", "organization_fides_key": "default_organization", @@ -193,27 +217,27 @@ "parent_key": "user" }, { - "version_added": "2.0.0", + "version_added": "3.2.0", "version_deprecated": null, "replaced_by": null, "is_default": true, - "fides_key": "user.unique_id", + "fides_key": "user.social_activity", "organization_fides_key": "default_organization", "tags": null, - "name": "Unique ID", - "description": "Unique identifier for a user assigned through system use.", + "name": "Social Activity Data", + "description": "Social activity and interaction data.", "parent_key": "user" }, { - "version_added": "2.0.0", + "version_added": "3.2.0", "version_deprecated": null, "replaced_by": null, "is_default": true, - "fides_key": "user.telemetry", + "fides_key": "user.settings", "organization_fides_key": "default_organization", "tags": null, - "name": "Telemetry Data", - "description": "User identifiable measurement data from system sensors and monitoring.", + "name": "User Settings", + "description": "User preferences and settings data.", "parent_key": "user" }, { @@ -221,29 +245,41 @@ "version_deprecated": null, "replaced_by": null, "is_default": true, - "fides_key": "user.user_sensor", + "fides_key": "user.unique_id", "organization_fides_key": "default_organization", "tags": null, - "name": "User Sensor Data", - "description": "Measurement data about a user's environment through system use.", + "name": "Unique ID", + "description": "Unique identifier for a user assigned through system use.", "parent_key": "user" }, { "version_added": "2.0.0", - "version_deprecated": null, - "replaced_by": null, + "version_deprecated": "3.2.0", + "replaced_by": "user.device.telemetry", "is_default": true, - "fides_key": "user.workplace", + "fides_key": "user.telemetry", "organization_fides_key": "default_organization", "tags": null, - "name": "Workplace", - "description": "Organization of employment.", + "name": "Telemetry Data", + "description": "User identifiable measurement data from system sensors and monitoring.", "parent_key": "user" }, { "version_added": "2.0.0", - "version_deprecated": null, - "replaced_by": null, + "version_deprecated": "3.2.0", + "replaced_by": "user.device.sensor", + "is_default": true, + "fides_key": "user.user_sensor", + "organization_fides_key": "default_organization", + "tags": null, + "name": "User Sensor Data", + "description": "Measurement data about a user's environment through system use.", + "parent_key": "user" + }, + { + "version_added": "2.0.0", + "version_deprecated": "3.2.0", + "replaced_by": "user.device.sensor", "is_default": true, "fides_key": "user.sensor", "organization_fides_key": "default_organization", @@ -278,8 +314,8 @@ }, { "version_added": "2.0.0", - "version_deprecated": null, - "replaced_by": null, + "version_deprecated": "3.2.0", + "replaced_by": "user.health", "is_default": true, "fides_key": "user.health_and_medical", "organization_fides_key": "default_organization", @@ -288,6 +324,18 @@ "description": "Health records or individual's personal medical information.", "parent_key": "user" }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.health", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Health Data", + "description": "Health records or individual's personal medical information.", + "parent_key": "user" + }, { "version_added": "2.0.0", "version_deprecated": null, @@ -326,8 +374,8 @@ }, { "version_added": "2.0.0", - "version_deprecated": null, - "replaced_by": null, + "version_deprecated": "3.2.0", + "replaced_by": "user.professional_information.job_title", "is_default": true, "fides_key": "user.job_title", "organization_fides_key": "default_organization", @@ -338,9 +386,33 @@ }, { "version_added": "2.0.0", + "version_deprecated": "3.2.0", + "replaced_by": "user.professional_information.workplace", + "is_default": true, + "fides_key": "user.workplace", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Workplace", + "description": "Organization of employment.", + "parent_key": "user" + }, + { + "version_added": "3.2.0", "version_deprecated": null, "replaced_by": null, "is_default": true, + "fides_key": "user.professional_information", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Professional Information", + "description": "Professional and employment-related information.", + "parent_key": "user" + }, + { + "version_added": "2.0.0", + "version_deprecated": "3.2.0", + "replaced_by": "user.settings", + "is_default": true, "fides_key": "user.account.settings", "organization_fides_key": "default_organization", "tags": null, @@ -374,8 +446,8 @@ }, { "version_added": "2.0.0", - "version_deprecated": null, - "replaced_by": null, + "version_deprecated": "3.2.0", + "replaced_by": "user.authorization.biometrics", "is_default": true, "fides_key": "user.authorization.biometric", "organization_fides_key": "default_organization", @@ -384,6 +456,18 @@ "description": "Credentials for system authentication.", "parent_key": "user.authorization" }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.authorization.biometrics", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Biometric Authentication", + "description": "Credentials for system authentication.", + "parent_key": "user.authorization" + }, { "version_added": "2.0.0", "version_deprecated": null, @@ -446,8 +530,8 @@ }, { "version_added": "2.0.0", - "version_deprecated": null, - "replaced_by": null, + "version_deprecated": "3.2.0", + "replaced_by": "user.biometrics.fingerprint", "is_default": true, "fides_key": "user.biometric.fingerprint", "organization_fides_key": "default_organization", @@ -458,8 +542,8 @@ }, { "version_added": "2.0.0", - "version_deprecated": null, - "replaced_by": null, + "version_deprecated": "3.2.0", + "replaced_by": "user.biometrics.retinal", "is_default": true, "fides_key": "user.biometric.retinal", "organization_fides_key": "default_organization", @@ -470,8 +554,8 @@ }, { "version_added": "2.0.0", - "version_deprecated": null, - "replaced_by": null, + "version_deprecated": "3.2.0", + "replaced_by": "user.biometrics.voice", "is_default": true, "fides_key": "user.biometric.voice", "organization_fides_key": "default_organization", @@ -482,8 +566,8 @@ }, { "version_added": "2.0.0", - "version_deprecated": null, - "replaced_by": null, + "version_deprecated": "3.2.0", + "replaced_by": "user.biometrics", "is_default": true, "fides_key": "user.biometric.health", "organization_fides_key": "default_organization", @@ -492,6 +576,66 @@ "description": "Encoded characteristic collected about a user.", "parent_key": "user.biometric" }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.biometrics.fingerprint", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Fingerprint Data", + "description": "Fingerprint encoded data about a subject.", + "parent_key": "user.biometrics" + }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.biometrics.retinal", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Retinal Data", + "description": "Retinal data about a subject.", + "parent_key": "user.biometrics" + }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.biometrics.voice", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Voice Data", + "description": "Voice encoded data about a subject.", + "parent_key": "user.biometrics" + }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.children.children_under_thirteen", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Children Under Thirteen", + "description": "Data relating to children under the age of thirteen.", + "parent_key": "user.children" + }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.children.thirteen_to_sixteen", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Children Thirteen to Sixteen", + "description": "Data relating to children between the ages of thirteen and sixteen.", + "parent_key": "user.children" + }, { "version_added": "2.0.0", "version_deprecated": null, @@ -530,8 +674,8 @@ }, { "version_added": "2.0.0", - "version_deprecated": null, - "replaced_by": null, + "version_deprecated": "3.2.0", + "replaced_by": "user.contact.social_url", "is_default": true, "fides_key": "user.contact.url", "organization_fides_key": "default_organization", @@ -540,6 +684,18 @@ "description": "Subject's websites or links to social and personal profiles.", "parent_key": "user.contact" }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.contact.social_url", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Social Media URL", + "description": "Subject's websites or links to social and personal profiles.", + "parent_key": "user.contact" + }, { "version_added": "2.0.0", "version_deprecated": null, @@ -554,8 +710,8 @@ }, { "version_added": "2.0.0", - "version_deprecated": null, - "replaced_by": null, + "version_deprecated": "3.2.0", + "replaced_by": "user.contact", "is_default": true, "fides_key": "user.contact.organization", "organization_fides_key": "default_organization", @@ -624,6 +780,18 @@ "description": "User's street level address data.", "parent_key": "user.contact.address" }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.contact.address.mailing_address", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Mailing Address", + "description": "User's mailing address information.", + "parent_key": "user.contact.address" + }, { "version_added": "2.0.0", "version_deprecated": null, @@ -780,6 +948,54 @@ "description": "Sexual orientation of data subject.", "parent_key": "user.demographic" }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.demographic.citizenship_or_immigration_status", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Citizenship or Immigration Status", + "description": "Citizenship or immigration status of data subject.", + "parent_key": "user.demographic" + }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.demographic.philosophical_belief", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Philosophical Belief", + "description": "Philosophical beliefs or worldview of data subject.", + "parent_key": "user.demographic" + }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.demographic.protected_classifications", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Protected Classifications", + "description": "Protected classifications or sensitive attributes of data subject.", + "parent_key": "user.demographic" + }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.demographic.union_membership", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Union Membership", + "description": "Union membership status of data subject.", + "parent_key": "user.demographic" + }, { "version_added": "2.0.0", "version_deprecated": null, @@ -828,6 +1044,30 @@ "description": "Unique identifier related to device connection.", "parent_key": "user.device" }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.device.sensor", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Device Sensor Data", + "description": "Measurement data from device sensors and monitoring systems.", + "parent_key": "user.device" + }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.device.telemetry", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Device Telemetry", + "description": "User identifiable measurement data from device sensors and monitoring.", + "parent_key": "user.device" + }, { "version_added": "2.0.0", "version_deprecated": null, @@ -925,10 +1165,166 @@ "parent_key": "user.government_id" }, { - "version_added": "2.0.0", + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.health.genetic", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Genetic Data", + "description": "Data about the genetic makeup provided by the subject.", + "parent_key": "user.health" + }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.health.insurance_beneficiary_id", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Health Insurance ID", + "description": "Health insurance beneficiary number of the subject.", + "parent_key": "user.health" + }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.health.record_id", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Health Record ID", + "description": "Medical record identifiers belonging to a subject.", + "parent_key": "user.health" + }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.health.baby_formula", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Baby Formula Information", + "description": "Information about baby formula usage or preferences.", + "parent_key": "user.health" + }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.health.condition", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Health Condition", + "description": "Health condition or status information.", + "parent_key": "user.health" + }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.health.maternity_clothing", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Maternity Clothing", + "description": "Information about maternity clothing purchases or preferences.", + "parent_key": "user.health" + }, + { + "version_added": "3.2.0", "version_deprecated": null, "replaced_by": null, "is_default": true, + "fides_key": "user.health.medical_diagnosis", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Medical Diagnosis", + "description": "Medical diagnosis information.", + "parent_key": "user.health" + }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.health.medications", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Medications", + "description": "Information about medications.", + "parent_key": "user.health" + }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.health.prescriptions", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Prescriptions", + "description": "Prescription medication information.", + "parent_key": "user.health" + }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.health.reproductive_or_sexual", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Reproductive or Sexual Health", + "description": "Reproductive or sexual health information.", + "parent_key": "user.health" + }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.health.social_psychological_behavioral", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Social, Psychological, or Behavioral Health", + "description": "Social, psychological, or behavioral health information.", + "parent_key": "user.health" + }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.health.symptons", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Health Symptoms", + "description": "Health symptom information.", + "parent_key": "user.health" + }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.health.treatment", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Medical Treatment", + "description": "Medical treatment information.", + "parent_key": "user.health" + }, + { + "version_added": "2.0.0", + "version_deprecated": "3.2.0", + "replaced_by": "user.health.genetic", + "is_default": true, "fides_key": "user.health_and_medical.genetic", "organization_fides_key": "default_organization", "tags": null, @@ -938,8 +1334,8 @@ }, { "version_added": "2.0.0", - "version_deprecated": null, - "replaced_by": null, + "version_deprecated": "3.2.0", + "replaced_by": "user.health.insurance_beneficiary_id", "is_default": true, "fides_key": "user.health_and_medical.insurance_beneficiary_id", "organization_fides_key": "default_organization", @@ -950,8 +1346,8 @@ }, { "version_added": "2.0.0", - "version_deprecated": null, - "replaced_by": null, + "version_deprecated": "3.2.0", + "replaced_by": "user.health.record_id", "is_default": true, "fides_key": "user.health_and_medical.record_id", "organization_fides_key": "default_organization", @@ -962,8 +1358,8 @@ }, { "version_added": "2.0.0", - "version_deprecated": null, - "replaced_by": null, + "version_deprecated": "3.2.0", + "replaced_by": "user.location.coarse", "is_default": true, "fides_key": "user.location.imprecise", "organization_fides_key": "default_organization", @@ -972,6 +1368,18 @@ "description": "Imprecise location derived from sensors (more than 500M).", "parent_key": "user.location" }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.location.coarse", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Coarse Subject Location", + "description": "Coarse location derived from sensors (more than 500M).", + "parent_key": "user.location" + }, { "version_added": "2.0.0", "version_deprecated": null, @@ -1009,16 +1417,64 @@ "parent_key": "user.name" }, { - "version_added": "2.0.0", + "version_added": "3.2.0", "version_deprecated": null, "replaced_by": null, "is_default": true, + "fides_key": "user.professional_information.job_title", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Professional Job Title", + "description": "Professional job title or position.", + "parent_key": "user.professional_information" + }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.professional_information.workplace", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Professional Workplace", + "description": "Organization or workplace of employment.", + "parent_key": "user.professional_information" + }, + { + "version_added": "2.0.0", + "version_deprecated": "3.2.0", + "replaced_by": "user.unique_id", + "is_default": true, "fides_key": "user.unique_id.pseudonymous", "organization_fides_key": "default_organization", "tags": null, "name": "Pseudonymous User ID", "description": "A pseudonymous, or probabilistic identifier generated from other subject or device data belonging to the subject.", "parent_key": "user.unique_id" + }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.unique_id.deterministic", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Deterministic User ID", + "description": "A deterministic identifier that can be consistently generated from user data.", + "parent_key": "user.unique_id" + }, + { + "version_added": "3.2.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "user.unique_id.probablistic", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Probabilistic User ID", + "description": "A probabilistic identifier generated from other subject or device data.", + "parent_key": "user.unique_id" } ] } diff --git a/data_files/data_categories.yml b/data_files/data_categories.yml index be00f65f..7ef95f5d 100644 --- a/data_files/data_categories.yml +++ b/data_files/data_categories.yml @@ -71,8 +71,8 @@ data_category: description: Behavioral data about the subject. parent_key: user - version_added: 2.0.0 - version_deprecated: null - replaced_by: null + version_deprecated: 3.2.0 + replaced_by: user.biometrics is_default: true fides_key: user.biometric organization_fides_key: default_organization @@ -80,16 +80,36 @@ data_category: name: Biometric Data description: Encoded characteristics provided by a user. parent_key: user -- version_added: 2.0.0 +- version_added: 3.2.0 version_deprecated: null replaced_by: null is_default: true + fides_key: user.biometrics + organization_fides_key: default_organization + tags: null + name: Biometrics + description: Encoded characteristics provided by a user. + parent_key: user +- version_added: 2.0.0 + version_deprecated: 3.2.0 + replaced_by: user.children + is_default: true fides_key: user.childrens organization_fides_key: default_organization tags: null name: Children's Data description: Data relating to children. parent_key: user +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.children + organization_fides_key: default_organization + tags: null + name: Children + description: Data relating to children. + parent_key: user - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -151,8 +171,8 @@ data_category: description: Payment data related to user. parent_key: user - version_added: 2.0.0 - version_deprecated: null - replaced_by: null + version_deprecated: 3.2.0 + replaced_by: user.social_activity is_default: true fides_key: user.social organization_fides_key: default_organization @@ -160,6 +180,26 @@ data_category: name: Social Data description: Social activity and interaction data. parent_key: user +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.social_activity + organization_fides_key: default_organization + tags: null + name: Social Activity Data + description: Social activity and interaction data. + parent_key: user +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.settings + organization_fides_key: default_organization + tags: null + name: User Settings + description: User preferences and settings data. + parent_key: user - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -171,8 +211,8 @@ data_category: description: Unique identifier for a user assigned through system use. parent_key: user - version_added: 2.0.0 - version_deprecated: null - replaced_by: null + version_deprecated: 3.2.0 + replaced_by: user.device.telemetry is_default: true fides_key: user.telemetry organization_fides_key: default_organization @@ -181,8 +221,8 @@ data_category: description: User identifiable measurement data from system sensors and monitoring. parent_key: user - version_added: 2.0.0 - version_deprecated: null - replaced_by: null + version_deprecated: 3.2.0 + replaced_by: user.device.sensor is_default: true fides_key: user.user_sensor organization_fides_key: default_organization @@ -191,18 +231,8 @@ data_category: description: Measurement data about a user's environment through system use. parent_key: user - version_added: 2.0.0 - version_deprecated: null - replaced_by: null - is_default: true - fides_key: user.workplace - organization_fides_key: default_organization - tags: null - name: Workplace - description: Organization of employment. - parent_key: user -- version_added: 2.0.0 - version_deprecated: null - replaced_by: null + version_deprecated: 3.2.0 + replaced_by: user.device.sensor is_default: true fides_key: user.sensor organization_fides_key: default_organization @@ -231,8 +261,8 @@ data_category: description: State provided identification data. parent_key: user - version_added: 2.0.0 - version_deprecated: null - replaced_by: null + version_deprecated: 3.2.0 + replaced_by: user.health is_default: true fides_key: user.health_and_medical organization_fides_key: default_organization @@ -240,6 +270,16 @@ data_category: name: Health and Medical Data description: Health records or individual's personal medical information. parent_key: user +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.health + organization_fides_key: default_organization + tags: null + name: Health Data + description: Health records or individual's personal medical information. + parent_key: user - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -271,8 +311,8 @@ data_category: description: Privacy preferences or settings set by the subject. parent_key: user - version_added: 2.0.0 - version_deprecated: null - replaced_by: null + version_deprecated: 3.2.0 + replaced_by: user.professional_information.job_title is_default: true fides_key: user.job_title organization_fides_key: default_organization @@ -281,9 +321,29 @@ data_category: description: Professional data. parent_key: user - version_added: 2.0.0 + version_deprecated: 3.2.0 + replaced_by: user.professional_information.workplace + is_default: true + fides_key: user.workplace + organization_fides_key: default_organization + tags: null + name: Workplace + description: Organization of employment. + parent_key: user +- version_added: 3.2.0 version_deprecated: null replaced_by: null is_default: true + fides_key: user.professional_information + organization_fides_key: default_organization + tags: null + name: Professional Information + description: Professional and employment-related information. + parent_key: user +- version_added: 2.0.0 + version_deprecated: 3.2.0 + replaced_by: user.settings + is_default: true fides_key: user.account.settings organization_fides_key: default_organization tags: null @@ -311,8 +371,8 @@ data_category: description: Authentication credentials to a system. parent_key: user.authorization - version_added: 2.0.0 - version_deprecated: null - replaced_by: null + version_deprecated: 3.2.0 + replaced_by: user.authorization.biometrics is_default: true fides_key: user.authorization.biometric organization_fides_key: default_organization @@ -320,6 +380,16 @@ data_category: name: Biometric Credentials description: Credentials for system authentication. parent_key: user.authorization +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.authorization.biometrics + organization_fides_key: default_organization + tags: null + name: Biometric Authentication + description: Credentials for system authentication. + parent_key: user.authorization - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -371,8 +441,8 @@ data_category: description: Search history of the subject. parent_key: user.behavior - version_added: 2.0.0 - version_deprecated: null - replaced_by: null + version_deprecated: 3.2.0 + replaced_by: user.biometrics.fingerprint is_default: true fides_key: user.biometric.fingerprint organization_fides_key: default_organization @@ -381,8 +451,8 @@ data_category: description: Fingerprint encoded data about a subject. parent_key: user.biometric - version_added: 2.0.0 - version_deprecated: null - replaced_by: null + version_deprecated: 3.2.0 + replaced_by: user.biometrics.retinal is_default: true fides_key: user.biometric.retinal organization_fides_key: default_organization @@ -391,8 +461,8 @@ data_category: description: Retinal data about a subject. parent_key: user.biometric - version_added: 2.0.0 - version_deprecated: null - replaced_by: null + version_deprecated: 3.2.0 + replaced_by: user.biometrics.voice is_default: true fides_key: user.biometric.voice organization_fides_key: default_organization @@ -401,8 +471,8 @@ data_category: description: Voice encoded data about a subject. parent_key: user.biometric - version_added: 2.0.0 - version_deprecated: null - replaced_by: null + version_deprecated: 3.2.0 + replaced_by: user.biometrics is_default: true fides_key: user.biometric.health organization_fides_key: default_organization @@ -410,6 +480,56 @@ data_category: name: Biometric Health Data description: Encoded characteristic collected about a user. parent_key: user.biometric +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.biometrics.fingerprint + organization_fides_key: default_organization + tags: null + name: Fingerprint Data + description: Fingerprint encoded data about a subject. + parent_key: user.biometrics +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.biometrics.retinal + organization_fides_key: default_organization + tags: null + name: Retinal Data + description: Retinal data about a subject. + parent_key: user.biometrics +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.biometrics.voice + organization_fides_key: default_organization + tags: null + name: Voice Data + description: Voice encoded data about a subject. + parent_key: user.biometrics +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.children.children_under_thirteen + organization_fides_key: default_organization + tags: null + name: Children Under Thirteen + description: Data relating to children under the age of thirteen. + parent_key: user.children +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.children.thirteen_to_sixteen + organization_fides_key: default_organization + tags: null + name: Children Thirteen to Sixteen + description: Data relating to children between the ages of thirteen and sixteen. + parent_key: user.children - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -441,8 +561,8 @@ data_category: description: User's phone number. parent_key: user.contact - version_added: 2.0.0 - version_deprecated: null - replaced_by: null + version_deprecated: 3.2.0 + replaced_by: user.contact.social_url is_default: true fides_key: user.contact.url organization_fides_key: default_organization @@ -450,6 +570,16 @@ data_category: name: User Website description: Subject's websites or links to social and personal profiles. parent_key: user.contact +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.contact.social_url + organization_fides_key: default_organization + tags: null + name: Social Media URL + description: Subject's websites or links to social and personal profiles. + parent_key: user.contact - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -461,8 +591,8 @@ data_category: description: Data Subject's fax number. parent_key: user.contact - version_added: 2.0.0 - version_deprecated: null - replaced_by: null + version_deprecated: 3.2.0 + replaced_by: user.contact is_default: true fides_key: user.contact.organization organization_fides_key: default_organization @@ -520,6 +650,16 @@ data_category: name: User Contact Street description: User's street level address data. parent_key: user.contact.address +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.contact.address.mailing_address + organization_fides_key: default_organization + tags: null + name: Mailing Address + description: User's mailing address information. + parent_key: user.contact.address - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -651,6 +791,46 @@ data_category: name: Sexual Orientation description: Sexual orientation of data subject. parent_key: user.demographic +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.demographic.citizenship_or_immigration_status + organization_fides_key: default_organization + tags: null + name: Citizenship or Immigration Status + description: Citizenship or immigration status of data subject. + parent_key: user.demographic +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.demographic.philosophical_belief + organization_fides_key: default_organization + tags: null + name: Philosophical Belief + description: Philosophical beliefs or worldview of data subject. + parent_key: user.demographic +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.demographic.protected_classifications + organization_fides_key: default_organization + tags: null + name: Protected Classifications + description: Protected classifications or sensitive attributes of data subject. + parent_key: user.demographic +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.demographic.union_membership + organization_fides_key: default_organization + tags: null + name: Union Membership + description: Union membership status of data subject. + parent_key: user.demographic - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -691,6 +871,26 @@ data_category: name: IP Address description: Unique identifier related to device connection. parent_key: user.device +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.device.sensor + organization_fides_key: default_organization + tags: null + name: Device Sensor Data + description: Measurement data from device sensors and monitoring systems. + parent_key: user.device +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.device.telemetry + organization_fides_key: default_organization + tags: null + name: Device Telemetry + description: User identifiable measurement data from device sensors and monitoring. + parent_key: user.device - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -771,10 +971,140 @@ data_category: name: Vehicle Registration description: State issued license plate or vehicle registration data. parent_key: user.government_id -- version_added: 2.0.0 +- version_added: 3.2.0 version_deprecated: null replaced_by: null is_default: true + fides_key: user.health.genetic + organization_fides_key: default_organization + tags: null + name: Genetic Data + description: Data about the genetic makeup provided by the subject. + parent_key: user.health +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.health.insurance_beneficiary_id + organization_fides_key: default_organization + tags: null + name: Health Insurance ID + description: Health insurance beneficiary number of the subject. + parent_key: user.health +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.health.record_id + organization_fides_key: default_organization + tags: null + name: Health Record ID + description: Medical record identifiers belonging to a subject. + parent_key: user.health +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.health.baby_formula + organization_fides_key: default_organization + tags: null + name: Baby Formula Information + description: Information about baby formula usage or preferences. + parent_key: user.health +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.health.condition + organization_fides_key: default_organization + tags: null + name: Health Condition + description: Health condition or status information. + parent_key: user.health +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.health.maternity_clothing + organization_fides_key: default_organization + tags: null + name: Maternity Clothing + description: Information about maternity clothing purchases or preferences. + parent_key: user.health +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.health.medical_diagnosis + organization_fides_key: default_organization + tags: null + name: Medical Diagnosis + description: Medical diagnosis information. + parent_key: user.health +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.health.medications + organization_fides_key: default_organization + tags: null + name: Medications + description: Information about medications. + parent_key: user.health +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.health.prescriptions + organization_fides_key: default_organization + tags: null + name: Prescriptions + description: Prescription medication information. + parent_key: user.health +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.health.reproductive_or_sexual + organization_fides_key: default_organization + tags: null + name: Reproductive or Sexual Health + description: Reproductive or sexual health information. + parent_key: user.health +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.health.social_psychological_behavioral + organization_fides_key: default_organization + tags: null + name: Social, Psychological, or Behavioral Health + description: Social, psychological, or behavioral health information. + parent_key: user.health +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.health.symptons + organization_fides_key: default_organization + tags: null + name: Health Symptoms + description: Health symptom information. + parent_key: user.health +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.health.treatment + organization_fides_key: default_organization + tags: null + name: Medical Treatment + description: Medical treatment information. + parent_key: user.health +- version_added: 2.0.0 + version_deprecated: 3.2.0 + replaced_by: user.health.genetic + is_default: true fides_key: user.health_and_medical.genetic organization_fides_key: default_organization tags: null @@ -782,8 +1112,8 @@ data_category: description: Data about the genetic makeup provided by the subject. parent_key: user.health_and_medical - version_added: 2.0.0 - version_deprecated: null - replaced_by: null + version_deprecated: 3.2.0 + replaced_by: user.health.insurance_beneficiary_id is_default: true fides_key: user.health_and_medical.insurance_beneficiary_id organization_fides_key: default_organization @@ -792,8 +1122,8 @@ data_category: description: Health insurance beneficiary number of the subject. parent_key: user.health_and_medical - version_added: 2.0.0 - version_deprecated: null - replaced_by: null + version_deprecated: 3.2.0 + replaced_by: user.health.record_id is_default: true fides_key: user.health_and_medical.record_id organization_fides_key: default_organization @@ -802,8 +1132,8 @@ data_category: description: Medical record identifiers belonging to a subject. parent_key: user.health_and_medical - version_added: 2.0.0 - version_deprecated: null - replaced_by: null + version_deprecated: 3.2.0 + replaced_by: user.location.coarse is_default: true fides_key: user.location.imprecise organization_fides_key: default_organization @@ -811,6 +1141,16 @@ data_category: name: Imprecise Subject Location description: Imprecise location derived from sensors (more than 500M). parent_key: user.location +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.location.coarse + organization_fides_key: default_organization + tags: null + name: Coarse Subject Location + description: Coarse location derived from sensors (more than 500M). + parent_key: user.location - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -841,10 +1181,30 @@ data_category: name: Last Name description: Subject's last, or family, name. parent_key: user.name -- version_added: 2.0.0 +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.professional_information.job_title + organization_fides_key: default_organization + tags: null + name: Professional Job Title + description: Professional job title or position. + parent_key: user.professional_information +- version_added: 3.2.0 version_deprecated: null replaced_by: null is_default: true + fides_key: user.professional_information.workplace + organization_fides_key: default_organization + tags: null + name: Professional Workplace + description: Organization or workplace of employment. + parent_key: user.professional_information +- version_added: 2.0.0 + version_deprecated: 3.2.0 + replaced_by: user.unique_id + is_default: true fides_key: user.unique_id.pseudonymous organization_fides_key: default_organization tags: null @@ -852,3 +1212,24 @@ data_category: description: A pseudonymous, or probabilistic identifier generated from other subject or device data belonging to the subject. parent_key: user.unique_id +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.unique_id.deterministic + organization_fides_key: default_organization + tags: null + name: Deterministic User ID + description: A deterministic identifier that can be consistently generated from + user data. + parent_key: user.unique_id +- version_added: 3.2.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: user.unique_id.probablistic + organization_fides_key: default_organization + tags: null + name: Probabilistic User ID + description: A probabilistic identifier generated from other subject or device data. + parent_key: user.unique_id diff --git a/data_files/data_uses.csv b/data_files/data_uses.csv index 4b1477a9..c816e490 100644 --- a/data_files/data_uses.csv +++ b/data_files/data_uses.csv @@ -1,56 +1,58 @@ 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 +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." +functional.storage.privacy_preferences,True,Local Data Storage for Privacy Preferences,default_organization,functional.storage,,,2.0.0,,"Stores or accesses privacy preferences information from the device as needed when using a 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.profiling,True,Personalized Profiling,default_organization,personalize,personalize.content.profiling,,2.0.0,2.1.1,Creates profiles for the purpose of serving content. +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. diff --git a/data_files/data_uses.json b/data_files/data_uses.json index e5794089..cba47145 100644 --- a/data_files/data_uses.json +++ b/data_files/data_uses.json @@ -348,6 +348,18 @@ "description": "Improves the specific product, service, application or system.", "parent_key": "functional.service" }, + { + "version_added": "2.0.0", + "version_deprecated": null, + "replaced_by": null, + "is_default": true, + "fides_key": "functional.storage.privacy_preferences", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Local Data Storage for Privacy Preferences", + "description": "Stores or accesses privacy preferences information from the device as needed when using a product, service, application, or system", + "parent_key": "functional.storage" + }, { "version_added": "2.0.0", "version_deprecated": null, @@ -552,6 +564,18 @@ "description": "Personalizes the content of the product, service, application or system.", "parent_key": "personalize" }, + { + "version_added": "2.0.0", + "version_deprecated": "2.1.1", + "replaced_by": "personalize.content.profiling", + "is_default": true, + "fides_key": "personalize.profiling", + "organization_fides_key": "default_organization", + "tags": null, + "name": "Personalized Profiling", + "description": "Creates profiles for the purpose of serving content.", + "parent_key": "personalize" + }, { "version_added": "2.0.0", "version_deprecated": null, diff --git a/data_files/data_uses.yml b/data_files/data_uses.yml index 249e7fa4..86e0802a 100644 --- a/data_files/data_uses.yml +++ b/data_files/data_uses.yml @@ -306,6 +306,17 @@ data_use: name: Improve Service description: Improves the specific product, service, application or system. parent_key: functional.service +- version_added: 2.0.0 + version_deprecated: null + replaced_by: null + is_default: true + fides_key: functional.storage.privacy_preferences + organization_fides_key: default_organization + tags: null + name: Local Data Storage for Privacy Preferences + description: Stores or accesses privacy preferences information from the device + as needed when using a product, service, application, or system + parent_key: functional.storage - version_added: 2.0.0 version_deprecated: null replaced_by: null @@ -486,6 +497,16 @@ data_use: name: Content Personalization description: Personalizes the content of the product, service, application or system. parent_key: personalize +- version_added: 2.0.0 + version_deprecated: 2.1.1 + replaced_by: personalize.content.profiling + is_default: true + fides_key: personalize.profiling + organization_fides_key: default_organization + tags: null + name: Personalized Profiling + description: Creates profiles for the purpose of serving content. + parent_key: personalize - version_added: 2.0.0 version_deprecated: null replaced_by: null diff --git a/docs/migration/v3.2.0.md b/docs/migration/v3.2.0.md new file mode 100644 index 00000000..66250af0 --- /dev/null +++ b/docs/migration/v3.2.0.md @@ -0,0 +1,125 @@ +# Fideslang 3.2.0 Migration Guide + +## Overview + +Fideslang v3.2.0 improves the data categories and data uses taxonomies with better organization and new granular categories. **Your existing code will continue to work** - deprecated items include `replaced_by` pointers to guide you to the new ones. + +## Migration Approach + +**Simple**: Update your taxonomy references by following the `replaced_by` field in deprecated items. + +**Automated**: We're working on automated migration tools in Fides to make this process seamless. + +## What's Changed + +### Data Categories + +### Replaced Categories + +| Deprecated Category | Replaced By | +|---------------------|-------------| +| `user.biometric` | `user.biometrics` | +| `user.biometric.fingerprint` | `user.biometrics.fingerprint` | +| `user.biometric.retinal` | `user.biometrics.retinal` | +| `user.biometric.voice` | `user.biometrics.voice` | +| `user.childrens` | `user.children` | +| `user.contact.url` | `user.contact.social_url` | +| `user.health_and_medical` | `user.health` | +| `user.health_and_medical.genetic` | `user.health.genetic` | +| `user.health_and_medical.insurance_beneficiary_id` | `user.health.insurance_beneficiary_id` | +| `user.health_and_medical.record_id` | `user.health.record_id` | +| `user.location.imprecise` | `user.location.coarse` | +| `user.job_title` | `user.professional_information.job_title` | +| `user.workplace` | `user.professional_information.workplace` | +| `user.account.settings` | `user.settings` | +| `user.social` | `user.social_activity` | +| `user.authorization.biometric` | `user.authorization.biometrics` | +| `user.sensor` | `user.device.sensor` | +| `user.telemetry` | `user.device.telemetry` | + +### Merged Categories + +| Deprecated Category | Replaced By | +|---------------------|-------------| +| `user.biometric.health` | `user.biometrics` | +| `user.contact.organization` | `user.contact` | +| `user.user_sensor` | `user.device.sensor` | +| `user.unique_id.pseudonymous` | `user.unique_id` | + +### New Categories Added + +| New Category | Parent Category | +|--------------|-----------------| +| `user.biometrics` | `user` | +| `user.children` | `user` | +| `user.children.children_under_thirteen` | `user.children` | +| `user.children.thirteen_to_sixteen` | `user.children` | +| `user.contact.social_url` | `user.contact` | +| `user.contact.address.mailing_address` | `user.contact.address` | +| `user.demographic.citizenship_or_immigration_status` | `user.demographic` | +| `user.demographic.philosophical_belief` | `user.demographic` | +| `user.demographic.protected_classifications` | `user.demographic` | +| `user.demographic.union_membership` | `user.demographic` | +| `user.device.sensor` | `user.device` | +| `user.device.telemetry` | `user.device` | +| `user.health` | `user` | +| `user.health.baby_formula` | `user.health` | +| `user.health.condition` | `user.health` | +| `user.health.genetic` | `user.health` | +| `user.health.insurance_beneficiary_id` | `user.health` | +| `user.health.maternity_clothing` | `user.health` | +| `user.health.medical_diagnosis` | `user.health` | +| `user.health.medications` | `user.health` | +| `user.health.prescriptions` | `user.health` | +| `user.health.record_id` | `user.health` | +| `user.health.reproductive_or_sexual` | `user.health` | +| `user.health.social_psychological_behavioral` | `user.health` | +| `user.health.symptons` | `user.health` | +| `user.health.treatment` | `user.health` | +| `user.location.coarse` | `user.location` | +| `user.professional_information` | `user` | +| `user.professional_information.job_title` | `user.professional_information` | +| `user.professional_information.workplace` | `user.professional_information` | +| `user.settings` | `user` | +| `user.social_activity` | `user` | +| `user.authorization.biometrics` | `user.authorization` | +| `user.biometrics.fingerprint` | `user.biometrics` | +| `user.biometrics.retinal` | `user.biometrics` | +| `user.biometrics.voice` | `user.biometrics` | +| `user.unique_id.deterministic` | `user.unique_id` | +| `user.unique_id.probablistic` | `user.unique_id` | + +### Data Uses + +#### Replaced Data Uses + +*TBD - Data use taxonomy changes will be documented here* + +#### Merged Data Uses + +*TBD - Merged data use categories will be documented here* + +#### New Data Uses Added + +*TBD - New data use categories will be documented here* + +## How to Migrate + +1. **Check your current taxonomy items**: Look at any fideslang data category or data use references in your codebase +2. **Find replacements**: For deprecated items, check the `replaced_by` field to find the new item +3. **Update references**: Replace old taxonomy names with new ones in your configuration files, code, etc. + +### Example Migration +```python +# If you're using a deprecated data category: +old_category = "user.biometric.fingerprint" + +# The deprecated category will have: +# replaced_by = "user.biometrics.fingerprint" + +# So update to: +new_category = "user.biometrics.fingerprint" + +# Same pattern applies to data uses when they are updated +``` + diff --git a/mkdocs/docs/csv/data_categories.csv b/mkdocs/docs/csv/data_categories.csv index b7c5657b..5c0f9712 100644 --- a/mkdocs/docs/csv/data_categories.csv +++ b/mkdocs/docs/csv/data_categories.csv @@ -7,51 +7,65 @@ user,True,User Data,default_organization,data_category,,,2.0.0,,"Data related to user.account,True,Account Information,default_organization,user,,,2.0.0,,Account creation or registration information. user.authorization,True,Authorization Information,default_organization,user,,,2.0.0,,Scope of permissions and access to a system. user.behavior,True,Observed Behavior,default_organization,user,,,2.0.0,,Behavioral data about the subject. -user.biometric,True,Biometric Data,default_organization,user,,,2.0.0,,Encoded characteristics provided by a user. -user.childrens,True,Children's Data,default_organization,user,,,2.0.0,,Data relating to children. +user.biometric,True,Biometric Data,default_organization,user,user.biometrics,,2.0.0,3.2.0,Encoded characteristics provided by a user. +user.biometrics,True,Biometrics,default_organization,user,,,3.2.0,,Encoded characteristics provided by a user. +user.childrens,True,Children's Data,default_organization,user,user.children,,2.0.0,3.2.0,Data relating to children. +user.children,True,Children,default_organization,user,,,3.2.0,,Data relating to children. user.contact,True,Contact Data,default_organization,user,,,2.0.0,,Contact data collected about a user. user.content,True,User Content,default_organization,user,,,2.0.0,,"Content related to, or created by the subject." user.demographic,True,Demographic Data,default_organization,user,,,2.0.0,,Demographic data about a user. user.location,True,Location Data,default_organization,user,,,2.0.0,,Records of the location of a user. user.device,True,Device Data,default_organization,user,,,2.0.0,,"Data related to a user's device, configuration and setting." user.payment,True,Payment Data,default_organization,user,,,2.0.0,,Payment data related to user. -user.social,True,Social Data,default_organization,user,,,2.0.0,,Social activity and interaction data. +user.social,True,Social Data,default_organization,user,user.social_activity,,2.0.0,3.2.0,Social activity and interaction data. +user.social_activity,True,Social Activity Data,default_organization,user,,,3.2.0,,Social activity and interaction data. +user.settings,True,User Settings,default_organization,user,,,3.2.0,,User preferences and settings data. user.unique_id,True,Unique ID,default_organization,user,,,2.0.0,,Unique identifier for a user assigned through system use. -user.telemetry,True,Telemetry Data,default_organization,user,,,2.0.0,,User identifiable measurement data from system sensors and monitoring. -user.user_sensor,True,User Sensor Data,default_organization,user,,,2.0.0,,Measurement data about a user's environment through system use. -user.workplace,True,Workplace,default_organization,user,,,2.0.0,,Organization of employment. -user.sensor,True,Sensor Data,default_organization,user,,,2.0.0,,Measurement data from sensors and monitoring systems. +user.telemetry,True,Telemetry Data,default_organization,user,user.device.telemetry,,2.0.0,3.2.0,User identifiable measurement data from system sensors and monitoring. +user.user_sensor,True,User Sensor Data,default_organization,user,user.device.sensor,,2.0.0,3.2.0,Measurement data about a user's environment through system use. +user.sensor,True,Sensor Data,default_organization,user,user.device.sensor,,2.0.0,3.2.0,Measurement data from sensors and monitoring systems. user.financial,True,Financial Data,default_organization,user,,,2.0.0,,Payment data and financial history. user.government_id,True,Government ID,default_organization,user,,,2.0.0,,State provided identification data. -user.health_and_medical,True,Health and Medical Data,default_organization,user,,,2.0.0,,Health records or individual's personal medical information. +user.health_and_medical,True,Health and Medical Data,default_organization,user,user.health,,2.0.0,3.2.0,Health records or individual's personal medical information. +user.health,True,Health Data,default_organization,user,,,3.2.0,,Health records or individual's personal medical information. user.name,True,Name,default_organization,user,,,2.0.0,,User's real name. user.criminal_history,True,Criminal History,default_organization,user,,,2.0.0,,Criminal records or information about the data subject. user.privacy_preferences,True,Privacy Preferences,default_organization,user,,,2.0.0,,Privacy preferences or settings set by the subject. -user.job_title,True,Job Title,default_organization,user,,,2.0.0,,Professional data. -user.account.settings,True,Account Settings,default_organization,user.account,,,2.0.0,,Account preferences and settings. +user.job_title,True,Job Title,default_organization,user,user.professional_information.job_title,,2.0.0,3.2.0,Professional data. +user.workplace,True,Workplace,default_organization,user,user.professional_information.workplace,,2.0.0,3.2.0,Organization of employment. +user.professional_information,True,Professional Information,default_organization,user,,,3.2.0,,Professional and employment-related information. +user.account.settings,True,Account Settings,default_organization,user.account,user.settings,,2.0.0,3.2.0,Account preferences and settings. user.account.username,True,Account Username,default_organization,user.account,,,2.0.0,,Username associated with account. user.authorization.credentials,True,Account password,default_organization,user.authorization,,,2.0.0,,Authentication credentials to a system. -user.authorization.biometric,True,Biometric Credentials,default_organization,user.authorization,,,2.0.0,,Credentials for system authentication. +user.authorization.biometric,True,Biometric Credentials,default_organization,user.authorization,user.authorization.biometrics,,2.0.0,3.2.0,Credentials for system authentication. +user.authorization.biometrics,True,Biometric Authentication,default_organization,user.authorization,,,3.2.0,,Credentials for system authentication. user.authorization.password,True,Password,default_organization,user.authorization,,,2.0.0,,Password for system authentication. user.behavior.browsing_history,True,Browsing History,default_organization,user.behavior,,,2.0.0,,Content browsing history of a user. user.behavior.media_consumption,True,Media Consumption,default_organization,user.behavior,,,2.0.0,,Content consumption history of the subject. user.behavior.purchase_history,True,Purchase History,default_organization,user.behavior,,,2.0.0,,Purchase history of the subject. user.behavior.search_history,True,Search History,default_organization,user.behavior,,,2.0.0,,Search history of the subject. -user.biometric.fingerprint,True,Fingerprint,default_organization,user.biometric,,,2.0.0,,Fingerprint encoded data about a subject. -user.biometric.retinal,True,Retina Scan,default_organization,user.biometric,,,2.0.0,,Retinal data about a subject. -user.biometric.voice,True,Voice Recording,default_organization,user.biometric,,,2.0.0,,Voice encoded data about a subject. -user.biometric.health,True,Biometric Health Data,default_organization,user.biometric,,,2.0.0,,Encoded characteristic collected about a user. +user.biometric.fingerprint,True,Fingerprint,default_organization,user.biometric,user.biometrics.fingerprint,,2.0.0,3.2.0,Fingerprint encoded data about a subject. +user.biometric.retinal,True,Retina Scan,default_organization,user.biometric,user.biometrics.retinal,,2.0.0,3.2.0,Retinal data about a subject. +user.biometric.voice,True,Voice Recording,default_organization,user.biometric,user.biometrics.voice,,2.0.0,3.2.0,Voice encoded data about a subject. +user.biometric.health,True,Biometric Health Data,default_organization,user.biometric,user.biometrics,,2.0.0,3.2.0,Encoded characteristic collected about a user. +user.biometrics.fingerprint,True,Fingerprint Data,default_organization,user.biometrics,,,3.2.0,,Fingerprint encoded data about a subject. +user.biometrics.retinal,True,Retinal Data,default_organization,user.biometrics,,,3.2.0,,Retinal data about a subject. +user.biometrics.voice,True,Voice Data,default_organization,user.biometrics,,,3.2.0,,Voice encoded data about a subject. +user.children.children_under_thirteen,True,Children Under Thirteen,default_organization,user.children,,,3.2.0,,Data relating to children under the age of thirteen. +user.children.thirteen_to_sixteen,True,Children Thirteen to Sixteen,default_organization,user.children,,,3.2.0,,Data relating to children between the ages of thirteen and sixteen. user.contact.address,True,User Contact Address,default_organization,user.contact,,,2.0.0,,Contact address data collected about a user. user.contact.email,True,User Contact Email,default_organization,user.contact,,,2.0.0,,User's contact email address. user.contact.phone_number,True,User Contact Phone Number,default_organization,user.contact,,,2.0.0,,User's phone number. -user.contact.url,True,User Website,default_organization,user.contact,,,2.0.0,,Subject's websites or links to social and personal profiles. +user.contact.url,True,User Website,default_organization,user.contact,user.contact.social_url,,2.0.0,3.2.0,Subject's websites or links to social and personal profiles. +user.contact.social_url,True,Social Media URL,default_organization,user.contact,,,3.2.0,,Subject's websites or links to social and personal profiles. user.contact.fax_number,True,Fax Number,default_organization,user.contact,,,2.0.0,,Data Subject's fax number. -user.contact.organization,True,Organization,default_organization,user.contact,,,2.0.0,,Data Subject's Organization. +user.contact.organization,True,Organization,default_organization,user.contact,user.contact,,2.0.0,3.2.0,Data Subject's Organization. user.contact.address.city,True,User Contact City,default_organization,user.contact.address,,,2.0.0,,User's city level address data. user.contact.address.country,True,User Contact Country,default_organization,user.contact.address,,,2.0.0,,User's country level address data. user.contact.address.postal_code,True,User Contact Postal Code,default_organization,user.contact.address,,,2.0.0,,User's postal code. user.contact.address.state,True,User Contact State,default_organization,user.contact.address,,,2.0.0,,User's state level address data. user.contact.address.street,True,User Contact Street,default_organization,user.contact.address,,,2.0.0,,User's street level address data. +user.contact.address.mailing_address,True,Mailing Address,default_organization,user.contact.address,,,3.2.0,,User's mailing address information. user.content.private,True,Private Content,default_organization,user.content,,,2.0.0,,"Private content related to, or created by the subject, not publicly available." user.content.public,True,Public Content,default_organization,user.content,,,2.0.0,,"Publicly shared Content related to, or created by the subject." user.content.self_image,True,User Image,default_organization,user.content,,,2.0.0,,Photograph or image in which subject is whole or partially recognized. @@ -65,10 +79,16 @@ user.demographic.profile,True,User Profile Data,default_organization,user.demogr user.demographic.race_ethnicity,True,Race,default_organization,user.demographic,,,2.0.0,,Race or ethnicity of data subject. user.demographic.religious_belief,True,Religion,default_organization,user.demographic,,,2.0.0,,Religion or religious beliefs of the data subject. user.demographic.sexual_orientation,True,Sexual Orientation,default_organization,user.demographic,,,2.0.0,,Sexual orientation of data subject. +user.demographic.citizenship_or_immigration_status,True,Citizenship or Immigration Status,default_organization,user.demographic,,,3.2.0,,Citizenship or immigration status of data subject. +user.demographic.philosophical_belief,True,Philosophical Belief,default_organization,user.demographic,,,3.2.0,,Philosophical beliefs or worldview of data subject. +user.demographic.protected_classifications,True,Protected Classifications,default_organization,user.demographic,,,3.2.0,,Protected classifications or sensitive attributes of data subject. +user.demographic.union_membership,True,Union Membership,default_organization,user.demographic,,,3.2.0,,Union membership status of data subject. user.device.cookie,True,Device Cookie,default_organization,user.device,,,2.0.0,,"Data related to a subject, stored within a cookie." user.device.cookie_id,True,Cookie ID,default_organization,user.device,,,2.0.0,,Cookie unique identification number. user.device.device_id,True,Device ID,default_organization,user.device,,,2.0.0,,Device unique identification number. user.device.ip_address,True,IP Address,default_organization,user.device,,,2.0.0,,Unique identifier related to device connection. +user.device.sensor,True,Device Sensor Data,default_organization,user.device,,,3.2.0,,Measurement data from device sensors and monitoring systems. +user.device.telemetry,True,Device Telemetry,default_organization,user.device,,,3.2.0,,User identifiable measurement data from device sensors and monitoring. user.financial.bank_account,True,Bank Account Information,default_organization,user.financial,,,2.0.0,,Bank account information belonging to the subject. user.financial.credit_card,True,Credit Card Information,default_organization,user.financial,,,2.0.0,,Credit card information belonging to the subject. user.government_id.birth_certificate,True,Birth Certificate,default_organization,user.government_id,,,2.0.0,,State issued certificate of birth. @@ -77,11 +97,29 @@ user.government_id.immigration,True,Immigration ID,default_organization,user.gov user.government_id.national_identification_number,True,National Identification Number,default_organization,user.government_id,,,2.0.0,,State issued personal identification number. user.government_id.passport_number,True,Passport Number,default_organization,user.government_id,,,2.0.0,,State issued passport data. user.government_id.vehicle_registration,True,Vehicle Registration,default_organization,user.government_id,,,2.0.0,,State issued license plate or vehicle registration data. -user.health_and_medical.genetic,True,User's Genetic Data,default_organization,user.health_and_medical,,,2.0.0,,Data about the genetic makeup provided by the subject. -user.health_and_medical.insurance_beneficiary_id,True,Medical Insurance ID,default_organization,user.health_and_medical,,,2.0.0,,Health insurance beneficiary number of the subject. -user.health_and_medical.record_id,True,Medical Record ID,default_organization,user.health_and_medical,,,2.0.0,,Medical record identifiers belonging to a subject. -user.location.imprecise,True,Imprecise Subject Location,default_organization,user.location,,,2.0.0,,Imprecise location derived from sensors (more than 500M). +user.health.genetic,True,Genetic Data,default_organization,user.health,,,3.2.0,,Data about the genetic makeup provided by the subject. +user.health.insurance_beneficiary_id,True,Health Insurance ID,default_organization,user.health,,,3.2.0,,Health insurance beneficiary number of the subject. +user.health.record_id,True,Health Record ID,default_organization,user.health,,,3.2.0,,Medical record identifiers belonging to a subject. +user.health.baby_formula,True,Baby Formula Information,default_organization,user.health,,,3.2.0,,Information about baby formula usage or preferences. +user.health.condition,True,Health Condition,default_organization,user.health,,,3.2.0,,Health condition or status information. +user.health.maternity_clothing,True,Maternity Clothing,default_organization,user.health,,,3.2.0,,Information about maternity clothing purchases or preferences. +user.health.medical_diagnosis,True,Medical Diagnosis,default_organization,user.health,,,3.2.0,,Medical diagnosis information. +user.health.medications,True,Medications,default_organization,user.health,,,3.2.0,,Information about medications. +user.health.prescriptions,True,Prescriptions,default_organization,user.health,,,3.2.0,,Prescription medication information. +user.health.reproductive_or_sexual,True,Reproductive or Sexual Health,default_organization,user.health,,,3.2.0,,Reproductive or sexual health information. +user.health.social_psychological_behavioral,True,"Social, Psychological, or Behavioral Health",default_organization,user.health,,,3.2.0,,"Social, psychological, or behavioral health information." +user.health.symptons,True,Health Symptoms,default_organization,user.health,,,3.2.0,,Health symptom information. +user.health.treatment,True,Medical Treatment,default_organization,user.health,,,3.2.0,,Medical treatment information. +user.health_and_medical.genetic,True,User's Genetic Data,default_organization,user.health_and_medical,user.health.genetic,,2.0.0,3.2.0,Data about the genetic makeup provided by the subject. +user.health_and_medical.insurance_beneficiary_id,True,Medical Insurance ID,default_organization,user.health_and_medical,user.health.insurance_beneficiary_id,,2.0.0,3.2.0,Health insurance beneficiary number of the subject. +user.health_and_medical.record_id,True,Medical Record ID,default_organization,user.health_and_medical,user.health.record_id,,2.0.0,3.2.0,Medical record identifiers belonging to a subject. +user.location.imprecise,True,Imprecise Subject Location,default_organization,user.location,user.location.coarse,,2.0.0,3.2.0,Imprecise location derived from sensors (more than 500M). +user.location.coarse,True,Coarse Subject Location,default_organization,user.location,,,3.2.0,,Coarse location derived from sensors (more than 500M). user.location.precise,True,Precise Subject Location,default_organization,user.location,,,2.0.0,,Precise location derived from sensors (less than 500M). user.name.first,True,First Name,default_organization,user.name,,,2.0.0,,Subject's first name. user.name.last,True,Last Name,default_organization,user.name,,,2.0.0,,"Subject's last, or family, name." -user.unique_id.pseudonymous,True,Pseudonymous User ID,default_organization,user.unique_id,,,2.0.0,,"A pseudonymous, or probabilistic identifier generated from other subject or device data belonging to the subject." +user.professional_information.job_title,True,Professional Job Title,default_organization,user.professional_information,,,3.2.0,,Professional job title or position. +user.professional_information.workplace,True,Professional Workplace,default_organization,user.professional_information,,,3.2.0,,Organization or workplace of employment. +user.unique_id.pseudonymous,True,Pseudonymous User ID,default_organization,user.unique_id,user.unique_id,,2.0.0,3.2.0,"A pseudonymous, or probabilistic identifier generated from other subject or device data belonging to the subject." +user.unique_id.deterministic,True,Deterministic User ID,default_organization,user.unique_id,,,3.2.0,,A deterministic identifier that can be consistently generated from user data. +user.unique_id.probablistic,True,Probabilistic User ID,default_organization,user.unique_id,,,3.2.0,,A probabilistic identifier generated from other subject or device data. diff --git a/mkdocs/docs/csv/data_uses.csv b/mkdocs/docs/csv/data_uses.csv index 4b1477a9..c816e490 100644 --- a/mkdocs/docs/csv/data_uses.csv +++ b/mkdocs/docs/csv/data_uses.csv @@ -1,56 +1,58 @@ 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 +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." +functional.storage.privacy_preferences,True,Local Data Storage for Privacy Preferences,default_organization,functional.storage,,,2.0.0,,"Stores or accesses privacy preferences information from the device as needed when using a 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.profiling,True,Personalized Profiling,default_organization,personalize,personalize.content.profiling,,2.0.0,2.1.1,Creates profiles for the purpose of serving content. +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. diff --git a/src/fideslang/default_taxonomy/data_categories.py b/src/fideslang/default_taxonomy/data_categories.py index 8cc6ad93..eb3a8eda 100644 --- a/src/fideslang/default_taxonomy/data_categories.py +++ b/src/fideslang/default_taxonomy/data_categories.py @@ -25,6 +25,8 @@ name="Account Settings", description="Account preferences and settings.", parent_key="user.account", + version_deprecated="3.2.0", + replaced_by="user.settings", ), default_category_factory( fides_key="user.account.username", @@ -52,6 +54,15 @@ name="Biometric Credentials", description="Credentials for system authentication.", parent_key="user.authorization", + version_deprecated="3.2.0", + replaced_by="user.authorization.biometrics", + ), + default_category_factory( + fides_key="user.authorization.biometrics", + name="Biometric Authentication", + description="Credentials for system authentication.", + parent_key="user.authorization", + version_added="3.2.0", ), default_category_factory( fides_key="user.authorization.password", @@ -100,30 +111,69 @@ name="Biometric Data", description="Encoded characteristics provided by a user.", parent_key="user", + version_deprecated="3.2.0", + replaced_by="user.biometrics", + ), + default_category_factory( + fides_key="user.biometrics", + name="Biometrics", + description="Encoded characteristics provided by a user.", + parent_key="user", + version_added="3.2.0", ), default_category_factory( fides_key="user.biometric.fingerprint", name="Fingerprint", description="Fingerprint encoded data about a subject.", parent_key="user.biometric", + version_deprecated="3.2.0", + replaced_by="user.biometrics.fingerprint", + ), + default_category_factory( + fides_key="user.biometrics.fingerprint", + name="Fingerprint Data", + description="Fingerprint encoded data about a subject.", + parent_key="user.biometrics", + version_added="3.2.0", ), default_category_factory( fides_key="user.biometric.retinal", name="Retina Scan", description="Retinal data about a subject.", parent_key="user.biometric", + version_deprecated="3.2.0", + replaced_by="user.biometrics.retinal", + ), + default_category_factory( + fides_key="user.biometrics.retinal", + name="Retinal Data", + description="Retinal data about a subject.", + parent_key="user.biometrics", + version_added="3.2.0", ), default_category_factory( fides_key="user.biometric.voice", name="Voice Recording", description="Voice encoded data about a subject.", parent_key="user.biometric", + version_deprecated="3.2.0", + replaced_by="user.biometrics.voice", + ), + default_category_factory( + fides_key="user.biometrics.voice", + name="Voice Data", + description="Voice encoded data about a subject.", + parent_key="user.biometrics", + version_added="3.2.0", ), + # MERGED: user.biometric.health merged into user.biometrics default_category_factory( fides_key="user.biometric.health", name="Biometric Health Data", description="Encoded characteristic collected about a user.", parent_key="user.biometric", + version_deprecated="3.2.0", + replaced_by="user.biometrics", ), ################## # user.childrens # @@ -133,6 +183,29 @@ name="Children's Data", description="Data relating to children.", parent_key="user", + version_deprecated="3.2.0", + replaced_by="user.children", + ), + default_category_factory( + fides_key="user.children", + name="Children", + description="Data relating to children.", + parent_key="user", + version_added="3.2.0", + ), + default_category_factory( + fides_key="user.children.children_under_thirteen", + name="Children Under Thirteen", + description="Data relating to children under the age of thirteen.", + parent_key="user.children", + version_added="3.2.0", + ), + default_category_factory( + fides_key="user.children.thirteen_to_sixteen", + name="Children Thirteen to Sixteen", + description="Data relating to children between the ages of thirteen and sixteen.", + parent_key="user.children", + version_added="3.2.0", ), ################ # user.contact # @@ -178,6 +251,15 @@ name="User Website", description="Subject's websites or links to social and personal profiles.", parent_key="user.contact", + version_deprecated="3.2.0", + replaced_by="user.contact.social_url", + ), + default_category_factory( + fides_key="user.contact.social_url", + name="Social Media URL", + description="Subject's websites or links to social and personal profiles.", + parent_key="user.contact", + version_added="3.2.0", ), default_category_factory( fides_key="user.contact.fax_number", @@ -203,11 +285,21 @@ description="User's street level address data.", parent_key="user.contact.address", ), + default_category_factory( + fides_key="user.contact.address.mailing_address", + name="Mailing Address", + description="User's mailing address information.", + parent_key="user.contact.address", + version_added="3.2.0", + ), + # MERGED: user.contact.organization merged into user.contact default_category_factory( fides_key="user.contact.organization", name="Organization", description="Data Subject's Organization.", parent_key="user.contact", + version_deprecated="3.2.0", + replaced_by="user.contact", ), ################ # user.content # @@ -305,6 +397,34 @@ description="Sexual orientation of data subject.", parent_key="user.demographic", ), + default_category_factory( + fides_key="user.demographic.citizenship_or_immigration_status", + name="Citizenship or Immigration Status", + description="Citizenship or immigration status of data subject.", + parent_key="user.demographic", + version_added="3.2.0", + ), + default_category_factory( + fides_key="user.demographic.philosophical_belief", + name="Philosophical Belief", + description="Philosophical beliefs or worldview of data subject.", + parent_key="user.demographic", + version_added="3.2.0", + ), + default_category_factory( + fides_key="user.demographic.protected_classifications", + name="Protected Classifications", + description="Protected classifications or sensitive attributes of data subject.", + parent_key="user.demographic", + version_added="3.2.0", + ), + default_category_factory( + fides_key="user.demographic.union_membership", + name="Union Membership", + description="Union membership status of data subject.", + parent_key="user.demographic", + version_added="3.2.0", + ), ################# # user.location # ################# @@ -319,6 +439,15 @@ name="Imprecise Subject Location", description="Imprecise location derived from sensors (more than 500M).", parent_key="user.location", + version_deprecated="3.2.0", + replaced_by="user.location.coarse", + ), + default_category_factory( + fides_key="user.location.coarse", + name="Coarse Subject Location", + description="Coarse location derived from sensors (more than 500M).", + parent_key="user.location", + version_added="3.2.0", ), default_category_factory( fides_key="user.location.precise", @@ -359,6 +488,20 @@ description="Unique identifier related to device connection.", parent_key="user.device", ), + default_category_factory( + fides_key="user.device.sensor", + name="Device Sensor Data", + description="Measurement data from device sensors and monitoring systems.", + parent_key="user.device", + version_added="3.2.0", + ), + default_category_factory( + fides_key="user.device.telemetry", + name="Device Telemetry", + description="User identifiable measurement data from device sensors and monitoring.", + parent_key="user.device", + version_added="3.2.0", + ), default_category_factory( fides_key="user.payment", name="Payment Data", @@ -370,6 +513,22 @@ name="Social Data", description="Social activity and interaction data.", parent_key="user", + version_deprecated="3.2.0", + replaced_by="user.social_activity", + ), + default_category_factory( + fides_key="user.social_activity", + name="Social Activity Data", + description="Social activity and interaction data.", + parent_key="user", + version_added="3.2.0", + ), + default_category_factory( + fides_key="user.settings", + name="User Settings", + description="User preferences and settings data.", + parent_key="user", + version_added="3.2.0", ), default_category_factory( fides_key="user.unique_id", @@ -377,35 +536,53 @@ description="Unique identifier for a user assigned through system use.", parent_key="user", ), + # MERGED: user.unique_id.pseudonymous merged into user.unique_id default_category_factory( fides_key="user.unique_id.pseudonymous", name="Pseudonymous User ID", description="A pseudonymous, or probabilistic identifier generated from other subject or device data belonging to the subject.", parent_key="user.unique_id", + version_deprecated="3.2.0", + replaced_by="user.unique_id", + ), + default_category_factory( + fides_key="user.unique_id.deterministic", + name="Deterministic User ID", + description="A deterministic identifier that can be consistently generated from user data.", + parent_key="user.unique_id", + version_added="3.2.0", + ), + default_category_factory( + fides_key="user.unique_id.probablistic", + name="Probabilistic User ID", + description="A probabilistic identifier generated from other subject or device data.", + parent_key="user.unique_id", + version_added="3.2.0", ), default_category_factory( fides_key="user.telemetry", name="Telemetry Data", description="User identifiable measurement data from system sensors and monitoring.", parent_key="user", + version_deprecated="3.2.0", + replaced_by="user.device.telemetry", ), + # MERGED: user.user_sensor merged into user.device.sensor default_category_factory( fides_key="user.user_sensor", name="User Sensor Data", description="Measurement data about a user's environment through system use.", parent_key="user", - ), - default_category_factory( - fides_key="user.workplace", - name="Workplace", - description="Organization of employment.", - parent_key="user", + version_deprecated="3.2.0", + replaced_by="user.device.sensor", ), default_category_factory( fides_key="user.sensor", name="Sensor Data", description="Measurement data from sensors and monitoring systems.", parent_key="user", + version_deprecated="3.2.0", + replaced_by="user.device.sensor", ), ################## # user.financial # @@ -481,24 +658,134 @@ name="Health and Medical Data", description="Health records or individual's personal medical information.", parent_key="user", + version_deprecated="3.2.0", + replaced_by="user.health", + ), + ############## + # user.health # + ############## + default_category_factory( + fides_key="user.health", + name="Health Data", + description="Health records or individual's personal medical information.", + parent_key="user", + version_added="3.2.0", ), default_category_factory( fides_key="user.health_and_medical.genetic", name="User's Genetic Data", description="Data about the genetic makeup provided by the subject.", parent_key="user.health_and_medical", + version_deprecated="3.2.0", + replaced_by="user.health.genetic", + ), + default_category_factory( + fides_key="user.health.genetic", + name="Genetic Data", + description="Data about the genetic makeup provided by the subject.", + parent_key="user.health", + version_added="3.2.0", ), default_category_factory( fides_key="user.health_and_medical.insurance_beneficiary_id", name="Medical Insurance ID", description="Health insurance beneficiary number of the subject.", parent_key="user.health_and_medical", + version_deprecated="3.2.0", + replaced_by="user.health.insurance_beneficiary_id", + ), + default_category_factory( + fides_key="user.health.insurance_beneficiary_id", + name="Health Insurance ID", + description="Health insurance beneficiary number of the subject.", + parent_key="user.health", + version_added="3.2.0", ), default_category_factory( fides_key="user.health_and_medical.record_id", name="Medical Record ID", description="Medical record identifiers belonging to a subject.", parent_key="user.health_and_medical", + version_deprecated="3.2.0", + replaced_by="user.health.record_id", + ), + default_category_factory( + fides_key="user.health.record_id", + name="Health Record ID", + description="Medical record identifiers belonging to a subject.", + parent_key="user.health", + version_added="3.2.0", + ), + # New health categories added in 3.2.0 + default_category_factory( + fides_key="user.health.baby_formula", + name="Baby Formula Information", + description="Information about baby formula usage or preferences.", + parent_key="user.health", + version_added="3.2.0", + ), + default_category_factory( + fides_key="user.health.condition", + name="Health Condition", + description="Health condition or status information.", + parent_key="user.health", + version_added="3.2.0", + ), + default_category_factory( + fides_key="user.health.maternity_clothing", + name="Maternity Clothing", + description="Information about maternity clothing purchases or preferences.", + parent_key="user.health", + version_added="3.2.0", + ), + default_category_factory( + fides_key="user.health.medical_diagnosis", + name="Medical Diagnosis", + description="Medical diagnosis information.", + parent_key="user.health", + version_added="3.2.0", + ), + default_category_factory( + fides_key="user.health.medications", + name="Medications", + description="Information about medications.", + parent_key="user.health", + version_added="3.2.0", + ), + default_category_factory( + fides_key="user.health.prescriptions", + name="Prescriptions", + description="Prescription medication information.", + parent_key="user.health", + version_added="3.2.0", + ), + default_category_factory( + fides_key="user.health.reproductive_or_sexual", + name="Reproductive or Sexual Health", + description="Reproductive or sexual health information.", + parent_key="user.health", + version_added="3.2.0", + ), + default_category_factory( + fides_key="user.health.social_psychological_behavioral", + name="Social, Psychological, or Behavioral Health", + description="Social, psychological, or behavioral health information.", + parent_key="user.health", + version_added="3.2.0", + ), + default_category_factory( + fides_key="user.health.symptons", + name="Health Symptoms", + description="Health symptom information.", + parent_key="user.health", + version_added="3.2.0", + ), + default_category_factory( + fides_key="user.health.treatment", + name="Medical Treatment", + description="Medical treatment information.", + parent_key="user.health", + version_added="3.2.0", ), ############# # user.name # @@ -541,6 +828,40 @@ name="Job Title", description="Professional data.", parent_key="user", + version_deprecated="3.2.0", + replaced_by="user.professional_information.job_title", + ), + default_category_factory( + fides_key="user.workplace", + name="Workplace", + description="Organization of employment.", + parent_key="user", + version_deprecated="3.2.0", + replaced_by="user.professional_information.workplace", + ), + ################################## + # user.professional_information # + ################################## + default_category_factory( + fides_key="user.professional_information", + name="Professional Information", + description="Professional and employment-related information.", + parent_key="user", + version_added="3.2.0", + ), + default_category_factory( + fides_key="user.professional_information.job_title", + name="Professional Job Title", + description="Professional job title or position.", + parent_key="user.professional_information", + version_added="3.2.0", + ), + default_category_factory( + fides_key="user.professional_information.workplace", + name="Professional Workplace", + description="Organization or workplace of employment.", + parent_key="user.professional_information", + version_added="3.2.0", ), default_category_factory( fides_key="system", diff --git a/tests/fideslang/test_default_taxonomy.py b/tests/fideslang/test_default_taxonomy.py index d4098f69..7334405a 100644 --- a/tests/fideslang/test_default_taxonomy.py +++ b/tests/fideslang/test_default_taxonomy.py @@ -5,8 +5,16 @@ from fideslang.default_taxonomy import DEFAULT_TAXONOMY +# Updated counts for v3.2.0 - includes both active and deprecated categories taxonomy_counts = { - "data_category": 85, + "data_category": 123, # Updated for v3.2.0 (38 new + existing + deprecated) + "data_use": 56, + "data_subject": 15, +} + +# Active (non-deprecated) category counts for v3.2.0 +active_taxonomy_counts = { + "data_category": 101, # Only non-deprecated categories "data_use": 56, "data_subject": 15, } @@ -35,13 +43,40 @@ def test_key_uniqueness(self, data_type: str) -> None: assert not duplicate_keys @pytest.mark.parametrize("data_type", taxonomy_counts.keys()) - def test_name_uniqueness(self, data_type: str) -> None: - keys = [x.name for x in getattr(DEFAULT_TAXONOMY, data_type)] - duplicate_keys = { - key: value for key, value in Counter(keys).items() if value > 1 + def test_name_uniqueness_active_only(self, data_type: str) -> None: + """Test name uniqueness for active (non-deprecated) categories only.""" + # Only check active categories to avoid migration-period duplicate names + items = getattr(DEFAULT_TAXONOMY, data_type) + active_items = [x for x in items if not x.version_deprecated] + names = [x.name for x in active_items] + duplicate_names = { + name: count for name, count in Counter(names).items() if count > 1 } - print(duplicate_keys) - assert not duplicate_keys + print(f"Duplicate names in active {data_type}:", duplicate_names) + assert not duplicate_names, f"Found duplicate names in active {data_type}: {duplicate_names}" + + @pytest.mark.parametrize("data_type", ["data_category"]) + def test_migration_name_duplicates_expected(self, data_type: str) -> None: + """Test that migration creates expected name duplicates between old and new versions.""" + items = getattr(DEFAULT_TAXONOMY, data_type) + all_names = [x.name for x in items] + duplicate_names = { + name: count for name, count in Counter(all_names).items() if count > 1 + } + + # During v3.2.0 migration, we expect some duplicates + if data_type == "data_category": + # These are expected duplicates during migration + expected_duplicates = { + "Biometric Credentials", "Fingerprint", "Retina Scan", "Voice Recording", + "User's Genetic Data", "Medical Insurance ID", "Medical Record ID", + "Workplace", "Children's Data", "Biometric Data", "Job Title" + } + actual_duplicates = set(duplicate_names.keys()) + + # All duplicates should be expected migration duplicates + unexpected = actual_duplicates - expected_duplicates + assert not unexpected, f"Unexpected duplicate names (not part of planned migration): {unexpected}" @pytest.mark.parametrize("data_type", taxonomy_counts.keys()) def test_description_uniqueness(self, data_type: str) -> None: @@ -65,3 +100,133 @@ def test_parent_keys_exist(self, data_type: str) -> None: ) diff = parent_keys.difference(fides_keys) assert not diff + + +class TestTaxonomyMigrationV32: + """Tests specific to v3.2.0 taxonomy migration.""" + + def test_v32_new_categories_exist(self) -> None: + """Test that all expected new v3.2.0 categories exist.""" + expected_new_categories = { + "user.biometrics", + "user.children", + "user.children.children_under_thirteen", + "user.children.thirteen_to_sixteen", + "user.health", + "user.health.baby_formula", + "user.health.condition", + "user.health.medical_diagnosis", + "user.health.medications", + "user.health.prescriptions", + "user.health.reproductive_or_sexual", + "user.health.social_psychological_behavioral", + "user.health.symptons", + "user.health.treatment", + "user.health.maternity_clothing", + "user.professional_information", + "user.professional_information.job_title", + "user.professional_information.workplace", + "user.settings", + "user.social_activity", + "user.authorization.biometrics", + "user.biometrics.fingerprint", + "user.biometrics.retinal", + "user.biometrics.voice", + "user.contact.social_url", + "user.contact.address.mailing_address", + "user.demographic.citizenship_or_immigration_status", + "user.demographic.philosophical_belief", + "user.demographic.protected_classifications", + "user.demographic.union_membership", + "user.device.sensor", + "user.device.telemetry", + "user.health.genetic", + "user.health.insurance_beneficiary_id", + "user.health.record_id", + "user.location.coarse", + "user.unique_id.deterministic", + "user.unique_id.probablistic", + } + + actual_keys = {cat.fides_key for cat in DEFAULT_TAXONOMY.data_category} + missing_categories = expected_new_categories - actual_keys + assert not missing_categories, f"Missing expected v3.2.0 categories: {missing_categories}" + + # Verify they all have version_added = "3.2.0" + v32_categories = { + cat.fides_key: cat for cat in DEFAULT_TAXONOMY.data_category + if cat.fides_key in expected_new_categories + } + + incorrect_versions = { + key: cat.version_added for key, cat in v32_categories.items() + if cat.version_added != "3.2.0" + } + assert not incorrect_versions, f"Categories with incorrect version_added: {incorrect_versions}" + + def test_v32_deprecated_categories_have_replacements(self) -> None: + """Test that all deprecated v3.2.0 categories have proper replaced_by pointers.""" + expected_replacements = { + "user.biometric": "user.biometrics", + "user.biometric.fingerprint": "user.biometrics.fingerprint", + "user.biometric.retinal": "user.biometrics.retinal", + "user.biometric.voice": "user.biometrics.voice", + "user.childrens": "user.children", + "user.contact.url": "user.contact.social_url", + "user.health_and_medical": "user.health", + "user.health_and_medical.genetic": "user.health.genetic", + "user.health_and_medical.insurance_beneficiary_id": "user.health.insurance_beneficiary_id", + "user.health_and_medical.record_id": "user.health.record_id", + "user.location.imprecise": "user.location.coarse", + "user.job_title": "user.professional_information.job_title", + "user.workplace": "user.professional_information.workplace", + "user.account.settings": "user.settings", + "user.social": "user.social_activity", + "user.authorization.biometric": "user.authorization.biometrics", + "user.sensor": "user.device.sensor", + "user.telemetry": "user.device.telemetry", + # Merged categories + "user.biometric.health": "user.biometrics", + "user.contact.organization": "user.contact", + "user.user_sensor": "user.device.sensor", + "user.unique_id.pseudonymous": "user.unique_id", + } + + category_map = {cat.fides_key: cat for cat in DEFAULT_TAXONOMY.data_category} + + for old_key, expected_replacement in expected_replacements.items(): + assert old_key in category_map, f"Expected deprecated category {old_key} not found" + cat = category_map[old_key] + assert cat.version_deprecated == "3.2.0", f"Category {old_key} should be deprecated in v3.2.0" + assert cat.replaced_by == expected_replacement, f"Category {old_key} should be replaced by {expected_replacement}, got {cat.replaced_by}" + + def test_v32_merged_categories(self) -> None: + """Test that merged categories point to their parent categories.""" + merged_categories = { + "user.biometric.health": "user.biometrics", + "user.contact.organization": "user.contact", + "user.user_sensor": "user.device.sensor", + "user.unique_id.pseudonymous": "user.unique_id", + } + + category_map = {cat.fides_key: cat for cat in DEFAULT_TAXONOMY.data_category} + + for merged_key, target_key in merged_categories.items(): + merged_cat = category_map[merged_key] + assert merged_cat.version_deprecated == "3.2.0" + assert merged_cat.replaced_by == target_key + + # Ensure target category exists + assert target_key in category_map, f"Merge target {target_key} does not exist" + + def test_active_category_count(self) -> None: + """Test that we have the expected number of active (non-deprecated) categories.""" + active_categories = [ + cat for cat in DEFAULT_TAXONOMY.data_category + if not cat.version_deprecated + ] + expected_active_count = active_taxonomy_counts["data_category"] + actual_count = len(active_categories) + assert actual_count == expected_active_count, f"Expected {expected_active_count} active categories, got {actual_count}" + + diff --git a/tests/fideslang/test_validation.py b/tests/fideslang/test_validation.py index f7fe1229..d8455b3e 100644 --- a/tests/fideslang/test_validation.py +++ b/tests/fideslang/test_validation.py @@ -212,6 +212,49 @@ def test_versions_valid(self, TaxonomyClass): ) assert tc.version_added == "1.2.3" + @pytest.mark.parametrize("TaxonomyClass", DEFAULT_TAXONOMY_CLASSES) + def test_replacement_chain_validity(self, TaxonomyClass) -> None: + """Test that all replacement chains are valid and don't create circular references.""" + from typing import Set + from fideslang.default_taxonomy import DEFAULT_TAXONOMY + + # Get the taxonomy items based on the class type + if TaxonomyClass == DataCategory: + taxonomy_items = DEFAULT_TAXONOMY.data_category + elif TaxonomyClass == DataUse: + taxonomy_items = DEFAULT_TAXONOMY.data_use + else: # DataSubject + taxonomy_items = DEFAULT_TAXONOMY.data_subject + + item_map = {item.fides_key: item for item in taxonomy_items} + + def follow_replacement_chain(fides_key: str, visited: Set[str]) -> str: + """Follow a replacement chain to its end, detecting cycles.""" + if fides_key in visited: + raise ValueError(f"Circular replacement detected: {visited} -> {fides_key}") + + if fides_key not in item_map: + raise ValueError(f"Replacement target {fides_key} does not exist") + + item = item_map[fides_key] + if not item.replaced_by: + return fides_key # End of chain + + return follow_replacement_chain(item.replaced_by, visited | {fides_key}) + + # Test all deprecated items have valid replacement chains + deprecated_items = [item for item in taxonomy_items if item.version_deprecated] + + for item in deprecated_items: + if item.replaced_by: + try: + final_replacement = follow_replacement_chain(item.fides_key, set()) + final_item = item_map[final_replacement] + # Final replacement should not be deprecated + assert not final_item.version_deprecated, f"Replacement chain for {item.fides_key} ends at deprecated item {final_replacement}" + except ValueError as e: + pytest.fail(f"Invalid replacement chain for {item.fides_key}: {e}") + @pytest.mark.unit def test_collections_duplicate_fields_error(): From a735b783528972800902d5e39d21eb184ef516d4 Mon Sep 17 00:00:00 2001 From: Neville Samuell Date: Fri, 5 Sep 2025 18:47:15 -0400 Subject: [PATCH 2/3] Add a utils function to aid in finding & migrating deprecated keys --- Makefile | 2 +- docs/migration/v3.2.0.md | 22 +++-- pyproject.toml | 1 + src/fideslang/default_taxonomy/__init__.py | 1 + src/fideslang/default_taxonomy/utils.py | 82 +++++++++++++++- tests/fideslang/test_utils.py | 105 +++++++++++++++++++++ 6 files changed, 203 insertions(+), 10 deletions(-) create mode 100644 tests/fideslang/test_utils.py diff --git a/Makefile b/Makefile index 2f7005a1..b1c69173 100644 --- a/Makefile +++ b/Makefile @@ -78,7 +78,7 @@ check-all: teardown build-local-prod check-install check-static pytest @echo "Running formatter, linter, typechecker and tests..." check-static: - @$(RUN) nox -s check_static + @$(RUN) nox -s static_checks check-install: @echo "Checking that fideslang is installed..." diff --git a/docs/migration/v3.2.0.md b/docs/migration/v3.2.0.md index 66250af0..4c97028e 100644 --- a/docs/migration/v3.2.0.md +++ b/docs/migration/v3.2.0.md @@ -111,14 +111,20 @@ Fideslang v3.2.0 improves the data categories and data uses taxonomies with bett ### Example Migration ```python -# If you're using a deprecated data category: -old_category = "user.biometric.fingerprint" - -# The deprecated category will have: -# replaced_by = "user.biometrics.fingerprint" - -# So update to: -new_category = "user.biometrics.fingerprint" +from fideslang.default_taxonomy import check_for_deprecated_default_fides_key +from fideslang.models import DataCategory + +# Check if your default taxonomy category is deprecated +category_to_check = "user.biometric.fingerprint" +try: + result = check_for_deprecated_default_fides_key(DataCategory, category_to_check) + if result.is_deprecated: + print(f"'{category_to_check}' is deprecated - use '{result.fides_key}' instead") + # result.fides_key = "user.biometrics.fingerprint" + else: + print(f"'{category_to_check}' is not deprecated - no migration needed") +except ValueError as e: + print(f"Error: {e}") # Same pattern applies to data uses when they are updated ``` diff --git a/pyproject.toml b/pyproject.toml index 1eec2b06..aed56bfd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -89,6 +89,7 @@ exclude = ''' | tests/data )/ ''' +extend-exclude = "_version\\.py" ############ ## Pylint ## diff --git a/src/fideslang/default_taxonomy/__init__.py b/src/fideslang/default_taxonomy/__init__.py index 6b160704..e8b972e4 100644 --- a/src/fideslang/default_taxonomy/__init__.py +++ b/src/fideslang/default_taxonomy/__init__.py @@ -6,6 +6,7 @@ from .data_subjects import DEFAULT_DATA_SUBJECTS from .data_uses import DEFAULT_DATA_USES from .organizations import DEFAULT_ORGANIZATIONS +from .utils import check_for_deprecated_default_fides_key, CheckDeprecationResult sort_data_types = lambda x: ( x.parent_key if hasattr(x, "parent_key") and x.parent_key else x.fides_key diff --git a/src/fideslang/default_taxonomy/utils.py b/src/fideslang/default_taxonomy/utils.py index 39133a6e..0a85a16c 100644 --- a/src/fideslang/default_taxonomy/utils.py +++ b/src/fideslang/default_taxonomy/utils.py @@ -1,7 +1,27 @@ -from typing import Dict, Union +from typing import Dict, Optional, Type, Union +from dataclasses import dataclass from fideslang.models import DataCategory, DataSubject, DataUse + +@dataclass +class CheckDeprecationResult: + """Result of checking a fides_key for deprecation.""" + + original_key: str + is_deprecated: bool + replacement_key: Optional[str] = None + + @property + def fides_key(self) -> str: + """Get the fides_key that should be used (replacement if deprecated, original if not).""" + return ( + self.replacement_key + if self.is_deprecated and self.replacement_key + else self.original_key + ) + + CustomType = Union[DataCategory, DataSubject, DataUse] @@ -20,3 +40,63 @@ def default_factory(taxonomy_class: CustomType, **kwargs: Dict) -> CustomType: kwargs["version_added"] = "2.0.0" # type: ignore[assignment] item = taxonomy_class.model_validate(kwargs) return item + + +def check_for_deprecated_default_fides_key( + taxonomy_class: Type[CustomType], fides_key: str +) -> CheckDeprecationResult: + """ + Check if a given fides_key from the default taxonomy is deprecated, and if deprecated, provide the replacement details. + + Args: + taxonomy_class: The taxonomy class to search (DataCategory, DataUse, or DataSubject) + fides_key: The fides_key from the default taxonomy to check for deprecation + + Returns: + CheckDeprecationResult: Object with deprecation check results including: + - original_key: The input key that was checked + - is_deprecated: Whether the key is deprecated and needs migration + - replacement_key: The replacement key if deprecated (None otherwise) + - fides_key: Property returning the key to use (replacement if deprecated, original if not) + + Raises: + ValueError: If the fides_key is not found in the default taxonomy + + Example: + >>> from fideslang.models import DataCategory + >>> result = check_for_deprecated_default_fides_key(DataCategory, "user.biometric") + >>> result.is_deprecated # True (deprecated) + >>> result.fides_key # "user.biometrics" (replacement) + + >>> result = check_for_deprecated_default_fides_key(DataCategory, "user.contact.email") + >>> result.is_deprecated # False (not deprecated) + >>> result.fides_key # "user.contact.email" (same as original) + + >>> check_for_deprecated_default_fides_key(DataCategory, "user.nonexistent") + # Raises ValueError + """ + from fideslang.default_taxonomy import DEFAULT_TAXONOMY + + # Get the appropriate taxonomy collection based on the class + if taxonomy_class == DataCategory: + taxonomy_items = DEFAULT_TAXONOMY.data_category + elif taxonomy_class == DataUse: + taxonomy_items = DEFAULT_TAXONOMY.data_use + elif taxonomy_class == DataSubject: + taxonomy_items = DEFAULT_TAXONOMY.data_subject + else: + raise ValueError(f"Unsupported taxonomy class: {taxonomy_class}") + + # Find the item with the matching fides_key + for item in taxonomy_items: + if item.fides_key == fides_key: + is_deprecated = bool(item.version_deprecated) + return CheckDeprecationResult( + original_key=fides_key, + is_deprecated=is_deprecated, + replacement_key=item.replaced_by if is_deprecated else None, + ) + + # Resource not found - raise error + taxonomy_name = taxonomy_class.__name__.lower().replace("data", "data ") + raise ValueError(f"'{fides_key}' not found in {taxonomy_name} taxonomy") diff --git a/tests/fideslang/test_utils.py b/tests/fideslang/test_utils.py new file mode 100644 index 00000000..c23c5cfd --- /dev/null +++ b/tests/fideslang/test_utils.py @@ -0,0 +1,105 @@ +import pytest + +from fideslang.default_taxonomy import check_for_deprecated_default_fides_key, CheckDeprecationResult +from fideslang.models import DataCategory, DataSubject, DataUse +from fideslang.utils import get_resource_by_fides_key + + +@pytest.mark.unit +class TestCheckForDeprecatedDefaultFidesKey: + """Test the deprecated default fides_key checking function.""" + + def test_deprecated_category_returns_replacement(self): + """Test that deprecated categories are identified and return their replacement keys.""" + # Test a few known deprecated categories from v3.2.0 + result = check_for_deprecated_default_fides_key(DataCategory, "user.biometric") + assert result.is_deprecated is True + assert result.replacement_key == "user.biometrics" + assert result.fides_key == "user.biometrics" + + result = check_for_deprecated_default_fides_key(DataCategory, "user.childrens") + assert result.is_deprecated is True + assert result.fides_key == "user.children" + + result = check_for_deprecated_default_fides_key(DataCategory, "user.health_and_medical") + assert result.is_deprecated is True + assert result.fides_key == "user.health" + + def test_active_category_not_deprecated(self): + """Test that active (non-deprecated) categories are identified as not deprecated.""" + # Test some known active categories + result = check_for_deprecated_default_fides_key(DataCategory, "user.contact.email") + assert result.is_deprecated is False + assert result.replacement_key is None + assert result.fides_key == "user.contact.email" + + result = check_for_deprecated_default_fides_key(DataCategory, "user.biometrics") # New category + assert result.is_deprecated is False + assert result.fides_key == "user.biometrics" + + def test_nonexistent_key_raises_error(self): + """Test that non-existent default taxonomy fides_keys raise ValueError.""" + with pytest.raises(ValueError, match="'user.nonexistent' not found in data category taxonomy"): + check_for_deprecated_default_fides_key(DataCategory, "user.nonexistent") + + with pytest.raises(ValueError, match="'' not found in data category taxonomy"): + check_for_deprecated_default_fides_key(DataCategory, "") + + def test_merged_categories_return_replacement(self): + """Test that merged categories are identified as deprecated and return their replacement keys.""" + # Test some known merged categories from v3.2.0 + result = check_for_deprecated_default_fides_key(DataCategory, "user.biometric.health") + assert result.is_deprecated is True + assert result.fides_key == "user.biometrics" + + result = check_for_deprecated_default_fides_key(DataCategory, "user.contact.organization") + assert result.is_deprecated is True + assert result.fides_key == "user.contact" + + def test_works_with_data_uses(self): + """Test that the function works with data uses to check for deprecation.""" + # Test with active data uses + result = check_for_deprecated_default_fides_key(DataUse, "analytics.reporting") + assert result.is_deprecated is False + assert result.fides_key == "analytics.reporting" + + def test_works_with_data_subjects(self): + """Test that the function works with data subjects to check for deprecation.""" + # Test with active data subjects + result = check_for_deprecated_default_fides_key(DataSubject, "customer") + assert result.is_deprecated is False + assert result.fides_key == "customer" + + def test_replacement_chain_follows_to_end(self): + """Test that if there are chained replacements, it returns the immediate replacement.""" + # The function should return the direct replacement, not follow the entire chain + # If user.biometric -> user.biometrics, it should return "user.biometrics" + # even if user.biometrics were to be deprecated later + result = check_for_deprecated_default_fides_key(DataCategory, "user.biometric") + assert result.fides_key == "user.biometrics" + + # The replacement itself should not be deprecated (in our current taxonomy) + replacement_result = check_for_deprecated_default_fides_key(DataCategory, result.fides_key) + assert replacement_result.is_deprecated is False # user.biometrics is not deprecated + + def test_invalid_taxonomy_class_raises_error(self): + """Test that invalid taxonomy classes raise ValueError.""" + with pytest.raises(ValueError, match="Unsupported taxonomy class"): + check_for_deprecated_default_fides_key(str, "some.key") # Invalid class + + def test_migration_result_properties(self): + """Test that CheckDeprecationResult properties work correctly.""" + # Test deprecated key + result = check_for_deprecated_default_fides_key(DataCategory, "user.biometric") + assert isinstance(result, CheckDeprecationResult) + assert result.original_key == "user.biometric" + assert result.is_deprecated is True + assert result.replacement_key == "user.biometrics" + assert result.fides_key == "user.biometrics" + + # Test active key + result = check_for_deprecated_default_fides_key(DataCategory, "user.contact.email") + assert result.original_key == "user.contact.email" + assert result.is_deprecated is False + assert result.replacement_key is None + assert result.fides_key == "user.contact.email" \ No newline at end of file From ce42d0d51dd2d97f5a5267069c5b956236ac8fd8 Mon Sep 17 00:00:00 2001 From: Neville Samuell Date: Fri, 5 Sep 2025 19:50:30 -0400 Subject: [PATCH 3/3] Update visualizations to exclude deprecated nodes --- mkdocs/docs/js/vis.js | 9 ++++++--- mkdocs/docs/js/vis2-absolute.js | 9 ++++++--- mkdocs/docs/js/vis2.js | 9 ++++++--- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/mkdocs/docs/js/vis.js b/mkdocs/docs/js/vis.js index 014d02fe..eb917457 100644 --- a/mkdocs/docs/js/vis.js +++ b/mkdocs/docs/js/vis.js @@ -836,10 +836,13 @@ Promise.all([ const stratify = d3.stratify().id(accessor.id).parentId(accessor.parentId); + // Filter out deprecated resources (where version_deprecated is not empty) + const filterDeprecated = (data) => data.filter(d => !d.version_deprecated); + // Chart data control - const categoriesRoot = stratify(categoriesCSV); - const usesRoot = stratify(usesCSV); - const subjectsRoot = stratify(subjectsCSV); + const categoriesRoot = stratify(filterDeprecated(categoriesCSV)); + const usesRoot = stratify(filterDeprecated(usesCSV)); + const subjectsRoot = stratify(filterDeprecated(subjectsCSV)); const chartData = { categories: categoriesRoot, diff --git a/mkdocs/docs/js/vis2-absolute.js b/mkdocs/docs/js/vis2-absolute.js index 71eef370..b739e74c 100644 --- a/mkdocs/docs/js/vis2-absolute.js +++ b/mkdocs/docs/js/vis2-absolute.js @@ -836,10 +836,13 @@ Promise.all([ const stratify = d3.stratify().id(accessor.id).parentId(accessor.parentId); + // Filter out deprecated resources (where version_deprecated is not empty) + const filterDeprecated = (data) => data.filter(d => !d.version_deprecated); + // Chart data control - const categoriesRoot = stratify(categoriesCSV); - const usesRoot = stratify(usesCSV); - const subjectsRoot = stratify(subjectsCSV); + const categoriesRoot = stratify(filterDeprecated(categoriesCSV)); + const usesRoot = stratify(filterDeprecated(usesCSV)); + const subjectsRoot = stratify(filterDeprecated(subjectsCSV)); const chartData = { categories: categoriesRoot, diff --git a/mkdocs/docs/js/vis2.js b/mkdocs/docs/js/vis2.js index 93051cea..4e50b577 100644 --- a/mkdocs/docs/js/vis2.js +++ b/mkdocs/docs/js/vis2.js @@ -836,10 +836,13 @@ Promise.all([ const stratify = d3.stratify().id(accessor.id).parentId(accessor.parentId); + // Filter out deprecated resources (where version_deprecated is not empty) + const filterDeprecated = (data) => data.filter(d => !d.version_deprecated); + // Chart data control - const categoriesRoot = stratify(categoriesCSV); - const usesRoot = stratify(usesCSV); - const subjectsRoot = stratify(subjectsCSV); + const categoriesRoot = stratify(filterDeprecated(categoriesCSV)); + const usesRoot = stratify(filterDeprecated(usesCSV)); + const subjectsRoot = stratify(filterDeprecated(subjectsCSV)); const chartData = { categories: categoriesRoot,