// THIS FILE IS AUTOMATICALLY GENERATED by https://github.com/noppoMan/aws-sdk-swift/blob/master/Sources/CodeGenerator/main.swift. DO NOT EDIT.

import Foundation
import AWSSDKSwiftCore

extension MQ {

    public struct AvailabilityZone: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "Name", location: .body(locationName: "name"), required: false, type: .string)
        ]
        /// Id for the availability zone.
        public let name: String?

        public init(name: String? = nil) {
            self.name = name
        }

        private enum CodingKeys: String, CodingKey {
            case name = "name"
        }
    }

    public struct BrokerEngineType: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "EngineType", location: .body(locationName: "engineType"), required: false, type: .enum), 
            AWSShapeMember(label: "EngineVersions", location: .body(locationName: "engineVersions"), required: false, type: .list)
        ]
        /// The type of broker engine.
        public let engineType: EngineType?
        /// The list of engine versions.
        public let engineVersions: [EngineVersion]?

        public init(engineType: EngineType? = nil, engineVersions: [EngineVersion]? = nil) {
            self.engineType = engineType
            self.engineVersions = engineVersions
        }

        private enum CodingKeys: String, CodingKey {
            case engineType = "engineType"
            case engineVersions = "engineVersions"
        }
    }

    public struct BrokerEngineTypeOutput: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "BrokerEngineTypes", location: .body(locationName: "brokerEngineTypes"), required: false, type: .list), 
            AWSShapeMember(label: "MaxResults", location: .body(locationName: "maxResults"), required: false, type: .integer), 
            AWSShapeMember(label: "NextToken", location: .body(locationName: "nextToken"), required: false, type: .string)
        ]
        /// List of available engine types and versions.
        public let brokerEngineTypes: [BrokerEngineType]?
        /// Required. The maximum number of engine types that can be returned per page (20 by default). This value must be an integer from 5 to 100.
        public let maxResults: Int32?
        /// The token that specifies the next page of results Amazon MQ should return. To request the first page, leave nextToken empty.
        public let nextToken: String?

        public init(brokerEngineTypes: [BrokerEngineType]? = nil, maxResults: Int32? = nil, nextToken: String? = nil) {
            self.brokerEngineTypes = brokerEngineTypes
            self.maxResults = maxResults
            self.nextToken = nextToken
        }

        private enum CodingKeys: String, CodingKey {
            case brokerEngineTypes = "brokerEngineTypes"
            case maxResults = "maxResults"
            case nextToken = "nextToken"
        }
    }

    public struct BrokerInstance: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "ConsoleURL", location: .body(locationName: "consoleURL"), required: false, type: .string), 
            AWSShapeMember(label: "Endpoints", location: .body(locationName: "endpoints"), required: false, type: .list), 
            AWSShapeMember(label: "IpAddress", location: .body(locationName: "ipAddress"), required: false, type: .string)
        ]
        /// The URL of the broker's ActiveMQ Web Console.
        public let consoleURL: String?
        /// The broker's wire-level protocol endpoints.
        public let endpoints: [String]?
        /// The IP address of the Elastic Network Interface (ENI) attached to the broker.
        public let ipAddress: String?

        public init(consoleURL: String? = nil, endpoints: [String]? = nil, ipAddress: String? = nil) {
            self.consoleURL = consoleURL
            self.endpoints = endpoints
            self.ipAddress = ipAddress
        }

        private enum CodingKeys: String, CodingKey {
            case consoleURL = "consoleURL"
            case endpoints = "endpoints"
            case ipAddress = "ipAddress"
        }
    }

    public struct BrokerInstanceOption: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "AvailabilityZones", location: .body(locationName: "availabilityZones"), required: false, type: .list), 
            AWSShapeMember(label: "EngineType", location: .body(locationName: "engineType"), required: false, type: .enum), 
            AWSShapeMember(label: "HostInstanceType", location: .body(locationName: "hostInstanceType"), required: false, type: .string), 
            AWSShapeMember(label: "SupportedEngineVersions", location: .body(locationName: "supportedEngineVersions"), required: false, type: .list)
        ]
        /// The list of available az.
        public let availabilityZones: [AvailabilityZone]?
        /// The type of broker engine.
        public let engineType: EngineType?
        /// The type of broker instance.
        public let hostInstanceType: String?
        /// The list of supported engine versions.
        public let supportedEngineVersions: [String]?

        public init(availabilityZones: [AvailabilityZone]? = nil, engineType: EngineType? = nil, hostInstanceType: String? = nil, supportedEngineVersions: [String]? = nil) {
            self.availabilityZones = availabilityZones
            self.engineType = engineType
            self.hostInstanceType = hostInstanceType
            self.supportedEngineVersions = supportedEngineVersions
        }

        private enum CodingKeys: String, CodingKey {
            case availabilityZones = "availabilityZones"
            case engineType = "engineType"
            case hostInstanceType = "hostInstanceType"
            case supportedEngineVersions = "supportedEngineVersions"
        }
    }

    public struct BrokerInstanceOptionsOutput: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "BrokerInstanceOptions", location: .body(locationName: "brokerInstanceOptions"), required: false, type: .list), 
            AWSShapeMember(label: "MaxResults", location: .body(locationName: "maxResults"), required: false, type: .integer), 
            AWSShapeMember(label: "NextToken", location: .body(locationName: "nextToken"), required: false, type: .string)
        ]
        /// List of available broker instance options.
        public let brokerInstanceOptions: [BrokerInstanceOption]?
        /// Required. The maximum number of instance options that can be returned per page (20 by default). This value must be an integer from 5 to 100.
        public let maxResults: Int32?
        /// The token that specifies the next page of results Amazon MQ should return. To request the first page, leave nextToken empty.
        public let nextToken: String?

        public init(brokerInstanceOptions: [BrokerInstanceOption]? = nil, maxResults: Int32? = nil, nextToken: String? = nil) {
            self.brokerInstanceOptions = brokerInstanceOptions
            self.maxResults = maxResults
            self.nextToken = nextToken
        }

        private enum CodingKeys: String, CodingKey {
            case brokerInstanceOptions = "brokerInstanceOptions"
            case maxResults = "maxResults"
            case nextToken = "nextToken"
        }
    }

    public enum BrokerState: String, CustomStringConvertible, Codable {
        case creationInProgress = "CREATION_IN_PROGRESS"
        case creationFailed = "CREATION_FAILED"
        case deletionInProgress = "DELETION_IN_PROGRESS"
        case running = "RUNNING"
        case rebootInProgress = "REBOOT_IN_PROGRESS"
        public var description: String { return self.rawValue }
    }

    public struct BrokerSummary: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "BrokerArn", location: .body(locationName: "brokerArn"), required: false, type: .string), 
            AWSShapeMember(label: "BrokerId", location: .body(locationName: "brokerId"), required: false, type: .string), 
            AWSShapeMember(label: "BrokerName", location: .body(locationName: "brokerName"), required: false, type: .string), 
            AWSShapeMember(label: "BrokerState", location: .body(locationName: "brokerState"), required: false, type: .enum), 
            AWSShapeMember(label: "Created", location: .body(locationName: "created"), required: false, type: .timestamp), 
            AWSShapeMember(label: "DeploymentMode", location: .body(locationName: "deploymentMode"), required: false, type: .enum), 
            AWSShapeMember(label: "HostInstanceType", location: .body(locationName: "hostInstanceType"), required: false, type: .string)
        ]
        /// The Amazon Resource Name (ARN) of the broker.
        public let brokerArn: String?
        /// The unique ID that Amazon MQ generates for the broker.
        public let brokerId: String?
        /// The name of the broker. This value must be unique in your AWS account, 1-50 characters long, must contain only letters, numbers, dashes, and underscores, and must not contain whitespaces, brackets, wildcard characters, or special characters.
        public let brokerName: String?
        /// The status of the broker.
        public let brokerState: BrokerState?
        /// The time when the broker was created.
        public let created: TimeStamp?
        /// Required. The deployment mode of the broker.
        public let deploymentMode: DeploymentMode?
        /// The broker's instance type.
        public let hostInstanceType: String?

        public init(brokerArn: String? = nil, brokerId: String? = nil, brokerName: String? = nil, brokerState: BrokerState? = nil, created: TimeStamp? = nil, deploymentMode: DeploymentMode? = nil, hostInstanceType: String? = nil) {
            self.brokerArn = brokerArn
            self.brokerId = brokerId
            self.brokerName = brokerName
            self.brokerState = brokerState
            self.created = created
            self.deploymentMode = deploymentMode
            self.hostInstanceType = hostInstanceType
        }

        private enum CodingKeys: String, CodingKey {
            case brokerArn = "brokerArn"
            case brokerId = "brokerId"
            case brokerName = "brokerName"
            case brokerState = "brokerState"
            case created = "created"
            case deploymentMode = "deploymentMode"
            case hostInstanceType = "hostInstanceType"
        }
    }

    public enum ChangeType: String, CustomStringConvertible, Codable {
        case create = "CREATE"
        case update = "UPDATE"
        case delete = "DELETE"
        public var description: String { return self.rawValue }
    }

    public struct Configuration: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "Arn", location: .body(locationName: "arn"), required: false, type: .string), 
            AWSShapeMember(label: "Created", location: .body(locationName: "created"), required: false, type: .timestamp), 
            AWSShapeMember(label: "Description", location: .body(locationName: "description"), required: false, type: .string), 
            AWSShapeMember(label: "EngineType", location: .body(locationName: "engineType"), required: false, type: .enum), 
            AWSShapeMember(label: "EngineVersion", location: .body(locationName: "engineVersion"), required: false, type: .string), 
            AWSShapeMember(label: "Id", location: .body(locationName: "id"), required: false, type: .string), 
            AWSShapeMember(label: "LatestRevision", location: .body(locationName: "latestRevision"), required: false, type: .structure), 
            AWSShapeMember(label: "Name", location: .body(locationName: "name"), required: false, type: .string), 
            AWSShapeMember(label: "Tags", location: .body(locationName: "tags"), required: false, type: .map)
        ]
        /// Required. The ARN of the configuration.
        public let arn: String?
        /// Required. The date and time of the configuration revision.
        public let created: TimeStamp?
        /// Required. The description of the configuration.
        public let description: String?
        /// Required. The type of broker engine. Note: Currently, Amazon MQ supports only ACTIVEMQ.
        public let engineType: EngineType?
        /// Required. The version of the broker engine. For a list of supported engine versions, see https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/broker-engine.html
        public let engineVersion: String?
        /// Required. The unique ID that Amazon MQ generates for the configuration.
        public let id: String?
        /// Required. The latest revision of the configuration.
        public let latestRevision: ConfigurationRevision?
        /// Required. The name of the configuration. This value can contain only alphanumeric characters, dashes, periods, underscores, and tildes (- . _ ~). This value must be 1-150 characters long.
        public let name: String?
        /// The list of all tags associated with this configuration.
        public let tags: [String: String]?

        public init(arn: String? = nil, created: TimeStamp? = nil, description: String? = nil, engineType: EngineType? = nil, engineVersion: String? = nil, id: String? = nil, latestRevision: ConfigurationRevision? = nil, name: String? = nil, tags: [String: String]? = nil) {
            self.arn = arn
            self.created = created
            self.description = description
            self.engineType = engineType
            self.engineVersion = engineVersion
            self.id = id
            self.latestRevision = latestRevision
            self.name = name
            self.tags = tags
        }

        private enum CodingKeys: String, CodingKey {
            case arn = "arn"
            case created = "created"
            case description = "description"
            case engineType = "engineType"
            case engineVersion = "engineVersion"
            case id = "id"
            case latestRevision = "latestRevision"
            case name = "name"
            case tags = "tags"
        }
    }

    public struct ConfigurationId: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "Id", location: .body(locationName: "id"), required: false, type: .string), 
            AWSShapeMember(label: "Revision", location: .body(locationName: "revision"), required: false, type: .integer)
        ]
        /// Required. The unique ID that Amazon MQ generates for the configuration.
        public let id: String?
        /// The revision number of the configuration.
        public let revision: Int32?

        public init(id: String? = nil, revision: Int32? = nil) {
            self.id = id
            self.revision = revision
        }

        private enum CodingKeys: String, CodingKey {
            case id = "id"
            case revision = "revision"
        }
    }

    public struct ConfigurationRevision: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "Created", location: .body(locationName: "created"), required: false, type: .timestamp), 
            AWSShapeMember(label: "Description", location: .body(locationName: "description"), required: false, type: .string), 
            AWSShapeMember(label: "Revision", location: .body(locationName: "revision"), required: false, type: .integer)
        ]
        /// Required. The date and time of the configuration revision.
        public let created: TimeStamp?
        /// The description of the configuration revision.
        public let description: String?
        /// Required. The revision number of the configuration.
        public let revision: Int32?

        public init(created: TimeStamp? = nil, description: String? = nil, revision: Int32? = nil) {
            self.created = created
            self.description = description
            self.revision = revision
        }

        private enum CodingKeys: String, CodingKey {
            case created = "created"
            case description = "description"
            case revision = "revision"
        }
    }

    public struct Configurations: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "Current", location: .body(locationName: "current"), required: false, type: .structure), 
            AWSShapeMember(label: "History", location: .body(locationName: "history"), required: false, type: .list), 
            AWSShapeMember(label: "Pending", location: .body(locationName: "pending"), required: false, type: .structure)
        ]
        /// The current configuration of the broker.
        public let current: ConfigurationId?
        /// The history of configurations applied to the broker.
        public let history: [ConfigurationId]?
        /// The pending configuration of the broker.
        public let pending: ConfigurationId?

        public init(current: ConfigurationId? = nil, history: [ConfigurationId]? = nil, pending: ConfigurationId? = nil) {
            self.current = current
            self.history = history
            self.pending = pending
        }

        private enum CodingKeys: String, CodingKey {
            case current = "current"
            case history = "history"
            case pending = "pending"
        }
    }

    public struct CreateBrokerInput: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "AutoMinorVersionUpgrade", location: .body(locationName: "autoMinorVersionUpgrade"), required: false, type: .boolean), 
            AWSShapeMember(label: "BrokerName", location: .body(locationName: "brokerName"), required: false, type: .string), 
            AWSShapeMember(label: "Configuration", location: .body(locationName: "configuration"), required: false, type: .structure), 
            AWSShapeMember(label: "CreatorRequestId", location: .body(locationName: "creatorRequestId"), required: false, type: .string), 
            AWSShapeMember(label: "DeploymentMode", location: .body(locationName: "deploymentMode"), required: false, type: .enum), 
            AWSShapeMember(label: "EngineType", location: .body(locationName: "engineType"), required: false, type: .enum), 
            AWSShapeMember(label: "EngineVersion", location: .body(locationName: "engineVersion"), required: false, type: .string), 
            AWSShapeMember(label: "HostInstanceType", location: .body(locationName: "hostInstanceType"), required: false, type: .string), 
            AWSShapeMember(label: "Logs", location: .body(locationName: "logs"), required: false, type: .structure), 
            AWSShapeMember(label: "MaintenanceWindowStartTime", location: .body(locationName: "maintenanceWindowStartTime"), required: false, type: .structure), 
            AWSShapeMember(label: "PubliclyAccessible", location: .body(locationName: "publiclyAccessible"), required: false, type: .boolean), 
            AWSShapeMember(label: "SecurityGroups", location: .body(locationName: "securityGroups"), required: false, type: .list), 
            AWSShapeMember(label: "SubnetIds", location: .body(locationName: "subnetIds"), required: false, type: .list), 
            AWSShapeMember(label: "Tags", location: .body(locationName: "tags"), required: false, type: .map), 
            AWSShapeMember(label: "Users", location: .body(locationName: "users"), required: false, type: .list)
        ]
        /// Required. Enables automatic upgrades to new minor versions for brokers, as Apache releases the versions. The automatic upgrades occur during the maintenance window of the broker or after a manual broker reboot.
        public let autoMinorVersionUpgrade: Bool?
        /// Required. The name of the broker. This value must be unique in your AWS account, 1-50 characters long, must contain only letters, numbers, dashes, and underscores, and must not contain whitespaces, brackets, wildcard characters, or special characters.
        public let brokerName: String?
        /// A list of information about the configuration.
        public let configuration: ConfigurationId?
        /// The unique ID that the requester receives for the created broker. Amazon MQ passes your ID with the API action. Note: We recommend using a Universally Unique Identifier (UUID) for the creatorRequestId. You may omit the creatorRequestId if your application doesn't require idempotency.
        public let creatorRequestId: String?
        /// Required. The deployment mode of the broker.
        public let deploymentMode: DeploymentMode?
        /// Required. The type of broker engine. Note: Currently, Amazon MQ supports only ACTIVEMQ.
        public let engineType: EngineType?
        /// Required. The version of the broker engine. For a list of supported engine versions, see https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/broker-engine.html
        public let engineVersion: String?
        /// Required. The broker's instance type.
        public let hostInstanceType: String?
        /// Enables Amazon CloudWatch logging for brokers.
        public let logs: Logs?
        /// The parameters that determine the WeeklyStartTime.
        public let maintenanceWindowStartTime: WeeklyStartTime?
        /// Required. Enables connections from applications outside of the VPC that hosts the broker's subnets.
        public let publiclyAccessible: Bool?
        /// The list of rules (1 minimum, 125 maximum) that authorize connections to brokers.
        public let securityGroups: [String]?
        /// The list of groups (2 maximum) that define which subnets and IP ranges the broker can use from different Availability Zones. A SINGLE_INSTANCE deployment requires one subnet (for example, the default subnet). An ACTIVE_STANDBY_MULTI_AZ deployment requires two subnets.
        public let subnetIds: [String]?
        /// Create tags when creating the broker.
        public let tags: [String: String]?
        /// Required. The list of ActiveMQ users (persons or applications) who can access queues and topics. This value can contain only alphanumeric characters, dashes, periods, underscores, and tildes (- . _ ~). This value must be 2-100 characters long.
        public let users: [User]?

        public init(autoMinorVersionUpgrade: Bool? = nil, brokerName: String? = nil, configuration: ConfigurationId? = nil, creatorRequestId: String? = nil, deploymentMode: DeploymentMode? = nil, engineType: EngineType? = nil, engineVersion: String? = nil, hostInstanceType: String? = nil, logs: Logs? = nil, maintenanceWindowStartTime: WeeklyStartTime? = nil, publiclyAccessible: Bool? = nil, securityGroups: [String]? = nil, subnetIds: [String]? = nil, tags: [String: String]? = nil, users: [User]? = nil) {
            self.autoMinorVersionUpgrade = autoMinorVersionUpgrade
            self.brokerName = brokerName
            self.configuration = configuration
            self.creatorRequestId = creatorRequestId
            self.deploymentMode = deploymentMode
            self.engineType = engineType
            self.engineVersion = engineVersion
            self.hostInstanceType = hostInstanceType
            self.logs = logs
            self.maintenanceWindowStartTime = maintenanceWindowStartTime
            self.publiclyAccessible = publiclyAccessible
            self.securityGroups = securityGroups
            self.subnetIds = subnetIds
            self.tags = tags
            self.users = users
        }

        private enum CodingKeys: String, CodingKey {
            case autoMinorVersionUpgrade = "autoMinorVersionUpgrade"
            case brokerName = "brokerName"
            case configuration = "configuration"
            case creatorRequestId = "creatorRequestId"
            case deploymentMode = "deploymentMode"
            case engineType = "engineType"
            case engineVersion = "engineVersion"
            case hostInstanceType = "hostInstanceType"
            case logs = "logs"
            case maintenanceWindowStartTime = "maintenanceWindowStartTime"
            case publiclyAccessible = "publiclyAccessible"
            case securityGroups = "securityGroups"
            case subnetIds = "subnetIds"
            case tags = "tags"
            case users = "users"
        }
    }

    public struct CreateBrokerOutput: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "BrokerArn", location: .body(locationName: "brokerArn"), required: false, type: .string), 
            AWSShapeMember(label: "BrokerId", location: .body(locationName: "brokerId"), required: false, type: .string)
        ]
        /// The Amazon Resource Name (ARN) of the broker.
        public let brokerArn: String?
        /// The unique ID that Amazon MQ generates for the broker.
        public let brokerId: String?

        public init(brokerArn: String? = nil, brokerId: String? = nil) {
            self.brokerArn = brokerArn
            self.brokerId = brokerId
        }

        private enum CodingKeys: String, CodingKey {
            case brokerArn = "brokerArn"
            case brokerId = "brokerId"
        }
    }

    public struct CreateBrokerRequest: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "AutoMinorVersionUpgrade", location: .body(locationName: "autoMinorVersionUpgrade"), required: false, type: .boolean), 
            AWSShapeMember(label: "BrokerName", location: .body(locationName: "brokerName"), required: false, type: .string), 
            AWSShapeMember(label: "Configuration", location: .body(locationName: "configuration"), required: false, type: .structure), 
            AWSShapeMember(label: "CreatorRequestId", location: .body(locationName: "creatorRequestId"), required: false, type: .string), 
            AWSShapeMember(label: "DeploymentMode", location: .body(locationName: "deploymentMode"), required: false, type: .enum), 
            AWSShapeMember(label: "EngineType", location: .body(locationName: "engineType"), required: false, type: .enum), 
            AWSShapeMember(label: "EngineVersion", location: .body(locationName: "engineVersion"), required: false, type: .string), 
            AWSShapeMember(label: "HostInstanceType", location: .body(locationName: "hostInstanceType"), required: false, type: .string), 
            AWSShapeMember(label: "Logs", location: .body(locationName: "logs"), required: false, type: .structure), 
            AWSShapeMember(label: "MaintenanceWindowStartTime", location: .body(locationName: "maintenanceWindowStartTime"), required: false, type: .structure), 
            AWSShapeMember(label: "PubliclyAccessible", location: .body(locationName: "publiclyAccessible"), required: false, type: .boolean), 
            AWSShapeMember(label: "SecurityGroups", location: .body(locationName: "securityGroups"), required: false, type: .list), 
            AWSShapeMember(label: "SubnetIds", location: .body(locationName: "subnetIds"), required: false, type: .list), 
            AWSShapeMember(label: "Tags", location: .body(locationName: "tags"), required: false, type: .map), 
            AWSShapeMember(label: "Users", location: .body(locationName: "users"), required: false, type: .list)
        ]
        public let autoMinorVersionUpgrade: Bool?
        public let brokerName: String?
        public let configuration: ConfigurationId?
        public let creatorRequestId: String?
        public let deploymentMode: DeploymentMode?
        public let engineType: EngineType?
        public let engineVersion: String?
        public let hostInstanceType: String?
        public let logs: Logs?
        public let maintenanceWindowStartTime: WeeklyStartTime?
        public let publiclyAccessible: Bool?
        public let securityGroups: [String]?
        public let subnetIds: [String]?
        public let tags: [String: String]?
        public let users: [User]?

        public init(autoMinorVersionUpgrade: Bool? = nil, brokerName: String? = nil, configuration: ConfigurationId? = nil, creatorRequestId: String? = nil, deploymentMode: DeploymentMode? = nil, engineType: EngineType? = nil, engineVersion: String? = nil, hostInstanceType: String? = nil, logs: Logs? = nil, maintenanceWindowStartTime: WeeklyStartTime? = nil, publiclyAccessible: Bool? = nil, securityGroups: [String]? = nil, subnetIds: [String]? = nil, tags: [String: String]? = nil, users: [User]? = nil) {
            self.autoMinorVersionUpgrade = autoMinorVersionUpgrade
            self.brokerName = brokerName
            self.configuration = configuration
            self.creatorRequestId = creatorRequestId
            self.deploymentMode = deploymentMode
            self.engineType = engineType
            self.engineVersion = engineVersion
            self.hostInstanceType = hostInstanceType
            self.logs = logs
            self.maintenanceWindowStartTime = maintenanceWindowStartTime
            self.publiclyAccessible = publiclyAccessible
            self.securityGroups = securityGroups
            self.subnetIds = subnetIds
            self.tags = tags
            self.users = users
        }

        private enum CodingKeys: String, CodingKey {
            case autoMinorVersionUpgrade = "autoMinorVersionUpgrade"
            case brokerName = "brokerName"
            case configuration = "configuration"
            case creatorRequestId = "creatorRequestId"
            case deploymentMode = "deploymentMode"
            case engineType = "engineType"
            case engineVersion = "engineVersion"
            case hostInstanceType = "hostInstanceType"
            case logs = "logs"
            case maintenanceWindowStartTime = "maintenanceWindowStartTime"
            case publiclyAccessible = "publiclyAccessible"
            case securityGroups = "securityGroups"
            case subnetIds = "subnetIds"
            case tags = "tags"
            case users = "users"
        }
    }

    public struct CreateBrokerResponse: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "BrokerArn", location: .body(locationName: "brokerArn"), required: false, type: .string), 
            AWSShapeMember(label: "BrokerId", location: .body(locationName: "brokerId"), required: false, type: .string)
        ]
        public let brokerArn: String?
        public let brokerId: String?

        public init(brokerArn: String? = nil, brokerId: String? = nil) {
            self.brokerArn = brokerArn
            self.brokerId = brokerId
        }

        private enum CodingKeys: String, CodingKey {
            case brokerArn = "brokerArn"
            case brokerId = "brokerId"
        }
    }

    public struct CreateConfigurationInput: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "EngineType", location: .body(locationName: "engineType"), required: false, type: .enum), 
            AWSShapeMember(label: "EngineVersion", location: .body(locationName: "engineVersion"), required: false, type: .string), 
            AWSShapeMember(label: "Name", location: .body(locationName: "name"), required: false, type: .string), 
            AWSShapeMember(label: "Tags", location: .body(locationName: "tags"), required: false, type: .map)
        ]
        /// Required. The type of broker engine. Note: Currently, Amazon MQ supports only ACTIVEMQ.
        public let engineType: EngineType?
        /// Required. The version of the broker engine. For a list of supported engine versions, see https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/broker-engine.html
        public let engineVersion: String?
        /// Required. The name of the configuration. This value can contain only alphanumeric characters, dashes, periods, underscores, and tildes (- . _ ~). This value must be 1-150 characters long.
        public let name: String?
        /// Create tags when creating the configuration.
        public let tags: [String: String]?

        public init(engineType: EngineType? = nil, engineVersion: String? = nil, name: String? = nil, tags: [String: String]? = nil) {
            self.engineType = engineType
            self.engineVersion = engineVersion
            self.name = name
            self.tags = tags
        }

        private enum CodingKeys: String, CodingKey {
            case engineType = "engineType"
            case engineVersion = "engineVersion"
            case name = "name"
            case tags = "tags"
        }
    }

    public struct CreateConfigurationOutput: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "Arn", location: .body(locationName: "arn"), required: false, type: .string), 
            AWSShapeMember(label: "Created", location: .body(locationName: "created"), required: false, type: .timestamp), 
            AWSShapeMember(label: "Id", location: .body(locationName: "id"), required: false, type: .string), 
            AWSShapeMember(label: "LatestRevision", location: .body(locationName: "latestRevision"), required: false, type: .structure), 
            AWSShapeMember(label: "Name", location: .body(locationName: "name"), required: false, type: .string)
        ]
        /// Required. The Amazon Resource Name (ARN) of the configuration.
        public let arn: String?
        /// Required. The date and time of the configuration.
        public let created: TimeStamp?
        /// Required. The unique ID that Amazon MQ generates for the configuration.
        public let id: String?
        /// The latest revision of the configuration.
        public let latestRevision: ConfigurationRevision?
        /// Required. The name of the configuration. This value can contain only alphanumeric characters, dashes, periods, underscores, and tildes (- . _ ~). This value must be 1-150 characters long.
        public let name: String?

        public init(arn: String? = nil, created: TimeStamp? = nil, id: String? = nil, latestRevision: ConfigurationRevision? = nil, name: String? = nil) {
            self.arn = arn
            self.created = created
            self.id = id
            self.latestRevision = latestRevision
            self.name = name
        }

        private enum CodingKeys: String, CodingKey {
            case arn = "arn"
            case created = "created"
            case id = "id"
            case latestRevision = "latestRevision"
            case name = "name"
        }
    }

    public struct CreateConfigurationRequest: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "EngineType", location: .body(locationName: "engineType"), required: false, type: .enum), 
            AWSShapeMember(label: "EngineVersion", location: .body(locationName: "engineVersion"), required: false, type: .string), 
            AWSShapeMember(label: "Name", location: .body(locationName: "name"), required: false, type: .string), 
            AWSShapeMember(label: "Tags", location: .body(locationName: "tags"), required: false, type: .map)
        ]
        public let engineType: EngineType?
        public let engineVersion: String?
        public let name: String?
        public let tags: [String: String]?

        public init(engineType: EngineType? = nil, engineVersion: String? = nil, name: String? = nil, tags: [String: String]? = nil) {
            self.engineType = engineType
            self.engineVersion = engineVersion
            self.name = name
            self.tags = tags
        }

        private enum CodingKeys: String, CodingKey {
            case engineType = "engineType"
            case engineVersion = "engineVersion"
            case name = "name"
            case tags = "tags"
        }
    }

    public struct CreateConfigurationResponse: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "Arn", location: .body(locationName: "arn"), required: false, type: .string), 
            AWSShapeMember(label: "Created", location: .body(locationName: "created"), required: false, type: .timestamp), 
            AWSShapeMember(label: "Id", location: .body(locationName: "id"), required: false, type: .string), 
            AWSShapeMember(label: "LatestRevision", location: .body(locationName: "latestRevision"), required: false, type: .structure), 
            AWSShapeMember(label: "Name", location: .body(locationName: "name"), required: false, type: .string)
        ]
        public let arn: String?
        public let created: TimeStamp?
        public let id: String?
        public let latestRevision: ConfigurationRevision?
        public let name: String?

        public init(arn: String? = nil, created: TimeStamp? = nil, id: String? = nil, latestRevision: ConfigurationRevision? = nil, name: String? = nil) {
            self.arn = arn
            self.created = created
            self.id = id
            self.latestRevision = latestRevision
            self.name = name
        }

        private enum CodingKeys: String, CodingKey {
            case arn = "arn"
            case created = "created"
            case id = "id"
            case latestRevision = "latestRevision"
            case name = "name"
        }
    }

    public struct CreateTagsRequest: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "ResourceArn", location: .uri(locationName: "resource-arn"), required: true, type: .string), 
            AWSShapeMember(label: "Tags", location: .body(locationName: "tags"), required: false, type: .map)
        ]
        public let resourceArn: String
        public let tags: [String: String]?

        public init(resourceArn: String, tags: [String: String]? = nil) {
            self.resourceArn = resourceArn
            self.tags = tags
        }

        private enum CodingKeys: String, CodingKey {
            case resourceArn = "resource-arn"
            case tags = "tags"
        }
    }

    public struct CreateUserInput: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "ConsoleAccess", location: .body(locationName: "consoleAccess"), required: false, type: .boolean), 
            AWSShapeMember(label: "Groups", location: .body(locationName: "groups"), required: false, type: .list), 
            AWSShapeMember(label: "Password", location: .body(locationName: "password"), required: false, type: .string)
        ]
        /// Enables access to the the ActiveMQ Web Console for the ActiveMQ user.
        public let consoleAccess: Bool?
        /// The list of groups (20 maximum) to which the ActiveMQ user belongs. This value can contain only alphanumeric characters, dashes, periods, underscores, and tildes (- . _ ~). This value must be 2-100 characters long.
        public let groups: [String]?
        /// Required. The password of the user. This value must be at least 12 characters long, must contain at least 4 unique characters, and must not contain commas.
        public let password: String?

        public init(consoleAccess: Bool? = nil, groups: [String]? = nil, password: String? = nil) {
            self.consoleAccess = consoleAccess
            self.groups = groups
            self.password = password
        }

        private enum CodingKeys: String, CodingKey {
            case consoleAccess = "consoleAccess"
            case groups = "groups"
            case password = "password"
        }
    }

    public struct CreateUserRequest: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "BrokerId", location: .uri(locationName: "broker-id"), required: true, type: .string), 
            AWSShapeMember(label: "ConsoleAccess", location: .body(locationName: "consoleAccess"), required: false, type: .boolean), 
            AWSShapeMember(label: "Groups", location: .body(locationName: "groups"), required: false, type: .list), 
            AWSShapeMember(label: "Password", location: .body(locationName: "password"), required: false, type: .string), 
            AWSShapeMember(label: "Username", location: .uri(locationName: "username"), required: true, type: .string)
        ]
        public let brokerId: String
        public let consoleAccess: Bool?
        public let groups: [String]?
        public let password: String?
        public let username: String

        public init(brokerId: String, consoleAccess: Bool? = nil, groups: [String]? = nil, password: String? = nil, username: String) {
            self.brokerId = brokerId
            self.consoleAccess = consoleAccess
            self.groups = groups
            self.password = password
            self.username = username
        }

        private enum CodingKeys: String, CodingKey {
            case brokerId = "broker-id"
            case consoleAccess = "consoleAccess"
            case groups = "groups"
            case password = "password"
            case username = "username"
        }
    }

    public struct CreateUserResponse: AWSShape {

        public init() {
        }

    }

    public enum DayOfWeek: String, CustomStringConvertible, Codable {
        case monday = "MONDAY"
        case tuesday = "TUESDAY"
        case wednesday = "WEDNESDAY"
        case thursday = "THURSDAY"
        case friday = "FRIDAY"
        case saturday = "SATURDAY"
        case sunday = "SUNDAY"
        public var description: String { return self.rawValue }
    }

    public struct DeleteBrokerOutput: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "BrokerId", location: .body(locationName: "brokerId"), required: false, type: .string)
        ]
        /// The unique ID that Amazon MQ generates for the broker.
        public let brokerId: String?

        public init(brokerId: String? = nil) {
            self.brokerId = brokerId
        }

        private enum CodingKeys: String, CodingKey {
            case brokerId = "brokerId"
        }
    }

    public struct DeleteBrokerRequest: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "BrokerId", location: .uri(locationName: "broker-id"), required: true, type: .string)
        ]
        public let brokerId: String

        public init(brokerId: String) {
            self.brokerId = brokerId
        }

        private enum CodingKeys: String, CodingKey {
            case brokerId = "broker-id"
        }
    }

    public struct DeleteBrokerResponse: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "BrokerId", location: .body(locationName: "brokerId"), required: false, type: .string)
        ]
        public let brokerId: String?

        public init(brokerId: String? = nil) {
            self.brokerId = brokerId
        }

        private enum CodingKeys: String, CodingKey {
            case brokerId = "brokerId"
        }
    }

    public struct DeleteTagsRequest: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "ResourceArn", location: .uri(locationName: "resource-arn"), required: true, type: .string), 
            AWSShapeMember(label: "TagKeys", location: .querystring(locationName: "tagKeys"), required: true, type: .list)
        ]
        public let resourceArn: String
        public let tagKeys: [String]

        public init(resourceArn: String, tagKeys: [String]) {
            self.resourceArn = resourceArn
            self.tagKeys = tagKeys
        }

        private enum CodingKeys: String, CodingKey {
            case resourceArn = "resource-arn"
            case tagKeys = "tagKeys"
        }
    }

    public struct DeleteUserRequest: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "BrokerId", location: .uri(locationName: "broker-id"), required: true, type: .string), 
            AWSShapeMember(label: "Username", location: .uri(locationName: "username"), required: true, type: .string)
        ]
        public let brokerId: String
        public let username: String

        public init(brokerId: String, username: String) {
            self.brokerId = brokerId
            self.username = username
        }

        private enum CodingKeys: String, CodingKey {
            case brokerId = "broker-id"
            case username = "username"
        }
    }

    public struct DeleteUserResponse: AWSShape {

        public init() {
        }

    }

    public enum DeploymentMode: String, CustomStringConvertible, Codable {
        case singleInstance = "SINGLE_INSTANCE"
        case activeStandbyMultiAz = "ACTIVE_STANDBY_MULTI_AZ"
        public var description: String { return self.rawValue }
    }

    public struct DescribeBrokerEngineTypesRequest: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "EngineType", location: .querystring(locationName: "engineType"), required: false, type: .string), 
            AWSShapeMember(label: "MaxResults", location: .querystring(locationName: "maxResults"), required: false, type: .integer), 
            AWSShapeMember(label: "NextToken", location: .querystring(locationName: "nextToken"), required: false, type: .string)
        ]
        public let engineType: String?
        public let maxResults: Int32?
        public let nextToken: String?

        public init(engineType: String? = nil, maxResults: Int32? = nil, nextToken: String? = nil) {
            self.engineType = engineType
            self.maxResults = maxResults
            self.nextToken = nextToken
        }

        private enum CodingKeys: String, CodingKey {
            case engineType = "engineType"
            case maxResults = "maxResults"
            case nextToken = "nextToken"
        }
    }

    public struct DescribeBrokerEngineTypesResponse: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "BrokerEngineTypes", location: .body(locationName: "brokerEngineTypes"), required: false, type: .list), 
            AWSShapeMember(label: "MaxResults", location: .body(locationName: "maxResults"), required: false, type: .integer), 
            AWSShapeMember(label: "NextToken", location: .body(locationName: "nextToken"), required: false, type: .string)
        ]
        public let brokerEngineTypes: [BrokerEngineType]?
        public let maxResults: Int32?
        public let nextToken: String?

        public init(brokerEngineTypes: [BrokerEngineType]? = nil, maxResults: Int32? = nil, nextToken: String? = nil) {
            self.brokerEngineTypes = brokerEngineTypes
            self.maxResults = maxResults
            self.nextToken = nextToken
        }

        private enum CodingKeys: String, CodingKey {
            case brokerEngineTypes = "brokerEngineTypes"
            case maxResults = "maxResults"
            case nextToken = "nextToken"
        }
    }

    public struct DescribeBrokerInstanceOptionsRequest: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "EngineType", location: .querystring(locationName: "engineType"), required: false, type: .string), 
            AWSShapeMember(label: "HostInstanceType", location: .querystring(locationName: "hostInstanceType"), required: false, type: .string), 
            AWSShapeMember(label: "MaxResults", location: .querystring(locationName: "maxResults"), required: false, type: .integer), 
            AWSShapeMember(label: "NextToken", location: .querystring(locationName: "nextToken"), required: false, type: .string)
        ]
        public let engineType: String?
        public let hostInstanceType: String?
        public let maxResults: Int32?
        public let nextToken: String?

        public init(engineType: String? = nil, hostInstanceType: String? = nil, maxResults: Int32? = nil, nextToken: String? = nil) {
            self.engineType = engineType
            self.hostInstanceType = hostInstanceType
            self.maxResults = maxResults
            self.nextToken = nextToken
        }

        private enum CodingKeys: String, CodingKey {
            case engineType = "engineType"
            case hostInstanceType = "hostInstanceType"
            case maxResults = "maxResults"
            case nextToken = "nextToken"
        }
    }

    public struct DescribeBrokerInstanceOptionsResponse: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "BrokerInstanceOptions", location: .body(locationName: "brokerInstanceOptions"), required: false, type: .list), 
            AWSShapeMember(label: "MaxResults", location: .body(locationName: "maxResults"), required: false, type: .integer), 
            AWSShapeMember(label: "NextToken", location: .body(locationName: "nextToken"), required: false, type: .string)
        ]
        public let brokerInstanceOptions: [BrokerInstanceOption]?
        public let maxResults: Int32?
        public let nextToken: String?

        public init(brokerInstanceOptions: [BrokerInstanceOption]? = nil, maxResults: Int32? = nil, nextToken: String? = nil) {
            self.brokerInstanceOptions = brokerInstanceOptions
            self.maxResults = maxResults
            self.nextToken = nextToken
        }

        private enum CodingKeys: String, CodingKey {
            case brokerInstanceOptions = "brokerInstanceOptions"
            case maxResults = "maxResults"
            case nextToken = "nextToken"
        }
    }

    public struct DescribeBrokerOutput: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "AutoMinorVersionUpgrade", location: .body(locationName: "autoMinorVersionUpgrade"), required: false, type: .boolean), 
            AWSShapeMember(label: "BrokerArn", location: .body(locationName: "brokerArn"), required: false, type: .string), 
            AWSShapeMember(label: "BrokerId", location: .body(locationName: "brokerId"), required: false, type: .string), 
            AWSShapeMember(label: "BrokerInstances", location: .body(locationName: "brokerInstances"), required: false, type: .list), 
            AWSShapeMember(label: "BrokerName", location: .body(locationName: "brokerName"), required: false, type: .string), 
            AWSShapeMember(label: "BrokerState", location: .body(locationName: "brokerState"), required: false, type: .enum), 
            AWSShapeMember(label: "Configurations", location: .body(locationName: "configurations"), required: false, type: .structure), 
            AWSShapeMember(label: "Created", location: .body(locationName: "created"), required: false, type: .timestamp), 
            AWSShapeMember(label: "DeploymentMode", location: .body(locationName: "deploymentMode"), required: false, type: .enum), 
            AWSShapeMember(label: "EngineType", location: .body(locationName: "engineType"), required: false, type: .enum), 
            AWSShapeMember(label: "EngineVersion", location: .body(locationName: "engineVersion"), required: false, type: .string), 
            AWSShapeMember(label: "HostInstanceType", location: .body(locationName: "hostInstanceType"), required: false, type: .string), 
            AWSShapeMember(label: "Logs", location: .body(locationName: "logs"), required: false, type: .structure), 
            AWSShapeMember(label: "MaintenanceWindowStartTime", location: .body(locationName: "maintenanceWindowStartTime"), required: false, type: .structure), 
            AWSShapeMember(label: "PendingEngineVersion", location: .body(locationName: "pendingEngineVersion"), required: false, type: .string), 
            AWSShapeMember(label: "PubliclyAccessible", location: .body(locationName: "publiclyAccessible"), required: false, type: .boolean), 
            AWSShapeMember(label: "SecurityGroups", location: .body(locationName: "securityGroups"), required: false, type: .list), 
            AWSShapeMember(label: "SubnetIds", location: .body(locationName: "subnetIds"), required: false, type: .list), 
            AWSShapeMember(label: "Tags", location: .body(locationName: "tags"), required: false, type: .map), 
            AWSShapeMember(label: "Users", location: .body(locationName: "users"), required: false, type: .list)
        ]
        /// Required. Enables automatic upgrades to new minor versions for brokers, as Apache releases the versions. The automatic upgrades occur during the maintenance window of the broker or after a manual broker reboot.
        public let autoMinorVersionUpgrade: Bool?
        /// The Amazon Resource Name (ARN) of the broker.
        public let brokerArn: String?
        /// The unique ID that Amazon MQ generates for the broker.
        public let brokerId: String?
        /// A list of information about allocated brokers.
        public let brokerInstances: [BrokerInstance]?
        /// The name of the broker. This value must be unique in your AWS account, 1-50 characters long, must contain only letters, numbers, dashes, and underscores, and must not contain whitespaces, brackets, wildcard characters, or special characters.
        public let brokerName: String?
        /// The status of the broker.
        public let brokerState: BrokerState?
        /// The list of all revisions for the specified configuration.
        public let configurations: Configurations?
        /// The time when the broker was created.
        public let created: TimeStamp?
        /// Required. The deployment mode of the broker.
        public let deploymentMode: DeploymentMode?
        /// Required. The type of broker engine. Note: Currently, Amazon MQ supports only ACTIVEMQ.
        public let engineType: EngineType?
        /// The version of the broker engine. For a list of supported engine versions, see https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/broker-engine.html
        public let engineVersion: String?
        /// The broker's instance type.
        public let hostInstanceType: String?
        /// The list of information about logs currently enabled and pending to be deployed for the specified broker.
        public let logs: LogsSummary?
        /// The parameters that determine the WeeklyStartTime.
        public let maintenanceWindowStartTime: WeeklyStartTime?
        /// The version of the broker engine to upgrade to. For a list of supported engine versions, see https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/broker-engine.html
        public let pendingEngineVersion: String?
        /// Required. Enables connections from applications outside of the VPC that hosts the broker's subnets.
        public let publiclyAccessible: Bool?
        /// Required. The list of rules (1 minimum, 125 maximum) that authorize connections to brokers.
        public let securityGroups: [String]?
        /// The list of groups (2 maximum) that define which subnets and IP ranges the broker can use from different Availability Zones. A SINGLE_INSTANCE deployment requires one subnet (for example, the default subnet). An ACTIVE_STANDBY_MULTI_AZ deployment requires two subnets.
        public let subnetIds: [String]?
        /// The list of all tags associated with this broker.
        public let tags: [String: String]?
        /// The list of all ActiveMQ usernames for the specified broker.
        public let users: [UserSummary]?

        public init(autoMinorVersionUpgrade: Bool? = nil, brokerArn: String? = nil, brokerId: String? = nil, brokerInstances: [BrokerInstance]? = nil, brokerName: String? = nil, brokerState: BrokerState? = nil, configurations: Configurations? = nil, created: TimeStamp? = nil, deploymentMode: DeploymentMode? = nil, engineType: EngineType? = nil, engineVersion: String? = nil, hostInstanceType: String? = nil, logs: LogsSummary? = nil, maintenanceWindowStartTime: WeeklyStartTime? = nil, pendingEngineVersion: String? = nil, publiclyAccessible: Bool? = nil, securityGroups: [String]? = nil, subnetIds: [String]? = nil, tags: [String: String]? = nil, users: [UserSummary]? = nil) {
            self.autoMinorVersionUpgrade = autoMinorVersionUpgrade
            self.brokerArn = brokerArn
            self.brokerId = brokerId
            self.brokerInstances = brokerInstances
            self.brokerName = brokerName
            self.brokerState = brokerState
            self.configurations = configurations
            self.created = created
            self.deploymentMode = deploymentMode
            self.engineType = engineType
            self.engineVersion = engineVersion
            self.hostInstanceType = hostInstanceType
            self.logs = logs
            self.maintenanceWindowStartTime = maintenanceWindowStartTime
            self.pendingEngineVersion = pendingEngineVersion
            self.publiclyAccessible = publiclyAccessible
            self.securityGroups = securityGroups
            self.subnetIds = subnetIds
            self.tags = tags
            self.users = users
        }

        private enum CodingKeys: String, CodingKey {
            case autoMinorVersionUpgrade = "autoMinorVersionUpgrade"
            case brokerArn = "brokerArn"
            case brokerId = "brokerId"
            case brokerInstances = "brokerInstances"
            case brokerName = "brokerName"
            case brokerState = "brokerState"
            case configurations = "configurations"
            case created = "created"
            case deploymentMode = "deploymentMode"
            case engineType = "engineType"
            case engineVersion = "engineVersion"
            case hostInstanceType = "hostInstanceType"
            case logs = "logs"
            case maintenanceWindowStartTime = "maintenanceWindowStartTime"
            case pendingEngineVersion = "pendingEngineVersion"
            case publiclyAccessible = "publiclyAccessible"
            case securityGroups = "securityGroups"
            case subnetIds = "subnetIds"
            case tags = "tags"
            case users = "users"
        }
    }

    public struct DescribeBrokerRequest: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "BrokerId", location: .uri(locationName: "broker-id"), required: true, type: .string)
        ]
        public let brokerId: String

        public init(brokerId: String) {
            self.brokerId = brokerId
        }

        private enum CodingKeys: String, CodingKey {
            case brokerId = "broker-id"
        }
    }

    public struct DescribeBrokerResponse: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "AutoMinorVersionUpgrade", location: .body(locationName: "autoMinorVersionUpgrade"), required: false, type: .boolean), 
            AWSShapeMember(label: "BrokerArn", location: .body(locationName: "brokerArn"), required: false, type: .string), 
            AWSShapeMember(label: "BrokerId", location: .body(locationName: "brokerId"), required: false, type: .string), 
            AWSShapeMember(label: "BrokerInstances", location: .body(locationName: "brokerInstances"), required: false, type: .list), 
            AWSShapeMember(label: "BrokerName", location: .body(locationName: "brokerName"), required: false, type: .string), 
            AWSShapeMember(label: "BrokerState", location: .body(locationName: "brokerState"), required: false, type: .enum), 
            AWSShapeMember(label: "Configurations", location: .body(locationName: "configurations"), required: false, type: .structure), 
            AWSShapeMember(label: "Created", location: .body(locationName: "created"), required: false, type: .timestamp), 
            AWSShapeMember(label: "DeploymentMode", location: .body(locationName: "deploymentMode"), required: false, type: .enum), 
            AWSShapeMember(label: "EngineType", location: .body(locationName: "engineType"), required: false, type: .enum), 
            AWSShapeMember(label: "EngineVersion", location: .body(locationName: "engineVersion"), required: false, type: .string), 
            AWSShapeMember(label: "HostInstanceType", location: .body(locationName: "hostInstanceType"), required: false, type: .string), 
            AWSShapeMember(label: "Logs", location: .body(locationName: "logs"), required: false, type: .structure), 
            AWSShapeMember(label: "MaintenanceWindowStartTime", location: .body(locationName: "maintenanceWindowStartTime"), required: false, type: .structure), 
            AWSShapeMember(label: "PendingEngineVersion", location: .body(locationName: "pendingEngineVersion"), required: false, type: .string), 
            AWSShapeMember(label: "PubliclyAccessible", location: .body(locationName: "publiclyAccessible"), required: false, type: .boolean), 
            AWSShapeMember(label: "SecurityGroups", location: .body(locationName: "securityGroups"), required: false, type: .list), 
            AWSShapeMember(label: "SubnetIds", location: .body(locationName: "subnetIds"), required: false, type: .list), 
            AWSShapeMember(label: "Tags", location: .body(locationName: "tags"), required: false, type: .map), 
            AWSShapeMember(label: "Users", location: .body(locationName: "users"), required: false, type: .list)
        ]
        public let autoMinorVersionUpgrade: Bool?
        public let brokerArn: String?
        public let brokerId: String?
        public let brokerInstances: [BrokerInstance]?
        public let brokerName: String?
        public let brokerState: BrokerState?
        public let configurations: Configurations?
        public let created: TimeStamp?
        public let deploymentMode: DeploymentMode?
        public let engineType: EngineType?
        public let engineVersion: String?
        public let hostInstanceType: String?
        public let logs: LogsSummary?
        public let maintenanceWindowStartTime: WeeklyStartTime?
        public let pendingEngineVersion: String?
        public let publiclyAccessible: Bool?
        public let securityGroups: [String]?
        public let subnetIds: [String]?
        public let tags: [String: String]?
        public let users: [UserSummary]?

        public init(autoMinorVersionUpgrade: Bool? = nil, brokerArn: String? = nil, brokerId: String? = nil, brokerInstances: [BrokerInstance]? = nil, brokerName: String? = nil, brokerState: BrokerState? = nil, configurations: Configurations? = nil, created: TimeStamp? = nil, deploymentMode: DeploymentMode? = nil, engineType: EngineType? = nil, engineVersion: String? = nil, hostInstanceType: String? = nil, logs: LogsSummary? = nil, maintenanceWindowStartTime: WeeklyStartTime? = nil, pendingEngineVersion: String? = nil, publiclyAccessible: Bool? = nil, securityGroups: [String]? = nil, subnetIds: [String]? = nil, tags: [String: String]? = nil, users: [UserSummary]? = nil) {
            self.autoMinorVersionUpgrade = autoMinorVersionUpgrade
            self.brokerArn = brokerArn
            self.brokerId = brokerId
            self.brokerInstances = brokerInstances
            self.brokerName = brokerName
            self.brokerState = brokerState
            self.configurations = configurations
            self.created = created
            self.deploymentMode = deploymentMode
            self.engineType = engineType
            self.engineVersion = engineVersion
            self.hostInstanceType = hostInstanceType
            self.logs = logs
            self.maintenanceWindowStartTime = maintenanceWindowStartTime
            self.pendingEngineVersion = pendingEngineVersion
            self.publiclyAccessible = publiclyAccessible
            self.securityGroups = securityGroups
            self.subnetIds = subnetIds
            self.tags = tags
            self.users = users
        }

        private enum CodingKeys: String, CodingKey {
            case autoMinorVersionUpgrade = "autoMinorVersionUpgrade"
            case brokerArn = "brokerArn"
            case brokerId = "brokerId"
            case brokerInstances = "brokerInstances"
            case brokerName = "brokerName"
            case brokerState = "brokerState"
            case configurations = "configurations"
            case created = "created"
            case deploymentMode = "deploymentMode"
            case engineType = "engineType"
            case engineVersion = "engineVersion"
            case hostInstanceType = "hostInstanceType"
            case logs = "logs"
            case maintenanceWindowStartTime = "maintenanceWindowStartTime"
            case pendingEngineVersion = "pendingEngineVersion"
            case publiclyAccessible = "publiclyAccessible"
            case securityGroups = "securityGroups"
            case subnetIds = "subnetIds"
            case tags = "tags"
            case users = "users"
        }
    }

    public struct DescribeConfigurationRequest: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "ConfigurationId", location: .uri(locationName: "configuration-id"), required: true, type: .string)
        ]
        public let configurationId: String

        public init(configurationId: String) {
            self.configurationId = configurationId
        }

        private enum CodingKeys: String, CodingKey {
            case configurationId = "configuration-id"
        }
    }

    public struct DescribeConfigurationResponse: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "Arn", location: .body(locationName: "arn"), required: false, type: .string), 
            AWSShapeMember(label: "Created", location: .body(locationName: "created"), required: false, type: .timestamp), 
            AWSShapeMember(label: "Description", location: .body(locationName: "description"), required: false, type: .string), 
            AWSShapeMember(label: "EngineType", location: .body(locationName: "engineType"), required: false, type: .enum), 
            AWSShapeMember(label: "EngineVersion", location: .body(locationName: "engineVersion"), required: false, type: .string), 
            AWSShapeMember(label: "Id", location: .body(locationName: "id"), required: false, type: .string), 
            AWSShapeMember(label: "LatestRevision", location: .body(locationName: "latestRevision"), required: false, type: .structure), 
            AWSShapeMember(label: "Name", location: .body(locationName: "name"), required: false, type: .string), 
            AWSShapeMember(label: "Tags", location: .body(locationName: "tags"), required: false, type: .map)
        ]
        public let arn: String?
        public let created: TimeStamp?
        public let description: String?
        public let engineType: EngineType?
        public let engineVersion: String?
        public let id: String?
        public let latestRevision: ConfigurationRevision?
        public let name: String?
        public let tags: [String: String]?

        public init(arn: String? = nil, created: TimeStamp? = nil, description: String? = nil, engineType: EngineType? = nil, engineVersion: String? = nil, id: String? = nil, latestRevision: ConfigurationRevision? = nil, name: String? = nil, tags: [String: String]? = nil) {
            self.arn = arn
            self.created = created
            self.description = description
            self.engineType = engineType
            self.engineVersion = engineVersion
            self.id = id
            self.latestRevision = latestRevision
            self.name = name
            self.tags = tags
        }

        private enum CodingKeys: String, CodingKey {
            case arn = "arn"
            case created = "created"
            case description = "description"
            case engineType = "engineType"
            case engineVersion = "engineVersion"
            case id = "id"
            case latestRevision = "latestRevision"
            case name = "name"
            case tags = "tags"
        }
    }

    public struct DescribeConfigurationRevisionOutput: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "ConfigurationId", location: .body(locationName: "configurationId"), required: false, type: .string), 
            AWSShapeMember(label: "Created", location: .body(locationName: "created"), required: false, type: .timestamp), 
            AWSShapeMember(label: "Data", location: .body(locationName: "data"), required: false, type: .string), 
            AWSShapeMember(label: "Description", location: .body(locationName: "description"), required: false, type: .string)
        ]
        /// Required. The unique ID that Amazon MQ generates for the configuration.
        public let configurationId: String?
        /// Required. The date and time of the configuration.
        public let created: TimeStamp?
        /// Required. The base64-encoded XML configuration.
        public let data: String?
        /// The description of the configuration.
        public let description: String?

        public init(configurationId: String? = nil, created: TimeStamp? = nil, data: String? = nil, description: String? = nil) {
            self.configurationId = configurationId
            self.created = created
            self.data = data
            self.description = description
        }

        private enum CodingKeys: String, CodingKey {
            case configurationId = "configurationId"
            case created = "created"
            case data = "data"
            case description = "description"
        }
    }

    public struct DescribeConfigurationRevisionRequest: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "ConfigurationId", location: .uri(locationName: "configuration-id"), required: true, type: .string), 
            AWSShapeMember(label: "ConfigurationRevision", location: .uri(locationName: "configuration-revision"), required: true, type: .string)
        ]
        public let configurationId: String
        public let configurationRevision: String

        public init(configurationId: String, configurationRevision: String) {
            self.configurationId = configurationId
            self.configurationRevision = configurationRevision
        }

        private enum CodingKeys: String, CodingKey {
            case configurationId = "configuration-id"
            case configurationRevision = "configuration-revision"
        }
    }

    public struct DescribeConfigurationRevisionResponse: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "ConfigurationId", location: .body(locationName: "configurationId"), required: false, type: .string), 
            AWSShapeMember(label: "Created", location: .body(locationName: "created"), required: false, type: .timestamp), 
            AWSShapeMember(label: "Data", location: .body(locationName: "data"), required: false, type: .string), 
            AWSShapeMember(label: "Description", location: .body(locationName: "description"), required: false, type: .string)
        ]
        public let configurationId: String?
        public let created: TimeStamp?
        public let data: String?
        public let description: String?

        public init(configurationId: String? = nil, created: TimeStamp? = nil, data: String? = nil, description: String? = nil) {
            self.configurationId = configurationId
            self.created = created
            self.data = data
            self.description = description
        }

        private enum CodingKeys: String, CodingKey {
            case configurationId = "configurationId"
            case created = "created"
            case data = "data"
            case description = "description"
        }
    }

    public struct DescribeUserOutput: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "BrokerId", location: .body(locationName: "brokerId"), required: false, type: .string), 
            AWSShapeMember(label: "ConsoleAccess", location: .body(locationName: "consoleAccess"), required: false, type: .boolean), 
            AWSShapeMember(label: "Groups", location: .body(locationName: "groups"), required: false, type: .list), 
            AWSShapeMember(label: "Pending", location: .body(locationName: "pending"), required: false, type: .structure), 
            AWSShapeMember(label: "Username", location: .body(locationName: "username"), required: false, type: .string)
        ]
        /// Required. The unique ID that Amazon MQ generates for the broker.
        public let brokerId: String?
        /// Enables access to the the ActiveMQ Web Console for the ActiveMQ user.
        public let consoleAccess: Bool?
        /// The list of groups (20 maximum) to which the ActiveMQ user belongs. This value can contain only alphanumeric characters, dashes, periods, underscores, and tildes (- . _ ~). This value must be 2-100 characters long.
        public let groups: [String]?
        /// The status of the changes pending for the ActiveMQ user.
        public let pending: UserPendingChanges?
        /// Required. The username of the ActiveMQ user. This value can contain only alphanumeric characters, dashes, periods, underscores, and tildes (- . _ ~). This value must be 2-100 characters long.
        public let username: String?

        public init(brokerId: String? = nil, consoleAccess: Bool? = nil, groups: [String]? = nil, pending: UserPendingChanges? = nil, username: String? = nil) {
            self.brokerId = brokerId
            self.consoleAccess = consoleAccess
            self.groups = groups
            self.pending = pending
            self.username = username
        }

        private enum CodingKeys: String, CodingKey {
            case brokerId = "brokerId"
            case consoleAccess = "consoleAccess"
            case groups = "groups"
            case pending = "pending"
            case username = "username"
        }
    }

    public struct DescribeUserRequest: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "BrokerId", location: .uri(locationName: "broker-id"), required: true, type: .string), 
            AWSShapeMember(label: "Username", location: .uri(locationName: "username"), required: true, type: .string)
        ]
        public let brokerId: String
        public let username: String

        public init(brokerId: String, username: String) {
            self.brokerId = brokerId
            self.username = username
        }

        private enum CodingKeys: String, CodingKey {
            case brokerId = "broker-id"
            case username = "username"
        }
    }

    public struct DescribeUserResponse: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "BrokerId", location: .body(locationName: "brokerId"), required: false, type: .string), 
            AWSShapeMember(label: "ConsoleAccess", location: .body(locationName: "consoleAccess"), required: false, type: .boolean), 
            AWSShapeMember(label: "Groups", location: .body(locationName: "groups"), required: false, type: .list), 
            AWSShapeMember(label: "Pending", location: .body(locationName: "pending"), required: false, type: .structure), 
            AWSShapeMember(label: "Username", location: .body(locationName: "username"), required: false, type: .string)
        ]
        public let brokerId: String?
        public let consoleAccess: Bool?
        public let groups: [String]?
        public let pending: UserPendingChanges?
        public let username: String?

        public init(brokerId: String? = nil, consoleAccess: Bool? = nil, groups: [String]? = nil, pending: UserPendingChanges? = nil, username: String? = nil) {
            self.brokerId = brokerId
            self.consoleAccess = consoleAccess
            self.groups = groups
            self.pending = pending
            self.username = username
        }

        private enum CodingKeys: String, CodingKey {
            case brokerId = "brokerId"
            case consoleAccess = "consoleAccess"
            case groups = "groups"
            case pending = "pending"
            case username = "username"
        }
    }

    public enum EngineType: String, CustomStringConvertible, Codable {
        case activemq = "ACTIVEMQ"
        public var description: String { return self.rawValue }
    }

    public struct EngineVersion: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "Name", location: .body(locationName: "name"), required: false, type: .string)
        ]
        /// Id for the version.
        public let name: String?

        public init(name: String? = nil) {
            self.name = name
        }

        private enum CodingKeys: String, CodingKey {
            case name = "name"
        }
    }

    public struct Error: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "ErrorAttribute", location: .body(locationName: "errorAttribute"), required: false, type: .string), 
            AWSShapeMember(label: "Message", location: .body(locationName: "message"), required: false, type: .string)
        ]
        /// The attribute which caused the error.
        public let errorAttribute: String?
        /// The explanation of the error.
        public let message: String?

        public init(errorAttribute: String? = nil, message: String? = nil) {
            self.errorAttribute = errorAttribute
            self.message = message
        }

        private enum CodingKeys: String, CodingKey {
            case errorAttribute = "errorAttribute"
            case message = "message"
        }
    }

    public struct ListBrokersOutput: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "BrokerSummaries", location: .body(locationName: "brokerSummaries"), required: false, type: .list), 
            AWSShapeMember(label: "NextToken", location: .body(locationName: "nextToken"), required: false, type: .string)
        ]
        /// A list of information about all brokers.
        public let brokerSummaries: [BrokerSummary]?
        /// The token that specifies the next page of results Amazon MQ should return. To request the first page, leave nextToken empty.
        public let nextToken: String?

        public init(brokerSummaries: [BrokerSummary]? = nil, nextToken: String? = nil) {
            self.brokerSummaries = brokerSummaries
            self.nextToken = nextToken
        }

        private enum CodingKeys: String, CodingKey {
            case brokerSummaries = "brokerSummaries"
            case nextToken = "nextToken"
        }
    }

    public struct ListBrokersRequest: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "MaxResults", location: .querystring(locationName: "maxResults"), required: false, type: .integer), 
            AWSShapeMember(label: "NextToken", location: .querystring(locationName: "nextToken"), required: false, type: .string)
        ]
        public let maxResults: Int32?
        public let nextToken: String?

        public init(maxResults: Int32? = nil, nextToken: String? = nil) {
            self.maxResults = maxResults
            self.nextToken = nextToken
        }

        private enum CodingKeys: String, CodingKey {
            case maxResults = "maxResults"
            case nextToken = "nextToken"
        }
    }

    public struct ListBrokersResponse: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "BrokerSummaries", location: .body(locationName: "brokerSummaries"), required: false, type: .list), 
            AWSShapeMember(label: "NextToken", location: .body(locationName: "nextToken"), required: false, type: .string)
        ]
        public let brokerSummaries: [BrokerSummary]?
        public let nextToken: String?

        public init(brokerSummaries: [BrokerSummary]? = nil, nextToken: String? = nil) {
            self.brokerSummaries = brokerSummaries
            self.nextToken = nextToken
        }

        private enum CodingKeys: String, CodingKey {
            case brokerSummaries = "brokerSummaries"
            case nextToken = "nextToken"
        }
    }

    public struct ListConfigurationRevisionsOutput: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "ConfigurationId", location: .body(locationName: "configurationId"), required: false, type: .string), 
            AWSShapeMember(label: "MaxResults", location: .body(locationName: "maxResults"), required: false, type: .integer), 
            AWSShapeMember(label: "NextToken", location: .body(locationName: "nextToken"), required: false, type: .string), 
            AWSShapeMember(label: "Revisions", location: .body(locationName: "revisions"), required: false, type: .list)
        ]
        /// The unique ID that Amazon MQ generates for the configuration.
        public let configurationId: String?
        /// The maximum number of configuration revisions that can be returned per page (20 by default). This value must be an integer from 5 to 100.
        public let maxResults: Int32?
        /// The token that specifies the next page of results Amazon MQ should return. To request the first page, leave nextToken empty.
        public let nextToken: String?
        /// The list of all revisions for the specified configuration.
        public let revisions: [ConfigurationRevision]?

        public init(configurationId: String? = nil, maxResults: Int32? = nil, nextToken: String? = nil, revisions: [ConfigurationRevision]? = nil) {
            self.configurationId = configurationId
            self.maxResults = maxResults
            self.nextToken = nextToken
            self.revisions = revisions
        }

        private enum CodingKeys: String, CodingKey {
            case configurationId = "configurationId"
            case maxResults = "maxResults"
            case nextToken = "nextToken"
            case revisions = "revisions"
        }
    }

    public struct ListConfigurationRevisionsRequest: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "ConfigurationId", location: .uri(locationName: "configuration-id"), required: true, type: .string), 
            AWSShapeMember(label: "MaxResults", location: .querystring(locationName: "maxResults"), required: false, type: .integer), 
            AWSShapeMember(label: "NextToken", location: .querystring(locationName: "nextToken"), required: false, type: .string)
        ]
        public let configurationId: String
        public let maxResults: Int32?
        public let nextToken: String?

        public init(configurationId: String, maxResults: Int32? = nil, nextToken: String? = nil) {
            self.configurationId = configurationId
            self.maxResults = maxResults
            self.nextToken = nextToken
        }

        private enum CodingKeys: String, CodingKey {
            case configurationId = "configuration-id"
            case maxResults = "maxResults"
            case nextToken = "nextToken"
        }
    }

    public struct ListConfigurationRevisionsResponse: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "ConfigurationId", location: .body(locationName: "configurationId"), required: false, type: .string), 
            AWSShapeMember(label: "MaxResults", location: .body(locationName: "maxResults"), required: false, type: .integer), 
            AWSShapeMember(label: "NextToken", location: .body(locationName: "nextToken"), required: false, type: .string), 
            AWSShapeMember(label: "Revisions", location: .body(locationName: "revisions"), required: false, type: .list)
        ]
        public let configurationId: String?
        public let maxResults: Int32?
        public let nextToken: String?
        public let revisions: [ConfigurationRevision]?

        public init(configurationId: String? = nil, maxResults: Int32? = nil, nextToken: String? = nil, revisions: [ConfigurationRevision]? = nil) {
            self.configurationId = configurationId
            self.maxResults = maxResults
            self.nextToken = nextToken
            self.revisions = revisions
        }

        private enum CodingKeys: String, CodingKey {
            case configurationId = "configurationId"
            case maxResults = "maxResults"
            case nextToken = "nextToken"
            case revisions = "revisions"
        }
    }

    public struct ListConfigurationsOutput: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "Configurations", location: .body(locationName: "configurations"), required: false, type: .list), 
            AWSShapeMember(label: "MaxResults", location: .body(locationName: "maxResults"), required: false, type: .integer), 
            AWSShapeMember(label: "NextToken", location: .body(locationName: "nextToken"), required: false, type: .string)
        ]
        /// The list of all revisions for the specified configuration.
        public let configurations: [Configuration]?
        /// The maximum number of configurations that Amazon MQ can return per page (20 by default). This value must be an integer from 5 to 100.
        public let maxResults: Int32?
        /// The token that specifies the next page of results Amazon MQ should return. To request the first page, leave nextToken empty.
        public let nextToken: String?

        public init(configurations: [Configuration]? = nil, maxResults: Int32? = nil, nextToken: String? = nil) {
            self.configurations = configurations
            self.maxResults = maxResults
            self.nextToken = nextToken
        }

        private enum CodingKeys: String, CodingKey {
            case configurations = "configurations"
            case maxResults = "maxResults"
            case nextToken = "nextToken"
        }
    }

    public struct ListConfigurationsRequest: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "MaxResults", location: .querystring(locationName: "maxResults"), required: false, type: .integer), 
            AWSShapeMember(label: "NextToken", location: .querystring(locationName: "nextToken"), required: false, type: .string)
        ]
        public let maxResults: Int32?
        public let nextToken: String?

        public init(maxResults: Int32? = nil, nextToken: String? = nil) {
            self.maxResults = maxResults
            self.nextToken = nextToken
        }

        private enum CodingKeys: String, CodingKey {
            case maxResults = "maxResults"
            case nextToken = "nextToken"
        }
    }

    public struct ListConfigurationsResponse: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "Configurations", location: .body(locationName: "configurations"), required: false, type: .list), 
            AWSShapeMember(label: "MaxResults", location: .body(locationName: "maxResults"), required: false, type: .integer), 
            AWSShapeMember(label: "NextToken", location: .body(locationName: "nextToken"), required: false, type: .string)
        ]
        public let configurations: [Configuration]?
        public let maxResults: Int32?
        public let nextToken: String?

        public init(configurations: [Configuration]? = nil, maxResults: Int32? = nil, nextToken: String? = nil) {
            self.configurations = configurations
            self.maxResults = maxResults
            self.nextToken = nextToken
        }

        private enum CodingKeys: String, CodingKey {
            case configurations = "configurations"
            case maxResults = "maxResults"
            case nextToken = "nextToken"
        }
    }

    public struct ListTagsRequest: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "ResourceArn", location: .uri(locationName: "resource-arn"), required: true, type: .string)
        ]
        public let resourceArn: String

        public init(resourceArn: String) {
            self.resourceArn = resourceArn
        }

        private enum CodingKeys: String, CodingKey {
            case resourceArn = "resource-arn"
        }
    }

    public struct ListTagsResponse: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "Tags", location: .body(locationName: "tags"), required: false, type: .map)
        ]
        public let tags: [String: String]?

        public init(tags: [String: String]? = nil) {
            self.tags = tags
        }

        private enum CodingKeys: String, CodingKey {
            case tags = "tags"
        }
    }

    public struct ListUsersOutput: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "BrokerId", location: .body(locationName: "brokerId"), required: false, type: .string), 
            AWSShapeMember(label: "MaxResults", location: .body(locationName: "maxResults"), required: false, type: .integer), 
            AWSShapeMember(label: "NextToken", location: .body(locationName: "nextToken"), required: false, type: .string), 
            AWSShapeMember(label: "Users", location: .body(locationName: "users"), required: false, type: .list)
        ]
        /// Required. The unique ID that Amazon MQ generates for the broker.
        public let brokerId: String?
        /// Required. The maximum number of ActiveMQ users that can be returned per page (20 by default). This value must be an integer from 5 to 100.
        public let maxResults: Int32?
        /// The token that specifies the next page of results Amazon MQ should return. To request the first page, leave nextToken empty.
        public let nextToken: String?
        /// Required. The list of all ActiveMQ usernames for the specified broker.
        public let users: [UserSummary]?

        public init(brokerId: String? = nil, maxResults: Int32? = nil, nextToken: String? = nil, users: [UserSummary]? = nil) {
            self.brokerId = brokerId
            self.maxResults = maxResults
            self.nextToken = nextToken
            self.users = users
        }

        private enum CodingKeys: String, CodingKey {
            case brokerId = "brokerId"
            case maxResults = "maxResults"
            case nextToken = "nextToken"
            case users = "users"
        }
    }

    public struct ListUsersRequest: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "BrokerId", location: .uri(locationName: "broker-id"), required: true, type: .string), 
            AWSShapeMember(label: "MaxResults", location: .querystring(locationName: "maxResults"), required: false, type: .integer), 
            AWSShapeMember(label: "NextToken", location: .querystring(locationName: "nextToken"), required: false, type: .string)
        ]
        public let brokerId: String
        public let maxResults: Int32?
        public let nextToken: String?

        public init(brokerId: String, maxResults: Int32? = nil, nextToken: String? = nil) {
            self.brokerId = brokerId
            self.maxResults = maxResults
            self.nextToken = nextToken
        }

        private enum CodingKeys: String, CodingKey {
            case brokerId = "broker-id"
            case maxResults = "maxResults"
            case nextToken = "nextToken"
        }
    }

    public struct ListUsersResponse: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "BrokerId", location: .body(locationName: "brokerId"), required: false, type: .string), 
            AWSShapeMember(label: "MaxResults", location: .body(locationName: "maxResults"), required: false, type: .integer), 
            AWSShapeMember(label: "NextToken", location: .body(locationName: "nextToken"), required: false, type: .string), 
            AWSShapeMember(label: "Users", location: .body(locationName: "users"), required: false, type: .list)
        ]
        public let brokerId: String?
        public let maxResults: Int32?
        public let nextToken: String?
        public let users: [UserSummary]?

        public init(brokerId: String? = nil, maxResults: Int32? = nil, nextToken: String? = nil, users: [UserSummary]? = nil) {
            self.brokerId = brokerId
            self.maxResults = maxResults
            self.nextToken = nextToken
            self.users = users
        }

        private enum CodingKeys: String, CodingKey {
            case brokerId = "brokerId"
            case maxResults = "maxResults"
            case nextToken = "nextToken"
            case users = "users"
        }
    }

    public struct Logs: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "Audit", location: .body(locationName: "audit"), required: false, type: .boolean), 
            AWSShapeMember(label: "General", location: .body(locationName: "general"), required: false, type: .boolean)
        ]
        /// Enables audit logging. Every user management action made using JMX or the ActiveMQ Web Console is logged.
        public let audit: Bool?
        /// Enables general logging.
        public let general: Bool?

        public init(audit: Bool? = nil, general: Bool? = nil) {
            self.audit = audit
            self.general = general
        }

        private enum CodingKeys: String, CodingKey {
            case audit = "audit"
            case general = "general"
        }
    }

    public struct LogsSummary: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "Audit", location: .body(locationName: "audit"), required: false, type: .boolean), 
            AWSShapeMember(label: "AuditLogGroup", location: .body(locationName: "auditLogGroup"), required: false, type: .string), 
            AWSShapeMember(label: "General", location: .body(locationName: "general"), required: false, type: .boolean), 
            AWSShapeMember(label: "GeneralLogGroup", location: .body(locationName: "generalLogGroup"), required: false, type: .string), 
            AWSShapeMember(label: "Pending", location: .body(locationName: "pending"), required: false, type: .structure)
        ]
        /// Enables audit logging. Every user management action made using JMX or the ActiveMQ Web Console is logged.
        public let audit: Bool?
        /// The location of the CloudWatch Logs log group where audit logs are sent.
        public let auditLogGroup: String?
        /// Enables general logging.
        public let general: Bool?
        /// The location of the CloudWatch Logs log group where general logs are sent.
        public let generalLogGroup: String?
        /// The list of information about logs pending to be deployed for the specified broker.
        public let pending: PendingLogs?

        public init(audit: Bool? = nil, auditLogGroup: String? = nil, general: Bool? = nil, generalLogGroup: String? = nil, pending: PendingLogs? = nil) {
            self.audit = audit
            self.auditLogGroup = auditLogGroup
            self.general = general
            self.generalLogGroup = generalLogGroup
            self.pending = pending
        }

        private enum CodingKeys: String, CodingKey {
            case audit = "audit"
            case auditLogGroup = "auditLogGroup"
            case general = "general"
            case generalLogGroup = "generalLogGroup"
            case pending = "pending"
        }
    }

    public struct PendingLogs: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "Audit", location: .body(locationName: "audit"), required: false, type: .boolean), 
            AWSShapeMember(label: "General", location: .body(locationName: "general"), required: false, type: .boolean)
        ]
        /// Enables audit logging. Every user management action made using JMX or the ActiveMQ Web Console is logged.
        public let audit: Bool?
        /// Enables general logging.
        public let general: Bool?

        public init(audit: Bool? = nil, general: Bool? = nil) {
            self.audit = audit
            self.general = general
        }

        private enum CodingKeys: String, CodingKey {
            case audit = "audit"
            case general = "general"
        }
    }

    public struct RebootBrokerRequest: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "BrokerId", location: .uri(locationName: "broker-id"), required: true, type: .string)
        ]
        public let brokerId: String

        public init(brokerId: String) {
            self.brokerId = brokerId
        }

        private enum CodingKeys: String, CodingKey {
            case brokerId = "broker-id"
        }
    }

    public struct RebootBrokerResponse: AWSShape {

        public init() {
        }

    }

    public struct SanitizationWarning: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "AttributeName", location: .body(locationName: "attributeName"), required: false, type: .string), 
            AWSShapeMember(label: "ElementName", location: .body(locationName: "elementName"), required: false, type: .string), 
            AWSShapeMember(label: "Reason", location: .body(locationName: "reason"), required: false, type: .enum)
        ]
        /// The name of the XML attribute that has been sanitized.
        public let attributeName: String?
        /// The name of the XML element that has been sanitized.
        public let elementName: String?
        /// Required. The reason for which the XML elements or attributes were sanitized.
        public let reason: SanitizationWarningReason?

        public init(attributeName: String? = nil, elementName: String? = nil, reason: SanitizationWarningReason? = nil) {
            self.attributeName = attributeName
            self.elementName = elementName
            self.reason = reason
        }

        private enum CodingKeys: String, CodingKey {
            case attributeName = "attributeName"
            case elementName = "elementName"
            case reason = "reason"
        }
    }

    public enum SanitizationWarningReason: String, CustomStringConvertible, Codable {
        case disallowedElementRemoved = "DISALLOWED_ELEMENT_REMOVED"
        case disallowedAttributeRemoved = "DISALLOWED_ATTRIBUTE_REMOVED"
        case invalidAttributeValueRemoved = "INVALID_ATTRIBUTE_VALUE_REMOVED"
        public var description: String { return self.rawValue }
    }

    public struct Tags: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "Tags", location: .body(locationName: "tags"), required: false, type: .map)
        ]
        /// The key-value pair for the resource tag.
        public let tags: [String: String]?

        public init(tags: [String: String]? = nil) {
            self.tags = tags
        }

        private enum CodingKeys: String, CodingKey {
            case tags = "tags"
        }
    }

    public struct UpdateBrokerInput: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "AutoMinorVersionUpgrade", location: .body(locationName: "autoMinorVersionUpgrade"), required: false, type: .boolean), 
            AWSShapeMember(label: "Configuration", location: .body(locationName: "configuration"), required: false, type: .structure), 
            AWSShapeMember(label: "EngineVersion", location: .body(locationName: "engineVersion"), required: false, type: .string), 
            AWSShapeMember(label: "Logs", location: .body(locationName: "logs"), required: false, type: .structure)
        ]
        /// Enables automatic upgrades to new minor versions for brokers, as Apache releases the versions. The automatic upgrades occur during the maintenance window of the broker or after a manual broker reboot.
        public let autoMinorVersionUpgrade: Bool?
        /// A list of information about the configuration.
        public let configuration: ConfigurationId?
        /// The version of the broker engine. For a list of supported engine versions, see https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/broker-engine.html
        public let engineVersion: String?
        /// Enables Amazon CloudWatch logging for brokers.
        public let logs: Logs?

        public init(autoMinorVersionUpgrade: Bool? = nil, configuration: ConfigurationId? = nil, engineVersion: String? = nil, logs: Logs? = nil) {
            self.autoMinorVersionUpgrade = autoMinorVersionUpgrade
            self.configuration = configuration
            self.engineVersion = engineVersion
            self.logs = logs
        }

        private enum CodingKeys: String, CodingKey {
            case autoMinorVersionUpgrade = "autoMinorVersionUpgrade"
            case configuration = "configuration"
            case engineVersion = "engineVersion"
            case logs = "logs"
        }
    }

    public struct UpdateBrokerOutput: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "AutoMinorVersionUpgrade", location: .body(locationName: "autoMinorVersionUpgrade"), required: false, type: .boolean), 
            AWSShapeMember(label: "BrokerId", location: .body(locationName: "brokerId"), required: false, type: .string), 
            AWSShapeMember(label: "Configuration", location: .body(locationName: "configuration"), required: false, type: .structure), 
            AWSShapeMember(label: "EngineVersion", location: .body(locationName: "engineVersion"), required: false, type: .string), 
            AWSShapeMember(label: "Logs", location: .body(locationName: "logs"), required: false, type: .structure)
        ]
        /// The new value of automatic upgrades to new minor version for brokers.
        public let autoMinorVersionUpgrade: Bool?
        /// Required. The unique ID that Amazon MQ generates for the broker.
        public let brokerId: String?
        /// The ID of the updated configuration.
        public let configuration: ConfigurationId?
        /// The version of the broker engine to upgrade to. For a list of supported engine versions, see https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/broker-engine.html
        public let engineVersion: String?
        /// The list of information about logs to be enabled for the specified broker.
        public let logs: Logs?

        public init(autoMinorVersionUpgrade: Bool? = nil, brokerId: String? = nil, configuration: ConfigurationId? = nil, engineVersion: String? = nil, logs: Logs? = nil) {
            self.autoMinorVersionUpgrade = autoMinorVersionUpgrade
            self.brokerId = brokerId
            self.configuration = configuration
            self.engineVersion = engineVersion
            self.logs = logs
        }

        private enum CodingKeys: String, CodingKey {
            case autoMinorVersionUpgrade = "autoMinorVersionUpgrade"
            case brokerId = "brokerId"
            case configuration = "configuration"
            case engineVersion = "engineVersion"
            case logs = "logs"
        }
    }

    public struct UpdateBrokerRequest: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "AutoMinorVersionUpgrade", location: .body(locationName: "autoMinorVersionUpgrade"), required: false, type: .boolean), 
            AWSShapeMember(label: "BrokerId", location: .uri(locationName: "broker-id"), required: true, type: .string), 
            AWSShapeMember(label: "Configuration", location: .body(locationName: "configuration"), required: false, type: .structure), 
            AWSShapeMember(label: "EngineVersion", location: .body(locationName: "engineVersion"), required: false, type: .string), 
            AWSShapeMember(label: "Logs", location: .body(locationName: "logs"), required: false, type: .structure)
        ]
        public let autoMinorVersionUpgrade: Bool?
        public let brokerId: String
        public let configuration: ConfigurationId?
        public let engineVersion: String?
        public let logs: Logs?

        public init(autoMinorVersionUpgrade: Bool? = nil, brokerId: String, configuration: ConfigurationId? = nil, engineVersion: String? = nil, logs: Logs? = nil) {
            self.autoMinorVersionUpgrade = autoMinorVersionUpgrade
            self.brokerId = brokerId
            self.configuration = configuration
            self.engineVersion = engineVersion
            self.logs = logs
        }

        private enum CodingKeys: String, CodingKey {
            case autoMinorVersionUpgrade = "autoMinorVersionUpgrade"
            case brokerId = "broker-id"
            case configuration = "configuration"
            case engineVersion = "engineVersion"
            case logs = "logs"
        }
    }

    public struct UpdateBrokerResponse: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "AutoMinorVersionUpgrade", location: .body(locationName: "autoMinorVersionUpgrade"), required: false, type: .boolean), 
            AWSShapeMember(label: "BrokerId", location: .body(locationName: "brokerId"), required: false, type: .string), 
            AWSShapeMember(label: "Configuration", location: .body(locationName: "configuration"), required: false, type: .structure), 
            AWSShapeMember(label: "EngineVersion", location: .body(locationName: "engineVersion"), required: false, type: .string), 
            AWSShapeMember(label: "Logs", location: .body(locationName: "logs"), required: false, type: .structure)
        ]
        public let autoMinorVersionUpgrade: Bool?
        public let brokerId: String?
        public let configuration: ConfigurationId?
        public let engineVersion: String?
        public let logs: Logs?

        public init(autoMinorVersionUpgrade: Bool? = nil, brokerId: String? = nil, configuration: ConfigurationId? = nil, engineVersion: String? = nil, logs: Logs? = nil) {
            self.autoMinorVersionUpgrade = autoMinorVersionUpgrade
            self.brokerId = brokerId
            self.configuration = configuration
            self.engineVersion = engineVersion
            self.logs = logs
        }

        private enum CodingKeys: String, CodingKey {
            case autoMinorVersionUpgrade = "autoMinorVersionUpgrade"
            case brokerId = "brokerId"
            case configuration = "configuration"
            case engineVersion = "engineVersion"
            case logs = "logs"
        }
    }

    public struct UpdateConfigurationInput: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "Data", location: .body(locationName: "data"), required: false, type: .string), 
            AWSShapeMember(label: "Description", location: .body(locationName: "description"), required: false, type: .string)
        ]
        /// Required. The base64-encoded XML configuration.
        public let data: String?
        /// The description of the configuration.
        public let description: String?

        public init(data: String? = nil, description: String? = nil) {
            self.data = data
            self.description = description
        }

        private enum CodingKeys: String, CodingKey {
            case data = "data"
            case description = "description"
        }
    }

    public struct UpdateConfigurationOutput: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "Arn", location: .body(locationName: "arn"), required: false, type: .string), 
            AWSShapeMember(label: "Created", location: .body(locationName: "created"), required: false, type: .timestamp), 
            AWSShapeMember(label: "Id", location: .body(locationName: "id"), required: false, type: .string), 
            AWSShapeMember(label: "LatestRevision", location: .body(locationName: "latestRevision"), required: false, type: .structure), 
            AWSShapeMember(label: "Name", location: .body(locationName: "name"), required: false, type: .string), 
            AWSShapeMember(label: "Warnings", location: .body(locationName: "warnings"), required: false, type: .list)
        ]
        /// Required. The Amazon Resource Name (ARN) of the configuration.
        public let arn: String?
        /// Required. The date and time of the configuration.
        public let created: TimeStamp?
        /// Required. The unique ID that Amazon MQ generates for the configuration.
        public let id: String?
        /// The latest revision of the configuration.
        public let latestRevision: ConfigurationRevision?
        /// Required. The name of the configuration. This value can contain only alphanumeric characters, dashes, periods, underscores, and tildes (- . _ ~). This value must be 1-150 characters long.
        public let name: String?
        /// The list of the first 20 warnings about the configuration XML elements or attributes that were sanitized.
        public let warnings: [SanitizationWarning]?

        public init(arn: String? = nil, created: TimeStamp? = nil, id: String? = nil, latestRevision: ConfigurationRevision? = nil, name: String? = nil, warnings: [SanitizationWarning]? = nil) {
            self.arn = arn
            self.created = created
            self.id = id
            self.latestRevision = latestRevision
            self.name = name
            self.warnings = warnings
        }

        private enum CodingKeys: String, CodingKey {
            case arn = "arn"
            case created = "created"
            case id = "id"
            case latestRevision = "latestRevision"
            case name = "name"
            case warnings = "warnings"
        }
    }

    public struct UpdateConfigurationRequest: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "ConfigurationId", location: .uri(locationName: "configuration-id"), required: true, type: .string), 
            AWSShapeMember(label: "Data", location: .body(locationName: "data"), required: false, type: .string), 
            AWSShapeMember(label: "Description", location: .body(locationName: "description"), required: false, type: .string)
        ]
        public let configurationId: String
        public let data: String?
        public let description: String?

        public init(configurationId: String, data: String? = nil, description: String? = nil) {
            self.configurationId = configurationId
            self.data = data
            self.description = description
        }

        private enum CodingKeys: String, CodingKey {
            case configurationId = "configuration-id"
            case data = "data"
            case description = "description"
        }
    }

    public struct UpdateConfigurationResponse: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "Arn", location: .body(locationName: "arn"), required: false, type: .string), 
            AWSShapeMember(label: "Created", location: .body(locationName: "created"), required: false, type: .timestamp), 
            AWSShapeMember(label: "Id", location: .body(locationName: "id"), required: false, type: .string), 
            AWSShapeMember(label: "LatestRevision", location: .body(locationName: "latestRevision"), required: false, type: .structure), 
            AWSShapeMember(label: "Name", location: .body(locationName: "name"), required: false, type: .string), 
            AWSShapeMember(label: "Warnings", location: .body(locationName: "warnings"), required: false, type: .list)
        ]
        public let arn: String?
        public let created: TimeStamp?
        public let id: String?
        public let latestRevision: ConfigurationRevision?
        public let name: String?
        public let warnings: [SanitizationWarning]?

        public init(arn: String? = nil, created: TimeStamp? = nil, id: String? = nil, latestRevision: ConfigurationRevision? = nil, name: String? = nil, warnings: [SanitizationWarning]? = nil) {
            self.arn = arn
            self.created = created
            self.id = id
            self.latestRevision = latestRevision
            self.name = name
            self.warnings = warnings
        }

        private enum CodingKeys: String, CodingKey {
            case arn = "arn"
            case created = "created"
            case id = "id"
            case latestRevision = "latestRevision"
            case name = "name"
            case warnings = "warnings"
        }
    }

    public struct UpdateUserInput: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "ConsoleAccess", location: .body(locationName: "consoleAccess"), required: false, type: .boolean), 
            AWSShapeMember(label: "Groups", location: .body(locationName: "groups"), required: false, type: .list), 
            AWSShapeMember(label: "Password", location: .body(locationName: "password"), required: false, type: .string)
        ]
        /// Enables access to the the ActiveMQ Web Console for the ActiveMQ user.
        public let consoleAccess: Bool?
        /// The list of groups (20 maximum) to which the ActiveMQ user belongs. This value can contain only alphanumeric characters, dashes, periods, underscores, and tildes (- . _ ~). This value must be 2-100 characters long.
        public let groups: [String]?
        /// The password of the user. This value must be at least 12 characters long, must contain at least 4 unique characters, and must not contain commas.
        public let password: String?

        public init(consoleAccess: Bool? = nil, groups: [String]? = nil, password: String? = nil) {
            self.consoleAccess = consoleAccess
            self.groups = groups
            self.password = password
        }

        private enum CodingKeys: String, CodingKey {
            case consoleAccess = "consoleAccess"
            case groups = "groups"
            case password = "password"
        }
    }

    public struct UpdateUserRequest: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "BrokerId", location: .uri(locationName: "broker-id"), required: true, type: .string), 
            AWSShapeMember(label: "ConsoleAccess", location: .body(locationName: "consoleAccess"), required: false, type: .boolean), 
            AWSShapeMember(label: "Groups", location: .body(locationName: "groups"), required: false, type: .list), 
            AWSShapeMember(label: "Password", location: .body(locationName: "password"), required: false, type: .string), 
            AWSShapeMember(label: "Username", location: .uri(locationName: "username"), required: true, type: .string)
        ]
        public let brokerId: String
        public let consoleAccess: Bool?
        public let groups: [String]?
        public let password: String?
        public let username: String

        public init(brokerId: String, consoleAccess: Bool? = nil, groups: [String]? = nil, password: String? = nil, username: String) {
            self.brokerId = brokerId
            self.consoleAccess = consoleAccess
            self.groups = groups
            self.password = password
            self.username = username
        }

        private enum CodingKeys: String, CodingKey {
            case brokerId = "broker-id"
            case consoleAccess = "consoleAccess"
            case groups = "groups"
            case password = "password"
            case username = "username"
        }
    }

    public struct UpdateUserResponse: AWSShape {

        public init() {
        }

    }

    public struct User: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "ConsoleAccess", location: .body(locationName: "consoleAccess"), required: false, type: .boolean), 
            AWSShapeMember(label: "Groups", location: .body(locationName: "groups"), required: false, type: .list), 
            AWSShapeMember(label: "Password", location: .body(locationName: "password"), required: false, type: .string), 
            AWSShapeMember(label: "Username", location: .body(locationName: "username"), required: false, type: .string)
        ]
        /// Enables access to the the ActiveMQ Web Console for the ActiveMQ user.
        public let consoleAccess: Bool?
        /// The list of groups (20 maximum) to which the ActiveMQ user belongs. This value can contain only alphanumeric characters, dashes, periods, underscores, and tildes (- . _ ~). This value must be 2-100 characters long.
        public let groups: [String]?
        /// Required. The password of the ActiveMQ user. This value must be at least 12 characters long, must contain at least 4 unique characters, and must not contain commas.
        public let password: String?
        /// Required. The username of the ActiveMQ user. This value can contain only alphanumeric characters, dashes, periods, underscores, and tildes (- . _ ~). This value must be 2-100 characters long.
        public let username: String?

        public init(consoleAccess: Bool? = nil, groups: [String]? = nil, password: String? = nil, username: String? = nil) {
            self.consoleAccess = consoleAccess
            self.groups = groups
            self.password = password
            self.username = username
        }

        private enum CodingKeys: String, CodingKey {
            case consoleAccess = "consoleAccess"
            case groups = "groups"
            case password = "password"
            case username = "username"
        }
    }

    public struct UserPendingChanges: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "ConsoleAccess", location: .body(locationName: "consoleAccess"), required: false, type: .boolean), 
            AWSShapeMember(label: "Groups", location: .body(locationName: "groups"), required: false, type: .list), 
            AWSShapeMember(label: "PendingChange", location: .body(locationName: "pendingChange"), required: false, type: .enum)
        ]
        /// Enables access to the the ActiveMQ Web Console for the ActiveMQ user.
        public let consoleAccess: Bool?
        /// The list of groups (20 maximum) to which the ActiveMQ user belongs. This value can contain only alphanumeric characters, dashes, periods, underscores, and tildes (- . _ ~). This value must be 2-100 characters long.
        public let groups: [String]?
        /// Required. The type of change pending for the ActiveMQ user.
        public let pendingChange: ChangeType?

        public init(consoleAccess: Bool? = nil, groups: [String]? = nil, pendingChange: ChangeType? = nil) {
            self.consoleAccess = consoleAccess
            self.groups = groups
            self.pendingChange = pendingChange
        }

        private enum CodingKeys: String, CodingKey {
            case consoleAccess = "consoleAccess"
            case groups = "groups"
            case pendingChange = "pendingChange"
        }
    }

    public struct UserSummary: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "PendingChange", location: .body(locationName: "pendingChange"), required: false, type: .enum), 
            AWSShapeMember(label: "Username", location: .body(locationName: "username"), required: false, type: .string)
        ]
        /// The type of change pending for the ActiveMQ user.
        public let pendingChange: ChangeType?
        /// Required. The username of the ActiveMQ user. This value can contain only alphanumeric characters, dashes, periods, underscores, and tildes (- . _ ~). This value must be 2-100 characters long.
        public let username: String?

        public init(pendingChange: ChangeType? = nil, username: String? = nil) {
            self.pendingChange = pendingChange
            self.username = username
        }

        private enum CodingKeys: String, CodingKey {
            case pendingChange = "pendingChange"
            case username = "username"
        }
    }

    public struct WeeklyStartTime: AWSShape {
        public static var _members: [AWSShapeMember] = [
            AWSShapeMember(label: "DayOfWeek", location: .body(locationName: "dayOfWeek"), required: false, type: .enum), 
            AWSShapeMember(label: "TimeOfDay", location: .body(locationName: "timeOfDay"), required: false, type: .string), 
            AWSShapeMember(label: "TimeZone", location: .body(locationName: "timeZone"), required: false, type: .string)
        ]
        /// Required. The day of the week.
        public let dayOfWeek: DayOfWeek?
        /// Required. The time, in 24-hour format.
        public let timeOfDay: String?
        /// The time zone, UTC by default, in either the Country/City format, or the UTC offset format.
        public let timeZone: String?

        public init(dayOfWeek: DayOfWeek? = nil, timeOfDay: String? = nil, timeZone: String? = nil) {
            self.dayOfWeek = dayOfWeek
            self.timeOfDay = timeOfDay
            self.timeZone = timeZone
        }

        private enum CodingKeys: String, CodingKey {
            case dayOfWeek = "dayOfWeek"
            case timeOfDay = "timeOfDay"
            case timeZone = "timeZone"
        }
    }

}