# Copyright (c) 2012-2022, 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
from .validators import integer


class AccessPolicy(AWSObject):
    """
    `AccessPolicy <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opensearchserverless-accesspolicy.html>`__
    """

    resource_type = "AWS::OpenSearchServerless::AccessPolicy"

    props: PropsDictType = {
        "Description": (str, False),
        "Name": (str, True),
        "Policy": (str, True),
        "Type": (str, True),
    }


class Collection(AWSObject):
    """
    `Collection <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opensearchserverless-collection.html>`__
    """

    resource_type = "AWS::OpenSearchServerless::Collection"

    props: PropsDictType = {
        "Description": (str, False),
        "Name": (str, True),
        "StandbyReplicas": (str, False),
        "Tags": (Tags, False),
        "Type": (str, False),
    }


class LifecyclePolicy(AWSObject):
    """
    `LifecyclePolicy <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opensearchserverless-lifecyclepolicy.html>`__
    """

    resource_type = "AWS::OpenSearchServerless::LifecyclePolicy"

    props: PropsDictType = {
        "Description": (str, False),
        "Name": (str, True),
        "Policy": (str, True),
        "Type": (str, True),
    }


class SamlConfigOptions(AWSProperty):
    """
    `SamlConfigOptions <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opensearchserverless-securityconfig-samlconfigoptions.html>`__
    """

    props: PropsDictType = {
        "GroupAttribute": (str, False),
        "Metadata": (str, True),
        "SessionTimeout": (integer, False),
        "UserAttribute": (str, False),
    }


class SecurityConfig(AWSObject):
    """
    `SecurityConfig <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opensearchserverless-securityconfig.html>`__
    """

    resource_type = "AWS::OpenSearchServerless::SecurityConfig"

    props: PropsDictType = {
        "Description": (str, False),
        "Name": (str, False),
        "SamlOptions": (SamlConfigOptions, False),
        "Type": (str, False),
    }


class SecurityPolicy(AWSObject):
    """
    `SecurityPolicy <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opensearchserverless-securitypolicy.html>`__
    """

    resource_type = "AWS::OpenSearchServerless::SecurityPolicy"

    props: PropsDictType = {
        "Description": (str, False),
        "Name": (str, True),
        "Policy": (str, True),
        "Type": (str, True),
    }


class VpcEndpoint(AWSObject):
    """
    `VpcEndpoint <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opensearchserverless-vpcendpoint.html>`__
    """

    resource_type = "AWS::OpenSearchServerless::VpcEndpoint"

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