// Code generated by smithy-go-codegen DO NOT EDIT.

package types

import (
	smithydocument "github.com/aws/smithy-go/document"
	"time"
)

// Describes an interface VPC endpoint (interface endpoint) that lets you create a
// private connection between the virtual private cloud (VPC) that you specify and
// WorkSpaces Applications. When you specify an interface endpoint for a stack,
// users of the stack can connect to WorkSpaces Applications only through that
// endpoint. When you specify an interface endpoint for an image builder,
// administrators can connect to the image builder only through that endpoint.
type AccessEndpoint struct {

	// The type of interface endpoint.
	//
	// This member is required.
	EndpointType AccessEndpointType

	// The identifier (ID) of the VPC in which the interface endpoint is used.
	VpceId *string

	noSmithyDocumentSerde
}

// The collection of license usage records.
type AdminAppLicenseUsageRecord struct {

	// The billing period for the license usage record.
	//
	// This member is required.
	BillingPeriod *string

	// The type of license (for example, Microsoft Office).
	//
	// This member is required.
	LicenseType *string

	// The account ID of the owner of the license.
	//
	// This member is required.
	OwnerAWSAccountId *string

	// The date and time when the license was first used.
	//
	// This member is required.
	SubscriptionFirstUsedDate *time.Time

	// The date and time when the license was last used.
	//
	// This member is required.
	SubscriptionLastUsedDate *time.Time

	// The ARN of the user who used the license-included application.
	//
	// This member is required.
	UserArn *string

	// The ID of the user who used the license-included application.
	//
	// This member is required.
	UserId *string

	noSmithyDocumentSerde
}

// Describes an app block.
//
// App blocks are a WorkSpaces Applications resource that stores the details about
// the virtual hard disk in an S3 bucket. It also stores the setup script with
// details about how to mount the virtual hard disk. The virtual hard disk includes
// the application binaries and other files necessary to launch your applications.
// Multiple applications can be assigned to a single app block.
//
// This is only supported for Elastic fleets.
type AppBlock struct {

	// The ARN of the app block.
	//
	// This member is required.
	Arn *string

	// The name of the app block.
	//
	// This member is required.
	Name *string

	// The errors of the app block.
	AppBlockErrors []ErrorDetails

	// The created time of the app block.
	CreatedTime *time.Time

	// The description of the app block.
	Description *string

	// The display name of the app block.
	DisplayName *string

	// The packaging type of the app block.
	PackagingType PackagingType

	// The post setup script details of the app block.
	//
	// This only applies to app blocks with PackagingType APPSTREAM2 .
	PostSetupScriptDetails *ScriptDetails

	// The setup script details of the app block.
	//
	// This only applies to app blocks with PackagingType CUSTOM .
	SetupScriptDetails *ScriptDetails

	// The source S3 location of the app block.
	SourceS3Location *S3Location

	// The state of the app block.
	//
	// An app block with WorkSpaces Applications packaging will be in the INACTIVE
	// state if no application package (VHD) is assigned to it. After an application
	// package (VHD) is created by an app block builder for an app block, it becomes
	// ACTIVE .
	//
	// Custom app blocks are always in the ACTIVE state and no action is required to
	// use them.
	State AppBlockState

	noSmithyDocumentSerde
}

// Describes an app block builder.
type AppBlockBuilder struct {

	// The ARN of the app block builder.
	//
	// This member is required.
	Arn *string

	// The instance type of the app block builder.
	//
	// This member is required.
	InstanceType *string

	// The name of the app block builder.
	//
	// This member is required.
	Name *string

	// The platform of the app block builder.
	//
	// WINDOWS_SERVER_2019 is the only valid value.
	//
	// This member is required.
	Platform AppBlockBuilderPlatformType

	// The state of the app block builder.
	//
	// This member is required.
	State AppBlockBuilderState

	// The VPC configuration for the app block builder.
	//
	// This member is required.
	VpcConfig *VpcConfig

	// The list of interface VPC endpoint (interface endpoint) objects. Administrators
	// can connect to the app block builder only through the specified endpoints.
	AccessEndpoints []AccessEndpoint

	// The app block builder errors.
	AppBlockBuilderErrors []ResourceError

	// The creation time of the app block builder.
	CreatedTime *time.Time

	// The description of the app block builder.
	Description *string

	// Indicates whether Instance Metadata Service Version 1 (IMDSv1) is disabled for
	// the app block builder.
	DisableIMDSV1 *bool

	// The display name of the app block builder.
	DisplayName *string

	// Indicates whether default internet access is enabled for the app block builder.
	EnableDefaultInternetAccess *bool

	// The ARN of the IAM role that is applied to the app block builder.
	IamRoleArn *string

	// The state change reason.
	StateChangeReason *AppBlockBuilderStateChangeReason

	noSmithyDocumentSerde
}

// Describes an association between an app block builder and app block.
type AppBlockBuilderAppBlockAssociation struct {

	// The ARN of the app block.
	//
	// This member is required.
	AppBlockArn *string

	// The name of the app block builder.
	//
	// This member is required.
	AppBlockBuilderName *string

	noSmithyDocumentSerde
}

// Describes the reason why the last app block builder state change occurred.
type AppBlockBuilderStateChangeReason struct {

	// The state change reason code.
	Code AppBlockBuilderStateChangeReasonCode

	// The state change reason message.
	Message *string

	noSmithyDocumentSerde
}

// Describes an application in the application catalog.
type Application struct {

	// The app block ARN of the application.
	AppBlockArn *string

	// The ARN of the application.
	Arn *string

	// The time at which the application was created within the app block.
	CreatedTime *time.Time

	// The description of the application.
	Description *string

	// The application name to display.
	DisplayName *string

	// If there is a problem, the application can be disabled after image creation.
	Enabled *bool

	// The S3 location of the application icon.
	IconS3Location *S3Location

	// The URL for the application icon. This URL might be time-limited.
	IconURL *string

	// The instance families for the application.
	InstanceFamilies []string

	// The arguments that are passed to the application at launch.
	LaunchParameters *string

	// The path to the application executable in the instance.
	LaunchPath *string

	// Additional attributes that describe the application.
	Metadata map[string]string

	// The name of the application.
	Name *string

	// The platforms on which the application can run.
	Platforms []PlatformType

	// The working directory for the application.
	WorkingDirectory *string

	noSmithyDocumentSerde
}

// Configuration for an application in the imported image's application catalog.
// This structure defines how applications appear and launch for users.
type ApplicationConfig struct {

	// The absolute path to the executable file that launches the application. This is
	// a required field that can be 1-32767 characters to support Windows extended file
	// paths. Use escaped file path strings like
	// "C:\\\\Windows\\\\System32\\\\notepad.exe".
	//
	// This member is required.
	AbsoluteAppPath *string

	// The name of the application. This is a required field that must be unique
	// within the application catalog and between 1-100 characters, matching the
	// pattern ^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,99}$.
	//
	// This member is required.
	Name *string

	// The absolute path to the icon file for the application. This field is optional
	// and can be 1-32767 characters. If not provided, the icon is derived from the
	// executable. Use PNG images with proper transparency for the best user
	// experience.
	AbsoluteIconPath *string

	// The absolute path to the prewarm manifest file for this application. This field
	// is optional and only applicable when using application-specific manifests. The
	// path can be 1-32767 characters and should point to a text file containing file
	// paths to prewarm.
	AbsoluteManifestPath *string

	// The display name shown to users for this application. This field is optional
	// and can be 0-100 characters, matching the pattern ^[a-zA-Z0-9][a-zA-Z0-9_.
	// -]{0,99}$.
	DisplayName *string

	// The launch parameters to pass to the application executable. This field is
	// optional and can be 0-1024 characters. Use escaped strings with the full list of
	// required parameters, such as PowerShell script paths or command-line arguments.
	LaunchParameters *string

	// The working directory to use when launching the application. This field is
	// optional and can be 0-32767 characters. Use escaped file path strings like
	// "C:\\\\Path\\\\To\\\\Working\\\\Directory".
	WorkingDirectory *string

	noSmithyDocumentSerde
}

// Describes the application fleet association.
type ApplicationFleetAssociation struct {

	// The ARN of the application associated with the fleet.
	//
	// This member is required.
	ApplicationArn *string

	// The name of the fleet associated with the application.
	//
	// This member is required.
	FleetName *string

	noSmithyDocumentSerde
}

// The persistent application settings for users of a stack.
type ApplicationSettings struct {

	// Enables or disables persistent application settings for users during their
	// streaming sessions.
	//
	// This member is required.
	Enabled *bool

	// 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 stacks by specifying the same settings group for each stack.
	SettingsGroup *string

	noSmithyDocumentSerde
}

// Describes the persistent application settings for users of a stack.
type ApplicationSettingsResponse struct {

	// Specifies whether persistent application settings are enabled for users during
	// their streaming sessions.
	Enabled *bool

	// 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 AWS Region, an S3 bucket is created. The bucket is unique to the AWS account
	// and the Region.
	S3BucketName *string

	// The path prefix for the S3 bucket where users’ persistent application settings
	// are stored.
	SettingsGroup *string

	noSmithyDocumentSerde
}

// The certificate-based authentication properties used to authenticate SAML 2.0
// Identity Provider (IdP) user identities to Active Directory domain-joined
// streaming instances. Fallback is turned on by default when certificate-based
// authentication is Enabled . Fallback allows users to log in using their AD
// domain password if certificate-based authentication is unsuccessful, or to
// unlock a desktop lock screen. Enabled_no_directory_login_fallback enables
// certificate-based authentication, but does not allow users to log in using their
// AD domain password. Users will be disconnected to re-authenticate using
// certificates.
type CertificateBasedAuthProperties struct {

	// The ARN of the AWS Certificate Manager Private CA resource.
	CertificateAuthorityArn *string

	// The status of the certificate-based authentication properties.
	Status CertificateBasedAuthStatus

	noSmithyDocumentSerde
}

// Describes the capacity for a fleet.
type ComputeCapacity struct {

	// The desired number of streaming instances.
	DesiredInstances *int32

	// The desired number of user sessions for a multi-session fleet. This is not
	// allowed for single-session fleets.
	//
	// When you create a fleet, you must set either the DesiredSessions or
	// DesiredInstances attribute, based on the type of fleet you create. You can’t
	// define both attributes or leave both attributes blank.
	DesiredSessions *int32

	noSmithyDocumentSerde
}

// Describes the capacity status for a fleet.
type ComputeCapacityStatus struct {

	// The desired number of streaming instances.
	//
	// This member is required.
	Desired *int32

	// The number of user sessions currently being used for streaming sessions. This
	// only applies to multi-session fleets.
	ActiveUserSessions *int32

	// The total number of session slots that are available for streaming or are
	// currently streaming.
	//
	// ActualUserSessionCapacity = AvailableUserSessionCapacity + ActiveUserSessions
	//
	// This only applies to multi-session fleets.
	ActualUserSessions *int32

	// The number of currently available instances that can be used to stream sessions.
	Available *int32

	// The number of idle session slots currently available for user sessions.
	//
	// AvailableUserSessionCapacity = ActualUserSessionCapacity - ActiveUserSessions
	//
	// This only applies to multi-session fleets.
	AvailableUserSessions *int32

	// The total number of sessions slots that are either running or pending. This
	// represents the total number of concurrent streaming sessions your fleet can
	// support in a steady state.
	//
	// DesiredUserSessionCapacity = ActualUserSessionCapacity +
	// PendingUserSessionCapacity
	//
	// This only applies to multi-session fleets.
	DesiredUserSessions *int32

	// The number of instances in use for streaming.
	InUse *int32

	// The total number of simultaneous streaming instances that are running.
	Running *int32

	noSmithyDocumentSerde
}

// Describes the configuration information required to join fleets and image
// builders to Microsoft Active Directory domains.
type DirectoryConfig struct {

	// The fully qualified name of the directory (for example, corp.example.com).
	//
	// This member is required.
	DirectoryName *string

	// The certificate-based authentication properties used to authenticate SAML 2.0
	// Identity Provider (IdP) user identities to Active Directory domain-joined
	// streaming instances. Fallback is turned on by default when certificate-based
	// authentication is Enabled . Fallback allows users to log in using their AD
	// domain password if certificate-based authentication is unsuccessful, or to
	// unlock a desktop lock screen. Enabled_no_directory_login_fallback enables
	// certificate-based authentication, but does not allow users to log in using their
	// AD domain password. Users will be disconnected to re-authenticate using
	// certificates.
	CertificateBasedAuthProperties *CertificateBasedAuthProperties

	// The time the directory configuration was created.
	CreatedTime *time.Time

	// The distinguished names of the organizational units for computer accounts.
	OrganizationalUnitDistinguishedNames []string

	// The credentials for the service account used by the fleet or image builder to
	// connect to the directory.
	ServiceAccountCredentials *ServiceAccountCredentials

	noSmithyDocumentSerde
}

// Describes the configuration information required to join fleets and image
// builders to Microsoft Active Directory domains.
type DomainJoinInfo struct {

	// The fully qualified name of the directory (for example, corp.example.com).
	DirectoryName *string

	// The distinguished name of the organizational unit for computer accounts.
	OrganizationalUnitDistinguishedName *string

	noSmithyDocumentSerde
}

// The application associated to an entitlement. Access is controlled based on
// user attributes.
type EntitledApplication struct {

	// The identifier of the application.
	//
	// This member is required.
	ApplicationIdentifier *string

	noSmithyDocumentSerde
}

// Specifies an entitlement. Entitlements control access to specific applications
// within a stack, based on user attributes. Entitlements apply to SAML 2.0
// federated user identities. WorkSpaces Applications user pool and streaming URL
// users are entitled to all applications in a stack. Entitlements don't apply to
// the desktop stream view application, or to applications managed by a dynamic app
// provider using the Dynamic Application Framework.
type Entitlement struct {

	// Specifies whether all or selected apps are entitled.
	//
	// This member is required.
	AppVisibility AppVisibility

	// The attributes of the entitlement.
	//
	// This member is required.
	Attributes []EntitlementAttribute

	// The name of the entitlement.
	//
	// This member is required.
	Name *string

	// The name of the stack with which the entitlement is associated.
	//
	// This member is required.
	StackName *string

	// The time when the entitlement was created.
	CreatedTime *time.Time

	// The description of the entitlement.
	Description *string

	// The time when the entitlement was last modified.
	LastModifiedTime *time.Time

	noSmithyDocumentSerde
}

// An attribute associated with an entitlement. Application entitlements work by
// matching a supported SAML 2.0 attribute name to a value when a user identity
// federates to a WorkSpaces Applications SAML application.
type EntitlementAttribute struct {

	// A supported AWS IAM SAML PrincipalTag attribute that is matched to the
	// associated value when a user identity federates into a WorkSpaces Applications
	// SAML application.
	//
	// The following are valid values:
	//
	//   - roles
	//
	//   - department
	//
	//   - organization
	//
	//   - groups
	//
	//   - title
	//
	//   - costCenter
	//
	//   - userType
	//
	// This member is required.
	Name *string

	// A value that is matched to a supported SAML attribute name when a user identity
	// federates into a WorkSpaces Applications SAML application.
	//
	// This member is required.
	Value *string

	noSmithyDocumentSerde
}

// The error details.
type ErrorDetails struct {

	// The error code.
	ErrorCode *string

	// The error message.
	ErrorMessage *string

	noSmithyDocumentSerde
}

// Information about an export image task, including its current state,
// timestamps, and any error details.
type ExportImageTask struct {

	// The name of the EC2 AMI that will be created by this export task.
	//
	// This member is required.
	AmiName *string

	// The date and time when the export image task was created.
	//
	// This member is required.
	CreatedDate *time.Time

	// The ARN of the WorkSpaces Applications image being exported.
	//
	// This member is required.
	ImageArn *string

	// The unique identifier for the export image task. Use this ID to track the
	// task's progress and retrieve its details.
	//
	// This member is required.
	TaskId *string

	// The description that will be applied to the exported EC2 AMI.
	AmiDescription *string

	// The ID of the EC2 AMI that was created by this export task. This field is only
	// populated when the task completes successfully.
	AmiId *string

	// Details about any errors that occurred during the export process. This field is
	// only populated when the task fails.
	ErrorDetails []ErrorDetails

	// The current state of the export image task, such as PENDING, RUNNING,
	// COMPLETED, or FAILED.
	State ExportImageTaskState

	// The tags that will be applied to the exported EC2 AMI.
	TagSpecifications map[string]string

	noSmithyDocumentSerde
}

// A filter for narrowing down the results when listing export image tasks.
// Filters allow you to specify criteria such as task state or creation date.
type Filter struct {

	// The name of the filter. Valid filter names depend on the operation being
	// performed.
	//
	// This member is required.
	Name *string

	// The values for the filter. Multiple values can be specified for a single filter
	// name.
	//
	// This member is required.
	Values []string

	noSmithyDocumentSerde
}

// Describes a fleet.
type Fleet struct {

	// The Amazon Resource Name (ARN) for the fleet.
	//
	// This member is required.
	Arn *string

	// The capacity status for the fleet.
	//
	// This member is required.
	ComputeCapacityStatus *ComputeCapacityStatus

	// The instance type to use when launching fleet instances. The following instance
	// types are available:
	//
	//   - stream.standard.small
	//
	//   - stream.standard.medium
	//
	//   - stream.standard.large
	//
	//   - stream.compute.large
	//
	//   - stream.compute.xlarge
	//
	//   - stream.compute.2xlarge
	//
	//   - stream.compute.4xlarge
	//
	//   - stream.compute.8xlarge
	//
	//   - stream.memory.large
	//
	//   - stream.memory.xlarge
	//
	//   - stream.memory.2xlarge
	//
	//   - stream.memory.4xlarge
	//
	//   - stream.memory.8xlarge
	//
	//   - stream.memory.z1d.large
	//
	//   - stream.memory.z1d.xlarge
	//
	//   - stream.memory.z1d.2xlarge
	//
	//   - stream.memory.z1d.3xlarge
	//
	//   - stream.memory.z1d.6xlarge
	//
	//   - stream.memory.z1d.12xlarge
	//
	//   - stream.graphics.g4dn.xlarge
	//
	//   - stream.graphics.g4dn.2xlarge
	//
	//   - stream.graphics.g4dn.4xlarge
	//
	//   - stream.graphics.g4dn.8xlarge
	//
	//   - stream.graphics.g4dn.12xlarge
	//
	//   - stream.graphics.g4dn.16xlarge
	//
	//   - stream.graphics.g5.xlarge
	//
	//   - stream.graphics.g5.2xlarge
	//
	//   - stream.graphics.g5.4xlarge
	//
	//   - stream.graphics.g5.8xlarge
	//
	//   - stream.graphics.g5.16xlarge
	//
	//   - stream.graphics.g5.12xlarge
	//
	//   - stream.graphics.g5.24xlarge
	//
	//   - stream.graphics.g6.xlarge
	//
	//   - stream.graphics.g6.2xlarge
	//
	//   - stream.graphics.g6.4xlarge
	//
	//   - stream.graphics.g6.8xlarge
	//
	//   - stream.graphics.g6.16xlarge
	//
	//   - stream.graphics.g6.12xlarge
	//
	//   - stream.graphics.g6.24xlarge
	//
	//   - stream.graphics.gr6.4xlarge
	//
	//   - stream.graphics.gr6.8xlarge
	//
	//   - stream.graphics.g6f.large
	//
	//   - stream.graphics.g6f.xlarge
	//
	//   - stream.graphics.g6f.2xlarge
	//
	//   - stream.graphics.g6f.4xlarge
	//
	//   - stream.graphics.gr6f.4xlarge
	//
	// This member is required.
	InstanceType *string

	// The name of the fleet.
	//
	// This member is required.
	Name *string

	// The current state for the fleet.
	//
	// This member is required.
	State FleetState

	// The time the fleet was created.
	CreatedTime *time.Time

	// The description to display.
	Description *string

	// Indicates whether Instance Metadata Service Version 1 (IMDSv1) is disabled for
	// the fleet.
	DisableIMDSV1 *bool

	// The amount of time that a streaming session remains active after users
	// disconnect. If they try to reconnect to the streaming 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 streaming instance.
	//
	// Specify a value between 60 and 36000.
	DisconnectTimeoutInSeconds *int32

	// The fleet name to display.
	DisplayName *string

	// The name of the directory and organizational unit (OU) to use to join the fleet
	// to a Microsoft Active Directory domain.
	DomainJoinInfo *DomainJoinInfo

	// Indicates whether default internet access is enabled for the fleet.
	EnableDefaultInternetAccess *bool

	// The fleet errors.
	FleetErrors []FleetError

	// The fleet type.
	//
	// ALWAYS_ON Provides users with instant-on access to their apps. You are charged
	// for all running instances in your fleet, even if no users are streaming apps.
	//
	// ON_DEMAND Provide users with access to applications after they connect, which
	// takes one to two minutes. You are charged for instance streaming when users are
	// connected and a small hourly fee for instances that are not streaming apps.
	FleetType FleetType

	// The ARN of the IAM role that is applied to the fleet. To assume a role, the
	// fleet instance calls the AWS Security Token Service (STS) AssumeRole API
	// operation and passes the ARN of the role to use. The operation creates a new
	// session with temporary credentials. WorkSpaces Applications retrieves the
	// temporary credentials and creates the appstream_machine_role credential profile
	// on the instance.
	//
	// For more information, see [Using an IAM Role to Grant Permissions to Applications and Scripts Running on WorkSpaces Applications Streaming Instances] in the Amazon WorkSpaces Applications Administration
	// Guide.
	//
	// [Using an IAM Role to Grant Permissions to Applications and Scripts Running on WorkSpaces Applications Streaming Instances]: https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html
	IamRoleArn *string

	// The amount of time that users can be idle (inactive) before they are
	// disconnected from their streaming session and the DisconnectTimeoutInSeconds
	// time interval begins. Users are notified before they are disconnected due to
	// inactivity. If users try to reconnect to the streaming session before the time
	// interval specified in DisconnectTimeoutInSeconds elapses, they are connected to
	// their previous session. Users are considered idle when they stop providing
	// keyboard or mouse input during their streaming session. File uploads and
	// downloads, audio in, audio out, and pixels changing do not qualify as user
	// activity. If users continue to be idle after the time interval in
	// IdleDisconnectTimeoutInSeconds elapses, they are disconnected.
	//
	// To prevent users from being disconnected due to inactivity, specify a value of
	// 0. Otherwise, specify a value between 60 and 36000. The default value is 0.
	//
	// If you enable this feature, we recommend that you specify a value that
	// corresponds exactly to a whole number of minutes (for example, 60, 120, and
	// 180). If you don't do this, the value is rounded to the nearest minute. For
	// example, if you specify a value of 70, users are disconnected after 1 minute of
	// inactivity. If you specify a value that is at the midpoint between two different
	// minutes, the value is rounded up. For example, if you specify a value of 90,
	// users are disconnected after 2 minutes of inactivity.
	IdleDisconnectTimeoutInSeconds *int32

	// The ARN for the public, private, or shared image.
	ImageArn *string

	// The name of the image used to create the fleet.
	ImageName *string

	// The maximum number of concurrent sessions for the fleet.
	MaxConcurrentSessions *int32

	// The maximum number of user sessions on an instance. This only applies to
	// multi-session fleets.
	MaxSessionsPerInstance *int32

	// The maximum amount of time that a streaming session can remain active, in
	// seconds. 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.
	//
	// Specify a value between 600 and 360000.
	MaxUserDurationInSeconds *int32

	// The platform of the fleet.
	Platform PlatformType

	// The current configuration of the root volume for fleet instances, including the
	// storage size in GB.
	RootVolumeConfig *VolumeConfig

	// The S3 location of the session scripts configuration zip file. This only
	// applies to Elastic fleets.
	SessionScriptS3Location *S3Location

	// The WorkSpaces Applications view that is displayed to your users when they
	// stream from the fleet. When APP is specified, only the windows of applications
	// opened by users display. When DESKTOP is specified, the standard desktop that
	// is provided by the operating system displays.
	//
	// The default value is APP .
	StreamView StreamView

	// The USB device filter strings associated with the fleet.
	UsbDeviceFilterStrings []string

	// The VPC configuration for the fleet.
	VpcConfig *VpcConfig

	noSmithyDocumentSerde
}

// Describes a fleet error.
type FleetError struct {

	// The error code.
	ErrorCode FleetErrorCode

	// The error message.
	ErrorMessage *string

	noSmithyDocumentSerde
}

// Describes an image.
type Image struct {

	// The name of the image.
	//
	// This member is required.
	Name *string

	// The applications associated with the image.
	Applications []Application

	// The version of the WorkSpaces Applications agent to use for instances that are
	// launched from this image.
	AppstreamAgentVersion *string

	// The ARN of the image.
	Arn *string

	// The ARN of the image from which this image was created.
	BaseImageArn *string

	// The time the image was created.
	CreatedTime *time.Time

	// The description to display.
	Description *string

	// The image name to display.
	DisplayName *string

	// Indicates whether dynamic app providers are enabled within an WorkSpaces
	// Applications image or not.
	DynamicAppProvidersEnabled DynamicAppProvidersEnabled

	// The name of the image builder that was used to create the private image. If the
	// image is shared, copied, or updated by using Managed Image Updates, this value
	// is null.
	ImageBuilderName *string

	// Indicates whether an image builder can be launched from this image.
	ImageBuilderSupported *bool

	// Describes the errors that are returned when a new image can't be created.
	ImageErrors []ResourceError

	// The permissions to provide to the destination AWS account for the specified
	// image.
	ImagePermissions *ImagePermissions

	// Indicates whether the image is shared with another account ID.
	ImageSharedWithOthers ImageSharedWithOthers

	// The type of the image. Images created through AMI import have type "custom",
	// while WorkSpaces Applications provided images have type "native". Custom images
	// support additional instance types including GeneralPurpose, MemoryOptimized,
	// ComputeOptimized, and Accelerated instance families.
	ImageType ImageType

	// Indicates whether the image is using the latest WorkSpaces Applications agent
	// version or not.
	LatestAppstreamAgentVersion LatestAppstreamAgentVersion

	// Indicates whether the image includes license-included applications.
	ManagedSoftwareIncluded *bool

	// The operating system platform of the image.
	Platform PlatformType

	// The release date of the public base image. For private images, this date is the
	// release date of the base image from which the image was created.
	PublicBaseImageReleasedDate *time.Time

	// The image starts in the PENDING state. If image creation succeeds, the state is
	// AVAILABLE . If image creation fails, the state is FAILED .
	State ImageState

	// The reason why the last state change occurred.
	StateChangeReason *ImageStateChangeReason

	// The supported instances families that determine which image a customer can use
	// when the customer launches a fleet or image builder. The following instances
	// families are supported:
	//
	//   - General Purpose
	//
	//   - Compute Optimized
	//
	//   - Memory Optimized
	//
	//   - Graphics G4
	//
	//   - Graphics G5
	//
	//   - Graphics G6
	SupportedInstanceFamilies []string

	// Indicates whether the image is public or private.
	Visibility VisibilityType

	noSmithyDocumentSerde
}

// Describes a virtual machine that is used to create an image.
type ImageBuilder struct {

	// The name of the image builder.
	//
	// This member is required.
	Name *string

	// The list of virtual private cloud (VPC) interface endpoint objects.
	// Administrators can connect to the image builder only through the specified
	// endpoints.
	AccessEndpoints []AccessEndpoint

	// The version of the WorkSpaces Applications agent that is currently being used
	// by the image builder.
	AppstreamAgentVersion *string

	// The ARN for the image builder.
	Arn *string

	// The time stamp when the image builder was created.
	CreatedTime *time.Time

	// The description to display.
	Description *string

	// Indicates whether Instance Metadata Service Version 1 (IMDSv1) is disabled for
	// the image builder.
	DisableIMDSV1 *bool

	// The image builder name to display.
	DisplayName *string

	// The name of the directory and organizational unit (OU) to use to join the image
	// builder to a Microsoft Active Directory domain.
	DomainJoinInfo *DomainJoinInfo

	// Enables or disables default internet access for the image builder.
	EnableDefaultInternetAccess *bool

	// The ARN of the IAM role that is applied to the image builder. To assume a role,
	// the image builder calls the AWS Security Token Service (STS) AssumeRole API
	// operation and passes the ARN of the role to use. The operation creates a new
	// session with temporary credentials. WorkSpaces Applications retrieves the
	// temporary credentials and creates the appstream_machine_role credential profile
	// on the instance.
	//
	// For more information, see [Using an IAM Role to Grant Permissions to Applications and Scripts Running on WorkSpaces Applications Streaming Instances] in the Amazon WorkSpaces Applications Administration
	// Guide.
	//
	// [Using an IAM Role to Grant Permissions to Applications and Scripts Running on WorkSpaces Applications Streaming Instances]: https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html
	IamRoleArn *string

	// The ARN of the image from which this builder was created.
	ImageArn *string

	// The image builder errors.
	ImageBuilderErrors []ResourceError

	// The instance type for the image builder. The following instance types are
	// available:
	//
	//   - stream.standard.small
	//
	//   - stream.standard.medium
	//
	//   - stream.standard.large
	//
	//   - stream.compute.large
	//
	//   - stream.compute.xlarge
	//
	//   - stream.compute.2xlarge
	//
	//   - stream.compute.4xlarge
	//
	//   - stream.compute.8xlarge
	//
	//   - stream.memory.large
	//
	//   - stream.memory.xlarge
	//
	//   - stream.memory.2xlarge
	//
	//   - stream.memory.4xlarge
	//
	//   - stream.memory.8xlarge
	//
	//   - stream.memory.z1d.large
	//
	//   - stream.memory.z1d.xlarge
	//
	//   - stream.memory.z1d.2xlarge
	//
	//   - stream.memory.z1d.3xlarge
	//
	//   - stream.memory.z1d.6xlarge
	//
	//   - stream.memory.z1d.12xlarge
	//
	//   - stream.graphics.g4dn.xlarge
	//
	//   - stream.graphics.g4dn.2xlarge
	//
	//   - stream.graphics.g4dn.4xlarge
	//
	//   - stream.graphics.g4dn.8xlarge
	//
	//   - stream.graphics.g4dn.12xlarge
	//
	//   - stream.graphics.g4dn.16xlarge
	//
	//   - stream.graphics.g5.xlarge
	//
	//   - stream.graphics.g5.2xlarge
	//
	//   - stream.graphics.g5.4xlarge
	//
	//   - stream.graphics.g5.8xlarge
	//
	//   - stream.graphics.g5.16xlarge
	//
	//   - stream.graphics.g5.12xlarge
	//
	//   - stream.graphics.g5.24xlarge
	//
	//   - stream.graphics.g6.xlarge
	//
	//   - stream.graphics.g6.2xlarge
	//
	//   - stream.graphics.g6.4xlarge
	//
	//   - stream.graphics.g6.8xlarge
	//
	//   - stream.graphics.g6.16xlarge
	//
	//   - stream.graphics.g6.12xlarge
	//
	//   - stream.graphics.g6.24xlarge
	//
	//   - stream.graphics.gr6.4xlarge
	//
	//   - stream.graphics.gr6.8xlarge
	//
	//   - stream.graphics.g6f.large
	//
	//   - stream.graphics.g6f.xlarge
	//
	//   - stream.graphics.g6f.2xlarge
	//
	//   - stream.graphics.g6f.4xlarge
	//
	//   - stream.graphics.gr6f.4xlarge
	InstanceType *string

	// Indicates whether the image builder is using the latest WorkSpaces Applications
	// agent version or not.
	LatestAppstreamAgentVersion LatestAppstreamAgentVersion

	// Describes the network details of the fleet or image builder instance.
	NetworkAccessConfiguration *NetworkAccessConfiguration

	// The operating system platform of the image builder.
	Platform PlatformType

	// The current configuration of the root volume for the image builder, including
	// the storage size in GB.
	RootVolumeConfig *VolumeConfig

	// The state of the image builder.
	State ImageBuilderState

	// The reason why the last state change occurred.
	StateChangeReason *ImageBuilderStateChangeReason

	// The VPC configuration of the image builder.
	VpcConfig *VpcConfig

	noSmithyDocumentSerde
}

// Describes the reason why the last image builder state change occurred.
type ImageBuilderStateChangeReason struct {

	// The state change reason code.
	Code ImageBuilderStateChangeReasonCode

	// The state change reason message.
	Message *string

	noSmithyDocumentSerde
}

// Describes the permissions for an image.
type ImagePermissions struct {

	// Indicates whether the image can be used for a fleet.
	AllowFleet *bool

	// Indicates whether the image can be used for an image builder.
	AllowImageBuilder *bool

	noSmithyDocumentSerde
}

// Describes the reason why the last image state change occurred.
type ImageStateChangeReason struct {

	// The state change reason code.
	Code ImageStateChangeReasonCode

	// The state change reason message.
	Message *string

	noSmithyDocumentSerde
}

// Describes the error that is returned when a usage report can't be generated.
type LastReportGenerationExecutionError struct {

	// The error code for the error that is returned when a usage report can't be
	// generated.
	ErrorCode UsageReportExecutionErrorCode

	// The error message for the error that is returned when a usage report can't be
	// generated.
	ErrorMessage *string

	noSmithyDocumentSerde
}

// Describes the network details of the fleet or image builder instance.
type NetworkAccessConfiguration struct {

	// 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.
	EniId *string

	// The IPv6 addresses assigned to the elastic network interface. This field
	// supports IPv6 connectivity for WorkSpaces Applications instances.
	EniIpv6Addresses []string

	// The private IP address of the elastic network interface that is attached to
	// instances in your VPC.
	EniPrivateIpAddress *string

	noSmithyDocumentSerde
}

// Describes a resource error.
type ResourceError struct {

	// The error code.
	ErrorCode FleetErrorCode

	// The error message.
	ErrorMessage *string

	// The time the error occurred.
	ErrorTimestamp *time.Time

	noSmithyDocumentSerde
}

// Configuration for runtime validation of imported images. This structure
// specifies the instance type to use for testing the imported image's streaming
// capabilities.
type RuntimeValidationConfig struct {

	// The instance type to use for runtime validation testing. It's recommended to
	// use the same instance type you plan to use for your fleet to ensure accurate
	// validation results.
	IntendedInstanceType *string

	noSmithyDocumentSerde
}

// Describes the S3 location.
type S3Location struct {

	// The S3 bucket of the S3 object.
	//
	// This member is required.
	S3Bucket *string

	// The S3 key of the S3 object.
	//
	// This is required when used for the following:
	//
	//   - IconS3Location (Actions: CreateApplication and UpdateApplication)
	//
	//   - SessionScriptS3Location (Actions: CreateFleet and UpdateFleet)
	//
	//   - ScriptDetails (Actions: CreateAppBlock)
	//
	//   - SourceS3Location when creating an app block with CUSTOM PackagingType
	//   (Actions: CreateAppBlock)
	//
	//   - SourceS3Location when creating an app block with APPSTREAM2 PackagingType,
	//   and using an existing application package (VHD file). In this case, S3Key
	//   refers to the VHD file. If a new application package is required, then S3Key
	//   is not required. (Actions: CreateAppBlock)
	S3Key *string

	noSmithyDocumentSerde
}

// Describes the details of the script.
type ScriptDetails struct {

	// The run path for the script.
	//
	// This member is required.
	ExecutablePath *string

	// The S3 object location for the script.
	//
	// This member is required.
	ScriptS3Location *S3Location

	// The run timeout, in seconds, for the script.
	//
	// This member is required.
	TimeoutInSeconds *int32

	// The runtime parameters passed to the run path for the script.
	ExecutableParameters *string

	noSmithyDocumentSerde
}

// Describes the credentials for the service account used by the fleet or image
// builder to connect to the directory.
type ServiceAccountCredentials struct {

	// The user name of the account. This account must have the following privileges:
	// create computer objects, join computers to the domain, and change/reset the
	// password on descendant computer objects for the organizational units specified.
	//
	// This member is required.
	AccountName *string

	// The password for the account.
	//
	// This member is required.
	AccountPassword *string

	noSmithyDocumentSerde
}

// Describes a streaming session.
type Session struct {

	// The name of the fleet for the streaming session.
	//
	// This member is required.
	FleetName *string

	// The identifier of the streaming session.
	//
	// This member is required.
	Id *string

	// The name of the stack for the streaming session.
	//
	// This member is required.
	StackName *string

	// The current state of the streaming session.
	//
	// This member is required.
	State SessionState

	// The identifier of the user for whom the session was created.
	//
	// This member is required.
	UserId *string

	// The authentication method. The user is authenticated using a streaming URL ( API
	// ) or SAML 2.0 federation ( SAML ).
	AuthenticationType AuthenticationType

	// Specifies whether a user is connected to the streaming session.
	ConnectionState SessionConnectionState

	// The identifier for the instance hosting the session.
	InstanceId *string

	// The time when the streaming session is set to expire. This time is based on the
	// MaxUserDurationinSeconds value, which determines the maximum length of time that
	// a streaming session can run. A streaming session might end earlier than the time
	// specified in SessionMaxExpirationTime , when the DisconnectTimeOutInSeconds
	// elapses or the user chooses to end his or her session. If the
	// DisconnectTimeOutInSeconds elapses, or the user chooses to end his or her
	// session, the streaming instance is terminated and the streaming session ends.
	MaxExpirationTime *time.Time

	// The network details for the streaming session.
	NetworkAccessConfiguration *NetworkAccessConfiguration

	// The time when a streaming instance is dedicated for the user.
	StartTime *time.Time

	noSmithyDocumentSerde
}

// Describes the permissions that are available to the specified AWS account for a
// shared image.
type SharedImagePermissions struct {

	// Describes the permissions for a shared image.
	//
	// This member is required.
	ImagePermissions *ImagePermissions

	// The 12-digit identifier of the AWS account with which the image is shared.
	//
	// This member is required.
	SharedAccountId *string

	noSmithyDocumentSerde
}

// The association between a license-included application and a resource.
type SoftwareAssociations struct {

	// The error details for failed deployments of the license-included application.
	DeploymentError []ErrorDetails

	// The name of the license-included application.
	//
	// Possible values include the following:
	//
	//   - Microsoft_Office_2021_LTSC_Professional_Plus_32Bit
	//
	//   - Microsoft_Office_2021_LTSC_Professional_Plus_64Bit
	//
	//   - Microsoft_Office_2024_LTSC_Professional_Plus_32Bit
	//
	//   - Microsoft_Office_2024_LTSC_Professional_Plus_64Bit
	//
	//   - Microsoft_Visio_2021_LTSC_Professional_32Bit
	//
	//   - Microsoft_Visio_2021_LTSC_Professional_64Bit
	//
	//   - Microsoft_Visio_2024_LTSC_Professional_32Bit
	//
	//   - Microsoft_Visio_2024_LTSC_Professional_64Bit
	//
	//   - Microsoft_Project_2021_Professional_32Bit
	//
	//   - Microsoft_Project_2021_Professional_64Bit
	//
	//   - Microsoft_Project_2024_Professional_32Bit
	//
	//   - Microsoft_Project_2024_Professional_64Bit
	//
	//   - Microsoft_Office_2021_LTSC_Standard_32Bit
	//
	//   - Microsoft_Office_2021_LTSC_Standard_64Bit
	//
	//   - Microsoft_Office_2024_LTSC_Standard_32Bit
	//
	//   - Microsoft_Office_2024_LTSC_Standard_64Bit
	//
	//   - Microsoft_Visio_2021_LTSC_Standard_32Bit
	//
	//   - Microsoft_Visio_2021_LTSC_Standard_64Bit
	//
	//   - Microsoft_Visio_2024_LTSC_Standard_32Bit
	//
	//   - Microsoft_Visio_2024_LTSC_Standard_64Bit
	//
	//   - Microsoft_Project_2021_Standard_32Bit
	//
	//   - Microsoft_Project_2021_Standard_64Bit
	//
	//   - Microsoft_Project_2024_Standard_32Bit
	//
	//   - Microsoft_Project_2024_Standard_64Bit
	SoftwareName *string

	// The deployment status of the license-included application.
	Status SoftwareDeploymentStatus

	noSmithyDocumentSerde
}

// Describes a stack.
type Stack struct {

	// The name of the stack.
	//
	// This member is required.
	Name *string

	// The list of virtual private cloud (VPC) interface endpoint objects. Users of
	// the stack can connect to WorkSpaces Applications only through the specified
	// endpoints.
	AccessEndpoints []AccessEndpoint

	// The persistent application settings for users of the stack.
	ApplicationSettings *ApplicationSettingsResponse

	// The ARN of the stack.
	Arn *string

	// The time the stack was created.
	CreatedTime *time.Time

	// The description to display.
	Description *string

	// The stack name to display.
	DisplayName *string

	// The domains where WorkSpaces Applications streaming sessions can be embedded in
	// an iframe. You must approve the domains that you want to host embedded
	// WorkSpaces Applications streaming sessions.
	EmbedHostDomains []string

	// The URL that users are redirected to after they click the Send Feedback link.
	// If no URL is specified, no Send Feedback link is displayed.
	FeedbackURL *string

	// The URL that users are redirected to after their streaming session ends.
	RedirectURL *string

	// The errors for the stack.
	StackErrors []StackError

	// The storage connectors to enable.
	StorageConnectors []StorageConnector

	// The streaming protocol you want your stack to prefer. This can be UDP or TCP.
	// Currently, UDP is only supported in the Windows native client.
	StreamingExperienceSettings *StreamingExperienceSettings

	// The actions that are enabled or disabled for users during their streaming
	// sessions. By default these actions are enabled.
	UserSettings []UserSetting

	noSmithyDocumentSerde
}

// Describes a stack error.
type StackError struct {

	// The error code.
	ErrorCode StackErrorCode

	// The error message.
	ErrorMessage *string

	noSmithyDocumentSerde
}

// Describes a connector that enables persistent storage for users.
type StorageConnector struct {

	// The type of storage connector.
	//
	// This member is required.
	ConnectorType StorageConnectorType

	// The names of the domains for the account.
	Domains []string

	// The OneDrive for Business domains where you require admin consent when users
	// try to link their OneDrive account to WorkSpaces Applications. The attribute can
	// only be specified when ConnectorType=ONE_DRIVE.
	DomainsRequireAdminConsent []string

	// The ARN of the storage connector.
	ResourceIdentifier *string

	noSmithyDocumentSerde
}

// The streaming protocol you want your stack to prefer. This can be UDP or TCP.
// Currently, UDP is only supported in the Windows native client.
type StreamingExperienceSettings struct {

	// The preferred protocol that you want to use while streaming your application.
	PreferredProtocol PreferredProtocol

	noSmithyDocumentSerde
}

// The custom branding theme, which might include a custom logo, website links,
// and other branding to display to users.
type Theme struct {

	// The time the theme was created.
	CreatedTime *time.Time

	// The stack that has the custom branding theme.
	StackName *string

	// The state of the theme.
	State ThemeState

	// The URL of the icon that displays at the top of a user's browser tab during
	// streaming sessions.
	ThemeFaviconURL *string

	// The website links that display in the catalog page footer.
	ThemeFooterLinks []ThemeFooterLink

	// The URL of the logo that displays in the catalog page header.
	ThemeOrganizationLogoURL *string

	// The color that is used for the website links, text, buttons, and catalog page
	// background.
	ThemeStyling ThemeStyling

	// The browser tab page title.
	ThemeTitleText *string

	noSmithyDocumentSerde
}

// The website links that display in the catalog page footer.
type ThemeFooterLink struct {

	// The name of the websites that display in the catalog page footer.
	DisplayName *string

	// The URL of the websites that display in the catalog page footer.
	FooterLinkURL *string

	noSmithyDocumentSerde
}

// Describes information about the usage report subscription.
type UsageReportSubscription struct {

	// The time when the last usage report was generated.
	LastGeneratedReportDate *time.Time

	// The Amazon S3 bucket where generated reports are stored.
	//
	// If you enabled on-instance session scripts and Amazon S3 logging for your
	// session script configuration, WorkSpaces Applications created an S3 bucket to
	// store the script output. The bucket is unique to your account and Region. When
	// you enable usage reporting in this case, WorkSpaces Applications uses the same
	// bucket to store your usage reports. If you haven't already enabled on-instance
	// session scripts, when you enable usage reports, WorkSpaces Applications creates
	// a new S3 bucket.
	S3BucketName *string

	// The schedule for generating usage reports.
	Schedule UsageReportSchedule

	// The errors that were returned if usage reports couldn't be generated.
	SubscriptionErrors []LastReportGenerationExecutionError

	noSmithyDocumentSerde
}

// Describes a user in the user pool.
type User struct {

	// The authentication type for the user.
	//
	// This member is required.
	AuthenticationType AuthenticationType

	// The ARN of the user.
	Arn *string

	// The date and time the user was created in the user pool.
	CreatedTime *time.Time

	// Specifies whether the user in the user pool is enabled.
	Enabled *bool

	// The first name, or given name, of the user.
	FirstName *string

	// The last name, or surname, of the user.
	LastName *string

	// The status of the user in the user pool. The status can be one of the following:
	//
	//   - UNCONFIRMED – The user is created but not confirmed.
	//
	//   - CONFIRMED – The user is confirmed.
	//
	//   - ARCHIVED – The user is no longer active.
	//
	//   - COMPROMISED – The user is disabled because of a potential security threat.
	//
	//   - UNKNOWN – The user status is not known.
	Status *string

	// The email address of the user.
	//
	// Users' email addresses are case-sensitive.
	UserName *string

	noSmithyDocumentSerde
}

// Describes an action and whether the action is enabled or disabled for users
// during their streaming sessions.
type UserSetting struct {

	// The action that is enabled or disabled.
	//
	// This member is required.
	Action Action

	// Indicates whether the action is enabled or disabled.
	//
	// This member is required.
	Permission Permission

	// Specifies the number of characters that can be copied by end users from the
	// local device to the remote session, and to the local device from the remote
	// session.
	//
	// This can be specified only for the CLIPBOARD_COPY_FROM_LOCAL_DEVICE and
	// CLIPBOARD_COPY_TO_LOCAL_DEVICE actions.
	//
	// This defaults to 20,971,520 (20 MB) when unspecified and the permission is
	// ENABLED . This can't be specified when the permission is DISABLED .
	//
	// The value can be between 1 and 20,971,520 (20 MB).
	MaximumLength *int32

	noSmithyDocumentSerde
}

// Describes a user in the user pool and the associated stack.
type UserStackAssociation struct {

	// The authentication type for the user.
	//
	// This member is required.
	AuthenticationType AuthenticationType

	// The name of the stack that is associated with the user.
	//
	// This member is required.
	StackName *string

	// The email address of the user who is associated with the stack.
	//
	// Users' email addresses are case-sensitive.
	//
	// This member is required.
	UserName *string

	// Specifies whether a welcome email is sent to a user after the user is created
	// in the user pool.
	SendEmailNotification *bool

	noSmithyDocumentSerde
}

// Describes the error that is returned when a user can’t be associated with or
// disassociated from a stack.
type UserStackAssociationError struct {

	// The error code for the error that is returned when a user can’t be associated
	// with or disassociated from a stack.
	ErrorCode UserStackAssociationErrorCode

	// The error message for the error that is returned when a user can’t be
	// associated with or disassociated from a stack.
	ErrorMessage *string

	// Information about the user and associated stack.
	UserStackAssociation *UserStackAssociation

	noSmithyDocumentSerde
}

// Configuration for the root volume of fleet instances and image builders. This
// allows you to customize the storage capacity beyond the default 200 GB.
type VolumeConfig struct {

	// The size of the root volume in GB. Valid range is 200-500 GB. The default is
	// 200 GB, which is included in the hourly instance rate. Additional storage beyond
	// 200 GB incurs extra charges and applies to instances regardless of their running
	// state.
	VolumeSizeInGb *int32

	noSmithyDocumentSerde
}

// Describes VPC configuration information for fleets and image builders.
type VpcConfig struct {

	// The identifiers of the security groups for the fleet or image builder.
	SecurityGroupIds []string

	// The identifiers of the subnets to which a network interface is attached from
	// the fleet instance or image builder instance. Fleet instances use one or more
	// subnets. Image builder instances use one subnet.
	SubnetIds []string

	noSmithyDocumentSerde
}

type noSmithyDocumentSerde = smithydocument.NoSerde
