# Copyright (c) 2012-2024, 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, Tags


class X12Details(AWSProperty):
    """
    `X12Details <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-x12details.html>`__
    """

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


class EdiType(AWSProperty):
    """
    `EdiType <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-editype.html>`__
    """

    props: PropsDictType = {
        "X12Details": (X12Details, True),
    }


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

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


class EdiConfiguration(AWSProperty):
    """
    `EdiConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-capability-ediconfiguration.html>`__
    """

    props: PropsDictType = {
        "InputLocation": (S3Location, True),
        "OutputLocation": (S3Location, True),
        "TransformerId": (str, True),
        "Type": (EdiType, True),
    }


class CapabilityConfiguration(AWSProperty):
    """
    `CapabilityConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-capability-capabilityconfiguration.html>`__
    """

    props: PropsDictType = {
        "Edi": (EdiConfiguration, True),
    }


class Capability(AWSObject):
    """
    `Capability <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-capability.html>`__
    """

    resource_type = "AWS::B2BI::Capability"

    props: PropsDictType = {
        "Configuration": (CapabilityConfiguration, True),
        "InstructionsDocuments": ([S3Location], False),
        "Name": (str, True),
        "Tags": (Tags, False),
        "Type": (str, True),
    }


class Partnership(AWSObject):
    """
    `Partnership <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-partnership.html>`__
    """

    resource_type = "AWS::B2BI::Partnership"

    props: PropsDictType = {
        "Capabilities": ([str], False),
        "Email": (str, True),
        "Name": (str, True),
        "Phone": (str, False),
        "ProfileId": (str, True),
        "Tags": (Tags, False),
    }


class Profile(AWSObject):
    """
    `Profile <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-profile.html>`__
    """

    resource_type = "AWS::B2BI::Profile"

    props: PropsDictType = {
        "BusinessName": (str, True),
        "Email": (str, False),
        "Logging": (str, True),
        "Name": (str, True),
        "Phone": (str, True),
        "Tags": (Tags, False),
    }


class Transformer(AWSObject):
    """
    `Transformer <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-transformer.html>`__
    """

    resource_type = "AWS::B2BI::Transformer"

    props: PropsDictType = {
        "EdiType": (EdiType, True),
        "FileFormat": (str, True),
        "MappingTemplate": (str, True),
        "Name": (str, True),
        "SampleDocument": (str, False),
        "Status": (str, True),
        "Tags": (Tags, False),
    }
