# Copyright (c) 2012-2025, Mark Peek <mark@peek.org>
# All rights reserved.
#
# See LICENSE file for full license.
#
# *** Do not modify - this file is autogenerated ***


from . import AWSObject, AWSProperty, PropsDictType


class EncryptionConfiguration(AWSProperty):
    """
    `EncryptionConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mwaaserverless-workflow-encryptionconfiguration.html>`__
    """

    props: PropsDictType = {
        "KmsKeyId": (str, False),
        "Type": (str, True),
    }


class LoggingConfiguration(AWSProperty):
    """
    `LoggingConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mwaaserverless-workflow-loggingconfiguration.html>`__
    """

    props: PropsDictType = {
        "LogGroupName": (str, True),
    }


class NetworkConfiguration(AWSProperty):
    """
    `NetworkConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mwaaserverless-workflow-networkconfiguration.html>`__
    """

    props: PropsDictType = {
        "SecurityGroupIds": ([str], False),
        "SubnetIds": ([str], False),
    }


class S3Location(AWSProperty):
    """
    `S3Location <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mwaaserverless-workflow-s3location.html>`__
    """

    props: PropsDictType = {
        "Bucket": (str, True),
        "ObjectKey": (str, True),
        "VersionId": (str, False),
    }


class Workflow(AWSObject):
    """
    `Workflow <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mwaaserverless-workflow.html>`__
    """

    resource_type = "AWS::MWAAServerless::Workflow"

    props: PropsDictType = {
        "DefinitionS3Location": (S3Location, True),
        "Description": (str, False),
        "EncryptionConfiguration": (EncryptionConfiguration, False),
        "LoggingConfiguration": (LoggingConfiguration, False),
        "Name": (str, False),
        "NetworkConfiguration": (NetworkConfiguration, False),
        "RoleArn": (str, True),
        "Tags": (dict, False),
        "TriggerMode": (str, False),
    }


class ScheduleConfiguration(AWSProperty):
    """
    `ScheduleConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mwaaserverless-workflow-scheduleconfiguration.html>`__
    """

    props: PropsDictType = {
        "CronExpression": (str, False),
    }
