Module adcp.types.domains.brand_discovery
Classes
class AgenticCheckout (**data: Any)-
Expand source code
class AgenticCheckout(AdCPBaseModel): endpoint: Annotated[AnyUrl, Field(description='Base URL for checkout session API')] spec: Annotated[ str, Field( description='Checkout API specification identifier. Use a namespaced string to identify the checkout protocol (e.g., vendor-prefixed or custom). Vendor-specific values belong under ext.{vendor}.' ), ] supported_payment_providers: Annotated[ list[str] | None, Field(description='Payment providers supported by this checkout endpoint') ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var endpoint : pydantic.networks.AnyUrlvar model_configvar spec : strvar supported_payment_providers : list[str] | None
Inherited members
class Agents (root: RootModelRootType = PydanticUndefined, **data)-
Expand source code
class Agents(RootModel[list[BrandAgentEntry]]): root: Annotated[ list[BrandAgentEntry], Field( description='Agents declared by this brand or house. Multiple entries with the same type are permitted when they have distinct url values, such as one endpoint URL per tenant or property scope. Agent url values MUST be unique within this array; duplicate urls are invalid because signature verifiers resolve a signing key by matching one agent url to one agents[] entry and reject ambiguous matches.' ), ]Usage Documentation
A Pydantic
BaseModelfor the root object of the model.- Attributes
- -----=
root- The root object of the model.
__pydantic_root_model__- Whether the model is a RootModel.
__pydantic_private__- Private fields in the model.
__pydantic_extra__- Extra fields in the model.
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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- pydantic.root_model.RootModel[list[BrandAgentEntry]]
- pydantic.root_model.RootModel
- pydantic.main.BaseModel
- typing.Generic
Class variables
var model_configvar root : list[BrandAgentEntry]
class AiTool (**data: Any)-
Expand source code
class AiTool(AdCPBaseModel): name: Annotated[ str, Field( description="Name of the AI tool or model (e.g., 'DALL-E 3', 'Stable Diffusion XL', 'Gemini')" ), ] version: Annotated[ str | None, Field( description="Version identifier for the AI tool or model (e.g., '25.1', '0125', '2.1'). For generative models, use the model version rather than the API version." ), ] = None provider: Annotated[ str | None, Field( description="Organization that provides the AI tool (e.g., 'OpenAI', 'Stability AI', 'Google')" ), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var model_configvar name : strvar provider : str | Nonevar version : str | None
Inherited members
class AnimationSpeed (*args, **kwds)-
Expand source code
class AnimationSpeed(StrEnum): slow = 'slow' moderate = 'moderate' fast = 'fast'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var fastvar moderatevar slow
class Architecture (*args, **kwds)-
Expand source code
class Architecture(StrEnum): branded_house = 'branded_house' house_of_brands = 'house_of_brands' hybrid = 'hybrid'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var branded_housevar house_of_brandsvar hybrid
class Asset (**data: Any)-
Expand source code
class Asset(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) asset_id: Annotated[str, Field(description='Unique identifier')] asset_type: Annotated[AssetContentType, Field(description='Type of asset content')] url: Annotated[AnyUrl, Field(description='URL to CDN-hosted asset file')] tags: Annotated[ list[str] | None, Field(description="Tags for discovery (e.g., 'hero', 'lifestyle', 'product', 'holiday')"), ] = None name: Annotated[ LocalizedScalar | None, Field(description='Human-readable name, either a legacy plain string or localized values.'), ] = None description: Annotated[ LocalizedScalar | None, Field( description='Asset description or usage notes, either a legacy plain string or localized values.' ), ] = None width: Annotated[SchemaInt | None, Field(description='Image/video width in pixels')] = None height: Annotated[SchemaInt | None, Field(description='Image/video height in pixels')] = None duration_seconds: Annotated[ StrictFloat | None, Field(description='Video/audio duration in seconds') ] = None file_size_bytes: Annotated[SchemaInt | None, Field(description='File size in bytes')] = None format: Annotated[str | None, Field(description="File format (e.g., 'jpg', 'mp4', 'mp3')")] = ( None ) metadata: Annotated[ dict[str, Any] | None, Field(description='Additional asset-specific metadata') ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var asset_id : strvar asset_type : AssetContentTypevar description : LocalizedScalar | Nonevar duration_seconds : float | Nonevar file_size_bytes : int | Nonevar format : str | Nonevar height : int | Nonevar metadata : dict[str, typing.Any] | Nonevar model_configvar name : LocalizedScalar | Nonevar url : pydantic.networks.AnyUrlvar width : int | None
Inherited members
class AssetContentType (*args, **kwds)-
Expand source code
class AssetContentType(StrEnum): image = 'image' video = 'video' audio = 'audio' text = 'text' markdown = 'markdown' html = 'html' css = 'css' javascript = 'javascript' zip = 'zip' vast = 'vast' daast = 'daast' url = 'url' webhook = 'webhook' brief = 'brief' catalog = 'catalog' published_post = 'published_post'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var audiovar briefvar catalogvar cssvar daastvar htmlvar imagevar javascriptvar markdownvar published_postvar textvar urlvar vastvar videovar webhookvar zip
class AssetLibrary (**data: Any)-
Expand source code
class AssetLibrary(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) name: Annotated[str, Field(description='Display name of the asset library')] type: Annotated[Type2 | None, Field(description='Type of asset library')] = None url: Annotated[AnyUrl, Field(description='URL to the asset library (for human access)')] description: Annotated[ str | None, Field(description='Description of the library contents and usage') ] = None color_guide: Annotated[ ColorGuide | None, Field(description='Color guide for the asset library defining roles and palettes'), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var color_guide : ColorGuide | Nonevar description : str | Nonevar model_configvar name : strvar type : Type2 | Nonevar url : pydantic.networks.AnyUrl
Inherited members
class AuthorizedOperator (**data: Any)-
Expand source code
class AuthorizedOperator(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) domain: Annotated[ Domain, Field(description="Domain of the authorized operator (e.g., 'groupm.com')") ] brands: Annotated[ list[Brand1], Field( description="Brand IDs this operator is authorized for. Use ['*'] for all brands in the portfolio.", min_length=1, ), ] countries: Annotated[ list[Country1] | None, Field( description='ISO 3166-1 alpha-2 country codes where this authorization applies. Omit for global authorization.' ), ] = None scopes: Annotated[ list[Scope1] | None, Field( description="Activities this operator is authorized to perform for the listed brands and countries. Omit for backwards-compatible broad authorization. Use ['all'] only when every listed scope is delegated.", min_length=1, ), ] = None valid_from: Annotated[ AwareDatetime | None, Field( description='ISO 8601 timestamp when this operator authorization starts. Omit when authorization is already active or the start date is not tracked.' ), ] = None valid_until: Annotated[ AwareDatetime | None, Field( description='ISO 8601 timestamp when this operator authorization expires. Consumers MUST treat entries at or after this timestamp as inactive for authorization decisions.' ), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var brands : list[Brand1]var countries : list[Country1] | Nonevar domain : Domainvar model_configvar scopes : list[Scope1] | Nonevar valid_from : pydantic.types.AwareDatetime | Nonevar valid_until : pydantic.types.AwareDatetime | None
Inherited members
class Avatar (**data: Any)-
Expand source code
class Avatar(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) provider: str | None = None avatar_id: str | None = None settings: dict[str, Any] | None = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var avatar_id : str | Nonevar model_configvar provider : str | Nonevar settings : dict[str, typing.Any] | None
Inherited members
class Background (*args, **kwds)-
Expand source code
class Background(StrEnum): dark_bg = 'dark-bg' light_bg = 'light-bg' transparent_bg = 'transparent-bg'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var dark_bgvar light_bgvar transparent_bg
class BackgroundContrast (*args, **kwds)-
Expand source code
class BackgroundContrast(StrEnum): light_only = 'light_only' dark_only = 'dark_only' any = 'any'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var anyvar dark_onlyvar light_only
class Backgrounds (**data: Any)-
Expand source code
class Backgrounds(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) types_allowed: Annotated[ list[TypesAllowedEnum] | None, Field(description='Permitted background types') ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var model_configvar types_allowed : list[TypesAllowedEnum] | None
Inherited members
class BorderRadius (**data: Any)-
Expand source code
class BorderRadius(AdCPBaseModel): __pydantic_extra__: Dict[str, str] model_config = ConfigDict( extra='allow', ) none: Annotated[str | None, Field(description="Explicitly sharp corners (e.g., '0')")] = None default: Annotated[ str | None, Field( description="Default border radius for UI components (e.g., '8px', '12px', '0'). For graphic/illustration elements, see graphic_style.corner_radius." ), ] = None small: Annotated[ str | None, Field(description="Small border radius for compact elements (e.g., '4px')") ] = None large: Annotated[ str | None, Field(description="Large border radius for cards and containers (e.g., '16px', '24px')"), ] = None pill: Annotated[str | None, Field(description="Fully rounded / pill shape (e.g., '999px')")] = ( 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var default : str | Nonevar large : str | Nonevar model_configvar none : str | Nonevar pill : str | Nonevar small : str | None
Inherited members
class Brand (**data: Any)-
Expand source code
class Brand(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) id: Annotated[ BrandId, Field(description='Brand identifier within the house. House chooses this ID.') ] url: Annotated[ AnyUrl | None, Field(description='Primary brand URL for context and asset discovery') ] = None identity_relying_parties: Annotated[ list[IdentityRelyingParty] | None, Field( description='Verified-identity relying parties scoped to this brand/property, for attestation provenance in TMP Identity Match. Use when a brand or property runs its own relying_party_id (per-property pseudonyms); entity-wide relying parties live on the house object. See specs/tmp-verified-identity-attestation.md.' ), ] = None names: Annotated[ list[LocalizedName], Field( description='Localized brand names. Multiple entries per language allowed for aliases.', min_length=1, ), ] keller_type: KellerType | None = None parent_brand: Annotated[ BrandId | None, Field(description='Parent brand ID for sub-brands and endorsed brands') ] = None description: Annotated[str | None, Field(description='Brand description')] = None industries: Annotated[ list[str] | None, Field( description="Brand industries (e.g., ['automotive'] or ['pharmaceutical', 'cpg'] for a consumer health company). Describes what the company does — not what regulatory regimes apply (use policy_categories for that).", min_length=1, ), ] = None target_audience: Annotated[str | None, Field(description='Primary target audience')] = None logos: Annotated[list[Logo] | None, Field(description='Brand logo assets')] = None colors: Colors | None = None fonts: Fonts | None = None tone: Annotated[ str | Tone | None, Field(description='Brand voice and messaging tone guidelines') ] = None tagline: Annotated[ str | Tagline | None, Field( description='Brand tagline or slogan. Accepts a plain string or a localized array matching the names pattern.' ), ] = None assets: Annotated[list[Asset] | None, Field(description='Brand asset library')] = None properties: Annotated[ list[Property] | None, Field( description='Digital properties associated with this brand — owned, managed, or represented' ), ] = None product_catalog: ProductCatalog | None = None privacy_policy_url: Annotated[ AnyUrl | None, Field(description="URL to the brand's privacy policy") ] = None data_subject_contestation: DataSubjectContestation | None = None disclaimers: Annotated[ list[Disclaimer] | None, Field(description='Legal disclaimers for creatives') ] = None trademarks: Annotated[ list[Trademark] | None, Field( description="Brand-level registered trademarks. Use for marks the brand owns or controls (e.g., a sub-brand's own marks distinct from the corporate parent). House-level trademarks live on the house object; resolution between the two is union — both lists are valid claims." ), ] = None voice_synthesis: Annotated[ VoiceSynthesis | None, Field(description='TTS voice synthesis configuration for AI-generated audio'), ] = None avatar: Annotated[Avatar | None, Field(description='Visual avatar configuration')] = None visual_guidelines: Annotated[ VisualGuidelines | None, Field(description='Structured visual rules for generative creative systems'), ] = None agents: Annotated[ Agents | None, Field( description='Agents authorized to act on behalf of this brand. Consumers resolving an agent by URL use the matching brand-level entry; do not infer a type-wide override of unrelated house-level entries when multiple same-type entries exist.' ), ] = None brand_agent: Annotated[ BrandAgent | None, Field( deprecated=True, description="Deprecated: use agents array with type 'brand' instead. Brand agent that provides dynamic brand data via MCP.", ), ] = None rights_agent: Annotated[ RightsAgent | None, Field( deprecated=True, description="Deprecated: use agents array with type 'rights' instead. Rights licensing agent for this brand.", ), ] = None contact: Annotated[Contact1 | None, Field(description='Brand-level contact information')] = None collections: Annotated[ list[Collection] | None, Field( description="Collections this person or brand is associated with. Enables bidirectional linking: a collection's talent references brand.json via brand_url, and brand.json links back to collections." ), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Subclasses
Class variables
var agents : Agents | Nonevar assets : list[Asset] | Nonevar avatar : Avatar | Nonevar brand_agent : BrandAgent | Nonevar collections : list[Collection] | Nonevar colors : Colors | Nonevar contact : Contact1 | Nonevar data_subject_contestation : DataSubjectContestation | Nonevar description : str | Nonevar disclaimers : list[Disclaimer] | Nonevar fonts : Fonts | Nonevar id : BrandIdvar identity_relying_parties : list[IdentityRelyingParty] | Nonevar industries : list[str] | Nonevar keller_type : KellerType | Nonevar logos : list[Logo] | Nonevar model_configvar names : list[LocalizedName]var parent_brand : BrandId | Nonevar privacy_policy_url : pydantic.networks.AnyUrl | Nonevar product_catalog : ProductCatalog | Nonevar properties : list[Property] | Nonevar rights_agent : RightsAgent | Nonevar tagline : str | Tagline | Nonevar target_audience : str | Nonevar tone : str | Tone | Nonevar trademarks : list[Trademark] | Nonevar url : pydantic.networks.AnyUrl | Nonevar visual_guidelines : VisualGuidelines | Nonevar voice_synthesis : VoiceSynthesis | None
Inherited members
class Brand1 (value: Any = <object object>, *, root: Any = <object object>)-
Expand source code
class Brand1(ScalarStr): __slots__ = () _constraints = {'pattern': '^([a-z0-9_]+|\\*)$'}A
strgenerated from a JSON Schema string root.Ancestors
- adcp.types._scalar.ScalarStr
- adcp.types._scalar._ScalarRoot
- builtins.str
class BrandAgent (**data: Any)-
Expand source code
class BrandAgent(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) url: Annotated[ AnyUrl, Field( description="Brand agent MCP endpoint URL. Callers comparing this URL against another value (e.g., resolving 'is this the brand's declared agent?' against a discovery cache) MUST canonicalize both sides per the AdCP URL canonicalization rules, not byte-equality. See docs/reference/url-canonicalization." ), ] id: Annotated[ str, Field( description='Agent identifier (useful for logging, multi-tenant DAMs)', pattern='^[a-z0-9_]+$', ), ]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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var id : strvar model_configvar url : pydantic.networks.AnyUrl
Inherited members
class BrandAgentEntry (**data: Any)-
Expand source code
class BrandAgentEntry(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) type: Annotated[BrandAgentType, Field(description='Functional role of this agent')] url: Annotated[ AnyUrl, Field( description="Agent endpoint URL (MCP or A2A). Callers comparing a brand's declared agent URL against another value (e.g., resolving 'is this the agent that signed this artifact?' or matching against a discovery cache) MUST canonicalize both sides per the AdCP URL canonicalization rules, not byte-equality. After the publication chain and an authorized request-signing key verify, this exact entry's canonical URL is the stable Agent identity input for principal mapping; the domain, JWKS URI, kid, and key material are credential or trust facts beneath it, not the Agent identity. See docs/reference/url-canonicalization." ), ] id: Annotated[ str, Field( description='Agent identifier (useful for logging, multi-tenant platforms)', max_length=100, pattern='^[a-z0-9_]+$', ), ] description: Annotated[ str | None, Field( description="Human-readable description of this agent's capabilities or scope", max_length=500, ), ] = None jwks_uri: Annotated[ AnyUrl | None, Field( description="HTTPS URL of the agent's JWKS (RFC 7517) containing public keys used to verify artifacts this agent signs or requests it sends. Verified artifacts include signed governance_context tokens (for governance agents) and RFC 9421 HTTP Signatures on outgoing requests (for any agent). When absent, verifiers MUST default to /.well-known/jwks.json on the origin of `url`. Keys are identified by `kid` in the JWS header or RFC 9421 `keyid` parameter; JWKS MAY contain multiple keys to support rotation and per-purpose separation via `key_ops` and `use`." ), ] = None available_uses: Annotated[ list[RightUse] | None, Field(description='For rights agents: rights uses available for licensing', min_length=1), ] = None right_types: Annotated[ list[RightType] | None, Field(description='For rights agents: types of rights available', min_length=1), ] = None countries: Annotated[ list[Country1] | None, Field( description='ISO 3166-1 alpha-2 country codes where this agent operates. Omit for global scope.' ), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var available_uses : list[RightUse] | Nonevar countries : list[Country1] | Nonevar description : str | Nonevar id : strvar jwks_uri : pydantic.networks.AnyUrl | Nonevar model_configvar right_types : list[RightType] | Nonevar type : BrandAgentTypevar url : pydantic.networks.AnyUrl
Inherited members
class BrandAgentType (*args, **kwds)-
Expand source code
class BrandAgentType(StrEnum): brand = 'brand' rights = 'rights' measurement = 'measurement' governance = 'governance' creative = 'creative' sales = 'sales' buying = 'buying' signals = 'signals'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var brandvar buyingvar creativevar governancevar measurementvar rightsvar salesvar signals
class BrandDiscovery1 (**data: Any)-
Expand source code
class BrandDiscovery1(AdCPBaseModel): model_config = ConfigDict( extra='forbid', ) field_schema: Annotated[str | None, Field(alias='$schema')] = None authoritative_location: Annotated[ AnyUrl, Field(description='HTTPS URL of the authoritative brand.json file') ] redirect_reason: Annotated[ RedirectReason | None, Field( description="Optional structured signal indicating why this redirect was put in place. Consumers SHOULD use this to inform cache TTL decisions: 'acquisition' / 'divestiture' / 'rebrand' / 'consolidation' suggest the resolved target is in transition and consumers SHOULD shorten cache TTL until stable. 'regional' / 'legacy' suggest a stable redirect with no special cache handling needed. Free-text rationale belongs in 'note'." ), ] = None redirect_effective_at: Annotated[ AwareDatetime | None, Field( description='Optional timestamp when this redirect became effective. Caches MUST treat any entry cached before this timestamp as stale and re-fetch through the redirect.' ), ] = None note: Annotated[ str | None, Field(description='Optional human-readable rationale for the redirect.') ] = None last_updated: AwareDatetime | None = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var field_schema : str | Nonevar last_updated : pydantic.types.AwareDatetime | Nonevar model_configvar note : str | Nonevar redirect_effective_at : pydantic.types.AwareDatetime | Nonevar redirect_reason : RedirectReason | None
Inherited members
class BrandDiscovery2 (**data: Any)-
Expand source code
class BrandDiscovery2(AdCPBaseModel): model_config = ConfigDict( extra='forbid', ) field_schema: Annotated[str | None, Field(alias='$schema')] = None house: Annotated[Domain, Field(description='House domain to fetch brand portfolio from')] region: Annotated[ str | None, Field( description='ISO 3166-1 alpha-2 country code if this is a regional domain', pattern='^[A-Z]{2}$', ), ] = None redirect_reason: Annotated[ RedirectReason | None, Field( description="Optional structured signal indicating why this redirect was put in place. Consumers SHOULD use this to inform cache TTL decisions: 'acquisition' / 'divestiture' / 'rebrand' / 'consolidation' suggest the resolved target is in transition and consumers SHOULD shorten cache TTL until stable. 'regional' / 'legacy' suggest a stable redirect with no special cache handling needed. Free-text rationale belongs in 'note'." ), ] = None redirect_effective_at: Annotated[ AwareDatetime | None, Field( description='Optional timestamp when this redirect became effective. Caches MUST treat any entry cached before this timestamp as stale and re-fetch through the redirect.' ), ] = None note: Annotated[ str | None, Field(description='Optional human-readable rationale for the redirect.') ] = None last_updated: AwareDatetime | None = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var field_schema : str | Nonevar house : Domainvar last_updated : pydantic.types.AwareDatetime | Nonevar model_configvar note : str | Nonevar redirect_effective_at : pydantic.types.AwareDatetime | Nonevar redirect_reason : RedirectReason | Nonevar region : str | None
Inherited members
class BrandDiscovery3 (**data: Any)-
Expand source code
class BrandDiscovery3(AdCPBaseModel): model_config = ConfigDict( extra='forbid', ) field_schema: Annotated[str | None, Field(alias='$schema')] = None version: str | None = None agents: Agents | None = None brand_agent: Annotated[BrandAgent | None, Field(deprecated=True)] = None contact: Contact | None = None data_subject_contestation: DataSubjectContestation | None = None last_updated: AwareDatetime | None = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var agents : Agents | Nonevar brand_agent : BrandAgent | Nonevar contact : Contact | Nonevar data_subject_contestation : DataSubjectContestation | Nonevar field_schema : str | Nonevar last_updated : pydantic.types.AwareDatetime | Nonevar model_configvar version : str | None
Inherited members
class BrandDiscovery4 (**data: Any)-
Expand source code
class BrandDiscovery4(AdCPBaseModel): model_config = ConfigDict( extra='forbid', ) field_schema: Annotated[str | None, Field(alias='$schema')] = None version: str | None = None default_language: DefaultLanguage | None = None house: House brands: Annotated[ list[Brand] | None, Field( description='Inline brands owned by this house (parent-owned data). Use for sub-brands without their own canonical document — typically those without a dedicated domain or that the holdco wants to manage centrally. A brand_id MUST NOT appear in both brands[] and brand_refs[].', min_length=1, ), ] = None brand_refs: Annotated[ list[PortfolioEntry] | None, Field( description="Portfolio entries for brands owned by this house that publish their own canonical brand.json elsewhere (child-owned data). Each entry asserts ownership plus where the child's document lives. Mutual-assertion trust: the pointed-to document's house_domain must equal this house's domain. Invariants: a brand_id MUST NOT appear in both brands[] and brand_refs[]; brand_id and domain MUST each be unique within brand_refs[]. See docs/brand-protocol/brand-json.mdx", min_length=1, ), ] = None contact: Contact | None = None authorized_operators: Annotated[ list[AuthorizedOperator] | None, Field( description="Entities authorized to represent brands from this house. Third parties (sellers, platforms) can verify an operator's authorization by checking this list. Operators are identified by domain." ), ] = None trademarks: Annotated[ list[Trademark] | None, Field( description='House-level (corporate) registered trademarks. Brand-level marks live on individual brand entries; resolution is union.' ), ] = None last_updated: AwareDatetime | None = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var brand_refs : list[PortfolioEntry] | Nonevar brands : list[Brand] | Nonevar contact : Contact | Nonevar default_language : DefaultLanguage | Nonevar field_schema : str | Nonevar house : Housevar last_updated : pydantic.types.AwareDatetime | Nonevar model_configvar trademarks : list[Trademark] | Nonevar version : str | None
Inherited members
class BrandDiscovery5 (**data: Any)-
Expand source code
class BrandDiscovery5(Brand): field_schema: Annotated[str | None, Field(alias='$schema')] = None version: str | None = None default_language: DefaultLanguage | None = None house_domain: Annotated[ Domain | None, Field( description="Optional pointer to the corporate house this brand belongs to. The named house's brand_refs[] MUST reciprocate for mutual-assertion trust. Single-hop only — a brand cannot itself declare brand_refs[]. Omit for standalone brands (no house)." ), ] = None last_updated: AwareDatetime | None = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- Brand
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var default_language : DefaultLanguage | Nonevar field_schema : str | Nonevar house_domain : Domain | Nonevar last_updated : pydantic.types.AwareDatetime | Nonevar model_configvar version : str | None
Inherited members
class BrandId (value: Any = <object object>, *, root: Any = <object object>)-
Expand source code
class BrandId(ScalarStr): __slots__ = () _constraints = {'pattern': '^[a-z0-9_]+$'} _json_schema_extra = { 'description': 'Brand identifier within the house portfolio. Lowercase alphanumeric with underscores. House chooses this ID.', }A
strgenerated from a JSON Schema string root.Ancestors
- adcp.types._scalar.ScalarStr
- adcp.types._scalar._ScalarRoot
- builtins.str
class BrandIdModel (value: Any = <object object>, *, root: Any = <object object>)-
Expand source code
class BrandIdModel(ScalarStr): __slots__ = () _constraints = {'pattern': '^[a-z0-9_]+$'} _json_schema_extra = { 'description': 'Identifier for a brand within a house portfolio. Must be lowercase alphanumeric with underscores only. The house chooses this identifier.', 'examples': ['tide', 'cheerios', 'air_jordan', 'nike', 'pampers'], 'title': 'Brand ID', }A
strgenerated from a JSON Schema string root.Ancestors
- adcp.types._scalar.ScalarStr
- adcp.types._scalar._ScalarRoot
- builtins.str
class BrandKitOverride (**data: Any)-
Expand source code
class BrandKitOverride(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) logo: Annotated[ImageAsset | None, Field(description='Override logo asset.')] = None colors: Annotated[Colors1 | None, Field(description='Override brand colors (hex strings).')] = ( None ) voice: Annotated[ str | None, Field( description='Override brand-voice description for surface-composed text/audio output.' ), ] = None tagline: Annotated[str | None, Field(description='Override tagline.')] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var colors : Colors1 | Nonevar logo : ImageAsset | Nonevar model_configvar tagline : str | Nonevar voice : str | None
Inherited members
class BrandRef (**data: Any)-
Expand source code
class BrandRef(AdCPBaseModel): model_config = ConfigDict( extra='forbid', ) domain: Annotated[ str, Field( description="Domain where /.well-known/brand.json is hosted, or the brand's operating domain", pattern='^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$', ), ] brand_id: Annotated[ BrandIdModel | None, Field( description='Brand identifier within the house portfolio. Optional for single-brand domains.' ), ] = None countries: Annotated[ list[Country1] | None, Field( description='Canonical set of ISO 3166-1 alpha-2 countries for this advertiser identity. Omit for a global/default identity. Array order is not meaningful; producers MUST sort codes lexicographically before computing keys or signatures. This qualifies account identity and is not delivery targeting.', min_length=1, ), ] = None industries: Annotated[ list[str] | None, Field( description="Inline override for the brand's industries. Useful when the caller cannot modify the brand's canonical brand.json but needs to declare industries for governance (e.g., Annex III vertical detection). brand.json remains the canonical source; when omitted here, governance agents SHOULD resolve from brand.json." ), ] = None data_subject_contestation: Annotated[ DataSubjectContestation1 | None, Field( description="Inline override for the brand's contestation contact point. Useful when the operator does not control brand.json but needs to discharge Art 22(3) for this plan. brand.json is canonical; when omitted, governance agents resolve brand → house → missing." ), ] = None brand_kit_override: Annotated[ BrandKitOverride | None, Field( description="Inline override for brand-kit fields normally resolved from `/.well-known/brand.json` on `domain` (logo, colors, voice, tagline). Use when brand.json is missing, stale, or inappropriate for this specific call — e.g., a campaign-scoped tagline, a co-branded creative, a freshly-rebranded color palette the brand.json hasn't shipped yet. Same inline-override pattern as `industries` and `data_subject_contestation` above: brand.json is canonical, the override is per-call. Adopters needing to override fields outside this subset (`voice_attributes`, `prohibited_terms`, etc.) MUST publish a different brand.json and reference it via a different `domain` — the inline override is intentionally narrow to a small high-traffic subset.\n\n**Merge semantics (normative).** The merge is **field-level**, not whole-object replacement. Each field within `brand_kit_override` (`logo`, `colors`, `voice`, `tagline`) is evaluated independently — when a field is present on the override the override value applies; when a field is absent the brand.json value applies (or is absent if brand.json doesn't carry one either). For composite fields (`colors.primary`, `colors.secondary`, `colors.accent`), the merge is one level deeper: each color slot is evaluated independently — a producer can override `colors.primary` while still inheriting `colors.secondary` from brand.json. SDKs MUST NOT treat a present `brand_kit_override.colors` as wiping the brand.json `colors` block entirely; only the per-slot fields present in the override take precedence. Without this rule, a partial-override semantics would diverge across SDKs and produce inconsistent rendering for the same payload." ), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var brand_id : BrandIdModel | Nonevar brand_kit_override : BrandKitOverride | Nonevar countries : list[Country1] | Nonevar data_subject_contestation : DataSubjectContestation1 | Nonevar domain : strvar industries : list[str] | Nonevar model_config
Inherited members
class BrandShapes (**data: Any)-
Expand source code
class BrandShapes(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) primary_shape: Annotated[ str | None, Field(description="Primary brand shape (e.g., 'rounded_rectangle', 'circle', 'hexagon')"), ] = None secondary_shapes: Annotated[ list[str] | None, Field(description='Secondary shapes in the brand vocabulary') ] = None usage: Annotated[Usage | None, Field(description='Shape usage rules')] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var model_configvar primary_shape : str | Nonevar secondary_shapes : list[str] | Nonevar usage : Usage | None
Inherited members
class C2pa (**data: Any)-
Expand source code
class C2pa(AdCPBaseModel): manifest_url: Annotated[ AnyUrl, Field(description='URL to the C2PA manifest store for this content') ]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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var manifest_url : pydantic.networks.AnyUrlvar model_config
Inherited members
class C2paWatermarkAction (*args, **kwds)-
Expand source code
class C2paWatermarkAction(StrEnum): c2pa_watermarked_bound = 'c2pa.watermarked.bound' c2pa_watermarked_unbound = 'c2pa.watermarked.unbound'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var c2pa_watermarked_boundvar c2pa_watermarked_unbound
class Collection (**data: Any)-
Expand source code
class Collection(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) collection_id: Annotated[ str | None, Field(description="Collection identifier as used in the seller's get_products responses"), ] = None name: Annotated[str, Field(description='Human-readable collection name')] role: Annotated[ TalentRole | None, Field(description="This person's role on the collection") ] = None seller_agent_url: Annotated[ AnyUrl | None, Field( description='URL of the sales agent that sells inventory for this collection. Buyer agents can query this agent for collection products.' ), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var collection_id : str | Nonevar model_configvar name : strvar role : TalentRole | Nonevar seller_agent_url : pydantic.networks.AnyUrl | None
Inherited members
class ColorConstraint (**data: Any)-
Expand source code
class ColorConstraint(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) color: Annotated[ColorRef, Field(description='Color role or value this constraint governs.')] applies_to: Annotated[ list[Surface] | None, Field(description='Surfaces where this color may be used.') ] = None allowed_on: Annotated[ list[ColorRef] | None, Field(description='Backgrounds, surfaces, or color roles where this color is allowed.'), ] = None forbidden_on: Annotated[ list[ColorRef] | None, Field(description='Backgrounds, surfaces, or color roles where this color is forbidden.'), ] = None never_pair_with: Annotated[ list[ColorRef] | None, Field(description='Color roles or values that must not be paired with this color.'), ] = None contexts: Annotated[ list[str] | None, Field( description='Channels or creative contexts where this constraint applies, such as digital, print, social, or ctv_end_card.' ), ] = None severity: GuidelineSeverity | None = None description: Annotated[ str | None, Field(description='Human-readable rationale or source-language summary for the rule.'), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var allowed_on : list[ColorRef] | Nonevar applies_to : list[Surface] | Nonevar color : ColorRefvar contexts : list[str] | Nonevar description : str | Nonevar forbidden_on : list[ColorRef] | Nonevar model_configvar never_pair_with : list[ColorRef] | Nonevar severity : GuidelineSeverity | None
Inherited members
class ColorGuide (**data: Any)-
Expand source code
class ColorGuide(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) roles: Annotated[ list[str] | None, Field( description='Named color roles used in the library (e.g., base, shadow_1, highlight_1, stroke)' ), ] = None palettes: Annotated[ list[Palette] | None, Field(description='Named color palettes mapping roles to specific colors'), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var model_configvar palettes : list[Palette] | Nonevar roles : list[str] | None
Inherited members
class ColorRef (root: RootModelRootType = PydanticUndefined, **data)-
Expand source code
class ColorRef(RootModel[ColorRef1 | ColorRef2 | ColorRef3]): root: Annotated[ ColorRef1 | ColorRef2 | ColorRef3, Field( description='Reference to a brand color or usage surface for machine-readable guideline constraints. Use kind=name for palette lookup keys in colors, kind=value for a literal hex color, and kind=surface for layout surfaces such as background or text.' ), ] def __getattr__(self, name: str) -> Any: """Proxy attribute access to the wrapped type.""" if name.startswith('_'): raise AttributeError(name) return getattr(self.root, name)Usage Documentation
A Pydantic
BaseModelfor the root object of the model.- Attributes
- -----=
root- The root object of the model.
__pydantic_root_model__- Whether the model is a RootModel.
__pydantic_private__- Private fields in the model.
__pydantic_extra__- Extra fields in the model.
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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- pydantic.root_model.RootModel[Union[ColorRef1, ColorRef2, ColorRef3]]
- pydantic.root_model.RootModel
- pydantic.main.BaseModel
- typing.Generic
Class variables
var model_configvar root : ColorRef1 | ColorRef2 | ColorRef3
class ColorRef1 (**data: Any)-
Expand source code
class ColorRef1(AdCPBaseModel): model_config = ConfigDict( extra='forbid', ) kind: Annotated[ Literal['name'], Field(description='Discriminator for the color reference variant.') ] = 'name' name: Annotated[ str, Field( description='Key from the colors object, such as market_yellow, river_green, or any custom palette key. Unambiguous lookup into colors{}.' ), ] value: Annotated[ HexColor | None, Field(description='Literal hex color when no palette key exists.') ] = None surface: Annotated[ Surface | None, Field(description='Usage surface rather than a specific color value.') ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var kind : Literal['name']var model_configvar name : strvar surface : Surface | Nonevar value : HexColor | None
Inherited members
class ColorRef2 (**data: Any)-
Expand source code
class ColorRef2(AdCPBaseModel): model_config = ConfigDict( extra='forbid', ) kind: Annotated[ Literal['value'], Field(description='Discriminator for the color reference variant.') ] = 'value' name: Annotated[ str | None, Field( description='Key from the colors object, such as market_yellow, river_green, or any custom palette key. Unambiguous lookup into colors{}.' ), ] = None value: Annotated[HexColor, Field(description='Literal hex color when no palette key exists.')] surface: Annotated[ Surface | None, Field(description='Usage surface rather than a specific color value.') ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var kind : Literal['value']var model_configvar name : str | Nonevar surface : Surface | Nonevar value : HexColor
Inherited members
class ColorRef3 (**data: Any)-
Expand source code
class ColorRef3(AdCPBaseModel): model_config = ConfigDict( extra='forbid', ) kind: Annotated[ Literal['surface'], Field(description='Discriminator for the color reference variant.') ] = 'surface' name: Annotated[ str | None, Field( description='Key from the colors object, such as market_yellow, river_green, or any custom palette key. Unambiguous lookup into colors{}.' ), ] = None value: Annotated[ HexColor | None, Field(description='Literal hex color when no palette key exists.') ] = None surface: Annotated[ Surface, Field(description='Usage surface rather than a specific color value.') ]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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var kind : Literal['surface']var model_configvar name : str | Nonevar surface : Surfacevar value : HexColor | None
Inherited members
class ColorTemperature (*args, **kwds)-
Expand source code
class ColorTemperature(StrEnum): warm = 'warm' neutral = 'neutral' cool = 'cool'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var coolvar neutralvar warm
class ColorValue (root: RootModelRootType = PydanticUndefined, **data)-
Expand source code
class ColorValue(RootModel[ColorValue1 | ColorValue2]): root: ColorValue1 | ColorValue2 def __getattr__(self, name: str) -> Any: """Proxy attribute access to the wrapped type.""" if name.startswith('_'): raise AttributeError(name) return getattr(self.root, name)Usage Documentation
A Pydantic
BaseModelfor the root object of the model.- Attributes
- -----=
root- The root object of the model.
__pydantic_root_model__- Whether the model is a RootModel.
__pydantic_private__- Private fields in the model.
__pydantic_extra__- Extra fields in the model.
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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- pydantic.root_model.RootModel[Union[ColorValue1, ColorValue2]]
- pydantic.root_model.RootModel
- pydantic.main.BaseModel
- typing.Generic
Class variables
var model_configvar root : ColorValue1 | ColorValue2
class ColorValue1 (value: Any = <object object>, *, root: Any = <object object>)-
Expand source code
class ColorValue1(ScalarStr): __slots__ = () _constraints = {'pattern': '^#[0-9A-Fa-f]{6}$'}A
strgenerated from a JSON Schema string root.Ancestors
- adcp.types._scalar.ScalarStr
- adcp.types._scalar._ScalarRoot
- builtins.str
Subclasses
class ColorValue2 (root: RootModelRootType = PydanticUndefined, **data)-
Expand source code
class ColorValue2(RootModel[list[ColorValue2Item]]): root: Annotated[list[ColorValue2Item], Field(min_length=1)]Usage Documentation
A Pydantic
BaseModelfor the root object of the model.- Attributes
- -----=
root- The root object of the model.
__pydantic_root_model__- Whether the model is a RootModel.
__pydantic_private__- Private fields in the model.
__pydantic_extra__- Extra fields in the model.
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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- pydantic.root_model.RootModel[list[ColorValue2Item]]
- pydantic.root_model.RootModel
- pydantic.main.BaseModel
- typing.Generic
Class variables
var model_configvar root : list[ColorValue2Item]
class ColorValue2Item (value: Any = <object object>, *, root: Any = <object object>)-
Expand source code
class ColorValue2Item(ColorValue1): passA
strgenerated from a JSON Schema string root.Ancestors
- ColorValue1
- adcp.types._scalar.ScalarStr
- adcp.types._scalar._ScalarRoot
- builtins.str
class Colors (**data: Any)-
Expand source code
class Colors(AdCPBaseModel): __pydantic_extra__: Dict[str, ColorValue] model_config = ConfigDict( extra='allow', ) primary: ColorValue | None = None secondary: ColorValue | None = None accent: ColorValue | None = None background: ColorValue | None = None text: ColorValue | None = None heading: ColorValue | None = None body: ColorValue | None = None label: ColorValue | None = None border: ColorValue | None = None divider: ColorValue | None = None surface_1: ColorValue | None = None surface_2: ColorValue | None = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var accent : ColorValue | Nonevar background : ColorValue | Nonevar body : ColorValue | Nonevar border : ColorValue | Nonevar divider : ColorValue | Nonevar heading : ColorValue | Nonevar label : ColorValue | Nonevar model_configvar primary : ColorValue | Nonevar secondary : ColorValue | Nonevar surface_1 : ColorValue | Nonevar surface_2 : ColorValue | Nonevar text : ColorValue | None
Inherited members
class Colors1 (**data: Any)-
Expand source code
class Colors1(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) primary: Annotated[str | None, Field(pattern='^#[0-9a-fA-F]{6}$')] = None secondary: Annotated[str | None, Field(pattern='^#[0-9a-fA-F]{6}$')] = None accent: Annotated[str | None, Field(pattern='^#[0-9a-fA-F]{6}$')] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var accent : str | Nonevar model_configvar primary : str | Nonevar secondary : str | None
Inherited members
class Colorway (**data: Any)-
Expand source code
class Colorway(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) name: Annotated[str, Field(description="Colorway name (e.g., 'primary', 'inverted', 'subtle')")] foreground: HexColor background: HexColor accent: HexColor | None = None border: HexColor | None = None cta_foreground: Annotated[ HexColor | None, Field(description='CTA text/icon color, if different from foreground') ] = None cta_background: Annotated[ HexColor | None, Field(description='CTA button/container color, if different from accent') ] = None channels: Annotated[ list[str] | None, Field( description="Channels or contexts where this colorway applies (e.g., 'online', 'print', 'pos', 'social', 'outdoor'). Omit for universal colorways." ), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var accent : HexColor | Nonevar background : HexColorvar border : HexColor | Nonevar channels : list[str] | Nonevar cta_background : HexColor | Nonevar cta_foreground : HexColor | Nonevar foreground : HexColorvar model_configvar name : str
Inherited members
class CompositionRules (**data: Any)-
Expand source code
class CompositionRules(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) overlays: Annotated[Overlays | None, Field(description='Graphic overlay rules')] = None texture: Annotated[Texture | None, Field(description='Texture treatment rules')] = None backgrounds: Annotated[Backgrounds | None, Field(description='Background treatment rules')] = ( 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var backgrounds : Backgrounds | Nonevar model_configvar overlays : Overlays | Nonevar texture : Texture | None
Inherited members
class Contact (**data: Any)-
Expand source code
class Contact(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) name: Annotated[str, Field(max_length=255, min_length=1)] email: Annotated[EmailStr | None, Field(max_length=255)] = None domain: Domain | None = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var domain : Domain | Nonevar email : pydantic.networks.EmailStr | Nonevar model_configvar name : str
Inherited members
class Contact1 (**data: Any)-
Expand source code
class Contact1(AdCPBaseModel): email: Annotated[EmailStr | None, Field(description='Contact email')] = None phone: Annotated[str | None, Field(description='Contact phone number')] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var email : pydantic.networks.EmailStr | Nonevar model_configvar phone : str | None
Inherited members
class Contrast (*args, **kwds)-
Expand source code
class Contrast(StrEnum): low = 'low' medium = 'medium' high = 'high'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var highvar lowvar medium
class CornerStyle (*args, **kwds)-
Expand source code
class CornerStyle(StrEnum): rounded = 'rounded' square = 'square' mixed = 'mixed'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var mixedvar roundedvar square
class Country (value: Any = <object object>, *, root: Any = <object object>)-
Expand source code
class Country(ScalarStr): __slots__ = () _constraints = {'max_length': 2, 'min_length': 2}A
strgenerated from a JSON Schema string root.Ancestors
- adcp.types._scalar.ScalarStr
- adcp.types._scalar._ScalarRoot
- builtins.str
class Country1 (value: Any = <object object>, *, root: Any = <object object>)-
Expand source code
class Country1(ScalarStr): __slots__ = () _constraints = {'pattern': '^[A-Z]{2}$'}A
strgenerated from a JSON Schema string root.Ancestors
- adcp.types._scalar.ScalarStr
- adcp.types._scalar._ScalarRoot
- builtins.str
class DataSubjectContestation (**data: Any)-
Expand source code
class DataSubjectContestation(AdCPBaseModel): model_config = ConfigDict( extra='forbid', ) url: Annotated[ AnyUrl | None, Field(description='HTTPS URL to a human-accessible contestation form or information page.'), ] = None email: Annotated[ EmailStr | None, Field( description='Email address for contestation requests. Deployer MUST monitor and respond within the timelines set by applicable law (e.g., 1 month under GDPR Art. 12(3)).' ), ] = None languages: Annotated[ list[str] | None, Field( description="BCP 47 language tags the contestation channel supports (e.g., ['en', 'de', 'fr']). At minimum SHOULD include a language spoken in every jurisdiction where the brand runs regulated-vertical campaigns." ), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var email : pydantic.networks.EmailStr | Nonevar languages : list[str] | Nonevar model_configvar url : pydantic.networks.AnyUrl | None
Inherited members
class DataSubjectContestation1 (**data: Any)-
Expand source code
class DataSubjectContestation1(AdCPBaseModel): model_config = ConfigDict( extra='forbid', ) url: AnyUrl | None = None email: EmailStr | None = None languages: list[str] | None = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var email : pydantic.networks.EmailStr | Nonevar languages : list[str] | Nonevar model_configvar url : pydantic.networks.AnyUrl | None
Inherited members
class DeclaredBy (**data: Any)-
Expand source code
class DeclaredBy(AdCPBaseModel): agent_url: Annotated[ AnyUrl | None, Field(description='URL of the agent or service that declared this provenance'), ] = None role: Annotated[Role, Field(description='Role of the declaring party in the supply chain')]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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var agent_url : pydantic.networks.AnyUrl | Nonevar model_configvar role : Role
Inherited members
class DefaultLanguage (**data: Any)-
Expand source code
class DefaultLanguage(AdCPBaseModel): passBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var model_config
Inherited members
class DepthOfField (*args, **kwds)-
Expand source code
class DepthOfField(StrEnum): shallow = 'shallow' medium = 'medium' deep = 'deep'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var deepvar mediumvar shallow
class DigitalSourceType (*args, **kwds)-
Expand source code
class DigitalSourceType(StrEnum): digital_capture = 'digital_capture' digital_creation = 'digital_creation' trained_algorithmic_media = 'trained_algorithmic_media' composite_with_trained_algorithmic_media = 'composite_with_trained_algorithmic_media' algorithmic_media = 'algorithmic_media' composite_capture = 'composite_capture' composite_synthetic = 'composite_synthetic' human_edits = 'human_edits' data_driven_media = 'data_driven_media'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var algorithmic_mediavar composite_capturevar composite_syntheticvar composite_with_trained_algorithmic_mediavar data_driven_mediavar digital_capturevar digital_creationvar human_editsvar trained_algorithmic_media
class Disclaimer (**data: Any)-
Expand source code
class Disclaimer(AdCPBaseModel): text: str context: str | None = None required: StrictBool | None = TrueBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var context : str | Nonevar model_configvar required : bool | Nonevar text : str
Inherited members
class Disclosure (**data: Any)-
Expand source code
class Disclosure(AdCPBaseModel): required: Annotated[ StrictBool, Field( description="The declaring party's claim that AI disclosure is required for this content under applicable regulations. This is a declared signal carried through the supply chain — useful as a routing and audit input — not a regulatory determination made by the protocol. Receiving parties remain responsible for their own jurisdictional analysis and should not treat `required: false` as compliance cover." ), ] jurisdictions: Annotated[ list[Jurisdiction] | None, Field(description='Jurisdictions where disclosure obligations apply', min_length=1), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var jurisdictions : list[Jurisdiction] | Nonevar model_configvar required : bool
Inherited members
class DisclosurePersistence (*args, **kwds)-
Expand source code
class DisclosurePersistence(StrEnum): continuous = 'continuous' initial = 'initial' flexible = 'flexible'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var continuousvar flexiblevar initial
class DisclosurePosition (*args, **kwds)-
Expand source code
class DisclosurePosition(StrEnum): prominent = 'prominent' footer = 'footer' audio = 'audio' subtitle = 'subtitle' overlay = 'overlay' end_card = 'end_card' pre_roll = 'pre_roll' companion = 'companion'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var audiovar companionvar end_cardvar overlayvar pre_rollvar prominentvar subtitle
class Domain (value: Any = <object object>, *, root: Any = <object object>)-
Expand source code
class Domain(ScalarStr): __slots__ = () _constraints = { 'pattern': '^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$', } _json_schema_extra = {'description': 'A valid domain name'}A
strgenerated from a JSON Schema string root.Ancestors
- adcp.types._scalar.ScalarStr
- adcp.types._scalar._ScalarRoot
- builtins.str
class Elevation (**data: Any)-
Expand source code
class Elevation(AdCPBaseModel): __pydantic_extra__: Dict[str, str] model_config = ConfigDict( extra='allow', ) none: Annotated[str | None, Field(description="No shadow (e.g., 'none')")] = None subtle: Annotated[ str | None, Field(description="Subtle shadow for slight lift (e.g., '0 1px 2px rgba(0,0,0,0.05)')"), ] = None card: Annotated[ str | None, Field( description="Card-level shadow (e.g., '0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -2px rgba(0,0,0,0.1)')" ), ] = None modal: Annotated[ str | None, Field( description="Modal/overlay shadow (e.g., '0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1)')" ), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var card : str | Nonevar modal : str | Nonevar model_configvar none : str | Nonevar subtle : str | None
Inherited members
class EmbeddedProvenanceItem (**data: Any)-
Expand source code
class EmbeddedProvenanceItem(AdCPBaseModel): method: Annotated[ EmbeddedProvenanceMethod, Field(description='How provenance data is carried within the content'), ] standard: Annotated[ str | None, Field( description="Standard the embedding conforms to, if any (e.g., 'c2pa' for C2PA Section A.7 text manifest embedding)" ), ] = None provider: Annotated[ str, Field( description="Organization that performed the embedding (e.g., 'Encypher', 'Digimarc'). Display label and audit context — not a wire identifier." ), ] verify_agent: Annotated[ VerifyAgent | None, Field( description="Buyer's representation that this embedding can be verified by a governance agent on the seller's `creative_policy.accepted_verifiers` list. The `agent_url` MUST match (canonicalized) one of the seller's published `accepted_verifiers[].agent_url` entries; sellers reject `sync_creatives` submissions whose `verify_agent.agent_url` is off-list with `PROVENANCE_VERIFIER_NOT_ACCEPTED`. This is buyer-supplied evidence, not buyer-driven routing — the seller is the verifier-of-record and the seller controls which agent it actually calls (the seller MAY use a different on-list agent if it determines this is more appropriate; the seller does not call buyer-asserted endpoints outside its allowlist). MAY be omitted for self-verifiable embeddings (e.g., a C2PA text manifest with a public key the seller already trusts)." ), ] = None embedded_at: Annotated[ AwareDatetime | None, Field(description='When the provenance data was embedded (ISO 8601)') ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var embedded_at : pydantic.types.AwareDatetime | Nonevar method : EmbeddedProvenanceMethodvar model_configvar provider : strvar standard : str | Nonevar verify_agent : VerifyAgent | None
Inherited members
class EmbeddedProvenanceMethod (*args, **kwds)-
Expand source code
class EmbeddedProvenanceMethod(StrEnum): manifest_wrapper = 'manifest_wrapper' provenance_markers = 'provenance_markers'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var manifest_wrappervar provenance_markers
class Ext (**data: Any)-
Expand source code
class Ext(AdCPBaseModel): model_config = ConfigDict( extra='allow', )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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var model_config
Inherited members
class Fallback (value: Any = <object object>, *, root: Any = <object object>)-
Expand source code
class Fallback(ScalarStr): __slots__ = () _constraints = {'max_length': 100}A
strgenerated from a JSON Schema string root.Ancestors
- adcp.types._scalar.ScalarStr
- adcp.types._scalar._ScalarRoot
- builtins.str
class FeedFormat (*args, **kwds)-
Expand source code
class FeedFormat(StrEnum): google_merchant_center = 'google_merchant_center' facebook_catalog = 'facebook_catalog' shopify = 'shopify' linkedin_jobs = 'linkedin_jobs' tiktok_shop = 'tiktok_shop' pinterest_catalog = 'pinterest_catalog' openai_product_feed = 'openai_product_feed' custom = 'custom'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var customvar facebook_catalogvar google_merchant_centervar linkedin_jobsvar openai_product_feedvar pinterest_catalogvar shopifyvar tiktok_shop
class FocalPointItem (value: Any = <object object>, *, root: Any = <object object>)-
Expand source code
class FocalPointItem(ScalarFloat): __slots__ = () _constraints = {'ge': 0.0, 'le': 1.0}A
floatgenerated from a JSON Schema number root.Strict, like the
StrictFloatthe generator emits for atype: numberfield: anintorfloatis accepted, aboolor numeric string is refused, matching the bundled JSON Schema validator.Ancestors
- adcp.types._scalar.ScalarFloat
- adcp.types._scalar._ScalarRoot
- builtins.float
class FontFile (**data: Any)-
Expand source code
class FontFile(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) url: Annotated[AnyUrl, Field(description='HTTPS URL to the font file (WOFF2, TTF, or OTF)')] weight: Annotated[ SchemaInt | None, Field(description='CSS numeric font-weight for static fonts (100-900)', ge=100, le=900), ] = None weight_range: Annotated[ list[WeightRangeItem] | None, Field( description='Variable font weight axis range as [min, max] (e.g., [100, 900]). Use instead of weight for variable fonts.', max_length=2, min_length=2, ), ] = None style: Annotated[Style | None, Field(description='CSS font-style')] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var model_configvar style : Style | Nonevar url : pydantic.networks.AnyUrlvar weight : int | Nonevar weight_range : list[WeightRangeItem] | None
Inherited members
class FontRole (root: RootModelRootType = PydanticUndefined, **data)-
Expand source code
class FontRole(RootModel[str | FontRole1]): root: Annotated[ str | FontRole1, Field( description='A font role entry. Either a CSS font-family string (simple) or a structured object with family name and font files (rich).' ), ] def __getattr__(self, name: str) -> Any: """Proxy attribute access to the wrapped type.""" if name.startswith('_'): raise AttributeError(name) return getattr(self.root, name)Usage Documentation
A Pydantic
BaseModelfor the root object of the model.- Attributes
- -----=
root- The root object of the model.
__pydantic_root_model__- Whether the model is a RootModel.
__pydantic_private__- Private fields in the model.
__pydantic_extra__- Extra fields in the model.
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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- pydantic.root_model.RootModel[Union[str, FontRole1]]
- pydantic.root_model.RootModel
- pydantic.main.BaseModel
- typing.Generic
Class variables
var model_configvar root : str | FontRole1
class FontRole1 (**data: Any)-
Expand source code
class FontRole1(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) family: Annotated[str, Field(description="CSS font-family name (e.g., 'Brand Sans')")] files: Annotated[ list[FontFile] | None, Field(description='Font files for different weights and styles', max_length=36), ] = None opentype_features: Annotated[ list[OpentypeFeature] | None, Field( description="OpenType feature tags to enable (e.g., ['ss01', 'tnum', 'cv01']). These are four-character tags per the OpenType spec.", max_length=20, ), ] = None fallbacks: Annotated[ list[Fallback] | None, Field( description="Ordered fallback font-family names for when the primary font is unavailable or does not support the required script (e.g., ['Noto Sans Arabic', 'Noto Sans SC', 'sans-serif'])", max_length=10, ), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var fallbacks : list[Fallback] | Nonevar family : strvar files : list[FontFile] | Nonevar model_configvar opentype_features : list[OpentypeFeature] | None
Inherited members
class Fonts (**data: Any)-
Expand source code
class Fonts(AdCPBaseModel): __pydantic_extra__: Dict[str, FontRole] model_config = ConfigDict( extra='allow', ) primary: Annotated[FontRole | None, Field(description='Primary font family')] = None secondary: Annotated[FontRole | None, Field(description='Secondary font family')] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var model_configvar primary : FontRole | Nonevar secondary : FontRole | None
Inherited members
class Framing (**data: Any)-
Expand source code
class Framing(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) subject_position: Annotated[ str | None, Field( description="Where the subject sits in frame (e.g., 'center', 'center-left', 'rule-of-thirds')" ), ] = None crop_style: Annotated[ str | None, Field( description="Cropping convention (e.g., 'waist-up', 'full-body', 'close-up', 'wide')" ), ] = None perspective: Annotated[ str | None, Field(description="Camera perspective (e.g., 'eye-level', 'overhead', 'low-angle')"), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var crop_style : str | Nonevar model_configvar perspective : str | Nonevar subject_position : str | None
Inherited members
class GradientStyle (*args, **kwds)-
Expand source code
class GradientStyle(StrEnum): linear = 'linear' radial = 'radial' conic = 'conic' none = 'none'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var conicvar linearvar nonevar radial
class GraphicElement (**data: Any)-
Expand source code
class GraphicElement(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) name: Annotated[ str, Field( description="Element name (e.g., 'Paper Tear', 'Brand Watermark', 'Section Divider')" ), ] type: Annotated[Type1 | None, Field(description='Element type')] = None description: Annotated[str | None, Field(description='How the element is used in layouts')] = ( None ) orientation: Annotated[ Orientation1 | None, Field(description='Preferred orientation when used in layouts') ] = None colors: Annotated[ list[HexColor] | None, Field(description='Colors this element may appear in') ] = None max_per_layout: Annotated[ SchemaInt | None, Field(description='Maximum instances per layout') ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var colors : list[HexColor] | Nonevar description : str | Nonevar max_per_layout : int | Nonevar model_configvar name : strvar orientation : Orientation1 | Nonevar type : Type1 | None
Inherited members
class GraphicStyle (**data: Any)-
Expand source code
class GraphicStyle(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) style_type: Annotated[StyleType | None, Field(description='Primary graphic style')] = None stroke_style: Annotated[StrokeStyle | None, Field(description='Stroke end/join style')] = None stroke_weight: Annotated[ str | None, Field(description="Stroke weight (e.g., '2px', 'thin', 'bold')") ] = None corner_radius: Annotated[ str | None, Field( description="Default corner radius for graphic and illustration elements (e.g., '12px', '8px', 'sharp'). For UI component radii (buttons, cards, inputs), see visual_guidelines.border_radius." ), ] = None tags: Annotated[list[str] | None, Field(description='Additional style descriptors')] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var corner_radius : str | Nonevar model_configvar stroke_style : StrokeStyle | Nonevar stroke_weight : str | Nonevar style_type : StyleType | None
Inherited members
class GuidelineSeverity (*args, **kwds)-
Expand source code
class GuidelineSeverity(StrEnum): must = 'must' should = 'should'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var mustvar should
class HexColor (value: Any = <object object>, *, root: Any = <object object>)-
Expand source code
class HexColor(ScalarStr): __slots__ = () _constraints = {'pattern': '^#[0-9A-Fa-f]{6}$'} _json_schema_extra = {'description': 'A single hex color value'}A
strgenerated from a JSON Schema string root.Ancestors
- adcp.types._scalar.ScalarStr
- adcp.types._scalar._ScalarRoot
- builtins.str
class House (**data: Any)-
Expand source code
class House(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) domain: Annotated[Domain, Field(description="The house's domain where brand.json is hosted")] name: Annotated[str, Field(description='Primary display name of the house', min_length=1)] names: Annotated[ list[LocalizedName] | None, Field(description='Localized house names including legal name, stock symbol, etc.'), ] = None architecture: Annotated[ Architecture | None, Field( description='Brand architecture model: branded_house (Google), house_of_brands (P&G), hybrid (Nike)' ), ] = None agents: Annotated[ Agents | None, Field( description='House-level agents that apply to all brands unless overridden at the brand level' ), ] = None data_subject_contestation: Annotated[ DataSubjectContestation | None, Field( description='House-level fallback contestation contact. Governance agents resolve in order: brand.data_subject_contestation → house.data_subject_contestation → missing (critical finding when human review required).' ), ] = None identity_relying_parties: Annotated[ list[IdentityRelyingParty] | None, Field( description="Verified-identity relying parties this house/entity operates, so a buyer can verify that a forwarded TMP identity attestation's relying_party_id genuinely belongs to this entity (provenance) rather than being replayed under another owner. For network-as-RP, the network publishes its own relying_party_id here. See specs/tmp-verified-identity-attestation.md." ), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var agents : Agents | Nonevar architecture : Architecture | Nonevar data_subject_contestation : DataSubjectContestation | Nonevar domain : Domainvar identity_relying_parties : list[IdentityRelyingParty] | Nonevar model_configvar name : strvar names : list[LocalizedName] | None
Inherited members
class HumanOversight (*args, **kwds)-
Expand source code
class HumanOversight(StrEnum): none = 'none' prompt_only = 'prompt_only' selected = 'selected' edited = 'edited' directed = 'directed'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var directedvar editedvar nonevar prompt_onlyvar selected
class Iconography (**data: Any)-
Expand source code
class Iconography(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) style: Annotated[Style1 | None, Field(description='Icon rendering style')] = None stroke_weight: Annotated[ str | None, Field(description="Icon stroke weight (e.g., '2px', '1.5px')") ] = None corner_style: Annotated[ CornerStyle | None, Field(description='Corner style for icon paths') ] = None usage: Annotated[Usage1 | None, Field(description='Icon usage rules')] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var corner_style : CornerStyle | Nonevar model_configvar stroke_weight : str | Nonevar style : Style1 | Nonevar usage : Usage1 | None
Inherited members
class IdentityRelyingParty (**data: Any)-
Expand source code
class IdentityRelyingParty(AdCPBaseModel): model_config = ConfigDict( extra='forbid', ) issuer: Annotated[ BrandRef, Field( description='Identity issuer / attestation authority, referenced as a vendor BrandRef (e.g. {"domain": "world.org"}) — the same vendor-reference shape AdCP uses for measurement and signals vendors. The issuer\'s canonical domain is the anchor; it need not host a brand.json, but if it does, that is where its verifier metadata (scheme versions, verify endpoint, JWKs) lives. Issuer-agnostic: World ID, ISO 18013-5 mDL, and W3C-VC issuers all reference by domain. The relying party is namespaced by the issuer — identity is the tuple (issuer.domain, issuer.brand_id, relying_party_id), mirroring (vendor.domain, vendor.brand_id, metric_id).' ), ] scheme: Annotated[ str | None, Field(description='Proof scheme and version, e.g. "world_id_v4".') ] = None relying_party_id: Annotated[ str, Field( description="The relying-party id registered with the issuer (and, for on-chain issuers like World ID, with the issuer's registry). One entity may operate many relying parties (scope=entity vs scope=property); this is the attestation's audience / linkability boundary, not an entity identifier." ), ] scope: Annotated[ Scope | None, Field( description="Whether this relying_party_id is shared across the entity's properties (entity → a within-entity unique-human graph) or scoped to a single property (property → per-property pseudonyms, unlinkable across the entity)." ), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var issuer : BrandRefvar model_configvar relying_party_id : strvar scheme : str | Nonevar scope : Scope | None
Inherited members
class ImageAsset (**data: Any)-
Expand source code
class ImageAsset(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) asset_type: Annotated[ Literal['image'], Field( description='Discriminator identifying this as an image asset. See /schemas/creative/asset-types for the registry.' ), ] = 'image' url: Annotated[AnyUrl, Field(description='URL to the image asset')] width: Annotated[SchemaInt, Field(description='Width in pixels', ge=1)] height: Annotated[SchemaInt, Field(description='Height in pixels', ge=1)] file_size_bytes: Annotated[ SchemaInt | None, Field( description='Image file size in bytes. Required by agents that advertise a max_file_size_kb constraint.', ge=1, ), ] = None pixel_ratio: Annotated[ StrictFloat | None, Field( description='Intrinsic pixels per logical render pixel (for example `2` for a 600×500 image intended to render at 300×250). Optional because a validator can infer the ratio when the target format declares logical dimensions. When supplied, it MUST agree with both `width / logical_width` and `height / logical_height`; it is never a substitute for the intrinsic `width` and `height` fields.', gt=0.0, ), ] = None state_id: Annotated[ str | None, Field( description='Binding used only when this image populates a `seller_rendered_stateful_display` `state_canvases` slot. It MUST match one declared `states[].state_id` (semantic validators resolve it). Omit for ordinary image slots.' ), ] = None breakpoint_id: Annotated[ str | None, Field( description='Binding used only when this image populates a `seller_rendered_stateful_display` `state_canvases` slot. It MUST match one breakpoint declared on the selected state (semantic validators resolve it). Omit for ordinary image slots.' ), ] = None focal_point: Annotated[ list[FocalPointItem] | None, Field( description="Normalized `[x, y]` coordinates (0–1 from top-left) of the image's visual anchor. Seller-side renderers crop toward the focal point when deriving renditions across breakpoints and aspect ratios; absent, cropping falls back to center-weighted defaults.", max_length=2, min_length=2, ), ] = None format: Annotated[ str | None, Field(description='Image file format (jpg, png, gif, webp, etc.)') ] = None alt_text: Annotated[str | None, Field(description='Alternative text for accessibility')] = None provenance: Annotated[ Provenance | None, Field( description='Provenance metadata for this asset, overrides manifest-level provenance' ), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var alt_text : str | Nonevar asset_type : Literal['image']var breakpoint_id : str | Nonevar file_size_bytes : int | Nonevar focal_point : list[FocalPointItem] | Nonevar format : str | Nonevar height : intvar model_configvar pixel_ratio : float | Nonevar provenance : Provenance | Nonevar state_id : str | Nonevar url : pydantic.networks.AnyUrlvar width : int
Inherited members
class Jurisdiction (**data: Any)-
Expand source code
class Jurisdiction(AdCPBaseModel): country: Annotated[ str, Field(description="ISO 3166-1 alpha-2 country code (e.g., 'US', 'DE', 'CN')") ] region: Annotated[ str | None, Field(description="Sub-national region code (e.g., 'CA' for California, 'BY' for Bavaria)"), ] = None regulation: Annotated[ str, Field( description="Regulation identifier (e.g., 'eu_ai_act_article_50', 'ca_sb_942', 'cn_deep_synthesis')" ), ] label_text: Annotated[ str | None, Field( description='Required disclosure label text for this jurisdiction, in the local language' ), ] = None render_guidance: Annotated[ RenderGuidance | None, Field( description="How the disclosure should be rendered for this jurisdiction. Expresses the declaring party's intent for persistence and position based on regulatory requirements. Publishers control actual rendering but governance agents can audit whether guidance was followed." ), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var country : strvar label_text : str | Nonevar model_configvar region : str | Nonevar regulation : strvar render_guidance : RenderGuidance | None
Inherited members
class KellerType (*args, **kwds)-
Expand source code
class KellerType(StrEnum): master = 'master' sub_brand = 'sub_brand' endorsed = 'endorsed' independent = 'independent'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var endorsedvar independentvar mastervar sub_brand
class Kind (*args, **kwds)-
Expand source code
class Kind(StrEnum): name = 'name' value = 'value' surface = 'surface'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var namevar surfacevar value
class LicenseType (*args, **kwds)-
Expand source code
class LicenseType(StrEnum): owned = 'owned' licensed_in = 'licensed_in' licensed_out = 'licensed_out'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var licensed_invar licensed_outvar owned
class LocaleTag (value: Any = <object object>, *, root: Any = <object object>)-
Expand source code
class LocaleTag(ScalarStr): __slots__ = () _constraints = { 'max_length': 63, 'min_length': 2, 'pattern': '^(?:[a-z]{2,8}(?:-[A-Z][a-z]{3})?(?:-(?:[A-Z]{2}|[0-9]{3}))?(?:-(?:[a-z0-9]{5,8}|[0-9][a-z0-9]{3}))*(?:-[0-9a-wy-z](?:-[a-z0-9]{2,8})+)*(?:-x(?:-[a-z0-9]{1,8})+)?|x(?:-[a-z0-9]{1,8})+)$', } _json_schema_extra = { 'description': 'A well-formed BCP 47 language tag used by AdCP only as language identity. Script and region may refine that identity; other valid BCP 47 subtags remain part of tag matching but do not make this a general locale-settings object. It does not determine currency, time zone, number/date formatting, market, or legal jurisdiction. The AdCP canonical wire profile requires lower-case language and variants, title-case script, and upper-case region (for example `en-US`, `zh-Hant-TW`, or `x-private`). RFC 5646 comparisons are case-insensitive and its case regularization is optional; AdCP intentionally requires this stricter single wire spelling and receivers MUST reject differently cased tags rather than silently normalizing them. The schema pattern enforces the AdCP casing profile and extension structure for commonly used tags; conforming receivers additionally validate the complete RFC 5646 grammar and registry rules. Every new AdCP field carrying BCP 47 language identity or a concrete language range MUST reference this schema instead of declaring independent string constraints.', 'examples': ['en-US', 'es-ES', 'zh-Hant-TW', 'x-private'], 'title': 'Language Tag', }A
strgenerated from a JSON Schema string root.Ancestors
- adcp.types._scalar.ScalarStr
- adcp.types._scalar._ScalarRoot
- builtins.str
class LocalizedName (root: RootModelRootType = PydanticUndefined, **data)-
Expand source code
class LocalizedName(RootModel[dict[str, str]]): root: Annotated[dict[str, str], Field(max_length=1, min_length=1)]Usage Documentation
A Pydantic
BaseModelfor the root object of the model.- Attributes
- -----=
root- The root object of the model.
__pydantic_root_model__- Whether the model is a RootModel.
__pydantic_private__- Private fields in the model.
__pydantic_extra__- Extra fields in the model.
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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- pydantic.root_model.RootModel[dict[str, str]]
- pydantic.root_model.RootModel
- pydantic.main.BaseModel
- typing.Generic
Class variables
var model_configvar root : dict[str, str]
class LocalizedScalar (root: RootModelRootType = PydanticUndefined, **data)-
Expand source code
class LocalizedScalar(RootModel[str | LocalizedScalar1]): root: Annotated[ str | LocalizedScalar1, Field( description="A legacy plain string or an ordered set of one-locale string maps. Producers MUST NOT repeat a locale after replacing '_' with '-' and applying the AdCP locale-tag canonicalization profile. Readers resolve the requested locale using the document default_language fallback contract and MUST NOT choose an arbitrary available translation." ), ] def __getattr__(self, name: str) -> Any: """Proxy attribute access to the wrapped type.""" if name.startswith('_'): raise AttributeError(name) return getattr(self.root, name)Usage Documentation
A Pydantic
BaseModelfor the root object of the model.- Attributes
- -----=
root- The root object of the model.
__pydantic_root_model__- Whether the model is a RootModel.
__pydantic_private__- Private fields in the model.
__pydantic_extra__- Extra fields in the model.
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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- pydantic.root_model.RootModel[Union[str, LocalizedScalar1]]
- pydantic.root_model.RootModel
- pydantic.main.BaseModel
- typing.Generic
Class variables
var model_configvar root : str | LocalizedScalar1
class LocalizedScalar1 (root: RootModelRootType = PydanticUndefined, **data)-
Expand source code
class LocalizedScalar1(RootModel[list[LocalizedName]]): root: Annotated[ list[LocalizedName], Field( description="A legacy plain string or an ordered set of one-locale string maps. Producers MUST NOT repeat a locale after replacing '_' with '-' and applying the AdCP locale-tag canonicalization profile. Readers resolve the requested locale using the document default_language fallback contract and MUST NOT choose an arbitrary available translation.", min_length=1, ), ]Usage Documentation
A Pydantic
BaseModelfor the root object of the model.- Attributes
- -----=
root- The root object of the model.
__pydantic_root_model__- Whether the model is a RootModel.
__pydantic_private__- Private fields in the model.
__pydantic_extra__- Extra fields in the model.
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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- pydantic.root_model.RootModel[list[LocalizedName]]
- pydantic.root_model.RootModel
- pydantic.main.BaseModel
- typing.Generic
Class variables
var model_configvar root : list[LocalizedName]
class LocalizedStringList (root: RootModelRootType = PydanticUndefined, **data)-
Expand source code
class LocalizedStringList(RootModel[list[str] | LocalizedStringList1]): root: Annotated[ list[str] | LocalizedStringList1, Field( description="A legacy plain string list or an ordered set of one-locale maps whose values are complete string lists. Producers MUST NOT repeat a locale after replacing '_' with '-' and applying the AdCP locale-tag canonicalization profile." ), ] def __getattr__(self, name: str) -> Any: """Proxy attribute access to the wrapped type.""" if name.startswith('_'): raise AttributeError(name) return getattr(self.root, name)Usage Documentation
A Pydantic
BaseModelfor the root object of the model.- Attributes
- -----=
root- The root object of the model.
__pydantic_root_model__- Whether the model is a RootModel.
__pydantic_private__- Private fields in the model.
__pydantic_extra__- Extra fields in the model.
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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- pydantic.root_model.RootModel[Union[list[str], LocalizedStringList1]]
- pydantic.root_model.RootModel
- pydantic.main.BaseModel
- typing.Generic
Class variables
var model_configvar root : list[str] | LocalizedStringList1
class LocalizedStringList1 (root: RootModelRootType = PydanticUndefined, **data)-
Expand source code
class LocalizedStringList1(RootModel[list[LocalizedStringListEntry]]): root: Annotated[ list[LocalizedStringListEntry], Field( description="A legacy plain string list or an ordered set of one-locale maps whose values are complete string lists. Producers MUST NOT repeat a locale after replacing '_' with '-' and applying the AdCP locale-tag canonicalization profile.", min_length=1, ), ]Usage Documentation
A Pydantic
BaseModelfor the root object of the model.- Attributes
- -----=
root- The root object of the model.
__pydantic_root_model__- Whether the model is a RootModel.
__pydantic_private__- Private fields in the model.
__pydantic_extra__- Extra fields in the model.
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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- pydantic.root_model.RootModel[list[LocalizedStringListEntry]]
- pydantic.root_model.RootModel
- pydantic.main.BaseModel
- typing.Generic
Class variables
var model_configvar root : list[LocalizedStringListEntry]
class LocalizedStringListEntry (root: RootModelRootType = PydanticUndefined, **data)-
Expand source code
class LocalizedStringListEntry(RootModel[dict[str, list[str]]]): root: Annotated[dict[str, list[str]], Field(max_length=1, min_length=1)]Usage Documentation
A Pydantic
BaseModelfor the root object of the model.- Attributes
- -----=
root- The root object of the model.
__pydantic_root_model__- Whether the model is a RootModel.
__pydantic_private__- Private fields in the model.
__pydantic_extra__- Extra fields in the model.
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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- pydantic.root_model.RootModel[dict[str, list[str]]]
- pydantic.root_model.RootModel
- pydantic.main.BaseModel
- typing.Generic
Class variables
var model_configvar root : dict[str, list[str]]
class LockupType (*args, **kwds)-
Expand source code
class LockupType(StrEnum): co_brand = 'co_brand' secondary_mark = 'secondary_mark' partner = 'partner' sponsor = 'sponsor' program = 'program' talent = 'talent' custom = 'custom'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var co_brandvar customvar partnervar programvar secondary_markvar sponsorvar talent
class Logo (**data: Any)-
Expand source code
class Logo(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) id: Annotated[ LogoId | None, Field( description='Stable identifier for this logo entry. Recommended when logo usage rules or mark lockups need to bind to a specific logo asset.' ), ] = None url: Annotated[AnyUrl, Field(description='URL to the logo asset')] orientation: Annotated[ Orientation | None, Field( description='Logo aspect ratio orientation. square: ~1:1, horizontal: wide, vertical: tall, stacked: vertically arranged elements' ), ] = None background: Annotated[ Background | None, Field( description='Background compatibility. dark-bg: use on dark backgrounds, light-bg: use on light backgrounds, transparent-bg: has transparent background' ), ] = None variant: Annotated[ Variant | None, Field( description='Logo variant type. primary: main logo, secondary: alternative, icon: symbol only, wordmark: text only, full-lockup: complete logo' ), ] = None tags: Annotated[ list[str] | None, Field( description='Additional semantic tags for custom categorization beyond the standard orientation, background, and variant fields' ), ] = None slots: Annotated[ list[LogoSlot] | None, Field( description='Canonical renderer slots where this logo is appropriate. Consumers SHOULD prefer this over inferring from tags or usage prose when selecting a logo for a specific UI surface.' ), ] = None usage: Annotated[ str | None, Field( description="Human-readable description of when to use this logo variant (e.g., 'Primary logo for use on light backgrounds')" ), ] = None width: Annotated[SchemaInt | None, Field(description='Width in pixels')] = None height: Annotated[SchemaInt | None, Field(description='Height in pixels')] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var background : Background | Nonevar height : int | Nonevar id : LogoId | Nonevar model_configvar orientation : Orientation | Nonevar slots : list[LogoSlot] | Nonevar url : pydantic.networks.AnyUrlvar usage : str | Nonevar variant : Variant | Nonevar width : int | None
Inherited members
class LogoId (value: Any = <object object>, *, root: Any = <object object>)-
Expand source code
class LogoId(ScalarStr): __slots__ = () _constraints = {'pattern': '^[a-z0-9][a-z0-9_-]*$'} _json_schema_extra = { 'description': 'Stable identifier for a logo entry within this brand.json document. Use lowercase words separated by underscores or hyphens; do not key integrations on mutable asset URLs.', }A
strgenerated from a JSON Schema string root.Ancestors
- adcp.types._scalar.ScalarStr
- adcp.types._scalar._ScalarRoot
- builtins.str
class LogoPlacement (**data: Any)-
Expand source code
class LogoPlacement(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) preferred_position: Annotated[ PreferredPosition | None, Field(description='Preferred logo position in layouts') ] = None min_clear_space: Annotated[ str | None, Field( description="Minimum clear space around the logo, expressed as a multiple of logo height (e.g., '0.5x', '1x') or fixed value (e.g., '16px')" ), ] = None min_height: Annotated[ str | None, Field(description="Minimum logo height to maintain legibility (e.g., '40px', '24px')"), ] = None background_contrast: Annotated[ BackgroundContrast | None, Field(description='Permitted background contrast behind logo') ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var background_contrast : BackgroundContrast | Nonevar min_clear_space : str | Nonevar min_height : str | Nonevar model_configvar preferred_position : PreferredPosition | None
Inherited members
class LogoSlot (*args, **kwds)-
Expand source code
class LogoSlot(StrEnum): logo_card_light = 'logo_card_light' logo_card_dark = 'logo_card_dark' profile_mark = 'profile_mark' favicon = 'favicon' app_icon = 'app_icon' social_profile_mark = 'social_profile_mark' nav_header = 'nav_header' footer = 'footer' email_header = 'email_header' watermark = 'watermark' ad_end_card = 'ad_end_card' co_brand_lockup = 'co_brand_lockup' marketplace_listing = 'marketplace_listing'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var ad_end_cardvar app_iconvar co_brand_lockupvar email_headervar faviconvar logo_card_darkvar logo_card_lightvar marketplace_listingvar profile_markvar watermark
class LogoUsageRule (**data: Any)-
Expand source code
class LogoUsageRule(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) logo_url: Annotated[ AnyUrl | None, Field( description='Specific logo asset URL this rule applies to. Omit when the rule applies by variant or tags.' ), ] = None logo_id: Annotated[ LogoId | None, Field( description='Stable `logos[].id` this rule applies to. Prefer this over logo_url when the rule targets a specific logo entry.' ), ] = None logo_variant: Annotated[ Variant | None, Field(description='Logo variant this rule applies to.') ] = None logo_tags: Annotated[ list[str] | None, Field(description='Logo tags this rule applies to.', min_length=1) ] = None contexts: Annotated[ list[str] | None, Field(description='Creative contexts where this rule applies.') ] = None slots: Annotated[ list[LogoSlot] | None, Field( description='Canonical renderer slots where this rule applies. Use this for deterministic logo-card, profile-mark, end-card, and lockup selection.', min_length=1, ), ] = None minimum_size: Annotated[ MinimumSize | None, Field(description='Minimum rendered size needed for legibility.') ] = None clear_space: Annotated[ str | None, Field( description='Minimum clear space around the logo, expressed in brand terms or units.' ), ] = None allowed_backgrounds: Annotated[ list[ColorRef] | None, Field( description='Background color roles, values, or surfaces where this logo may be placed.' ), ] = None forbidden_backgrounds: Annotated[ list[ColorRef] | None, Field( description='Background color roles, values, or surfaces where this logo must not be placed.' ), ] = None forbidden_contexts: Annotated[ list[str] | None, Field( description='Contexts where this logo must not be used, such as photography_without_knockout.' ), ] = None severity: GuidelineSeverity | None = None description: Annotated[ str | None, Field(description='Human-readable rationale or source-language summary for the rule.'), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var allowed_backgrounds : list[ColorRef] | Nonevar clear_space : str | Nonevar contexts : list[str] | Nonevar description : str | Nonevar forbidden_backgrounds : list[ColorRef] | Nonevar forbidden_contexts : list[str] | Nonevar logo_id : LogoId | Nonevar logo_url : pydantic.networks.AnyUrl | Nonevar logo_variant : Variant | Nonevar minimum_size : MinimumSize | Nonevar model_configvar severity : GuidelineSeverity | Nonevar slots : list[LogoSlot] | None
Inherited members
class MarkLockup (**data: Any)-
Expand source code
class MarkLockup(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) lockup_type: Annotated[ LockupType, Field(description='Type of mark relationship governed by this lockup rule.') ] ordering: Annotated[ Ordering | None, Field( description='Required visual ordering of the brand mark relative to partner or secondary marks.' ), ] = None contexts: Annotated[ list[str] | None, Field(description='Creative contexts where this lockup rule applies.') ] = None brand_logo_id: Annotated[ LogoId | None, Field( description='Stable `logos[].id` for the brand logo this lockup rule is anchored on.' ), ] = None secondary_logo_ids: Annotated[ list[LogoId] | None, Field( description='Stable `logos[].id` values for secondary, program, sponsor, or partner marks governed by this lockup rule when those marks are represented in this brand.json.' ), ] = None separator: Annotated[ Separator | None, Field(description='Separator between marks, when required.') ] = None min_gap: Annotated[ str | None, Field(description='Minimum gap between marks, expressed in brand terms or units.'), ] = None brand_min_optical_weight_ratio: Annotated[ StrictFloat | None, Field( description='Minimum optical weight of the brand mark relative to partner marks. 1 means at least equal.', gt=0.0, ), ] = None partner_max_optical_weight_ratio: Annotated[ StrictFloat | None, Field( description='Maximum optical weight of partner marks relative to the brand mark. 1 means no larger than the brand mark. Enforcement is at layout time, not parse time — this value signals to renderers and creative agents how much space to provision for each mark.', gt=0.0, ), ] = None severity: GuidelineSeverity | None = None description: Annotated[ str | None, Field( description='Human-readable rationale or source-language summary for the lockup rule.' ), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var brand_logo_id : LogoId | Nonevar brand_min_optical_weight_ratio : float | Nonevar contexts : list[str] | Nonevar description : str | Nonevar lockup_type : LockupTypevar min_gap : str | Nonevar model_configvar ordering : Ordering | Nonevar partner_max_optical_weight_ratio : float | Nonevar secondary_logo_ids : list[LogoId] | Nonevar separator : Separator | Nonevar severity : GuidelineSeverity | None
Inherited members
class MinimumSize (**data: Any)-
Expand source code
class MinimumSize(AdCPBaseModel): model_config = ConfigDict( extra='forbid', ) width: Annotated[str | None, Field(description='Minimum width, such as 48px or 12mm.')] = None height: Annotated[str | None, Field(description='Minimum height, such as 18px or 6mm.')] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var height : str | Nonevar model_configvar width : str | None
Inherited members
class MotionGuidelines (**data: Any)-
Expand source code
class MotionGuidelines(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) transition_style: Annotated[ TransitionStyle | None, Field(description='Primary transition style between scenes') ] = None animation_speed: Annotated[ AnimationSpeed | None, Field(description='Overall animation pacing') ] = None easing: Annotated[ str | None, Field(description="Default easing function (e.g., 'ease-in-out', 'spring', 'linear')"), ] = None text_entrance: Annotated[ TextEntrance | None, Field(description='How text enters the frame') ] = None pacing: Annotated[Pacing | None, Field(description='Overall editing rhythm')] = None kinetic_typography: Annotated[ StrictBool | None, Field(description='Whether animated/kinetic typography is allowed') ] = None tags: Annotated[list[str] | None, Field(description='Additional motion style descriptors')] = ( 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var animation_speed : AnimationSpeed | Nonevar easing : str | Nonevar kinetic_typography : bool | Nonevar model_configvar pacing : Pacing | Nonevar text_entrance : TextEntrance | Nonevar transition_style : TransitionStyle | None
Inherited members
class NiceClass (value: Any = <object object>, *, root: Any = <object object>)-
Expand source code
class NiceClass(ScalarInt): __slots__ = () _constraints = {'ge': 1, 'le': 45}An
intgenerated from a JSON Schema integer root.Validates the way
SchemaIntvalidates an integer field: strict, so"1"andTrueare refused, with a float carrying no fractional part narrowed tointbecause JSON Schema counts it as one.Ancestors
- adcp.types._scalar.ScalarInt
- adcp.types._scalar._ScalarRoot
- builtins.int
class OpentypeFeature (value: Any = <object object>, *, root: Any = <object object>)-
Expand source code
class OpentypeFeature(ScalarStr): __slots__ = () _constraints = {'pattern': '^[a-z0-9]{4}$'}A
strgenerated from a JSON Schema string root.Ancestors
- adcp.types._scalar.ScalarStr
- adcp.types._scalar._ScalarRoot
- builtins.str
class Ordering (*args, **kwds)-
Expand source code
class Ordering(StrEnum): brand_first = 'brand_first' partner_first = 'partner_first' equal = 'equal' contextual = 'contextual'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var brand_firstvar contextualvar equalvar partner_first
class Orientation (*args, **kwds)-
Expand source code
class Orientation(StrEnum): square = 'square' horizontal = 'horizontal' vertical = 'vertical' stacked = 'stacked'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var horizontalvar squarevar stackedvar vertical
class Orientation1 (*args, **kwds)-
Expand source code
class Orientation1(StrEnum): horizontal = 'horizontal' vertical = 'vertical' any = 'any'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var anyvar horizontalvar vertical
class Overlays (**data: Any)-
Expand source code
class Overlays(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) gradient_style: Annotated[ GradientStyle | None, Field(description='Gradient type for overlays') ] = None gradient_direction: Annotated[ str | None, Field(description="Gradient direction (e.g., '45deg', 'to-bottom-right')") ] = None opacity: Annotated[str | None, Field(description="Overlay opacity (e.g., '70%')")] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var gradient_direction : str | Nonevar gradient_style : GradientStyle | Nonevar model_configvar opacity : str | None
Inherited members
class Pacing (*args, **kwds)-
Expand source code
class Pacing(StrEnum): lingering = 'lingering' moderate = 'moderate' fast_cuts = 'fast_cuts'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var fast_cutsvar lingeringvar moderate
class Palette (**data: Any)-
Expand source code
class Palette(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) name: Annotated[str, Field(description='Palette name')] colors: Annotated[ dict[str, HexColor], Field(description='Map of role names to hex color values') ]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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var colors : dict[str, HexColor]var model_configvar name : str
Inherited members
class People (**data: Any)-
Expand source code
class People(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) age_range: Annotated[str | None, Field(description="Target age range (e.g., '20-35')")] = None diversity: Annotated[ str | None, Field(description="Diversity representation (e.g., 'mixed', 'varied')") ] = None mood: Annotated[ list[str] | None, Field(description="Mood descriptors (e.g., ['confident', 'relaxed'])") ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var age_range : str | Nonevar diversity : str | Nonevar model_configvar mood : list[str] | None
Inherited members
class PhotographyStyle (**data: Any)-
Expand source code
class PhotographyStyle(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) realism: Annotated[Realism | None, Field(description='Level of photographic realism')] = None lighting: Annotated[ str | None, Field( description="Lighting style (e.g., 'soft daylight', 'studio', 'golden hour', 'high-key', 'low-key')" ), ] = None color_temperature: Annotated[ ColorTemperature | None, Field(description='Overall color temperature of photography') ] = None contrast: Annotated[Contrast | None, Field(description='Contrast level in photography')] = None depth_of_field: Annotated[ DepthOfField | None, Field( description='Depth of field preference. shallow: blurred background with subject isolation, deep: everything in focus' ), ] = None subject: Annotated[Subject | None, Field(description='Subject matter guidelines')] = None framing: Annotated[Framing | None, Field(description='Camera framing rules')] = None preferred_aspect_ratios: Annotated[ list[PreferredAspectRatio] | None, Field( description="Preferred aspect ratios for brand photography (e.g., '16:9', '4:5', '1:1')" ), ] = None tags: Annotated[list[str] | None, Field(description='Additional style descriptors')] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var color_temperature : ColorTemperature | Nonevar contrast : Contrast | Nonevar depth_of_field : DepthOfField | Nonevar framing : Framing | Nonevar lighting : str | Nonevar model_configvar preferred_aspect_ratios : list[PreferredAspectRatio] | Nonevar realism : Realism | Nonevar subject : Subject | None
Inherited members
class PortfolioEntry (**data: Any)-
Expand source code
class PortfolioEntry(AdCPBaseModel): model_config = ConfigDict( extra='forbid', ) domain: Annotated[ Domain, Field(description="Domain where the child's canonical brand.json lives") ] brand_id: Annotated[ BrandId, Field( description='Stable brand identifier within the house portfolio. Required so the cross-array uniqueness invariant (brand_id MUST NOT appear in both brands[] and brand_refs[]) is enforceable.' ), ] managed_by: Annotated[ Domain | None, Field( description="Optional domain of the entity that operationally manages this brand (e.g., an agency network within a holdco). House-declared. Consumers MUST NOT use it for trust or authorization decisions. Aggregation across houses ('show me everything BBH manages') is the intended use; trust is unaffected." ), ] = None effective_at: Annotated[ AwareDatetime | None, Field( description='ISO 8601 timestamp when the house established this ownership claim. Consumers age mutual-assertion edges from this date for TTL purposes and MUST NOT extend relationship trust before a future effective_at is reached. Optional; absent means the consumer ages from its own durable first observation.' ), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var brand_id : BrandIdvar domain : Domainvar effective_at : pydantic.types.AwareDatetime | Nonevar managed_by : Domain | Nonevar model_config
Inherited members
class PreferredAspectRatio (value: Any = <object object>, *, root: Any = <object object>)-
Expand source code
class PreferredAspectRatio(ScalarStr): __slots__ = () _constraints = {'pattern': '^\\d+:\\d+$'}A
strgenerated from a JSON Schema string root.Ancestors
- adcp.types._scalar.ScalarStr
- adcp.types._scalar._ScalarRoot
- builtins.str
class PreferredPosition (*args, **kwds)-
Expand source code
class PreferredPosition(StrEnum): top_left = 'top-left' top_center = 'top-center' top_right = 'top-right' bottom_left = 'bottom-left' bottom_center = 'bottom-center' bottom_right = 'bottom-right' center = 'center' # type: ignore[assignment]Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var bottom_centervar bottom_leftvar bottom_rightvar centervar top_centervar top_leftvar top_right
class ProductCatalog (**data: Any)-
Expand source code
class ProductCatalog(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) feed_url: Annotated[AnyUrl, Field(description='URL to product catalog feed')] feed_format: Annotated[FeedFormat | None, Field(description='Format of the product feed')] = ( None ) categories: Annotated[ list[str] | None, Field(description='Product categories available in the catalog') ] = None last_updated: Annotated[ AwareDatetime | None, Field(description='When the product catalog was last updated') ] = None update_frequency: Annotated[ UpdateFrequency | None, Field(description='How frequently the product catalog is updated') ] = None agentic_checkout: Annotated[ AgenticCheckout | None, Field(description='Agentic checkout endpoint configuration') ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var agentic_checkout : AgenticCheckout | Nonevar categories : list[str] | Nonevar feed_format : FeedFormat | Nonevar feed_url : pydantic.networks.AnyUrlvar last_updated : pydantic.types.AwareDatetime | Nonevar model_configvar update_frequency : UpdateFrequency | None
Inherited members
class ProductFocus (*args, **kwds)-
Expand source code
class ProductFocus(StrEnum): in_use = 'in-use' isolated = 'isolated' lifestyle = 'lifestyle' detail = 'detail'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var detailvar in_usevar isolatedvar lifestyle
class Property (**data: Any)-
Expand source code
class Property(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) type: Annotated[PropertyType, Field(description='Property type')] identifier: Annotated[ str, Field( description='Property identifier - domain for websites, bundle ID for apps', min_length=1, ), ] store: Annotated[Store | None, Field(description='App store for mobile/CTV apps')] = None region: Annotated[ str | None, Field( description="ISO 3166-1 alpha-2 country code or 'global'", pattern='^([A-Z]{2}|global)$' ), ] = None primary: Annotated[ StrictBool | None, Field(description='Whether this is the primary property for the brand') ] = False relationship: Annotated[ Relationship | None, Field( description="How this brand relates to the property. 'owned': the brand owns and operates this property (default) and has no adagents.json delegation_type counterpart. 'direct': the brand is the direct sales path for this property, even if a third party operates the software (e.g., a publisher's in-house ad team using a vendor's tech). 'delegated': the brand manages monetization for this property — they are in charge of ad sales (e.g., Mediavine managing a food blog). 'ad_network': the brand sells this property's inventory as part of a network or exchange — they are a path to the inventory, not the path (e.g., PubMatic as an SSP). For non-owned properties, the publisher confirms the relationship by setting the matching delegation_type on the agent's authorization in their adagents.json." ), ] = Relationship.ownedBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var identifier : strvar model_configvar primary : bool | Nonevar region : str | Nonevar relationship : Relationship | Nonevar store : Store | Nonevar type : PropertyType
Inherited members
class PropertyType (*args, **kwds)-
Expand source code
class PropertyType(StrEnum): website = 'website' mobile_app = 'mobile_app' ctv_app = 'ctv_app' desktop_app = 'desktop_app' dooh = 'dooh' podcast = 'podcast' radio = 'radio' linear_tv = 'linear_tv' streaming_audio = 'streaming_audio' ai_assistant = 'ai_assistant'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var ai_assistantvar ctv_appvar desktop_appvar doohvar linear_tvvar mobile_appvar podcastvar radiovar streaming_audiovar website
class Provenance (**data: Any)-
Expand source code
class Provenance(AdCPBaseModel): digital_source_type: Annotated[ DigitalSourceType | None, Field( description='IPTC-aligned classification of AI involvement in producing this content' ), ] = None synthetic_depiction: Annotated[ StrictBool | None, Field( description='Assessed declaration of whether the content synthetically depicts a real or fictional person performing or appearing in a way that was generated or materially manipulated rather than captured as depicted. `true` covers both a fully synthetic performer and material manipulation of a real performer; `false` is an assessed declaration that the content does not contain such a depiction. Absence means the content has not been assessed for synthetic depiction. This field does not claim consent, legality, or independent verification, and receivers MUST NOT derive it solely from `digital_source_type`.' ), ] = None ai_tool: Annotated[ AiTool | None, Field( description='AI system used to generate or modify this content. Aligns with IPTC 2025.1 AI metadata fields and C2PA claim_generator.' ), ] = None human_oversight: Annotated[ HumanOversight | None, Field( description='Level of human involvement in the AI-assisted creation process. Independent of `disclosure.required` — the protocol does not derive disclosure obligations from oversight level. Some regulations include carve-outs for human-edited or human-directed AI output, but those carve-outs have factual prerequisites the schema cannot evaluate. Asserting `edited` or `directed` does not by itself justify `disclosure.required: false`.' ), ] = None declared_by: Annotated[ DeclaredBy | None, Field( description='Party declaring this provenance. Identifies who attached the provenance claim, enabling receiving parties to assess trust.' ), ] = None declared_at: Annotated[ AwareDatetime | None, Field( description='When this provenance claim was made (ISO 8601). Distinct from created_time, which records when the content itself was produced. A provenance claim may be attached well after content creation, for example when retroactively declaring AI involvement for regulatory compliance.' ), ] = None created_time: Annotated[ AwareDatetime | None, Field(description='When this content was created or generated (ISO 8601)'), ] = None c2pa: Annotated[ C2pa | None, Field( description='C2PA sidecar manifest reference. Links to a detached cryptographic provenance manifest for this content. Note: file-level C2PA bindings break when ad servers transcode, resize, or re-encode assets. For pipelines with intermediaries, consider embedded_provenance as the primary provenance mechanism.' ), ] = None embedded_provenance: Annotated[ list[EmbeddedProvenanceItem] | None, Field( description='Provenance metadata embedded within the content stream. Each entry declares one embedding layer: structured provenance data carried inside the content itself, as distinct from sidecar references (c2pa.manifest_url). Embedded provenance survives operations that break sidecar and file-level bindings: ad-server transcoding, CMS ingestion, copy-paste, reformatting, and CDN re-encoding. For ad-tech pipelines where content passes through multiple intermediaries, embedded provenance is the reliable path for provenance that persists from declaration through delivery. This is a declaration by the embedding party. The receiving party (the seller) is the verifier-of-record: it confirms the claim by calling a governance agent it trusts (typically one published in `creative_policy.accepted_verifiers`).', min_length=1, ), ] = None watermarks: Annotated[ list[Watermark] | None, Field( description='Content watermarks applied to this asset. Each entry declares one watermarking layer: a content modification that encodes an identifier or fingerprint within the asset. Watermarks differ from embedded provenance: a watermark encodes an identifier (who generated it, who owns it), while embedded provenance carries or references a structured provenance record (the full chain of custody). A single asset may carry both. Aligns with C2PA action taxonomy: c2pa.watermarked.bound (watermark linked to a C2PA manifest) and c2pa.watermarked.unbound (watermark independent of any manifest). This is a declaration by the watermarking party. The receiving party (the seller) is the verifier-of-record: it confirms the claim by calling a governance agent it trusts (typically one published in `creative_policy.accepted_verifiers`).', min_length=1, ), ] = None disclosure: Annotated[ Disclosure | None, Field( description='Regulatory disclosure requirements for this content. Indicates whether AI disclosure is required and under which jurisdictions.' ), ] = None verification: Annotated[ list[VerificationItem] | None, Field( description='Third-party verification or detection results for this content. Multiple services may independently evaluate the same content. Provenance is a claim — verification results attached by the declaring party are supplementary. The enforcing party (e.g., seller/publisher) should run its own verification via get_creative_features or calibrate_content.', min_length=1, ), ] = None ext: Ext | None = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var ai_tool : AiTool | Nonevar c2pa : C2pa | Nonevar created_time : pydantic.types.AwareDatetime | Nonevar declared_at : pydantic.types.AwareDatetime | Nonevar declared_by : DeclaredBy | Nonevar digital_source_type : DigitalSourceType | Nonevar disclosure : Disclosure | Nonevar embedded_provenance : list[EmbeddedProvenanceItem] | Nonevar ext : Ext | Nonevar human_oversight : HumanOversight | Nonevar model_configvar synthetic_depiction : bool | Nonevar verification : list[VerificationItem] | Nonevar watermarks : list[Watermark] | None
Inherited members
class Realism (*args, **kwds)-
Expand source code
class Realism(StrEnum): natural = 'natural' stylized = 'stylized' hyperreal = 'hyperreal' abstract = 'abstract'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var abstractvar hyperrealvar naturalvar stylized
class RedirectReason (*args, **kwds)-
Expand source code
class RedirectReason(StrEnum): acquisition = 'acquisition' divestiture = 'divestiture' rebrand = 'rebrand' regional = 'regional' legacy = 'legacy' consolidation = 'consolidation' other = 'other'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var acquisitionvar consolidationvar divestiturevar legacyvar othervar rebrandvar regional
class Relationship (*args, **kwds)-
Expand source code
class Relationship(StrEnum): owned = 'owned' direct = 'direct' delegated = 'delegated' ad_network = 'ad_network'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var ad_networkvar delegatedvar directvar owned
class RenderGuidance (**data: Any)-
Expand source code
class RenderGuidance(AdCPBaseModel): persistence: Annotated[ DisclosurePersistence | None, Field( description='How long the disclosure must persist during content playback or display' ), ] = None min_duration_ms: Annotated[ SchemaInt | None, Field( description="Minimum display duration in milliseconds for initial persistence. Recommended when persistence is initial — without it, the duration is at the publisher's discretion. At serve time the publisher reads this from provenance since the brief is not available.", ge=1, ), ] = None positions: Annotated[ list[DisclosurePosition] | None, Field( description='Preferred disclosure positions in priority order. The first position a format supports should be used.', min_length=1, ), ] = None ext: Ext | None = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var ext : Ext | Nonevar min_duration_ms : int | Nonevar model_configvar persistence : DisclosurePersistence | Nonevar positions : list[DisclosurePosition] | None
Inherited members
class Result (*args, **kwds)-
Expand source code
class Result(StrEnum): authentic = 'authentic' ai_generated = 'ai_generated' ai_modified = 'ai_modified' inconclusive = 'inconclusive'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var ai_generatedvar ai_modifiedvar authenticvar inconclusive
class RightType (*args, **kwds)-
Expand source code
class RightType(StrEnum): talent = 'talent' character = 'character' brand_ip = 'brand_ip' music = 'music' stock_media = 'stock_media'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var brand_ipvar charactervar musicvar stock_mediavar talent
class RightUse (*args, **kwds)-
Expand source code
class RightUse(StrEnum): likeness = 'likeness' voice = 'voice' name = 'name' endorsement = 'endorsement' motion_capture = 'motion_capture' signature = 'signature' catchphrase = 'catchphrase' sync = 'sync' background_music = 'background_music' editorial = 'editorial' commercial = 'commercial' ai_generated_image = 'ai_generated_image'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var ai_generated_imagevar background_musicvar catchphrasevar commercialvar editorialvar endorsementvar likenessvar motion_capturevar namevar signaturevar syncvar voice
class RightsAgent (**data: Any)-
Expand source code
class RightsAgent(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) url: Annotated[ AnyUrl, Field( description="Rights agent MCP endpoint URL. Callers comparing this URL against another value (e.g., matching against a brand's declared rights endpoint) MUST canonicalize both sides per the AdCP URL canonicalization rules, not byte-equality. See docs/reference/url-canonicalization." ), ] id: Annotated[str, Field(description='Agent identifier', pattern='^[a-z0-9_]+$')] available_uses: Annotated[ list[RightUse], Field(description='Rights uses available for licensing through this agent', min_length=1), ] right_types: Annotated[ list[RightType] | None, Field(description='Types of rights available', min_length=1) ] = None countries: Annotated[ list[Country1] | None, Field(description='Countries where rights are available (ISO 3166-1 alpha-2)'), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var available_uses : list[RightUse]var countries : list[Country1] | Nonevar id : strvar model_configvar right_types : list[RightType] | Nonevar url : pydantic.networks.AnyUrl
Inherited members
class Role (*args, **kwds)-
Expand source code
class Role(StrEnum): creator = 'creator' advertiser = 'advertiser' agency = 'agency' platform = 'platform' tool = 'tool'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var advertiservar agencyvar creatorvar platformvar tool
class Scale (**data: Any)-
Expand source code
class Scale(AdCPBaseModel): __pydantic_extra__: Dict[str, str] model_config = ConfigDict( extra='allow', ) xs: Annotated[str | None, Field(description="Extra small spacing (e.g., '4px')")] = None sm: Annotated[str | None, Field(description="Small spacing (e.g., '8px')")] = None md: Annotated[str | None, Field(description="Medium spacing (e.g., '16px')")] = None lg: Annotated[str | None, Field(description="Large spacing (e.g., '24px')")] = None xl: Annotated[str | None, Field(description="Extra large spacing (e.g., '32px')")] = None field_2xl: Annotated[ str | None, Field(alias='2xl', description="Section-level spacing (e.g., '48px', '64px')") ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var field_2xl : str | Nonevar lg : str | Nonevar md : str | Nonevar model_configvar sm : str | Nonevar xl : str | Nonevar xs : str | None
Inherited members
class Scope (*args, **kwds)-
Expand source code
class Scope(StrEnum): entity = 'entity' property = 'property'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var entityvar property
class Scope1 (*args, **kwds)-
Expand source code
class Scope1(StrEnum): all = 'all' media_buying = 'media_buying' creative_generation = 'creative_generation' rights_clearance = 'rights_clearance' governance = 'governance' measurement = 'measurement' agent_operations = 'agent_operations'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var agent_operationsvar allvar creative_generationvar governancevar measurementvar media_buyingvar rights_clearance
class Separator (**data: Any)-
Expand source code
class Separator(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) type: Annotated[Type, Field(description='Separator style.')] color: ColorRef | None = None width: Annotated[str | None, Field(description='Separator width, such as 1px.')] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var color : ColorRef | Nonevar model_configvar type : Typevar width : str | None
Inherited members
class Spacing (**data: Any)-
Expand source code
class Spacing(AdCPBaseModel): model_config = ConfigDict( extra='forbid', ) unit: Annotated[ str | None, Field( description="Base grid unit this scale was designed from (e.g., '8px', '4px'). Informational — agents should use the named scale values, not compute from this." ), ] = None scale: Annotated[ Scale | None, Field(description='Named spacing scale built from the base unit') ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var model_configvar scale : Scale | Nonevar unit : str | None
Inherited members
class Status (*args, **kwds)-
Expand source code
class Status(StrEnum): active = 'active' pending = 'pending' abandoned = 'abandoned' cancelled = 'cancelled' expired = 'expired'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var abandonedvar activevar cancelledvar expiredvar pending
class Store (*args, **kwds)-
Expand source code
class Store(StrEnum): apple = 'apple' google = 'google' amazon = 'amazon' roku = 'roku' samsung = 'samsung' lg = 'lg' other = 'other'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var amazonvar applevar googlevar lgvar othervar rokuvar samsung
class StrokeStyle (*args, **kwds)-
Expand source code
class StrokeStyle(StrEnum): rounded = 'rounded' square = 'square' mixed = 'mixed' none = 'none'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var mixedvar nonevar roundedvar square
class Style (*args, **kwds)-
Expand source code
class Style(StrEnum): normal = 'normal' italic = 'italic' oblique = 'oblique'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var italicvar normalvar oblique
class Style1 (*args, **kwds)-
Expand source code
class Style1(StrEnum): outline = 'outline' filled = 'filled' duotone = 'duotone' flat = 'flat' glyph = 'glyph' hand_drawn = 'hand_drawn'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var duotonevar filledvar flatvar glyphvar hand_drawnvar outline
class Style2 (*args, **kwds)-
Expand source code
class Style2(StrEnum): none = 'none' subtle_grain = 'subtle_grain' noise = 'noise' paper = 'paper' fabric = 'fabric' concrete = 'concrete'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var concretevar fabricvar noisevar nonevar papervar subtle_grain
class StyleType (*args, **kwds)-
Expand source code
class StyleType(StrEnum): flat_illustration = 'flat_illustration' geometric = 'geometric' gradient_mesh = 'gradient_mesh' editorial_collage = 'editorial_collage' hand_drawn = 'hand_drawn' minimal_line_art = 'minimal_line_art' field_3d_render = '3d_render' isometric = 'isometric' photographic_composite = 'photographic_composite'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var editorial_collagevar field_3d_rendervar flat_illustrationvar geometricvar gradient_meshvar hand_drawnvar isometricvar minimal_line_artvar photographic_composite
class Subject (**data: Any)-
Expand source code
class Subject(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) people: Annotated[People | None, Field(description='People photography guidelines')] = None product_focus: Annotated[ProductFocus | None, Field(description='How products are shown')] = ( None ) setting: Annotated[ str | None, Field( description="Environmental context for photography (e.g., 'indoor', 'outdoor', 'studio', 'urban', 'nature', 'workplace')" ), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var model_configvar people : People | Nonevar product_focus : ProductFocus | Nonevar setting : str | None
Inherited members
class Surface (*args, **kwds)-
Expand source code
class Surface(StrEnum): background = 'background' foreground = 'foreground' text = 'text' logo_background = 'logo_background' cta = 'cta' accent = 'accent' border = 'border' icon = 'icon' graphic_element = 'graphic_element'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var accentvar backgroundvar bordervar ctavar foregroundvar graphic_elementvar iconvar logo_backgroundvar text
class Tagline (root: RootModelRootType = PydanticUndefined, **data)-
Expand source code
class Tagline(RootModel[list[LocalizedName]]): root: Annotated[ list[LocalizedName], Field(description='Localized taglines with BCP 47 locale codes', min_length=1), ]Usage Documentation
A Pydantic
BaseModelfor the root object of the model.- Attributes
- -----=
root- The root object of the model.
__pydantic_root_model__- Whether the model is a RootModel.
__pydantic_private__- Private fields in the model.
__pydantic_extra__- Extra fields in the model.
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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- pydantic.root_model.RootModel[list[LocalizedName]]
- pydantic.root_model.RootModel
- pydantic.main.BaseModel
- typing.Generic
Class variables
var model_configvar root : list[LocalizedName]
class TalentRole (*args, **kwds)-
Expand source code
class TalentRole(StrEnum): host = 'host' guest = 'guest' creator = 'creator' cast = 'cast' narrator = 'narrator' producer = 'producer' correspondent = 'correspondent' commentator = 'commentator' analyst = 'analyst'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var analystvar castvar commentatorvar correspondentvar creatorvar guestvar hostvar narratorvar producer
class TextEntrance (*args, **kwds)-
Expand source code
class TextEntrance(StrEnum): fade = 'fade' typewriter = 'typewriter' slide_up = 'slide_up' slide_left = 'slide_left' scale = 'scale' none = 'none'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var fadevar nonevar scalevar slide_leftvar slide_upvar typewriter
class TextTransform (*args, **kwds)-
Expand source code
class TextTransform(StrEnum): none = 'none' uppercase = 'uppercase' lowercase = 'lowercase' capitalize = 'capitalize' # type: ignore[assignment]Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var capitalizevar lowercasevar nonevar uppercase
class Texture (**data: Any)-
Expand source code
class Texture(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) style: Annotated[ Style2 | None, Field(description='Texture style applied to creative assets') ] = None intensity: Annotated[Contrast | None, Field(description='Texture intensity')] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var intensity : Contrast | Nonevar model_configvar style : Style2 | None
Inherited members
class Tone (**data: Any)-
Expand source code
class Tone(AdCPBaseModel): voice: Annotated[ LocalizedScalar | None, Field( description='High-level voice descriptor, either a legacy plain string or localized values.' ), ] = None attributes: Annotated[ LocalizedStringList | None, Field( description='Personality traits that characterize the brand voice. Localized lists are selected as a whole.' ), ] = None dos: Annotated[ LocalizedStringList | None, Field( description='Guidance for copy generation - what TO do. Localized lists are selected as a whole.' ), ] = None donts: Annotated[ LocalizedStringList | None, Field( description='Guardrails to avoid brand violations - what NOT to do. Localized lists are selected as a whole.' ), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var attributes : LocalizedStringList | Nonevar donts : LocalizedStringList | Nonevar dos : LocalizedStringList | Nonevar model_configvar voice : LocalizedScalar | None
Inherited members
class Trademark (**data: Any)-
Expand source code
class Trademark(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) registry: Annotated[ str, Field(description="Trademark registry (e.g., 'USPTO', 'EUIPO', 'JPO', 'CNIPA')") ] number: Annotated[str, Field(description='Registration number as issued by the registry')] mark: Annotated[str, Field(description='The registered mark as published')] status: Annotated[ Status | None, Field( description='Registration status. Omit for active marks if status tracking is not maintained.' ), ] = None license_type: Annotated[ LicenseType | None, Field( description="Whether the publisher owns the mark, licenses it from another entity, or licenses it to others. 'owned' is the default if omitted." ), ] = None licensor_domain: Annotated[ Domain | None, Field( description='Domain of the entity that licenses this mark to the publisher. Meaningful when license_type=licensed_in; omit otherwise.' ), ] = None countries: Annotated[ list[Country] | None, Field( description="ISO 3166-1 alpha-2 country codes where this registration applies. Omit for global or where the registry's jurisdiction is implicit." ), ] = None nice_classes: Annotated[ list[NiceClass] | None, Field( description='Nice Classification class numbers (1-45) covered by this registration. Disambiguates marks across industries (e.g., Delta-airline vs Delta-faucet). Omit if scope is implicit from registry.' ), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var countries : list[Country] | Nonevar license_type : LicenseType | Nonevar licensor_domain : Domain | Nonevar mark : strvar model_configvar nice_classes : list[NiceClass] | Nonevar number : strvar registry : strvar status : Status | None
Inherited members
class TransitionStyle (*args, **kwds)-
Expand source code
class TransitionStyle(StrEnum): cut = 'cut' dissolve = 'dissolve' slide = 'slide' wipe = 'wipe' zoom = 'zoom' fade = 'fade'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var cutvar dissolvevar fadevar slidevar wipevar zoom
class Type (*args, **kwds)-
Expand source code
class Type(StrEnum): none = 'none' keyline = 'keyline' space = 'space' divider = 'divider'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var dividervar keylinevar nonevar space
class Type1 (*args, **kwds)-
Expand source code
class Type1(StrEnum): border = 'border' divider = 'divider' frame = 'frame' watermark = 'watermark' pattern = 'pattern' texture_overlay = 'texture_overlay' decorative = 'decorative'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var bordervar decorativevar dividervar framevar patternvar texture_overlayvar watermark
class Type2 (*args, **kwds)-
Expand source code
class Type2(StrEnum): icon_set = 'icon_set' illustration_system = 'illustration_system' image_library = 'image_library' video_library = 'video_library' template_library = 'template_library'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var icon_setvar illustration_systemvar image_libraryvar template_libraryvar video_library
class TypeScale (**data: Any)-
Expand source code
class TypeScale(AdCPBaseModel): __pydantic_extra__: Dict[str, TypeScaleEntry] model_config = ConfigDict( extra='allow', ) base_width: Annotated[ str | None, Field( description="Reference canvas width these sizes were designed for (e.g., '1080px'). Generative systems should scale proportionally for other canvas sizes." ), ] = None heading: TypeScaleEntry | None = None subheading: TypeScaleEntry | None = None body: TypeScaleEntry | None = None caption: TypeScaleEntry | None = None cta: TypeScaleEntry | None = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var base_width : str | Nonevar body : TypeScaleEntry | Nonevar caption : TypeScaleEntry | Nonevar cta : TypeScaleEntry | Nonevar heading : TypeScaleEntry | Nonevar model_configvar subheading : TypeScaleEntry | None
Inherited members
class TypeScaleEntry (**data: Any)-
Expand source code
class TypeScaleEntry(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) font: Annotated[ str | None, Field( description="Font reference. Use a key from the fonts object (e.g., 'primary', 'secondary') to reference a defined font role, or a literal CSS font-family string as a fallback." ), ] = None size: Annotated[str | None, Field(description="Font size (e.g., '48px', '2rem')")] = None weight: Annotated[str | None, Field(description="Font weight (e.g., '700', 'bold')")] = None line_height: Annotated[str | None, Field(description="Line height (e.g., '1.2', '56px')")] = ( None ) letter_spacing: Annotated[ str | None, Field(description="Letter spacing (e.g., '-0.02em', '0.5px')") ] = None text_transform: Annotated[TextTransform | None, Field(description='Text transformation')] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var font : str | Nonevar letter_spacing : str | Nonevar line_height : str | Nonevar model_configvar size : str | Nonevar text_transform : TextTransform | Nonevar weight : str | None
Inherited members
class TypesAllowedEnum (*args, **kwds)-
Expand source code
class TypesAllowedEnum(StrEnum): solid_color = 'solid_color' gradient = 'gradient' blurred_photo = 'blurred_photo' image = 'image' video = 'video' pattern = 'pattern' transparent = 'transparent'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var blurred_photovar gradientvar imagevar patternvar solid_colorvar transparentvar video
class UpdateFrequency (*args, **kwds)-
Expand source code
class UpdateFrequency(StrEnum): realtime = 'realtime' hourly = 'hourly' daily = 'daily' weekly = 'weekly'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var dailyvar hourlyvar realtimevar weekly
class Usage (**data: Any)-
Expand source code
class Usage(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) max_per_layout: Annotated[ SchemaInt | None, Field(description='Maximum distinct shapes per layout') ] = None overlap_allowed: Annotated[ StrictBool | None, Field(description='Whether shapes may overlap') ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var max_per_layout : int | Nonevar model_configvar overlap_allowed : bool | None
Inherited members
class Usage1 (**data: Any)-
Expand source code
class Usage1(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) max_per_frame: Annotated[ SchemaInt | None, Field(description='Maximum icons per creative frame') ] = None size_ratio: Annotated[ str | None, Field(description="Icon-to-layout size ratio (e.g., '1:8')") ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var max_per_frame : int | Nonevar model_configvar size_ratio : str | None
Inherited members
class Variant (*args, **kwds)-
Expand source code
class Variant(StrEnum): primary = 'primary' secondary = 'secondary' icon = 'icon' wordmark = 'wordmark' full_lockup = 'full-lockup'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var full_lockupvar iconvar primaryvar secondaryvar wordmark
class VerificationItem (**data: Any)-
Expand source code
class VerificationItem(AdCPBaseModel): verified_by: Annotated[ str, Field( description="Name of the verification service (e.g., 'DoubleVerify', 'Hive Moderation', 'Reality Defender')" ), ] verified_time: Annotated[ AwareDatetime | None, Field(description='When the verification was performed (ISO 8601)') ] = None result: Annotated[Result, Field(description='Verification outcome')] confidence: Annotated[ StrictFloat | None, Field( description='Confidence score of the verification result (0.0 to 1.0)', ge=0.0, le=1.0 ), ] = None details_url: Annotated[ AnyUrl | None, Field(description='URL to the full verification report') ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var confidence : float | Nonevar details_url : pydantic.networks.AnyUrl | Nonevar model_configvar result : Resultvar verified_by : strvar verified_time : pydantic.types.AwareDatetime | None
Inherited members
class VerifyAgent (**data: Any)-
Expand source code
class VerifyAgent(AdCPBaseModel): model_config = ConfigDict( extra='forbid', ) agent_url: Annotated[ AnyUrl, Field( description="URL of the governance agent the buyer represents was used to embed/verify this layer. MUST use the `https://` scheme and MUST appear in the seller's `creative_policy.accepted_verifiers[].agent_url` list (canonicalized per /docs/reference/url-canonicalization: lowercase scheme and host, strip default port, normalize path dot-segments). Sellers MUST NOT call this URL until the canonicalized match is confirmed." ), ] feature_id: Annotated[ str | None, Field( description="Optional `feature_id` the buyer represents the seller should request via `get_creative_features` (e.g., `encypher.markers_present_v2`). SHOULD match the `feature_id` declared on the matching `accepted_verifiers[]` entry, or be omitted to defer the selector to the seller. When the seller's entry pins a `feature_id`, that value wins; when neither side pins, the seller selects from the agent's `governance.creative_features` catalog." ), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var agent_url : pydantic.networks.AnyUrlvar feature_id : str | Nonevar model_config
Inherited members
class VerifyAgent1 (**data: Any)-
Expand source code
class VerifyAgent1(AdCPBaseModel): model_config = ConfigDict( extra='forbid', ) agent_url: Annotated[ AnyUrl, Field( description="URL of the governance agent the buyer represents was used to apply/detect this watermark. MUST use the `https://` scheme and MUST appear in the seller's `creative_policy.accepted_verifiers[].agent_url` list (canonicalized per /docs/reference/url-canonicalization: lowercase scheme and host, strip default port, normalize path dot-segments). Sellers MUST NOT call this URL until the canonicalized match is confirmed." ), ] feature_id: Annotated[ str | None, Field( description="Optional `feature_id` the buyer represents the seller should request via `get_creative_features` (e.g., `imatag.watermark_detected`). SHOULD match the `feature_id` declared on the matching `accepted_verifiers[]` entry, or be omitted to defer the selector to the seller. When the seller's entry pins a `feature_id`, that value wins; when neither side pins, the seller selects from the agent's `governance.creative_features` catalog." ), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var agent_url : pydantic.networks.AnyUrlvar feature_id : str | Nonevar model_config
Inherited members
class VisualGuidelines (**data: Any)-
Expand source code
class VisualGuidelines(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) photography: PhotographyStyle | None = None graphic_style: GraphicStyle | None = None shapes: BrandShapes | None = None iconography: Iconography | None = None composition: CompositionRules | None = None border_radius: BorderRadius | None = None elevation: Elevation | None = None spacing: Spacing | None = None graphic_elements: Annotated[ list[GraphicElement] | None, Field( description='Reusable decorative elements that are part of the brand visual identity (e.g., torn paper edges, watermarks, dividers)' ), ] = None motion: MotionGuidelines | None = None logo_placement: LogoPlacement | None = None colorways: Annotated[ list[Colorway] | None, Field(description='Named color pairings for consistent foreground/background combinations'), ] = None color_constraints: Annotated[ list[ColorConstraint] | None, Field( description='Machine-readable constraints for color usage and pairings, such as accent-only rules or forbidden foreground/background combinations.' ), ] = None logo_usage_rules: Annotated[ list[LogoUsageRule] | None, Field( description='Machine-readable logo selection and placement constraints for minimum size, clear space, backgrounds, and contexts.' ), ] = None mark_lockups: Annotated[ list[MarkLockup] | None, Field( description='Machine-readable co-brand, partner, sponsor, program, or secondary-mark lockup rules.' ), ] = None type_scale: Annotated[ TypeScale | None, Field( description='Typography scale defining sizes and weights for different text roles. When sizes are in px, use base_width to indicate the reference canvas.' ), ] = None asset_libraries: Annotated[ list[AssetLibrary] | None, Field( description='References to managed asset libraries (icon sets, illustration systems, image collections). URLs are intended for human access; agent-facing DAM integration is under investigation.' ), ] = None restrictions: Annotated[ list[str] | None, Field( description="Visual prohibitions and guardrails (e.g., 'Never use black backgrounds', 'Do not crop the logo', 'No stock photography of people on phones')" ), ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var asset_libraries : list[AssetLibrary] | Nonevar border_radius : BorderRadius | Nonevar color_constraints : list[ColorConstraint] | Nonevar colorways : list[Colorway] | Nonevar composition : CompositionRules | Nonevar elevation : Elevation | Nonevar graphic_elements : list[GraphicElement] | Nonevar graphic_style : GraphicStyle | Nonevar iconography : Iconography | Nonevar logo_placement : LogoPlacement | Nonevar logo_usage_rules : list[LogoUsageRule] | Nonevar mark_lockups : list[MarkLockup] | Nonevar model_configvar motion : MotionGuidelines | Nonevar photography : PhotographyStyle | Nonevar restrictions : list[str] | Nonevar shapes : BrandShapes | Nonevar spacing : Spacing | Nonevar type_scale : TypeScale | None
Inherited members
class VoiceSynthesis (**data: Any)-
Expand source code
class VoiceSynthesis(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) provider: str | None = None voice_id: str | None = None settings: dict[str, Any] | None = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var model_configvar provider : str | Nonevar settings : dict[str, typing.Any] | Nonevar voice_id : str | None
Inherited members
class Watermark (**data: Any)-
Expand source code
class Watermark(AdCPBaseModel): media_type: Annotated[ WatermarkMediaType, Field(description='Media category of the watermarked content') ] provider: Annotated[ str, Field( description="Organization that applied the watermark (e.g., 'Imatag', 'Steg.AI', 'Encypher'). Display label and audit context — not a wire identifier." ), ] verify_agent: Annotated[ VerifyAgent1 | None, Field( description="Buyer's representation that this watermark can be detected by a governance agent on the seller's `creative_policy.accepted_verifiers` list. The `agent_url` MUST match (canonicalized) one of the seller's published `accepted_verifiers[].agent_url` entries; sellers reject `sync_creatives` submissions whose `verify_agent.agent_url` is off-list with `PROVENANCE_VERIFIER_NOT_ACCEPTED`. This is buyer-supplied evidence, not buyer-driven routing — the seller is the verifier-of-record and the seller controls which agent it actually calls (the seller MAY use a different on-list agent if it determines this is more appropriate; the seller does not call buyer-asserted endpoints outside its allowlist)." ), ] = None c2pa_action: Annotated[ C2paWatermarkAction | None, Field(description='C2PA action classification for this watermark'), ] = None embedded_at: Annotated[ AwareDatetime | None, Field(description='When the watermark was applied (ISO 8601)') ] = NoneBase 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 setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='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 adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport 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_configon 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.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var c2pa_action : C2paWatermarkAction | Nonevar embedded_at : pydantic.types.AwareDatetime | Nonevar media_type : WatermarkMediaTypevar model_configvar provider : strvar verify_agent : VerifyAgent1 | None
Inherited members
class WatermarkMediaType (*args, **kwds)-
Expand source code
class WatermarkMediaType(StrEnum): audio = 'audio' image = 'image' video = 'video' text = 'text'Enum where members are also (and must be) strings
Ancestors
- enum.StrEnum
- builtins.str
- enum.ReprEnum
- enum.Enum
Class variables
var audiovar imagevar textvar video
class WeightRangeItem (value: Any = <object object>, *, root: Any = <object object>)-
Expand source code
class WeightRangeItem(ScalarInt): __slots__ = () _constraints = {'ge': 100, 'le': 900}An
intgenerated from a JSON Schema integer root.Validates the way
SchemaIntvalidates an integer field: strict, so"1"andTrueare refused, with a float carrying no fractional part narrowed tointbecause JSON Schema counts it as one.Ancestors
- adcp.types._scalar.ScalarInt
- adcp.types._scalar._ScalarRoot
- builtins.int