<filename>pacu/models/awsapi/kinesisvideo.py
# generated by datamodel-codegen:
#   filename:  openapi.yaml
#   timestamp: 2021-12-31T02:51:29+00:00

from __future__ import annotations

from datetime import datetime
from enum import Enum
from typing import Annotated, Any, List, Optional

from pydantic import BaseModel, Extra, Field


class MessageTtlSeconds(BaseModel):
    __root__: Annotated[int, Field(ge=5.0, le=120.0)]


class InvalidArgumentException(BaseModel):
    __root__: Any


class ClientLimitExceededException(InvalidArgumentException):
    pass


class AccountChannelLimitExceededException(InvalidArgumentException):
    pass


class ResourceInUseException(InvalidArgumentException):
    pass


class AccessDeniedException(InvalidArgumentException):
    pass


class TagsPerResourceExceededLimitException(InvalidArgumentException):
    pass


class TagValue(BaseModel):
    __root__: Annotated[
        str,
        Field(max_length=256, min_length=0, regex='[\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*'),
    ]


class AccountStreamLimitExceededException(InvalidArgumentException):
    pass


class DeviceStreamLimitExceededException(InvalidArgumentException):
    pass


class InvalidDeviceException(InvalidArgumentException):
    pass


class DeleteSignalingChannelOutput(BaseModel):
    pass


class ResourceNotFoundException(InvalidArgumentException):
    pass


class VersionMismatchException(InvalidArgumentException):
    pass


class DeleteStreamOutput(DeleteSignalingChannelOutput):
    pass


class NotAuthorizedException(InvalidArgumentException):
    pass


class ChannelRole(Enum):
    MASTER = 'MASTER'
    VIEWER = 'VIEWER'


class ComparisonOperator(Enum):
    BEGINS_WITH = 'BEGINS_WITH'


class ChannelName(BaseModel):
    __root__: Annotated[
        str, Field(max_length=256, min_length=1, regex='[a-zA-Z0-9_.-]+')
    ]


class StreamName(ChannelName):
    pass


class InvalidResourceFormatException(InvalidArgumentException):
    pass


class TagResourceOutput(DeleteSignalingChannelOutput):
    pass


class TagStreamOutput(DeleteSignalingChannelOutput):
    pass


class UntagResourceOutput(DeleteSignalingChannelOutput):
    pass


class TagKey(BaseModel):
    __root__: Annotated[
        str,
        Field(
            max_length=128, min_length=1, regex='^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$'
        ),
    ]


class UntagStreamOutput(DeleteSignalingChannelOutput):
    pass


class UpdateDataRetentionOutput(DeleteSignalingChannelOutput):
    pass


class UpdateSignalingChannelOutput(DeleteSignalingChannelOutput):
    pass


class UpdateStreamOutput(DeleteSignalingChannelOutput):
    pass


class APIName(Enum):
    PUT_MEDIA = 'PUT_MEDIA'
    GET_MEDIA = 'GET_MEDIA'
    LIST_FRAGMENTS = 'LIST_FRAGMENTS'
    GET_MEDIA_FOR_FRAGMENT_LIST = 'GET_MEDIA_FOR_FRAGMENT_LIST'
    GET_HLS_STREAMING_SESSION_URL = 'GET_HLS_STREAMING_SESSION_URL'
    GET_DASH_STREAMING_SESSION_URL = 'GET_DASH_STREAMING_SESSION_URL'
    GET_CLIP = 'GET_CLIP'


class ResourceARN(BaseModel):
    __root__: Annotated[
        str,
        Field(
            max_length=1024,
            min_length=1,
            regex='arn:aws:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+',
        ),
    ]


class ChannelType(Enum):
    SINGLE_MASTER = 'SINGLE_MASTER'


class Status(Enum):
    CREATING = 'CREATING'
    ACTIVE = 'ACTIVE'
    UPDATING = 'UPDATING'
    DELETING = 'DELETING'


class Timestamp(BaseModel):
    __root__: datetime


class SingleMasterConfiguration(BaseModel):
    """
    A structure that contains the configuration for the <code>SINGLE_MASTER</code> channel type.
    """

    MessageTtlSeconds: Optional[MessageTtlSeconds] = None


class Version(BaseModel):
    __root__: Annotated[str, Field(max_length=64, min_length=1, regex='[a-zA-Z0-9]+')]


class ChannelInfo(BaseModel):
    """
    A structure that encapsulates a signaling channel's metadata and properties.
    """

    ChannelName: Optional[ChannelName] = None
    ChannelARN: Optional[ResourceARN] = None
    ChannelType: Optional[ChannelType] = None
    ChannelStatus: Optional[Status] = None
    CreationTime: Optional[Timestamp] = None
    SingleMasterConfiguration: Optional[SingleMasterConfiguration] = None
    Version: Optional[Version] = None


class ChannelInfoList(BaseModel):
    __root__: List[ChannelInfo]


class ChannelNameCondition(BaseModel):
    """
    An optional input parameter for the <code>ListSignalingChannels</code> API. When this parameter is specified while invoking <code>ListSignalingChannels</code>, the API returns only the channels that satisfy a condition specified in <code>ChannelNameCondition</code>.
    """

    ComparisonOperator: Optional[ComparisonOperator] = None
    ComparisonValue: Optional[ChannelName] = None


class ChannelProtocol(Enum):
    WSS = 'WSS'
    HTTPS = 'HTTPS'


class DeviceName(BaseModel):
    __root__: Annotated[
        str, Field(max_length=128, min_length=1, regex='[a-zA-Z0-9_.-]+')
    ]


class MediaType(BaseModel):
    __root__: Annotated[
        str,
        Field(
            max_length=128,
            min_length=1,
            regex='[\\w\\-\\.\\+]+/[\\w\\-\\.\\+]+(,[\\w\\-\\.\\+]+/[\\w\\-\\.\\+]+)*',
        ),
    ]


class KmsKeyId(BaseModel):
    __root__: Annotated[str, Field(max_length=2048, min_length=1, regex='.+')]


class DataRetentionInHours(BaseModel):
    __root__: Annotated[int, Field(ge=0.0)]


class ResourceTags(BaseModel):
    pass

    class Config:
        extra = Extra.allow


class CreateStreamInput(BaseModel):
    DeviceName: Optional[DeviceName] = None
    StreamName: StreamName
    MediaType: Optional[MediaType] = None
    KmsKeyId: Optional[KmsKeyId] = None
    DataRetentionInHours: Optional[DataRetentionInHours] = None
    Tags: Optional[ResourceTags] = None


class DataEndpoint(BaseModel):
    __root__: str


class DataRetentionChangeInHours(BaseModel):
    __root__: Annotated[int, Field(ge=1.0)]


class DeleteSignalingChannelInput(BaseModel):
    ChannelARN: ResourceARN
    CurrentVersion: Optional[Version] = None


class DeleteStreamInput(BaseModel):
    StreamARN: ResourceARN
    CurrentVersion: Optional[Version] = None


class DescribeSignalingChannelInput(BaseModel):
    ChannelName: Optional[ChannelName] = None
    ChannelARN: Optional[ResourceARN] = None


class DescribeStreamInput(BaseModel):
    StreamName: Optional[StreamName] = None
    StreamARN: Optional[ResourceARN] = None


class StreamInfo(BaseModel):
    """
    An object describing a Kinesis video stream.
    """

    DeviceName: Optional[DeviceName] = None
    StreamName: Optional[StreamName] = None
    StreamARN: Optional[ResourceARN] = None
    MediaType: Optional[MediaType] = None
    KmsKeyId: Optional[KmsKeyId] = None
    Version: Optional[Version] = None
    Status: Optional[Status] = None
    CreationTime: Optional[Timestamp] = None
    DataRetentionInHours: Optional[DataRetentionInHours] = None


class GetDataEndpointInput(BaseModel):
    StreamName: Optional[StreamName] = None
    StreamARN: Optional[ResourceARN] = None
    APIName: APIName


class ListStreamsInputLimit(BaseModel):
    __root__: Annotated[int, Field(ge=1.0, le=10000.0)]


class NextToken(BaseModel):
    __root__: Annotated[
        str, Field(max_length=512, min_length=0, regex='[a-zA-Z0-9+/=]*')
    ]


class ListSignalingChannelsInput(BaseModel):
    MaxResults: Optional[ListStreamsInputLimit] = None
    NextToken: Optional[NextToken] = None
    ChannelNameCondition: Optional[ChannelNameCondition] = None


class StreamNameCondition(BaseModel):
    """
    Specifies the condition that streams must satisfy to be returned when you list streams (see the <code>ListStreams</code> API). A condition has a comparison operation and a value. Currently, you can specify only the <code>BEGINS_WITH</code> operator, which finds streams whose names start with a given prefix.
    """

    ComparisonOperator: Optional[ComparisonOperator] = None
    ComparisonValue: Optional[StreamName] = None


class ListStreamsInput(BaseModel):
    MaxResults: Optional[ListStreamsInputLimit] = None
    NextToken: Optional[NextToken] = None
    StreamNameCondition: Optional[StreamNameCondition] = None


class StreamInfoList(BaseModel):
    __root__: List[StreamInfo]


class ListTagsForResourceInput(BaseModel):
    NextToken: Optional[NextToken] = None
    ResourceARN: ResourceARN


class ListTagsForStreamInput(BaseModel):
    NextToken: Optional[NextToken] = None
    StreamARN: Optional[ResourceARN] = None
    StreamName: Optional[StreamName] = None


class ResourceEndpoint(DataEndpoint):
    pass


class ResourceEndpointListItem(BaseModel):
    """
    An object that describes the endpoint of the signaling channel returned by the <code>GetSignalingChannelEndpoint</code> API.
    """

    Protocol: Optional[ChannelProtocol] = None
    ResourceEndpoint: Optional[ResourceEndpoint] = None


class TagKeyList(BaseModel):
    __root__: Annotated[List[TagKey], Field(max_items=50, min_items=1)]


class TagStreamInput(BaseModel):
    StreamARN: Optional[ResourceARN] = None
    StreamName: Optional[StreamName] = None
    Tags: ResourceTags


class UntagResourceInput(BaseModel):
    ResourceARN: ResourceARN
    TagKeyList: TagKeyList


class UntagStreamInput(BaseModel):
    StreamARN: Optional[ResourceARN] = None
    StreamName: Optional[StreamName] = None
    TagKeyList: TagKeyList


class UpdateDataRetentionOperation(Enum):
    INCREASE_DATA_RETENTION = 'INCREASE_DATA_RETENTION'
    DECREASE_DATA_RETENTION = 'DECREASE_DATA_RETENTION'


class UpdateDataRetentionInput(BaseModel):
    StreamName: Optional[StreamName] = None
    StreamARN: Optional[ResourceARN] = None
    CurrentVersion: Version
    Operation: UpdateDataRetentionOperation
    DataRetentionChangeInHours: DataRetentionChangeInHours


class UpdateSignalingChannelInput(BaseModel):
    ChannelARN: ResourceARN
    CurrentVersion: Version
    SingleMasterConfiguration: Optional[SingleMasterConfiguration] = None


class UpdateStreamInput(BaseModel):
    StreamName: Optional[StreamName] = None
    StreamARN: Optional[ResourceARN] = None
    CurrentVersion: Version
    DeviceName: Optional[DeviceName] = None
    MediaType: Optional[MediaType] = None


class CreateSignalingChannelOutput(BaseModel):
    ChannelARN: Optional[ResourceARN] = None


class Tag(BaseModel):
    """
    A key and value pair that is associated with the specified signaling channel.
    """

    Key: TagKey
    Value: TagValue


class CreateStreamOutput(BaseModel):
    StreamARN: Optional[ResourceARN] = None


class DescribeSignalingChannelOutput(BaseModel):
    ChannelInfo: Optional[ChannelInfo] = None


class DescribeStreamOutput(BaseModel):
    StreamInfo: Optional[StreamInfo] = None


class GetDataEndpointOutput(BaseModel):
    DataEndpoint: Optional[DataEndpoint] = None


class ListOfProtocols(BaseModel):
    __root__: Annotated[List[ChannelProtocol], Field(max_items=5, min_items=1)]


class ListSignalingChannelsOutput(BaseModel):
    ChannelInfoList: Optional[ChannelInfoList] = None
    NextToken: Optional[NextToken] = None


class ListStreamsOutput(BaseModel):
    StreamInfoList: Optional[StreamInfoList] = None
    NextToken: Optional[NextToken] = None


class ListTagsForResourceOutput(BaseModel):
    NextToken: Optional[NextToken] = None
    Tags: Optional[ResourceTags] = None


class ListTagsForStreamOutput(ListTagsForResourceOutput):
    pass


class TagOnCreateList(BaseModel):
    __root__: Annotated[List[Tag], Field(max_items=50, min_items=0)]


class CreateSignalingChannelInput(BaseModel):
    ChannelName: ChannelName
    ChannelType: Optional[ChannelType] = None
    SingleMasterConfiguration: Optional[SingleMasterConfiguration] = None
    Tags: Optional[TagOnCreateList] = None


class SingleMasterChannelEndpointConfiguration(BaseModel):
    """
    An object that contains the endpoint configuration for the <code>SINGLE_MASTER</code> channel type.
    """

    Protocols: Optional[ListOfProtocols] = None
    Role: Optional[ChannelRole] = None


class GetSignalingChannelEndpointInput(BaseModel):
    ChannelARN: ResourceARN
    SingleMasterChannelEndpointConfiguration: Optional[
        SingleMasterChannelEndpointConfiguration
    ] = None


class ResourceEndpointList(BaseModel):
    __root__: List[ResourceEndpointListItem]


class TagList(BaseModel):
    __root__: Annotated[List[Tag], Field(max_items=50, min_items=1)]


class TagResourceInput(BaseModel):
    ResourceARN: ResourceARN
    Tags: TagList


class GetSignalingChannelEndpointOutput(BaseModel):
    ResourceEndpointList: Optional[ResourceEndpointList] = None

<filename>pacu/models/awsapi/kinesisvideo.py
# generated by datamodel-codegen:
#   filename:  openapi.yaml
#   timestamp: 2021-12-31T02:51:29+00:00

from __future__ import annotations

from datetime import datetime
from enum import Enum
from typing import Annotated, Any, List, Optional

from pydantic import BaseModel, Extra, Field


class MessageTtlSeconds(BaseModel):
    __root__: Annotated[int, Field(ge=5.0, le=120.0)]


class InvalidArgumentException(BaseModel):
    __root__: Any


class ClientLimitExceededException(InvalidArgumentException):
    pass


class AccountChannelLimitExceededException(InvalidArgumentException):
    pass


class ResourceInUseException(InvalidArgumentException):
    pass


class AccessDeniedException(InvalidArgumentException):
    pass


class TagsPerResourceExceededLimitException(InvalidArgumentException):
    pass


class TagValue(BaseModel):
    __root__: Annotated[
        str,
        Field(max_length=256, min_length=0, regex='[\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*'),
    ]


class AccountStreamLimitExceededException(InvalidArgumentException):
    pass


class DeviceStreamLimitExceededException(InvalidArgumentException):
    pass


class InvalidDeviceException(InvalidArgumentException):
    pass


class DeleteSignalingChannelOutput(BaseModel):
    pass


class ResourceNotFoundException(InvalidArgumentException):
    pass


class VersionMismatchException(InvalidArgumentException):
    pass


class DeleteStreamOutput(DeleteSignalingChannelOutput):
    pass


class NotAuthorizedException(InvalidArgumentException):
    pass


class ChannelRole(Enum):
    MASTER = 'MASTER'
    VIEWER = 'VIEWER'


class ComparisonOperator(Enum):
    BEGINS_WITH = 'BEGINS_WITH'


class ChannelName(BaseModel):
    __root__: Annotated[
        str, Field(max_length=256, min_length=1, regex='[a-zA-Z0-9_.-]+')
    ]


class StreamName(ChannelName):
    pass


class InvalidResourceFormatException(InvalidArgumentException):
    pass


class TagResourceOutput(DeleteSignalingChannelOutput):
    pass


class TagStreamOutput(DeleteSignalingChannelOutput):
    pass


class UntagResourceOutput(DeleteSignalingChannelOutput):
    pass


class TagKey(BaseModel):
    __root__: Annotated[
        str,
        Field(
            max_length=128, min_length=1, regex='^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$'
        ),
    ]


class UntagStreamOutput(DeleteSignalingChannelOutput):
    pass


class UpdateDataRetentionOutput(DeleteSignalingChannelOutput):
    pass


class UpdateSignalingChannelOutput(DeleteSignalingChannelOutput):
    pass


class UpdateStreamOutput(DeleteSignalingChannelOutput):
    pass


class APIName(Enum):
    PUT_MEDIA = 'PUT_MEDIA'
    GET_MEDIA = 'GET_MEDIA'
    LIST_FRAGMENTS = 'LIST_FRAGMENTS'
    GET_MEDIA_FOR_FRAGMENT_LIST = 'GET_MEDIA_FOR_FRAGMENT_LIST'
    GET_HLS_STREAMING_SESSION_URL = 'GET_HLS_STREAMING_SESSION_URL'
    GET_DASH_STREAMING_SESSION_URL = 'GET_DASH_STREAMING_SESSION_URL'
    GET_CLIP = 'GET_CLIP'


class ResourceARN(BaseModel):
    __root__: Annotated[
        str,
        Field(
            max_length=1024,
            min_length=1,
            regex='arn:aws:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+',
        ),
    ]


class ChannelType(Enum):
    SINGLE_MASTER = 'SINGLE_MASTER'


class Status(Enum):
    CREATING = 'CREATING'
    ACTIVE = 'ACTIVE'
    UPDATING = 'UPDATING'
    DELETING = 'DELETING'


class Timestamp(BaseModel):
    __root__: datetime


class SingleMasterConfiguration(BaseModel):
    """
    A structure that contains the configuration for the <code>SINGLE_MASTER</code> channel type.
    """

    MessageTtlSeconds: Optional[MessageTtlSeconds] = None


class Version(BaseModel):
    __root__: Annotated[str, Field(max_length=64, min_length=1, regex='[a-zA-Z0-9]+')]


class ChannelInfo(BaseModel):
    """
    A structure that encapsulates a signaling channel's metadata and properties.
    """

    ChannelName: Optional[ChannelName] = None
    ChannelARN: Optional[ResourceARN] = None
    ChannelType: Optional[ChannelType] = None
    ChannelStatus: Optional[Status] = None
    CreationTime: Optional[Timestamp] = None
    SingleMasterConfiguration: Optional[SingleMasterConfiguration] = None
    Version: Optional[Version] = None


class ChannelInfoList(BaseModel):
    __root__: List[ChannelInfo]


class ChannelNameCondition(BaseModel):
    """
    An optional input parameter for the <code>ListSignalingChannels</code> API. When this parameter is specified while invoking <code>ListSignalingChannels</code>, the API returns only the channels that satisfy a condition specified in <code>ChannelNameCondition</code>.
    """

    ComparisonOperator: Optional[ComparisonOperator] = None
    ComparisonValue: Optional[ChannelName] = None


class ChannelProtocol(Enum):
    WSS = 'WSS'
    HTTPS = 'HTTPS'


class DeviceName(BaseModel):
    __root__: Annotated[
        str, Field(max_length=128, min_length=1, regex='[a-zA-Z0-9_.-]+')
    ]


class MediaType(BaseModel):
    __root__: Annotated[
        str,
        Field(
            max_length=128,
            min_length=1,
            regex='[\\w\\-\\.\\+]+/[\\w\\-\\.\\+]+(,[\\w\\-\\.\\+]+/[\\w\\-\\.\\+]+)*',
        ),
    ]


class KmsKeyId(BaseModel):
    __root__: Annotated[str, Field(max_length=2048, min_length=1, regex='.+')]


class DataRetentionInHours(BaseModel):
    __root__: Annotated[int, Field(ge=0.0)]


class ResourceTags(BaseModel):
    pass

    class Config:
        extra = Extra.allow


class CreateStreamInput(BaseModel):
    DeviceName: Optional[DeviceName] = None
    StreamName: StreamName
    MediaType: Optional[MediaType] = None
    KmsKeyId: Optional[KmsKeyId] = None
    DataRetentionInHours: Optional[DataRetentionInHours] = None
    Tags: Optional[ResourceTags] = None


class DataEndpoint(BaseModel):
    __root__: str


class DataRetentionChangeInHours(BaseModel):
    __root__: Annotated[int, Field(ge=1.0)]


class DeleteSignalingChannelInput(BaseModel):
    ChannelARN: ResourceARN
    CurrentVersion: Optional[Version] = None


class DeleteStreamInput(BaseModel):
    StreamARN: ResourceARN
    CurrentVersion: Optional[Version] = None


class DescribeSignalingChannelInput(BaseModel):
    ChannelName: Optional[ChannelName] = None
    ChannelARN: Optional[ResourceARN] = None


class DescribeStreamInput(BaseModel):
    StreamName: Optional[StreamName] = None
    StreamARN: Optional[ResourceARN] = None


class StreamInfo(BaseModel):
    """
    An object describing a Kinesis video stream.
    """

    DeviceName: Optional[DeviceName] = None
    StreamName: Optional[StreamName] = None
    StreamARN: Optional[ResourceARN] = None
    MediaType: Optional[MediaType] = None
    KmsKeyId: Optional[KmsKeyId] = None
    Version: Optional[Version] = None
    Status: Optional[Status] = None
    CreationTime: Optional[Timestamp] = None
    DataRetentionInHours: Optional[DataRetentionInHours] = None


class GetDataEndpointInput(BaseModel):
    StreamName: Optional[StreamName] = None
    StreamARN: Optional[ResourceARN] = None
    APIName: APIName


class ListStreamsInputLimit(BaseModel):
    __root__: Annotated[int, Field(ge=1.0, le=10000.0)]


class NextToken(BaseModel):
    __root__: Annotated[
        str, Field(max_length=512, min_length=0, regex='[a-zA-Z0-9+/=]*')
    ]


class ListSignalingChannelsInput(BaseModel):
    MaxResults: Optional[ListStreamsInputLimit] = None
    NextToken: Optional[NextToken] = None
    ChannelNameCondition: Optional[ChannelNameCondition] = None


class StreamNameCondition(BaseModel):
    """
    Specifies the condition that streams must satisfy to be returned when you list streams (see the <code>ListStreams</code> API). A condition has a comparison operation and a value. Currently, you can specify only the <code>BEGINS_WITH</code> operator, which finds streams whose names start with a given prefix.
    """

    ComparisonOperator: Optional[ComparisonOperator] = None
    ComparisonValue: Optional[StreamName] = None


class ListStreamsInput(BaseModel):
    MaxResults: Optional[ListStreamsInputLimit] = None
    NextToken: Optional[NextToken] = None
    StreamNameCondition: Optional[StreamNameCondition] = None


class StreamInfoList(BaseModel):
    __root__: List[StreamInfo]


class ListTagsForResourceInput(BaseModel):
    NextToken: Optional[NextToken] = None
    ResourceARN: ResourceARN


class ListTagsForStreamInput(BaseModel):
    NextToken: Optional[NextToken] = None
    StreamARN: Optional[ResourceARN] = None
    StreamName: Optional[StreamName] = None


class ResourceEndpoint(DataEndpoint):
    pass


class ResourceEndpointListItem(BaseModel):
    """
    An object that describes the endpoint of the signaling channel returned by the <code>GetSignalingChannelEndpoint</code> API.
    """

    Protocol: Optional[ChannelProtocol] = None
    ResourceEndpoint: Optional[ResourceEndpoint] = None


class TagKeyList(BaseModel):
    __root__: Annotated[List[TagKey], Field(max_items=50, min_items=1)]


class TagStreamInput(BaseModel):
    StreamARN: Optional[ResourceARN] = None
    StreamName: Optional[StreamName] = None
    Tags: ResourceTags


class UntagResourceInput(BaseModel):
    ResourceARN: ResourceARN
    TagKeyList: TagKeyList


class UntagStreamInput(BaseModel):
    StreamARN: Optional[ResourceARN] = None
    StreamName: Optional[StreamName] = None
    TagKeyList: TagKeyList


class UpdateDataRetentionOperation(Enum):
    INCREASE_DATA_RETENTION = 'INCREASE_DATA_RETENTION'
    DECREASE_DATA_RETENTION = 'DECREASE_DATA_RETENTION'


class UpdateDataRetentionInput(BaseModel):
    StreamName: Optional[StreamName] = None
    StreamARN: Optional[ResourceARN] = None
    CurrentVersion: Version
    Operation: UpdateDataRetentionOperation
    DataRetentionChangeInHours: DataRetentionChangeInHours


class UpdateSignalingChannelInput(BaseModel):
    ChannelARN: ResourceARN
    CurrentVersion: Version
    SingleMasterConfiguration: Optional[SingleMasterConfiguration] = None


class UpdateStreamInput(BaseModel):
    StreamName: Optional[StreamName] = None
    StreamARN: Optional[ResourceARN] = None
    CurrentVersion: Version
    DeviceName: Optional[DeviceName] = None
    MediaType: Optional[MediaType] = None


class CreateSignalingChannelOutput(BaseModel):
    ChannelARN: Optional[ResourceARN] = None


class Tag(BaseModel):
    """
    A key and value pair that is associated with the specified signaling channel.
    """

    Key: TagKey
    Value: TagValue


class CreateStreamOutput(BaseModel):
    StreamARN: Optional[ResourceARN] = None


class DescribeSignalingChannelOutput(BaseModel):
    ChannelInfo: Optional[ChannelInfo] = None


class DescribeStreamOutput(BaseModel):
    StreamInfo: Optional[StreamInfo] = None


class GetDataEndpointOutput(BaseModel):
    DataEndpoint: Optional[DataEndpoint] = None


class ListOfProtocols(BaseModel):
    __root__: Annotated[List[ChannelProtocol], Field(max_items=5, min_items=1)]


class ListSignalingChannelsOutput(BaseModel):
    ChannelInfoList: Optional[ChannelInfoList] = None
    NextToken: Optional[NextToken] = None


class ListStreamsOutput(BaseModel):
    StreamInfoList: Optional[StreamInfoList] = None
    NextToken: Optional[NextToken] = None


class ListTagsForResourceOutput(BaseModel):
    NextToken: Optional[NextToken] = None
    Tags: Optional[ResourceTags] = None


class ListTagsForStreamOutput(ListTagsForResourceOutput):
    pass


class TagOnCreateList(BaseModel):
    __root__: Annotated[List[Tag], Field(max_items=50, min_items=0)]


class CreateSignalingChannelInput(BaseModel):
    ChannelName: ChannelName
    ChannelType: Optional[ChannelType] = None
    SingleMasterConfiguration: Optional[SingleMasterConfiguration] = None
    Tags: Optional[TagOnCreateList] = None


class SingleMasterChannelEndpointConfiguration(BaseModel):
    """
    An object that contains the endpoint configuration for the <code>SINGLE_MASTER</code> channel type.
    """

    Protocols: Optional[ListOfProtocols] = None
    Role: Optional[ChannelRole] = None


class GetSignalingChannelEndpointInput(BaseModel):
    ChannelARN: ResourceARN
    SingleMasterChannelEndpointConfiguration: Optional[
        SingleMasterChannelEndpointConfiguration
    ] = None


class ResourceEndpointList(BaseModel):
    __root__: List[ResourceEndpointListItem]


class TagList(BaseModel):
    __root__: Annotated[List[Tag], Field(max_items=50, min_items=1)]


class TagResourceInput(BaseModel):
    ResourceARN: ResourceARN
    Tags: TagList


class GetSignalingChannelEndpointOutput(BaseModel):
    ResourceEndpointList: Optional[ResourceEndpointList] = None

# generated by datamodel-codegen: #   filename:  openapi.yaml #   timestamp: 2021-12-31T02:51:29+00:00 A structure that contains the configuration for the <code>SINGLE_MASTER</code> channel type. A structure that encapsulates a signaling channel's metadata and properties. An optional input parameter for the <code>ListSignalingChannels</code> API. When this parameter is specified while invoking <code>ListSignalingChannels</code>, the API returns only the channels that satisfy a condition specified in <code>ChannelNameCondition</code>. An object describing a Kinesis video stream. Specifies the condition that streams must satisfy to be returned when you list streams (see the <code>ListStreams</code> API). A condition has a comparison operation and a value. Currently, you can specify only the <code>BEGINS_WITH</code> operator, which finds streams whose names start with a given prefix. An object that describes the endpoint of the signaling channel returned by the <code>GetSignalingChannelEndpoint</code> API. A key and value pair that is associated with the specified signaling channel. An object that contains the endpoint configuration for the <code>SINGLE_MASTER</code> channel type.