diff --git a/CHANGELOG.md b/CHANGELOG.md index f88a6b8..0b2bdad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ The types of changes are: ## [Unreleased](https://github.com/ethyca/fideslang/compare/3.0.8...main) +- Add field-level masking strategy overrides [#23](https://github.com/ethyca/fideslang/pull/23) ## [3.0.8](https://github.com/ethyca/fideslang/compare/3.0.7...3.0.8) diff --git a/src/fideslang/models.py b/src/fideslang/models.py index 2310dfa..b46ae16 100644 --- a/src/fideslang/models.py +++ b/src/fideslang/models.py @@ -7,7 +7,7 @@ from datetime import datetime from enum import Enum -from typing import Annotated, Dict, List, Optional, Union +from typing import Annotated, Dict, List, Optional, Union, Any from packaging.version import InvalidVersion, Version from pydantic import ( @@ -69,11 +69,18 @@ class MaskingStrategies(str, Enum): class MaskingStrategyOverride(BaseModel): - """Overrides policy-level masking strategies.""" + """Overrides collection-level masking strategies.""" strategy: MaskingStrategies +class FieldMaskingStrategyOverride(BaseModel): # type: ignore[misc] + """Overrides field-level masking strategies.""" + + strategy: str + configuration: Optional[Dict[str, Any]] = {} # type: ignore[misc] + + class FidesModel(BaseModel): """The base model for most top-level Fides objects.""" @@ -418,6 +425,10 @@ class FidesMeta(BaseModel): default=None, description="Optionally specify that a field may be used as a custom request field in DSRs. The value is the name of the field in the DSR.", ) + masking_strategy_override: Optional[FieldMaskingStrategyOverride] = Field( + default=None, + description="Optionally specify a masking strategy override for this field.", + ) @field_validator("data_type") @classmethod