"""Raw representations of every data type in the AWS Pinpoint service.

See Also:
    `AWS developer guide for Pinpoint
    <https://docs.aws.amazon.com/pinpoint/latest/userguide/welcome.html>`_

This file is automatically generated, and should not be directly edited.
"""

from attr import attrib
from attr import attrs

from ..core import ATTRSCONFIG
from ..core import Resource
from ..core import ResourceProperties
from ..core import create_object_converter

__all__ = [
    "ADMChannel",
    "ADMChannelProperties",
    "APNSChannel",
    "APNSChannelProperties",
    "APNSSandboxChannel",
    "APNSSandboxChannelProperties",
    "APNSVoipChannel",
    "APNSVoipChannelProperties",
    "APNSVoipSandboxChannel",
    "APNSVoipSandboxChannelProperties",
    "App",
    "AppProperties",
    "ApplicationSettings",
    "ApplicationSettingsProperties",
    "BaiduChannel",
    "BaiduChannelProperties",
    "Campaign",
    "CampaignProperties",
    "EmailChannel",
    "EmailChannelProperties",
    "EventStream",
    "EventStreamProperties",
    "GCMChannel",
    "GCMChannelProperties",
    "Segment",
    "SegmentProperties",
    "SMSChannel",
    "SMSChannelProperties",
    "VoiceChannel",
    "VoiceChannelProperties",
]


@attrs(**ATTRSCONFIG)
class ADMChannelProperties(ResourceProperties):
    ApplicationId = attrib(default=None)
    ClientId = attrib(default=None)
    ClientSecret = attrib(default=None)
    Enabled = attrib(default=None)


@attrs(**ATTRSCONFIG)
class ADMChannel(Resource):
    """A Adm Channel for Pinpoint.

    See Also:
        `AWS Cloud Formation documentation for ADMChannel
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-admchannel.html>`_
    """

    RESOURCE_TYPE = "AWS::Pinpoint::ADMChannel"

    Properties: ADMChannelProperties = attrib(
        factory=ADMChannelProperties,
        converter=create_object_converter(ADMChannelProperties),
    )


@attrs(**ATTRSCONFIG)
class APNSChannelProperties(ResourceProperties):
    ApplicationId = attrib(default=None)
    BundleId = attrib(default=None)
    Certificate = attrib(default=None)
    DefaultAuthenticationMethod = attrib(default=None)
    Enabled = attrib(default=None)
    PrivateKey = attrib(default=None)
    TeamId = attrib(default=None)
    TokenKey = attrib(default=None)
    TokenKeyId = attrib(default=None)


@attrs(**ATTRSCONFIG)
class APNSChannel(Resource):
    """A Apns Channel for Pinpoint.

    See Also:
        `AWS Cloud Formation documentation for APNSChannel
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnschannel.html>`_
    """

    RESOURCE_TYPE = "AWS::Pinpoint::APNSChannel"

    Properties: APNSChannelProperties = attrib(
        factory=APNSChannelProperties,
        converter=create_object_converter(APNSChannelProperties),
    )


@attrs(**ATTRSCONFIG)
class APNSSandboxChannelProperties(ResourceProperties):
    ApplicationId = attrib(default=None)
    BundleId = attrib(default=None)
    Certificate = attrib(default=None)
    DefaultAuthenticationMethod = attrib(default=None)
    Enabled = attrib(default=None)
    PrivateKey = attrib(default=None)
    TeamId = attrib(default=None)
    TokenKey = attrib(default=None)
    TokenKeyId = attrib(default=None)


@attrs(**ATTRSCONFIG)
class APNSSandboxChannel(Resource):
    """A Apns Sandbox Channel for Pinpoint.

    See Also:
        `AWS Cloud Formation documentation for APNSSandboxChannel
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnssandboxchannel.html>`_
    """

    RESOURCE_TYPE = "AWS::Pinpoint::APNSSandboxChannel"

    Properties: APNSSandboxChannelProperties = attrib(
        factory=APNSSandboxChannelProperties,
        converter=create_object_converter(APNSSandboxChannelProperties),
    )


@attrs(**ATTRSCONFIG)
class APNSVoipChannelProperties(ResourceProperties):
    ApplicationId = attrib(default=None)
    BundleId = attrib(default=None)
    Certificate = attrib(default=None)
    DefaultAuthenticationMethod = attrib(default=None)
    Enabled = attrib(default=None)
    PrivateKey = attrib(default=None)
    TeamId = attrib(default=None)
    TokenKey = attrib(default=None)
    TokenKeyId = attrib(default=None)


@attrs(**ATTRSCONFIG)
class APNSVoipChannel(Resource):
    """A Apns Voip Channel for Pinpoint.

    See Also:
        `AWS Cloud Formation documentation for APNSVoipChannel
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnsvoipchannel.html>`_
    """

    RESOURCE_TYPE = "AWS::Pinpoint::APNSVoipChannel"

    Properties: APNSVoipChannelProperties = attrib(
        factory=APNSVoipChannelProperties,
        converter=create_object_converter(APNSVoipChannelProperties),
    )


@attrs(**ATTRSCONFIG)
class APNSVoipSandboxChannelProperties(ResourceProperties):
    ApplicationId = attrib(default=None)
    BundleId = attrib(default=None)
    Certificate = attrib(default=None)
    DefaultAuthenticationMethod = attrib(default=None)
    Enabled = attrib(default=None)
    PrivateKey = attrib(default=None)
    TeamId = attrib(default=None)
    TokenKey = attrib(default=None)
    TokenKeyId = attrib(default=None)


@attrs(**ATTRSCONFIG)
class APNSVoipSandboxChannel(Resource):
    """A Apns Voip Sandbox Channel for Pinpoint.

    See Also:
        `AWS Cloud Formation documentation for APNSVoipSandboxChannel
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnsvoipsandboxchannel.html>`_
    """

    RESOURCE_TYPE = "AWS::Pinpoint::APNSVoipSandboxChannel"

    Properties: APNSVoipSandboxChannelProperties = attrib(
        factory=APNSVoipSandboxChannelProperties,
        converter=create_object_converter(APNSVoipSandboxChannelProperties),
    )


@attrs(**ATTRSCONFIG)
class AppProperties(ResourceProperties):
    Name = attrib(default=None)


@attrs(**ATTRSCONFIG)
class App(Resource):
    """A App for Pinpoint.

    See Also:
        `AWS Cloud Formation documentation for App
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-app.html>`_
    """

    RESOURCE_TYPE = "AWS::Pinpoint::App"

    Properties: AppProperties = attrib(
        factory=AppProperties, converter=create_object_converter(AppProperties)
    )


@attrs(**ATTRSCONFIG)
class ApplicationSettingsProperties(ResourceProperties):
    ApplicationId = attrib(default=None)
    CampaignHook = attrib(default=None)
    CloudWatchMetricsEnabled = attrib(default=None)
    Limits = attrib(default=None)
    QuietTime = attrib(default=None)


@attrs(**ATTRSCONFIG)
class ApplicationSettings(Resource):
    """A Application Settings for Pinpoint.

    See Also:
        `AWS Cloud Formation documentation for ApplicationSettings
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-applicationsettings.html>`_
    """

    RESOURCE_TYPE = "AWS::Pinpoint::ApplicationSettings"

    Properties: ApplicationSettingsProperties = attrib(
        factory=ApplicationSettingsProperties,
        converter=create_object_converter(ApplicationSettingsProperties),
    )


@attrs(**ATTRSCONFIG)
class BaiduChannelProperties(ResourceProperties):
    ApiKey = attrib(default=None)
    ApplicationId = attrib(default=None)
    Enabled = attrib(default=None)
    SecretKey = attrib(default=None)


@attrs(**ATTRSCONFIG)
class BaiduChannel(Resource):
    """A Baidu Channel for Pinpoint.

    See Also:
        `AWS Cloud Formation documentation for BaiduChannel
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-baiduchannel.html>`_
    """

    RESOURCE_TYPE = "AWS::Pinpoint::BaiduChannel"

    Properties: BaiduChannelProperties = attrib(
        factory=BaiduChannelProperties,
        converter=create_object_converter(BaiduChannelProperties),
    )


@attrs(**ATTRSCONFIG)
class CampaignProperties(ResourceProperties):
    AdditionalTreatments = attrib(default=None)
    ApplicationId = attrib(default=None)
    CampaignHook = attrib(default=None)
    Description = attrib(default=None)
    HoldoutPercent = attrib(default=None)
    IsPaused = attrib(default=None)
    Limits = attrib(default=None)
    MessageConfiguration = attrib(default=None)
    Name = attrib(default=None)
    Schedule = attrib(default=None)
    SegmentId = attrib(default=None)
    SegmentVersion = attrib(default=None)
    TreatmentDescription = attrib(default=None)
    TreatmentName = attrib(default=None)


@attrs(**ATTRSCONFIG)
class Campaign(Resource):
    """A Campaign for Pinpoint.

    See Also:
        `AWS Cloud Formation documentation for Campaign
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html>`_
    """

    RESOURCE_TYPE = "AWS::Pinpoint::Campaign"

    Properties: CampaignProperties = attrib(
        factory=CampaignProperties,
        converter=create_object_converter(CampaignProperties),
    )


@attrs(**ATTRSCONFIG)
class EmailChannelProperties(ResourceProperties):
    ApplicationId = attrib(default=None)
    ConfigurationSet = attrib(default=None)
    Enabled = attrib(default=None)
    FromAddress = attrib(default=None)
    Identity = attrib(default=None)
    RoleArn = attrib(default=None)


@attrs(**ATTRSCONFIG)
class EmailChannel(Resource):
    """A Email Channel for Pinpoint.

    See Also:
        `AWS Cloud Formation documentation for EmailChannel
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-emailchannel.html>`_
    """

    RESOURCE_TYPE = "AWS::Pinpoint::EmailChannel"

    Properties: EmailChannelProperties = attrib(
        factory=EmailChannelProperties,
        converter=create_object_converter(EmailChannelProperties),
    )


@attrs(**ATTRSCONFIG)
class EventStreamProperties(ResourceProperties):
    ApplicationId = attrib(default=None)
    DestinationStreamArn = attrib(default=None)
    RoleArn = attrib(default=None)


@attrs(**ATTRSCONFIG)
class EventStream(Resource):
    """A Event Stream for Pinpoint.

    See Also:
        `AWS Cloud Formation documentation for EventStream
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-eventstream.html>`_
    """

    RESOURCE_TYPE = "AWS::Pinpoint::EventStream"

    Properties: EventStreamProperties = attrib(
        factory=EventStreamProperties,
        converter=create_object_converter(EventStreamProperties),
    )


@attrs(**ATTRSCONFIG)
class GCMChannelProperties(ResourceProperties):
    ApiKey = attrib(default=None)
    ApplicationId = attrib(default=None)
    Enabled = attrib(default=None)


@attrs(**ATTRSCONFIG)
class GCMChannel(Resource):
    """A Gcm Channel for Pinpoint.

    See Also:
        `AWS Cloud Formation documentation for GCMChannel
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-gcmchannel.html>`_
    """

    RESOURCE_TYPE = "AWS::Pinpoint::GCMChannel"

    Properties: GCMChannelProperties = attrib(
        factory=GCMChannelProperties,
        converter=create_object_converter(GCMChannelProperties),
    )


@attrs(**ATTRSCONFIG)
class SMSChannelProperties(ResourceProperties):
    ApplicationId = attrib(default=None)
    Enabled = attrib(default=None)
    SenderId = attrib(default=None)
    ShortCode = attrib(default=None)


@attrs(**ATTRSCONFIG)
class SMSChannel(Resource):
    """A Sms Channel for Pinpoint.

    See Also:
        `AWS Cloud Formation documentation for SMSChannel
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-smschannel.html>`_
    """

    RESOURCE_TYPE = "AWS::Pinpoint::SMSChannel"

    Properties: SMSChannelProperties = attrib(
        factory=SMSChannelProperties,
        converter=create_object_converter(SMSChannelProperties),
    )


@attrs(**ATTRSCONFIG)
class SegmentProperties(ResourceProperties):
    ApplicationId = attrib(default=None)
    Dimensions = attrib(default=None)
    Name = attrib(default=None)
    SegmentGroups = attrib(default=None)


@attrs(**ATTRSCONFIG)
class Segment(Resource):
    """A Segment for Pinpoint.

    See Also:
        `AWS Cloud Formation documentation for Segment
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-segment.html>`_
    """

    RESOURCE_TYPE = "AWS::Pinpoint::Segment"

    Properties: SegmentProperties = attrib(
        factory=SegmentProperties, converter=create_object_converter(SegmentProperties)
    )


@attrs(**ATTRSCONFIG)
class VoiceChannelProperties(ResourceProperties):
    ApplicationId = attrib(default=None)
    Enabled = attrib(default=None)


@attrs(**ATTRSCONFIG)
class VoiceChannel(Resource):
    """A Voice Channel for Pinpoint.

    See Also:
        `AWS Cloud Formation documentation for VoiceChannel
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-voicechannel.html>`_
    """

    RESOURCE_TYPE = "AWS::Pinpoint::VoiceChannel"

    Properties: VoiceChannelProperties = attrib(
        factory=VoiceChannelProperties,
        converter=create_object_converter(VoiceChannelProperties),
    )
