Module adcp.types.domains.brand.revocation_notification

Classes

class RevocationNotification (**data: Any)
Expand source code
class RevocationNotification(AdCPBaseModel):
    model_config = ConfigDict(
        extra='allow',
    )
    idempotency_key: Annotated[
        str,
        Field(
            description='Sender-generated key stable across retries of the same revocation notification. Rights holders MUST generate a cryptographically random value (UUID v4 recommended) per distinct revocation event and reuse the same key when retrying delivery. Buyers MUST dedupe by this key, scoped to the authenticated sender identity (HMAC secret or Bearer credential); keys from different senders are independent.',
            max_length=255,
            min_length=16,
            pattern='^[A-Za-z0-9_.:-]{16,255}$',
        ),
    ]
    rights_id: Annotated[str, Field(description='The revoked rights grant identifier')]
    brand_id: Annotated[str, Field(description='Brand identifier of the rights subject')]
    reason: Annotated[str, Field(description='Human-readable reason for revocation')]
    effective_at: Annotated[
        AwareDatetime,
        Field(
            description='When the revocation takes effect. Immediate revocations use current time. Grace periods use a future time. The buyer must stop serving creative using these rights by this time.'
        ),
    ]
    revoked_uses: Annotated[
        list[right_use.RightUse] | None,
        Field(
            description='If present, only these uses are revoked (partial revocation). If absent, all uses under the grant are revoked.',
            min_length=1,
        ),
    ] = None
    context: context_1.ContextObject | None = 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 brand_id : str
var context : ContextObject | None
var effective_at : pydantic.types.AwareDatetime
var ext : ExtensionObject | None
var idempotency_key : str
var model_config
var reason : str
var revoked_uses : list[RightUse] | None
var rights_id : str

Inherited members