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."
        ),
    ] = 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.

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

Ancestors

Class variables

var artifact_id : str
var assets : list[Assets | Assets1 | Assets2 | Assets3]
var format_idFormatId | None
var identifiersIdentifiers | None
var last_update_time : pydantic.types.AwareDatetime | None
var metadataMetadata | None
var model_config
var property_idIdentifier
var published_time : pydantic.types.AwareDatetime | None
var url : pydantic.networks.AnyUrl | None
var 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

RootModel and Custom Root Types

A Pydantic BaseModel for 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.

self is explicitly positional-only to allow self as 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_config
var rootAssetAccess1 | 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.

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

Ancestors

Class variables

var method : Literal['bearer_token']
var model_config
var 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.

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

Ancestors

Class variables

var credentials : dict[str, typing.Any] | None
var method : Literal['service_account']
var model_config
var providerProvider

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.

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

Ancestors

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.

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

Ancestors

Class variables

var content : str
var heading_level : int | None
var language : str | None
var model_config
var roleRole | None
var 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')] = 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.

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

Ancestors

Class variables

var accessAssetAccess | None
var alt_text : str | None
var caption : str | None
var height : int | None
var model_config
var type : Literal['image']
var url : pydantic.networks.AnyUrl
var 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.

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

Ancestors

Class variables

var accessAssetAccess | None
var duration_ms : int | None
var model_config
var thumbnail_url : pydantic.networks.AnyUrl | None
var transcript : str | None
var transcript_sourceTranscriptSource | None
var 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.

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

Ancestors

Class variables

var accessAssetAccess | None
var duration_ms : int | None
var model_config
var transcript : str | None
var transcript_sourceTranscriptSource1 | None
var 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')] = 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.

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

Ancestors

Class variables

var apple_podcast_id : str | None
var model_config
var podcast_guid : str | None
var rss_url : pydantic.networks.AnyUrl | None
var spotify_show_id : str | None
var 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.

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

Ancestors

Class variables

var author : str | None
var canonical : pydantic.networks.AnyUrl | None
var json_ld : list[dict[str, typing.Any]] | None
var keywords : str | None
var model_config
var open_graph : dict[str, typing.Any] | None
var 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 = 3

Access 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 aws
var 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 = 3

Access 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 caption
var description
var heading
var list_item
var paragraph
var quote
var 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 = 3

Access 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_captions
var dub
var generated
var original_script
var 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 = 3

Access 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_captions
var generated
var original_script