# frozen_string_literal: true

# WARNING ABOUT GENERATED CODE
#
# This file is generated. See the contributing guide for more information:
# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
#
# WARNING ABOUT GENERATED CODE

module Aws::WorkSpaces
  module Types

    # @!attribute [rw] link_id
    #   The identifier of the account link.
    #   @return [String]
    #
    # @!attribute [rw] client_token
    #   A string of up to 64 ASCII characters that Amazon WorkSpaces uses to
    #   ensure idempotent creation.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/AcceptAccountLinkInvitationRequest AWS API Documentation
    #
    class AcceptAccountLinkInvitationRequest < Struct.new(
      :link_id,
      :client_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] account_link
    #   Information about the account link.
    #   @return [Types::AccountLink]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/AcceptAccountLinkInvitationResult AWS API Documentation
    #
    class AcceptAccountLinkInvitationResult < Struct.new(
      :account_link)
      SENSITIVE = []
      include Aws::Structure
    end

    # The user is not authorized to access a resource.
    #
    # @!attribute [rw] message
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/AccessDeniedException AWS API Documentation
    #
    class AccessDeniedException < Struct.new(
      :message)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the access type and endpoint for a WorkSpace.
    #
    # @!attribute [rw] access_endpoint_type
    #   Indicates the type of access endpoint.
    #   @return [String]
    #
    # @!attribute [rw] vpc_endpoint_id
    #   Indicates the VPC endpoint to use for access.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/AccessEndpoint AWS API Documentation
    #
    class AccessEndpoint < Struct.new(
      :access_endpoint_type,
      :vpc_endpoint_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the access endpoint configuration for a WorkSpace.
    #
    # @!attribute [rw] access_endpoints
    #   Indicates a list of access endpoints associated with this directory.
    #   @return [Array<Types::AccessEndpoint>]
    #
    # @!attribute [rw] internet_fallback_protocols
    #   Indicates a list of protocols that fallback to using the public
    #   Internet when streaming over a VPC endpoint is not available.
    #   @return [Array<String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/AccessEndpointConfig AWS API Documentation
    #
    class AccessEndpointConfig < Struct.new(
      :access_endpoints,
      :internet_fallback_protocols)
      SENSITIVE = []
      include Aws::Structure
    end

    # Information about about the account link.
    #
    # @!attribute [rw] account_link_id
    #   The identifier of the account link.
    #   @return [String]
    #
    # @!attribute [rw] account_link_status
    #   The status of the account link.
    #   @return [String]
    #
    # @!attribute [rw] source_account_id
    #   The identifier of the source account.
    #   @return [String]
    #
    # @!attribute [rw] target_account_id
    #   The identifier of the target account.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/AccountLink AWS API Documentation
    #
    class AccountLink < Struct.new(
      :account_link_id,
      :account_link_status,
      :source_account_id,
      :target_account_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes a modification to the configuration of Bring Your Own
    # License (BYOL) for the specified account.
    #
    # @!attribute [rw] modification_state
    #   The state of the modification to the configuration of BYOL.
    #   @return [String]
    #
    # @!attribute [rw] dedicated_tenancy_support
    #   The status of BYOL (whether BYOL is being enabled or disabled).
    #   @return [String]
    #
    # @!attribute [rw] dedicated_tenancy_management_cidr_range
    #   The IP address range, specified as an IPv4 CIDR block, for the
    #   management network interface used for the account.
    #   @return [String]
    #
    # @!attribute [rw] start_time
    #   The timestamp when the modification of the BYOL configuration was
    #   started.
    #   @return [Time]
    #
    # @!attribute [rw] error_code
    #   The error code that is returned if the configuration of BYOL cannot
    #   be modified.
    #   @return [String]
    #
    # @!attribute [rw] error_message
    #   The text of the error message that is returned if the configuration
    #   of BYOL cannot be modified.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/AccountModification AWS API Documentation
    #
    class AccountModification < Struct.new(
      :modification_state,
      :dedicated_tenancy_support,
      :dedicated_tenancy_management_cidr_range,
      :start_time,
      :error_code,
      :error_message)
      SENSITIVE = []
      include Aws::Structure
    end

    # Information about the Active Directory config.
    #
    # @!attribute [rw] domain_name
    #   The name of the domain.
    #   @return [String]
    #
    # @!attribute [rw] service_account_secret_arn
    #   Indicates the secret ARN on the service account.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ActiveDirectoryConfig AWS API Documentation
    #
    class ActiveDirectoryConfig < Struct.new(
      :domain_name,
      :service_account_secret_arn)
      SENSITIVE = []
      include Aws::Structure
    end

    # The specified application is not supported.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ApplicationNotSupportedException AWS API Documentation
    #
    class ApplicationNotSupportedException < Aws::EmptyStructure; end

    # Describes the association between an application and an application
    # resource.
    #
    # @!attribute [rw] application_id
    #   The identifier of the application.
    #   @return [String]
    #
    # @!attribute [rw] associated_resource_id
    #   The identifier of the associated resource.
    #   @return [String]
    #
    # @!attribute [rw] associated_resource_type
    #   The resource type of the associated resource.
    #   @return [String]
    #
    # @!attribute [rw] created
    #   The time the association was created.
    #   @return [Time]
    #
    # @!attribute [rw] last_updated_time
    #   The time the association status was last updated.
    #   @return [Time]
    #
    # @!attribute [rw] state
    #   The status of the application resource association.
    #   @return [String]
    #
    # @!attribute [rw] state_reason
    #   The reason the association deployment failed.
    #   @return [Types::AssociationStateReason]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ApplicationResourceAssociation AWS API Documentation
    #
    class ApplicationResourceAssociation < Struct.new(
      :application_id,
      :associated_resource_id,
      :associated_resource_type,
      :created,
      :last_updated_time,
      :state,
      :state_reason)
      SENSITIVE = []
      include Aws::Structure
    end

    # The persistent application settings for WorkSpaces Pools users.
    #
    # @!attribute [rw] status
    #   Enables or disables persistent application settings for users during
    #   their pool sessions.
    #   @return [String]
    #
    # @!attribute [rw] settings_group
    #   The path prefix for the S3 bucket where users’ persistent
    #   application settings are stored. You can allow the same persistent
    #   application settings to be used across multiple pools by specifying
    #   the same settings group for each pool.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ApplicationSettingsRequest AWS API Documentation
    #
    class ApplicationSettingsRequest < Struct.new(
      :status,
      :settings_group)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the persistent application settings for WorkSpaces Pools
    # users.
    #
    # @!attribute [rw] status
    #   Specifies whether persistent application settings are enabled for
    #   users during their pool sessions.
    #   @return [String]
    #
    # @!attribute [rw] settings_group
    #   The path prefix for the S3 bucket where users’ persistent
    #   application settings are stored.
    #   @return [String]
    #
    # @!attribute [rw] s3_bucket_name
    #   The S3 bucket where users’ persistent application settings are
    #   stored. When persistent application settings are enabled for the
    #   first time for an account in an Amazon Web Services Region, an S3
    #   bucket is created. The bucket is unique to the Amazon Web Services
    #   account and the Region.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ApplicationSettingsResponse AWS API Documentation
    #
    class ApplicationSettingsResponse < Struct.new(
      :status,
      :settings_group,
      :s3_bucket_name)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] alias_id
    #   The identifier of the connection alias.
    #   @return [String]
    #
    # @!attribute [rw] resource_id
    #   The identifier of the directory to associate the connection alias
    #   with.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/AssociateConnectionAliasRequest AWS API Documentation
    #
    class AssociateConnectionAliasRequest < Struct.new(
      :alias_id,
      :resource_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] connection_identifier
    #   The identifier of the connection alias association. You use the
    #   connection identifier in the DNS TXT record when you're configuring
    #   your DNS routing policies.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/AssociateConnectionAliasResult AWS API Documentation
    #
    class AssociateConnectionAliasResult < Struct.new(
      :connection_identifier)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] directory_id
    #   The identifier of the directory.
    #   @return [String]
    #
    # @!attribute [rw] group_ids
    #   The identifiers of one or more IP access control groups.
    #   @return [Array<String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/AssociateIpGroupsRequest AWS API Documentation
    #
    class AssociateIpGroupsRequest < Struct.new(
      :directory_id,
      :group_ids)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/AssociateIpGroupsResult AWS API Documentation
    #
    class AssociateIpGroupsResult < Aws::EmptyStructure; end

    # @!attribute [rw] workspace_id
    #   The identifier of the WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] application_id
    #   The identifier of the application.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/AssociateWorkspaceApplicationRequest AWS API Documentation
    #
    class AssociateWorkspaceApplicationRequest < Struct.new(
      :workspace_id,
      :application_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] association
    #   Information about the association between the specified WorkSpace
    #   and the specified application.
    #   @return [Types::WorkspaceResourceAssociation]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/AssociateWorkspaceApplicationResult AWS API Documentation
    #
    class AssociateWorkspaceApplicationResult < Struct.new(
      :association)
      SENSITIVE = []
      include Aws::Structure
    end

    # Indicates the reason that the association deployment failed, including
    # the error code and error message.
    #
    # @!attribute [rw] error_code
    #   The error code of the association deployment failure.
    #   @return [String]
    #
    # @!attribute [rw] error_message
    #   The error message of the association deployment failure.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/AssociationStateReason AWS API Documentation
    #
    class AssociationStateReason < Struct.new(
      :error_code,
      :error_message)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] group_id
    #   The identifier of the group.
    #   @return [String]
    #
    # @!attribute [rw] user_rules
    #   The rules to add to the group.
    #   @return [Array<Types::IpRuleItem>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/AuthorizeIpRulesRequest AWS API Documentation
    #
    class AuthorizeIpRulesRequest < Struct.new(
      :group_id,
      :user_rules)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/AuthorizeIpRulesResult AWS API Documentation
    #
    class AuthorizeIpRulesResult < Aws::EmptyStructure; end

    # Describes the association between an application and a bundle
    # resource.
    #
    # @!attribute [rw] associated_resource_id
    #   The identifier of the associated resource.
    #   @return [String]
    #
    # @!attribute [rw] associated_resource_type
    #   The resource type of the associated resources.
    #   @return [String]
    #
    # @!attribute [rw] bundle_id
    #   The identifier of the bundle.
    #   @return [String]
    #
    # @!attribute [rw] created
    #   The time the association is created.
    #   @return [Time]
    #
    # @!attribute [rw] last_updated_time
    #   The time the association status was last updated.
    #   @return [Time]
    #
    # @!attribute [rw] state
    #   The status of the bundle resource association.
    #   @return [String]
    #
    # @!attribute [rw] state_reason
    #   The reason the association deployment failed.
    #   @return [Types::AssociationStateReason]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/BundleResourceAssociation AWS API Documentation
    #
    class BundleResourceAssociation < Struct.new(
      :associated_resource_id,
      :associated_resource_type,
      :bundle_id,
      :created,
      :last_updated_time,
      :state,
      :state_reason)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the user capacity for a pool of WorkSpaces.
    #
    # @!attribute [rw] desired_user_sessions
    #   The desired number of user sessions for the WorkSpaces in the pool.
    #   @return [Integer]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/Capacity AWS API Documentation
    #
    class Capacity < Struct.new(
      :desired_user_sessions)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the capacity status for a pool of WorkSpaces.
    #
    # @!attribute [rw] available_user_sessions
    #   The number of user sessions currently available for streaming from
    #   your pool.
    #
    #   AvailableUserSessions = ActualUserSessions - ActiveUserSessions
    #   @return [Integer]
    #
    # @!attribute [rw] desired_user_sessions
    #   The total number of sessions slots that are either running or
    #   pending. This represents the total number of concurrent streaming
    #   sessions your pool can support in a steady state.
    #   @return [Integer]
    #
    # @!attribute [rw] actual_user_sessions
    #   The total number of user sessions that are available for streaming
    #   or are currently streaming in your pool.
    #
    #   ActualUserSessions = AvailableUserSessions + ActiveUserSessions
    #   @return [Integer]
    #
    # @!attribute [rw] active_user_sessions
    #   The number of user sessions currently being used for your pool.
    #   @return [Integer]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CapacityStatus AWS API Documentation
    #
    class CapacityStatus < Struct.new(
      :available_user_sessions,
      :desired_user_sessions,
      :actual_user_sessions,
      :active_user_sessions)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the properties of the certificate-based authentication you
    # want to use with your WorkSpaces.
    #
    # @!attribute [rw] status
    #   The status of the certificate-based authentication properties.
    #   @return [String]
    #
    # @!attribute [rw] certificate_authority_arn
    #   The Amazon Resource Name (ARN) of the Amazon Web Services
    #   Certificate Manager Private CA resource.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CertificateBasedAuthProperties AWS API Documentation
    #
    class CertificateBasedAuthProperties < Struct.new(
      :status,
      :certificate_authority_arn)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes an Amazon WorkSpaces client.
    #
    # @!attribute [rw] reconnect_enabled
    #   Specifies whether users can cache their credentials on the Amazon
    #   WorkSpaces client. When enabled, users can choose to reconnect to
    #   their WorkSpaces without re-entering their credentials.
    #   @return [String]
    #
    # @!attribute [rw] log_upload_enabled
    #   Specifies whether users can upload diagnostic log files of Amazon
    #   WorkSpaces client directly to WorkSpaces to troubleshoot issues when
    #   using the WorkSpaces client. When enabled, the log files will be
    #   sent to WorkSpaces automatically and will be applied to all users in
    #   the specified directory.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ClientProperties AWS API Documentation
    #
    class ClientProperties < Struct.new(
      :reconnect_enabled,
      :log_upload_enabled)
      SENSITIVE = []
      include Aws::Structure
    end

    # Information about the Amazon WorkSpaces client.
    #
    # @!attribute [rw] resource_id
    #   The resource identifier, in the form of a directory ID.
    #   @return [String]
    #
    # @!attribute [rw] client_properties
    #   Information about the Amazon WorkSpaces client.
    #   @return [Types::ClientProperties]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ClientPropertiesResult AWS API Documentation
    #
    class ClientPropertiesResult < Struct.new(
      :resource_id,
      :client_properties)
      SENSITIVE = []
      include Aws::Structure
    end

    # The compute type of the WorkSpace is not compatible with the
    # application.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ComputeNotCompatibleException AWS API Documentation
    #
    class ComputeNotCompatibleException < Aws::EmptyStructure; end

    # Describes the compute type of the bundle.
    #
    # @!attribute [rw] name
    #   The compute type.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ComputeType AWS API Documentation
    #
    class ComputeType < Struct.new(
      :name)
      SENSITIVE = []
      include Aws::Structure
    end

    # The `TargetAccountId` is already linked or invited.
    #
    # @!attribute [rw] message
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ConflictException AWS API Documentation
    #
    class ConflictException < Struct.new(
      :message)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes an Amazon Connect client add-in.
    #
    # @!attribute [rw] add_in_id
    #   The client add-in identifier.
    #   @return [String]
    #
    # @!attribute [rw] resource_id
    #   The directory identifier for which the client add-in is configured.
    #   @return [String]
    #
    # @!attribute [rw] name
    #   The name of the client add in.
    #   @return [String]
    #
    # @!attribute [rw] url
    #   The endpoint URL of the client add-in.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ConnectClientAddIn AWS API Documentation
    #
    class ConnectClientAddIn < Struct.new(
      :add_in_id,
      :resource_id,
      :name,
      :url)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes a connection alias. Connection aliases are used for
    # cross-Region redirection. For more information, see [ Cross-Region
    # Redirection for Amazon WorkSpaces][1].
    #
    #
    #
    # [1]: https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html
    #
    # @!attribute [rw] connection_string
    #   The connection string specified for the connection alias. The
    #   connection string must be in the form of a fully qualified domain
    #   name (FQDN), such as `www.example.com`.
    #   @return [String]
    #
    # @!attribute [rw] alias_id
    #   The identifier of the connection alias.
    #   @return [String]
    #
    # @!attribute [rw] state
    #   The current state of the connection alias.
    #   @return [String]
    #
    # @!attribute [rw] owner_account_id
    #   The identifier of the Amazon Web Services account that owns the
    #   connection alias.
    #   @return [String]
    #
    # @!attribute [rw] associations
    #   The association status of the connection alias.
    #   @return [Array<Types::ConnectionAliasAssociation>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ConnectionAlias AWS API Documentation
    #
    class ConnectionAlias < Struct.new(
      :connection_string,
      :alias_id,
      :state,
      :owner_account_id,
      :associations)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes a connection alias association that is used for cross-Region
    # redirection. For more information, see [ Cross-Region Redirection for
    # Amazon WorkSpaces][1].
    #
    #
    #
    # [1]: https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html
    #
    # @!attribute [rw] association_status
    #   The association status of the connection alias.
    #   @return [String]
    #
    # @!attribute [rw] associated_account_id
    #   The identifier of the Amazon Web Services account that associated
    #   the connection alias with a directory.
    #   @return [String]
    #
    # @!attribute [rw] resource_id
    #   The identifier of the directory associated with a connection alias.
    #   @return [String]
    #
    # @!attribute [rw] connection_identifier
    #   The identifier of the connection alias association. You use the
    #   connection identifier in the DNS TXT record when you're configuring
    #   your DNS routing policies.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ConnectionAliasAssociation AWS API Documentation
    #
    class ConnectionAliasAssociation < Struct.new(
      :association_status,
      :associated_account_id,
      :resource_id,
      :connection_identifier)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the permissions for a connection alias. Connection aliases
    # are used for cross-Region redirection. For more information, see [
    # Cross-Region Redirection for Amazon WorkSpaces][1].
    #
    #
    #
    # [1]: https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html
    #
    # @!attribute [rw] shared_account_id
    #   The identifier of the Amazon Web Services account that the
    #   connection alias is shared with.
    #   @return [String]
    #
    # @!attribute [rw] allow_association
    #   Indicates whether the specified Amazon Web Services account is
    #   allowed to associate the connection alias with a directory.
    #   @return [Boolean]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ConnectionAliasPermission AWS API Documentation
    #
    class ConnectionAliasPermission < Struct.new(
      :shared_account_id,
      :allow_association)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] name
    #   The name of the image.
    #   @return [String]
    #
    # @!attribute [rw] description
    #   A description of the image.
    #   @return [String]
    #
    # @!attribute [rw] source_image_id
    #   The identifier of the source image.
    #   @return [String]
    #
    # @!attribute [rw] source_region
    #   The identifier of the source Region.
    #   @return [String]
    #
    # @!attribute [rw] tags
    #   The tags for the image.
    #   @return [Array<Types::Tag>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CopyWorkspaceImageRequest AWS API Documentation
    #
    class CopyWorkspaceImageRequest < Struct.new(
      :name,
      :description,
      :source_image_id,
      :source_region,
      :tags)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] image_id
    #   The identifier of the image.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CopyWorkspaceImageResult AWS API Documentation
    #
    class CopyWorkspaceImageResult < Struct.new(
      :image_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] target_account_id
    #   The identifier of the target account.
    #   @return [String]
    #
    # @!attribute [rw] client_token
    #   A string of up to 64 ASCII characters that Amazon WorkSpaces uses to
    #   ensure idempotent creation.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateAccountLinkInvitationRequest AWS API Documentation
    #
    class CreateAccountLinkInvitationRequest < Struct.new(
      :target_account_id,
      :client_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] account_link
    #   Information about the account link.
    #   @return [Types::AccountLink]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateAccountLinkInvitationResult AWS API Documentation
    #
    class CreateAccountLinkInvitationResult < Struct.new(
      :account_link)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] resource_id
    #   The directory identifier for which to configure the client add-in.
    #   @return [String]
    #
    # @!attribute [rw] name
    #   The name of the client add-in.
    #   @return [String]
    #
    # @!attribute [rw] url
    #   The endpoint URL of the Amazon Connect client add-in.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateConnectClientAddInRequest AWS API Documentation
    #
    class CreateConnectClientAddInRequest < Struct.new(
      :resource_id,
      :name,
      :url)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] add_in_id
    #   The client add-in identifier.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateConnectClientAddInResult AWS API Documentation
    #
    class CreateConnectClientAddInResult < Struct.new(
      :add_in_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] connection_string
    #   A connection string in the form of a fully qualified domain name
    #   (FQDN), such as `www.example.com`.
    #
    #   After you create a connection string, it is always associated to
    #   your Amazon Web Services account. You cannot recreate the same
    #   connection string with a different account, even if you delete all
    #   instances of it from the original account. The connection string is
    #   globally reserved for your account.
    #   @return [String]
    #
    # @!attribute [rw] tags
    #   The tags to associate with the connection alias.
    #   @return [Array<Types::Tag>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateConnectionAliasRequest AWS API Documentation
    #
    class CreateConnectionAliasRequest < Struct.new(
      :connection_string,
      :tags)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] alias_id
    #   The identifier of the connection alias.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateConnectionAliasResult AWS API Documentation
    #
    class CreateConnectionAliasResult < Struct.new(
      :alias_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] group_name
    #   The name of the group.
    #   @return [String]
    #
    # @!attribute [rw] group_desc
    #   The description of the group.
    #   @return [String]
    #
    # @!attribute [rw] user_rules
    #   The rules to add to the group.
    #   @return [Array<Types::IpRuleItem>]
    #
    # @!attribute [rw] tags
    #   The tags. Each WorkSpaces resource can have a maximum of 50 tags.
    #   @return [Array<Types::Tag>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateIpGroupRequest AWS API Documentation
    #
    class CreateIpGroupRequest < Struct.new(
      :group_name,
      :group_desc,
      :user_rules,
      :tags)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] group_id
    #   The identifier of the group.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateIpGroupResult AWS API Documentation
    #
    class CreateIpGroupResult < Struct.new(
      :group_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] primary_region
    #   The Region of the primary WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] standby_workspaces
    #   Information about the standby WorkSpace to be created.
    #   @return [Array<Types::StandbyWorkspace>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateStandbyWorkspacesRequest AWS API Documentation
    #
    class CreateStandbyWorkspacesRequest < Struct.new(
      :primary_region,
      :standby_workspaces)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] failed_standby_requests
    #   Information about the standby WorkSpace that could not be created.
    #   @return [Array<Types::FailedCreateStandbyWorkspacesRequest>]
    #
    # @!attribute [rw] pending_standby_requests
    #   Information about the standby WorkSpace that was created.
    #   @return [Array<Types::PendingCreateStandbyWorkspacesRequest>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateStandbyWorkspacesResult AWS API Documentation
    #
    class CreateStandbyWorkspacesResult < Struct.new(
      :failed_standby_requests,
      :pending_standby_requests)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] resource_id
    #   The identifier of the WorkSpaces resource. The supported resource
    #   types are WorkSpaces, registered directories, images, custom
    #   bundles, IP access control groups, and connection aliases.
    #   @return [String]
    #
    # @!attribute [rw] tags
    #   The tags. Each WorkSpaces resource can have a maximum of 50 tags.
    #   @return [Array<Types::Tag>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateTagsRequest AWS API Documentation
    #
    class CreateTagsRequest < Struct.new(
      :resource_id,
      :tags)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateTagsResult AWS API Documentation
    #
    class CreateTagsResult < Aws::EmptyStructure; end

    # @!attribute [rw] name
    #   The name of the new updated WorkSpace image.
    #   @return [String]
    #
    # @!attribute [rw] description
    #   A description of whether updates for the WorkSpace image are
    #   available.
    #   @return [String]
    #
    # @!attribute [rw] source_image_id
    #   The identifier of the source WorkSpace image.
    #   @return [String]
    #
    # @!attribute [rw] tags
    #   The tags that you want to add to the new updated WorkSpace image.
    #
    #   <note markdown="1"> To add tags at the same time when you're creating the updated
    #   image, you must create an IAM policy that grants your IAM user
    #   permissions to use `workspaces:CreateTags`.
    #
    #    </note>
    #   @return [Array<Types::Tag>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateUpdatedWorkspaceImageRequest AWS API Documentation
    #
    class CreateUpdatedWorkspaceImageRequest < Struct.new(
      :name,
      :description,
      :source_image_id,
      :tags)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] image_id
    #   The identifier of the new updated WorkSpace image.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateUpdatedWorkspaceImageResult AWS API Documentation
    #
    class CreateUpdatedWorkspaceImageResult < Struct.new(
      :image_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] bundle_name
    #   The name of the bundle.
    #   @return [String]
    #
    # @!attribute [rw] bundle_description
    #   The description of the bundle.
    #   @return [String]
    #
    # @!attribute [rw] image_id
    #   The identifier of the image that is used to create the bundle.
    #   @return [String]
    #
    # @!attribute [rw] compute_type
    #   Describes the compute type of the bundle.
    #   @return [Types::ComputeType]
    #
    # @!attribute [rw] user_storage
    #   Describes the user volume for a WorkSpace bundle.
    #   @return [Types::UserStorage]
    #
    # @!attribute [rw] root_storage
    #   Describes the root volume for a WorkSpace bundle.
    #   @return [Types::RootStorage]
    #
    # @!attribute [rw] tags
    #   The tags associated with the bundle.
    #
    #   <note markdown="1"> To add tags at the same time when you're creating the bundle, you
    #   must create an IAM policy that grants your IAM user permissions to
    #   use `workspaces:CreateTags`.
    #
    #    </note>
    #   @return [Array<Types::Tag>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateWorkspaceBundleRequest AWS API Documentation
    #
    class CreateWorkspaceBundleRequest < Struct.new(
      :bundle_name,
      :bundle_description,
      :image_id,
      :compute_type,
      :user_storage,
      :root_storage,
      :tags)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] workspace_bundle
    #   Describes a WorkSpace bundle.
    #   @return [Types::WorkspaceBundle]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateWorkspaceBundleResult AWS API Documentation
    #
    class CreateWorkspaceBundleResult < Struct.new(
      :workspace_bundle)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] name
    #   The name of the new WorkSpace image.
    #   @return [String]
    #
    # @!attribute [rw] description
    #   The description of the new WorkSpace image.
    #   @return [String]
    #
    # @!attribute [rw] workspace_id
    #   The identifier of the source WorkSpace
    #   @return [String]
    #
    # @!attribute [rw] tags
    #   The tags that you want to add to the new WorkSpace image. To add
    #   tags when you're creating the image, you must create an IAM policy
    #   that grants your IAM user permission to use `workspaces:CreateTags`.
    #   @return [Array<Types::Tag>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateWorkspaceImageRequest AWS API Documentation
    #
    class CreateWorkspaceImageRequest < Struct.new(
      :name,
      :description,
      :workspace_id,
      :tags)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] image_id
    #   The identifier of the new WorkSpace image.
    #   @return [String]
    #
    # @!attribute [rw] name
    #   The name of the image.
    #   @return [String]
    #
    # @!attribute [rw] description
    #   The description of the image.
    #   @return [String]
    #
    # @!attribute [rw] operating_system
    #   The operating system that the image is running.
    #   @return [Types::OperatingSystem]
    #
    # @!attribute [rw] state
    #   The availability status of the image.
    #   @return [String]
    #
    # @!attribute [rw] required_tenancy
    #   Specifies whether the image is running on dedicated hardware. When
    #   Bring Your Own License (BYOL) is enabled, this value is set to
    #   DEDICATED. For more information, see [ Bring Your Own Windows
    #   Desktop Images.][1].
    #
    #
    #
    #   [1]: https://docs.aws.amazon.com/workspaces/latest/adminguide/byol-windows-images.htm
    #   @return [String]
    #
    # @!attribute [rw] created
    #   The date when the image was created.
    #   @return [Time]
    #
    # @!attribute [rw] owner_account_id
    #   The identifier of the Amazon Web Services account that owns the
    #   image.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateWorkspaceImageResult AWS API Documentation
    #
    class CreateWorkspaceImageResult < Struct.new(
      :image_id,
      :name,
      :description,
      :operating_system,
      :state,
      :required_tenancy,
      :created,
      :owner_account_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] pool_name
    #   The name of the pool.
    #   @return [String]
    #
    # @!attribute [rw] description
    #   The pool description.
    #   @return [String]
    #
    # @!attribute [rw] bundle_id
    #   The identifier of the bundle for the pool.
    #   @return [String]
    #
    # @!attribute [rw] directory_id
    #   The identifier of the directory for the pool.
    #   @return [String]
    #
    # @!attribute [rw] capacity
    #   The user capacity of the pool.
    #   @return [Types::Capacity]
    #
    # @!attribute [rw] tags
    #   The tags for the pool.
    #   @return [Array<Types::Tag>]
    #
    # @!attribute [rw] application_settings
    #   Indicates the application settings of the pool.
    #   @return [Types::ApplicationSettingsRequest]
    #
    # @!attribute [rw] timeout_settings
    #   Indicates the timeout settings of the pool.
    #   @return [Types::TimeoutSettings]
    #
    # @!attribute [rw] running_mode
    #   The running mode for the pool.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateWorkspacesPoolRequest AWS API Documentation
    #
    class CreateWorkspacesPoolRequest < Struct.new(
      :pool_name,
      :description,
      :bundle_id,
      :directory_id,
      :capacity,
      :tags,
      :application_settings,
      :timeout_settings,
      :running_mode)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] workspaces_pool
    #   Indicates the pool to create.
    #   @return [Types::WorkspacesPool]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateWorkspacesPoolResult AWS API Documentation
    #
    class CreateWorkspacesPoolResult < Struct.new(
      :workspaces_pool)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] workspaces
    #   The WorkSpaces to create. You can specify up to 25 WorkSpaces.
    #   @return [Array<Types::WorkspaceRequest>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateWorkspacesRequest AWS API Documentation
    #
    class CreateWorkspacesRequest < Struct.new(
      :workspaces)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] failed_requests
    #   Information about the WorkSpaces that could not be created.
    #   @return [Array<Types::FailedCreateWorkspaceRequest>]
    #
    # @!attribute [rw] pending_requests
    #   Information about the WorkSpaces that were created.
    #
    #   Because this operation is asynchronous, the identifier returned is
    #   not immediately available for use with other operations. For
    #   example, if you call DescribeWorkspaces before the WorkSpace is
    #   created, the information returned can be incomplete.
    #   @return [Array<Types::Workspace>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateWorkspacesResult AWS API Documentation
    #
    class CreateWorkspacesResult < Struct.new(
      :failed_requests,
      :pending_requests)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes in-depth details about the error. These details include the
    # possible causes of the error and troubleshooting information.
    #
    # @!attribute [rw] error_code
    #   The error code that is returned for the image import.
    #   @return [String]
    #
    # @!attribute [rw] error_message
    #   The text of the error message that is returned for the image import.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CustomWorkspaceImageImportErrorDetails AWS API Documentation
    #
    class CustomWorkspaceImageImportErrorDetails < Struct.new(
      :error_code,
      :error_message)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the data replication settings.
    #
    # @!attribute [rw] data_replication
    #   Indicates whether data replication is enabled, and if enabled, the
    #   type of data replication.
    #   @return [String]
    #
    # @!attribute [rw] recovery_snapshot_time
    #   The date and time at which the last successful snapshot was taken of
    #   the primary WorkSpace used for replicating data.
    #   @return [Time]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DataReplicationSettings AWS API Documentation
    #
    class DataReplicationSettings < Struct.new(
      :data_replication,
      :recovery_snapshot_time)
      SENSITIVE = []
      include Aws::Structure
    end

    # Returns default client branding attributes that were imported. These
    # attributes display on the client login screen.
    #
    # Client branding attributes are public facing. Ensure that you don't
    # include sensitive information.
    #
    # @!attribute [rw] logo_url
    #   The logo. The only image format accepted is a binary data object
    #   that is converted from a `.png` file.
    #   @return [String]
    #
    # @!attribute [rw] support_email
    #   The support email. The company's customer support email address.
    #
    #   <note markdown="1"> * In each platform type, the `SupportEmail` and `SupportLink`
    #     parameters are mutually exclusive. You can specify one parameter
    #     for each platform type, but not both.
    #
    #   * The default email is `workspaces-feedback@amazon.com`.
    #
    #    </note>
    #   @return [String]
    #
    # @!attribute [rw] support_link
    #   The support link. The link for the company's customer support page
    #   for their WorkSpace.
    #
    #   <note markdown="1"> * In each platform type, the `SupportEmail` and `SupportLink`
    #     parameters are mutually exclusive.You can specify one parameter
    #     for each platform type, but not both.
    #
    #   * The default support link is `workspaces-feedback@amazon.com`.
    #
    #    </note>
    #   @return [String]
    #
    # @!attribute [rw] forgot_password_link
    #   The forgotten password link. This is the web address that users can
    #   go to if they forget the password for their WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] login_message
    #   The login message. Specified as a key value pair, in which the key
    #   is a locale and the value is the localized message for that locale.
    #   The only key supported is `en_US`. The HTML tags supported include
    #   the following: `a, b, blockquote, br, cite, code, dd, dl, dt, div,
    #   em, i, li, ol, p, pre, q, small, span, strike, strong, sub, sup, u,
    #   ul`.
    #   @return [Hash<String,String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DefaultClientBrandingAttributes AWS API Documentation
    #
    class DefaultClientBrandingAttributes < Struct.new(
      :logo_url,
      :support_email,
      :support_link,
      :forgot_password_link,
      :login_message)
      SENSITIVE = []
      include Aws::Structure
    end

    # The default client branding attributes to be imported. These
    # attributes display on the client login screen.
    #
    # Client branding attributes are public facing. Ensure that you do not
    # include sensitive information.
    #
    # @!attribute [rw] logo
    #   The logo. The only image format accepted is a binary data object
    #   that is converted from a `.png` file.
    #   @return [String]
    #
    # @!attribute [rw] support_email
    #   The support email. The company's customer support email address.
    #
    #   <note markdown="1"> * In each platform type, the `SupportEmail` and `SupportLink`
    #     parameters are mutually exclusive. You can specify one parameter
    #     for each platform type, but not both.
    #
    #   * The default email is `workspaces-feedback@amazon.com`.
    #
    #    </note>
    #   @return [String]
    #
    # @!attribute [rw] support_link
    #   The support link. The link for the company's customer support page
    #   for their WorkSpace.
    #
    #   <note markdown="1"> * In each platform type, the `SupportEmail` and `SupportLink`
    #     parameters are mutually exclusive. You can specify one parameter
    #     for each platform type, but not both.
    #
    #   * The default support link is `workspaces-feedback@amazon.com`.
    #
    #    </note>
    #   @return [String]
    #
    # @!attribute [rw] forgot_password_link
    #   The forgotten password link. This is the web address that users can
    #   go to if they forget the password for their WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] login_message
    #   The login message. Specified as a key value pair, in which the key
    #   is a locale and the value is the localized message for that locale.
    #   The only key supported is `en_US`. The HTML tags supported include
    #   the following: `a, b, blockquote, br, cite, code, dd, dl, dt, div,
    #   em, i, li, ol, p, pre, q, small, span, strike, strong, sub, sup, u,
    #   ul`.
    #   @return [Hash<String,String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DefaultImportClientBrandingAttributes AWS API Documentation
    #
    class DefaultImportClientBrandingAttributes < Struct.new(
      :logo,
      :support_email,
      :support_link,
      :forgot_password_link,
      :login_message)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the default values that are used to create WorkSpaces. For
    # more information, see [Update Directory Details for Your
    # WorkSpaces][1].
    #
    #
    #
    # [1]: https://docs.aws.amazon.com/workspaces/latest/adminguide/update-directory-details.html
    #
    # @!attribute [rw] enable_internet_access
    #   Specifies whether to automatically assign an Elastic public IP
    #   address to WorkSpaces in this directory by default. If enabled, the
    #   Elastic public IP address allows outbound internet access from your
    #   WorkSpaces when you’re using an internet gateway in the Amazon VPC
    #   in which your WorkSpaces are located. If you're using a Network
    #   Address Translation (NAT) gateway for outbound internet access from
    #   your VPC, or if your WorkSpaces are in public subnets and you
    #   manually assign them Elastic IP addresses, you should disable this
    #   setting. This setting applies to new WorkSpaces that you launch or
    #   to existing WorkSpaces that you rebuild. For more information, see [
    #   Configure a VPC for Amazon WorkSpaces][1].
    #
    #
    #
    #   [1]: https://docs.aws.amazon.com/workspaces/latest/adminguide/amazon-workspaces-vpc.html
    #   @return [Boolean]
    #
    # @!attribute [rw] default_ou
    #   The organizational unit (OU) in the directory for the WorkSpace
    #   machine accounts.
    #   @return [String]
    #
    # @!attribute [rw] custom_security_group_id
    #   The identifier of the default security group to apply to WorkSpaces
    #   when they are created. For more information, see [ Security Groups
    #   for Your WorkSpaces][1].
    #
    #
    #
    #   [1]: https://docs.aws.amazon.com/workspaces/latest/adminguide/amazon-workspaces-security-groups.html
    #   @return [String]
    #
    # @!attribute [rw] user_enabled_as_local_administrator
    #   Specifies whether WorkSpace users are local administrators on their
    #   WorkSpaces.
    #   @return [Boolean]
    #
    # @!attribute [rw] enable_maintenance_mode
    #   Specifies whether maintenance mode is enabled for WorkSpaces. For
    #   more information, see [WorkSpace Maintenance][1].
    #
    #
    #
    #   [1]: https://docs.aws.amazon.com/workspaces/latest/adminguide/workspace-maintenance.html
    #   @return [Boolean]
    #
    # @!attribute [rw] instance_iam_role_arn
    #   Indicates the IAM role ARN of the instance.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DefaultWorkspaceCreationProperties AWS API Documentation
    #
    class DefaultWorkspaceCreationProperties < Struct.new(
      :enable_internet_access,
      :default_ou,
      :custom_security_group_id,
      :user_enabled_as_local_administrator,
      :enable_maintenance_mode,
      :instance_iam_role_arn)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] link_id
    #   The identifier of the account link.
    #   @return [String]
    #
    # @!attribute [rw] client_token
    #   A string of up to 64 ASCII characters that Amazon WorkSpaces uses to
    #   ensure idempotent creation.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteAccountLinkInvitationRequest AWS API Documentation
    #
    class DeleteAccountLinkInvitationRequest < Struct.new(
      :link_id,
      :client_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] account_link
    #   Information about the account link.
    #   @return [Types::AccountLink]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteAccountLinkInvitationResult AWS API Documentation
    #
    class DeleteAccountLinkInvitationResult < Struct.new(
      :account_link)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] resource_id
    #   The directory identifier of the WorkSpace for which you want to
    #   delete client branding.
    #   @return [String]
    #
    # @!attribute [rw] platforms
    #   The device type for which you want to delete client branding.
    #   @return [Array<String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteClientBrandingRequest AWS API Documentation
    #
    class DeleteClientBrandingRequest < Struct.new(
      :resource_id,
      :platforms)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteClientBrandingResult AWS API Documentation
    #
    class DeleteClientBrandingResult < Aws::EmptyStructure; end

    # @!attribute [rw] add_in_id
    #   The identifier of the client add-in to delete.
    #   @return [String]
    #
    # @!attribute [rw] resource_id
    #   The directory identifier for which the client add-in is configured.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteConnectClientAddInRequest AWS API Documentation
    #
    class DeleteConnectClientAddInRequest < Struct.new(
      :add_in_id,
      :resource_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteConnectClientAddInResult AWS API Documentation
    #
    class DeleteConnectClientAddInResult < Aws::EmptyStructure; end

    # @!attribute [rw] alias_id
    #   The identifier of the connection alias to delete.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteConnectionAliasRequest AWS API Documentation
    #
    class DeleteConnectionAliasRequest < Struct.new(
      :alias_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteConnectionAliasResult AWS API Documentation
    #
    class DeleteConnectionAliasResult < Aws::EmptyStructure; end

    # @!attribute [rw] group_id
    #   The identifier of the IP access control group.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteIpGroupRequest AWS API Documentation
    #
    class DeleteIpGroupRequest < Struct.new(
      :group_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteIpGroupResult AWS API Documentation
    #
    class DeleteIpGroupResult < Aws::EmptyStructure; end

    # @!attribute [rw] resource_id
    #   The identifier of the WorkSpaces resource. The supported resource
    #   types are WorkSpaces, registered directories, images, custom
    #   bundles, IP access control groups, and connection aliases.
    #   @return [String]
    #
    # @!attribute [rw] tag_keys
    #   The tag keys.
    #   @return [Array<String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteTagsRequest AWS API Documentation
    #
    class DeleteTagsRequest < Struct.new(
      :resource_id,
      :tag_keys)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteTagsResult AWS API Documentation
    #
    class DeleteTagsResult < Aws::EmptyStructure; end

    # @!attribute [rw] bundle_id
    #   The identifier of the bundle.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteWorkspaceBundleRequest AWS API Documentation
    #
    class DeleteWorkspaceBundleRequest < Struct.new(
      :bundle_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteWorkspaceBundleResult AWS API Documentation
    #
    class DeleteWorkspaceBundleResult < Aws::EmptyStructure; end

    # @!attribute [rw] image_id
    #   The identifier of the image.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteWorkspaceImageRequest AWS API Documentation
    #
    class DeleteWorkspaceImageRequest < Struct.new(
      :image_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteWorkspaceImageResult AWS API Documentation
    #
    class DeleteWorkspaceImageResult < Aws::EmptyStructure; end

    # @!attribute [rw] workspace_id
    #   The identifier of the WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] force
    #   Indicates whether the force flag is applied for the specified
    #   WorkSpace. When the force flag is enabled, it allows previously
    #   failed deployments to be retried.
    #   @return [Boolean]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeployWorkspaceApplicationsRequest AWS API Documentation
    #
    class DeployWorkspaceApplicationsRequest < Struct.new(
      :workspace_id,
      :force)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] deployment
    #   The list of deployed associations and information about them.
    #   @return [Types::WorkSpaceApplicationDeployment]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeployWorkspaceApplicationsResult AWS API Documentation
    #
    class DeployWorkspaceApplicationsResult < Struct.new(
      :deployment)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] directory_id
    #   The identifier of the directory. If any WorkSpaces are registered to
    #   this directory, you must remove them before you deregister the
    #   directory, or you will receive an OperationNotSupportedException
    #   error.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeregisterWorkspaceDirectoryRequest AWS API Documentation
    #
    class DeregisterWorkspaceDirectoryRequest < Struct.new(
      :directory_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeregisterWorkspaceDirectoryResult AWS API Documentation
    #
    class DeregisterWorkspaceDirectoryResult < Aws::EmptyStructure; end

    # @!attribute [rw] next_token
    #   If you received a `NextToken` from a previous call that was
    #   paginated, provide this token to receive the next set of results.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeAccountModificationsRequest AWS API Documentation
    #
    class DescribeAccountModificationsRequest < Struct.new(
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] account_modifications
    #   The list of modifications to the configuration of BYOL.
    #   @return [Array<Types::AccountModification>]
    #
    # @!attribute [rw] next_token
    #   The token to use to retrieve the next page of results. This value is
    #   null when there are no more results to return.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeAccountModificationsResult AWS API Documentation
    #
    class DescribeAccountModificationsResult < Struct.new(
      :account_modifications,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @api private
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeAccountRequest AWS API Documentation
    #
    class DescribeAccountRequest < Aws::EmptyStructure; end

    # @!attribute [rw] dedicated_tenancy_support
    #   The status of BYOL (whether BYOL is enabled or disabled).
    #   @return [String]
    #
    # @!attribute [rw] dedicated_tenancy_management_cidr_range
    #   The IP address range, specified as an IPv4 CIDR block, used for the
    #   management network interface.
    #
    #   The management network interface is connected to a secure Amazon
    #   WorkSpaces management network. It is used for interactive streaming
    #   of the WorkSpace desktop to Amazon WorkSpaces clients, and to allow
    #   Amazon WorkSpaces to manage the WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] dedicated_tenancy_account_type
    #   The type of linked account.
    #   @return [String]
    #
    # @!attribute [rw] message
    #   The text message to describe the status of BYOL.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeAccountResult AWS API Documentation
    #
    class DescribeAccountResult < Struct.new(
      :dedicated_tenancy_support,
      :dedicated_tenancy_management_cidr_range,
      :dedicated_tenancy_account_type,
      :message)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] max_results
    #   The maximum number of associations to return.
    #   @return [Integer]
    #
    # @!attribute [rw] next_token
    #   If you received a `NextToken` from a previous call that was
    #   paginated, provide this token to receive the next set of results.
    #   @return [String]
    #
    # @!attribute [rw] application_id
    #   The identifier of the specified application.
    #   @return [String]
    #
    # @!attribute [rw] associated_resource_types
    #   The resource type of the associated resources.
    #   @return [Array<String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeApplicationAssociationsRequest AWS API Documentation
    #
    class DescribeApplicationAssociationsRequest < Struct.new(
      :max_results,
      :next_token,
      :application_id,
      :associated_resource_types)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] associations
    #   List of associations and information about them.
    #   @return [Array<Types::ApplicationResourceAssociation>]
    #
    # @!attribute [rw] next_token
    #   If you received a `NextToken` from a previous call that was
    #   paginated, provide this token to receive the next set of results.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeApplicationAssociationsResult AWS API Documentation
    #
    class DescribeApplicationAssociationsResult < Struct.new(
      :associations,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] application_ids
    #   The identifiers of one or more applications.
    #   @return [Array<String>]
    #
    # @!attribute [rw] compute_type_names
    #   The compute types supported by the applications.
    #   @return [Array<String>]
    #
    # @!attribute [rw] license_type
    #   The license availability for the applications.
    #   @return [String]
    #
    # @!attribute [rw] operating_system_names
    #   The operating systems supported by the applications.
    #   @return [Array<String>]
    #
    # @!attribute [rw] owner
    #   The owner of the applications.
    #   @return [String]
    #
    # @!attribute [rw] max_results
    #   The maximum number of applications to return.
    #   @return [Integer]
    #
    # @!attribute [rw] next_token
    #   If you received a `NextToken` from a previous call that was
    #   paginated, provide this token to receive the next set of results.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeApplicationsRequest AWS API Documentation
    #
    class DescribeApplicationsRequest < Struct.new(
      :application_ids,
      :compute_type_names,
      :license_type,
      :operating_system_names,
      :owner,
      :max_results,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] applications
    #   List of information about the specified applications.
    #   @return [Array<Types::WorkSpaceApplication>]
    #
    # @!attribute [rw] next_token
    #   If you received a `NextToken` from a previous call that was
    #   paginated, provide this token to receive the next set of results.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeApplicationsResult AWS API Documentation
    #
    class DescribeApplicationsResult < Struct.new(
      :applications,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] bundle_id
    #   The identifier of the bundle.
    #   @return [String]
    #
    # @!attribute [rw] associated_resource_types
    #   The resource types of the associated resource.
    #   @return [Array<String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeBundleAssociationsRequest AWS API Documentation
    #
    class DescribeBundleAssociationsRequest < Struct.new(
      :bundle_id,
      :associated_resource_types)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] associations
    #   List of information about the specified associations.
    #   @return [Array<Types::BundleResourceAssociation>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeBundleAssociationsResult AWS API Documentation
    #
    class DescribeBundleAssociationsResult < Struct.new(
      :associations)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] resource_id
    #   The directory identifier of the WorkSpace for which you want to view
    #   client branding information.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeClientBrandingRequest AWS API Documentation
    #
    class DescribeClientBrandingRequest < Struct.new(
      :resource_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] device_type_windows
    #   The branding information for Windows devices.
    #   @return [Types::DefaultClientBrandingAttributes]
    #
    # @!attribute [rw] device_type_osx
    #   The branding information for macOS devices.
    #   @return [Types::DefaultClientBrandingAttributes]
    #
    # @!attribute [rw] device_type_android
    #   The branding information for Android devices.
    #   @return [Types::DefaultClientBrandingAttributes]
    #
    # @!attribute [rw] device_type_ios
    #   The branding information for iOS devices.
    #   @return [Types::IosClientBrandingAttributes]
    #
    # @!attribute [rw] device_type_linux
    #   The branding information for Linux devices.
    #   @return [Types::DefaultClientBrandingAttributes]
    #
    # @!attribute [rw] device_type_web
    #   The branding information for Web access.
    #   @return [Types::DefaultClientBrandingAttributes]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeClientBrandingResult AWS API Documentation
    #
    class DescribeClientBrandingResult < Struct.new(
      :device_type_windows,
      :device_type_osx,
      :device_type_android,
      :device_type_ios,
      :device_type_linux,
      :device_type_web)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] resource_ids
    #   The resource identifier, in the form of directory IDs.
    #   @return [Array<String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeClientPropertiesRequest AWS API Documentation
    #
    class DescribeClientPropertiesRequest < Struct.new(
      :resource_ids)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] client_properties_list
    #   Information about the specified Amazon WorkSpaces clients.
    #   @return [Array<Types::ClientPropertiesResult>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeClientPropertiesResult AWS API Documentation
    #
    class DescribeClientPropertiesResult < Struct.new(
      :client_properties_list)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] resource_id
    #   The directory identifier for which the client add-in is configured.
    #   @return [String]
    #
    # @!attribute [rw] next_token
    #   If you received a `NextToken` from a previous call that was
    #   paginated, provide this token to receive the next set of results.
    #   @return [String]
    #
    # @!attribute [rw] max_results
    #   The maximum number of items to return.
    #   @return [Integer]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeConnectClientAddInsRequest AWS API Documentation
    #
    class DescribeConnectClientAddInsRequest < Struct.new(
      :resource_id,
      :next_token,
      :max_results)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] add_ins
    #   Information about client add-ins.
    #   @return [Array<Types::ConnectClientAddIn>]
    #
    # @!attribute [rw] next_token
    #   The token to use to retrieve the next page of results. This value is
    #   null when there are no more results to return.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeConnectClientAddInsResult AWS API Documentation
    #
    class DescribeConnectClientAddInsResult < Struct.new(
      :add_ins,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] alias_id
    #   The identifier of the connection alias.
    #   @return [String]
    #
    # @!attribute [rw] next_token
    #   If you received a `NextToken` from a previous call that was
    #   paginated, provide this token to receive the next set of results.
    #   @return [String]
    #
    # @!attribute [rw] max_results
    #   The maximum number of results to return.
    #   @return [Integer]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeConnectionAliasPermissionsRequest AWS API Documentation
    #
    class DescribeConnectionAliasPermissionsRequest < Struct.new(
      :alias_id,
      :next_token,
      :max_results)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] alias_id
    #   The identifier of the connection alias.
    #   @return [String]
    #
    # @!attribute [rw] connection_alias_permissions
    #   The permissions associated with a connection alias.
    #   @return [Array<Types::ConnectionAliasPermission>]
    #
    # @!attribute [rw] next_token
    #   The token to use to retrieve the next page of results. This value is
    #   null when there are no more results to return.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeConnectionAliasPermissionsResult AWS API Documentation
    #
    class DescribeConnectionAliasPermissionsResult < Struct.new(
      :alias_id,
      :connection_alias_permissions,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] alias_ids
    #   The identifiers of the connection aliases to describe.
    #   @return [Array<String>]
    #
    # @!attribute [rw] resource_id
    #   The identifier of the directory associated with the connection
    #   alias.
    #   @return [String]
    #
    # @!attribute [rw] limit
    #   The maximum number of connection aliases to return.
    #   @return [Integer]
    #
    # @!attribute [rw] next_token
    #   If you received a `NextToken` from a previous call that was
    #   paginated, provide this token to receive the next set of results.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeConnectionAliasesRequest AWS API Documentation
    #
    class DescribeConnectionAliasesRequest < Struct.new(
      :alias_ids,
      :resource_id,
      :limit,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] connection_aliases
    #   Information about the specified connection aliases.
    #   @return [Array<Types::ConnectionAlias>]
    #
    # @!attribute [rw] next_token
    #   The token to use to retrieve the next page of results. This value is
    #   null when there are no more results to return.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeConnectionAliasesResult AWS API Documentation
    #
    class DescribeConnectionAliasesResult < Struct.new(
      :connection_aliases,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] image_id
    #   The identifier of the WorkSpace image.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeCustomWorkspaceImageImportRequest AWS API Documentation
    #
    class DescribeCustomWorkspaceImageImportRequest < Struct.new(
      :image_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] image_id
    #   The identifier of the WorkSpace image.
    #   @return [String]
    #
    # @!attribute [rw] infrastructure_configuration_arn
    #   The infrastructure configuration ARN that specifies how the
    #   WorkSpace image is built.
    #   @return [String]
    #
    # @!attribute [rw] state
    #   The state of the WorkSpace image.
    #   @return [String]
    #
    # @!attribute [rw] created
    #   The timestamp when the WorkSpace image import was created.
    #   @return [Time]
    #
    # @!attribute [rw] last_updated_time
    #   The timestamp when the WorkSpace image import was last updated.
    #   @return [Time]
    #
    # @!attribute [rw] image_source
    #   Describes the image import source.
    #   @return [Types::ImageSourceIdentifier]
    #
    # @!attribute [rw] image_builder_instance_id
    #   The image builder instance ID of the WorkSpace image.
    #   @return [String]
    #
    # @!attribute [rw] error_details
    #   Describes in-depth details about the error. These details include
    #   the possible causes of the error and troubleshooting information.
    #   @return [Array<Types::CustomWorkspaceImageImportErrorDetails>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeCustomWorkspaceImageImportResult AWS API Documentation
    #
    class DescribeCustomWorkspaceImageImportResult < Struct.new(
      :image_id,
      :infrastructure_configuration_arn,
      :state,
      :created,
      :last_updated_time,
      :image_source,
      :image_builder_instance_id,
      :error_details)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] image_id
    #   The identifier of the image.
    #   @return [String]
    #
    # @!attribute [rw] associated_resource_types
    #   The resource types of the associated resource.
    #   @return [Array<String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeImageAssociationsRequest AWS API Documentation
    #
    class DescribeImageAssociationsRequest < Struct.new(
      :image_id,
      :associated_resource_types)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] associations
    #   List of information about the specified associations.
    #   @return [Array<Types::ImageResourceAssociation>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeImageAssociationsResult AWS API Documentation
    #
    class DescribeImageAssociationsResult < Struct.new(
      :associations)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] group_ids
    #   The identifiers of one or more IP access control groups.
    #   @return [Array<String>]
    #
    # @!attribute [rw] next_token
    #   If you received a `NextToken` from a previous call that was
    #   paginated, provide this token to receive the next set of results.
    #   @return [String]
    #
    # @!attribute [rw] max_results
    #   The maximum number of items to return.
    #   @return [Integer]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeIpGroupsRequest AWS API Documentation
    #
    class DescribeIpGroupsRequest < Struct.new(
      :group_ids,
      :next_token,
      :max_results)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] result
    #   Information about the IP access control groups.
    #   @return [Array<Types::WorkspacesIpGroup>]
    #
    # @!attribute [rw] next_token
    #   The token to use to retrieve the next page of results. This value is
    #   null when there are no more results to return.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeIpGroupsResult AWS API Documentation
    #
    class DescribeIpGroupsResult < Struct.new(
      :result,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] resource_id
    #   The identifier of the WorkSpaces resource. The supported resource
    #   types are WorkSpaces, registered directories, images, custom
    #   bundles, IP access control groups, and connection aliases.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeTagsRequest AWS API Documentation
    #
    class DescribeTagsRequest < Struct.new(
      :resource_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] tag_list
    #   The tags.
    #   @return [Array<Types::Tag>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeTagsResult AWS API Documentation
    #
    class DescribeTagsResult < Struct.new(
      :tag_list)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] workspace_id
    #   The identifier of the WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] associated_resource_types
    #   The resource types of the associated resources.
    #   @return [Array<String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceAssociationsRequest AWS API Documentation
    #
    class DescribeWorkspaceAssociationsRequest < Struct.new(
      :workspace_id,
      :associated_resource_types)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] associations
    #   List of information about the specified associations.
    #   @return [Array<Types::WorkspaceResourceAssociation>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceAssociationsResult AWS API Documentation
    #
    class DescribeWorkspaceAssociationsResult < Struct.new(
      :associations)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] bundle_ids
    #   The identifiers of the bundles. You cannot combine this parameter
    #   with any other filter.
    #   @return [Array<String>]
    #
    # @!attribute [rw] owner
    #   The owner of the bundles. You cannot combine this parameter with any
    #   other filter.
    #
    #   To describe the bundles provided by Amazon Web Services, specify
    #   `AMAZON`. To describe the bundles that belong to your account,
    #   don't specify a value.
    #   @return [String]
    #
    # @!attribute [rw] next_token
    #   The token for the next set of results. (You received this token from
    #   a previous call.)
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceBundlesRequest AWS API Documentation
    #
    class DescribeWorkspaceBundlesRequest < Struct.new(
      :bundle_ids,
      :owner,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] bundles
    #   Information about the bundles.
    #   @return [Array<Types::WorkspaceBundle>]
    #
    # @!attribute [rw] next_token
    #   The token to use to retrieve the next page of results. This value is
    #   null when there are no more results to return. This token is valid
    #   for one day and must be used within that time frame.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceBundlesResult AWS API Documentation
    #
    class DescribeWorkspaceBundlesResult < Struct.new(
      :bundles,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the filter conditions for the WorkSpaces to return.
    #
    # @!attribute [rw] name
    #   The name of the WorkSpaces to filter.
    #   @return [String]
    #
    # @!attribute [rw] values
    #   The values for filtering WorkSpaces
    #   @return [Array<String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceDirectoriesFilter AWS API Documentation
    #
    class DescribeWorkspaceDirectoriesFilter < Struct.new(
      :name,
      :values)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] directory_ids
    #   The identifiers of the directories. If the value is null, all
    #   directories are retrieved.
    #   @return [Array<String>]
    #
    # @!attribute [rw] workspace_directory_names
    #   The names of the WorkSpace directories.
    #   @return [Array<String>]
    #
    # @!attribute [rw] limit
    #   The maximum number of directories to return.
    #   @return [Integer]
    #
    # @!attribute [rw] next_token
    #   If you received a `NextToken` from a previous call that was
    #   paginated, provide this token to receive the next set of results.
    #   @return [String]
    #
    # @!attribute [rw] filters
    #   The filter condition for the WorkSpaces.
    #   @return [Array<Types::DescribeWorkspaceDirectoriesFilter>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceDirectoriesRequest AWS API Documentation
    #
    class DescribeWorkspaceDirectoriesRequest < Struct.new(
      :directory_ids,
      :workspace_directory_names,
      :limit,
      :next_token,
      :filters)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] directories
    #   Information about the directories.
    #   @return [Array<Types::WorkspaceDirectory>]
    #
    # @!attribute [rw] next_token
    #   The token to use to retrieve the next page of results. This value is
    #   null when there are no more results to return.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceDirectoriesResult AWS API Documentation
    #
    class DescribeWorkspaceDirectoriesResult < Struct.new(
      :directories,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] image_id
    #   The identifier of the image.
    #   @return [String]
    #
    # @!attribute [rw] next_token
    #   If you received a `NextToken` from a previous call that was
    #   paginated, provide this token to receive the next set of results.
    #   @return [String]
    #
    # @!attribute [rw] max_results
    #   The maximum number of items to return.
    #   @return [Integer]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceImagePermissionsRequest AWS API Documentation
    #
    class DescribeWorkspaceImagePermissionsRequest < Struct.new(
      :image_id,
      :next_token,
      :max_results)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] image_id
    #   The identifier of the image.
    #   @return [String]
    #
    # @!attribute [rw] image_permissions
    #   The identifiers of the Amazon Web Services accounts that the image
    #   has been shared with.
    #   @return [Array<Types::ImagePermission>]
    #
    # @!attribute [rw] next_token
    #   The token to use to retrieve the next page of results. This value is
    #   null when there are no more results to return.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceImagePermissionsResult AWS API Documentation
    #
    class DescribeWorkspaceImagePermissionsResult < Struct.new(
      :image_id,
      :image_permissions,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] image_ids
    #   The identifier of the image.
    #   @return [Array<String>]
    #
    # @!attribute [rw] image_type
    #   The type (owned or shared) of the image.
    #   @return [String]
    #
    # @!attribute [rw] next_token
    #   If you received a `NextToken` from a previous call that was
    #   paginated, provide this token to receive the next set of results.
    #   @return [String]
    #
    # @!attribute [rw] max_results
    #   The maximum number of items to return.
    #   @return [Integer]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceImagesRequest AWS API Documentation
    #
    class DescribeWorkspaceImagesRequest < Struct.new(
      :image_ids,
      :image_type,
      :next_token,
      :max_results)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] images
    #   Information about the images.
    #   @return [Array<Types::WorkspaceImage>]
    #
    # @!attribute [rw] next_token
    #   The token to use to retrieve the next page of results. This value is
    #   null when there are no more results to return.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceImagesResult AWS API Documentation
    #
    class DescribeWorkspaceImagesResult < Struct.new(
      :images,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] workspace_id
    #   The identifier of the WorkSpace.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceSnapshotsRequest AWS API Documentation
    #
    class DescribeWorkspaceSnapshotsRequest < Struct.new(
      :workspace_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] rebuild_snapshots
    #   Information about the snapshots that can be used to rebuild a
    #   WorkSpace. These snapshots include the user volume.
    #   @return [Array<Types::Snapshot>]
    #
    # @!attribute [rw] restore_snapshots
    #   Information about the snapshots that can be used to restore a
    #   WorkSpace. These snapshots include both the root volume and the user
    #   volume.
    #   @return [Array<Types::Snapshot>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceSnapshotsResult AWS API Documentation
    #
    class DescribeWorkspaceSnapshotsResult < Struct.new(
      :rebuild_snapshots,
      :restore_snapshots)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] workspace_ids
    #   The identifiers of the WorkSpaces. You can specify up to 25
    #   WorkSpaces.
    #   @return [Array<String>]
    #
    # @!attribute [rw] next_token
    #   If you received a `NextToken` from a previous call that was
    #   paginated, provide this token to receive the next set of results.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspacesConnectionStatusRequest AWS API Documentation
    #
    class DescribeWorkspacesConnectionStatusRequest < Struct.new(
      :workspace_ids,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] workspaces_connection_status
    #   Information about the connection status of the WorkSpace.
    #   @return [Array<Types::WorkspaceConnectionStatus>]
    #
    # @!attribute [rw] next_token
    #   The token to use to retrieve the next page of results. This value is
    #   null when there are no more results to return.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspacesConnectionStatusResult AWS API Documentation
    #
    class DescribeWorkspacesConnectionStatusResult < Struct.new(
      :workspaces_connection_status,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] pool_id
    #   The identifier of the pool.
    #   @return [String]
    #
    # @!attribute [rw] user_id
    #   The identifier of the user.
    #   @return [String]
    #
    # @!attribute [rw] limit
    #   The maximum size of each page of results. The default value is 20
    #   and the maximum value is 50.
    #   @return [Integer]
    #
    # @!attribute [rw] next_token
    #   If you received a `NextToken` from a previous call that was
    #   paginated, provide this token to receive the next set of results.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspacesPoolSessionsRequest AWS API Documentation
    #
    class DescribeWorkspacesPoolSessionsRequest < Struct.new(
      :pool_id,
      :user_id,
      :limit,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] sessions
    #   Describes the pool sessions.
    #   @return [Array<Types::WorkspacesPoolSession>]
    #
    # @!attribute [rw] next_token
    #   If you received a `NextToken` from a previous call that was
    #   paginated, provide this token to receive the next set of results.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspacesPoolSessionsResult AWS API Documentation
    #
    class DescribeWorkspacesPoolSessionsResult < Struct.new(
      :sessions,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the filter conditions for WorkSpaces Pools to return.
    #
    # @!attribute [rw] name
    #   The name of the pool to filter.
    #   @return [String]
    #
    # @!attribute [rw] values
    #   The values for filtering WorkSpaces Pools.
    #   @return [Array<String>]
    #
    # @!attribute [rw] operator
    #   The operator values for filtering WorkSpaces Pools.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspacesPoolsFilter AWS API Documentation
    #
    class DescribeWorkspacesPoolsFilter < Struct.new(
      :name,
      :values,
      :operator)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] pool_ids
    #   The identifier of the WorkSpaces Pools.
    #   @return [Array<String>]
    #
    # @!attribute [rw] filters
    #   The filter conditions for the WorkSpaces Pool to return.
    #   @return [Array<Types::DescribeWorkspacesPoolsFilter>]
    #
    # @!attribute [rw] limit
    #   The maximum number of items to return.
    #   @return [Integer]
    #
    # @!attribute [rw] next_token
    #   If you received a `NextToken` from a previous call that was
    #   paginated, provide this token to receive the next set of results.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspacesPoolsRequest AWS API Documentation
    #
    class DescribeWorkspacesPoolsRequest < Struct.new(
      :pool_ids,
      :filters,
      :limit,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] workspaces_pools
    #   Information about the WorkSpaces Pools.
    #   @return [Array<Types::WorkspacesPool>]
    #
    # @!attribute [rw] next_token
    #   If you received a `NextToken` from a previous call that was
    #   paginated, provide this token to receive the next set of results.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspacesPoolsResult AWS API Documentation
    #
    class DescribeWorkspacesPoolsResult < Struct.new(
      :workspaces_pools,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] workspace_ids
    #   The identifiers of the WorkSpaces. You cannot combine this parameter
    #   with any other filter.
    #
    #   Because the CreateWorkspaces operation is asynchronous, the
    #   identifier it returns is not immediately available. If you
    #   immediately call DescribeWorkspaces with this identifier, no
    #   information is returned.
    #   @return [Array<String>]
    #
    # @!attribute [rw] directory_id
    #   The identifier of the directory. In addition, you can optionally
    #   specify a specific directory user (see `UserName`). You cannot
    #   combine this parameter with any other filter.
    #   @return [String]
    #
    # @!attribute [rw] user_name
    #   The name of the directory user. You must specify this parameter with
    #   `DirectoryId`.
    #   @return [String]
    #
    # @!attribute [rw] bundle_id
    #   The identifier of the bundle. All WorkSpaces that are created from
    #   this bundle are retrieved. You cannot combine this parameter with
    #   any other filter.
    #   @return [String]
    #
    # @!attribute [rw] limit
    #   The maximum number of items to return.
    #   @return [Integer]
    #
    # @!attribute [rw] next_token
    #   If you received a `NextToken` from a previous call that was
    #   paginated, provide this token to receive the next set of results.
    #   @return [String]
    #
    # @!attribute [rw] workspace_name
    #   The name of the user-decoupled WorkSpace.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspacesRequest AWS API Documentation
    #
    class DescribeWorkspacesRequest < Struct.new(
      :workspace_ids,
      :directory_id,
      :user_name,
      :bundle_id,
      :limit,
      :next_token,
      :workspace_name)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] workspaces
    #   Information about the WorkSpaces.
    #
    #   Because CreateWorkspaces is an asynchronous operation, some of the
    #   returned information could be incomplete.
    #   @return [Array<Types::Workspace>]
    #
    # @!attribute [rw] next_token
    #   The token to use to retrieve the next page of results. This value is
    #   null when there are no more results to return.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspacesResult AWS API Documentation
    #
    class DescribeWorkspacesResult < Struct.new(
      :workspaces,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] alias_id
    #   The identifier of the connection alias to disassociate.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DisassociateConnectionAliasRequest AWS API Documentation
    #
    class DisassociateConnectionAliasRequest < Struct.new(
      :alias_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DisassociateConnectionAliasResult AWS API Documentation
    #
    class DisassociateConnectionAliasResult < Aws::EmptyStructure; end

    # @!attribute [rw] directory_id
    #   The identifier of the directory.
    #   @return [String]
    #
    # @!attribute [rw] group_ids
    #   The identifiers of one or more IP access control groups.
    #   @return [Array<String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DisassociateIpGroupsRequest AWS API Documentation
    #
    class DisassociateIpGroupsRequest < Struct.new(
      :directory_id,
      :group_ids)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DisassociateIpGroupsResult AWS API Documentation
    #
    class DisassociateIpGroupsResult < Aws::EmptyStructure; end

    # @!attribute [rw] workspace_id
    #   The identifier of the WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] application_id
    #   The identifier of the application.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DisassociateWorkspaceApplicationRequest AWS API Documentation
    #
    class DisassociateWorkspaceApplicationRequest < Struct.new(
      :workspace_id,
      :application_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] association
    #   Information about the targeted association.
    #   @return [Types::WorkspaceResourceAssociation]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DisassociateWorkspaceApplicationResult AWS API Documentation
    #
    class DisassociateWorkspaceApplicationResult < Struct.new(
      :association)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes in-depth details about the error. These details include the
    # possible causes of the error and troubleshooting information.
    #
    # @!attribute [rw] error_code
    #   Indicates the error code returned.
    #   @return [String]
    #
    # @!attribute [rw] error_message
    #   The text of the error message related the error code.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ErrorDetails AWS API Documentation
    #
    class ErrorDetails < Struct.new(
      :error_code,
      :error_message)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the standby WorkSpace that could not be created.
    #
    # @!attribute [rw] standby_workspace_request
    #   Information about the standby WorkSpace that could not be created.
    #   @return [Types::StandbyWorkspace]
    #
    # @!attribute [rw] error_code
    #   The error code that is returned if the standby WorkSpace could not
    #   be created.
    #   @return [String]
    #
    # @!attribute [rw] error_message
    #   The text of the error message that is returned if the standby
    #   WorkSpace could not be created.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/FailedCreateStandbyWorkspacesRequest AWS API Documentation
    #
    class FailedCreateStandbyWorkspacesRequest < Struct.new(
      :standby_workspace_request,
      :error_code,
      :error_message)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes a WorkSpace that cannot be created.
    #
    # @!attribute [rw] workspace_request
    #   Information about the WorkSpace.
    #   @return [Types::WorkspaceRequest]
    #
    # @!attribute [rw] error_code
    #   The error code that is returned if the WorkSpace cannot be created.
    #   @return [String]
    #
    # @!attribute [rw] error_message
    #   The text of the error message that is returned if the WorkSpace
    #   cannot be created.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/FailedCreateWorkspaceRequest AWS API Documentation
    #
    class FailedCreateWorkspaceRequest < Struct.new(
      :workspace_request,
      :error_code,
      :error_message)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes a WorkSpace that could not be rebooted. (RebootWorkspaces),
    # rebuilt (RebuildWorkspaces), restored (RestoreWorkspace), terminated
    # (TerminateWorkspaces), started (StartWorkspaces), or stopped
    # (StopWorkspaces).
    #
    # @!attribute [rw] workspace_id
    #   The identifier of the WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] error_code
    #   The error code that is returned if the WorkSpace cannot be rebooted.
    #   @return [String]
    #
    # @!attribute [rw] error_message
    #   The text of the error message that is returned if the WorkSpace
    #   cannot be rebooted.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/FailedWorkspaceChangeRequest AWS API Documentation
    #
    class FailedWorkspaceChangeRequest < Struct.new(
      :workspace_id,
      :error_code,
      :error_message)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] link_id
    #   The identifier of the account to link.
    #   @return [String]
    #
    # @!attribute [rw] linked_account_id
    #   The identifier of the account link
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/GetAccountLinkRequest AWS API Documentation
    #
    class GetAccountLinkRequest < Struct.new(
      :link_id,
      :linked_account_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] account_link
    #   The account link of the account link to retrieve.
    #   @return [Types::AccountLink]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/GetAccountLinkResult AWS API Documentation
    #
    class GetAccountLinkResult < Struct.new(
      :account_link)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the Global Accelerator for directory
    #
    # @!attribute [rw] mode
    #   Indicates if Global Accelerator for directory is enabled or
    #   disabled.
    #   @return [String]
    #
    # @!attribute [rw] preferred_protocol
    #   Indicates the preferred protocol for Global Accelerator.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/GlobalAcceleratorForDirectory AWS API Documentation
    #
    class GlobalAcceleratorForDirectory < Struct.new(
      :mode,
      :preferred_protocol)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the Global Accelerator for WorkSpaces.
    #
    # @!attribute [rw] mode
    #   Indicates if Global Accelerator for WorkSpaces is enabled, disabled,
    #   or the same mode as the associated directory.
    #   @return [String]
    #
    # @!attribute [rw] preferred_protocol
    #   Indicates the preferred protocol for Global Accelerator.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/GlobalAcceleratorForWorkSpace AWS API Documentation
    #
    class GlobalAcceleratorForWorkSpace < Struct.new(
      :mode,
      :preferred_protocol)
      SENSITIVE = []
      include Aws::Structure
    end

    # Specifies the configurations of the identity center.
    #
    # @!attribute [rw] instance_arn
    #   The Amazon Resource Name (ARN) of the identity center instance.
    #   @return [String]
    #
    # @!attribute [rw] application_arn
    #   The Amazon Resource Name (ARN) of the application.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/IDCConfig AWS API Documentation
    #
    class IDCConfig < Struct.new(
      :instance_arn,
      :application_arn)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the Amazon Web Services accounts that have been granted
    # permission to use a shared image. For more information about sharing
    # images, see [ Share or Unshare a Custom WorkSpaces Image][1].
    #
    #
    #
    # [1]: https://docs.aws.amazon.com/workspaces/latest/adminguide/share-custom-image.html
    #
    # @!attribute [rw] shared_account_id
    #   The identifier of the Amazon Web Services account that an image has
    #   been shared with.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ImagePermission AWS API Documentation
    #
    class ImagePermission < Struct.new(
      :shared_account_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the association between an application and an image
    # resource.
    #
    # @!attribute [rw] associated_resource_id
    #   The identifier of the associated resource.
    #   @return [String]
    #
    # @!attribute [rw] associated_resource_type
    #   The resource type of the associated resources.
    #   @return [String]
    #
    # @!attribute [rw] created
    #   The time the association is created.
    #   @return [Time]
    #
    # @!attribute [rw] last_updated_time
    #   The time the association status was last updated.
    #   @return [Time]
    #
    # @!attribute [rw] image_id
    #   The identifier of the image.
    #   @return [String]
    #
    # @!attribute [rw] state
    #   The status of the image resource association.
    #   @return [String]
    #
    # @!attribute [rw] state_reason
    #   The reason the association deployment failed.
    #   @return [Types::AssociationStateReason]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ImageResourceAssociation AWS API Documentation
    #
    class ImageResourceAssociation < Struct.new(
      :associated_resource_id,
      :associated_resource_type,
      :created,
      :last_updated_time,
      :image_id,
      :state,
      :state_reason)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the image import source.
    #
    # @note ImageSourceIdentifier is a union - when making an API calls you must set exactly one of the members.
    #
    # @note ImageSourceIdentifier is a union - when returned from an API call exactly one value will be set and the returned type will be a subclass of ImageSourceIdentifier corresponding to the set member.
    #
    # @!attribute [rw] ec2_import_task_id
    #   The EC2 import task ID to import the image from the Amazon EC2 VM
    #   import process.
    #   @return [String]
    #
    # @!attribute [rw] image_build_version_arn
    #   The ARN of the EC2 Image Builder image.
    #   @return [String]
    #
    # @!attribute [rw] ec2_image_id
    #   The identifier of the EC2 image.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ImageSourceIdentifier AWS API Documentation
    #
    class ImageSourceIdentifier < Struct.new(
      :ec2_import_task_id,
      :image_build_version_arn,
      :ec2_image_id,
      :unknown)
      SENSITIVE = []
      include Aws::Structure
      include Aws::Structure::Union

      class Ec2ImportTaskId < ImageSourceIdentifier; end
      class ImageBuildVersionArn < ImageSourceIdentifier; end
      class Ec2ImageId < ImageSourceIdentifier; end
      class Unknown < ImageSourceIdentifier; end
    end

    # @!attribute [rw] resource_id
    #   The directory identifier of the WorkSpace for which you want to
    #   import client branding.
    #   @return [String]
    #
    # @!attribute [rw] device_type_windows
    #   The branding information to import for Windows devices.
    #   @return [Types::DefaultImportClientBrandingAttributes]
    #
    # @!attribute [rw] device_type_osx
    #   The branding information to import for macOS devices.
    #   @return [Types::DefaultImportClientBrandingAttributes]
    #
    # @!attribute [rw] device_type_android
    #   The branding information to import for Android devices.
    #   @return [Types::DefaultImportClientBrandingAttributes]
    #
    # @!attribute [rw] device_type_ios
    #   The branding information to import for iOS devices.
    #   @return [Types::IosImportClientBrandingAttributes]
    #
    # @!attribute [rw] device_type_linux
    #   The branding information to import for Linux devices.
    #   @return [Types::DefaultImportClientBrandingAttributes]
    #
    # @!attribute [rw] device_type_web
    #   The branding information to import for web access.
    #   @return [Types::DefaultImportClientBrandingAttributes]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ImportClientBrandingRequest AWS API Documentation
    #
    class ImportClientBrandingRequest < Struct.new(
      :resource_id,
      :device_type_windows,
      :device_type_osx,
      :device_type_android,
      :device_type_ios,
      :device_type_linux,
      :device_type_web)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] device_type_windows
    #   The branding information configured for Windows devices.
    #   @return [Types::DefaultClientBrandingAttributes]
    #
    # @!attribute [rw] device_type_osx
    #   The branding information configured for macOS devices.
    #   @return [Types::DefaultClientBrandingAttributes]
    #
    # @!attribute [rw] device_type_android
    #   The branding information configured for Android devices.
    #   @return [Types::DefaultClientBrandingAttributes]
    #
    # @!attribute [rw] device_type_ios
    #   The branding information configured for iOS devices.
    #   @return [Types::IosClientBrandingAttributes]
    #
    # @!attribute [rw] device_type_linux
    #   The branding information configured for Linux devices.
    #   @return [Types::DefaultClientBrandingAttributes]
    #
    # @!attribute [rw] device_type_web
    #   The branding information configured for web access.
    #   @return [Types::DefaultClientBrandingAttributes]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ImportClientBrandingResult AWS API Documentation
    #
    class ImportClientBrandingResult < Struct.new(
      :device_type_windows,
      :device_type_osx,
      :device_type_android,
      :device_type_ios,
      :device_type_linux,
      :device_type_web)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] image_name
    #   The name of the WorkSpace image.
    #   @return [String]
    #
    # @!attribute [rw] image_description
    #   The description of the WorkSpace image.
    #   @return [String]
    #
    # @!attribute [rw] compute_type
    #   The supported compute type for the WorkSpace image.
    #   @return [String]
    #
    # @!attribute [rw] protocol
    #   The supported protocol for the WorkSpace image. Windows 11 does not
    #   support PCOIP protocol.
    #   @return [String]
    #
    # @!attribute [rw] image_source
    #   The options for image import source.
    #   @return [Types::ImageSourceIdentifier]
    #
    # @!attribute [rw] infrastructure_configuration_arn
    #   The infrastructure configuration ARN that specifies how the
    #   WorkSpace image is built.
    #   @return [String]
    #
    # @!attribute [rw] platform
    #   The platform for the WorkSpace image source.
    #   @return [String]
    #
    # @!attribute [rw] os_version
    #   The OS version for the WorkSpace image source.
    #   @return [String]
    #
    # @!attribute [rw] tags
    #   The resource tags. Each WorkSpaces resource can have a maximum of 50
    #   tags.
    #   @return [Array<Types::Tag>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ImportCustomWorkspaceImageRequest AWS API Documentation
    #
    class ImportCustomWorkspaceImageRequest < Struct.new(
      :image_name,
      :image_description,
      :compute_type,
      :protocol,
      :image_source,
      :infrastructure_configuration_arn,
      :platform,
      :os_version,
      :tags)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] image_id
    #   The identifier of the WorkSpace image.
    #   @return [String]
    #
    # @!attribute [rw] state
    #   The state of the WorkSpace image.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ImportCustomWorkspaceImageResult AWS API Documentation
    #
    class ImportCustomWorkspaceImageResult < Struct.new(
      :image_id,
      :state)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] ec2_image_id
    #   The identifier of the EC2 image.
    #   @return [String]
    #
    # @!attribute [rw] ingestion_process
    #   The ingestion process to be used when importing the image, depending
    #   on which protocol you want to use for your BYOL Workspace image,
    #   either PCoIP, WSP, or bring your own protocol (BYOP). To use DCV,
    #   specify a value that ends in `_WSP`. To use PCoIP, specify a value
    #   that does not end in `_WSP`. To use BYOP, specify a value that ends
    #   in `_BYOP`.
    #
    #   For non-GPU-enabled bundles (bundles other than Graphics or
    #   GraphicsPro), specify `BYOL_REGULAR`, `BYOL_REGULAR_WSP`, or
    #   `BYOL_REGULAR_BYOP`, depending on the protocol.
    #
    #   <note markdown="1"> The `BYOL_REGULAR_BYOP` and `BYOL_GRAPHICS_G4DN_BYOP` values are
    #   only supported by Amazon WorkSpaces Core. Contact your account team
    #   to be allow-listed to use these values. For more information, see
    #   [Amazon WorkSpaces Core][1].
    #
    #    </note>
    #
    #
    #
    #   [1]: http://aws.amazon.com/workspaces/core/
    #   @return [String]
    #
    # @!attribute [rw] image_name
    #   The name of the WorkSpace image.
    #   @return [String]
    #
    # @!attribute [rw] image_description
    #   The description of the WorkSpace image.
    #   @return [String]
    #
    # @!attribute [rw] tags
    #   The tags. Each WorkSpaces resource can have a maximum of 50 tags.
    #   @return [Array<Types::Tag>]
    #
    # @!attribute [rw] applications
    #   If specified, the version of Microsoft Office to subscribe to. Valid
    #   only for Windows 10 and 11 BYOL images. For more information about
    #   subscribing to Office for BYOL images, see [ Bring Your Own Windows
    #   Desktop Licenses][1].
    #
    #   <note markdown="1"> * Although this parameter is an array, only one item is allowed at
    #     this time.
    #
    #   * During the image import process, non-GPU DCV (formerly WSP)
    #     WorkSpaces with Windows 11 support only `Microsoft_Office_2019`.
    #     GPU DCV (formerly WSP) WorkSpaces with Windows 11 do not support
    #     Office installation.
    #
    #    </note>
    #
    #
    #
    #   [1]: https://docs.aws.amazon.com/workspaces/latest/adminguide/byol-windows-images.html
    #   @return [Array<String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ImportWorkspaceImageRequest AWS API Documentation
    #
    class ImportWorkspaceImageRequest < Struct.new(
      :ec2_image_id,
      :ingestion_process,
      :image_name,
      :image_description,
      :tags,
      :applications)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] image_id
    #   The identifier of the WorkSpace image.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ImportWorkspaceImageResult AWS API Documentation
    #
    class ImportWorkspaceImageResult < Struct.new(
      :image_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # The specified application is not compatible with the resource.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/IncompatibleApplicationsException AWS API Documentation
    #
    class IncompatibleApplicationsException < Aws::EmptyStructure; end

    # Unexpected server error occured.
    #
    # @!attribute [rw] message
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/InternalServerException AWS API Documentation
    #
    class InternalServerException < Struct.new(
      :message)
      SENSITIVE = []
      include Aws::Structure
    end

    # Two or more of the selected parameter values cannot be used together.
    #
    # @!attribute [rw] message
    #   The exception error message.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/InvalidParameterCombinationException AWS API Documentation
    #
    class InvalidParameterCombinationException < Struct.new(
      :message)
      SENSITIVE = []
      include Aws::Structure
    end

    # One or more parameter values are not valid.
    #
    # @!attribute [rw] message
    #   The exception error message.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/InvalidParameterValuesException AWS API Documentation
    #
    class InvalidParameterValuesException < Struct.new(
      :message)
      SENSITIVE = []
      include Aws::Structure
    end

    # The state of the resource is not valid for this operation.
    #
    # @!attribute [rw] message
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/InvalidResourceStateException AWS API Documentation
    #
    class InvalidResourceStateException < Struct.new(
      :message)
      SENSITIVE = []
      include Aws::Structure
    end

    # The client branding attributes for iOS device types. These attributes
    # are displayed on the iOS client login screen only.
    #
    # Client branding attributes are public facing. Ensure you do not
    # include sensitive information.
    #
    # @!attribute [rw] logo_url
    #   The logo. This is the standard-resolution display that has a 1:1
    #   pixel density (or @1x), where one pixel is equal to one point. The
    #   only image format accepted is a binary data object that is converted
    #   from a `.png` file.
    #   @return [String]
    #
    # @!attribute [rw] logo_2x_url
    #   The @2x version of the logo. This is the higher resolution display
    #   that offers a scale factor of 2.0 (or @2x). The only image format
    #   accepted is a binary data object that is converted from a `.png`
    #   file.
    #
    #   <note markdown="1"> For more information about iOS image size and resolution, see [Image
    #   Size and Resolution ][1] in the *Apple Human Interface Guidelines*.
    #
    #    </note>
    #
    #
    #
    #   [1]: https://developer.apple.com/design/human-interface-guidelines/ios/icons-and-images/image-size-and-resolution/
    #   @return [String]
    #
    # @!attribute [rw] logo_3x_url
    #   The @3x version of the logo. This is the higher resolution display
    #   that offers a scale factor of 3.0 (or @3x).The only image format
    #   accepted is a binary data object that is converted from a `.png`
    #   file.
    #
    #   <note markdown="1"> For more information about iOS image size and resolution, see [Image
    #   Size and Resolution ][1] in the *Apple Human Interface Guidelines*.
    #
    #    </note>
    #
    #
    #
    #   [1]: https://developer.apple.com/design/human-interface-guidelines/ios/icons-and-images/image-size-and-resolution/
    #   @return [String]
    #
    # @!attribute [rw] support_email
    #   The support email. The company's customer support email address.
    #
    #   <note markdown="1"> * In each platform type, the `SupportEmail` and `SupportLink`
    #     parameters are mutually exclusive. You can specify one parameter
    #     for each platform type, but not both.
    #
    #   * The default email is `workspaces-feedback@amazon.com`.
    #
    #    </note>
    #   @return [String]
    #
    # @!attribute [rw] support_link
    #   The support link. The link for the company's customer support page
    #   for their WorkSpace.
    #
    #   <note markdown="1"> * In each platform type, the `SupportEmail` and `SupportLink`
    #     parameters are mutually exclusive. You can specify one parameter
    #     for each platform type, but not both.
    #
    #   * The default support link is `workspaces-feedback@amazon.com`.
    #
    #    </note>
    #   @return [String]
    #
    # @!attribute [rw] forgot_password_link
    #   The forgotten password link. This is the web address that users can
    #   go to if they forget the password for their WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] login_message
    #   The login message. Specified as a key value pair, in which the key
    #   is a locale and the value is the localized message for that locale.
    #   The only key supported is `en_US`. The HTML tags supported include
    #   the following: `a, b, blockquote, br, cite, code, dd, dl, dt, div,
    #   em, i, li, ol, p, pre, q, small, span, strike, strong, sub, sup, u,
    #   ul`.
    #   @return [Hash<String,String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/IosClientBrandingAttributes AWS API Documentation
    #
    class IosClientBrandingAttributes < Struct.new(
      :logo_url,
      :logo_2x_url,
      :logo_3x_url,
      :support_email,
      :support_link,
      :forgot_password_link,
      :login_message)
      SENSITIVE = []
      include Aws::Structure
    end

    # The client branding attributes to import for iOS device types. These
    # attributes are displayed on the iOS client login screen.
    #
    # Client branding attributes are public facing. Ensure you do not
    # include sensitive information.
    #
    # @!attribute [rw] logo
    #   The logo. This is the standard-resolution display that has a 1:1
    #   pixel density (or @1x), where one pixel is equal to one point. The
    #   only image format accepted is a binary data object that is converted
    #   from a `.png` file.
    #   @return [String]
    #
    # @!attribute [rw] logo_2x
    #   The @2x version of the logo. This is the higher resolution display
    #   that offers a scale factor of 2.0 (or @2x). The only image format
    #   accepted is a binary data object that is converted from a `.png`
    #   file.
    #
    #   <note markdown="1"> For more information about iOS image size and resolution, see [Image
    #   Size and Resolution ][1] in the *Apple Human Interface Guidelines*.
    #
    #    </note>
    #
    #
    #
    #   [1]: https://developer.apple.com/design/human-interface-guidelines/ios/icons-and-images/image-size-and-resolution/
    #   @return [String]
    #
    # @!attribute [rw] logo_3x
    #   The @3x version of the logo. This is the higher resolution display
    #   that offers a scale factor of 3.0 (or @3x). The only image format
    #   accepted is a binary data object that is converted from a `.png`
    #   file.
    #
    #   <note markdown="1"> For more information about iOS image size and resolution, see [Image
    #   Size and Resolution ][1] in the *Apple Human Interface Guidelines*.
    #
    #    </note>
    #
    #
    #
    #   [1]: https://developer.apple.com/design/human-interface-guidelines/ios/icons-and-images/image-size-and-resolution/
    #   @return [String]
    #
    # @!attribute [rw] support_email
    #   The support email. The company's customer support email address.
    #
    #   <note markdown="1"> * In each platform type, the `SupportEmail` and `SupportLink`
    #     parameters are mutually exclusive. You can specify one parameter
    #     for each platform type, but not both.
    #
    #   * The default email is `workspaces-feedback@amazon.com`.
    #
    #    </note>
    #   @return [String]
    #
    # @!attribute [rw] support_link
    #   The support link. The link for the company's customer support page
    #   for their WorkSpace.
    #
    #   <note markdown="1"> * In each platform type, the `SupportEmail` and `SupportLink`
    #     parameters are mutually exclusive. You can specify one parameter
    #     for each platform type, but not both.
    #
    #   * The default support link is `workspaces-feedback@amazon.com`.
    #
    #    </note>
    #   @return [String]
    #
    # @!attribute [rw] forgot_password_link
    #   The forgotten password link. This is the web address that users can
    #   go to if they forget the password for their WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] login_message
    #   The login message. Specified as a key value pair, in which the key
    #   is a locale and the value is the localized message for that locale.
    #   The only key supported is `en_US`. The HTML tags supported include
    #   the following: `a, b, blockquote, br, cite, code, dd, dl, dt, div,
    #   em, i, li, ol, p, pre, q, small, span, strike, strong, sub, sup, u,
    #   ul`.
    #   @return [Hash<String,String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/IosImportClientBrandingAttributes AWS API Documentation
    #
    class IosImportClientBrandingAttributes < Struct.new(
      :logo,
      :logo_2x,
      :logo_3x,
      :support_email,
      :support_link,
      :forgot_password_link,
      :login_message)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes a rule for an IP access control group.
    #
    # @!attribute [rw] ip_rule
    #   The IP address range, in CIDR notation.
    #   @return [String]
    #
    # @!attribute [rw] rule_desc
    #   The description.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/IpRuleItem AWS API Documentation
    #
    class IpRuleItem < Struct.new(
      :ip_rule,
      :rule_desc)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] link_status_filter
    #   Filters the account based on their link status.
    #   @return [Array<String>]
    #
    # @!attribute [rw] next_token
    #   The token to use to retrieve the next page of results. This value is
    #   null when there are no more results to return.
    #   @return [String]
    #
    # @!attribute [rw] max_results
    #   The maximum number of accounts to return.
    #   @return [Integer]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ListAccountLinksRequest AWS API Documentation
    #
    class ListAccountLinksRequest < Struct.new(
      :link_status_filter,
      :next_token,
      :max_results)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] account_links
    #   Information about the account links.
    #   @return [Array<Types::AccountLink>]
    #
    # @!attribute [rw] next_token
    #   The token to use to retrieve the next page of results. This value is
    #   null when there are no more results to return.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ListAccountLinksResult AWS API Documentation
    #
    class ListAccountLinksResult < Struct.new(
      :account_links,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] management_cidr_range_constraint
    #   The IP address range to search. Specify an IP address range that is
    #   compatible with your network and in CIDR notation (that is, specify
    #   the range as an IPv4 CIDR block).
    #   @return [String]
    #
    # @!attribute [rw] max_results
    #   The maximum number of items to return.
    #   @return [Integer]
    #
    # @!attribute [rw] next_token
    #   If you received a `NextToken` from a previous call that was
    #   paginated, provide this token to receive the next set of results.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ListAvailableManagementCidrRangesRequest AWS API Documentation
    #
    class ListAvailableManagementCidrRangesRequest < Struct.new(
      :management_cidr_range_constraint,
      :max_results,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] management_cidr_ranges
    #   The list of available IP address ranges, specified as IPv4 CIDR
    #   blocks.
    #   @return [Array<String>]
    #
    # @!attribute [rw] next_token
    #   The token to use to retrieve the next page of results. This value is
    #   null when there are no more results to return.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ListAvailableManagementCidrRangesResult AWS API Documentation
    #
    class ListAvailableManagementCidrRangesResult < Struct.new(
      :management_cidr_ranges,
      :next_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # Specifies the configurations of the Microsoft Entra.
    #
    # @!attribute [rw] tenant_id
    #   The identifier of the tenant.
    #   @return [String]
    #
    # @!attribute [rw] application_config_secret_arn
    #   The Amazon Resource Name (ARN) of the application config.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/MicrosoftEntraConfig AWS API Documentation
    #
    class MicrosoftEntraConfig < Struct.new(
      :tenant_id,
      :application_config_secret_arn)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] source_workspace_id
    #   The identifier of the WorkSpace to migrate from.
    #   @return [String]
    #
    # @!attribute [rw] bundle_id
    #   The identifier of the target bundle type to migrate the WorkSpace
    #   to.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/MigrateWorkspaceRequest AWS API Documentation
    #
    class MigrateWorkspaceRequest < Struct.new(
      :source_workspace_id,
      :bundle_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] source_workspace_id
    #   The original identifier of the WorkSpace that is being migrated.
    #   @return [String]
    #
    # @!attribute [rw] target_workspace_id
    #   The new identifier of the WorkSpace that is being migrated. If the
    #   migration does not succeed, the target WorkSpace ID will not be
    #   used, and the WorkSpace will still have the original WorkSpace ID.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/MigrateWorkspaceResult AWS API Documentation
    #
    class MigrateWorkspaceResult < Struct.new(
      :source_workspace_id,
      :target_workspace_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes a WorkSpace modification.
    #
    # @!attribute [rw] resource
    #   The resource.
    #   @return [String]
    #
    # @!attribute [rw] state
    #   The modification state.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModificationState AWS API Documentation
    #
    class ModificationState < Struct.new(
      :resource,
      :state)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] dedicated_tenancy_support
    #   The status of BYOL.
    #   @return [String]
    #
    # @!attribute [rw] dedicated_tenancy_management_cidr_range
    #   The IP address range, specified as an IPv4 CIDR block, for the
    #   management network interface. Specify an IP address range that is
    #   compatible with your network and in CIDR notation (that is, specify
    #   the range as an IPv4 CIDR block). The CIDR block size must be /16
    #   (for example, 203.0.113.25/16). It must also be specified as
    #   available by the `ListAvailableManagementCidrRanges` operation.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyAccountRequest AWS API Documentation
    #
    class ModifyAccountRequest < Struct.new(
      :dedicated_tenancy_support,
      :dedicated_tenancy_management_cidr_range)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] message
    #   The text message to describe the status of BYOL modification.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyAccountResult AWS API Documentation
    #
    class ModifyAccountResult < Struct.new(
      :message)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] resource_id
    #   The resource identifiers, in the form of directory IDs.
    #   @return [String]
    #
    # @!attribute [rw] certificate_based_auth_properties
    #   The properties of the certificate-based authentication.
    #   @return [Types::CertificateBasedAuthProperties]
    #
    # @!attribute [rw] properties_to_delete
    #   The properties of the certificate-based authentication you want to
    #   delete.
    #   @return [Array<String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyCertificateBasedAuthPropertiesRequest AWS API Documentation
    #
    class ModifyCertificateBasedAuthPropertiesRequest < Struct.new(
      :resource_id,
      :certificate_based_auth_properties,
      :properties_to_delete)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyCertificateBasedAuthPropertiesResult AWS API Documentation
    #
    class ModifyCertificateBasedAuthPropertiesResult < Aws::EmptyStructure; end

    # @!attribute [rw] resource_id
    #   The resource identifiers, in the form of directory IDs.
    #   @return [String]
    #
    # @!attribute [rw] client_properties
    #   Information about the Amazon WorkSpaces client.
    #   @return [Types::ClientProperties]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyClientPropertiesRequest AWS API Documentation
    #
    class ModifyClientPropertiesRequest < Struct.new(
      :resource_id,
      :client_properties)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyClientPropertiesResult AWS API Documentation
    #
    class ModifyClientPropertiesResult < Aws::EmptyStructure; end

    # @!attribute [rw] directory_id
    #   The identifier of the directory.
    #   @return [String]
    #
    # @!attribute [rw] endpoint_encryption_mode
    #   The encryption mode used for endpoint connections when streaming to
    #   WorkSpaces Personal or WorkSpace Pools.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyEndpointEncryptionModeRequest AWS API Documentation
    #
    class ModifyEndpointEncryptionModeRequest < Struct.new(
      :directory_id,
      :endpoint_encryption_mode)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyEndpointEncryptionModeResponse AWS API Documentation
    #
    class ModifyEndpointEncryptionModeResponse < Aws::EmptyStructure; end

    # @!attribute [rw] resource_id
    #   The directory identifier for which you want to configure SAML
    #   properties.
    #   @return [String]
    #
    # @!attribute [rw] saml_properties
    #   The properties for configuring SAML 2.0 authentication.
    #   @return [Types::SamlProperties]
    #
    # @!attribute [rw] properties_to_delete
    #   The SAML properties to delete as part of your request.
    #
    #   Specify one of the following options:
    #
    #   * `SAML_PROPERTIES_USER_ACCESS_URL` to delete the user access URL.
    #
    #   * `SAML_PROPERTIES_RELAY_STATE_PARAMETER_NAME` to delete the relay
    #     state parameter name.
    #   @return [Array<String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifySamlPropertiesRequest AWS API Documentation
    #
    class ModifySamlPropertiesRequest < Struct.new(
      :resource_id,
      :saml_properties,
      :properties_to_delete)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifySamlPropertiesResult AWS API Documentation
    #
    class ModifySamlPropertiesResult < Aws::EmptyStructure; end

    # @!attribute [rw] resource_id
    #   The identifier of the directory.
    #   @return [String]
    #
    # @!attribute [rw] selfservice_permissions
    #   The permissions to enable or disable self-service capabilities.
    #   @return [Types::SelfservicePermissions]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifySelfservicePermissionsRequest AWS API Documentation
    #
    class ModifySelfservicePermissionsRequest < Struct.new(
      :resource_id,
      :selfservice_permissions)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifySelfservicePermissionsResult AWS API Documentation
    #
    class ModifySelfservicePermissionsResult < Aws::EmptyStructure; end

    # @!attribute [rw] resource_id
    #   The identifier of the resource.
    #   @return [String]
    #
    # @!attribute [rw] streaming_properties
    #   The streaming properties to configure.
    #   @return [Types::StreamingProperties]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyStreamingPropertiesRequest AWS API Documentation
    #
    class ModifyStreamingPropertiesRequest < Struct.new(
      :resource_id,
      :streaming_properties)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyStreamingPropertiesResult AWS API Documentation
    #
    class ModifyStreamingPropertiesResult < Aws::EmptyStructure; end

    # @!attribute [rw] resource_id
    #   The identifier of the directory.
    #   @return [String]
    #
    # @!attribute [rw] workspace_access_properties
    #   The device types and operating systems to enable or disable for
    #   access.
    #   @return [Types::WorkspaceAccessProperties]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyWorkspaceAccessPropertiesRequest AWS API Documentation
    #
    class ModifyWorkspaceAccessPropertiesRequest < Struct.new(
      :resource_id,
      :workspace_access_properties)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyWorkspaceAccessPropertiesResult AWS API Documentation
    #
    class ModifyWorkspaceAccessPropertiesResult < Aws::EmptyStructure; end

    # @!attribute [rw] resource_id
    #   The identifier of the directory.
    #   @return [String]
    #
    # @!attribute [rw] workspace_creation_properties
    #   The default properties for creating WorkSpaces.
    #   @return [Types::WorkspaceCreationProperties]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyWorkspaceCreationPropertiesRequest AWS API Documentation
    #
    class ModifyWorkspaceCreationPropertiesRequest < Struct.new(
      :resource_id,
      :workspace_creation_properties)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyWorkspaceCreationPropertiesResult AWS API Documentation
    #
    class ModifyWorkspaceCreationPropertiesResult < Aws::EmptyStructure; end

    # @!attribute [rw] workspace_id
    #   The identifier of the WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] workspace_properties
    #   The properties of the WorkSpace.
    #   @return [Types::WorkspaceProperties]
    #
    # @!attribute [rw] data_replication
    #   Indicates the data replication status.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyWorkspacePropertiesRequest AWS API Documentation
    #
    class ModifyWorkspacePropertiesRequest < Struct.new(
      :workspace_id,
      :workspace_properties,
      :data_replication)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyWorkspacePropertiesResult AWS API Documentation
    #
    class ModifyWorkspacePropertiesResult < Aws::EmptyStructure; end

    # @!attribute [rw] workspace_id
    #   The identifier of the WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] workspace_state
    #   The WorkSpace state.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyWorkspaceStateRequest AWS API Documentation
    #
    class ModifyWorkspaceStateRequest < Struct.new(
      :workspace_id,
      :workspace_state)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyWorkspaceStateResult AWS API Documentation
    #
    class ModifyWorkspaceStateResult < Aws::EmptyStructure; end

    # Describes the network details of a WorkSpaces Pool.
    #
    # @!attribute [rw] eni_private_ip_address
    #   The private IP address of the elastic network interface that is
    #   attached to instances in your VPC.
    #   @return [String]
    #
    # @!attribute [rw] eni_id
    #   The resource identifier of the elastic network interface that is
    #   attached to instances in your VPC. All network interfaces have the
    #   eni-xxxxxxxx resource identifier.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/NetworkAccessConfiguration AWS API Documentation
    #
    class NetworkAccessConfiguration < Struct.new(
      :eni_private_ip_address,
      :eni_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # The operating system that the image is running.
    #
    # @!attribute [rw] type
    #   The operating system.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/OperatingSystem AWS API Documentation
    #
    class OperatingSystem < Struct.new(
      :type)
      SENSITIVE = []
      include Aws::Structure
    end

    # The operating system of the WorkSpace is not compatible with the
    # application.
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/OperatingSystemNotCompatibleException AWS API Documentation
    #
    class OperatingSystemNotCompatibleException < Aws::EmptyStructure; end

    # The properties of this WorkSpace are currently being modified. Try
    # again in a moment.
    #
    # @!attribute [rw] message
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/OperationInProgressException AWS API Documentation
    #
    class OperationInProgressException < Struct.new(
      :message)
      SENSITIVE = []
      include Aws::Structure
    end

    # This operation is not supported.
    #
    # @!attribute [rw] message
    #   The exception error message.
    #   @return [String]
    #
    # @!attribute [rw] reason
    #   The exception error reason.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/OperationNotSupportedException AWS API Documentation
    #
    class OperationNotSupportedException < Struct.new(
      :message,
      :reason)
      SENSITIVE = []
      include Aws::Structure
    end

    # Information about the standby WorkSpace.
    #
    # @!attribute [rw] user_name
    #   Describes the standby WorkSpace that was created.
    #
    #   Because this operation is asynchronous, the identifier returned is
    #   not immediately available for use with other operations. For
    #   example, if you call [ DescribeWorkspaces][1] before the WorkSpace
    #   is created, the information returned can be incomplete.
    #
    #
    #
    #   [1]: https://docs.aws.amazon.com/workspaces/latest/api/API_DescribeWorkspaces.html
    #   @return [String]
    #
    # @!attribute [rw] directory_id
    #   The identifier of the directory for the standby WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] state
    #   The operational state of the standby WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] workspace_id
    #   The identifier of the standby WorkSpace.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/PendingCreateStandbyWorkspacesRequest AWS API Documentation
    #
    class PendingCreateStandbyWorkspacesRequest < Struct.new(
      :user_name,
      :directory_id,
      :state,
      :workspace_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the information used to reboot a WorkSpace.
    #
    # @!attribute [rw] workspace_id
    #   The identifier of the WorkSpace.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RebootRequest AWS API Documentation
    #
    class RebootRequest < Struct.new(
      :workspace_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] reboot_workspace_requests
    #   The WorkSpaces to reboot. You can specify up to 25 WorkSpaces.
    #   @return [Array<Types::RebootRequest>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RebootWorkspacesRequest AWS API Documentation
    #
    class RebootWorkspacesRequest < Struct.new(
      :reboot_workspace_requests)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] failed_requests
    #   Information about the WorkSpaces that could not be rebooted.
    #   @return [Array<Types::FailedWorkspaceChangeRequest>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RebootWorkspacesResult AWS API Documentation
    #
    class RebootWorkspacesResult < Struct.new(
      :failed_requests)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the information used to rebuild a WorkSpace.
    #
    # @!attribute [rw] workspace_id
    #   The identifier of the WorkSpace.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RebuildRequest AWS API Documentation
    #
    class RebuildRequest < Struct.new(
      :workspace_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] rebuild_workspace_requests
    #   The WorkSpace to rebuild. You can specify a single WorkSpace.
    #   @return [Array<Types::RebuildRequest>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RebuildWorkspacesRequest AWS API Documentation
    #
    class RebuildWorkspacesRequest < Struct.new(
      :rebuild_workspace_requests)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] failed_requests
    #   Information about the WorkSpace that could not be rebuilt.
    #   @return [Array<Types::FailedWorkspaceChangeRequest>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RebuildWorkspacesResult AWS API Documentation
    #
    class RebuildWorkspacesResult < Struct.new(
      :failed_requests)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] directory_id
    #   The identifier of the directory. You cannot register a directory if
    #   it does not have a status of Active. If the directory does not have
    #   a status of Active, you will receive an
    #   InvalidResourceStateException error. If you have already registered
    #   the maximum number of directories that you can register with Amazon
    #   WorkSpaces, you will receive a ResourceLimitExceededException error.
    #   Deregister directories that you are not using for WorkSpaces, and
    #   try again.
    #   @return [String]
    #
    # @!attribute [rw] subnet_ids
    #   The identifiers of the subnets for your virtual private cloud (VPC).
    #   Make sure that the subnets are in supported Availability Zones. The
    #   subnets must also be in separate Availability Zones. If these
    #   conditions are not met, you will receive an
    #   OperationNotSupportedException error.
    #   @return [Array<String>]
    #
    # @!attribute [rw] enable_self_service
    #   Indicates whether self-service capabilities are enabled or disabled.
    #   @return [Boolean]
    #
    # @!attribute [rw] tenancy
    #   Indicates whether your WorkSpace directory is dedicated or shared.
    #   To use Bring Your Own License (BYOL) images, this value must be set
    #   to `DEDICATED` and your Amazon Web Services account must be enabled
    #   for BYOL. If your account has not been enabled for BYOL, you will
    #   receive an InvalidParameterValuesException error. For more
    #   information about BYOL images, see [Bring Your Own Windows Desktop
    #   Images][1].
    #
    #
    #
    #   [1]: https://docs.aws.amazon.com/workspaces/latest/adminguide/byol-windows-images.html
    #   @return [String]
    #
    # @!attribute [rw] tags
    #   The tags associated with the directory.
    #   @return [Array<Types::Tag>]
    #
    # @!attribute [rw] workspace_directory_name
    #   The name of the directory to register.
    #   @return [String]
    #
    # @!attribute [rw] workspace_directory_description
    #   Description of the directory to register.
    #   @return [String]
    #
    # @!attribute [rw] user_identity_type
    #   The type of identity management the user is using.
    #   @return [String]
    #
    # @!attribute [rw] idc_instance_arn
    #   The Amazon Resource Name (ARN) of the identity center instance.
    #   @return [String]
    #
    # @!attribute [rw] microsoft_entra_config
    #   The details about Microsoft Entra config.
    #   @return [Types::MicrosoftEntraConfig]
    #
    # @!attribute [rw] workspace_type
    #   Indicates whether the directory's WorkSpace type is personal or
    #   pools.
    #   @return [String]
    #
    # @!attribute [rw] active_directory_config
    #   The active directory config of the directory.
    #   @return [Types::ActiveDirectoryConfig]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RegisterWorkspaceDirectoryRequest AWS API Documentation
    #
    class RegisterWorkspaceDirectoryRequest < Struct.new(
      :directory_id,
      :subnet_ids,
      :enable_self_service,
      :tenancy,
      :tags,
      :workspace_directory_name,
      :workspace_directory_description,
      :user_identity_type,
      :idc_instance_arn,
      :microsoft_entra_config,
      :workspace_type,
      :active_directory_config)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] directory_id
    #   The identifier of the directory.
    #   @return [String]
    #
    # @!attribute [rw] state
    #   The registration status of the WorkSpace directory.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RegisterWorkspaceDirectoryResult AWS API Documentation
    #
    class RegisterWorkspaceDirectoryResult < Struct.new(
      :directory_id,
      :state)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] link_id
    #   The identifier of the account link
    #   @return [String]
    #
    # @!attribute [rw] client_token
    #   The client token of the account link invitation to reject.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RejectAccountLinkInvitationRequest AWS API Documentation
    #
    class RejectAccountLinkInvitationRequest < Struct.new(
      :link_id,
      :client_token)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] account_link
    #   Information about the account link.
    #   @return [Types::AccountLink]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RejectAccountLinkInvitationResult AWS API Documentation
    #
    class RejectAccountLinkInvitationResult < Struct.new(
      :account_link)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the related WorkSpace. The related WorkSpace could be a
    # standby WorkSpace or primary WorkSpace related to the specified
    # WorkSpace.
    #
    # @!attribute [rw] workspace_id
    #   The identifier of the related WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] region
    #   The Region of the related WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] state
    #   Indicates the state of the WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] type
    #   Indicates the type of WorkSpace.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RelatedWorkspaceProperties AWS API Documentation
    #
    class RelatedWorkspaceProperties < Struct.new(
      :workspace_id,
      :region,
      :state,
      :type)
      SENSITIVE = []
      include Aws::Structure
    end

    # The specified resource already exists.
    #
    # @!attribute [rw] message
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ResourceAlreadyExistsException AWS API Documentation
    #
    class ResourceAlreadyExistsException < Struct.new(
      :message)
      SENSITIVE = []
      include Aws::Structure
    end

    # The resource is associated with a directory.
    #
    # @!attribute [rw] message
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ResourceAssociatedException AWS API Documentation
    #
    class ResourceAssociatedException < Struct.new(
      :message)
      SENSITIVE = []
      include Aws::Structure
    end

    # The resource could not be created.
    #
    # @!attribute [rw] message
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ResourceCreationFailedException AWS API Documentation
    #
    class ResourceCreationFailedException < Struct.new(
      :message)
      SENSITIVE = []
      include Aws::Structure
    end

    # The specified resource is currently in use.
    #
    # @!attribute [rw] message
    #   @return [String]
    #
    # @!attribute [rw] resource_id
    #   The ID of the resource that is in use.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ResourceInUseException AWS API Documentation
    #
    class ResourceInUseException < Struct.new(
      :message,
      :resource_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # Your resource limits have been exceeded.
    #
    # @!attribute [rw] message
    #   The exception error message.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ResourceLimitExceededException AWS API Documentation
    #
    class ResourceLimitExceededException < Struct.new(
      :message)
      SENSITIVE = []
      include Aws::Structure
    end

    # The resource could not be found.
    #
    # @!attribute [rw] message
    #   The resource could not be found.
    #   @return [String]
    #
    # @!attribute [rw] resource_id
    #   The ID of the resource that could not be found.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ResourceNotFoundException AWS API Documentation
    #
    class ResourceNotFoundException < Struct.new(
      :message,
      :resource_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # The specified resource is not available.
    #
    # @!attribute [rw] message
    #   The exception error message.
    #   @return [String]
    #
    # @!attribute [rw] resource_id
    #   The identifier of the resource that is not available.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ResourceUnavailableException AWS API Documentation
    #
    class ResourceUnavailableException < Struct.new(
      :message,
      :resource_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] workspace_id
    #   The identifier of the WorkSpace.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RestoreWorkspaceRequest AWS API Documentation
    #
    class RestoreWorkspaceRequest < Struct.new(
      :workspace_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RestoreWorkspaceResult AWS API Documentation
    #
    class RestoreWorkspaceResult < Aws::EmptyStructure; end

    # @!attribute [rw] group_id
    #   The identifier of the group.
    #   @return [String]
    #
    # @!attribute [rw] user_rules
    #   The rules to remove from the group.
    #   @return [Array<String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RevokeIpRulesRequest AWS API Documentation
    #
    class RevokeIpRulesRequest < Struct.new(
      :group_id,
      :user_rules)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RevokeIpRulesResult AWS API Documentation
    #
    class RevokeIpRulesResult < Aws::EmptyStructure; end

    # Describes the root volume for a WorkSpace bundle.
    #
    # @!attribute [rw] capacity
    #   The size of the root volume.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RootStorage AWS API Documentation
    #
    class RootStorage < Struct.new(
      :capacity)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the enablement status, user access URL, and relay state
    # parameter name that are used for configuring federation with an SAML
    # 2.0 identity provider.
    #
    # @!attribute [rw] status
    #   Indicates the status of SAML 2.0 authentication. These statuses
    #   include the following.
    #
    #   * If the setting is `DISABLED`, end users will be directed to login
    #     with their directory credentials.
    #
    #   * If the setting is `ENABLED`, end users will be directed to login
    #     via the user access URL. Users attempting to connect to WorkSpaces
    #     from a client application that does not support SAML 2.0
    #     authentication will not be able to connect.
    #
    #   * If the setting is `ENABLED_WITH_DIRECTORY_LOGIN_FALLBACK`, end
    #     users will be directed to login via the user access URL on
    #     supported client applications, but will not prevent clients that
    #     do not support SAML 2.0 authentication from connecting as if SAML
    #     2.0 authentication was disabled.
    #   @return [String]
    #
    # @!attribute [rw] user_access_url
    #   The SAML 2.0 identity provider (IdP) user access URL is the URL a
    #   user would navigate to in their web browser in order to federate
    #   from the IdP and directly access the application, without any SAML
    #   2.0 service provider (SP) bindings.
    #   @return [String]
    #
    # @!attribute [rw] relay_state_parameter_name
    #   The relay state parameter name supported by the SAML 2.0 identity
    #   provider (IdP). When the end user is redirected to the user access
    #   URL from the WorkSpaces client application, this relay state
    #   parameter name is appended as a query parameter to the URL along
    #   with the relay state endpoint to return the user to the client
    #   application session.
    #
    #   To use SAML 2.0 authentication with WorkSpaces, the IdP must support
    #   IdP-initiated deep linking for the relay state URL. Consult your IdP
    #   documentation for more information.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/SamlProperties AWS API Documentation
    #
    class SamlProperties < Struct.new(
      :status,
      :user_access_url,
      :relay_state_parameter_name)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the self-service permissions for a directory. For more
    # information, see [Enable Self-Service WorkSpace Management
    # Capabilities for Your Users][1].
    #
    #
    #
    # [1]: https://docs.aws.amazon.com/workspaces/latest/adminguide/enable-user-self-service-workspace-management.html
    #
    # @!attribute [rw] restart_workspace
    #   Specifies whether users can restart their WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] increase_volume_size
    #   Specifies whether users can increase the volume size of the drives
    #   on their WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] change_compute_type
    #   Specifies whether users can change the compute type (bundle) for
    #   their WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] switch_running_mode
    #   Specifies whether users can switch the running mode of their
    #   WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] rebuild_workspace
    #   Specifies whether users can rebuild the operating system of a
    #   WorkSpace to its original state.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/SelfservicePermissions AWS API Documentation
    #
    class SelfservicePermissions < Struct.new(
      :restart_workspace,
      :increase_volume_size,
      :change_compute_type,
      :switch_running_mode,
      :rebuild_workspace)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes a snapshot.
    #
    # @!attribute [rw] snapshot_time
    #   The time when the snapshot was created.
    #   @return [Time]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/Snapshot AWS API Documentation
    #
    class Snapshot < Struct.new(
      :snapshot_time)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes a standby WorkSpace.
    #
    # @!attribute [rw] primary_workspace_id
    #   The identifier of the standby WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] volume_encryption_key
    #   The volume encryption key of the standby WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] directory_id
    #   The identifier of the directory for the standby WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] tags
    #   The tags associated with the standby WorkSpace.
    #   @return [Array<Types::Tag>]
    #
    # @!attribute [rw] data_replication
    #   Indicates whether data replication is enabled, and if enabled, the
    #   type of data replication.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/StandbyWorkspace AWS API Documentation
    #
    class StandbyWorkspace < Struct.new(
      :primary_workspace_id,
      :volume_encryption_key,
      :directory_id,
      :tags,
      :data_replication)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the properties of the related standby WorkSpaces.
    #
    # @!attribute [rw] standby_workspace_id
    #   The identifier of the standby WorkSpace
    #   @return [String]
    #
    # @!attribute [rw] data_replication
    #   Indicates whether data replication is enabled, and if enabled, the
    #   type of data replication.
    #   @return [String]
    #
    # @!attribute [rw] recovery_snapshot_time
    #   The date and time at which the last successful snapshot was taken of
    #   the primary WorkSpace used for replicating data.
    #   @return [Time]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/StandbyWorkspacesProperties AWS API Documentation
    #
    class StandbyWorkspacesProperties < Struct.new(
      :standby_workspace_id,
      :data_replication,
      :recovery_snapshot_time)
      SENSITIVE = []
      include Aws::Structure
    end

    # Information used to start a WorkSpace.
    #
    # @!attribute [rw] workspace_id
    #   The identifier of the WorkSpace.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/StartRequest AWS API Documentation
    #
    class StartRequest < Struct.new(
      :workspace_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] pool_id
    #   The identifier of the pool.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/StartWorkspacesPoolRequest AWS API Documentation
    #
    class StartWorkspacesPoolRequest < Struct.new(
      :pool_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/StartWorkspacesPoolResult AWS API Documentation
    #
    class StartWorkspacesPoolResult < Aws::EmptyStructure; end

    # @!attribute [rw] start_workspace_requests
    #   The WorkSpaces to start. You can specify up to 25 WorkSpaces.
    #   @return [Array<Types::StartRequest>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/StartWorkspacesRequest AWS API Documentation
    #
    class StartWorkspacesRequest < Struct.new(
      :start_workspace_requests)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] failed_requests
    #   Information about the WorkSpaces that could not be started.
    #   @return [Array<Types::FailedWorkspaceChangeRequest>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/StartWorkspacesResult AWS API Documentation
    #
    class StartWorkspacesResult < Struct.new(
      :failed_requests)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the information used to stop a WorkSpace.
    #
    # @!attribute [rw] workspace_id
    #   The identifier of the WorkSpace.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/StopRequest AWS API Documentation
    #
    class StopRequest < Struct.new(
      :workspace_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] pool_id
    #   The identifier of the pool.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/StopWorkspacesPoolRequest AWS API Documentation
    #
    class StopWorkspacesPoolRequest < Struct.new(
      :pool_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/StopWorkspacesPoolResult AWS API Documentation
    #
    class StopWorkspacesPoolResult < Aws::EmptyStructure; end

    # @!attribute [rw] stop_workspace_requests
    #   The WorkSpaces to stop. You can specify up to 25 WorkSpaces.
    #   @return [Array<Types::StopRequest>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/StopWorkspacesRequest AWS API Documentation
    #
    class StopWorkspacesRequest < Struct.new(
      :stop_workspace_requests)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] failed_requests
    #   Information about the WorkSpaces that could not be stopped.
    #   @return [Array<Types::FailedWorkspaceChangeRequest>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/StopWorkspacesResult AWS API Documentation
    #
    class StopWorkspacesResult < Struct.new(
      :failed_requests)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the storage connector.
    #
    # @!attribute [rw] connector_type
    #   The type of connector used to save user files.
    #   @return [String]
    #
    # @!attribute [rw] status
    #   Indicates if the storage connetor is enabled or disabled.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/StorageConnector AWS API Documentation
    #
    class StorageConnector < Struct.new(
      :connector_type,
      :status)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the streaming properties.
    #
    # @!attribute [rw] streaming_experience_preferred_protocol
    #   Indicates the type of preferred protocol for the streaming
    #   experience.
    #   @return [String]
    #
    # @!attribute [rw] user_settings
    #   Indicates the permission settings asscoiated with the user.
    #   @return [Array<Types::UserSetting>]
    #
    # @!attribute [rw] storage_connectors
    #   Indicates the storage connector used
    #   @return [Array<Types::StorageConnector>]
    #
    # @!attribute [rw] global_accelerator
    #   Indicates the Global Accelerator properties.
    #   @return [Types::GlobalAcceleratorForDirectory]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/StreamingProperties AWS API Documentation
    #
    class StreamingProperties < Struct.new(
      :streaming_experience_preferred_protocol,
      :user_settings,
      :storage_connectors,
      :global_accelerator)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes a tag.
    #
    # @!attribute [rw] key
    #   The key of the tag.
    #   @return [String]
    #
    # @!attribute [rw] value
    #   The value of the tag.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/Tag AWS API Documentation
    #
    class Tag < Struct.new(
      :key,
      :value)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the information used to terminate a WorkSpace.
    #
    # @!attribute [rw] workspace_id
    #   The identifier of the WorkSpace.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/TerminateRequest AWS API Documentation
    #
    class TerminateRequest < Struct.new(
      :workspace_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] pool_id
    #   The identifier of the pool.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/TerminateWorkspacesPoolRequest AWS API Documentation
    #
    class TerminateWorkspacesPoolRequest < Struct.new(
      :pool_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/TerminateWorkspacesPoolResult AWS API Documentation
    #
    class TerminateWorkspacesPoolResult < Aws::EmptyStructure; end

    # @!attribute [rw] session_id
    #   The identifier of the pool session.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/TerminateWorkspacesPoolSessionRequest AWS API Documentation
    #
    class TerminateWorkspacesPoolSessionRequest < Struct.new(
      :session_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/TerminateWorkspacesPoolSessionResult AWS API Documentation
    #
    class TerminateWorkspacesPoolSessionResult < Aws::EmptyStructure; end

    # @!attribute [rw] terminate_workspace_requests
    #   The WorkSpaces to terminate. You can specify up to 25 WorkSpaces.
    #   @return [Array<Types::TerminateRequest>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/TerminateWorkspacesRequest AWS API Documentation
    #
    class TerminateWorkspacesRequest < Struct.new(
      :terminate_workspace_requests)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] failed_requests
    #   Information about the WorkSpaces that could not be terminated.
    #   @return [Array<Types::FailedWorkspaceChangeRequest>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/TerminateWorkspacesResult AWS API Documentation
    #
    class TerminateWorkspacesResult < Struct.new(
      :failed_requests)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the timeout settings for a pool of WorkSpaces.
    #
    # @!attribute [rw] disconnect_timeout_in_seconds
    #   Specifies the amount of time, in seconds, that a streaming session
    #   remains active after users disconnect. If users try to reconnect to
    #   the streaming session after a disconnection or network interruption
    #   within the time set, they are connected to their previous session.
    #   Otherwise, they are connected to a new session with a new streaming
    #   instance.
    #   @return [Integer]
    #
    # @!attribute [rw] idle_disconnect_timeout_in_seconds
    #   The amount of time in seconds a connection will stay active while
    #   idle.
    #   @return [Integer]
    #
    # @!attribute [rw] max_user_duration_in_seconds
    #   Specifies the maximum amount of time, in seconds, that a streaming
    #   session can remain active. If users are still connected to a
    #   streaming instance five minutes before this limit is reached, they
    #   are prompted to save any open documents before being disconnected.
    #   After this time elapses, the instance is terminated and replaced by
    #   a new instance.
    #   @return [Integer]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/TimeoutSettings AWS API Documentation
    #
    class TimeoutSettings < Struct.new(
      :disconnect_timeout_in_seconds,
      :idle_disconnect_timeout_in_seconds,
      :max_user_duration_in_seconds)
      SENSITIVE = []
      include Aws::Structure
    end

    # The configuration of this network is not supported for this operation,
    # or your network configuration conflicts with the Amazon WorkSpaces
    # management network IP range. For more information, see [ Configure a
    # VPC for Amazon WorkSpaces][1].
    #
    #
    #
    # [1]: https://docs.aws.amazon.com/workspaces/latest/adminguide/amazon-workspaces-vpc.html
    #
    # @!attribute [rw] message
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UnsupportedNetworkConfigurationException AWS API Documentation
    #
    class UnsupportedNetworkConfigurationException < Struct.new(
      :message)
      SENSITIVE = []
      include Aws::Structure
    end

    # The configuration of this WorkSpace is not supported for this
    # operation. For more information, see [Required Configuration and
    # Service Components for WorkSpaces ][1].
    #
    #
    #
    # [1]: https://docs.aws.amazon.com/workspaces/latest/adminguide/required-service-components.html
    #
    # @!attribute [rw] message
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UnsupportedWorkspaceConfigurationException AWS API Documentation
    #
    class UnsupportedWorkspaceConfigurationException < Struct.new(
      :message)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] add_in_id
    #   The identifier of the client add-in to update.
    #   @return [String]
    #
    # @!attribute [rw] resource_id
    #   The directory identifier for which the client add-in is configured.
    #   @return [String]
    #
    # @!attribute [rw] name
    #   The name of the client add-in.
    #   @return [String]
    #
    # @!attribute [rw] url
    #   The endpoint URL of the Amazon Connect client add-in.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UpdateConnectClientAddInRequest AWS API Documentation
    #
    class UpdateConnectClientAddInRequest < Struct.new(
      :add_in_id,
      :resource_id,
      :name,
      :url)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UpdateConnectClientAddInResult AWS API Documentation
    #
    class UpdateConnectClientAddInResult < Aws::EmptyStructure; end

    # @!attribute [rw] alias_id
    #   The identifier of the connection alias that you want to update
    #   permissions for.
    #   @return [String]
    #
    # @!attribute [rw] connection_alias_permission
    #   Indicates whether to share or unshare the connection alias with the
    #   specified Amazon Web Services account.
    #   @return [Types::ConnectionAliasPermission]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UpdateConnectionAliasPermissionRequest AWS API Documentation
    #
    class UpdateConnectionAliasPermissionRequest < Struct.new(
      :alias_id,
      :connection_alias_permission)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UpdateConnectionAliasPermissionResult AWS API Documentation
    #
    class UpdateConnectionAliasPermissionResult < Aws::EmptyStructure; end

    # Describes whether a WorkSpace image needs to be updated with the
    # latest drivers and other components required by Amazon WorkSpaces.
    #
    # <note markdown="1"> Only Windows 10 WorkSpace images can be programmatically updated at
    # this time.
    #
    #  </note>
    #
    # @!attribute [rw] update_available
    #   Indicates whether updated drivers or other components are available
    #   for the specified WorkSpace image.
    #   @return [Boolean]
    #
    # @!attribute [rw] description
    #   A description of whether updates for the WorkSpace image are pending
    #   or available.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UpdateResult AWS API Documentation
    #
    class UpdateResult < Struct.new(
      :update_available,
      :description)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] group_id
    #   The identifier of the group.
    #   @return [String]
    #
    # @!attribute [rw] user_rules
    #   One or more rules.
    #   @return [Array<Types::IpRuleItem>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UpdateRulesOfIpGroupRequest AWS API Documentation
    #
    class UpdateRulesOfIpGroupRequest < Struct.new(
      :group_id,
      :user_rules)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UpdateRulesOfIpGroupResult AWS API Documentation
    #
    class UpdateRulesOfIpGroupResult < Aws::EmptyStructure; end

    # @!attribute [rw] bundle_id
    #   The identifier of the bundle.
    #   @return [String]
    #
    # @!attribute [rw] image_id
    #   The identifier of the image.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UpdateWorkspaceBundleRequest AWS API Documentation
    #
    class UpdateWorkspaceBundleRequest < Struct.new(
      :bundle_id,
      :image_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UpdateWorkspaceBundleResult AWS API Documentation
    #
    class UpdateWorkspaceBundleResult < Aws::EmptyStructure; end

    # @!attribute [rw] image_id
    #   The identifier of the image.
    #   @return [String]
    #
    # @!attribute [rw] allow_copy_image
    #   The permission to copy the image. This permission can be revoked
    #   only after an image has been shared.
    #   @return [Boolean]
    #
    # @!attribute [rw] shared_account_id
    #   The identifier of the Amazon Web Services account to share or
    #   unshare the image with.
    #
    #   Before sharing the image, confirm that you are sharing to the
    #   correct Amazon Web Services account ID.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UpdateWorkspaceImagePermissionRequest AWS API Documentation
    #
    class UpdateWorkspaceImagePermissionRequest < Struct.new(
      :image_id,
      :allow_copy_image,
      :shared_account_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UpdateWorkspaceImagePermissionResult AWS API Documentation
    #
    class UpdateWorkspaceImagePermissionResult < Aws::EmptyStructure; end

    # @!attribute [rw] pool_id
    #   The identifier of the specified pool to update.
    #   @return [String]
    #
    # @!attribute [rw] description
    #   Describes the specified pool to update.
    #   @return [String]
    #
    # @!attribute [rw] bundle_id
    #   The identifier of the bundle.
    #   @return [String]
    #
    # @!attribute [rw] directory_id
    #   The identifier of the directory.
    #   @return [String]
    #
    # @!attribute [rw] capacity
    #   The desired capacity for the pool.
    #   @return [Types::Capacity]
    #
    # @!attribute [rw] application_settings
    #   The persistent application settings for users in the pool.
    #   @return [Types::ApplicationSettingsRequest]
    #
    # @!attribute [rw] timeout_settings
    #   Indicates the timeout settings of the specified pool.
    #   @return [Types::TimeoutSettings]
    #
    # @!attribute [rw] running_mode
    #   The desired running mode for the pool. The running mode can only be
    #   updated when the pool is in a stopped state.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UpdateWorkspacesPoolRequest AWS API Documentation
    #
    class UpdateWorkspacesPoolRequest < Struct.new(
      :pool_id,
      :description,
      :bundle_id,
      :directory_id,
      :capacity,
      :application_settings,
      :timeout_settings,
      :running_mode)
      SENSITIVE = []
      include Aws::Structure
    end

    # @!attribute [rw] workspaces_pool
    #   Describes the specified pool.
    #   @return [Types::WorkspacesPool]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UpdateWorkspacesPoolResult AWS API Documentation
    #
    class UpdateWorkspacesPoolResult < Struct.new(
      :workspaces_pool)
      SENSITIVE = []
      include Aws::Structure
    end

    # Information about the user's permission settings.
    #
    # @!attribute [rw] action
    #   Indicates the type of action.
    #   @return [String]
    #
    # @!attribute [rw] permission
    #   Indicates if the setting is enabled or disabled.
    #   @return [String]
    #
    # @!attribute [rw] maximum_length
    #   Indicates the maximum character length for the specified user
    #   setting.
    #   @return [Integer]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UserSetting AWS API Documentation
    #
    class UserSetting < Struct.new(
      :action,
      :permission,
      :maximum_length)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the user volume for a WorkSpace bundle.
    #
    # @!attribute [rw] capacity
    #   The size of the user volume.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UserStorage AWS API Documentation
    #
    class UserStorage < Struct.new(
      :capacity)
      SENSITIVE = []
      include Aws::Structure
    end

    # You either haven't provided a `TargetAccountId` or are using the same
    # value for `TargetAccountId` and `SourceAccountId`.
    #
    # @!attribute [rw] message
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ValidationException AWS API Documentation
    #
    class ValidationException < Struct.new(
      :message)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the WorkSpace application.
    #
    # @!attribute [rw] application_id
    #   The identifier of the application.
    #   @return [String]
    #
    # @!attribute [rw] created
    #   The time the application is created.
    #   @return [Time]
    #
    # @!attribute [rw] description
    #   The description of the WorkSpace application.
    #   @return [String]
    #
    # @!attribute [rw] license_type
    #   The license availability for the applications.
    #   @return [String]
    #
    # @!attribute [rw] name
    #   The name of the WorkSpace application.
    #   @return [String]
    #
    # @!attribute [rw] owner
    #   The owner of the WorkSpace application.
    #   @return [String]
    #
    # @!attribute [rw] state
    #   The status of WorkSpace application.
    #   @return [String]
    #
    # @!attribute [rw] supported_compute_type_names
    #   The supported compute types of the WorkSpace application.
    #   @return [Array<String>]
    #
    # @!attribute [rw] supported_operating_system_names
    #   The supported operating systems of the WorkSpace application.
    #   @return [Array<String>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/WorkSpaceApplication AWS API Documentation
    #
    class WorkSpaceApplication < Struct.new(
      :application_id,
      :created,
      :description,
      :license_type,
      :name,
      :owner,
      :state,
      :supported_compute_type_names,
      :supported_operating_system_names)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the WorkSpace application deployment.
    #
    # @!attribute [rw] associations
    #   The associations between the applications and the associated
    #   resources.
    #   @return [Array<Types::WorkspaceResourceAssociation>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/WorkSpaceApplicationDeployment AWS API Documentation
    #
    class WorkSpaceApplicationDeployment < Struct.new(
      :associations)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes a WorkSpace.
    #
    # @!attribute [rw] workspace_id
    #   The identifier of the WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] directory_id
    #   The identifier of the Directory Service directory for the WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] user_name
    #   The user for the WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] ip_address
    #   The IP address of the WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] state
    #   The operational state of the WorkSpace.
    #
    #   * `PENDING` – The WorkSpace is in a waiting state (for example, the
    #     WorkSpace is being created).
    #
    #   * `AVAILABLE` – The WorkSpace is running and has passed the health
    #     checks.
    #
    #   * `IMPAIRED` – Refer to `UNHEALTHY` state.
    #
    #   * `UNHEALTHY` – The WorkSpace is not responding to health checks.
    #
    #   * `REBOOTING` – The WorkSpace is being rebooted (restarted).
    #
    #   * `STARTING` – The WorkSpace is starting up and health checks are
    #     being run.
    #
    #   * `REBUILDING` – The WorkSpace is being rebuilt.
    #
    #   * `RESTORING` – The WorkSpace is being restored.
    #
    #   * `MAINTENANCE` – The WorkSpace is undergoing scheduled maintenance
    #     by Amazon Web Services.
    #
    #   * `ADMIN_MAINTENANCE` – The WorkSpace is undergoing maintenance by
    #     the WorkSpaces administrator.
    #
    #   * `TERMINATING` – The WorkSpace is being deleted.
    #
    #   * `TERMINATED` – The WorkSpace has been deleted.
    #
    #   * `SUSPENDED` – The WorkSpace has been suspended for image creation.
    #
    #   * `UPDATING` – The WorkSpace is undergoing an update.
    #
    #   * `STOPPING` – The WorkSpace is being stopped.
    #
    #   * `STOPPED` – The WorkSpace has been stopped.
    #
    #   * `ERROR ` – The WorkSpace is an error state (for example, an error
    #     occurred during startup).
    #
    #   <note markdown="1"> After a WorkSpace is terminated, the `TERMINATED` state is returned
    #   only briefly before the WorkSpace directory metadata is cleaned up,
    #   so this state is rarely returned. To confirm that a WorkSpace is
    #   terminated, check for the WorkSpace ID by using [
    #   DescribeWorkSpaces][1]. If the WorkSpace ID isn't returned, then
    #   the WorkSpace has been successfully terminated.
    #
    #    </note>
    #
    #
    #
    #   [1]: https://docs.aws.amazon.com/workspaces/latest/api/API_DescribeWorkspaces.html
    #   @return [String]
    #
    # @!attribute [rw] bundle_id
    #   The identifier of the bundle used to create the WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] subnet_id
    #   The identifier of the subnet for the WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] error_message
    #   The text of the error message that is returned if the WorkSpace
    #   cannot be created.
    #   @return [String]
    #
    # @!attribute [rw] error_code
    #   The error code that is returned if the WorkSpace cannot be created.
    #   @return [String]
    #
    # @!attribute [rw] computer_name
    #   The name of the WorkSpace, as seen by the operating system. The
    #   format of this name varies. For more information, see [ Launch a
    #   WorkSpace][1].
    #
    #
    #
    #   [1]: https://docs.aws.amazon.com/workspaces/latest/adminguide/launch-workspaces-tutorials.html
    #   @return [String]
    #
    # @!attribute [rw] volume_encryption_key
    #   The ARN of the symmetric KMS key used to encrypt data stored on your
    #   WorkSpace. Amazon WorkSpaces does not support asymmetric KMS keys.
    #   @return [String]
    #
    # @!attribute [rw] user_volume_encryption_enabled
    #   Indicates whether the data stored on the user volume is encrypted.
    #   @return [Boolean]
    #
    # @!attribute [rw] root_volume_encryption_enabled
    #   Indicates whether the data stored on the root volume is encrypted.
    #   @return [Boolean]
    #
    # @!attribute [rw] workspace_name
    #   The name of the user-decoupled WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] workspace_properties
    #   The properties of the WorkSpace.
    #   @return [Types::WorkspaceProperties]
    #
    # @!attribute [rw] modification_states
    #   The modification states of the WorkSpace.
    #   @return [Array<Types::ModificationState>]
    #
    # @!attribute [rw] related_workspaces
    #   The standby WorkSpace or primary WorkSpace related to the specified
    #   WorkSpace.
    #   @return [Array<Types::RelatedWorkspaceProperties>]
    #
    # @!attribute [rw] data_replication_settings
    #   Indicates the settings of the data replication.
    #   @return [Types::DataReplicationSettings]
    #
    # @!attribute [rw] standby_workspaces_properties
    #   The properties of the standby WorkSpace
    #   @return [Array<Types::StandbyWorkspacesProperties>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/Workspace AWS API Documentation
    #
    class Workspace < Struct.new(
      :workspace_id,
      :directory_id,
      :user_name,
      :ip_address,
      :state,
      :bundle_id,
      :subnet_id,
      :error_message,
      :error_code,
      :computer_name,
      :volume_encryption_key,
      :user_volume_encryption_enabled,
      :root_volume_encryption_enabled,
      :workspace_name,
      :workspace_properties,
      :modification_states,
      :related_workspaces,
      :data_replication_settings,
      :standby_workspaces_properties)
      SENSITIVE = []
      include Aws::Structure
    end

    # The device types and operating systems that can be used to access a
    # WorkSpace. For more information, see [Amazon WorkSpaces Client Network
    # Requirements][1].
    #
    #
    #
    # [1]: https://docs.aws.amazon.com/workspaces/latest/adminguide/workspaces-network-requirements.html
    #
    # @!attribute [rw] device_type_windows
    #   Indicates whether users can use Windows clients to access their
    #   WorkSpaces.
    #   @return [String]
    #
    # @!attribute [rw] device_type_osx
    #   Indicates whether users can use macOS clients to access their
    #   WorkSpaces.
    #   @return [String]
    #
    # @!attribute [rw] device_type_web
    #   Indicates whether users can access their WorkSpaces through a web
    #   browser.
    #   @return [String]
    #
    # @!attribute [rw] device_type_ios
    #   Indicates whether users can use iOS devices to access their
    #   WorkSpaces.
    #   @return [String]
    #
    # @!attribute [rw] device_type_android
    #   Indicates whether users can use Android and Android-compatible
    #   Chrome OS devices to access their WorkSpaces.
    #   @return [String]
    #
    # @!attribute [rw] device_type_chrome_os
    #   Indicates whether users can use Chromebooks to access their
    #   WorkSpaces.
    #   @return [String]
    #
    # @!attribute [rw] device_type_zero_client
    #   Indicates whether users can use zero client devices to access their
    #   WorkSpaces.
    #   @return [String]
    #
    # @!attribute [rw] device_type_linux
    #   Indicates whether users can use Linux clients to access their
    #   WorkSpaces.
    #   @return [String]
    #
    # @!attribute [rw] device_type_work_spaces_thin_client
    #   Indicates whether users can access their WorkSpaces through a
    #   WorkSpaces Thin Client.
    #   @return [String]
    #
    # @!attribute [rw] access_endpoint_config
    #   Specifies the configuration for accessing the WorkSpace.
    #   @return [Types::AccessEndpointConfig]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/WorkspaceAccessProperties AWS API Documentation
    #
    class WorkspaceAccessProperties < Struct.new(
      :device_type_windows,
      :device_type_osx,
      :device_type_web,
      :device_type_ios,
      :device_type_android,
      :device_type_chrome_os,
      :device_type_zero_client,
      :device_type_linux,
      :device_type_work_spaces_thin_client,
      :access_endpoint_config)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes a WorkSpace bundle.
    #
    # @!attribute [rw] bundle_id
    #   The identifier of the bundle.
    #   @return [String]
    #
    # @!attribute [rw] name
    #   The name of the bundle.
    #   @return [String]
    #
    # @!attribute [rw] owner
    #   The owner of the bundle. This is the account identifier of the
    #   owner, or `AMAZON` if the bundle is provided by Amazon Web Services.
    #   @return [String]
    #
    # @!attribute [rw] description
    #   The description of the bundle.
    #   @return [String]
    #
    # @!attribute [rw] image_id
    #   The identifier of the image that was used to create the bundle.
    #   @return [String]
    #
    # @!attribute [rw] root_storage
    #   The size of the root volume.
    #   @return [Types::RootStorage]
    #
    # @!attribute [rw] user_storage
    #   The size of the user volume.
    #   @return [Types::UserStorage]
    #
    # @!attribute [rw] compute_type
    #   The compute type of the bundle. For more information, see [Amazon
    #   WorkSpaces Bundles][1].
    #
    #
    #
    #   [1]: http://aws.amazon.com/workspaces/details/#Amazon_WorkSpaces_Bundles
    #   @return [Types::ComputeType]
    #
    # @!attribute [rw] last_updated_time
    #   The last time that the bundle was updated.
    #   @return [Time]
    #
    # @!attribute [rw] creation_time
    #   The time when the bundle was created.
    #   @return [Time]
    #
    # @!attribute [rw] state
    #   The state of the WorkSpace bundle.
    #   @return [String]
    #
    # @!attribute [rw] bundle_type
    #   The type of WorkSpace bundle.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/WorkspaceBundle AWS API Documentation
    #
    class WorkspaceBundle < Struct.new(
      :bundle_id,
      :name,
      :owner,
      :description,
      :image_id,
      :root_storage,
      :user_storage,
      :compute_type,
      :last_updated_time,
      :creation_time,
      :state,
      :bundle_type)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the connection status of a WorkSpace.
    #
    # @!attribute [rw] workspace_id
    #   The identifier of the WorkSpace.
    #   @return [String]
    #
    # @!attribute [rw] connection_state
    #   The connection state of the WorkSpace. The connection state is
    #   unknown if the WorkSpace is stopped.
    #   @return [String]
    #
    # @!attribute [rw] connection_state_check_timestamp
    #   The timestamp of the connection status check.
    #   @return [Time]
    #
    # @!attribute [rw] last_known_user_connection_timestamp
    #   The timestamp of the last known user connection.
    #   @return [Time]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/WorkspaceConnectionStatus AWS API Documentation
    #
    class WorkspaceConnectionStatus < Struct.new(
      :workspace_id,
      :connection_state,
      :connection_state_check_timestamp,
      :last_known_user_connection_timestamp)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the default properties that are used for creating
    # WorkSpaces. For more information, see [Update Directory Details for
    # Your WorkSpaces][1].
    #
    #
    #
    # [1]: https://docs.aws.amazon.com/workspaces/latest/adminguide/update-directory-details.html
    #
    # @!attribute [rw] enable_internet_access
    #   Indicates whether internet access is enabled for your WorkSpaces.
    #   @return [Boolean]
    #
    # @!attribute [rw] default_ou
    #   The default organizational unit (OU) for your WorkSpaces
    #   directories. This string must be the full Lightweight Directory
    #   Access Protocol (LDAP) distinguished name for the target domain and
    #   OU. It must be in the form `"OU=value,DC=value,DC=value"`, where
    #   *value* is any string of characters, and the number of domain
    #   components (DCs) is two or more. For example,
    #   `OU=WorkSpaces_machines,DC=machines,DC=example,DC=com`.
    #
    #   * To avoid errors, certain characters in the distinguished name must
    #     be escaped. For more information, see [ Distinguished Names][1] in
    #     the Microsoft documentation.
    #
    #   * The API doesn't validate whether the OU exists.
    #
    #
    #
    #   [1]: https://docs.microsoft.com/previous-versions/windows/desktop/ldap/distinguished-names
    #   @return [String]
    #
    # @!attribute [rw] custom_security_group_id
    #   The identifier of your custom security group.
    #   @return [String]
    #
    # @!attribute [rw] user_enabled_as_local_administrator
    #   Indicates whether users are local administrators of their
    #   WorkSpaces.
    #   @return [Boolean]
    #
    # @!attribute [rw] enable_maintenance_mode
    #   Indicates whether maintenance mode is enabled for your WorkSpaces.
    #   For more information, see [WorkSpace Maintenance][1].
    #
    #
    #
    #   [1]: https://docs.aws.amazon.com/workspaces/latest/adminguide/workspace-maintenance.html
    #   @return [Boolean]
    #
    # @!attribute [rw] instance_iam_role_arn
    #   Indicates the IAM role ARN of the instance.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/WorkspaceCreationProperties AWS API Documentation
    #
    class WorkspaceCreationProperties < Struct.new(
      :enable_internet_access,
      :default_ou,
      :custom_security_group_id,
      :user_enabled_as_local_administrator,
      :enable_maintenance_mode,
      :instance_iam_role_arn)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes a directory that is used with Amazon WorkSpaces.
    #
    # @!attribute [rw] directory_id
    #   The directory identifier.
    #   @return [String]
    #
    # @!attribute [rw] alias
    #   The directory alias.
    #   @return [String]
    #
    # @!attribute [rw] directory_name
    #   The name of the directory.
    #   @return [String]
    #
    # @!attribute [rw] registration_code
    #   The registration code for the directory. This is the code that users
    #   enter in their Amazon WorkSpaces client application to connect to
    #   the directory.
    #   @return [String]
    #
    # @!attribute [rw] subnet_ids
    #   The identifiers of the subnets used with the directory.
    #   @return [Array<String>]
    #
    # @!attribute [rw] dns_ip_addresses
    #   The IP addresses of the DNS servers for the directory.
    #   @return [Array<String>]
    #
    # @!attribute [rw] customer_user_name
    #   The user name for the service account.
    #   @return [String]
    #
    # @!attribute [rw] iam_role_id
    #   The identifier of the IAM role. This is the role that allows Amazon
    #   WorkSpaces to make calls to other services, such as Amazon EC2, on
    #   your behalf.
    #   @return [String]
    #
    # @!attribute [rw] directory_type
    #   The directory type.
    #   @return [String]
    #
    # @!attribute [rw] workspace_security_group_id
    #   The identifier of the security group that is assigned to new
    #   WorkSpaces.
    #   @return [String]
    #
    # @!attribute [rw] state
    #   The state of the directory's registration with Amazon WorkSpaces.
    #   After a directory is deregistered, the `DEREGISTERED` state is
    #   returned very briefly before the directory metadata is cleaned up,
    #   so this state is rarely returned. To confirm that a directory is
    #   deregistered, check for the directory ID by using [
    #   DescribeWorkspaceDirectories][1]. If the directory ID isn't
    #   returned, then the directory has been successfully deregistered.
    #
    #
    #
    #   [1]: https://docs.aws.amazon.com/workspaces/latest/api/API_DescribeWorkspaceDirectories.html
    #   @return [String]
    #
    # @!attribute [rw] workspace_creation_properties
    #   The default creation properties for all WorkSpaces in the directory.
    #   @return [Types::DefaultWorkspaceCreationProperties]
    #
    # @!attribute [rw] ip_group_ids
    #   The identifiers of the IP access control groups associated with the
    #   directory.
    #   @return [Array<String>]
    #
    # @!attribute [rw] workspace_access_properties
    #   The devices and operating systems that users can use to access
    #   WorkSpaces.
    #   @return [Types::WorkspaceAccessProperties]
    #
    # @!attribute [rw] tenancy
    #   Specifies whether the directory is dedicated or shared. To use Bring
    #   Your Own License (BYOL), this value must be set to `DEDICATED`. For
    #   more information, see [Bring Your Own Windows Desktop Images][1].
    #
    #
    #
    #   [1]: https://docs.aws.amazon.com/workspaces/latest/adminguide/byol-windows-images.html
    #   @return [String]
    #
    # @!attribute [rw] selfservice_permissions
    #   The default self-service permissions for WorkSpaces in the
    #   directory.
    #   @return [Types::SelfservicePermissions]
    #
    # @!attribute [rw] saml_properties
    #   Describes the enablement status, user access URL, and relay state
    #   parameter name that are used for configuring federation with an SAML
    #   2.0 identity provider.
    #   @return [Types::SamlProperties]
    #
    # @!attribute [rw] certificate_based_auth_properties
    #   The certificate-based authentication properties used to authenticate
    #   SAML 2.0 Identity Provider (IdP) user identities to Active Directory
    #   for WorkSpaces login.
    #   @return [Types::CertificateBasedAuthProperties]
    #
    # @!attribute [rw] endpoint_encryption_mode
    #   Endpoint encryption mode that allows you to configure the specified
    #   directory between Standard TLS and FIPS 140-2 validated mode.
    #   @return [String]
    #
    # @!attribute [rw] microsoft_entra_config
    #   Specifies details about Microsoft Entra configurations.
    #   @return [Types::MicrosoftEntraConfig]
    #
    # @!attribute [rw] workspace_directory_name
    #   The name fo the WorkSpace directory.
    #   @return [String]
    #
    # @!attribute [rw] workspace_directory_description
    #   The description of the WorkSpace directory
    #   @return [String]
    #
    # @!attribute [rw] user_identity_type
    #   Indicates the identity type of the specifired user.
    #   @return [String]
    #
    # @!attribute [rw] workspace_type
    #   Indicates whether the directory's WorkSpace type is personal or
    #   pools.
    #   @return [String]
    #
    # @!attribute [rw] idc_config
    #   Specifies details about identity center configurations.
    #   @return [Types::IDCConfig]
    #
    # @!attribute [rw] active_directory_config
    #   Information about the Active Directory config.
    #   @return [Types::ActiveDirectoryConfig]
    #
    # @!attribute [rw] streaming_properties
    #   The streaming properties to configure.
    #   @return [Types::StreamingProperties]
    #
    # @!attribute [rw] error_message
    #   The error message returned.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/WorkspaceDirectory AWS API Documentation
    #
    class WorkspaceDirectory < Struct.new(
      :directory_id,
      :alias,
      :directory_name,
      :registration_code,
      :subnet_ids,
      :dns_ip_addresses,
      :customer_user_name,
      :iam_role_id,
      :directory_type,
      :workspace_security_group_id,
      :state,
      :workspace_creation_properties,
      :ip_group_ids,
      :workspace_access_properties,
      :tenancy,
      :selfservice_permissions,
      :saml_properties,
      :certificate_based_auth_properties,
      :endpoint_encryption_mode,
      :microsoft_entra_config,
      :workspace_directory_name,
      :workspace_directory_description,
      :user_identity_type,
      :workspace_type,
      :idc_config,
      :active_directory_config,
      :streaming_properties,
      :error_message)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes a WorkSpace image.
    #
    # @!attribute [rw] image_id
    #   The identifier of the image.
    #   @return [String]
    #
    # @!attribute [rw] name
    #   The name of the image.
    #   @return [String]
    #
    # @!attribute [rw] description
    #   The description of the image.
    #   @return [String]
    #
    # @!attribute [rw] operating_system
    #   The operating system that the image is running.
    #   @return [Types::OperatingSystem]
    #
    # @!attribute [rw] state
    #   The status of the image.
    #   @return [String]
    #
    # @!attribute [rw] required_tenancy
    #   Specifies whether the image is running on dedicated hardware. When
    #   Bring Your Own License (BYOL) is enabled, this value is set to
    #   `DEDICATED`. For more information, see [Bring Your Own Windows
    #   Desktop Images][1].
    #
    #
    #
    #   [1]: https://docs.aws.amazon.com/workspaces/latest/adminguide/byol-windows-images.html
    #   @return [String]
    #
    # @!attribute [rw] error_code
    #   The error code that is returned for the image.
    #   @return [String]
    #
    # @!attribute [rw] error_message
    #   The text of the error message that is returned for the image.
    #   @return [String]
    #
    # @!attribute [rw] created
    #   The date when the image was created. If the image has been shared,
    #   the Amazon Web Services account that the image has been shared with
    #   sees the original creation date of the image.
    #   @return [Time]
    #
    # @!attribute [rw] owner_account_id
    #   The identifier of the Amazon Web Services account that owns the
    #   image.
    #   @return [String]
    #
    # @!attribute [rw] updates
    #   The updates (if any) that are available for the specified image.
    #   @return [Types::UpdateResult]
    #
    # @!attribute [rw] error_details
    #   Additional details of the error returned for the image, including
    #   the possible causes of the errors and troubleshooting information.
    #   @return [Array<Types::ErrorDetails>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/WorkspaceImage AWS API Documentation
    #
    class WorkspaceImage < Struct.new(
      :image_id,
      :name,
      :description,
      :operating_system,
      :state,
      :required_tenancy,
      :error_code,
      :error_message,
      :created,
      :owner_account_id,
      :updates,
      :error_details)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes a WorkSpace.
    #
    # @!attribute [rw] running_mode
    #   The running mode. For more information, see [Manage the WorkSpace
    #   Running Mode][1].
    #
    #   <note markdown="1"> The `MANUAL` value is only supported by Amazon WorkSpaces Core.
    #   Contact your account team to be allow-listed to use this value. For
    #   more information, see [Amazon WorkSpaces Core][2].
    #
    #    </note>
    #
    #   Review your running mode to ensure you are using one that is optimal
    #   for your needs and budget. For more information on switching running
    #   modes, see [ Can I switch between hourly and monthly billing?][3]
    #
    #
    #
    #   [1]: https://docs.aws.amazon.com/workspaces/latest/adminguide/running-mode.html
    #   [2]: http://aws.amazon.com/workspaces/core/
    #   [3]: http://aws.amazon.com/workspaces-family/workspaces/faqs/#:~:text=Can%20I%20switch%20between%20hourly%20and%20monthly%20billing%20on%20WorkSpaces%20Personal%3F
    #   @return [String]
    #
    # @!attribute [rw] running_mode_auto_stop_timeout_in_minutes
    #   The time after a user logs off when WorkSpaces are automatically
    #   stopped. Configured in 60-minute intervals.
    #   @return [Integer]
    #
    # @!attribute [rw] root_volume_size_gib
    #   The size of the root volume. For important information about how to
    #   modify the size of the root and user volumes, see [Modify a
    #   WorkSpace][1].
    #
    #
    #
    #   [1]: https://docs.aws.amazon.com/workspaces/latest/adminguide/modify-workspaces.html
    #   @return [Integer]
    #
    # @!attribute [rw] user_volume_size_gib
    #   The size of the user storage. For important information about how to
    #   modify the size of the root and user volumes, see [Modify a
    #   WorkSpace][1].
    #
    #
    #
    #   [1]: https://docs.aws.amazon.com/workspaces/latest/adminguide/modify-workspaces.html
    #   @return [Integer]
    #
    # @!attribute [rw] compute_type_name
    #   The compute type. For more information, see [Amazon WorkSpaces
    #   Bundles][1].
    #
    #
    #
    #   [1]: http://aws.amazon.com/workspaces/details/#Amazon_WorkSpaces_Bundles
    #   @return [String]
    #
    # @!attribute [rw] protocols
    #   The protocol. For more information, see [ Protocols for Amazon
    #   WorkSpaces][1].
    #
    #   <note markdown="1"> * Only available for WorkSpaces created with PCoIP bundles.
    #
    #   * The `Protocols` property is case sensitive. Ensure you use `PCOIP`
    #     or `DCV` (formerly WSP).
    #
    #   * Unavailable for Windows 7 WorkSpaces and WorkSpaces using
    #     GPU-based bundles (Graphics, GraphicsPro, Graphics.g4dn, and
    #     GraphicsPro.g4dn).
    #
    #    </note>
    #
    #
    #
    #   [1]: https://docs.aws.amazon.com/workspaces/latest/adminguide/amazon-workspaces-protocols.html
    #   @return [Array<String>]
    #
    # @!attribute [rw] operating_system_name
    #   The name of the operating system.
    #   @return [String]
    #
    # @!attribute [rw] global_accelerator
    #   Indicates the Global Accelerator properties.
    #   @return [Types::GlobalAcceleratorForWorkSpace]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/WorkspaceProperties AWS API Documentation
    #
    class WorkspaceProperties < Struct.new(
      :running_mode,
      :running_mode_auto_stop_timeout_in_minutes,
      :root_volume_size_gib,
      :user_volume_size_gib,
      :compute_type_name,
      :protocols,
      :operating_system_name,
      :global_accelerator)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the information used to create a WorkSpace.
    #
    # @!attribute [rw] directory_id
    #   The identifier of the Directory Service directory for the WorkSpace.
    #   You can use DescribeWorkspaceDirectories to list the available
    #   directories.
    #   @return [String]
    #
    # @!attribute [rw] user_name
    #   The user name of the user for the WorkSpace. This user name must
    #   exist in the Directory Service directory for the WorkSpace.
    #
    #   The username is not case-sensitive, but we recommend matching the
    #   case in the Directory Service directory to avoid potential
    #   incompatibilities.
    #
    #   The reserved keyword, `[UNDEFINED]`, is used when creating
    #   user-decoupled WorkSpaces.
    #   @return [String]
    #
    # @!attribute [rw] bundle_id
    #   The identifier of the bundle for the WorkSpace. You can use
    #   DescribeWorkspaceBundles to list the available bundles.
    #   @return [String]
    #
    # @!attribute [rw] volume_encryption_key
    #   The ARN of the symmetric KMS key used to encrypt data stored on your
    #   WorkSpace. Amazon WorkSpaces does not support asymmetric KMS keys.
    #   @return [String]
    #
    # @!attribute [rw] user_volume_encryption_enabled
    #   Indicates whether the data stored on the user volume is encrypted.
    #   @return [Boolean]
    #
    # @!attribute [rw] root_volume_encryption_enabled
    #   Indicates whether the data stored on the root volume is encrypted.
    #   @return [Boolean]
    #
    # @!attribute [rw] workspace_properties
    #   The WorkSpace properties.
    #   @return [Types::WorkspaceProperties]
    #
    # @!attribute [rw] tags
    #   The tags for the WorkSpace.
    #   @return [Array<Types::Tag>]
    #
    # @!attribute [rw] workspace_name
    #   The name of the user-decoupled WorkSpace.
    #
    #   <note markdown="1"> `WorkspaceName` is required if `UserName` is `[UNDEFINED]` for
    #   user-decoupled WorkSpaces. `WorkspaceName` is not applicable if
    #   `UserName` is specified for user-assigned WorkSpaces.
    #
    #    </note>
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/WorkspaceRequest AWS API Documentation
    #
    class WorkspaceRequest < Struct.new(
      :directory_id,
      :user_name,
      :bundle_id,
      :volume_encryption_key,
      :user_volume_encryption_enabled,
      :root_volume_encryption_enabled,
      :workspace_properties,
      :tags,
      :workspace_name)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes the association between an application and a WorkSpace
    # resource.
    #
    # @!attribute [rw] associated_resource_id
    #   The identifier of the associated resource.
    #   @return [String]
    #
    # @!attribute [rw] associated_resource_type
    #   The resource types of the associated resource.
    #   @return [String]
    #
    # @!attribute [rw] created
    #   The time the association is created.
    #   @return [Time]
    #
    # @!attribute [rw] last_updated_time
    #   The time the association status was last updated.
    #   @return [Time]
    #
    # @!attribute [rw] state
    #   The status of the WorkSpace resource association.
    #   @return [String]
    #
    # @!attribute [rw] state_reason
    #   The reason the association deployment failed.
    #   @return [Types::AssociationStateReason]
    #
    # @!attribute [rw] workspace_id
    #   The identifier of the WorkSpace.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/WorkspaceResourceAssociation AWS API Documentation
    #
    class WorkspaceResourceAssociation < Struct.new(
      :associated_resource_id,
      :associated_resource_type,
      :created,
      :last_updated_time,
      :state,
      :state_reason,
      :workspace_id)
      SENSITIVE = []
      include Aws::Structure
    end

    # The workspaces\_DefaultRole role could not be found. If this is the
    # first time you are registering a directory, you will need to create
    # the workspaces\_DefaultRole role before you can register a directory.
    # For more information, see [Creating the workspaces\_DefaultRole
    # Role][1].
    #
    #
    #
    # [1]: https://docs.aws.amazon.com/workspaces/latest/adminguide/workspaces-access-control.html#create-default-role
    #
    # @!attribute [rw] message
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/WorkspacesDefaultRoleNotFoundException AWS API Documentation
    #
    class WorkspacesDefaultRoleNotFoundException < Struct.new(
      :message)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes an IP access control group.
    #
    # @!attribute [rw] group_id
    #   The identifier of the group.
    #   @return [String]
    #
    # @!attribute [rw] group_name
    #   The name of the group.
    #   @return [String]
    #
    # @!attribute [rw] group_desc
    #   The description of the group.
    #   @return [String]
    #
    # @!attribute [rw] user_rules
    #   The rules.
    #   @return [Array<Types::IpRuleItem>]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/WorkspacesIpGroup AWS API Documentation
    #
    class WorkspacesIpGroup < Struct.new(
      :group_id,
      :group_name,
      :group_desc,
      :user_rules)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes a pool of WorkSpaces.
    #
    # @!attribute [rw] pool_id
    #   The identifier of a pool.
    #   @return [String]
    #
    # @!attribute [rw] pool_arn
    #   The Amazon Resource Name (ARN) for the pool.
    #   @return [String]
    #
    # @!attribute [rw] capacity_status
    #   The capacity status for the pool
    #   @return [Types::CapacityStatus]
    #
    # @!attribute [rw] pool_name
    #   The name of the pool.
    #   @return [String]
    #
    # @!attribute [rw] description
    #   The description of the pool.
    #   @return [String]
    #
    # @!attribute [rw] state
    #   The current state of the pool.
    #   @return [String]
    #
    # @!attribute [rw] created_at
    #   The time the pool was created.
    #   @return [Time]
    #
    # @!attribute [rw] bundle_id
    #   The identifier of the bundle used by the pool.
    #   @return [String]
    #
    # @!attribute [rw] directory_id
    #   The identifier of the directory used by the pool.
    #   @return [String]
    #
    # @!attribute [rw] errors
    #   The pool errors.
    #   @return [Array<Types::WorkspacesPoolError>]
    #
    # @!attribute [rw] application_settings
    #   The persistent application settings for users of the pool.
    #   @return [Types::ApplicationSettingsResponse]
    #
    # @!attribute [rw] timeout_settings
    #   The amount of time that a pool session remains active after users
    #   disconnect. If they try to reconnect to the pool session after a
    #   disconnection or network interruption within this time interval,
    #   they are connected to their previous session. Otherwise, they are
    #   connected to a new session with a new pool instance.
    #   @return [Types::TimeoutSettings]
    #
    # @!attribute [rw] running_mode
    #   The running mode of the pool.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/WorkspacesPool AWS API Documentation
    #
    class WorkspacesPool < Struct.new(
      :pool_id,
      :pool_arn,
      :capacity_status,
      :pool_name,
      :description,
      :state,
      :created_at,
      :bundle_id,
      :directory_id,
      :errors,
      :application_settings,
      :timeout_settings,
      :running_mode)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes a pool error.
    #
    # @!attribute [rw] error_code
    #   The error code.
    #   @return [String]
    #
    # @!attribute [rw] error_message
    #   The error message.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/WorkspacesPoolError AWS API Documentation
    #
    class WorkspacesPoolError < Struct.new(
      :error_code,
      :error_message)
      SENSITIVE = []
      include Aws::Structure
    end

    # Describes a pool session.
    #
    # @!attribute [rw] authentication_type
    #   The authentication method. The user is authenticated using a
    #   WorkSpaces Pools URL (API) or SAML 2.0 federation (SAML).
    #   @return [String]
    #
    # @!attribute [rw] connection_state
    #   Specifies whether a user is connected to the pool session.
    #   @return [String]
    #
    # @!attribute [rw] session_id
    #   The identifier of the session.
    #   @return [String]
    #
    # @!attribute [rw] instance_id
    #   The identifier for the instance hosting the session.
    #   @return [String]
    #
    # @!attribute [rw] pool_id
    #   The identifier of the pool.
    #   @return [String]
    #
    # @!attribute [rw] expiration_time
    #   The time that the pool session ended.
    #   @return [Time]
    #
    # @!attribute [rw] network_access_configuration
    #   Describes the network details of the pool.
    #   @return [Types::NetworkAccessConfiguration]
    #
    # @!attribute [rw] start_time
    #   The time that the pool sission started.
    #   @return [Time]
    #
    # @!attribute [rw] user_id
    #   The identifier of the user.
    #   @return [String]
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/WorkspacesPoolSession AWS API Documentation
    #
    class WorkspacesPoolSession < Struct.new(
      :authentication_type,
      :connection_state,
      :session_id,
      :instance_id,
      :pool_id,
      :expiration_time,
      :network_access_configuration,
      :start_time,
      :user_id)
      SENSITIVE = []
      include Aws::Structure
    end

  end
end

