Module adcp.types.domains.creative.creative_feature_result

Classes

class CreativeFeatureResult (**data: Any)
Expand source code
class CreativeFeatureResult(AdCPBaseModel):
    model_config = ConfigDict(
        extra='forbid',
    )
    feature_id: Annotated[
        str,
        Field(
            description="The feature that was evaluated (e.g., 'auto_redirect', 'brand_consistency'). Features prefixed with 'registry:' reference standardized policies from the shared policy registry (e.g., 'registry:eu_ai_act_article_50'). Unprefixed feature IDs are agent-defined."
        ),
    ]
    value: Annotated[
        StrictBool | StrictFloat | str,
        Field(
            description='The feature value. Type depends on feature definition: boolean for binary, number for quantitative, string for categorical.'
        ),
    ]
    unit: Annotated[
        str | None,
        Field(
            description="Unit of measurement for quantitative values (e.g., 'percentage', 'score')"
        ),
    ] = None
    confidence: Annotated[
        StrictFloat | None,
        Field(description='Confidence score for this value (0-1)', ge=0.0, le=1.0),
    ] = None
    measured_at: Annotated[
        AwareDatetime | None, Field(description='When this feature was evaluated')
    ] = None
    expires_at: Annotated[
        AwareDatetime | None,
        Field(description='When this evaluation expires and should be refreshed'),
    ] = None
    methodology_version: Annotated[
        str | None, Field(description='Version of the methodology used to evaluate this feature')
    ] = None
    details: Annotated[
        dict[str, Any] | None,
        Field(description='Additional vendor-specific details about this evaluation'),
    ] = None
    policy_id: Annotated[
        str | None,
        Field(
            description='Optional attribution — when this feature was evaluated for the purpose of a specific policy, policy_id references the authorizing PolicyEntry. Creative agents and sellers populate when the measurement was motivated by a specific policy; do NOT populate when the feature is a generic measurement (carbon score, brand consistency) unrelated to any policy. See /docs/governance/policy-attribution.'
        ),
    ] = None
    ext: ext_1.ExtensionObject | None = None

Base model for AdCP types with spec-compliant serialization.

Defaults to extra='ignore' so unknown fields from newer spec versions are silently dropped rather than causing validation errors. Generated types whose schemas set additionalProperties: true override this with extra='allow' in their own model_config.

Set ADCP_STRICT_VALIDATION=1 in the environment ("1", "true", "yes", "on" are accepted) to flip the default to extra='forbid'. Use this during spec upgrades to catch silently-dropped renamed fields in tests. See :func:_resolve_extra_policy.

Important

The env var is resolved once at module import time. Set it in your shell or CI environment before import adcp runs — mutating os.environ["ADCP_STRICT_VALIDATION"] after the first adcp import has no effect on already-imported model classes (they captured the policy at class-body evaluation).

Consumers who want per-model strict validation can override model_config on their subclass.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

Ancestors

Class variables

var confidence : float | None
var details : dict[str, typing.Any] | None
var expires_at : pydantic.types.AwareDatetime | None
var ext : ExtensionObject | None
var feature_id : str
var measured_at : pydantic.types.AwareDatetime | None
var methodology_version : str | None
var model_config
var policy_id : str | None
var unit : str | None
var value : bool | float | str

Inherited members