Module adcp.types.generated_poc.content_standards.artifact
Classes
class Artifact (**data: Any)-
Expand source code
class Artifact(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) artifact_id: Annotated[ str, Field( description="Identifier for this artifact within the property. The property owner defines the scheme (e.g., 'article_12345', 'episode_42_segment_3', 'post_abc123')." ), ] assets: Annotated[ list[Assets | Assets1 | Assets2 | Assets3], Field( description='Artifact assets in document flow order - text blocks, images, video, audio' ), ] format_id: Annotated[ format_id_1.FormatId | None, Field( description='Optional reference to a format definition. Uses the same format registry as creative formats.' ), ] = None identifiers: Annotated[ Identifiers | None, Field(description='Platform-specific identifiers for this artifact') ] = None last_update_time: Annotated[ AwareDatetime | None, Field(description='When the artifact was last modified (ISO 8601 format)'), ] = None metadata: Annotated[ Metadata | None, Field(description='Rich metadata extracted from the artifact') ] = None property_id: Annotated[ identifier.Identifier, Field(description='Identifier for the property where this artifact appears'), ] published_time: Annotated[ AwareDatetime | None, Field(description='When the artifact was published (ISO 8601 format)') ] = None url: Annotated[ AnyUrl | None, Field( description='Optional URL for this artifact (web page, podcast feed, video page). Not all artifacts have URLs (e.g., Instagram content, podcast segments, TV scenes).' ), ] = None variant_id: Annotated[ str | None, Field( description="Identifies a specific variant of this artifact. Use for A/B tests, translations, or temporal versions. Examples: 'en', 'es-MX', 'v2', 'headline_test_b'. The combination of artifact_id + variant_id must be unique." ), ] = NoneBase model for AdCP types with spec-compliant serialization.
AdCP JSON schemas use additionalProperties: false and do not allow null for optional fields. Therefore, optional fields must be omitted entirely when not present (not sent as null).
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 artifact_id : strvar assets : list[Assets | Assets1 | Assets2 | Assets3]var format_id : FormatId | Nonevar identifiers : Identifiers | Nonevar last_update_time : pydantic.types.AwareDatetime | Nonevar metadata : Metadata | Nonevar model_configvar property_id : Identifiervar published_time : pydantic.types.AwareDatetime | Nonevar url : pydantic.networks.AnyUrl | Nonevar variant_id : str | None
Inherited members
class AssetAccess (root: RootModelRootType = PydanticUndefined, **data)-
Expand source code
class AssetAccess(RootModel[AssetAccess1 | AssetAccess2 | AssetAccess3]): root: Annotated[ AssetAccess1 | AssetAccess2 | AssetAccess3, Field(description='Authentication for accessing secured asset URLs'), ]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[AssetAccess1, AssetAccess2, AssetAccess3]]
- pydantic.root_model.RootModel
- pydantic.main.BaseModel
- typing.Generic
Class variables
var model_configvar root : AssetAccess1 | AssetAccess2 | AssetAccess3
class AssetAccess1 (**data: Any)-
Expand source code
class AssetAccess1(AdCPBaseModel): method: Literal['bearer_token'] token: Annotated[str, Field(description='OAuth2 bearer token for Authorization header')]Base model for AdCP types with spec-compliant serialization.
AdCP JSON schemas use additionalProperties: false and do not allow null for optional fields. Therefore, optional fields must be omitted entirely when not present (not sent as null).
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 method : Literal['bearer_token']var model_configvar token : str
Inherited members
class AssetAccess2 (**data: Any)-
Expand source code
class AssetAccess2(AdCPBaseModel): credentials: Annotated[ dict[str, Any] | None, Field(description='Service account credentials') ] = None method: Literal['service_account'] provider: Annotated[Provider, Field(description='Cloud provider')]Base model for AdCP types with spec-compliant serialization.
AdCP JSON schemas use additionalProperties: false and do not allow null for optional fields. Therefore, optional fields must be omitted entirely when not present (not sent as null).
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 credentials : dict[str, typing.Any] | Nonevar method : Literal['service_account']var model_configvar provider : Provider
Inherited members
class AssetAccess3 (**data: Any)-
Expand source code
class AssetAccess3(AdCPBaseModel): method: Literal['signed_url']Base model for AdCP types with spec-compliant serialization.
AdCP JSON schemas use additionalProperties: false and do not allow null for optional fields. Therefore, optional fields must be omitted entirely when not present (not sent as null).
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 method : Literal['signed_url']var model_config
Inherited members
class Assets (**data: Any)-
Expand source code
class Assets(AdCPBaseModel): content: Annotated[str, Field(description='Text content')] heading_level: Annotated[ int | None, Field(description='Heading level (1-6), only for role=heading', ge=1, le=6) ] = None language: Annotated[ str | None, Field( description="BCP 47 language tag for this text (e.g., 'en', 'es-MX'). Useful when artifact contains mixed-language content." ), ] = None role: Annotated[ Role | None, Field( description="Role of this text in the document. Use 'title' for the main artifact title, 'description' for summaries." ), ] = None type: Literal['text']Base model for AdCP types with spec-compliant serialization.
AdCP JSON schemas use additionalProperties: false and do not allow null for optional fields. Therefore, optional fields must be omitted entirely when not present (not sent as null).
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 content : strvar heading_level : int | Nonevar language : str | Nonevar model_configvar role : Role | Nonevar type : Literal['text']
Inherited members
class Assets1 (**data: Any)-
Expand source code
class Assets1(AdCPBaseModel): access: Annotated[AssetAccess | None, Field(description='Authentication for secured URLs')] = ( None ) alt_text: Annotated[str | None, Field(description='Alt text or image description')] = None caption: Annotated[str | None, Field(description='Image caption')] = None height: Annotated[int | None, Field(description='Image height in pixels')] = None type: Literal['image'] url: Annotated[AnyUrl, Field(description='Image URL')] width: Annotated[int | None, Field(description='Image width in pixels')] = NoneBase model for AdCP types with spec-compliant serialization.
AdCP JSON schemas use additionalProperties: false and do not allow null for optional fields. Therefore, optional fields must be omitted entirely when not present (not sent as null).
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 access : AssetAccess | Nonevar alt_text : str | Nonevar caption : str | Nonevar height : int | Nonevar model_configvar type : Literal['image']var url : pydantic.networks.AnyUrlvar width : int | None
Inherited members
class Assets2 (**data: Any)-
Expand source code
class Assets2(AdCPBaseModel): access: Annotated[AssetAccess | None, Field(description='Authentication for secured URLs')] = ( None ) duration_ms: Annotated[int | None, Field(description='Video duration in milliseconds')] = None thumbnail_url: Annotated[AnyUrl | None, Field(description='Video thumbnail URL')] = None transcript: Annotated[str | None, Field(description='Video transcript')] = None transcript_source: Annotated[ TranscriptSource | None, Field(description='How the transcript was generated') ] = None type: Literal['video'] url: Annotated[AnyUrl, Field(description='Video URL')]Base model for AdCP types with spec-compliant serialization.
AdCP JSON schemas use additionalProperties: false and do not allow null for optional fields. Therefore, optional fields must be omitted entirely when not present (not sent as null).
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 access : AssetAccess | Nonevar duration_ms : int | Nonevar model_configvar thumbnail_url : pydantic.networks.AnyUrl | Nonevar transcript : str | Nonevar transcript_source : TranscriptSource | Nonevar type : Literal['video']var url : pydantic.networks.AnyUrl
Inherited members
class Assets3 (**data: Any)-
Expand source code
class Assets3(AdCPBaseModel): access: Annotated[AssetAccess | None, Field(description='Authentication for secured URLs')] = ( None ) duration_ms: Annotated[int | None, Field(description='Audio duration in milliseconds')] = None transcript: Annotated[str | None, Field(description='Audio transcript')] = None transcript_source: Annotated[ TranscriptSource1 | None, Field(description='How the transcript was generated') ] = None type: Literal['audio'] url: Annotated[AnyUrl, Field(description='Audio URL')]Base model for AdCP types with spec-compliant serialization.
AdCP JSON schemas use additionalProperties: false and do not allow null for optional fields. Therefore, optional fields must be omitted entirely when not present (not sent as null).
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 access : AssetAccess | Nonevar duration_ms : int | Nonevar model_configvar transcript : str | Nonevar transcript_source : TranscriptSource1 | Nonevar type : Literal['audio']var url : pydantic.networks.AnyUrl
Inherited members
class Identifiers (**data: Any)-
Expand source code
class Identifiers(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) apple_podcast_id: Annotated[str | None, Field(description='Apple Podcasts ID')] = None podcast_guid: Annotated[str | None, Field(description='Podcast GUID (from RSS feed)')] = None rss_url: Annotated[AnyUrl | None, Field(description='RSS feed URL')] = None spotify_show_id: Annotated[str | None, Field(description='Spotify show ID')] = None youtube_video_id: Annotated[str | None, Field(description='YouTube video ID')] = NoneBase model for AdCP types with spec-compliant serialization.
AdCP JSON schemas use additionalProperties: false and do not allow null for optional fields. Therefore, optional fields must be omitted entirely when not present (not sent as null).
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 apple_podcast_id : str | Nonevar model_configvar podcast_guid : str | Nonevar rss_url : pydantic.networks.AnyUrl | Nonevar spotify_show_id : str | Nonevar youtube_video_id : str | None
Inherited members
class Metadata (**data: Any)-
Expand source code
class Metadata(AdCPBaseModel): model_config = ConfigDict( extra='allow', ) author: Annotated[str | None, Field(description='Artifact author name')] = None canonical: Annotated[AnyUrl | None, Field(description='Canonical URL')] = None json_ld: Annotated[ list[dict[str, Any]] | None, Field(description='JSON-LD structured data (schema.org)') ] = None keywords: Annotated[str | None, Field(description='Artifact keywords')] = None open_graph: Annotated[ dict[str, Any] | None, Field(description='Open Graph protocol metadata') ] = None twitter_card: Annotated[dict[str, Any] | None, Field(description='Twitter Card metadata')] = ( None )Base model for AdCP types with spec-compliant serialization.
AdCP JSON schemas use additionalProperties: false and do not allow null for optional fields. Therefore, optional fields must be omitted entirely when not present (not sent as null).
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 canonical : pydantic.networks.AnyUrl | Nonevar json_ld : list[dict[str, typing.Any]] | Nonevar keywords : str | Nonevar model_configvar open_graph : dict[str, typing.Any] | Nonevar twitter_card : dict[str, typing.Any] | None
Inherited members
class Provider (*args, **kwds)-
Expand source code
class Provider(Enum): gcp = 'gcp' aws = 'aws'Create a collection of name/value pairs.
Example enumeration:
>>> class Color(Enum): ... RED = 1 ... BLUE = 2 ... GREEN = 3Access them by:
- attribute access::
>>> Color.RED <Color.RED: 1>- value lookup:
>>> Color(1) <Color.RED: 1>- name lookup:
>>> Color['RED'] <Color.RED: 1>Enumerations can be iterated over, and know how many members they have:
>>> len(Color) 3>>> list(Color) [<Color.RED: 1>, <Color.BLUE: 2>, <Color.GREEN: 3>]Methods can be added to enumerations, and members can have their own attributes – see the documentation for details.
Ancestors
- enum.Enum
Class variables
var awsvar gcp
class Role (*args, **kwds)-
Expand source code
class Role(Enum): title_ = 'title' paragraph = 'paragraph' heading = 'heading' caption = 'caption' quote = 'quote' list_item = 'list_item' description = 'description'Create a collection of name/value pairs.
Example enumeration:
>>> class Color(Enum): ... RED = 1 ... BLUE = 2 ... GREEN = 3Access them by:
- attribute access::
>>> Color.RED <Color.RED: 1>- value lookup:
>>> Color(1) <Color.RED: 1>- name lookup:
>>> Color['RED'] <Color.RED: 1>Enumerations can be iterated over, and know how many members they have:
>>> len(Color) 3>>> list(Color) [<Color.RED: 1>, <Color.BLUE: 2>, <Color.GREEN: 3>]Methods can be added to enumerations, and members can have their own attributes – see the documentation for details.
Ancestors
- enum.Enum
Class variables
var captionvar descriptionvar headingvar list_itemvar paragraphvar quotevar title_
class TranscriptSource (*args, **kwds)-
Expand source code
class TranscriptSource(Enum): original_script = 'original_script' subtitles = 'subtitles' closed_captions = 'closed_captions' dub = 'dub' generated = 'generated'Create a collection of name/value pairs.
Example enumeration:
>>> class Color(Enum): ... RED = 1 ... BLUE = 2 ... GREEN = 3Access them by:
- attribute access::
>>> Color.RED <Color.RED: 1>- value lookup:
>>> Color(1) <Color.RED: 1>- name lookup:
>>> Color['RED'] <Color.RED: 1>Enumerations can be iterated over, and know how many members they have:
>>> len(Color) 3>>> list(Color) [<Color.RED: 1>, <Color.BLUE: 2>, <Color.GREEN: 3>]Methods can be added to enumerations, and members can have their own attributes – see the documentation for details.
Ancestors
- enum.Enum
Class variables
var closed_captionsvar dubvar generatedvar original_scriptvar subtitles
class TranscriptSource1 (*args, **kwds)-
Expand source code
class TranscriptSource1(Enum): original_script = 'original_script' closed_captions = 'closed_captions' generated = 'generated'Create a collection of name/value pairs.
Example enumeration:
>>> class Color(Enum): ... RED = 1 ... BLUE = 2 ... GREEN = 3Access them by:
- attribute access::
>>> Color.RED <Color.RED: 1>- value lookup:
>>> Color(1) <Color.RED: 1>- name lookup:
>>> Color['RED'] <Color.RED: 1>Enumerations can be iterated over, and know how many members they have:
>>> len(Color) 3>>> list(Color) [<Color.RED: 1>, <Color.BLUE: 2>, <Color.GREEN: 3>]Methods can be added to enumerations, and members can have their own attributes – see the documentation for details.
Ancestors
- enum.Enum
Class variables
var closed_captionsvar generatedvar original_script