diff --git a/apis/nimble/2020-08-01/api-2.json b/apis/nimble/2020-08-01/api-2.json
new file mode 100644
index 00000000000..50ca66a2ec2
--- /dev/null
+++ b/apis/nimble/2020-08-01/api-2.json
@@ -0,0 +1,3650 @@
+{
+ "version":"2.0",
+ "metadata":{
+ "apiVersion":"2020-08-01",
+ "endpointPrefix":"nimble",
+ "jsonVersion":"1.1",
+ "protocol":"rest-json",
+ "serviceFullName":"AmazonNimbleStudio",
+ "serviceId":"nimble",
+ "signatureVersion":"v4",
+ "signingName":"nimble",
+ "uid":"nimble-2020-08-01"
+ },
+ "operations":{
+ "AcceptEulas":{
+ "name":"AcceptEulas",
+ "http":{
+ "method":"POST",
+ "requestUri":"/2020-08-01/studios/{studioId}/eula-acceptances",
+ "responseCode":200
+ },
+ "input":{"shape":"AcceptEulasRequest"},
+ "output":{"shape":"AcceptEulasResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "CreateLaunchProfile":{
+ "name":"CreateLaunchProfile",
+ "http":{
+ "method":"POST",
+ "requestUri":"/2020-08-01/studios/{studioId}/launch-profiles",
+ "responseCode":200
+ },
+ "input":{"shape":"CreateLaunchProfileRequest"},
+ "output":{"shape":"CreateLaunchProfileResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "CreateStreamingImage":{
+ "name":"CreateStreamingImage",
+ "http":{
+ "method":"POST",
+ "requestUri":"/2020-08-01/studios/{studioId}/streaming-images",
+ "responseCode":200
+ },
+ "input":{"shape":"CreateStreamingImageRequest"},
+ "output":{"shape":"CreateStreamingImageResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "CreateStreamingSession":{
+ "name":"CreateStreamingSession",
+ "http":{
+ "method":"POST",
+ "requestUri":"/2020-08-01/studios/{studioId}/streaming-sessions",
+ "responseCode":200
+ },
+ "input":{"shape":"CreateStreamingSessionRequest"},
+ "output":{"shape":"CreateStreamingSessionResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "CreateStreamingSessionStream":{
+ "name":"CreateStreamingSessionStream",
+ "http":{
+ "method":"POST",
+ "requestUri":"/2020-08-01/studios/{studioId}/streaming-sessions/{sessionId}/streams",
+ "responseCode":200
+ },
+ "input":{"shape":"CreateStreamingSessionStreamRequest"},
+ "output":{"shape":"CreateStreamingSessionStreamResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ],
+ "idempotent":true
+ },
+ "CreateStudio":{
+ "name":"CreateStudio",
+ "http":{
+ "method":"POST",
+ "requestUri":"/2020-08-01/studios",
+ "responseCode":200
+ },
+ "input":{"shape":"CreateStudioRequest"},
+ "output":{"shape":"CreateStudioResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "CreateStudioComponent":{
+ "name":"CreateStudioComponent",
+ "http":{
+ "method":"POST",
+ "requestUri":"/2020-08-01/studios/{studioId}/studio-components",
+ "responseCode":200
+ },
+ "input":{"shape":"CreateStudioComponentRequest"},
+ "output":{"shape":"CreateStudioComponentResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "DeleteLaunchProfile":{
+ "name":"DeleteLaunchProfile",
+ "http":{
+ "method":"DELETE",
+ "requestUri":"/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}",
+ "responseCode":200
+ },
+ "input":{"shape":"DeleteLaunchProfileRequest"},
+ "output":{"shape":"DeleteLaunchProfileResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ],
+ "idempotent":true
+ },
+ "DeleteLaunchProfileMember":{
+ "name":"DeleteLaunchProfileMember",
+ "http":{
+ "method":"DELETE",
+ "requestUri":"/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}/membership/{principalId}",
+ "responseCode":200
+ },
+ "input":{"shape":"DeleteLaunchProfileMemberRequest"},
+ "output":{"shape":"DeleteLaunchProfileMemberResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ],
+ "idempotent":true
+ },
+ "DeleteStreamingImage":{
+ "name":"DeleteStreamingImage",
+ "http":{
+ "method":"DELETE",
+ "requestUri":"/2020-08-01/studios/{studioId}/streaming-images/{streamingImageId}",
+ "responseCode":200
+ },
+ "input":{"shape":"DeleteStreamingImageRequest"},
+ "output":{"shape":"DeleteStreamingImageResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ],
+ "idempotent":true
+ },
+ "DeleteStreamingSession":{
+ "name":"DeleteStreamingSession",
+ "http":{
+ "method":"DELETE",
+ "requestUri":"/2020-08-01/studios/{studioId}/streaming-sessions/{sessionId}",
+ "responseCode":200
+ },
+ "input":{"shape":"DeleteStreamingSessionRequest"},
+ "output":{"shape":"DeleteStreamingSessionResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ],
+ "idempotent":true
+ },
+ "DeleteStudio":{
+ "name":"DeleteStudio",
+ "http":{
+ "method":"DELETE",
+ "requestUri":"/2020-08-01/studios/{studioId}",
+ "responseCode":200
+ },
+ "input":{"shape":"DeleteStudioRequest"},
+ "output":{"shape":"DeleteStudioResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ],
+ "idempotent":true
+ },
+ "DeleteStudioComponent":{
+ "name":"DeleteStudioComponent",
+ "http":{
+ "method":"DELETE",
+ "requestUri":"/2020-08-01/studios/{studioId}/studio-components/{studioComponentId}",
+ "responseCode":200
+ },
+ "input":{"shape":"DeleteStudioComponentRequest"},
+ "output":{"shape":"DeleteStudioComponentResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ],
+ "idempotent":true
+ },
+ "DeleteStudioMember":{
+ "name":"DeleteStudioMember",
+ "http":{
+ "method":"DELETE",
+ "requestUri":"/2020-08-01/studios/{studioId}/membership/{principalId}",
+ "responseCode":200
+ },
+ "input":{"shape":"DeleteStudioMemberRequest"},
+ "output":{"shape":"DeleteStudioMemberResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ],
+ "idempotent":true
+ },
+ "GetEula":{
+ "name":"GetEula",
+ "http":{
+ "method":"GET",
+ "requestUri":"/2020-08-01/eulas/{eulaId}",
+ "responseCode":200
+ },
+ "input":{"shape":"GetEulaRequest"},
+ "output":{"shape":"GetEulaResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "GetLaunchProfile":{
+ "name":"GetLaunchProfile",
+ "http":{
+ "method":"GET",
+ "requestUri":"/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}",
+ "responseCode":200
+ },
+ "input":{"shape":"GetLaunchProfileRequest"},
+ "output":{"shape":"GetLaunchProfileResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "GetLaunchProfileDetails":{
+ "name":"GetLaunchProfileDetails",
+ "http":{
+ "method":"GET",
+ "requestUri":"/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}/details",
+ "responseCode":200
+ },
+ "input":{"shape":"GetLaunchProfileDetailsRequest"},
+ "output":{"shape":"GetLaunchProfileDetailsResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "GetLaunchProfileInitialization":{
+ "name":"GetLaunchProfileInitialization",
+ "http":{
+ "method":"GET",
+ "requestUri":"/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}/init",
+ "responseCode":200
+ },
+ "input":{"shape":"GetLaunchProfileInitializationRequest"},
+ "output":{"shape":"GetLaunchProfileInitializationResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "GetLaunchProfileMember":{
+ "name":"GetLaunchProfileMember",
+ "http":{
+ "method":"GET",
+ "requestUri":"/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}/membership/{principalId}",
+ "responseCode":200
+ },
+ "input":{"shape":"GetLaunchProfileMemberRequest"},
+ "output":{"shape":"GetLaunchProfileMemberResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "GetStreamingImage":{
+ "name":"GetStreamingImage",
+ "http":{
+ "method":"GET",
+ "requestUri":"/2020-08-01/studios/{studioId}/streaming-images/{streamingImageId}",
+ "responseCode":200
+ },
+ "input":{"shape":"GetStreamingImageRequest"},
+ "output":{"shape":"GetStreamingImageResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "GetStreamingSession":{
+ "name":"GetStreamingSession",
+ "http":{
+ "method":"GET",
+ "requestUri":"/2020-08-01/studios/{studioId}/streaming-sessions/{sessionId}",
+ "responseCode":200
+ },
+ "input":{"shape":"GetStreamingSessionRequest"},
+ "output":{"shape":"GetStreamingSessionResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "GetStreamingSessionBackup":{
+ "name":"GetStreamingSessionBackup",
+ "http":{
+ "method":"GET",
+ "requestUri":"/2020-08-01/studios/{studioId}/streaming-session-backups/{backupId}",
+ "responseCode":200
+ },
+ "input":{"shape":"GetStreamingSessionBackupRequest"},
+ "output":{"shape":"GetStreamingSessionBackupResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"}
+ ]
+ },
+ "GetStreamingSessionStream":{
+ "name":"GetStreamingSessionStream",
+ "http":{
+ "method":"GET",
+ "requestUri":"/2020-08-01/studios/{studioId}/streaming-sessions/{sessionId}/streams/{streamId}",
+ "responseCode":200
+ },
+ "input":{"shape":"GetStreamingSessionStreamRequest"},
+ "output":{"shape":"GetStreamingSessionStreamResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "GetStudio":{
+ "name":"GetStudio",
+ "http":{
+ "method":"GET",
+ "requestUri":"/2020-08-01/studios/{studioId}",
+ "responseCode":200
+ },
+ "input":{"shape":"GetStudioRequest"},
+ "output":{"shape":"GetStudioResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "GetStudioComponent":{
+ "name":"GetStudioComponent",
+ "http":{
+ "method":"GET",
+ "requestUri":"/2020-08-01/studios/{studioId}/studio-components/{studioComponentId}",
+ "responseCode":200
+ },
+ "input":{"shape":"GetStudioComponentRequest"},
+ "output":{"shape":"GetStudioComponentResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "GetStudioMember":{
+ "name":"GetStudioMember",
+ "http":{
+ "method":"GET",
+ "requestUri":"/2020-08-01/studios/{studioId}/membership/{principalId}",
+ "responseCode":200
+ },
+ "input":{"shape":"GetStudioMemberRequest"},
+ "output":{"shape":"GetStudioMemberResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "ListEulaAcceptances":{
+ "name":"ListEulaAcceptances",
+ "http":{
+ "method":"GET",
+ "requestUri":"/2020-08-01/studios/{studioId}/eula-acceptances",
+ "responseCode":200
+ },
+ "input":{"shape":"ListEulaAcceptancesRequest"},
+ "output":{"shape":"ListEulaAcceptancesResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "ListEulas":{
+ "name":"ListEulas",
+ "http":{
+ "method":"GET",
+ "requestUri":"/2020-08-01/eulas",
+ "responseCode":200
+ },
+ "input":{"shape":"ListEulasRequest"},
+ "output":{"shape":"ListEulasResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "ListLaunchProfileMembers":{
+ "name":"ListLaunchProfileMembers",
+ "http":{
+ "method":"GET",
+ "requestUri":"/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}/membership",
+ "responseCode":200
+ },
+ "input":{"shape":"ListLaunchProfileMembersRequest"},
+ "output":{"shape":"ListLaunchProfileMembersResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "ListLaunchProfiles":{
+ "name":"ListLaunchProfiles",
+ "http":{
+ "method":"GET",
+ "requestUri":"/2020-08-01/studios/{studioId}/launch-profiles",
+ "responseCode":200
+ },
+ "input":{"shape":"ListLaunchProfilesRequest"},
+ "output":{"shape":"ListLaunchProfilesResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "ListStreamingImages":{
+ "name":"ListStreamingImages",
+ "http":{
+ "method":"GET",
+ "requestUri":"/2020-08-01/studios/{studioId}/streaming-images",
+ "responseCode":200
+ },
+ "input":{"shape":"ListStreamingImagesRequest"},
+ "output":{"shape":"ListStreamingImagesResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "ListStreamingSessionBackups":{
+ "name":"ListStreamingSessionBackups",
+ "http":{
+ "method":"GET",
+ "requestUri":"/2020-08-01/studios/{studioId}/streaming-session-backups",
+ "responseCode":200
+ },
+ "input":{"shape":"ListStreamingSessionBackupsRequest"},
+ "output":{"shape":"ListStreamingSessionBackupsResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"}
+ ]
+ },
+ "ListStreamingSessions":{
+ "name":"ListStreamingSessions",
+ "http":{
+ "method":"GET",
+ "requestUri":"/2020-08-01/studios/{studioId}/streaming-sessions",
+ "responseCode":200
+ },
+ "input":{"shape":"ListStreamingSessionsRequest"},
+ "output":{"shape":"ListStreamingSessionsResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "ListStudioComponents":{
+ "name":"ListStudioComponents",
+ "http":{
+ "method":"GET",
+ "requestUri":"/2020-08-01/studios/{studioId}/studio-components",
+ "responseCode":200
+ },
+ "input":{"shape":"ListStudioComponentsRequest"},
+ "output":{"shape":"ListStudioComponentsResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "ListStudioMembers":{
+ "name":"ListStudioMembers",
+ "http":{
+ "method":"GET",
+ "requestUri":"/2020-08-01/studios/{studioId}/membership",
+ "responseCode":200
+ },
+ "input":{"shape":"ListStudioMembersRequest"},
+ "output":{"shape":"ListStudioMembersResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "ListStudios":{
+ "name":"ListStudios",
+ "http":{
+ "method":"GET",
+ "requestUri":"/2020-08-01/studios",
+ "responseCode":200
+ },
+ "input":{"shape":"ListStudiosRequest"},
+ "output":{"shape":"ListStudiosResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "ListTagsForResource":{
+ "name":"ListTagsForResource",
+ "http":{
+ "method":"GET",
+ "requestUri":"/2020-08-01/tags/{resourceArn}",
+ "responseCode":200
+ },
+ "input":{"shape":"ListTagsForResourceRequest"},
+ "output":{"shape":"ListTagsForResourceResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "PutLaunchProfileMembers":{
+ "name":"PutLaunchProfileMembers",
+ "http":{
+ "method":"POST",
+ "requestUri":"/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}/membership",
+ "responseCode":200
+ },
+ "input":{"shape":"PutLaunchProfileMembersRequest"},
+ "output":{"shape":"PutLaunchProfileMembersResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "PutStudioMembers":{
+ "name":"PutStudioMembers",
+ "http":{
+ "method":"POST",
+ "requestUri":"/2020-08-01/studios/{studioId}/membership",
+ "responseCode":200
+ },
+ "input":{"shape":"PutStudioMembersRequest"},
+ "output":{"shape":"PutStudioMembersResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "StartStreamingSession":{
+ "name":"StartStreamingSession",
+ "http":{
+ "method":"POST",
+ "requestUri":"/2020-08-01/studios/{studioId}/streaming-sessions/{sessionId}/start",
+ "responseCode":200
+ },
+ "input":{"shape":"StartStreamingSessionRequest"},
+ "output":{"shape":"StartStreamingSessionResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ],
+ "idempotent":true
+ },
+ "StartStudioSSOConfigurationRepair":{
+ "name":"StartStudioSSOConfigurationRepair",
+ "http":{
+ "method":"PUT",
+ "requestUri":"/2020-08-01/studios/{studioId}/sso-configuration",
+ "responseCode":200
+ },
+ "input":{"shape":"StartStudioSSOConfigurationRepairRequest"},
+ "output":{"shape":"StartStudioSSOConfigurationRepairResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ],
+ "idempotent":true
+ },
+ "StopStreamingSession":{
+ "name":"StopStreamingSession",
+ "http":{
+ "method":"POST",
+ "requestUri":"/2020-08-01/studios/{studioId}/streaming-sessions/{sessionId}/stop",
+ "responseCode":200
+ },
+ "input":{"shape":"StopStreamingSessionRequest"},
+ "output":{"shape":"StopStreamingSessionResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ],
+ "idempotent":true
+ },
+ "TagResource":{
+ "name":"TagResource",
+ "http":{
+ "method":"POST",
+ "requestUri":"/2020-08-01/tags/{resourceArn}",
+ "responseCode":204
+ },
+ "input":{"shape":"TagResourceRequest"},
+ "output":{"shape":"TagResourceResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "UntagResource":{
+ "name":"UntagResource",
+ "http":{
+ "method":"DELETE",
+ "requestUri":"/2020-08-01/tags/{resourceArn}",
+ "responseCode":204
+ },
+ "input":{"shape":"UntagResourceRequest"},
+ "output":{"shape":"UntagResourceResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ],
+ "idempotent":true
+ },
+ "UpdateLaunchProfile":{
+ "name":"UpdateLaunchProfile",
+ "http":{
+ "method":"PATCH",
+ "requestUri":"/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}",
+ "responseCode":200
+ },
+ "input":{"shape":"UpdateLaunchProfileRequest"},
+ "output":{"shape":"UpdateLaunchProfileResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "UpdateLaunchProfileMember":{
+ "name":"UpdateLaunchProfileMember",
+ "http":{
+ "method":"PATCH",
+ "requestUri":"/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}/membership/{principalId}",
+ "responseCode":200
+ },
+ "input":{"shape":"UpdateLaunchProfileMemberRequest"},
+ "output":{"shape":"UpdateLaunchProfileMemberResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "UpdateStreamingImage":{
+ "name":"UpdateStreamingImage",
+ "http":{
+ "method":"PATCH",
+ "requestUri":"/2020-08-01/studios/{studioId}/streaming-images/{streamingImageId}",
+ "responseCode":200
+ },
+ "input":{"shape":"UpdateStreamingImageRequest"},
+ "output":{"shape":"UpdateStreamingImageResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "UpdateStudio":{
+ "name":"UpdateStudio",
+ "http":{
+ "method":"PATCH",
+ "requestUri":"/2020-08-01/studios/{studioId}",
+ "responseCode":200
+ },
+ "input":{"shape":"UpdateStudioRequest"},
+ "output":{"shape":"UpdateStudioResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ },
+ "UpdateStudioComponent":{
+ "name":"UpdateStudioComponent",
+ "http":{
+ "method":"PATCH",
+ "requestUri":"/2020-08-01/studios/{studioId}/studio-components/{studioComponentId}",
+ "responseCode":200
+ },
+ "input":{"shape":"UpdateStudioComponentRequest"},
+ "output":{"shape":"UpdateStudioComponentResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"ConflictException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"ValidationException"},
+ {"shape":"AccessDeniedException"},
+ {"shape":"InternalServerErrorException"},
+ {"shape":"ServiceQuotaExceededException"}
+ ]
+ }
+ },
+ "shapes":{
+ "AcceptEulasRequest":{
+ "type":"structure",
+ "required":["studioId"],
+ "members":{
+ "clientToken":{
+ "shape":"ClientToken",
+ "idempotencyToken":true,
+ "location":"header",
+ "locationName":"X-Amz-Client-Token"
+ },
+ "eulaIds":{"shape":"EulaIdList"},
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "AcceptEulasResponse":{
+ "type":"structure",
+ "members":{
+ "eulaAcceptances":{"shape":"EulaAcceptanceList"}
+ }
+ },
+ "AccessDeniedException":{
+ "type":"structure",
+ "members":{
+ "code":{"shape":"String"},
+ "context":{"shape":"ExceptionContext"},
+ "message":{"shape":"String"}
+ },
+ "error":{
+ "httpStatusCode":403,
+ "senderFault":true
+ },
+ "exception":true
+ },
+ "ActiveDirectoryComputerAttribute":{
+ "type":"structure",
+ "members":{
+ "name":{"shape":"ActiveDirectoryComputerAttributeName"},
+ "value":{"shape":"ActiveDirectoryComputerAttributeValue"}
+ }
+ },
+ "ActiveDirectoryComputerAttributeList":{
+ "type":"list",
+ "member":{"shape":"ActiveDirectoryComputerAttribute"},
+ "max":50,
+ "min":0,
+ "sensitive":true
+ },
+ "ActiveDirectoryComputerAttributeName":{
+ "type":"string",
+ "max":40,
+ "min":1
+ },
+ "ActiveDirectoryComputerAttributeValue":{
+ "type":"string",
+ "max":64,
+ "min":1
+ },
+ "ActiveDirectoryConfiguration":{
+ "type":"structure",
+ "members":{
+ "computerAttributes":{"shape":"ActiveDirectoryComputerAttributeList"},
+ "directoryId":{"shape":"DirectoryId"},
+ "organizationalUnitDistinguishedName":{"shape":"ActiveDirectoryOrganizationalUnitDistinguishedName"}
+ }
+ },
+ "ActiveDirectoryDnsIpAddress":{"type":"string"},
+ "ActiveDirectoryDnsIpAddressList":{
+ "type":"list",
+ "member":{"shape":"ActiveDirectoryDnsIpAddress"},
+ "max":10,
+ "min":0
+ },
+ "ActiveDirectoryOrganizationalUnitDistinguishedName":{
+ "type":"string",
+ "max":2000,
+ "min":1
+ },
+ "AutomaticTerminationMode":{
+ "type":"string",
+ "enum":[
+ "DEACTIVATED",
+ "ACTIVATED"
+ ]
+ },
+ "ClientToken":{
+ "type":"string",
+ "max":64,
+ "min":1
+ },
+ "ComputeFarmConfiguration":{
+ "type":"structure",
+ "members":{
+ "activeDirectoryUser":{"shape":"String"},
+ "endpoint":{"shape":"SensitiveString"}
+ }
+ },
+ "ConflictException":{
+ "type":"structure",
+ "members":{
+ "code":{"shape":"String"},
+ "context":{"shape":"ExceptionContext"},
+ "message":{"shape":"String"}
+ },
+ "error":{
+ "httpStatusCode":409,
+ "senderFault":true
+ },
+ "exception":true
+ },
+ "CreateLaunchProfileRequest":{
+ "type":"structure",
+ "required":[
+ "ec2SubnetIds",
+ "launchProfileProtocolVersions",
+ "name",
+ "streamConfiguration",
+ "studioComponentIds",
+ "studioId"
+ ],
+ "members":{
+ "clientToken":{
+ "shape":"ClientToken",
+ "idempotencyToken":true,
+ "location":"header",
+ "locationName":"X-Amz-Client-Token"
+ },
+ "description":{"shape":"LaunchProfileDescription"},
+ "ec2SubnetIds":{"shape":"EC2SubnetIdList"},
+ "launchProfileProtocolVersions":{"shape":"LaunchProfileProtocolVersionList"},
+ "name":{"shape":"LaunchProfileName"},
+ "streamConfiguration":{"shape":"StreamConfigurationCreate"},
+ "studioComponentIds":{"shape":"LaunchProfileStudioComponentIdList"},
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ },
+ "tags":{"shape":"Tags"}
+ }
+ },
+ "CreateLaunchProfileResponse":{
+ "type":"structure",
+ "members":{
+ "launchProfile":{"shape":"LaunchProfile"}
+ }
+ },
+ "CreateStreamingImageRequest":{
+ "type":"structure",
+ "required":[
+ "ec2ImageId",
+ "name",
+ "studioId"
+ ],
+ "members":{
+ "clientToken":{
+ "shape":"ClientToken",
+ "idempotencyToken":true,
+ "location":"header",
+ "locationName":"X-Amz-Client-Token"
+ },
+ "description":{"shape":"StreamingImageDescription"},
+ "ec2ImageId":{"shape":"EC2ImageId"},
+ "name":{"shape":"StreamingImageName"},
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ },
+ "tags":{"shape":"Tags"}
+ }
+ },
+ "CreateStreamingImageResponse":{
+ "type":"structure",
+ "members":{
+ "streamingImage":{"shape":"StreamingImage"}
+ }
+ },
+ "CreateStreamingSessionRequest":{
+ "type":"structure",
+ "required":[
+ "launchProfileId",
+ "studioId"
+ ],
+ "members":{
+ "clientToken":{
+ "shape":"ClientToken",
+ "idempotencyToken":true,
+ "location":"header",
+ "locationName":"X-Amz-Client-Token"
+ },
+ "ec2InstanceType":{"shape":"StreamingInstanceType"},
+ "launchProfileId":{"shape":"String"},
+ "ownedBy":{"shape":"String"},
+ "streamingImageId":{"shape":"StreamingImageId"},
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ },
+ "tags":{"shape":"Tags"}
+ }
+ },
+ "CreateStreamingSessionResponse":{
+ "type":"structure",
+ "members":{
+ "session":{"shape":"StreamingSession"}
+ }
+ },
+ "CreateStreamingSessionStreamRequest":{
+ "type":"structure",
+ "required":[
+ "sessionId",
+ "studioId"
+ ],
+ "members":{
+ "clientToken":{
+ "shape":"ClientToken",
+ "idempotencyToken":true,
+ "location":"header",
+ "locationName":"X-Amz-Client-Token"
+ },
+ "expirationInSeconds":{"shape":"StreamingSessionStreamExpirationInSeconds"},
+ "sessionId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"sessionId"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "CreateStreamingSessionStreamResponse":{
+ "type":"structure",
+ "members":{
+ "stream":{"shape":"StreamingSessionStream"}
+ }
+ },
+ "CreateStudioComponentRequest":{
+ "type":"structure",
+ "required":[
+ "name",
+ "studioId",
+ "type"
+ ],
+ "members":{
+ "clientToken":{
+ "shape":"ClientToken",
+ "idempotencyToken":true,
+ "location":"header",
+ "locationName":"X-Amz-Client-Token"
+ },
+ "configuration":{"shape":"StudioComponentConfiguration"},
+ "description":{"shape":"StudioComponentDescription"},
+ "ec2SecurityGroupIds":{"shape":"StudioComponentSecurityGroupIdList"},
+ "initializationScripts":{"shape":"StudioComponentInitializationScriptList"},
+ "name":{"shape":"StudioComponentName"},
+ "runtimeRoleArn":{"shape":"RoleArn"},
+ "scriptParameters":{"shape":"StudioComponentScriptParameterKeyValueList"},
+ "secureInitializationRoleArn":{"shape":"RoleArn"},
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ },
+ "subtype":{"shape":"StudioComponentSubtype"},
+ "tags":{"shape":"Tags"},
+ "type":{"shape":"StudioComponentType"}
+ }
+ },
+ "CreateStudioComponentResponse":{
+ "type":"structure",
+ "members":{
+ "studioComponent":{"shape":"StudioComponent"}
+ }
+ },
+ "CreateStudioRequest":{
+ "type":"structure",
+ "required":[
+ "adminRoleArn",
+ "displayName",
+ "studioName",
+ "userRoleArn"
+ ],
+ "members":{
+ "adminRoleArn":{"shape":"RoleArn"},
+ "clientToken":{
+ "shape":"ClientToken",
+ "idempotencyToken":true,
+ "location":"header",
+ "locationName":"X-Amz-Client-Token"
+ },
+ "displayName":{"shape":"StudioDisplayName"},
+ "studioEncryptionConfiguration":{"shape":"StudioEncryptionConfiguration"},
+ "studioName":{"shape":"StudioName"},
+ "tags":{"shape":"Tags"},
+ "userRoleArn":{"shape":"RoleArn"}
+ }
+ },
+ "CreateStudioResponse":{
+ "type":"structure",
+ "members":{
+ "studio":{"shape":"Studio"}
+ }
+ },
+ "DeleteLaunchProfileMemberRequest":{
+ "type":"structure",
+ "required":[
+ "launchProfileId",
+ "principalId",
+ "studioId"
+ ],
+ "members":{
+ "clientToken":{
+ "shape":"ClientToken",
+ "idempotencyToken":true,
+ "location":"header",
+ "locationName":"X-Amz-Client-Token"
+ },
+ "launchProfileId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"launchProfileId"
+ },
+ "principalId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"principalId"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "DeleteLaunchProfileMemberResponse":{
+ "type":"structure",
+ "members":{
+ }
+ },
+ "DeleteLaunchProfileRequest":{
+ "type":"structure",
+ "required":[
+ "launchProfileId",
+ "studioId"
+ ],
+ "members":{
+ "clientToken":{
+ "shape":"ClientToken",
+ "idempotencyToken":true,
+ "location":"header",
+ "locationName":"X-Amz-Client-Token"
+ },
+ "launchProfileId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"launchProfileId"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "DeleteLaunchProfileResponse":{
+ "type":"structure",
+ "members":{
+ "launchProfile":{"shape":"LaunchProfile"}
+ }
+ },
+ "DeleteStreamingImageRequest":{
+ "type":"structure",
+ "required":[
+ "streamingImageId",
+ "studioId"
+ ],
+ "members":{
+ "clientToken":{
+ "shape":"ClientToken",
+ "idempotencyToken":true,
+ "location":"header",
+ "locationName":"X-Amz-Client-Token"
+ },
+ "streamingImageId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"streamingImageId"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "DeleteStreamingImageResponse":{
+ "type":"structure",
+ "members":{
+ "streamingImage":{"shape":"StreamingImage"}
+ }
+ },
+ "DeleteStreamingSessionRequest":{
+ "type":"structure",
+ "required":[
+ "sessionId",
+ "studioId"
+ ],
+ "members":{
+ "clientToken":{
+ "shape":"ClientToken",
+ "idempotencyToken":true,
+ "location":"header",
+ "locationName":"X-Amz-Client-Token"
+ },
+ "sessionId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"sessionId"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "DeleteStreamingSessionResponse":{
+ "type":"structure",
+ "members":{
+ "session":{"shape":"StreamingSession"}
+ }
+ },
+ "DeleteStudioComponentRequest":{
+ "type":"structure",
+ "required":[
+ "studioComponentId",
+ "studioId"
+ ],
+ "members":{
+ "clientToken":{
+ "shape":"ClientToken",
+ "idempotencyToken":true,
+ "location":"header",
+ "locationName":"X-Amz-Client-Token"
+ },
+ "studioComponentId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioComponentId"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "DeleteStudioComponentResponse":{
+ "type":"structure",
+ "members":{
+ "studioComponent":{"shape":"StudioComponent"}
+ }
+ },
+ "DeleteStudioMemberRequest":{
+ "type":"structure",
+ "required":[
+ "principalId",
+ "studioId"
+ ],
+ "members":{
+ "clientToken":{
+ "shape":"ClientToken",
+ "idempotencyToken":true,
+ "location":"header",
+ "locationName":"X-Amz-Client-Token"
+ },
+ "principalId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"principalId"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "DeleteStudioMemberResponse":{
+ "type":"structure",
+ "members":{
+ }
+ },
+ "DeleteStudioRequest":{
+ "type":"structure",
+ "required":["studioId"],
+ "members":{
+ "clientToken":{
+ "shape":"ClientToken",
+ "idempotencyToken":true,
+ "location":"header",
+ "locationName":"X-Amz-Client-Token"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "DeleteStudioResponse":{
+ "type":"structure",
+ "required":["studio"],
+ "members":{
+ "studio":{"shape":"Studio"}
+ }
+ },
+ "DirectoryId":{"type":"string"},
+ "EC2ImageId":{
+ "type":"string",
+ "pattern":"^ami-[0-9A-z]+$"
+ },
+ "EC2SubnetId":{"type":"string"},
+ "EC2SubnetIdList":{
+ "type":"list",
+ "member":{"shape":"EC2SubnetId"},
+ "max":6,
+ "min":0
+ },
+ "Eula":{
+ "type":"structure",
+ "members":{
+ "content":{"shape":"String"},
+ "createdAt":{"shape":"Timestamp"},
+ "eulaId":{"shape":"EulaId"},
+ "name":{"shape":"EulaName"},
+ "updatedAt":{"shape":"Timestamp"}
+ }
+ },
+ "EulaAcceptance":{
+ "type":"structure",
+ "members":{
+ "acceptedAt":{"shape":"Timestamp"},
+ "acceptedBy":{"shape":"String"},
+ "accepteeId":{"shape":"String"},
+ "eulaAcceptanceId":{"shape":"EulaAcceptanceId"},
+ "eulaId":{"shape":"EulaId"}
+ }
+ },
+ "EulaAcceptanceId":{
+ "type":"string",
+ "max":22,
+ "min":0,
+ "pattern":"^[a-zA-Z0-9-_]*$"
+ },
+ "EulaAcceptanceList":{
+ "type":"list",
+ "member":{"shape":"EulaAcceptance"}
+ },
+ "EulaId":{
+ "type":"string",
+ "max":22,
+ "min":0,
+ "pattern":"^[a-zA-Z0-9-_]*$"
+ },
+ "EulaIdList":{
+ "type":"list",
+ "member":{"shape":"String"}
+ },
+ "EulaList":{
+ "type":"list",
+ "member":{"shape":"Eula"}
+ },
+ "EulaName":{
+ "type":"string",
+ "max":64,
+ "min":0
+ },
+ "ExceptionContext":{
+ "type":"map",
+ "key":{"shape":"String"},
+ "value":{"shape":"String"}
+ },
+ "GetEulaRequest":{
+ "type":"structure",
+ "required":["eulaId"],
+ "members":{
+ "eulaId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"eulaId"
+ }
+ }
+ },
+ "GetEulaResponse":{
+ "type":"structure",
+ "members":{
+ "eula":{"shape":"Eula"}
+ }
+ },
+ "GetLaunchProfileDetailsRequest":{
+ "type":"structure",
+ "required":[
+ "launchProfileId",
+ "studioId"
+ ],
+ "members":{
+ "launchProfileId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"launchProfileId"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "GetLaunchProfileDetailsResponse":{
+ "type":"structure",
+ "members":{
+ "launchProfile":{"shape":"LaunchProfile"},
+ "streamingImages":{"shape":"StreamingImageList"},
+ "studioComponentSummaries":{"shape":"StudioComponentSummaryList"}
+ }
+ },
+ "GetLaunchProfileInitializationRequest":{
+ "type":"structure",
+ "required":[
+ "launchProfileId",
+ "launchProfileProtocolVersions",
+ "launchPurpose",
+ "platform",
+ "studioId"
+ ],
+ "members":{
+ "launchProfileId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"launchProfileId"
+ },
+ "launchProfileProtocolVersions":{
+ "shape":"StringList",
+ "location":"querystring",
+ "locationName":"launchProfileProtocolVersions"
+ },
+ "launchPurpose":{
+ "shape":"String",
+ "location":"querystring",
+ "locationName":"launchPurpose"
+ },
+ "platform":{
+ "shape":"String",
+ "location":"querystring",
+ "locationName":"platform"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "GetLaunchProfileInitializationResponse":{
+ "type":"structure",
+ "members":{
+ "launchProfileInitialization":{"shape":"LaunchProfileInitialization"}
+ }
+ },
+ "GetLaunchProfileMemberRequest":{
+ "type":"structure",
+ "required":[
+ "launchProfileId",
+ "principalId",
+ "studioId"
+ ],
+ "members":{
+ "launchProfileId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"launchProfileId"
+ },
+ "principalId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"principalId"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "GetLaunchProfileMemberResponse":{
+ "type":"structure",
+ "members":{
+ "member":{"shape":"LaunchProfileMembership"}
+ }
+ },
+ "GetLaunchProfileRequest":{
+ "type":"structure",
+ "required":[
+ "launchProfileId",
+ "studioId"
+ ],
+ "members":{
+ "launchProfileId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"launchProfileId"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "GetLaunchProfileResponse":{
+ "type":"structure",
+ "members":{
+ "launchProfile":{"shape":"LaunchProfile"}
+ }
+ },
+ "GetStreamingImageRequest":{
+ "type":"structure",
+ "required":[
+ "streamingImageId",
+ "studioId"
+ ],
+ "members":{
+ "streamingImageId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"streamingImageId"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "GetStreamingImageResponse":{
+ "type":"structure",
+ "members":{
+ "streamingImage":{"shape":"StreamingImage"}
+ }
+ },
+ "GetStreamingSessionBackupRequest":{
+ "type":"structure",
+ "required":[
+ "backupId",
+ "studioId"
+ ],
+ "members":{
+ "backupId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"backupId"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "GetStreamingSessionBackupResponse":{
+ "type":"structure",
+ "members":{
+ "streamingSessionBackup":{"shape":"StreamingSessionBackup"}
+ }
+ },
+ "GetStreamingSessionRequest":{
+ "type":"structure",
+ "required":[
+ "sessionId",
+ "studioId"
+ ],
+ "members":{
+ "sessionId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"sessionId"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "GetStreamingSessionResponse":{
+ "type":"structure",
+ "members":{
+ "session":{"shape":"StreamingSession"}
+ }
+ },
+ "GetStreamingSessionStreamRequest":{
+ "type":"structure",
+ "required":[
+ "sessionId",
+ "streamId",
+ "studioId"
+ ],
+ "members":{
+ "sessionId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"sessionId"
+ },
+ "streamId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"streamId"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "GetStreamingSessionStreamResponse":{
+ "type":"structure",
+ "members":{
+ "stream":{"shape":"StreamingSessionStream"}
+ }
+ },
+ "GetStudioComponentRequest":{
+ "type":"structure",
+ "required":[
+ "studioComponentId",
+ "studioId"
+ ],
+ "members":{
+ "studioComponentId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioComponentId"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "GetStudioComponentResponse":{
+ "type":"structure",
+ "members":{
+ "studioComponent":{"shape":"StudioComponent"}
+ }
+ },
+ "GetStudioMemberRequest":{
+ "type":"structure",
+ "required":[
+ "principalId",
+ "studioId"
+ ],
+ "members":{
+ "principalId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"principalId"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "GetStudioMemberResponse":{
+ "type":"structure",
+ "members":{
+ "member":{"shape":"StudioMembership"}
+ }
+ },
+ "GetStudioRequest":{
+ "type":"structure",
+ "required":["studioId"],
+ "members":{
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "GetStudioResponse":{
+ "type":"structure",
+ "required":["studio"],
+ "members":{
+ "studio":{"shape":"Studio"}
+ }
+ },
+ "InternalServerErrorException":{
+ "type":"structure",
+ "members":{
+ "code":{"shape":"String"},
+ "context":{"shape":"ExceptionContext"},
+ "message":{"shape":"String"}
+ },
+ "error":{"httpStatusCode":500},
+ "exception":true,
+ "fault":true,
+ "retryable":{"throttling":false}
+ },
+ "LaunchProfile":{
+ "type":"structure",
+ "members":{
+ "arn":{"shape":"String"},
+ "createdAt":{"shape":"Timestamp"},
+ "createdBy":{"shape":"String"},
+ "description":{"shape":"LaunchProfileDescription"},
+ "ec2SubnetIds":{"shape":"EC2SubnetIdList"},
+ "launchProfileId":{"shape":"LaunchProfileId"},
+ "launchProfileProtocolVersions":{"shape":"LaunchProfileProtocolVersionList"},
+ "name":{"shape":"LaunchProfileName"},
+ "state":{"shape":"LaunchProfileState"},
+ "statusCode":{"shape":"LaunchProfileStatusCode"},
+ "statusMessage":{"shape":"String"},
+ "streamConfiguration":{"shape":"StreamConfiguration"},
+ "studioComponentIds":{"shape":"LaunchProfileStudioComponentIdList"},
+ "tags":{"shape":"Tags"},
+ "updatedAt":{"shape":"Timestamp"},
+ "updatedBy":{"shape":"String"},
+ "validationResults":{"shape":"ValidationResults"}
+ }
+ },
+ "LaunchProfileDescription":{
+ "type":"string",
+ "max":256,
+ "min":0,
+ "sensitive":true
+ },
+ "LaunchProfileId":{
+ "type":"string",
+ "max":22,
+ "min":0,
+ "pattern":"^[a-zA-Z0-9-_]*$"
+ },
+ "LaunchProfileInitialization":{
+ "type":"structure",
+ "members":{
+ "activeDirectory":{"shape":"LaunchProfileInitializationActiveDirectory"},
+ "ec2SecurityGroupIds":{"shape":"LaunchProfileSecurityGroupIdList"},
+ "launchProfileId":{"shape":"LaunchProfileId"},
+ "launchProfileProtocolVersion":{"shape":"LaunchProfileProtocolVersion"},
+ "launchPurpose":{"shape":"LaunchPurpose"},
+ "name":{"shape":"LaunchProfileName"},
+ "platform":{"shape":"LaunchProfilePlatform"},
+ "systemInitializationScripts":{"shape":"LaunchProfileInitializationScriptList"},
+ "userInitializationScripts":{"shape":"LaunchProfileInitializationScriptList"}
+ }
+ },
+ "LaunchProfileInitializationActiveDirectory":{
+ "type":"structure",
+ "members":{
+ "computerAttributes":{"shape":"ActiveDirectoryComputerAttributeList"},
+ "directoryId":{"shape":"DirectoryId"},
+ "directoryName":{"shape":"String"},
+ "dnsIpAddresses":{"shape":"ActiveDirectoryDnsIpAddressList"},
+ "organizationalUnitDistinguishedName":{"shape":"ActiveDirectoryOrganizationalUnitDistinguishedName"},
+ "studioComponentId":{"shape":"StudioComponentId"},
+ "studioComponentName":{"shape":"StudioComponentName"}
+ }
+ },
+ "LaunchProfileInitializationScript":{
+ "type":"structure",
+ "members":{
+ "runtimeRoleArn":{"shape":"RoleArn"},
+ "script":{"shape":"StudioComponentInitializationScriptContent"},
+ "secureInitializationRoleArn":{"shape":"RoleArn"},
+ "studioComponentId":{"shape":"StudioComponentId"},
+ "studioComponentName":{"shape":"StudioComponentName"}
+ }
+ },
+ "LaunchProfileInitializationScriptList":{
+ "type":"list",
+ "member":{"shape":"LaunchProfileInitializationScript"}
+ },
+ "LaunchProfileList":{
+ "type":"list",
+ "member":{"shape":"LaunchProfile"}
+ },
+ "LaunchProfileMembership":{
+ "type":"structure",
+ "members":{
+ "identityStoreId":{"shape":"String"},
+ "persona":{"shape":"LaunchProfilePersona"},
+ "principalId":{"shape":"String"},
+ "sid":{"shape":"String"}
+ }
+ },
+ "LaunchProfileMembershipList":{
+ "type":"list",
+ "member":{"shape":"LaunchProfileMembership"},
+ "max":20,
+ "min":0
+ },
+ "LaunchProfileName":{
+ "type":"string",
+ "max":64,
+ "min":1,
+ "sensitive":true
+ },
+ "LaunchProfilePersona":{
+ "type":"string",
+ "enum":["USER"]
+ },
+ "LaunchProfilePlatform":{
+ "type":"string",
+ "enum":[
+ "LINUX",
+ "WINDOWS"
+ ]
+ },
+ "LaunchProfileProtocolVersion":{
+ "type":"string",
+ "max":10,
+ "min":0,
+ "pattern":"^2021\\-03\\-31$"
+ },
+ "LaunchProfileProtocolVersionList":{
+ "type":"list",
+ "member":{"shape":"LaunchProfileProtocolVersion"}
+ },
+ "LaunchProfileSecurityGroupIdList":{
+ "type":"list",
+ "member":{"shape":"SecurityGroupId"},
+ "min":1
+ },
+ "LaunchProfileState":{
+ "type":"string",
+ "enum":[
+ "CREATE_IN_PROGRESS",
+ "READY",
+ "UPDATE_IN_PROGRESS",
+ "DELETE_IN_PROGRESS",
+ "DELETED",
+ "DELETE_FAILED",
+ "CREATE_FAILED",
+ "UPDATE_FAILED"
+ ]
+ },
+ "LaunchProfileStateList":{
+ "type":"list",
+ "member":{"shape":"LaunchProfileState"}
+ },
+ "LaunchProfileStatusCode":{
+ "type":"string",
+ "enum":[
+ "LAUNCH_PROFILE_CREATED",
+ "LAUNCH_PROFILE_UPDATED",
+ "LAUNCH_PROFILE_DELETED",
+ "LAUNCH_PROFILE_CREATE_IN_PROGRESS",
+ "LAUNCH_PROFILE_UPDATE_IN_PROGRESS",
+ "LAUNCH_PROFILE_DELETE_IN_PROGRESS",
+ "INTERNAL_ERROR",
+ "STREAMING_IMAGE_NOT_FOUND",
+ "STREAMING_IMAGE_NOT_READY",
+ "LAUNCH_PROFILE_WITH_STREAM_SESSIONS_NOT_DELETED",
+ "ENCRYPTION_KEY_ACCESS_DENIED",
+ "ENCRYPTION_KEY_NOT_FOUND",
+ "INVALID_SUBNETS_PROVIDED",
+ "INVALID_INSTANCE_TYPES_PROVIDED",
+ "INVALID_SUBNETS_COMBINATION"
+ ]
+ },
+ "LaunchProfileStudioComponentIdList":{
+ "type":"list",
+ "member":{"shape":"String"},
+ "max":100,
+ "min":1
+ },
+ "LaunchProfileValidationState":{
+ "type":"string",
+ "enum":[
+ "VALIDATION_NOT_STARTED",
+ "VALIDATION_IN_PROGRESS",
+ "VALIDATION_SUCCESS",
+ "VALIDATION_FAILED",
+ "VALIDATION_FAILED_INTERNAL_SERVER_ERROR"
+ ]
+ },
+ "LaunchProfileValidationStatusCode":{
+ "type":"string",
+ "enum":[
+ "VALIDATION_NOT_STARTED",
+ "VALIDATION_IN_PROGRESS",
+ "VALIDATION_SUCCESS",
+ "VALIDATION_FAILED_INVALID_SUBNET_ROUTE_TABLE_ASSOCIATION",
+ "VALIDATION_FAILED_SUBNET_NOT_FOUND",
+ "VALIDATION_FAILED_INVALID_SECURITY_GROUP_ASSOCIATION",
+ "VALIDATION_FAILED_INVALID_ACTIVE_DIRECTORY",
+ "VALIDATION_FAILED_UNAUTHORIZED",
+ "VALIDATION_FAILED_INTERNAL_SERVER_ERROR"
+ ]
+ },
+ "LaunchProfileValidationStatusMessage":{"type":"string"},
+ "LaunchProfileValidationType":{
+ "type":"string",
+ "enum":[
+ "VALIDATE_ACTIVE_DIRECTORY_STUDIO_COMPONENT",
+ "VALIDATE_SUBNET_ASSOCIATION",
+ "VALIDATE_NETWORK_ACL_ASSOCIATION",
+ "VALIDATE_SECURITY_GROUP_ASSOCIATION"
+ ]
+ },
+ "LaunchPurpose":{
+ "type":"string",
+ "max":64,
+ "min":0,
+ "pattern":"^[A-Z0-9_]+$"
+ },
+ "LicenseServiceConfiguration":{
+ "type":"structure",
+ "members":{
+ "endpoint":{"shape":"SensitiveString"}
+ }
+ },
+ "LinuxMountPoint":{
+ "type":"string",
+ "max":128,
+ "min":0,
+ "pattern":"^(/?|(\\$HOME)?(/[^/\\n\\s\\\\]+)*)$",
+ "sensitive":true
+ },
+ "ListEulaAcceptancesRequest":{
+ "type":"structure",
+ "required":["studioId"],
+ "members":{
+ "eulaIds":{
+ "shape":"StringList",
+ "location":"querystring",
+ "locationName":"eulaIds"
+ },
+ "nextToken":{
+ "shape":"String",
+ "location":"querystring",
+ "locationName":"nextToken"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "ListEulaAcceptancesResponse":{
+ "type":"structure",
+ "members":{
+ "eulaAcceptances":{"shape":"EulaAcceptanceList"},
+ "nextToken":{"shape":"String"}
+ }
+ },
+ "ListEulasRequest":{
+ "type":"structure",
+ "members":{
+ "eulaIds":{
+ "shape":"StringList",
+ "location":"querystring",
+ "locationName":"eulaIds"
+ },
+ "nextToken":{
+ "shape":"String",
+ "location":"querystring",
+ "locationName":"nextToken"
+ }
+ }
+ },
+ "ListEulasResponse":{
+ "type":"structure",
+ "members":{
+ "eulas":{"shape":"EulaList"},
+ "nextToken":{"shape":"String"}
+ }
+ },
+ "ListLaunchProfileMembersRequest":{
+ "type":"structure",
+ "required":[
+ "launchProfileId",
+ "studioId"
+ ],
+ "members":{
+ "launchProfileId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"launchProfileId"
+ },
+ "maxResults":{
+ "shape":"MaxResults",
+ "location":"querystring",
+ "locationName":"maxResults"
+ },
+ "nextToken":{
+ "shape":"String",
+ "location":"querystring",
+ "locationName":"nextToken"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "ListLaunchProfileMembersResponse":{
+ "type":"structure",
+ "members":{
+ "members":{"shape":"LaunchProfileMembershipList"},
+ "nextToken":{"shape":"String"}
+ }
+ },
+ "ListLaunchProfilesRequest":{
+ "type":"structure",
+ "required":["studioId"],
+ "members":{
+ "maxResults":{
+ "shape":"MaxResults",
+ "location":"querystring",
+ "locationName":"maxResults"
+ },
+ "nextToken":{
+ "shape":"String",
+ "location":"querystring",
+ "locationName":"nextToken"
+ },
+ "principalId":{
+ "shape":"String",
+ "location":"querystring",
+ "locationName":"principalId"
+ },
+ "states":{
+ "shape":"LaunchProfileStateList",
+ "location":"querystring",
+ "locationName":"states"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "ListLaunchProfilesResponse":{
+ "type":"structure",
+ "members":{
+ "launchProfiles":{"shape":"LaunchProfileList"},
+ "nextToken":{"shape":"String"}
+ }
+ },
+ "ListStreamingImagesRequest":{
+ "type":"structure",
+ "required":["studioId"],
+ "members":{
+ "nextToken":{
+ "shape":"String",
+ "location":"querystring",
+ "locationName":"nextToken"
+ },
+ "owner":{
+ "shape":"String",
+ "location":"querystring",
+ "locationName":"owner"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "ListStreamingImagesResponse":{
+ "type":"structure",
+ "members":{
+ "nextToken":{"shape":"String"},
+ "streamingImages":{"shape":"StreamingImageList"}
+ }
+ },
+ "ListStreamingSessionBackupsRequest":{
+ "type":"structure",
+ "required":["studioId"],
+ "members":{
+ "nextToken":{
+ "shape":"String",
+ "location":"querystring",
+ "locationName":"nextToken"
+ },
+ "ownedBy":{
+ "shape":"String",
+ "location":"querystring",
+ "locationName":"ownedBy"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "ListStreamingSessionBackupsResponse":{
+ "type":"structure",
+ "members":{
+ "nextToken":{"shape":"String"},
+ "streamingSessionBackups":{"shape":"StreamingSessionBackupList"}
+ }
+ },
+ "ListStreamingSessionsRequest":{
+ "type":"structure",
+ "required":["studioId"],
+ "members":{
+ "createdBy":{
+ "shape":"String",
+ "location":"querystring",
+ "locationName":"createdBy"
+ },
+ "nextToken":{
+ "shape":"String",
+ "location":"querystring",
+ "locationName":"nextToken"
+ },
+ "ownedBy":{
+ "shape":"String",
+ "location":"querystring",
+ "locationName":"ownedBy"
+ },
+ "sessionIds":{
+ "shape":"String",
+ "location":"querystring",
+ "locationName":"sessionIds"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "ListStreamingSessionsResponse":{
+ "type":"structure",
+ "members":{
+ "nextToken":{"shape":"String"},
+ "sessions":{"shape":"StreamingSessionList"}
+ }
+ },
+ "ListStudioComponentsRequest":{
+ "type":"structure",
+ "required":["studioId"],
+ "members":{
+ "maxResults":{
+ "shape":"MaxResults",
+ "location":"querystring",
+ "locationName":"maxResults"
+ },
+ "nextToken":{
+ "shape":"String",
+ "location":"querystring",
+ "locationName":"nextToken"
+ },
+ "states":{
+ "shape":"StudioComponentStateList",
+ "location":"querystring",
+ "locationName":"states"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ },
+ "types":{
+ "shape":"StudioComponentTypeList",
+ "location":"querystring",
+ "locationName":"types"
+ }
+ }
+ },
+ "ListStudioComponentsResponse":{
+ "type":"structure",
+ "members":{
+ "nextToken":{"shape":"String"},
+ "studioComponents":{"shape":"StudioComponentList"}
+ }
+ },
+ "ListStudioMembersRequest":{
+ "type":"structure",
+ "required":["studioId"],
+ "members":{
+ "maxResults":{
+ "shape":"MaxResults",
+ "location":"querystring",
+ "locationName":"maxResults"
+ },
+ "nextToken":{
+ "shape":"String",
+ "location":"querystring",
+ "locationName":"nextToken"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "ListStudioMembersResponse":{
+ "type":"structure",
+ "members":{
+ "members":{"shape":"StudioMembershipList"},
+ "nextToken":{"shape":"String"}
+ }
+ },
+ "ListStudiosRequest":{
+ "type":"structure",
+ "members":{
+ "nextToken":{
+ "shape":"String",
+ "location":"querystring",
+ "locationName":"nextToken"
+ }
+ }
+ },
+ "ListStudiosResponse":{
+ "type":"structure",
+ "required":["studios"],
+ "members":{
+ "nextToken":{"shape":"String"},
+ "studios":{"shape":"StudioList"}
+ }
+ },
+ "ListTagsForResourceRequest":{
+ "type":"structure",
+ "required":["resourceArn"],
+ "members":{
+ "resourceArn":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"resourceArn"
+ }
+ }
+ },
+ "ListTagsForResourceResponse":{
+ "type":"structure",
+ "members":{
+ "tags":{"shape":"Tags"}
+ }
+ },
+ "MaxResults":{
+ "type":"integer",
+ "box":true,
+ "max":100,
+ "min":1
+ },
+ "NewLaunchProfileMember":{
+ "type":"structure",
+ "required":[
+ "persona",
+ "principalId"
+ ],
+ "members":{
+ "persona":{"shape":"LaunchProfilePersona"},
+ "principalId":{"shape":"String"}
+ }
+ },
+ "NewLaunchProfileMemberList":{
+ "type":"list",
+ "member":{"shape":"NewLaunchProfileMember"},
+ "max":20,
+ "min":1
+ },
+ "NewStudioMember":{
+ "type":"structure",
+ "required":[
+ "persona",
+ "principalId"
+ ],
+ "members":{
+ "persona":{"shape":"StudioPersona"},
+ "principalId":{"shape":"String"}
+ }
+ },
+ "NewStudioMemberList":{
+ "type":"list",
+ "member":{"shape":"NewStudioMember"},
+ "max":20,
+ "min":1
+ },
+ "PutLaunchProfileMembersRequest":{
+ "type":"structure",
+ "required":[
+ "identityStoreId",
+ "launchProfileId",
+ "members",
+ "studioId"
+ ],
+ "members":{
+ "clientToken":{
+ "shape":"ClientToken",
+ "idempotencyToken":true,
+ "location":"header",
+ "locationName":"X-Amz-Client-Token"
+ },
+ "identityStoreId":{"shape":"String"},
+ "launchProfileId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"launchProfileId"
+ },
+ "members":{"shape":"NewLaunchProfileMemberList"},
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "PutLaunchProfileMembersResponse":{
+ "type":"structure",
+ "members":{
+ }
+ },
+ "PutStudioMembersRequest":{
+ "type":"structure",
+ "required":[
+ "identityStoreId",
+ "members",
+ "studioId"
+ ],
+ "members":{
+ "clientToken":{
+ "shape":"ClientToken",
+ "idempotencyToken":true,
+ "location":"header",
+ "locationName":"X-Amz-Client-Token"
+ },
+ "identityStoreId":{"shape":"String"},
+ "members":{"shape":"NewStudioMemberList"},
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "PutStudioMembersResponse":{
+ "type":"structure",
+ "members":{
+ }
+ },
+ "Region":{
+ "type":"string",
+ "max":50,
+ "min":0,
+ "pattern":"[a-z]{2}-?(iso|gov)?-{1}[a-z]*-{1}[0-9]"
+ },
+ "ResourceNotFoundException":{
+ "type":"structure",
+ "members":{
+ "code":{"shape":"String"},
+ "context":{"shape":"ExceptionContext"},
+ "message":{"shape":"String"}
+ },
+ "error":{
+ "httpStatusCode":404,
+ "senderFault":true
+ },
+ "exception":true
+ },
+ "RoleArn":{
+ "type":"string",
+ "max":2048,
+ "min":0
+ },
+ "ScriptParameterKey":{
+ "type":"string",
+ "max":64,
+ "min":1,
+ "pattern":"^[a-zA-Z_][a-zA-Z0-9_]+$"
+ },
+ "ScriptParameterKeyValue":{
+ "type":"structure",
+ "members":{
+ "key":{"shape":"ScriptParameterKey"},
+ "value":{"shape":"ScriptParameterValue"}
+ }
+ },
+ "ScriptParameterValue":{
+ "type":"string",
+ "max":256,
+ "min":1
+ },
+ "SecurityGroupId":{"type":"string"},
+ "SensitiveString":{
+ "type":"string",
+ "sensitive":true
+ },
+ "ServiceQuotaExceededException":{
+ "type":"structure",
+ "members":{
+ "code":{"shape":"String"},
+ "context":{"shape":"ExceptionContext"},
+ "message":{"shape":"String"}
+ },
+ "error":{
+ "httpStatusCode":402,
+ "senderFault":true
+ },
+ "exception":true
+ },
+ "SessionBackupMode":{
+ "type":"string",
+ "enum":[
+ "AUTOMATIC",
+ "DEACTIVATED"
+ ]
+ },
+ "SessionPersistenceMode":{
+ "type":"string",
+ "enum":[
+ "DEACTIVATED",
+ "ACTIVATED"
+ ]
+ },
+ "SharedFileSystemConfiguration":{
+ "type":"structure",
+ "members":{
+ "endpoint":{"shape":"SensitiveString"},
+ "fileSystemId":{"shape":"String"},
+ "linuxMountPoint":{"shape":"LinuxMountPoint"},
+ "shareName":{"shape":"SensitiveString"},
+ "windowsMountDrive":{"shape":"WindowsMountDrive"}
+ }
+ },
+ "StartStreamingSessionRequest":{
+ "type":"structure",
+ "required":[
+ "sessionId",
+ "studioId"
+ ],
+ "members":{
+ "backupId":{"shape":"String"},
+ "clientToken":{
+ "shape":"ClientToken",
+ "idempotencyToken":true,
+ "location":"header",
+ "locationName":"X-Amz-Client-Token"
+ },
+ "sessionId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"sessionId"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "StartStreamingSessionResponse":{
+ "type":"structure",
+ "members":{
+ "session":{"shape":"StreamingSession"}
+ }
+ },
+ "StartStudioSSOConfigurationRepairRequest":{
+ "type":"structure",
+ "required":["studioId"],
+ "members":{
+ "clientToken":{
+ "shape":"ClientToken",
+ "idempotencyToken":true,
+ "location":"header",
+ "locationName":"X-Amz-Client-Token"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "StartStudioSSOConfigurationRepairResponse":{
+ "type":"structure",
+ "required":["studio"],
+ "members":{
+ "studio":{"shape":"Studio"}
+ }
+ },
+ "StopStreamingSessionRequest":{
+ "type":"structure",
+ "required":[
+ "sessionId",
+ "studioId"
+ ],
+ "members":{
+ "clientToken":{
+ "shape":"ClientToken",
+ "idempotencyToken":true,
+ "location":"header",
+ "locationName":"X-Amz-Client-Token"
+ },
+ "sessionId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"sessionId"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ },
+ "volumeRetentionMode":{"shape":"VolumeRetentionMode"}
+ }
+ },
+ "StopStreamingSessionResponse":{
+ "type":"structure",
+ "members":{
+ "session":{"shape":"StreamingSession"}
+ }
+ },
+ "StreamConfiguration":{
+ "type":"structure",
+ "required":[
+ "clipboardMode",
+ "ec2InstanceTypes",
+ "streamingImageIds"
+ ],
+ "members":{
+ "automaticTerminationMode":{"shape":"AutomaticTerminationMode"},
+ "clipboardMode":{"shape":"StreamingClipboardMode"},
+ "ec2InstanceTypes":{"shape":"StreamingInstanceTypeList"},
+ "maxSessionLengthInMinutes":{"shape":"StreamConfigurationMaxSessionLengthInMinutes"},
+ "maxStoppedSessionLengthInMinutes":{"shape":"StreamConfigurationMaxStoppedSessionLengthInMinutes"},
+ "sessionBackup":{"shape":"StreamConfigurationSessionBackup"},
+ "sessionPersistenceMode":{"shape":"SessionPersistenceMode"},
+ "sessionStorage":{"shape":"StreamConfigurationSessionStorage"},
+ "streamingImageIds":{"shape":"StreamingImageIdList"},
+ "volumeConfiguration":{"shape":"VolumeConfiguration"}
+ }
+ },
+ "StreamConfigurationCreate":{
+ "type":"structure",
+ "required":[
+ "clipboardMode",
+ "ec2InstanceTypes",
+ "streamingImageIds"
+ ],
+ "members":{
+ "automaticTerminationMode":{"shape":"AutomaticTerminationMode"},
+ "clipboardMode":{"shape":"StreamingClipboardMode"},
+ "ec2InstanceTypes":{"shape":"StreamingInstanceTypeList"},
+ "maxSessionLengthInMinutes":{"shape":"StreamConfigurationMaxSessionLengthInMinutes"},
+ "maxStoppedSessionLengthInMinutes":{"shape":"StreamConfigurationMaxStoppedSessionLengthInMinutes"},
+ "sessionBackup":{"shape":"StreamConfigurationSessionBackup"},
+ "sessionPersistenceMode":{"shape":"SessionPersistenceMode"},
+ "sessionStorage":{"shape":"StreamConfigurationSessionStorage"},
+ "streamingImageIds":{"shape":"StreamingImageIdList"},
+ "volumeConfiguration":{"shape":"VolumeConfiguration"}
+ }
+ },
+ "StreamConfigurationMaxBackupsToRetain":{
+ "type":"integer",
+ "max":10,
+ "min":0
+ },
+ "StreamConfigurationMaxSessionLengthInMinutes":{
+ "type":"integer",
+ "box":true,
+ "max":43200,
+ "min":1
+ },
+ "StreamConfigurationMaxStoppedSessionLengthInMinutes":{
+ "type":"integer",
+ "max":5760,
+ "min":0
+ },
+ "StreamConfigurationSessionBackup":{
+ "type":"structure",
+ "members":{
+ "maxBackupsToRetain":{"shape":"StreamConfigurationMaxBackupsToRetain"},
+ "mode":{"shape":"SessionBackupMode"}
+ }
+ },
+ "StreamConfigurationSessionStorage":{
+ "type":"structure",
+ "required":["mode"],
+ "members":{
+ "mode":{"shape":"StreamingSessionStorageModeList"},
+ "root":{"shape":"StreamingSessionStorageRoot"}
+ }
+ },
+ "StreamingClipboardMode":{
+ "type":"string",
+ "enum":[
+ "ENABLED",
+ "DISABLED"
+ ]
+ },
+ "StreamingImage":{
+ "type":"structure",
+ "members":{
+ "arn":{"shape":"String"},
+ "description":{"shape":"StreamingImageDescription"},
+ "ec2ImageId":{"shape":"EC2ImageId"},
+ "encryptionConfiguration":{"shape":"StreamingImageEncryptionConfiguration"},
+ "eulaIds":{"shape":"EulaIdList"},
+ "name":{"shape":"StreamingImageName"},
+ "owner":{"shape":"StreamingImageOwner"},
+ "platform":{"shape":"StreamingImagePlatform"},
+ "state":{"shape":"StreamingImageState"},
+ "statusCode":{"shape":"StreamingImageStatusCode"},
+ "statusMessage":{"shape":"String"},
+ "streamingImageId":{"shape":"StreamingImageId"},
+ "tags":{"shape":"Tags"}
+ }
+ },
+ "StreamingImageDescription":{
+ "type":"string",
+ "max":256,
+ "min":0,
+ "sensitive":true
+ },
+ "StreamingImageEncryptionConfiguration":{
+ "type":"structure",
+ "required":["keyType"],
+ "members":{
+ "keyArn":{"shape":"StreamingImageEncryptionConfigurationKeyArn"},
+ "keyType":{"shape":"StreamingImageEncryptionConfigurationKeyType"}
+ }
+ },
+ "StreamingImageEncryptionConfigurationKeyArn":{
+ "type":"string",
+ "min":4,
+ "pattern":"^arn:.*"
+ },
+ "StreamingImageEncryptionConfigurationKeyType":{
+ "type":"string",
+ "enum":["CUSTOMER_MANAGED_KEY"]
+ },
+ "StreamingImageId":{
+ "type":"string",
+ "max":22,
+ "min":0,
+ "pattern":"^[a-zA-Z0-9-_]*$"
+ },
+ "StreamingImageIdList":{
+ "type":"list",
+ "member":{"shape":"StreamingImageId"},
+ "max":20,
+ "min":1
+ },
+ "StreamingImageList":{
+ "type":"list",
+ "member":{"shape":"StreamingImage"}
+ },
+ "StreamingImageName":{
+ "type":"string",
+ "max":64,
+ "min":0,
+ "sensitive":true
+ },
+ "StreamingImageOwner":{"type":"string"},
+ "StreamingImagePlatform":{
+ "type":"string",
+ "pattern":"^[a-zA-Z]*$"
+ },
+ "StreamingImageState":{
+ "type":"string",
+ "enum":[
+ "CREATE_IN_PROGRESS",
+ "READY",
+ "DELETE_IN_PROGRESS",
+ "DELETED",
+ "UPDATE_IN_PROGRESS",
+ "UPDATE_FAILED",
+ "CREATE_FAILED",
+ "DELETE_FAILED"
+ ]
+ },
+ "StreamingImageStatusCode":{
+ "type":"string",
+ "enum":[
+ "STREAMING_IMAGE_CREATE_IN_PROGRESS",
+ "STREAMING_IMAGE_READY",
+ "STREAMING_IMAGE_DELETE_IN_PROGRESS",
+ "STREAMING_IMAGE_DELETED",
+ "STREAMING_IMAGE_UPDATE_IN_PROGRESS",
+ "INTERNAL_ERROR",
+ "ACCESS_DENIED"
+ ]
+ },
+ "StreamingInstanceType":{
+ "type":"string",
+ "enum":[
+ "g4dn.xlarge",
+ "g4dn.2xlarge",
+ "g4dn.4xlarge",
+ "g4dn.8xlarge",
+ "g4dn.12xlarge",
+ "g4dn.16xlarge",
+ "g3.4xlarge",
+ "g3s.xlarge",
+ "g5.xlarge",
+ "g5.2xlarge",
+ "g5.4xlarge",
+ "g5.8xlarge",
+ "g5.16xlarge"
+ ]
+ },
+ "StreamingInstanceTypeList":{
+ "type":"list",
+ "member":{"shape":"StreamingInstanceType"},
+ "max":30,
+ "min":1
+ },
+ "StreamingSession":{
+ "type":"structure",
+ "members":{
+ "arn":{"shape":"String"},
+ "automaticTerminationMode":{"shape":"AutomaticTerminationMode"},
+ "backupMode":{"shape":"SessionBackupMode"},
+ "createdAt":{"shape":"Timestamp"},
+ "createdBy":{"shape":"String"},
+ "ec2InstanceType":{"shape":"String"},
+ "launchProfileId":{"shape":"String"},
+ "maxBackupsToRetain":{"shape":"StreamConfigurationMaxBackupsToRetain"},
+ "ownedBy":{"shape":"String"},
+ "sessionId":{"shape":"StreamingSessionId"},
+ "sessionPersistenceMode":{"shape":"SessionPersistenceMode"},
+ "startedAt":{"shape":"Timestamp"},
+ "startedBy":{"shape":"String"},
+ "startedFromBackupId":{"shape":"String"},
+ "state":{"shape":"StreamingSessionState"},
+ "statusCode":{"shape":"StreamingSessionStatusCode"},
+ "statusMessage":{"shape":"String"},
+ "stopAt":{"shape":"Timestamp"},
+ "stoppedAt":{"shape":"Timestamp"},
+ "stoppedBy":{"shape":"String"},
+ "streamingImageId":{"shape":"StreamingImageId"},
+ "tags":{"shape":"Tags"},
+ "terminateAt":{"shape":"Timestamp"},
+ "updatedAt":{"shape":"Timestamp"},
+ "updatedBy":{"shape":"String"},
+ "volumeConfiguration":{"shape":"VolumeConfiguration"},
+ "volumeRetentionMode":{"shape":"VolumeRetentionMode"}
+ }
+ },
+ "StreamingSessionBackup":{
+ "type":"structure",
+ "members":{
+ "arn":{"shape":"String"},
+ "backupId":{"shape":"String"},
+ "createdAt":{"shape":"Timestamp"},
+ "launchProfileId":{"shape":"String"},
+ "ownedBy":{"shape":"String"},
+ "sessionId":{"shape":"StreamingSessionId"},
+ "state":{"shape":"StreamingSessionState"},
+ "statusCode":{"shape":"StreamingSessionStatusCode"},
+ "statusMessage":{"shape":"String"},
+ "tags":{"shape":"Tags"}
+ }
+ },
+ "StreamingSessionBackupList":{
+ "type":"list",
+ "member":{"shape":"StreamingSessionBackup"}
+ },
+ "StreamingSessionId":{"type":"string"},
+ "StreamingSessionList":{
+ "type":"list",
+ "member":{"shape":"StreamingSession"}
+ },
+ "StreamingSessionState":{
+ "type":"string",
+ "enum":[
+ "CREATE_IN_PROGRESS",
+ "DELETE_IN_PROGRESS",
+ "READY",
+ "DELETED",
+ "CREATE_FAILED",
+ "DELETE_FAILED",
+ "STOP_IN_PROGRESS",
+ "START_IN_PROGRESS",
+ "STOPPED",
+ "STOP_FAILED",
+ "START_FAILED"
+ ]
+ },
+ "StreamingSessionStatusCode":{
+ "type":"string",
+ "enum":[
+ "STREAMING_SESSION_READY",
+ "STREAMING_SESSION_DELETED",
+ "STREAMING_SESSION_CREATE_IN_PROGRESS",
+ "STREAMING_SESSION_DELETE_IN_PROGRESS",
+ "INTERNAL_ERROR",
+ "INSUFFICIENT_CAPACITY",
+ "ACTIVE_DIRECTORY_DOMAIN_JOIN_ERROR",
+ "NETWORK_CONNECTION_ERROR",
+ "INITIALIZATION_SCRIPT_ERROR",
+ "DECRYPT_STREAMING_IMAGE_ERROR",
+ "NETWORK_INTERFACE_ERROR",
+ "STREAMING_SESSION_STOPPED",
+ "STREAMING_SESSION_STARTED",
+ "STREAMING_SESSION_STOP_IN_PROGRESS",
+ "STREAMING_SESSION_START_IN_PROGRESS",
+ "AMI_VALIDATION_ERROR"
+ ]
+ },
+ "StreamingSessionStorageMode":{
+ "type":"string",
+ "enum":["UPLOAD"]
+ },
+ "StreamingSessionStorageModeList":{
+ "type":"list",
+ "member":{"shape":"StreamingSessionStorageMode"},
+ "min":1
+ },
+ "StreamingSessionStorageRoot":{
+ "type":"structure",
+ "members":{
+ "linux":{"shape":"StreamingSessionStorageRootPathLinux"},
+ "windows":{"shape":"StreamingSessionStorageRootPathWindows"}
+ }
+ },
+ "StreamingSessionStorageRootPathLinux":{
+ "type":"string",
+ "max":128,
+ "min":1,
+ "pattern":"^(\\$HOME|/)[/]?([A-Za-z0-9-_]+/)*([A-Za-z0-9_-]+)$",
+ "sensitive":true
+ },
+ "StreamingSessionStorageRootPathWindows":{
+ "type":"string",
+ "max":128,
+ "min":1,
+ "pattern":"^((\\%HOMEPATH\\%)|[a-zA-Z]:)[\\\\/](?:[a-zA-Z0-9_-]+[\\\\/])*[a-zA-Z0-9_-]+$",
+ "sensitive":true
+ },
+ "StreamingSessionStream":{
+ "type":"structure",
+ "members":{
+ "createdAt":{"shape":"Timestamp"},
+ "createdBy":{"shape":"String"},
+ "expiresAt":{"shape":"Timestamp"},
+ "ownedBy":{"shape":"String"},
+ "state":{"shape":"StreamingSessionStreamState"},
+ "statusCode":{"shape":"StreamingSessionStreamStatusCode"},
+ "streamId":{"shape":"String"},
+ "url":{"shape":"SensitiveString"}
+ }
+ },
+ "StreamingSessionStreamExpirationInSeconds":{
+ "type":"integer",
+ "box":true,
+ "max":3600,
+ "min":60
+ },
+ "StreamingSessionStreamState":{
+ "type":"string",
+ "enum":[
+ "READY",
+ "CREATE_IN_PROGRESS",
+ "DELETE_IN_PROGRESS",
+ "DELETED",
+ "CREATE_FAILED",
+ "DELETE_FAILED"
+ ]
+ },
+ "StreamingSessionStreamStatusCode":{
+ "type":"string",
+ "enum":[
+ "STREAM_CREATE_IN_PROGRESS",
+ "STREAM_READY",
+ "STREAM_DELETE_IN_PROGRESS",
+ "STREAM_DELETED",
+ "INTERNAL_ERROR",
+ "NETWORK_CONNECTION_ERROR"
+ ]
+ },
+ "String":{"type":"string"},
+ "StringList":{
+ "type":"list",
+ "member":{"shape":"String"}
+ },
+ "Studio":{
+ "type":"structure",
+ "members":{
+ "adminRoleArn":{"shape":"RoleArn"},
+ "arn":{"shape":"String"},
+ "createdAt":{"shape":"Timestamp"},
+ "displayName":{"shape":"StudioDisplayName"},
+ "homeRegion":{"shape":"Region"},
+ "ssoClientId":{"shape":"String"},
+ "state":{"shape":"StudioState"},
+ "statusCode":{"shape":"StudioStatusCode"},
+ "statusMessage":{"shape":"String"},
+ "studioEncryptionConfiguration":{"shape":"StudioEncryptionConfiguration"},
+ "studioId":{"shape":"String"},
+ "studioName":{"shape":"StudioName"},
+ "studioUrl":{"shape":"String"},
+ "tags":{"shape":"Tags"},
+ "updatedAt":{"shape":"Timestamp"},
+ "userRoleArn":{"shape":"RoleArn"}
+ }
+ },
+ "StudioComponent":{
+ "type":"structure",
+ "members":{
+ "arn":{"shape":"String"},
+ "configuration":{"shape":"StudioComponentConfiguration"},
+ "createdAt":{"shape":"Timestamp"},
+ "createdBy":{"shape":"String"},
+ "description":{"shape":"StudioComponentDescription"},
+ "ec2SecurityGroupIds":{"shape":"StudioComponentSecurityGroupIdList"},
+ "initializationScripts":{"shape":"StudioComponentInitializationScriptList"},
+ "name":{"shape":"StudioComponentName"},
+ "runtimeRoleArn":{"shape":"RoleArn"},
+ "scriptParameters":{"shape":"StudioComponentScriptParameterKeyValueList"},
+ "secureInitializationRoleArn":{"shape":"RoleArn"},
+ "state":{"shape":"StudioComponentState"},
+ "statusCode":{"shape":"StudioComponentStatusCode"},
+ "statusMessage":{"shape":"String"},
+ "studioComponentId":{"shape":"StudioComponentId"},
+ "subtype":{"shape":"StudioComponentSubtype"},
+ "tags":{"shape":"Tags"},
+ "type":{"shape":"StudioComponentType"},
+ "updatedAt":{"shape":"Timestamp"},
+ "updatedBy":{"shape":"String"}
+ }
+ },
+ "StudioComponentConfiguration":{
+ "type":"structure",
+ "members":{
+ "activeDirectoryConfiguration":{"shape":"ActiveDirectoryConfiguration"},
+ "computeFarmConfiguration":{"shape":"ComputeFarmConfiguration"},
+ "licenseServiceConfiguration":{"shape":"LicenseServiceConfiguration"},
+ "sharedFileSystemConfiguration":{"shape":"SharedFileSystemConfiguration"}
+ },
+ "union":true
+ },
+ "StudioComponentDescription":{
+ "type":"string",
+ "max":256,
+ "min":0,
+ "sensitive":true
+ },
+ "StudioComponentId":{
+ "type":"string",
+ "max":22,
+ "min":0,
+ "pattern":"^[a-zA-Z0-9-_]*$"
+ },
+ "StudioComponentInitializationScript":{
+ "type":"structure",
+ "members":{
+ "launchProfileProtocolVersion":{"shape":"LaunchProfileProtocolVersion"},
+ "platform":{"shape":"LaunchProfilePlatform"},
+ "runContext":{"shape":"StudioComponentInitializationScriptRunContext"},
+ "script":{"shape":"StudioComponentInitializationScriptContent"}
+ }
+ },
+ "StudioComponentInitializationScriptContent":{
+ "type":"string",
+ "max":5120,
+ "min":1,
+ "sensitive":true
+ },
+ "StudioComponentInitializationScriptList":{
+ "type":"list",
+ "member":{"shape":"StudioComponentInitializationScript"}
+ },
+ "StudioComponentInitializationScriptRunContext":{
+ "type":"string",
+ "enum":[
+ "SYSTEM_INITIALIZATION",
+ "USER_INITIALIZATION"
+ ]
+ },
+ "StudioComponentList":{
+ "type":"list",
+ "member":{"shape":"StudioComponent"},
+ "max":50,
+ "min":0
+ },
+ "StudioComponentName":{
+ "type":"string",
+ "max":64,
+ "min":0,
+ "sensitive":true
+ },
+ "StudioComponentScriptParameterKeyValueList":{
+ "type":"list",
+ "member":{"shape":"ScriptParameterKeyValue"},
+ "max":30,
+ "min":0,
+ "sensitive":true
+ },
+ "StudioComponentSecurityGroupIdList":{
+ "type":"list",
+ "member":{"shape":"SecurityGroupId"},
+ "max":30,
+ "min":0
+ },
+ "StudioComponentState":{
+ "type":"string",
+ "enum":[
+ "CREATE_IN_PROGRESS",
+ "READY",
+ "UPDATE_IN_PROGRESS",
+ "DELETE_IN_PROGRESS",
+ "DELETED",
+ "DELETE_FAILED",
+ "CREATE_FAILED",
+ "UPDATE_FAILED"
+ ]
+ },
+ "StudioComponentStateList":{
+ "type":"list",
+ "member":{"shape":"StudioComponentState"}
+ },
+ "StudioComponentStatusCode":{
+ "type":"string",
+ "enum":[
+ "ACTIVE_DIRECTORY_ALREADY_EXISTS",
+ "STUDIO_COMPONENT_CREATED",
+ "STUDIO_COMPONENT_UPDATED",
+ "STUDIO_COMPONENT_DELETED",
+ "ENCRYPTION_KEY_ACCESS_DENIED",
+ "ENCRYPTION_KEY_NOT_FOUND",
+ "STUDIO_COMPONENT_CREATE_IN_PROGRESS",
+ "STUDIO_COMPONENT_UPDATE_IN_PROGRESS",
+ "STUDIO_COMPONENT_DELETE_IN_PROGRESS",
+ "INTERNAL_ERROR"
+ ]
+ },
+ "StudioComponentSubtype":{
+ "type":"string",
+ "enum":[
+ "AWS_MANAGED_MICROSOFT_AD",
+ "AMAZON_FSX_FOR_WINDOWS",
+ "AMAZON_FSX_FOR_LUSTRE",
+ "CUSTOM"
+ ]
+ },
+ "StudioComponentSummary":{
+ "type":"structure",
+ "members":{
+ "createdAt":{"shape":"Timestamp"},
+ "createdBy":{"shape":"String"},
+ "description":{"shape":"StudioComponentDescription"},
+ "name":{"shape":"StudioComponentName"},
+ "studioComponentId":{"shape":"StudioComponentId"},
+ "subtype":{"shape":"StudioComponentSubtype"},
+ "type":{"shape":"StudioComponentType"},
+ "updatedAt":{"shape":"Timestamp"},
+ "updatedBy":{"shape":"String"}
+ }
+ },
+ "StudioComponentSummaryList":{
+ "type":"list",
+ "member":{"shape":"StudioComponentSummary"}
+ },
+ "StudioComponentType":{
+ "type":"string",
+ "enum":[
+ "ACTIVE_DIRECTORY",
+ "SHARED_FILE_SYSTEM",
+ "COMPUTE_FARM",
+ "LICENSE_SERVICE",
+ "CUSTOM"
+ ]
+ },
+ "StudioComponentTypeList":{
+ "type":"list",
+ "member":{"shape":"StudioComponentType"}
+ },
+ "StudioDisplayName":{
+ "type":"string",
+ "max":64,
+ "min":0,
+ "sensitive":true
+ },
+ "StudioEncryptionConfiguration":{
+ "type":"structure",
+ "required":["keyType"],
+ "members":{
+ "keyArn":{"shape":"StudioEncryptionConfigurationKeyArn"},
+ "keyType":{"shape":"StudioEncryptionConfigurationKeyType"}
+ }
+ },
+ "StudioEncryptionConfigurationKeyArn":{
+ "type":"string",
+ "min":4,
+ "pattern":"^arn:.*"
+ },
+ "StudioEncryptionConfigurationKeyType":{
+ "type":"string",
+ "enum":[
+ "AWS_OWNED_KEY",
+ "CUSTOMER_MANAGED_KEY"
+ ]
+ },
+ "StudioList":{
+ "type":"list",
+ "member":{"shape":"Studio"}
+ },
+ "StudioMembership":{
+ "type":"structure",
+ "members":{
+ "identityStoreId":{"shape":"String"},
+ "persona":{"shape":"StudioPersona"},
+ "principalId":{"shape":"String"},
+ "sid":{"shape":"String"}
+ }
+ },
+ "StudioMembershipList":{
+ "type":"list",
+ "member":{"shape":"StudioMembership"},
+ "max":20,
+ "min":0
+ },
+ "StudioName":{
+ "type":"string",
+ "max":64,
+ "min":3,
+ "pattern":"^[a-z0-9]*$"
+ },
+ "StudioPersona":{
+ "type":"string",
+ "enum":["ADMINISTRATOR"]
+ },
+ "StudioState":{
+ "type":"string",
+ "enum":[
+ "CREATE_IN_PROGRESS",
+ "READY",
+ "UPDATE_IN_PROGRESS",
+ "DELETE_IN_PROGRESS",
+ "DELETED",
+ "DELETE_FAILED",
+ "CREATE_FAILED",
+ "UPDATE_FAILED"
+ ]
+ },
+ "StudioStatusCode":{
+ "type":"string",
+ "enum":[
+ "STUDIO_CREATED",
+ "STUDIO_DELETED",
+ "STUDIO_UPDATED",
+ "STUDIO_CREATE_IN_PROGRESS",
+ "STUDIO_UPDATE_IN_PROGRESS",
+ "STUDIO_DELETE_IN_PROGRESS",
+ "STUDIO_WITH_LAUNCH_PROFILES_NOT_DELETED",
+ "STUDIO_WITH_STUDIO_COMPONENTS_NOT_DELETED",
+ "STUDIO_WITH_STREAMING_IMAGES_NOT_DELETED",
+ "AWS_SSO_NOT_ENABLED",
+ "AWS_SSO_ACCESS_DENIED",
+ "ROLE_NOT_OWNED_BY_STUDIO_OWNER",
+ "ROLE_COULD_NOT_BE_ASSUMED",
+ "INTERNAL_ERROR",
+ "ENCRYPTION_KEY_NOT_FOUND",
+ "ENCRYPTION_KEY_ACCESS_DENIED",
+ "AWS_SSO_CONFIGURATION_REPAIRED",
+ "AWS_SSO_CONFIGURATION_REPAIR_IN_PROGRESS",
+ "AWS_STS_REGION_DISABLED"
+ ]
+ },
+ "TagResourceRequest":{
+ "type":"structure",
+ "required":["resourceArn"],
+ "members":{
+ "resourceArn":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"resourceArn"
+ },
+ "tags":{"shape":"Tags"}
+ }
+ },
+ "TagResourceResponse":{
+ "type":"structure",
+ "members":{
+ }
+ },
+ "Tags":{
+ "type":"map",
+ "key":{"shape":"String"},
+ "value":{"shape":"String"}
+ },
+ "ThrottlingException":{
+ "type":"structure",
+ "members":{
+ "code":{"shape":"String"},
+ "context":{"shape":"ExceptionContext"},
+ "message":{"shape":"String"}
+ },
+ "error":{
+ "httpStatusCode":429,
+ "senderFault":true
+ },
+ "exception":true,
+ "retryable":{"throttling":false}
+ },
+ "Timestamp":{
+ "type":"timestamp",
+ "timestampFormat":"iso8601"
+ },
+ "UntagResourceRequest":{
+ "type":"structure",
+ "required":[
+ "resourceArn",
+ "tagKeys"
+ ],
+ "members":{
+ "resourceArn":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"resourceArn"
+ },
+ "tagKeys":{
+ "shape":"StringList",
+ "location":"querystring",
+ "locationName":"tagKeys"
+ }
+ }
+ },
+ "UntagResourceResponse":{
+ "type":"structure",
+ "members":{
+ }
+ },
+ "UpdateLaunchProfileMemberRequest":{
+ "type":"structure",
+ "required":[
+ "launchProfileId",
+ "persona",
+ "principalId",
+ "studioId"
+ ],
+ "members":{
+ "clientToken":{
+ "shape":"ClientToken",
+ "idempotencyToken":true,
+ "location":"header",
+ "locationName":"X-Amz-Client-Token"
+ },
+ "launchProfileId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"launchProfileId"
+ },
+ "persona":{"shape":"LaunchProfilePersona"},
+ "principalId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"principalId"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "UpdateLaunchProfileMemberResponse":{
+ "type":"structure",
+ "members":{
+ "member":{"shape":"LaunchProfileMembership"}
+ }
+ },
+ "UpdateLaunchProfileRequest":{
+ "type":"structure",
+ "required":[
+ "launchProfileId",
+ "studioId"
+ ],
+ "members":{
+ "clientToken":{
+ "shape":"ClientToken",
+ "idempotencyToken":true,
+ "location":"header",
+ "locationName":"X-Amz-Client-Token"
+ },
+ "description":{"shape":"LaunchProfileDescription"},
+ "launchProfileId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"launchProfileId"
+ },
+ "launchProfileProtocolVersions":{"shape":"LaunchProfileProtocolVersionList"},
+ "name":{"shape":"LaunchProfileName"},
+ "streamConfiguration":{"shape":"StreamConfigurationCreate"},
+ "studioComponentIds":{"shape":"LaunchProfileStudioComponentIdList"},
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "UpdateLaunchProfileResponse":{
+ "type":"structure",
+ "members":{
+ "launchProfile":{"shape":"LaunchProfile"}
+ }
+ },
+ "UpdateStreamingImageRequest":{
+ "type":"structure",
+ "required":[
+ "streamingImageId",
+ "studioId"
+ ],
+ "members":{
+ "clientToken":{
+ "shape":"ClientToken",
+ "idempotencyToken":true,
+ "location":"header",
+ "locationName":"X-Amz-Client-Token"
+ },
+ "description":{"shape":"StreamingImageDescription"},
+ "name":{"shape":"StreamingImageName"},
+ "streamingImageId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"streamingImageId"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ }
+ }
+ },
+ "UpdateStreamingImageResponse":{
+ "type":"structure",
+ "members":{
+ "streamingImage":{"shape":"StreamingImage"}
+ }
+ },
+ "UpdateStudioComponentRequest":{
+ "type":"structure",
+ "required":[
+ "studioComponentId",
+ "studioId"
+ ],
+ "members":{
+ "clientToken":{
+ "shape":"ClientToken",
+ "idempotencyToken":true,
+ "location":"header",
+ "locationName":"X-Amz-Client-Token"
+ },
+ "configuration":{"shape":"StudioComponentConfiguration"},
+ "description":{"shape":"StudioComponentDescription"},
+ "ec2SecurityGroupIds":{"shape":"StudioComponentSecurityGroupIdList"},
+ "initializationScripts":{"shape":"StudioComponentInitializationScriptList"},
+ "name":{"shape":"StudioComponentName"},
+ "runtimeRoleArn":{"shape":"RoleArn"},
+ "scriptParameters":{"shape":"StudioComponentScriptParameterKeyValueList"},
+ "secureInitializationRoleArn":{"shape":"RoleArn"},
+ "studioComponentId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioComponentId"
+ },
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ },
+ "subtype":{"shape":"StudioComponentSubtype"},
+ "type":{"shape":"StudioComponentType"}
+ }
+ },
+ "UpdateStudioComponentResponse":{
+ "type":"structure",
+ "members":{
+ "studioComponent":{"shape":"StudioComponent"}
+ }
+ },
+ "UpdateStudioRequest":{
+ "type":"structure",
+ "required":["studioId"],
+ "members":{
+ "adminRoleArn":{"shape":"RoleArn"},
+ "clientToken":{
+ "shape":"ClientToken",
+ "idempotencyToken":true,
+ "location":"header",
+ "locationName":"X-Amz-Client-Token"
+ },
+ "displayName":{"shape":"StudioDisplayName"},
+ "studioId":{
+ "shape":"String",
+ "location":"uri",
+ "locationName":"studioId"
+ },
+ "userRoleArn":{"shape":"RoleArn"}
+ }
+ },
+ "UpdateStudioResponse":{
+ "type":"structure",
+ "required":["studio"],
+ "members":{
+ "studio":{"shape":"Studio"}
+ }
+ },
+ "ValidationException":{
+ "type":"structure",
+ "members":{
+ "code":{"shape":"String"},
+ "context":{"shape":"ExceptionContext"},
+ "message":{"shape":"String"}
+ },
+ "error":{
+ "httpStatusCode":400,
+ "senderFault":true
+ },
+ "exception":true
+ },
+ "ValidationResult":{
+ "type":"structure",
+ "required":[
+ "state",
+ "statusCode",
+ "statusMessage",
+ "type"
+ ],
+ "members":{
+ "state":{"shape":"LaunchProfileValidationState"},
+ "statusCode":{"shape":"LaunchProfileValidationStatusCode"},
+ "statusMessage":{"shape":"LaunchProfileValidationStatusMessage"},
+ "type":{"shape":"LaunchProfileValidationType"}
+ }
+ },
+ "ValidationResults":{
+ "type":"list",
+ "member":{"shape":"ValidationResult"}
+ },
+ "VolumeConfiguration":{
+ "type":"structure",
+ "members":{
+ "iops":{"shape":"VolumeIops"},
+ "size":{"shape":"VolumeSizeInGiB"},
+ "throughput":{"shape":"VolumeThroughputInMiBs"}
+ }
+ },
+ "VolumeIops":{
+ "type":"integer",
+ "box":true,
+ "max":16000,
+ "min":3000
+ },
+ "VolumeRetentionMode":{
+ "type":"string",
+ "enum":[
+ "RETAIN",
+ "DELETE"
+ ]
+ },
+ "VolumeSizeInGiB":{
+ "type":"integer",
+ "box":true,
+ "max":16000,
+ "min":100
+ },
+ "VolumeThroughputInMiBs":{
+ "type":"integer",
+ "box":true,
+ "max":1000,
+ "min":125
+ },
+ "WindowsMountDrive":{
+ "type":"string",
+ "pattern":"^[A-Z]$"
+ }
+ }
+}
diff --git a/apis/nimble/2020-08-01/docs-2.json b/apis/nimble/2020-08-01/docs-2.json
new file mode 100644
index 00000000000..f59396c99bc
--- /dev/null
+++ b/apis/nimble/2020-08-01/docs-2.json
@@ -0,0 +1,1853 @@
+{
+ "version": "2.0",
+ "service": "
Welcome to the Amazon Nimble Studio API reference. This API reference provides methods, schema, resources, parameters, and more to help you get the most out of Nimble Studio.
Nimble Studio is a virtual studio that empowers visual effects, animation, and interactive content teams to create content securely within a scalable, private cloud service.
",
+ "operations": {
+ "AcceptEulas": "Accept EULAs.
",
+ "CreateLaunchProfile": "Create a launch profile.
",
+ "CreateStreamingImage": "Creates a streaming image resource in a studio.
",
+ "CreateStreamingSession": "Creates a streaming session in a studio.
After invoking this operation, you must poll GetStreamingSession until the streaming session is in the READY
state.
",
+ "CreateStreamingSessionStream": "Creates a streaming session stream for a streaming session.
After invoking this API, invoke GetStreamingSessionStream with the returned streamId to poll the resource until it is in the READY
state.
",
+ "CreateStudio": "Create a new studio.
When creating a studio, two IAM roles must be provided: the admin role and the user role. These roles are assumed by your users when they log in to the Nimble Studio portal.
The user role must have the AmazonNimbleStudio-StudioUser
managed policy attached for the portal to function properly.
The admin role must have the AmazonNimbleStudio-StudioAdmin
managed policy attached for the portal to function properly.
You may optionally specify a KMS key in the StudioEncryptionConfiguration
.
In Nimble Studio, resource names, descriptions, initialization scripts, and other data you provide are always encrypted at rest using an KMS key. By default, this key is owned by Amazon Web Services and managed on your behalf. You may provide your own KMS key when calling CreateStudio
to encrypt this data using a key you own and manage.
When providing an KMS key during studio creation, Nimble Studio creates KMS grants in your account to provide your studio user and admin roles access to these KMS keys.
If you delete this grant, the studio will no longer be accessible to your portal users.
If you delete the studio KMS key, your studio will no longer be accessible.
",
+ "CreateStudioComponent": "Creates a studio component resource.
",
+ "DeleteLaunchProfile": "Permanently delete a launch profile.
",
+ "DeleteLaunchProfileMember": "Delete a user from launch profile membership.
",
+ "DeleteStreamingImage": "Delete streaming image.
",
+ "DeleteStreamingSession": "Deletes streaming session resource.
After invoking this operation, use GetStreamingSession to poll the resource until it transitions to a DELETED
state.
A streaming session will count against your streaming session quota until it is marked DELETED
.
",
+ "DeleteStudio": "Delete a studio resource.
",
+ "DeleteStudioComponent": "Deletes a studio component resource.
",
+ "DeleteStudioMember": "Delete a user from studio membership.
",
+ "GetEula": "Get EULA.
",
+ "GetLaunchProfile": "Get a launch profile.
",
+ "GetLaunchProfileDetails": "Launch profile details include the launch profile resource and summary information of resources that are used by, or available to, the launch profile. This includes the name and description of all studio components used by the launch profiles, and the name and description of streaming images that can be used with this launch profile.
",
+ "GetLaunchProfileInitialization": "Get a launch profile initialization.
",
+ "GetLaunchProfileMember": "Get a user persona in launch profile membership.
",
+ "GetStreamingImage": "Get streaming image.
",
+ "GetStreamingSession": "Gets StreamingSession resource.
Invoke this operation to poll for a streaming session state while creating or deleting a session.
",
+ "GetStreamingSessionBackup": "Gets StreamingSessionBackup
resource.
Invoke this operation to poll for a streaming session backup while stopping a streaming session.
",
+ "GetStreamingSessionStream": "Gets a StreamingSessionStream for a streaming session.
Invoke this operation to poll the resource after invoking CreateStreamingSessionStream
.
After the StreamingSessionStream
changes to the READY
state, the url property will contain a stream to be used with the DCV streaming client.
",
+ "GetStudio": "Get a studio resource.
",
+ "GetStudioComponent": "Gets a studio component resource.
",
+ "GetStudioMember": "Get a user's membership in a studio.
",
+ "ListEulaAcceptances": "List EULA acceptances.
",
+ "ListEulas": "List EULAs.
",
+ "ListLaunchProfileMembers": "Get all users in a given launch profile membership.
",
+ "ListLaunchProfiles": "List all the launch profiles a studio.
",
+ "ListStreamingImages": "List the streaming image resources available to this studio.
This list will contain both images provided by Amazon Web Services, as well as streaming images that you have created in your studio.
",
+ "ListStreamingSessionBackups": "Lists the backups of a streaming session in a studio.
",
+ "ListStreamingSessions": "Lists the streaming sessions in a studio.
",
+ "ListStudioComponents": "Lists the StudioComponents
in a studio.
",
+ "ListStudioMembers": "Get all users in a given studio membership.
ListStudioMembers
only returns admin members.
",
+ "ListStudios": "List studios in your Amazon Web Services accounts in the requested Amazon Web Services Region.
",
+ "ListTagsForResource": "Gets the tags for a resource, given its Amazon Resource Names (ARN).
This operation supports ARNs for all resource types in Nimble Studio that support tags, including studio, studio component, launch profile, streaming image, and streaming session. All resources that can be tagged will contain an ARN property, so you do not have to create this ARN yourself.
",
+ "PutLaunchProfileMembers": "Add/update users with given persona to launch profile membership.
",
+ "PutStudioMembers": "Add/update users with given persona to studio membership.
",
+ "StartStreamingSession": "Transitions sessions from the STOPPED
state into the READY
state. The START_IN_PROGRESS
state is the intermediate state between the STOPPED
and READY
states.
",
+ "StartStudioSSOConfigurationRepair": "Repairs the IAM Identity Center configuration for a given studio.
If the studio has a valid IAM Identity Center configuration currently associated with it, this operation will fail with a validation error.
If the studio does not have a valid IAM Identity Center configuration currently associated with it, then a new IAM Identity Center application is created for the studio and the studio is changed to the READY
state.
After the IAM Identity Center application is repaired, you must use the Amazon Nimble Studio console to add administrators and users to your studio.
",
+ "StopStreamingSession": "Transitions sessions from the READY
state into the STOPPED
state. The STOP_IN_PROGRESS
state is the intermediate state between the READY
and STOPPED
states.
",
+ "TagResource": "Creates tags for a resource, given its ARN.
",
+ "UntagResource": "Deletes the tags for a resource.
",
+ "UpdateLaunchProfile": "Update a launch profile.
",
+ "UpdateLaunchProfileMember": "Update a user persona in launch profile membership.
",
+ "UpdateStreamingImage": "Update streaming image.
",
+ "UpdateStudio": "Update a Studio resource.
Currently, this operation only supports updating the displayName of your studio.
",
+ "UpdateStudioComponent": "Updates a studio component resource.
"
+ },
+ "shapes": {
+ "AcceptEulasRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "AcceptEulasResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "AccessDeniedException": {
+ "base": "You are not authorized to perform this operation. Check your IAM policies, and ensure that you are using the correct access keys.
",
+ "refs": {
+ }
+ },
+ "ActiveDirectoryComputerAttribute": {
+ "base": "An LDAP attribute of an Active Directory computer account, in the form of a name:value pair.
",
+ "refs": {
+ "ActiveDirectoryComputerAttributeList$member": null
+ }
+ },
+ "ActiveDirectoryComputerAttributeList": {
+ "base": "A collection of LDAP attributes to apply to Active Directory computer accounts that are created for streaming sessions.
",
+ "refs": {
+ "ActiveDirectoryConfiguration$computerAttributes": "A collection of custom attributes for an Active Directory computer.
",
+ "LaunchProfileInitializationActiveDirectory$computerAttributes": "A collection of custom attributes for an Active Directory computer.
"
+ }
+ },
+ "ActiveDirectoryComputerAttributeName": {
+ "base": "The name for the LDAP attribute.
",
+ "refs": {
+ "ActiveDirectoryComputerAttribute$name": "The name for the LDAP attribute.
"
+ }
+ },
+ "ActiveDirectoryComputerAttributeValue": {
+ "base": "The value for the LDAP attribute.
",
+ "refs": {
+ "ActiveDirectoryComputerAttribute$value": "The value for the LDAP attribute.
"
+ }
+ },
+ "ActiveDirectoryConfiguration": {
+ "base": "The configuration for a Directory Service for Microsoft Active Directory studio resource.
",
+ "refs": {
+ "StudioComponentConfiguration$activeDirectoryConfiguration": "The configuration for a Directory Service for Microsoft Active Directory studio resource.
"
+ }
+ },
+ "ActiveDirectoryDnsIpAddress": {
+ "base": null,
+ "refs": {
+ "ActiveDirectoryDnsIpAddressList$member": null
+ }
+ },
+ "ActiveDirectoryDnsIpAddressList": {
+ "base": null,
+ "refs": {
+ "LaunchProfileInitializationActiveDirectory$dnsIpAddresses": "The DNS IP address.
"
+ }
+ },
+ "ActiveDirectoryOrganizationalUnitDistinguishedName": {
+ "base": "The fully-qualified distinguished name of the organizational unit to place the computer account in.
",
+ "refs": {
+ "ActiveDirectoryConfiguration$organizationalUnitDistinguishedName": "The distinguished name (DN) and organizational unit (OU) of an Active Directory computer.
",
+ "LaunchProfileInitializationActiveDirectory$organizationalUnitDistinguishedName": "The name for the organizational unit distinguished name.
"
+ }
+ },
+ "AutomaticTerminationMode": {
+ "base": null,
+ "refs": {
+ "StreamConfiguration$automaticTerminationMode": "Indicates if a streaming session created from this launch profile should be terminated automatically or retained without termination after being in a STOPPED
state.
-
When ACTIVATED
, the streaming session is scheduled for termination after being in the STOPPED
state for the time specified in maxStoppedSessionLengthInMinutes
.
-
When DEACTIVATED
, the streaming session can remain in the STOPPED
state indefinitely.
This parameter is only allowed when sessionPersistenceMode
is ACTIVATED
. When allowed, the default value for this parameter is DEACTIVATED
.
",
+ "StreamConfigurationCreate$automaticTerminationMode": "Indicates if a streaming session created from this launch profile should be terminated automatically or retained without termination after being in a STOPPED
state.
-
When ACTIVATED
, the streaming session is scheduled for termination after being in the STOPPED
state for the time specified in maxStoppedSessionLengthInMinutes
.
-
When DEACTIVATED
, the streaming session can remain in the STOPPED
state indefinitely.
This parameter is only allowed when sessionPersistenceMode
is ACTIVATED
. When allowed, the default value for this parameter is DEACTIVATED
.
",
+ "StreamingSession$automaticTerminationMode": "Indicates if a streaming session created from this launch profile should be terminated automatically or retained without termination after being in a STOPPED
state.
-
When ACTIVATED
, the streaming session is scheduled for termination after being in the STOPPED
state for the time specified in maxStoppedSessionLengthInMinutes
.
-
When DEACTIVATED
, the streaming session can remain in the STOPPED
state indefinitely.
This parameter is only allowed when sessionPersistenceMode
is ACTIVATED
. When allowed, the default value for this parameter is DEACTIVATED
.
"
+ }
+ },
+ "ClientToken": {
+ "base": null,
+ "refs": {
+ "AcceptEulasRequest$clientToken": "Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you don’t specify a client token, the Amazon Web Services SDK automatically generates a client token and uses it for the request to ensure idempotency.
",
+ "CreateLaunchProfileRequest$clientToken": "Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you don’t specify a client token, the Amazon Web Services SDK automatically generates a client token and uses it for the request to ensure idempotency.
",
+ "CreateStreamingImageRequest$clientToken": "Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you don’t specify a client token, the Amazon Web Services SDK automatically generates a client token and uses it for the request to ensure idempotency.
",
+ "CreateStreamingSessionRequest$clientToken": "Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you don’t specify a client token, the Amazon Web Services SDK automatically generates a client token and uses it for the request to ensure idempotency.
",
+ "CreateStreamingSessionStreamRequest$clientToken": "Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you don’t specify a client token, the Amazon Web Services SDK automatically generates a client token and uses it for the request to ensure idempotency.
",
+ "CreateStudioComponentRequest$clientToken": "Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you don’t specify a client token, the Amazon Web Services SDK automatically generates a client token and uses it for the request to ensure idempotency.
",
+ "CreateStudioRequest$clientToken": "Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you don’t specify a client token, the Amazon Web Services SDK automatically generates a client token and uses it for the request to ensure idempotency.
",
+ "DeleteLaunchProfileMemberRequest$clientToken": "Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you don’t specify a client token, the Amazon Web Services SDK automatically generates a client token and uses it for the request to ensure idempotency.
",
+ "DeleteLaunchProfileRequest$clientToken": "Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you don’t specify a client token, the Amazon Web Services SDK automatically generates a client token and uses it for the request to ensure idempotency.
",
+ "DeleteStreamingImageRequest$clientToken": "Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you don’t specify a client token, the Amazon Web Services SDK automatically generates a client token and uses it for the request to ensure idempotency.
",
+ "DeleteStreamingSessionRequest$clientToken": "Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you don’t specify a client token, the Amazon Web Services SDK automatically generates a client token and uses it for the request to ensure idempotency.
",
+ "DeleteStudioComponentRequest$clientToken": "Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you don’t specify a client token, the Amazon Web Services SDK automatically generates a client token and uses it for the request to ensure idempotency.
",
+ "DeleteStudioMemberRequest$clientToken": "Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you don’t specify a client token, the Amazon Web Services SDK automatically generates a client token and uses it for the request to ensure idempotency.
",
+ "DeleteStudioRequest$clientToken": "Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you don’t specify a client token, the Amazon Web Services SDK automatically generates a client token and uses it for the request to ensure idempotency.
",
+ "PutLaunchProfileMembersRequest$clientToken": "Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you don’t specify a client token, the Amazon Web Services SDK automatically generates a client token and uses it for the request to ensure idempotency.
",
+ "PutStudioMembersRequest$clientToken": "Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you don’t specify a client token, the Amazon Web Services SDK automatically generates a client token and uses it for the request to ensure idempotency.
",
+ "StartStreamingSessionRequest$clientToken": "Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you don’t specify a client token, the Amazon Web Services SDK automatically generates a client token and uses it for the request to ensure idempotency.
",
+ "StartStudioSSOConfigurationRepairRequest$clientToken": "Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you don’t specify a client token, the Amazon Web Services SDK automatically generates a client token and uses it for the request to ensure idempotency.
",
+ "StopStreamingSessionRequest$clientToken": "Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you don’t specify a client token, the Amazon Web Services SDK automatically generates a client token and uses it for the request to ensure idempotency.
",
+ "UpdateLaunchProfileMemberRequest$clientToken": "Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you don’t specify a client token, the Amazon Web Services SDK automatically generates a client token and uses it for the request to ensure idempotency.
",
+ "UpdateLaunchProfileRequest$clientToken": "Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you don’t specify a client token, the Amazon Web Services SDK automatically generates a client token and uses it for the request to ensure idempotency.
",
+ "UpdateStreamingImageRequest$clientToken": "Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you don’t specify a client token, the Amazon Web Services SDK automatically generates a client token and uses it for the request to ensure idempotency.
",
+ "UpdateStudioComponentRequest$clientToken": "Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you don’t specify a client token, the Amazon Web Services SDK automatically generates a client token and uses it for the request to ensure idempotency.
",
+ "UpdateStudioRequest$clientToken": "Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If you don’t specify a client token, the Amazon Web Services SDK automatically generates a client token and uses it for the request to ensure idempotency.
"
+ }
+ },
+ "ComputeFarmConfiguration": {
+ "base": "The configuration for a render farm that is associated with a studio resource.
",
+ "refs": {
+ "StudioComponentConfiguration$computeFarmConfiguration": "The configuration for a render farm that is associated with a studio resource.
"
+ }
+ },
+ "ConflictException": {
+ "base": "Another operation is in progress.
",
+ "refs": {
+ }
+ },
+ "CreateLaunchProfileRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "CreateLaunchProfileResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "CreateStreamingImageRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "CreateStreamingImageResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "CreateStreamingSessionRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "CreateStreamingSessionResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "CreateStreamingSessionStreamRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "CreateStreamingSessionStreamResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "CreateStudioComponentRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "CreateStudioComponentResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "CreateStudioRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "CreateStudioResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "DeleteLaunchProfileMemberRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "DeleteLaunchProfileMemberResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "DeleteLaunchProfileRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "DeleteLaunchProfileResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "DeleteStreamingImageRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "DeleteStreamingImageResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "DeleteStreamingSessionRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "DeleteStreamingSessionResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "DeleteStudioComponentRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "DeleteStudioComponentResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "DeleteStudioMemberRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "DeleteStudioMemberResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "DeleteStudioRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "DeleteStudioResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "DirectoryId": {
+ "base": null,
+ "refs": {
+ "ActiveDirectoryConfiguration$directoryId": "The directory ID of the Directory Service for Microsoft Active Directory to access using this studio component.
",
+ "LaunchProfileInitializationActiveDirectory$directoryId": "The directory ID of the Directory Service for Microsoft Active Directory to access using this launch profile.
"
+ }
+ },
+ "EC2ImageId": {
+ "base": null,
+ "refs": {
+ "CreateStreamingImageRequest$ec2ImageId": "The ID of an EC2 machine image with which to create this streaming image.
",
+ "StreamingImage$ec2ImageId": "The ID of an EC2 machine image with which to create the streaming image.
"
+ }
+ },
+ "EC2SubnetId": {
+ "base": null,
+ "refs": {
+ "EC2SubnetIdList$member": null
+ }
+ },
+ "EC2SubnetIdList": {
+ "base": null,
+ "refs": {
+ "CreateLaunchProfileRequest$ec2SubnetIds": "Specifies the IDs of the EC2 subnets where streaming sessions will be accessible from. These subnets must support the specified instance types.
",
+ "LaunchProfile$ec2SubnetIds": "Unique identifiers for a collection of EC2 subnets.
"
+ }
+ },
+ "Eula": {
+ "base": "Represents a EULA resource.
",
+ "refs": {
+ "EulaList$member": null,
+ "GetEulaResponse$eula": "The EULA.
"
+ }
+ },
+ "EulaAcceptance": {
+ "base": "The acceptance of a EULA, required to use Amazon-provided streaming images.
",
+ "refs": {
+ "EulaAcceptanceList$member": null
+ }
+ },
+ "EulaAcceptanceId": {
+ "base": "The EULA acceptance ID.
",
+ "refs": {
+ "EulaAcceptance$eulaAcceptanceId": "The EULA acceptance ID.
"
+ }
+ },
+ "EulaAcceptanceList": {
+ "base": null,
+ "refs": {
+ "AcceptEulasResponse$eulaAcceptances": "A collection of EULA acceptances.
",
+ "ListEulaAcceptancesResponse$eulaAcceptances": "A collection of EULA acceptances.
"
+ }
+ },
+ "EulaId": {
+ "base": "Represents a EULA resource.
",
+ "refs": {
+ "Eula$eulaId": "The EULA ID.
",
+ "EulaAcceptance$eulaId": "The EULA ID.
"
+ }
+ },
+ "EulaIdList": {
+ "base": null,
+ "refs": {
+ "AcceptEulasRequest$eulaIds": "The EULA ID.
",
+ "StreamingImage$eulaIds": "The list of EULAs that must be accepted before a Streaming Session can be started using this streaming image.
"
+ }
+ },
+ "EulaList": {
+ "base": null,
+ "refs": {
+ "ListEulasResponse$eulas": "A collection of EULA resources.
"
+ }
+ },
+ "EulaName": {
+ "base": null,
+ "refs": {
+ "Eula$name": "The name for the EULA.
"
+ }
+ },
+ "ExceptionContext": {
+ "base": "ExceptionContext is a set of key-value pairs that provide you with more information about the error that occurred. For example, when the service returns a 404 ResourceNotFound error, ExceptionContext will contain the key `resourceId` with the value of resource that was not found.
ExceptionContext
allows scripts and other programmatic clients to provide better error handling.
",
+ "refs": {
+ "AccessDeniedException$context": "The exception context.
",
+ "ConflictException$context": "The exception context.
",
+ "InternalServerErrorException$context": "The exception context.
",
+ "ResourceNotFoundException$context": "The exception context.
",
+ "ServiceQuotaExceededException$context": "The exception context.
",
+ "ThrottlingException$context": "The exception context.
",
+ "ValidationException$context": "The exception context.
"
+ }
+ },
+ "GetEulaRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "GetEulaResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "GetLaunchProfileDetailsRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "GetLaunchProfileDetailsResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "GetLaunchProfileInitializationRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "GetLaunchProfileInitializationResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "GetLaunchProfileMemberRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "GetLaunchProfileMemberResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "GetLaunchProfileRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "GetLaunchProfileResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "GetStreamingImageRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "GetStreamingImageResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "GetStreamingSessionBackupRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "GetStreamingSessionBackupResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "GetStreamingSessionRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "GetStreamingSessionResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "GetStreamingSessionStreamRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "GetStreamingSessionStreamResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "GetStudioComponentRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "GetStudioComponentResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "GetStudioMemberRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "GetStudioMemberResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "GetStudioRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "GetStudioResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "InternalServerErrorException": {
+ "base": "An internal error has occurred. Please retry your request.
",
+ "refs": {
+ }
+ },
+ "LaunchProfile": {
+ "base": "A launch profile controls your artist workforce’s access to studio components, like compute farms, shared file systems, managed file systems, and license server configurations, as well as instance types and Amazon Machine Images (AMIs).
Studio administrators create launch profiles in the Nimble Studio console. Artists can use their launch profiles to launch an instance from the Nimble Studio portal. Each user’s launch profile defines how they can launch a streaming session. By default, studio admins can use all launch profiles.
",
+ "refs": {
+ "CreateLaunchProfileResponse$launchProfile": "The launch profile.
",
+ "DeleteLaunchProfileResponse$launchProfile": "The launch profile.
",
+ "GetLaunchProfileDetailsResponse$launchProfile": "The launch profile.
",
+ "GetLaunchProfileResponse$launchProfile": "The launch profile.
",
+ "LaunchProfileList$member": null,
+ "UpdateLaunchProfileResponse$launchProfile": "The launch profile.
"
+ }
+ },
+ "LaunchProfileDescription": {
+ "base": "A human-readable description of the launch profile.
",
+ "refs": {
+ "CreateLaunchProfileRequest$description": "The description.
",
+ "LaunchProfile$description": "A human-readable description of the launch profile.
",
+ "UpdateLaunchProfileRequest$description": "The description.
"
+ }
+ },
+ "LaunchProfileId": {
+ "base": null,
+ "refs": {
+ "LaunchProfile$launchProfileId": "The ID of the launch profile used to control access from the streaming session.
",
+ "LaunchProfileInitialization$launchProfileId": "The ID of the launch profile used to control access from the streaming session.
"
+ }
+ },
+ "LaunchProfileInitialization": {
+ "base": "A launch profile initialization contains information required for a workstation or server to connect to a launch profile.
This includes scripts, endpoints, security groups, subnets, and other configuration.
",
+ "refs": {
+ "GetLaunchProfileInitializationResponse$launchProfileInitialization": "The launch profile initialization.
"
+ }
+ },
+ "LaunchProfileInitializationActiveDirectory": {
+ "base": "The launch profile initialization Active Directory contains information required for the launch profile to connect to the Active Directory.
",
+ "refs": {
+ "LaunchProfileInitialization$activeDirectory": "A LaunchProfileInitializationActiveDirectory
resource.
"
+ }
+ },
+ "LaunchProfileInitializationScript": {
+ "base": "The launch profile initialization script is used when start streaming session runs.
",
+ "refs": {
+ "LaunchProfileInitializationScriptList$member": null
+ }
+ },
+ "LaunchProfileInitializationScriptList": {
+ "base": null,
+ "refs": {
+ "LaunchProfileInitialization$systemInitializationScripts": "The system initializtion scripts.
",
+ "LaunchProfileInitialization$userInitializationScripts": "The user initializtion scripts.
"
+ }
+ },
+ "LaunchProfileList": {
+ "base": null,
+ "refs": {
+ "ListLaunchProfilesResponse$launchProfiles": "A collection of launch profiles.
"
+ }
+ },
+ "LaunchProfileMembership": {
+ "base": "Studio admins can use launch profile membership to delegate launch profile access to studio users in the Nimble Studio portal without writing or maintaining complex IAM policies. A launch profile member is a user association from your studio identity source who is granted permissions to a launch profile.
A launch profile member (type USER) provides the following permissions to that launch profile:
",
+ "refs": {
+ "GetLaunchProfileMemberResponse$member": "The member.
",
+ "LaunchProfileMembershipList$member": null,
+ "UpdateLaunchProfileMemberResponse$member": "The updated member.
"
+ }
+ },
+ "LaunchProfileMembershipList": {
+ "base": null,
+ "refs": {
+ "ListLaunchProfileMembersResponse$members": "A list of members.
"
+ }
+ },
+ "LaunchProfileName": {
+ "base": null,
+ "refs": {
+ "CreateLaunchProfileRequest$name": "The name for the launch profile.
",
+ "LaunchProfile$name": "A friendly name for the launch profile.
",
+ "LaunchProfileInitialization$name": "The name for the launch profile.
",
+ "UpdateLaunchProfileRequest$name": "The name for the launch profile.
"
+ }
+ },
+ "LaunchProfilePersona": {
+ "base": null,
+ "refs": {
+ "LaunchProfileMembership$persona": "The persona.
",
+ "NewLaunchProfileMember$persona": "The persona.
",
+ "UpdateLaunchProfileMemberRequest$persona": "The persona.
"
+ }
+ },
+ "LaunchProfilePlatform": {
+ "base": null,
+ "refs": {
+ "LaunchProfileInitialization$platform": "The platform of the launch platform, either Windows or Linux.
",
+ "StudioComponentInitializationScript$platform": "The platform of the initialization script, either Windows or Linux.
"
+ }
+ },
+ "LaunchProfileProtocolVersion": {
+ "base": "The version number of the protocol that is used by the launch profile. The only valid version is \"2021-03-31\".
",
+ "refs": {
+ "LaunchProfileInitialization$launchProfileProtocolVersion": "The version number of the protocol that is used by the launch profile. The only valid version is \"2021-03-31\".
",
+ "LaunchProfileProtocolVersionList$member": null,
+ "StudioComponentInitializationScript$launchProfileProtocolVersion": "The version number of the protocol that is used by the launch profile. The only valid version is \"2021-03-31\".
"
+ }
+ },
+ "LaunchProfileProtocolVersionList": {
+ "base": null,
+ "refs": {
+ "CreateLaunchProfileRequest$launchProfileProtocolVersions": "The version number of the protocol that is used by the launch profile. The only valid version is \"2021-03-31\".
",
+ "LaunchProfile$launchProfileProtocolVersions": "The version number of the protocol that is used by the launch profile. The only valid version is \"2021-03-31\".
",
+ "UpdateLaunchProfileRequest$launchProfileProtocolVersions": "The version number of the protocol that is used by the launch profile. The only valid version is \"2021-03-31\".
"
+ }
+ },
+ "LaunchProfileSecurityGroupIdList": {
+ "base": null,
+ "refs": {
+ "LaunchProfileInitialization$ec2SecurityGroupIds": "The EC2 security groups that control access to the studio component.
"
+ }
+ },
+ "LaunchProfileState": {
+ "base": null,
+ "refs": {
+ "LaunchProfile$state": "The current state.
",
+ "LaunchProfileStateList$member": null
+ }
+ },
+ "LaunchProfileStateList": {
+ "base": null,
+ "refs": {
+ "ListLaunchProfilesRequest$states": "Filter this request to launch profiles in any of the given states.
"
+ }
+ },
+ "LaunchProfileStatusCode": {
+ "base": null,
+ "refs": {
+ "LaunchProfile$statusCode": "The status code.
"
+ }
+ },
+ "LaunchProfileStudioComponentIdList": {
+ "base": null,
+ "refs": {
+ "CreateLaunchProfileRequest$studioComponentIds": "Unique identifiers for a collection of studio components that can be used with this launch profile.
",
+ "LaunchProfile$studioComponentIds": "Unique identifiers for a collection of studio components that can be used with this launch profile.
",
+ "UpdateLaunchProfileRequest$studioComponentIds": "Unique identifiers for a collection of studio components that can be used with this launch profile.
"
+ }
+ },
+ "LaunchProfileValidationState": {
+ "base": null,
+ "refs": {
+ "ValidationResult$state": "The current state.
"
+ }
+ },
+ "LaunchProfileValidationStatusCode": {
+ "base": null,
+ "refs": {
+ "ValidationResult$statusCode": "The status code. This will contain the failure reason if the state is VALIDATION_FAILED
.
"
+ }
+ },
+ "LaunchProfileValidationStatusMessage": {
+ "base": null,
+ "refs": {
+ "ValidationResult$statusMessage": "The status message for the validation result.
"
+ }
+ },
+ "LaunchProfileValidationType": {
+ "base": null,
+ "refs": {
+ "ValidationResult$type": "The type of the validation result.
"
+ }
+ },
+ "LaunchPurpose": {
+ "base": "The launch purpose.
",
+ "refs": {
+ "LaunchProfileInitialization$launchPurpose": "The launch purpose.
"
+ }
+ },
+ "LicenseServiceConfiguration": {
+ "base": "The configuration for a license service that is associated with a studio resource.
",
+ "refs": {
+ "StudioComponentConfiguration$licenseServiceConfiguration": "The configuration for a license service that is associated with a studio resource.
"
+ }
+ },
+ "LinuxMountPoint": {
+ "base": null,
+ "refs": {
+ "SharedFileSystemConfiguration$linuxMountPoint": "The mount location for a shared file system on a Linux virtual workstation.
"
+ }
+ },
+ "ListEulaAcceptancesRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "ListEulaAcceptancesResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "ListEulasRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "ListEulasResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "ListLaunchProfileMembersRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "ListLaunchProfileMembersResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "ListLaunchProfilesRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "ListLaunchProfilesResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "ListStreamingImagesRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "ListStreamingImagesResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "ListStreamingSessionBackupsRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "ListStreamingSessionBackupsResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "ListStreamingSessionsRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "ListStreamingSessionsResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "ListStudioComponentsRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "ListStudioComponentsResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "ListStudioMembersRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "ListStudioMembersResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "ListStudiosRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "ListStudiosResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "ListTagsForResourceRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "ListTagsForResourceResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "MaxResults": {
+ "base": null,
+ "refs": {
+ "ListLaunchProfileMembersRequest$maxResults": "The max number of results to return in the response.
",
+ "ListLaunchProfilesRequest$maxResults": "The max number of results to return in the response.
",
+ "ListStudioComponentsRequest$maxResults": "The max number of results to return in the response.
",
+ "ListStudioMembersRequest$maxResults": "The max number of results to return in the response.
"
+ }
+ },
+ "NewLaunchProfileMember": {
+ "base": "A new member that is added to a launch profile.
",
+ "refs": {
+ "NewLaunchProfileMemberList$member": null
+ }
+ },
+ "NewLaunchProfileMemberList": {
+ "base": null,
+ "refs": {
+ "PutLaunchProfileMembersRequest$members": "A list of members.
"
+ }
+ },
+ "NewStudioMember": {
+ "base": "A new studio user's membership.
",
+ "refs": {
+ "NewStudioMemberList$member": null
+ }
+ },
+ "NewStudioMemberList": {
+ "base": null,
+ "refs": {
+ "PutStudioMembersRequest$members": "A list of members.
"
+ }
+ },
+ "PutLaunchProfileMembersRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "PutLaunchProfileMembersResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "PutStudioMembersRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "PutStudioMembersResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "Region": {
+ "base": null,
+ "refs": {
+ "Studio$homeRegion": "The Amazon Web Services Region where the studio resource is located.
"
+ }
+ },
+ "ResourceNotFoundException": {
+ "base": "The specified resource could not be found.
",
+ "refs": {
+ }
+ },
+ "RoleArn": {
+ "base": null,
+ "refs": {
+ "CreateStudioComponentRequest$runtimeRoleArn": "An IAM role attached to a Studio Component that gives the studio component access to Amazon Web Services resources at anytime while the instance is running.
",
+ "CreateStudioComponentRequest$secureInitializationRoleArn": "An IAM role attached to Studio Component when the system initialization script runs which give the studio component access to Amazon Web Services resources when the system initialization script runs.
",
+ "CreateStudioRequest$adminRoleArn": "The IAM role that studio admins will assume when logging in to the Nimble Studio portal.
",
+ "CreateStudioRequest$userRoleArn": "The IAM role that studio users will assume when logging in to the Nimble Studio portal.
",
+ "LaunchProfileInitializationScript$runtimeRoleArn": "An IAM role attached to a Studio Component that gives the studio component access to Amazon Web Services resources at anytime while the instance is running.
",
+ "LaunchProfileInitializationScript$secureInitializationRoleArn": "An IAM role attached to Studio Component when the system initialization script runs which give the studio component access to Amazon Web Services resources when the system initialization script runs.
",
+ "Studio$adminRoleArn": "The IAM role that studio admins assume when logging in to the Nimble Studio portal.
",
+ "Studio$userRoleArn": "The IAM role that studio users assume when logging in to the Nimble Studio portal.
",
+ "StudioComponent$runtimeRoleArn": "An IAM role attached to a Studio Component that gives the studio component access to Amazon Web Services resources at anytime while the instance is running.
",
+ "StudioComponent$secureInitializationRoleArn": "An IAM role attached to Studio Component when the system initialization script runs which give the studio component access to Amazon Web Services resources when the system initialization script runs.
",
+ "UpdateStudioComponentRequest$runtimeRoleArn": "An IAM role attached to a Studio Component that gives the studio component access to Amazon Web Services resources at anytime while the instance is running.
",
+ "UpdateStudioComponentRequest$secureInitializationRoleArn": "An IAM role attached to Studio Component when the system initialization script runs which give the studio component access to Amazon Web Services resources when the system initialization script runs.
",
+ "UpdateStudioRequest$adminRoleArn": "The IAM role that Studio Admins will assume when logging in to the Nimble Studio portal.
",
+ "UpdateStudioRequest$userRoleArn": "The IAM role that Studio Users will assume when logging in to the Nimble Studio portal.
"
+ }
+ },
+ "ScriptParameterKey": {
+ "base": "A script parameter key.
",
+ "refs": {
+ "ScriptParameterKeyValue$key": "A script parameter key.
"
+ }
+ },
+ "ScriptParameterKeyValue": {
+ "base": "A parameter for a studio component script, in the form of a key-value pair.
",
+ "refs": {
+ "StudioComponentScriptParameterKeyValueList$member": null
+ }
+ },
+ "ScriptParameterValue": {
+ "base": "A script parameter value.
",
+ "refs": {
+ "ScriptParameterKeyValue$value": "A script parameter value.
"
+ }
+ },
+ "SecurityGroupId": {
+ "base": null,
+ "refs": {
+ "LaunchProfileSecurityGroupIdList$member": null,
+ "StudioComponentSecurityGroupIdList$member": null
+ }
+ },
+ "SensitiveString": {
+ "base": null,
+ "refs": {
+ "ComputeFarmConfiguration$endpoint": "The endpoint of the ComputeFarm that is accessed by the studio component resource.
",
+ "LicenseServiceConfiguration$endpoint": "The endpoint of the license service that is accessed by the studio component resource.
",
+ "SharedFileSystemConfiguration$endpoint": "The endpoint of the shared file system that is accessed by the studio component resource.
",
+ "SharedFileSystemConfiguration$shareName": "The name of the file share.
",
+ "StreamingSessionStream$url": "The URL to connect to this stream using the DCV client.
"
+ }
+ },
+ "ServiceQuotaExceededException": {
+ "base": "Your current quota does not allow you to perform the request action. You can request increases for some quotas, and other quotas cannot be increased.
Please use Amazon Web Services Service Quotas to request an increase.
",
+ "refs": {
+ }
+ },
+ "SessionBackupMode": {
+ "base": null,
+ "refs": {
+ "StreamConfigurationSessionBackup$mode": "Specifies how artists sessions are backed up.
Configures backups for streaming sessions launched with this launch profile. The default value is DEACTIVATED
, which means that backups are deactivated. To allow backups, set this value to AUTOMATIC
.
",
+ "StreamingSession$backupMode": "Shows the current backup setting of the session.
"
+ }
+ },
+ "SessionPersistenceMode": {
+ "base": null,
+ "refs": {
+ "StreamConfiguration$sessionPersistenceMode": "Determine if a streaming session created from this launch profile can configure persistent storage. This means that volumeConfiguration
and automaticTerminationMode
are configured.
",
+ "StreamConfigurationCreate$sessionPersistenceMode": "Determine if a streaming session created from this launch profile can configure persistent storage. This means that volumeConfiguration
and automaticTerminationMode
are configured.
",
+ "StreamingSession$sessionPersistenceMode": "Determine if a streaming session created from this launch profile can configure persistent storage. This means that volumeConfiguration
and automaticTerminationMode
are configured.
"
+ }
+ },
+ "SharedFileSystemConfiguration": {
+ "base": "The configuration for a shared file storage system that is associated with a studio resource.
",
+ "refs": {
+ "StudioComponentConfiguration$sharedFileSystemConfiguration": "The configuration for a shared file storage system that is associated with a studio resource.
"
+ }
+ },
+ "StartStreamingSessionRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "StartStreamingSessionResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "StartStudioSSOConfigurationRepairRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "StartStudioSSOConfigurationRepairResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "StopStreamingSessionRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "StopStreamingSessionResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "StreamConfiguration": {
+ "base": "A configuration for a streaming session.
",
+ "refs": {
+ "LaunchProfile$streamConfiguration": "A configuration for a streaming session.
"
+ }
+ },
+ "StreamConfigurationCreate": {
+ "base": "Configuration for streaming workstations created using this launch profile.
",
+ "refs": {
+ "CreateLaunchProfileRequest$streamConfiguration": "A configuration for a streaming session.
",
+ "UpdateLaunchProfileRequest$streamConfiguration": "A configuration for a streaming session.
"
+ }
+ },
+ "StreamConfigurationMaxBackupsToRetain": {
+ "base": null,
+ "refs": {
+ "StreamConfigurationSessionBackup$maxBackupsToRetain": "The maximum number of backups that each streaming session created from this launch profile can have.
",
+ "StreamingSession$maxBackupsToRetain": "The maximum number of backups of a streaming session that you can have. When the maximum number of backups is reached, the oldest backup is deleted.
"
+ }
+ },
+ "StreamConfigurationMaxSessionLengthInMinutes": {
+ "base": null,
+ "refs": {
+ "StreamConfiguration$maxSessionLengthInMinutes": "The length of time, in minutes, that a streaming session can be active before it is stopped or terminated. After this point, Nimble Studio automatically terminates or stops the session. The default length of time is 690 minutes, and the maximum length of time is 30 days.
",
+ "StreamConfigurationCreate$maxSessionLengthInMinutes": "The length of time, in minutes, that a streaming session can be active before it is stopped or terminated. After this point, Nimble Studio automatically terminates or stops the session. The default length of time is 690 minutes, and the maximum length of time is 30 days.
"
+ }
+ },
+ "StreamConfigurationMaxStoppedSessionLengthInMinutes": {
+ "base": null,
+ "refs": {
+ "StreamConfiguration$maxStoppedSessionLengthInMinutes": "Integer that determines if you can start and stop your sessions and how long a session can stay in the STOPPED
state. The default value is 0. The maximum value is 5760.
This field is allowed only when sessionPersistenceMode
is ACTIVATED
and automaticTerminationMode
is ACTIVATED
.
If the value is set to 0, your sessions can’t be STOPPED
. If you then call StopStreamingSession
, the session fails. If the time that a session stays in the READY
state exceeds the maxSessionLengthInMinutes
value, the session will automatically be terminated (instead of STOPPED
).
If the value is set to a positive number, the session can be stopped. You can call StopStreamingSession
to stop sessions in the READY
state. If the time that a session stays in the READY
state exceeds the maxSessionLengthInMinutes
value, the session will automatically be stopped (instead of terminated).
",
+ "StreamConfigurationCreate$maxStoppedSessionLengthInMinutes": "Integer that determines if you can start and stop your sessions and how long a session can stay in the STOPPED
state. The default value is 0. The maximum value is 5760.
This field is allowed only when sessionPersistenceMode
is ACTIVATED
and automaticTerminationMode
is ACTIVATED
.
If the value is set to 0, your sessions can’t be STOPPED
. If you then call StopStreamingSession
, the session fails. If the time that a session stays in the READY
state exceeds the maxSessionLengthInMinutes
value, the session will automatically be terminated (instead of STOPPED
).
If the value is set to a positive number, the session can be stopped. You can call StopStreamingSession
to stop sessions in the READY
state. If the time that a session stays in the READY
state exceeds the maxSessionLengthInMinutes
value, the session will automatically be stopped (instead of terminated).
"
+ }
+ },
+ "StreamConfigurationSessionBackup": {
+ "base": "Configures how streaming sessions are backed up when launched from this launch profile.
",
+ "refs": {
+ "StreamConfiguration$sessionBackup": "Information about the streaming session backup.
",
+ "StreamConfigurationCreate$sessionBackup": "Configures how streaming sessions are backed up when launched from this launch profile.
"
+ }
+ },
+ "StreamConfigurationSessionStorage": {
+ "base": "The configuration for a streaming session’s upload storage.
",
+ "refs": {
+ "StreamConfiguration$sessionStorage": "The upload storage for a streaming session.
",
+ "StreamConfigurationCreate$sessionStorage": "The upload storage for a streaming workstation that is created using this launch profile.
"
+ }
+ },
+ "StreamingClipboardMode": {
+ "base": null,
+ "refs": {
+ "StreamConfiguration$clipboardMode": "Allows or deactivates the use of the system clipboard to copy and paste between the streaming session and streaming client.
",
+ "StreamConfigurationCreate$clipboardMode": "Allows or deactivates the use of the system clipboard to copy and paste between the streaming session and streaming client.
"
+ }
+ },
+ "StreamingImage": {
+ "base": "Represents a streaming image resource.
Streaming images are used by studio users to select which operating system and software they want to use in a Nimble Studio streaming session.
Amazon provides a number of streaming images that include popular 3rd-party software.
You can create your own streaming images using an Amazon EC2 machine image that you create for this purpose. You can also include software that your users require.
",
+ "refs": {
+ "CreateStreamingImageResponse$streamingImage": "The streaming image.
",
+ "DeleteStreamingImageResponse$streamingImage": "The streaming image.
",
+ "GetStreamingImageResponse$streamingImage": "The streaming image.
",
+ "StreamingImageList$member": null,
+ "UpdateStreamingImageResponse$streamingImage": null
+ }
+ },
+ "StreamingImageDescription": {
+ "base": "The description.
",
+ "refs": {
+ "CreateStreamingImageRequest$description": "A human-readable description of the streaming image.
",
+ "StreamingImage$description": "A human-readable description of the streaming image.
",
+ "UpdateStreamingImageRequest$description": "The description.
"
+ }
+ },
+ "StreamingImageEncryptionConfiguration": {
+ "base": "Specifies how a streaming image is encrypted.
",
+ "refs": {
+ "StreamingImage$encryptionConfiguration": "The encryption configuration.
"
+ }
+ },
+ "StreamingImageEncryptionConfigurationKeyArn": {
+ "base": null,
+ "refs": {
+ "StreamingImageEncryptionConfiguration$keyArn": "The ARN for a KMS key that is used to encrypt studio data.
"
+ }
+ },
+ "StreamingImageEncryptionConfigurationKeyType": {
+ "base": null,
+ "refs": {
+ "StreamingImageEncryptionConfiguration$keyType": "The type of KMS key that is used to encrypt studio data.
"
+ }
+ },
+ "StreamingImageId": {
+ "base": null,
+ "refs": {
+ "CreateStreamingSessionRequest$streamingImageId": "The ID of the streaming image.
",
+ "StreamingImage$streamingImageId": "The ID of the streaming image.
",
+ "StreamingImageIdList$member": null,
+ "StreamingSession$streamingImageId": "The ID of the streaming image.
"
+ }
+ },
+ "StreamingImageIdList": {
+ "base": "A list of streaming image IDs that users can select from when launching a streaming session with this launch profile.
",
+ "refs": {
+ "StreamConfiguration$streamingImageIds": "The streaming images that users can select from when launching a streaming session with this launch profile.
",
+ "StreamConfigurationCreate$streamingImageIds": "The streaming images that users can select from when launching a streaming session with this launch profile.
"
+ }
+ },
+ "StreamingImageList": {
+ "base": null,
+ "refs": {
+ "GetLaunchProfileDetailsResponse$streamingImages": "A collection of streaming images.
",
+ "ListStreamingImagesResponse$streamingImages": "A collection of streaming images.
"
+ }
+ },
+ "StreamingImageName": {
+ "base": "A friendly name for a streaming image resource.
",
+ "refs": {
+ "CreateStreamingImageRequest$name": "A friendly name for a streaming image resource.
",
+ "StreamingImage$name": "A friendly name for a streaming image resource.
",
+ "UpdateStreamingImageRequest$name": "The name for the streaming image.
"
+ }
+ },
+ "StreamingImageOwner": {
+ "base": "StreamingImageOwner is the owner of a particular streaming image.
This string is either the studioId that contains the streaming image, or the word AMAZON
for images provided by Nimble Studio.
",
+ "refs": {
+ "StreamingImage$owner": "The owner of the streaming image, either the studioId
that contains the streaming image, or amazon
for images that are provided by Amazon Nimble Studio.
"
+ }
+ },
+ "StreamingImagePlatform": {
+ "base": "The platform of this streaming image, either Windows or Linux.
",
+ "refs": {
+ "StreamingImage$platform": "The platform of the streaming image, either Windows or Linux.
"
+ }
+ },
+ "StreamingImageState": {
+ "base": null,
+ "refs": {
+ "StreamingImage$state": "The current state.
"
+ }
+ },
+ "StreamingImageStatusCode": {
+ "base": "The status code.
",
+ "refs": {
+ "StreamingImage$statusCode": "The status code.
"
+ }
+ },
+ "StreamingInstanceType": {
+ "base": null,
+ "refs": {
+ "CreateStreamingSessionRequest$ec2InstanceType": "The EC2 Instance type used for the streaming session.
",
+ "StreamingInstanceTypeList$member": null
+ }
+ },
+ "StreamingInstanceTypeList": {
+ "base": "The EC2 instance types that users can select from when launching a streaming session with this launch profile.
",
+ "refs": {
+ "StreamConfiguration$ec2InstanceTypes": "The EC2 instance types that users can select from when launching a streaming session with this launch profile.
",
+ "StreamConfigurationCreate$ec2InstanceTypes": "The EC2 instance types that users can select from when launching a streaming session with this launch profile.
"
+ }
+ },
+ "StreamingSession": {
+ "base": "A streaming session is a virtual workstation created using a particular launch profile.
",
+ "refs": {
+ "CreateStreamingSessionResponse$session": "The session.
",
+ "DeleteStreamingSessionResponse$session": "The session.
",
+ "GetStreamingSessionResponse$session": "The session.
",
+ "StartStreamingSessionResponse$session": null,
+ "StopStreamingSessionResponse$session": null,
+ "StreamingSessionList$member": null
+ }
+ },
+ "StreamingSessionBackup": {
+ "base": "Information about the streaming session backup.
",
+ "refs": {
+ "GetStreamingSessionBackupResponse$streamingSessionBackup": "Information about the streaming session backup.
",
+ "StreamingSessionBackupList$member": null
+ }
+ },
+ "StreamingSessionBackupList": {
+ "base": null,
+ "refs": {
+ "ListStreamingSessionBackupsResponse$streamingSessionBackups": "Information about the streaming session backups.
"
+ }
+ },
+ "StreamingSessionId": {
+ "base": null,
+ "refs": {
+ "StreamingSession$sessionId": "The session ID.
",
+ "StreamingSessionBackup$sessionId": "The streaming session ID for the StreamingSessionBackup
.
"
+ }
+ },
+ "StreamingSessionList": {
+ "base": null,
+ "refs": {
+ "ListStreamingSessionsResponse$sessions": "A collection of streaming sessions.
"
+ }
+ },
+ "StreamingSessionState": {
+ "base": "The streaming session state.
",
+ "refs": {
+ "StreamingSession$state": "The current state.
",
+ "StreamingSessionBackup$state": null
+ }
+ },
+ "StreamingSessionStatusCode": {
+ "base": null,
+ "refs": {
+ "StreamingSession$statusCode": "The status code.
",
+ "StreamingSessionBackup$statusCode": "The status code.
"
+ }
+ },
+ "StreamingSessionStorageMode": {
+ "base": null,
+ "refs": {
+ "StreamingSessionStorageModeList$member": null
+ }
+ },
+ "StreamingSessionStorageModeList": {
+ "base": null,
+ "refs": {
+ "StreamConfigurationSessionStorage$mode": "Allows artists to upload files to their workstations. The only valid option is UPLOAD
.
"
+ }
+ },
+ "StreamingSessionStorageRoot": {
+ "base": "The upload storage root location (folder) on streaming workstations where files are uploaded.
",
+ "refs": {
+ "StreamConfigurationSessionStorage$root": "The configuration for the upload storage root of the streaming session.
"
+ }
+ },
+ "StreamingSessionStorageRootPathLinux": {
+ "base": null,
+ "refs": {
+ "StreamingSessionStorageRoot$linux": "The folder path in Linux workstations where files are uploaded.
"
+ }
+ },
+ "StreamingSessionStorageRootPathWindows": {
+ "base": null,
+ "refs": {
+ "StreamingSessionStorageRoot$windows": "The folder path in Windows workstations where files are uploaded.
"
+ }
+ },
+ "StreamingSessionStream": {
+ "base": "A stream is an active connection to a streaming session, enabling a studio user to control the streaming session using a compatible client. Streaming session streams are compatible with the NICE DCV web client, included in the Nimble Studio portal, or the NICE DCV desktop client.
",
+ "refs": {
+ "CreateStreamingSessionStreamResponse$stream": "The stream.
",
+ "GetStreamingSessionStreamResponse$stream": "The stream.
"
+ }
+ },
+ "StreamingSessionStreamExpirationInSeconds": {
+ "base": null,
+ "refs": {
+ "CreateStreamingSessionStreamRequest$expirationInSeconds": "The expiration time in seconds.
"
+ }
+ },
+ "StreamingSessionStreamState": {
+ "base": null,
+ "refs": {
+ "StreamingSessionStream$state": "The current state.
"
+ }
+ },
+ "StreamingSessionStreamStatusCode": {
+ "base": null,
+ "refs": {
+ "StreamingSessionStream$statusCode": "The streaming session stream status code.
"
+ }
+ },
+ "String": {
+ "base": null,
+ "refs": {
+ "AcceptEulasRequest$studioId": "The studio ID.
",
+ "AccessDeniedException$code": "A more specific error code.
",
+ "AccessDeniedException$message": "A human-readable description of the error.
",
+ "ComputeFarmConfiguration$activeDirectoryUser": "The name of an Active Directory user that is used on ComputeFarm worker instances.
",
+ "ConflictException$code": "A more specific error code.
",
+ "ConflictException$message": "A human-readable description of the error.
",
+ "CreateLaunchProfileRequest$studioId": "The studio ID.
",
+ "CreateStreamingImageRequest$studioId": "The studio ID.
",
+ "CreateStreamingSessionRequest$launchProfileId": "The ID of the launch profile used to control access from the streaming session.
",
+ "CreateStreamingSessionRequest$ownedBy": "The user ID of the user that owns the streaming session. The user that owns the session will be logging into the session and interacting with the virtual workstation.
",
+ "CreateStreamingSessionRequest$studioId": "The studio ID.
",
+ "CreateStreamingSessionStreamRequest$sessionId": "The streaming session ID.
",
+ "CreateStreamingSessionStreamRequest$studioId": "The studio ID.
",
+ "CreateStudioComponentRequest$studioId": "The studio ID.
",
+ "DeleteLaunchProfileMemberRequest$launchProfileId": "The ID of the launch profile used to control access from the streaming session.
",
+ "DeleteLaunchProfileMemberRequest$principalId": "The principal ID. This currently supports a IAM Identity Center UserId.
",
+ "DeleteLaunchProfileMemberRequest$studioId": "The studio ID.
",
+ "DeleteLaunchProfileRequest$launchProfileId": "The ID of the launch profile used to control access from the streaming session.
",
+ "DeleteLaunchProfileRequest$studioId": "The studio ID.
",
+ "DeleteStreamingImageRequest$streamingImageId": "The streaming image ID.
",
+ "DeleteStreamingImageRequest$studioId": "The studio ID.
",
+ "DeleteStreamingSessionRequest$sessionId": "The streaming session ID.
",
+ "DeleteStreamingSessionRequest$studioId": "The studio ID.
",
+ "DeleteStudioComponentRequest$studioComponentId": "The studio component ID.
",
+ "DeleteStudioComponentRequest$studioId": "The studio ID.
",
+ "DeleteStudioMemberRequest$principalId": "The principal ID. This currently supports a IAM Identity Center UserId.
",
+ "DeleteStudioMemberRequest$studioId": "The studio ID.
",
+ "DeleteStudioRequest$studioId": "The studio ID.
",
+ "Eula$content": "The EULA content.
",
+ "EulaAcceptance$acceptedBy": "The ID of the person who accepted the EULA.
",
+ "EulaAcceptance$accepteeId": "The ID of the acceptee.
",
+ "EulaIdList$member": null,
+ "ExceptionContext$key": null,
+ "ExceptionContext$value": null,
+ "GetEulaRequest$eulaId": "The EULA ID.
",
+ "GetLaunchProfileDetailsRequest$launchProfileId": "The ID of the launch profile used to control access from the streaming session.
",
+ "GetLaunchProfileDetailsRequest$studioId": "The studio ID.
",
+ "GetLaunchProfileInitializationRequest$launchProfileId": "The ID of the launch profile used to control access from the streaming session.
",
+ "GetLaunchProfileInitializationRequest$launchPurpose": "The launch purpose.
",
+ "GetLaunchProfileInitializationRequest$platform": "The platform where this Launch Profile will be used, either Windows or Linux.
",
+ "GetLaunchProfileInitializationRequest$studioId": "The studio ID.
",
+ "GetLaunchProfileMemberRequest$launchProfileId": "The ID of the launch profile used to control access from the streaming session.
",
+ "GetLaunchProfileMemberRequest$principalId": "The principal ID. This currently supports a IAM Identity Center UserId.
",
+ "GetLaunchProfileMemberRequest$studioId": "The studio ID.
",
+ "GetLaunchProfileRequest$launchProfileId": "The ID of the launch profile used to control access from the streaming session.
",
+ "GetLaunchProfileRequest$studioId": "The studio ID.
",
+ "GetStreamingImageRequest$streamingImageId": "The streaming image ID.
",
+ "GetStreamingImageRequest$studioId": "The studio ID.
",
+ "GetStreamingSessionBackupRequest$backupId": "The ID of the backup.
",
+ "GetStreamingSessionBackupRequest$studioId": "The studio ID.
",
+ "GetStreamingSessionRequest$sessionId": "The streaming session ID.
",
+ "GetStreamingSessionRequest$studioId": "The studio ID.
",
+ "GetStreamingSessionStreamRequest$sessionId": "The streaming session ID.
",
+ "GetStreamingSessionStreamRequest$streamId": "The streaming session stream ID.
",
+ "GetStreamingSessionStreamRequest$studioId": "The studio ID.
",
+ "GetStudioComponentRequest$studioComponentId": "The studio component ID.
",
+ "GetStudioComponentRequest$studioId": "The studio ID.
",
+ "GetStudioMemberRequest$principalId": "The principal ID. This currently supports a IAM Identity Center UserId.
",
+ "GetStudioMemberRequest$studioId": "The studio ID.
",
+ "GetStudioRequest$studioId": "The studio ID.
",
+ "InternalServerErrorException$code": "A more specific error code.
",
+ "InternalServerErrorException$message": "A human-readable description of the error.
",
+ "LaunchProfile$arn": "The Amazon Resource Name (ARN) that is assigned to a studio resource and uniquely identifies it. ARNs are unique across all Regions.
",
+ "LaunchProfile$createdBy": "The user ID of the user that created the launch profile.
",
+ "LaunchProfile$statusMessage": "The status message for the launch profile.
",
+ "LaunchProfile$updatedBy": "The user ID of the user that most recently updated the resource.
",
+ "LaunchProfileInitializationActiveDirectory$directoryName": "The directory name.
",
+ "LaunchProfileMembership$identityStoreId": "The ID of the identity store.
",
+ "LaunchProfileMembership$principalId": "The principal ID.
",
+ "LaunchProfileMembership$sid": "The Active Directory Security Identifier for this user, if available.
",
+ "LaunchProfileStudioComponentIdList$member": null,
+ "ListEulaAcceptancesRequest$nextToken": "The token for the next set of results, or null if there are no more results.
",
+ "ListEulaAcceptancesRequest$studioId": "The studio ID.
",
+ "ListEulaAcceptancesResponse$nextToken": "The token for the next set of results, or null if there are no more results.
",
+ "ListEulasRequest$nextToken": "The token for the next set of results, or null if there are no more results.
",
+ "ListEulasResponse$nextToken": "The token for the next set of results, or null if there are no more results.
",
+ "ListLaunchProfileMembersRequest$launchProfileId": "The ID of the launch profile used to control access from the streaming session.
",
+ "ListLaunchProfileMembersRequest$nextToken": "The token for the next set of results, or null if there are no more results.
",
+ "ListLaunchProfileMembersRequest$studioId": "The studio ID.
",
+ "ListLaunchProfileMembersResponse$nextToken": "The token for the next set of results, or null if there are no more results.
",
+ "ListLaunchProfilesRequest$nextToken": "The token for the next set of results, or null if there are no more results.
",
+ "ListLaunchProfilesRequest$principalId": "The principal ID. This currently supports a IAM Identity Center UserId.
",
+ "ListLaunchProfilesRequest$studioId": "The studio ID.
",
+ "ListLaunchProfilesResponse$nextToken": "The token for the next set of results, or null if there are no more results.
",
+ "ListStreamingImagesRequest$nextToken": "The token for the next set of results, or null if there are no more results.
",
+ "ListStreamingImagesRequest$owner": "Filter this request to streaming images with the given owner
",
+ "ListStreamingImagesRequest$studioId": "The studio ID.
",
+ "ListStreamingImagesResponse$nextToken": "The token for the next set of results, or null if there are no more results.
",
+ "ListStreamingSessionBackupsRequest$nextToken": "The token for the next set of results, or null if there are no more results.
",
+ "ListStreamingSessionBackupsRequest$ownedBy": "The user ID of the user that owns the streaming session.
",
+ "ListStreamingSessionBackupsRequest$studioId": "The studio ID.
",
+ "ListStreamingSessionBackupsResponse$nextToken": "The token for the next set of results, or null if there are no more results.
",
+ "ListStreamingSessionsRequest$createdBy": "Filters the request to streaming sessions created by the given user.
",
+ "ListStreamingSessionsRequest$nextToken": "The token for the next set of results, or null if there are no more results.
",
+ "ListStreamingSessionsRequest$ownedBy": "Filters the request to streaming session owned by the given user
",
+ "ListStreamingSessionsRequest$sessionIds": "Filters the request to only the provided session IDs.
",
+ "ListStreamingSessionsRequest$studioId": "The studio ID.
",
+ "ListStreamingSessionsResponse$nextToken": "The token for the next set of results, or null if there are no more results.
",
+ "ListStudioComponentsRequest$nextToken": "The token for the next set of results, or null if there are no more results.
",
+ "ListStudioComponentsRequest$studioId": "The studio ID.
",
+ "ListStudioComponentsResponse$nextToken": "The token for the next set of results, or null if there are no more results.
",
+ "ListStudioMembersRequest$nextToken": "The token for the next set of results, or null if there are no more results.
",
+ "ListStudioMembersRequest$studioId": "The studio ID.
",
+ "ListStudioMembersResponse$nextToken": "The token for the next set of results, or null if there are no more results.
",
+ "ListStudiosRequest$nextToken": "The token for the next set of results, or null if there are no more results.
",
+ "ListStudiosResponse$nextToken": "The token for the next set of results, or null if there are no more results.
",
+ "ListTagsForResourceRequest$resourceArn": "The Amazon Resource Name (ARN) of the resource for which you want to list tags.
",
+ "NewLaunchProfileMember$principalId": "The principal ID.
",
+ "NewStudioMember$principalId": "The principal ID.
",
+ "PutLaunchProfileMembersRequest$identityStoreId": "The ID of the identity store.
",
+ "PutLaunchProfileMembersRequest$launchProfileId": "The ID of the launch profile used to control access from the streaming session.
",
+ "PutLaunchProfileMembersRequest$studioId": "The studio ID.
",
+ "PutStudioMembersRequest$identityStoreId": "The ID of the identity store.
",
+ "PutStudioMembersRequest$studioId": "The studio ID.
",
+ "ResourceNotFoundException$code": "A more specific error code.
",
+ "ResourceNotFoundException$message": "A human-readable description of the error.
",
+ "ServiceQuotaExceededException$code": "A more specific error code.
",
+ "ServiceQuotaExceededException$message": "A human-readable description of the error.
",
+ "SharedFileSystemConfiguration$fileSystemId": "The unique identifier for a file system.
",
+ "StartStreamingSessionRequest$backupId": "The ID of the backup.
",
+ "StartStreamingSessionRequest$sessionId": "The streaming session ID for the StartStreamingSessionRequest
.
",
+ "StartStreamingSessionRequest$studioId": "The studio ID for the StartStreamingSessionRequest.
",
+ "StartStudioSSOConfigurationRepairRequest$studioId": "The studio ID.
",
+ "StopStreamingSessionRequest$sessionId": "The streaming session ID for the StopStreamingSessionRequest
.
",
+ "StopStreamingSessionRequest$studioId": "The studioId for the StopStreamingSessionRequest.
",
+ "StreamingImage$arn": "The Amazon Resource Name (ARN) that is assigned to a studio resource and uniquely identifies it. ARNs are unique across all Regions.
",
+ "StreamingImage$statusMessage": "The status message for the streaming image.
",
+ "StreamingSession$arn": "The Amazon Resource Name (ARN) that is assigned to a studio resource and uniquely identifies it. ARNs are unique across all Regions.
",
+ "StreamingSession$createdBy": "The user ID of the user that created the streaming session.
",
+ "StreamingSession$ec2InstanceType": "The EC2 Instance type used for the streaming session.
",
+ "StreamingSession$launchProfileId": "The ID of the launch profile used to control access from the streaming session.
",
+ "StreamingSession$ownedBy": "The user ID of the user that owns the streaming session. The user that owns the session will be logging into the session and interacting with the virtual workstation.
",
+ "StreamingSession$startedBy": "The user ID of the user that started the streaming session.
",
+ "StreamingSession$startedFromBackupId": "The backup ID used to restore a streaming session.
",
+ "StreamingSession$statusMessage": "The status message for the streaming session.
",
+ "StreamingSession$stoppedBy": "The user ID of the user that stopped the streaming session.
",
+ "StreamingSession$updatedBy": "The user ID of the user that most recently updated the resource.
",
+ "StreamingSessionBackup$arn": "The Amazon Resource Name (ARN) that is assigned to a studio resource and uniquely identifies it. ARNs are unique across all Regions.
",
+ "StreamingSessionBackup$backupId": "The ID of the backup.
",
+ "StreamingSessionBackup$launchProfileId": "The ID of the launch profile which allowed the backups for the streaming session.
",
+ "StreamingSessionBackup$ownedBy": "The user ID of the user that owns the streaming session.
",
+ "StreamingSessionBackup$statusMessage": "The status message for the streaming session backup.
",
+ "StreamingSessionStream$createdBy": "The user ID of the user that created the streaming session stream.
",
+ "StreamingSessionStream$ownedBy": "The user ID of the user that owns the streaming session. The user that owns the session will be logging into the session and interacting with the virtual workstation.
",
+ "StreamingSessionStream$streamId": "The stream ID.
",
+ "StringList$member": null,
+ "Studio$arn": "The Amazon Resource Name (ARN) that is assigned to a studio resource and uniquely identifies it. ARNs are unique across all Regions.
",
+ "Studio$ssoClientId": "The IAM Identity Center application client ID used to integrate with IAM Identity Center. This ID allows IAM Identity Center users to log in to Nimble Studio portal.
",
+ "Studio$statusMessage": "Additional detail on the studio state.
",
+ "Studio$studioId": "The unique identifier for a studio resource. In Nimble Studio, all other resources are contained in a studio resource.
",
+ "Studio$studioUrl": "The address of the web page for the studio.
",
+ "StudioComponent$arn": "The Amazon Resource Name (ARN) that is assigned to a studio resource and uniquely identifies it. ARNs are unique across all Regions.
",
+ "StudioComponent$createdBy": "The user ID of the user that created the studio component.
",
+ "StudioComponent$statusMessage": "The status message for the studio component.
",
+ "StudioComponent$updatedBy": "The user ID of the user that most recently updated the resource.
",
+ "StudioComponentSummary$createdBy": "The user ID of the user that created the studio component.
",
+ "StudioComponentSummary$updatedBy": "The user ID of the user that most recently updated the resource.
",
+ "StudioMembership$identityStoreId": "The ID of the identity store.
",
+ "StudioMembership$principalId": "The principal ID.
",
+ "StudioMembership$sid": "The Active Directory Security Identifier for this user, if available.
",
+ "TagResourceRequest$resourceArn": "The Amazon Resource Name (ARN) of the resource you want to add tags to.
",
+ "Tags$key": null,
+ "Tags$value": null,
+ "ThrottlingException$code": "A more specific error code.
",
+ "ThrottlingException$message": "A human-readable description of the error.
",
+ "UntagResourceRequest$resourceArn": "Identifies the Amazon Resource Name(ARN) key from which you are removing tags.
",
+ "UpdateLaunchProfileMemberRequest$launchProfileId": "The ID of the launch profile used to control access from the streaming session.
",
+ "UpdateLaunchProfileMemberRequest$principalId": "The principal ID. This currently supports a IAM Identity Center UserId.
",
+ "UpdateLaunchProfileMemberRequest$studioId": "The studio ID.
",
+ "UpdateLaunchProfileRequest$launchProfileId": "The ID of the launch profile used to control access from the streaming session.
",
+ "UpdateLaunchProfileRequest$studioId": "The studio ID.
",
+ "UpdateStreamingImageRequest$streamingImageId": "The streaming image ID.
",
+ "UpdateStreamingImageRequest$studioId": "The studio ID.
",
+ "UpdateStudioComponentRequest$studioComponentId": "The studio component ID.
",
+ "UpdateStudioComponentRequest$studioId": "The studio ID.
",
+ "UpdateStudioRequest$studioId": "The studio ID.
",
+ "ValidationException$code": "A more specific error code.
",
+ "ValidationException$message": "A human-readable description of the error.
"
+ }
+ },
+ "StringList": {
+ "base": null,
+ "refs": {
+ "GetLaunchProfileInitializationRequest$launchProfileProtocolVersions": "The launch profile protocol versions supported by the client.
",
+ "ListEulaAcceptancesRequest$eulaIds": "The list of EULA IDs that have been previously accepted.
",
+ "ListEulasRequest$eulaIds": "The list of EULA IDs that should be returned
",
+ "UntagResourceRequest$tagKeys": "One or more tag keys. Specify only the tag keys, not the tag values.
"
+ }
+ },
+ "Studio": {
+ "base": "Represents a studio resource.
A studio is the core resource used with Nimble Studio. You must create a studio first, before any other resource type can be created. All other resources you create and manage in Nimble Studio are contained within a studio.
When creating a studio, you must provides two IAM roles for use with the Nimble Studio portal. These roles are assumed by your users when they log in to the Nimble Studio portal via IAM Identity Center and your identity source.
The user role must have the AmazonNimbleStudio-StudioUser
managed policy attached for the portal to function properly.
The admin role must have the AmazonNimbleStudio-StudioAdmin
managed policy attached for the portal to function properly.
Your studio roles must trust the identity.nimble.amazonaws.com
service principal to function properly.
",
+ "refs": {
+ "CreateStudioResponse$studio": "Information about a studio.
",
+ "DeleteStudioResponse$studio": "Information about a studio.
",
+ "GetStudioResponse$studio": "Information about a studio.
",
+ "StartStudioSSOConfigurationRepairResponse$studio": "Information about a studio.
",
+ "StudioList$member": null,
+ "UpdateStudioResponse$studio": "Information about a studio.
"
+ }
+ },
+ "StudioComponent": {
+ "base": "A studio component represents a network resource to be used by a studio's users and workflows. A typical studio contains studio components for each of the following: render farm, Active Directory, licensing, and file system.
Access to a studio component is managed by specifying security groups for the resource, as well as its endpoint.
A studio component also has a set of initialization scripts that are returned by GetLaunchProfileInitialization
. These initialization scripts run on streaming sessions when they start. They provide users with flexibility in controlling how the studio resources are configured on a streaming session.
",
+ "refs": {
+ "CreateStudioComponentResponse$studioComponent": "Information about the studio component.
",
+ "DeleteStudioComponentResponse$studioComponent": "Information about the studio component.
",
+ "GetStudioComponentResponse$studioComponent": "Information about the studio component.
",
+ "StudioComponentList$member": null,
+ "UpdateStudioComponentResponse$studioComponent": "Information about the studio component.
"
+ }
+ },
+ "StudioComponentConfiguration": {
+ "base": "The configuration of the studio component, based on component type.
",
+ "refs": {
+ "CreateStudioComponentRequest$configuration": "The configuration of the studio component, based on component type.
",
+ "StudioComponent$configuration": "The configuration of the studio component, based on component type.
",
+ "UpdateStudioComponentRequest$configuration": "The configuration of the studio component, based on component type.
"
+ }
+ },
+ "StudioComponentDescription": {
+ "base": null,
+ "refs": {
+ "CreateStudioComponentRequest$description": "The description.
",
+ "StudioComponent$description": "A human-readable description for the studio component resource.
",
+ "StudioComponentSummary$description": "The description.
",
+ "UpdateStudioComponentRequest$description": "The description.
"
+ }
+ },
+ "StudioComponentId": {
+ "base": null,
+ "refs": {
+ "LaunchProfileInitializationActiveDirectory$studioComponentId": "The unique identifier for a studio component resource.
",
+ "LaunchProfileInitializationScript$studioComponentId": "The unique identifier for a studio component resource.
",
+ "StudioComponent$studioComponentId": "The unique identifier for a studio component resource.
",
+ "StudioComponentSummary$studioComponentId": "The unique identifier for a studio component resource.
"
+ }
+ },
+ "StudioComponentInitializationScript": {
+ "base": "Initialization scripts for studio components.
",
+ "refs": {
+ "StudioComponentInitializationScriptList$member": null
+ }
+ },
+ "StudioComponentInitializationScriptContent": {
+ "base": null,
+ "refs": {
+ "LaunchProfileInitializationScript$script": "The initialization script.
",
+ "StudioComponentInitializationScript$script": "The initialization script.
"
+ }
+ },
+ "StudioComponentInitializationScriptList": {
+ "base": null,
+ "refs": {
+ "CreateStudioComponentRequest$initializationScripts": "Initialization scripts for studio components.
",
+ "StudioComponent$initializationScripts": "Initialization scripts for studio components.
",
+ "UpdateStudioComponentRequest$initializationScripts": "Initialization scripts for studio components.
"
+ }
+ },
+ "StudioComponentInitializationScriptRunContext": {
+ "base": null,
+ "refs": {
+ "StudioComponentInitializationScript$runContext": "The method to use when running the initialization script.
"
+ }
+ },
+ "StudioComponentList": {
+ "base": null,
+ "refs": {
+ "ListStudioComponentsResponse$studioComponents": "A collection of studio components.
"
+ }
+ },
+ "StudioComponentName": {
+ "base": null,
+ "refs": {
+ "CreateStudioComponentRequest$name": "The name for the studio component.
",
+ "LaunchProfileInitializationActiveDirectory$studioComponentName": "The name for the studio component.
",
+ "LaunchProfileInitializationScript$studioComponentName": "The name for the studio component.
",
+ "StudioComponent$name": "A friendly name for the studio component resource.
",
+ "StudioComponentSummary$name": "The name for the studio component.
",
+ "UpdateStudioComponentRequest$name": "The name for the studio component.
"
+ }
+ },
+ "StudioComponentScriptParameterKeyValueList": {
+ "base": null,
+ "refs": {
+ "CreateStudioComponentRequest$scriptParameters": "Parameters for the studio component scripts.
",
+ "StudioComponent$scriptParameters": "Parameters for the studio component scripts.
",
+ "UpdateStudioComponentRequest$scriptParameters": "Parameters for the studio component scripts.
"
+ }
+ },
+ "StudioComponentSecurityGroupIdList": {
+ "base": null,
+ "refs": {
+ "CreateStudioComponentRequest$ec2SecurityGroupIds": "The EC2 security groups that control access to the studio component.
",
+ "StudioComponent$ec2SecurityGroupIds": "The EC2 security groups that control access to the studio component.
",
+ "UpdateStudioComponentRequest$ec2SecurityGroupIds": "The EC2 security groups that control access to the studio component.
"
+ }
+ },
+ "StudioComponentState": {
+ "base": "The current state of the studio component resource.
While a studio component is being created, modified, or deleted, its state will be CREATE_IN_PROGRESS
, UPDATE_IN_PROGRESS
, or DELETE_IN_PROGRESS
.
These are called transition states.
No modifications may be made to the studio component while it is in a transition state.
If creation of the resource fails, the state will change to CREATE_FAILED
. The resource StatusCode
and StatusMessage
will provide more information of why creation failed. The resource in this state will automatically be deleted from your account after a period of time.
If updating the resource fails, the state will change to UPDATE_FAILED
. The resource StatusCode
and StatusMessage
will provide more information of why the update failed. The resource will be returned to the state it was in when the update request was invoked.
If deleting the resource fails, the state will change to DELETE_FAILED
. The resource StatusCode
and StatusMessage
will provide more information of why the update failed. The resource will be returned to the state it was in when the update request was invoked. After the resource is deleted successfully, it will change to the DELETED
state. The resource will no longer count against service quotas and cannot be used or acted upon any futher. It will be removed from your account after a period of time.
",
+ "refs": {
+ "StudioComponent$state": "The current state.
",
+ "StudioComponentStateList$member": null
+ }
+ },
+ "StudioComponentStateList": {
+ "base": null,
+ "refs": {
+ "ListStudioComponentsRequest$states": "Filters the request to studio components that are in one of the given states.
"
+ }
+ },
+ "StudioComponentStatusCode": {
+ "base": "The current status of the studio component resource.
When the resource is in the READY
state, the status code signals what the last mutation made to the resource was.
When the resource is in a CREATE_FAILED
, UPDATE_FAILED
, or DELETE_FAILED
state, the status code signals what went wrong and why the mutation failed.
",
+ "refs": {
+ "StudioComponent$statusCode": "The status code.
"
+ }
+ },
+ "StudioComponentSubtype": {
+ "base": null,
+ "refs": {
+ "CreateStudioComponentRequest$subtype": "The specific subtype of a studio component.
",
+ "StudioComponent$subtype": "The specific subtype of a studio component.
",
+ "StudioComponentSummary$subtype": "The specific subtype of a studio component.
",
+ "UpdateStudioComponentRequest$subtype": "The specific subtype of a studio component.
"
+ }
+ },
+ "StudioComponentSummary": {
+ "base": "The studio component's summary.
",
+ "refs": {
+ "StudioComponentSummaryList$member": null
+ }
+ },
+ "StudioComponentSummaryList": {
+ "base": null,
+ "refs": {
+ "GetLaunchProfileDetailsResponse$studioComponentSummaries": "A collection of studio component summaries.
"
+ }
+ },
+ "StudioComponentType": {
+ "base": null,
+ "refs": {
+ "CreateStudioComponentRequest$type": "The type of the studio component.
",
+ "StudioComponent$type": "The type of the studio component.
",
+ "StudioComponentSummary$type": "The type of the studio component.
",
+ "StudioComponentTypeList$member": null,
+ "UpdateStudioComponentRequest$type": "The type of the studio component.
"
+ }
+ },
+ "StudioComponentTypeList": {
+ "base": null,
+ "refs": {
+ "ListStudioComponentsRequest$types": "Filters the request to studio components that are of one of the given types.
"
+ }
+ },
+ "StudioDisplayName": {
+ "base": null,
+ "refs": {
+ "CreateStudioRequest$displayName": "A friendly name for the studio.
",
+ "Studio$displayName": "A friendly name for the studio.
",
+ "UpdateStudioRequest$displayName": "A friendly name for the studio.
"
+ }
+ },
+ "StudioEncryptionConfiguration": {
+ "base": "Configuration of the encryption method that is used for the studio.
",
+ "refs": {
+ "CreateStudioRequest$studioEncryptionConfiguration": "The studio encryption configuration.
",
+ "Studio$studioEncryptionConfiguration": "Configuration of the encryption method that is used for the studio.
"
+ }
+ },
+ "StudioEncryptionConfigurationKeyArn": {
+ "base": "The Amazon Resource Name (ARN) for a KMS key that is used to encrypt studio data.
",
+ "refs": {
+ "StudioEncryptionConfiguration$keyArn": "The ARN for a KMS key that is used to encrypt studio data.
"
+ }
+ },
+ "StudioEncryptionConfigurationKeyType": {
+ "base": "The type of KMS key that is used to encrypt studio data.
",
+ "refs": {
+ "StudioEncryptionConfiguration$keyType": "The type of KMS key that is used to encrypt studio data.
"
+ }
+ },
+ "StudioList": {
+ "base": null,
+ "refs": {
+ "ListStudiosResponse$studios": "A collection of studios.
"
+ }
+ },
+ "StudioMembership": {
+ "base": "A studio member is an association of a user from your studio identity source to elevated permissions that they are granted in the studio.
When you add a user to your studio using the Nimble Studio console, they are given access to the studio's IAM Identity Center application and are given access to log in to the Nimble Studio portal. These users have the permissions provided by the studio's user IAM role and do not appear in the studio membership collection. Only studio admins appear in studio membership.
When you add a user to studio membership with the ADMIN persona, upon logging in to the Nimble Studio portal, they are granted permissions specified by the Studio's Admin IAM role.
",
+ "refs": {
+ "GetStudioMemberResponse$member": "The member.
",
+ "StudioMembershipList$member": null
+ }
+ },
+ "StudioMembershipList": {
+ "base": null,
+ "refs": {
+ "ListStudioMembersResponse$members": "A list of admin members.
"
+ }
+ },
+ "StudioName": {
+ "base": null,
+ "refs": {
+ "CreateStudioRequest$studioName": "The studio name that is used in the URL of the Nimble Studio portal when accessed by Nimble Studio users.
",
+ "Studio$studioName": "The name of the studio, as included in the URL when accessing it in the Nimble Studio portal.
"
+ }
+ },
+ "StudioPersona": {
+ "base": null,
+ "refs": {
+ "NewStudioMember$persona": "The persona.
",
+ "StudioMembership$persona": "The persona.
"
+ }
+ },
+ "StudioState": {
+ "base": null,
+ "refs": {
+ "Studio$state": "The current state of the studio resource.
"
+ }
+ },
+ "StudioStatusCode": {
+ "base": "The status code.
",
+ "refs": {
+ "Studio$statusCode": "Status codes that provide additional detail on the studio state.
"
+ }
+ },
+ "TagResourceRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "TagResourceResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "Tags": {
+ "base": null,
+ "refs": {
+ "CreateLaunchProfileRequest$tags": "A collection of labels, in the form of key-value pairs, that apply to this resource.
",
+ "CreateStreamingImageRequest$tags": "A collection of labels, in the form of key-value pairs, that apply to this resource.
",
+ "CreateStreamingSessionRequest$tags": "A collection of labels, in the form of key-value pairs, that apply to this resource.
",
+ "CreateStudioComponentRequest$tags": "A collection of labels, in the form of key-value pairs, that apply to this resource.
",
+ "CreateStudioRequest$tags": "A collection of labels, in the form of key-value pairs, that apply to this resource.
",
+ "LaunchProfile$tags": "A collection of labels, in the form of key-value pairs, that apply to this resource.
",
+ "ListTagsForResourceResponse$tags": "A collection of labels, in the form of key-value pairs, that apply to this resource.
",
+ "StreamingImage$tags": "A collection of labels, in the form of key-value pairs, that apply to this resource.
",
+ "StreamingSession$tags": "A collection of labels, in the form of key-value pairs, that apply to this resource.
",
+ "StreamingSessionBackup$tags": "A collection of labels, in the form of key-value pairs, that apply to this resource.
",
+ "Studio$tags": "A collection of labels, in the form of key-value pairs, that apply to this resource.
",
+ "StudioComponent$tags": "A collection of labels, in the form of key-value pairs, that apply to this resource.
",
+ "TagResourceRequest$tags": "A collection of labels, in the form of key-value pairs, that apply to this resource.
"
+ }
+ },
+ "ThrottlingException": {
+ "base": "The request throughput limit was exceeded.
",
+ "refs": {
+ }
+ },
+ "Timestamp": {
+ "base": null,
+ "refs": {
+ "Eula$createdAt": "The ISO timestamp in seconds for when the resource was created.
",
+ "Eula$updatedAt": "The ISO timestamp in seconds for when the resource was updated.
",
+ "EulaAcceptance$acceptedAt": "The ISO timestamp in seconds for when the EULA was accepted.
",
+ "LaunchProfile$createdAt": "The ISO timestamp in seconds for when the resource was created.
",
+ "LaunchProfile$updatedAt": "The ISO timestamp in seconds for when the resource was updated.
",
+ "StreamingSession$createdAt": "The ISO timestamp in seconds for when the resource was created.
",
+ "StreamingSession$startedAt": "The time the session entered START_IN_PROGRESS
state.
",
+ "StreamingSession$stopAt": "The time the streaming session will automatically be stopped if the user doesn’t stop the session themselves.
",
+ "StreamingSession$stoppedAt": "The time the session entered STOP_IN_PROGRESS
state.
",
+ "StreamingSession$terminateAt": "The time the streaming session will automatically terminate if not terminated by the user.
",
+ "StreamingSession$updatedAt": "The ISO timestamp in seconds for when the resource was updated.
",
+ "StreamingSessionBackup$createdAt": "The ISO timestamp in for when the resource was created.
",
+ "StreamingSessionStream$createdAt": "The ISO timestamp in seconds for when the resource was created.
",
+ "StreamingSessionStream$expiresAt": "The ISO timestamp in seconds for when the resource expires.
",
+ "Studio$createdAt": "The ISO timestamp in seconds for when the resource was created.
",
+ "Studio$updatedAt": "The ISO timestamp in seconds for when the resource was updated.
",
+ "StudioComponent$createdAt": "The ISO timestamp in seconds for when the resource was created.
",
+ "StudioComponent$updatedAt": "The ISO timestamp in seconds for when the resource was updated.
",
+ "StudioComponentSummary$createdAt": "The ISO timestamp in seconds for when the resource was created.
",
+ "StudioComponentSummary$updatedAt": "The ISO timestamp in seconds for when the resource was updated.
"
+ }
+ },
+ "UntagResourceRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "UntagResourceResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "UpdateLaunchProfileMemberRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "UpdateLaunchProfileMemberResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "UpdateLaunchProfileRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "UpdateLaunchProfileResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "UpdateStreamingImageRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "UpdateStreamingImageResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "UpdateStudioComponentRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "UpdateStudioComponentResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "UpdateStudioRequest": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "UpdateStudioResponse": {
+ "base": null,
+ "refs": {
+ }
+ },
+ "ValidationException": {
+ "base": "One of the parameters in the request is invalid.
",
+ "refs": {
+ }
+ },
+ "ValidationResult": {
+ "base": "The launch profile validation result.
",
+ "refs": {
+ "ValidationResults$member": null
+ }
+ },
+ "ValidationResults": {
+ "base": null,
+ "refs": {
+ "LaunchProfile$validationResults": "The list of the latest validation results.
"
+ }
+ },
+ "VolumeConfiguration": {
+ "base": "Custom volume configuration for the root volumes that are attached to streaming sessions.
This parameter is only allowed when sessionPersistenceMode
is ACTIVATED
.
",
+ "refs": {
+ "StreamConfiguration$volumeConfiguration": "Custom volume configuration for the root volumes that are attached to streaming sessions.
This parameter is only allowed when sessionPersistenceMode
is ACTIVATED
.
",
+ "StreamConfigurationCreate$volumeConfiguration": "Custom volume configuration for the root volumes that are attached to streaming sessions.
This parameter is only allowed when sessionPersistenceMode
is ACTIVATED
.
",
+ "StreamingSession$volumeConfiguration": "Custom volume configuration for the root volumes that are attached to streaming sessions.
This parameter is only allowed when sessionPersistenceMode
is ACTIVATED
.
"
+ }
+ },
+ "VolumeIops": {
+ "base": null,
+ "refs": {
+ "VolumeConfiguration$iops": "The number of I/O operations per second for the root volume that is attached to streaming session.
"
+ }
+ },
+ "VolumeRetentionMode": {
+ "base": null,
+ "refs": {
+ "StopStreamingSessionRequest$volumeRetentionMode": "Adds additional instructions to a streaming session stop action to either retain the EBS volumes or delete the EBS volumes.
",
+ "StreamingSession$volumeRetentionMode": "Determine if an EBS volume created from this streaming session will be backed up.
"
+ }
+ },
+ "VolumeSizeInGiB": {
+ "base": null,
+ "refs": {
+ "VolumeConfiguration$size": "The size of the root volume that is attached to the streaming session. The root volume size is measured in GiBs.
"
+ }
+ },
+ "VolumeThroughputInMiBs": {
+ "base": null,
+ "refs": {
+ "VolumeConfiguration$throughput": "The throughput to provision for the root volume that is attached to the streaming session. The throughput is measured in MiB/s.
"
+ }
+ },
+ "WindowsMountDrive": {
+ "base": null,
+ "refs": {
+ "SharedFileSystemConfiguration$windowsMountDrive": "The mount location for a shared file system on a Windows virtual workstation.
"
+ }
+ }
+ }
+}
diff --git a/apis/nimble/2020-08-01/endpoint-rule-set-1.json b/apis/nimble/2020-08-01/endpoint-rule-set-1.json
new file mode 100644
index 00000000000..2b9b00a4cc3
--- /dev/null
+++ b/apis/nimble/2020-08-01/endpoint-rule-set-1.json
@@ -0,0 +1,314 @@
+{
+ "version": "1.0",
+ "parameters": {
+ "Region": {
+ "builtIn": "AWS::Region",
+ "required": false,
+ "documentation": "The AWS region used to dispatch the request.",
+ "type": "String"
+ },
+ "UseDualStack": {
+ "builtIn": "AWS::UseDualStack",
+ "required": true,
+ "default": false,
+ "documentation": "When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.",
+ "type": "Boolean"
+ },
+ "UseFIPS": {
+ "builtIn": "AWS::UseFIPS",
+ "required": true,
+ "default": false,
+ "documentation": "When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.",
+ "type": "Boolean"
+ },
+ "Endpoint": {
+ "builtIn": "SDK::Endpoint",
+ "required": false,
+ "documentation": "Override the endpoint used to send this request",
+ "type": "String"
+ }
+ },
+ "rules": [
+ {
+ "conditions": [
+ {
+ "fn": "isSet",
+ "argv": [
+ {
+ "ref": "Endpoint"
+ }
+ ]
+ }
+ ],
+ "type": "tree",
+ "rules": [
+ {
+ "conditions": [
+ {
+ "fn": "booleanEquals",
+ "argv": [
+ {
+ "ref": "UseFIPS"
+ },
+ true
+ ]
+ }
+ ],
+ "error": "Invalid Configuration: FIPS and custom endpoint are not supported",
+ "type": "error"
+ },
+ {
+ "conditions": [
+ {
+ "fn": "booleanEquals",
+ "argv": [
+ {
+ "ref": "UseDualStack"
+ },
+ true
+ ]
+ }
+ ],
+ "error": "Invalid Configuration: Dualstack and custom endpoint are not supported",
+ "type": "error"
+ },
+ {
+ "conditions": [],
+ "endpoint": {
+ "url": {
+ "ref": "Endpoint"
+ },
+ "properties": {},
+ "headers": {}
+ },
+ "type": "endpoint"
+ }
+ ]
+ },
+ {
+ "conditions": [
+ {
+ "fn": "isSet",
+ "argv": [
+ {
+ "ref": "Region"
+ }
+ ]
+ }
+ ],
+ "type": "tree",
+ "rules": [
+ {
+ "conditions": [
+ {
+ "fn": "aws.partition",
+ "argv": [
+ {
+ "ref": "Region"
+ }
+ ],
+ "assign": "PartitionResult"
+ }
+ ],
+ "type": "tree",
+ "rules": [
+ {
+ "conditions": [
+ {
+ "fn": "booleanEquals",
+ "argv": [
+ {
+ "ref": "UseFIPS"
+ },
+ true
+ ]
+ },
+ {
+ "fn": "booleanEquals",
+ "argv": [
+ {
+ "ref": "UseDualStack"
+ },
+ true
+ ]
+ }
+ ],
+ "type": "tree",
+ "rules": [
+ {
+ "conditions": [
+ {
+ "fn": "booleanEquals",
+ "argv": [
+ true,
+ {
+ "fn": "getAttr",
+ "argv": [
+ {
+ "ref": "PartitionResult"
+ },
+ "supportsFIPS"
+ ]
+ }
+ ]
+ },
+ {
+ "fn": "booleanEquals",
+ "argv": [
+ true,
+ {
+ "fn": "getAttr",
+ "argv": [
+ {
+ "ref": "PartitionResult"
+ },
+ "supportsDualStack"
+ ]
+ }
+ ]
+ }
+ ],
+ "type": "tree",
+ "rules": [
+ {
+ "conditions": [],
+ "endpoint": {
+ "url": "https://nimble-fips.{Region}.{PartitionResult#dualStackDnsSuffix}",
+ "properties": {},
+ "headers": {}
+ },
+ "type": "endpoint"
+ }
+ ]
+ },
+ {
+ "conditions": [],
+ "error": "FIPS and DualStack are enabled, but this partition does not support one or both",
+ "type": "error"
+ }
+ ]
+ },
+ {
+ "conditions": [
+ {
+ "fn": "booleanEquals",
+ "argv": [
+ {
+ "ref": "UseFIPS"
+ },
+ true
+ ]
+ }
+ ],
+ "type": "tree",
+ "rules": [
+ {
+ "conditions": [
+ {
+ "fn": "booleanEquals",
+ "argv": [
+ true,
+ {
+ "fn": "getAttr",
+ "argv": [
+ {
+ "ref": "PartitionResult"
+ },
+ "supportsFIPS"
+ ]
+ }
+ ]
+ }
+ ],
+ "type": "tree",
+ "rules": [
+ {
+ "conditions": [],
+ "endpoint": {
+ "url": "https://nimble-fips.{Region}.{PartitionResult#dnsSuffix}",
+ "properties": {},
+ "headers": {}
+ },
+ "type": "endpoint"
+ }
+ ]
+ },
+ {
+ "conditions": [],
+ "error": "FIPS is enabled but this partition does not support FIPS",
+ "type": "error"
+ }
+ ]
+ },
+ {
+ "conditions": [
+ {
+ "fn": "booleanEquals",
+ "argv": [
+ {
+ "ref": "UseDualStack"
+ },
+ true
+ ]
+ }
+ ],
+ "type": "tree",
+ "rules": [
+ {
+ "conditions": [
+ {
+ "fn": "booleanEquals",
+ "argv": [
+ true,
+ {
+ "fn": "getAttr",
+ "argv": [
+ {
+ "ref": "PartitionResult"
+ },
+ "supportsDualStack"
+ ]
+ }
+ ]
+ }
+ ],
+ "type": "tree",
+ "rules": [
+ {
+ "conditions": [],
+ "endpoint": {
+ "url": "https://nimble.{Region}.{PartitionResult#dualStackDnsSuffix}",
+ "properties": {},
+ "headers": {}
+ },
+ "type": "endpoint"
+ }
+ ]
+ },
+ {
+ "conditions": [],
+ "error": "DualStack is enabled but this partition does not support DualStack",
+ "type": "error"
+ }
+ ]
+ },
+ {
+ "conditions": [],
+ "endpoint": {
+ "url": "https://nimble.{Region}.{PartitionResult#dnsSuffix}",
+ "properties": {},
+ "headers": {}
+ },
+ "type": "endpoint"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "conditions": [],
+ "error": "Invalid Configuration: Missing Region",
+ "type": "error"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/apis/nimble/2020-08-01/endpoint-tests-1.json b/apis/nimble/2020-08-01/endpoint-tests-1.json
new file mode 100644
index 00000000000..1b24bf5aa7c
--- /dev/null
+++ b/apis/nimble/2020-08-01/endpoint-tests-1.json
@@ -0,0 +1,379 @@
+{
+ "testCases": [
+ {
+ "documentation": "For region ap-northeast-1 with FIPS disabled and DualStack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://nimble.ap-northeast-1.amazonaws.com"
+ }
+ },
+ "params": {
+ "Region": "ap-northeast-1",
+ "UseFIPS": false,
+ "UseDualStack": false
+ }
+ },
+ {
+ "documentation": "For region ap-southeast-2 with FIPS disabled and DualStack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://nimble.ap-southeast-2.amazonaws.com"
+ }
+ },
+ "params": {
+ "Region": "ap-southeast-2",
+ "UseFIPS": false,
+ "UseDualStack": false
+ }
+ },
+ {
+ "documentation": "For region ca-central-1 with FIPS disabled and DualStack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://nimble.ca-central-1.amazonaws.com"
+ }
+ },
+ "params": {
+ "Region": "ca-central-1",
+ "UseFIPS": false,
+ "UseDualStack": false
+ }
+ },
+ {
+ "documentation": "For region eu-west-2 with FIPS disabled and DualStack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://nimble.eu-west-2.amazonaws.com"
+ }
+ },
+ "params": {
+ "Region": "eu-west-2",
+ "UseFIPS": false,
+ "UseDualStack": false
+ }
+ },
+ {
+ "documentation": "For region us-east-1 with FIPS disabled and DualStack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://nimble.us-east-1.amazonaws.com"
+ }
+ },
+ "params": {
+ "Region": "us-east-1",
+ "UseFIPS": false,
+ "UseDualStack": false
+ }
+ },
+ {
+ "documentation": "For region us-west-2 with FIPS disabled and DualStack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://nimble.us-west-2.amazonaws.com"
+ }
+ },
+ "params": {
+ "Region": "us-west-2",
+ "UseFIPS": false,
+ "UseDualStack": false
+ }
+ },
+ {
+ "documentation": "For region us-east-1 with FIPS enabled and DualStack enabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://nimble-fips.us-east-1.api.aws"
+ }
+ },
+ "params": {
+ "Region": "us-east-1",
+ "UseFIPS": true,
+ "UseDualStack": true
+ }
+ },
+ {
+ "documentation": "For region us-east-1 with FIPS enabled and DualStack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://nimble-fips.us-east-1.amazonaws.com"
+ }
+ },
+ "params": {
+ "Region": "us-east-1",
+ "UseFIPS": true,
+ "UseDualStack": false
+ }
+ },
+ {
+ "documentation": "For region us-east-1 with FIPS disabled and DualStack enabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://nimble.us-east-1.api.aws"
+ }
+ },
+ "params": {
+ "Region": "us-east-1",
+ "UseFIPS": false,
+ "UseDualStack": true
+ }
+ },
+ {
+ "documentation": "For region cn-north-1 with FIPS enabled and DualStack enabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://nimble-fips.cn-north-1.api.amazonwebservices.com.cn"
+ }
+ },
+ "params": {
+ "Region": "cn-north-1",
+ "UseFIPS": true,
+ "UseDualStack": true
+ }
+ },
+ {
+ "documentation": "For region cn-north-1 with FIPS enabled and DualStack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://nimble-fips.cn-north-1.amazonaws.com.cn"
+ }
+ },
+ "params": {
+ "Region": "cn-north-1",
+ "UseFIPS": true,
+ "UseDualStack": false
+ }
+ },
+ {
+ "documentation": "For region cn-north-1 with FIPS disabled and DualStack enabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://nimble.cn-north-1.api.amazonwebservices.com.cn"
+ }
+ },
+ "params": {
+ "Region": "cn-north-1",
+ "UseFIPS": false,
+ "UseDualStack": true
+ }
+ },
+ {
+ "documentation": "For region cn-north-1 with FIPS disabled and DualStack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://nimble.cn-north-1.amazonaws.com.cn"
+ }
+ },
+ "params": {
+ "Region": "cn-north-1",
+ "UseFIPS": false,
+ "UseDualStack": false
+ }
+ },
+ {
+ "documentation": "For region us-gov-east-1 with FIPS enabled and DualStack enabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://nimble-fips.us-gov-east-1.api.aws"
+ }
+ },
+ "params": {
+ "Region": "us-gov-east-1",
+ "UseFIPS": true,
+ "UseDualStack": true
+ }
+ },
+ {
+ "documentation": "For region us-gov-east-1 with FIPS enabled and DualStack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://nimble-fips.us-gov-east-1.amazonaws.com"
+ }
+ },
+ "params": {
+ "Region": "us-gov-east-1",
+ "UseFIPS": true,
+ "UseDualStack": false
+ }
+ },
+ {
+ "documentation": "For region us-gov-east-1 with FIPS disabled and DualStack enabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://nimble.us-gov-east-1.api.aws"
+ }
+ },
+ "params": {
+ "Region": "us-gov-east-1",
+ "UseFIPS": false,
+ "UseDualStack": true
+ }
+ },
+ {
+ "documentation": "For region us-gov-east-1 with FIPS disabled and DualStack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://nimble.us-gov-east-1.amazonaws.com"
+ }
+ },
+ "params": {
+ "Region": "us-gov-east-1",
+ "UseFIPS": false,
+ "UseDualStack": false
+ }
+ },
+ {
+ "documentation": "For region us-iso-east-1 with FIPS enabled and DualStack enabled",
+ "expect": {
+ "error": "FIPS and DualStack are enabled, but this partition does not support one or both"
+ },
+ "params": {
+ "Region": "us-iso-east-1",
+ "UseFIPS": true,
+ "UseDualStack": true
+ }
+ },
+ {
+ "documentation": "For region us-iso-east-1 with FIPS enabled and DualStack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://nimble-fips.us-iso-east-1.c2s.ic.gov"
+ }
+ },
+ "params": {
+ "Region": "us-iso-east-1",
+ "UseFIPS": true,
+ "UseDualStack": false
+ }
+ },
+ {
+ "documentation": "For region us-iso-east-1 with FIPS disabled and DualStack enabled",
+ "expect": {
+ "error": "DualStack is enabled but this partition does not support DualStack"
+ },
+ "params": {
+ "Region": "us-iso-east-1",
+ "UseFIPS": false,
+ "UseDualStack": true
+ }
+ },
+ {
+ "documentation": "For region us-iso-east-1 with FIPS disabled and DualStack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://nimble.us-iso-east-1.c2s.ic.gov"
+ }
+ },
+ "params": {
+ "Region": "us-iso-east-1",
+ "UseFIPS": false,
+ "UseDualStack": false
+ }
+ },
+ {
+ "documentation": "For region us-isob-east-1 with FIPS enabled and DualStack enabled",
+ "expect": {
+ "error": "FIPS and DualStack are enabled, but this partition does not support one or both"
+ },
+ "params": {
+ "Region": "us-isob-east-1",
+ "UseFIPS": true,
+ "UseDualStack": true
+ }
+ },
+ {
+ "documentation": "For region us-isob-east-1 with FIPS enabled and DualStack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://nimble-fips.us-isob-east-1.sc2s.sgov.gov"
+ }
+ },
+ "params": {
+ "Region": "us-isob-east-1",
+ "UseFIPS": true,
+ "UseDualStack": false
+ }
+ },
+ {
+ "documentation": "For region us-isob-east-1 with FIPS disabled and DualStack enabled",
+ "expect": {
+ "error": "DualStack is enabled but this partition does not support DualStack"
+ },
+ "params": {
+ "Region": "us-isob-east-1",
+ "UseFIPS": false,
+ "UseDualStack": true
+ }
+ },
+ {
+ "documentation": "For region us-isob-east-1 with FIPS disabled and DualStack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://nimble.us-isob-east-1.sc2s.sgov.gov"
+ }
+ },
+ "params": {
+ "Region": "us-isob-east-1",
+ "UseFIPS": false,
+ "UseDualStack": false
+ }
+ },
+ {
+ "documentation": "For custom endpoint with region set and fips disabled and dualstack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://example.com"
+ }
+ },
+ "params": {
+ "Region": "us-east-1",
+ "UseFIPS": false,
+ "UseDualStack": false,
+ "Endpoint": "https://example.com"
+ }
+ },
+ {
+ "documentation": "For custom endpoint with region not set and fips disabled and dualstack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://example.com"
+ }
+ },
+ "params": {
+ "UseFIPS": false,
+ "UseDualStack": false,
+ "Endpoint": "https://example.com"
+ }
+ },
+ {
+ "documentation": "For custom endpoint with fips enabled and dualstack disabled",
+ "expect": {
+ "error": "Invalid Configuration: FIPS and custom endpoint are not supported"
+ },
+ "params": {
+ "Region": "us-east-1",
+ "UseFIPS": true,
+ "UseDualStack": false,
+ "Endpoint": "https://example.com"
+ }
+ },
+ {
+ "documentation": "For custom endpoint with fips disabled and dualstack enabled",
+ "expect": {
+ "error": "Invalid Configuration: Dualstack and custom endpoint are not supported"
+ },
+ "params": {
+ "Region": "us-east-1",
+ "UseFIPS": false,
+ "UseDualStack": true,
+ "Endpoint": "https://example.com"
+ }
+ },
+ {
+ "documentation": "Missing region",
+ "expect": {
+ "error": "Invalid Configuration: Missing Region"
+ }
+ }
+ ],
+ "version": "1.0"
+}
\ No newline at end of file
diff --git a/apis/nimble/2020-08-01/examples-1.json b/apis/nimble/2020-08-01/examples-1.json
new file mode 100644
index 00000000000..0ea7e3b0bbe
--- /dev/null
+++ b/apis/nimble/2020-08-01/examples-1.json
@@ -0,0 +1,5 @@
+{
+ "version": "1.0",
+ "examples": {
+ }
+}
diff --git a/apis/nimble/2020-08-01/paginators-1.json b/apis/nimble/2020-08-01/paginators-1.json
new file mode 100644
index 00000000000..422aeeab4ee
--- /dev/null
+++ b/apis/nimble/2020-08-01/paginators-1.json
@@ -0,0 +1,58 @@
+{
+ "pagination": {
+ "ListEulaAcceptances": {
+ "input_token": "nextToken",
+ "output_token": "nextToken",
+ "result_key": "eulaAcceptances"
+ },
+ "ListEulas": {
+ "input_token": "nextToken",
+ "output_token": "nextToken",
+ "result_key": "eulas"
+ },
+ "ListLaunchProfileMembers": {
+ "input_token": "nextToken",
+ "output_token": "nextToken",
+ "limit_key": "maxResults",
+ "result_key": "members"
+ },
+ "ListLaunchProfiles": {
+ "input_token": "nextToken",
+ "output_token": "nextToken",
+ "limit_key": "maxResults",
+ "result_key": "launchProfiles"
+ },
+ "ListStreamingImages": {
+ "input_token": "nextToken",
+ "output_token": "nextToken",
+ "result_key": "streamingImages"
+ },
+ "ListStreamingSessionBackups": {
+ "input_token": "nextToken",
+ "output_token": "nextToken",
+ "result_key": "streamingSessionBackups"
+ },
+ "ListStreamingSessions": {
+ "input_token": "nextToken",
+ "output_token": "nextToken",
+ "result_key": "sessions"
+ },
+ "ListStudioComponents": {
+ "input_token": "nextToken",
+ "output_token": "nextToken",
+ "limit_key": "maxResults",
+ "result_key": "studioComponents"
+ },
+ "ListStudioMembers": {
+ "input_token": "nextToken",
+ "output_token": "nextToken",
+ "limit_key": "maxResults",
+ "result_key": "members"
+ },
+ "ListStudios": {
+ "input_token": "nextToken",
+ "output_token": "nextToken",
+ "result_key": "studios"
+ }
+ }
+}
diff --git a/apis/nimble/2020-08-01/waiters-2.json b/apis/nimble/2020-08-01/waiters-2.json
new file mode 100644
index 00000000000..2c37a115b40
--- /dev/null
+++ b/apis/nimble/2020-08-01/waiters-2.json
@@ -0,0 +1,234 @@
+{
+ "version" : 2,
+ "waiters" : {
+ "LaunchProfileDeleted" : {
+ "description" : "Wait until a LaunchProfile is Deleted. Use this after invoking DeleteLaunchProfile",
+ "delay" : 5,
+ "maxAttempts" : 150,
+ "operation" : "GetLaunchProfile",
+ "acceptors" : [ {
+ "matcher" : "path",
+ "argument" : "launchProfile.state",
+ "state" : "success",
+ "expected" : "DELETED"
+ }, {
+ "matcher" : "path",
+ "argument" : "launchProfile.state",
+ "state" : "failure",
+ "expected" : "DELETE_FAILED"
+ } ]
+ },
+ "LaunchProfileReady" : {
+ "description" : "Wait until a LaunchProfile is Ready. Use this after invoking CreateLaunchProfile or UpdateLaunchProfile",
+ "delay" : 5,
+ "maxAttempts" : 150,
+ "operation" : "GetLaunchProfile",
+ "acceptors" : [ {
+ "matcher" : "path",
+ "argument" : "launchProfile.state",
+ "state" : "success",
+ "expected" : "READY"
+ }, {
+ "matcher" : "path",
+ "argument" : "launchProfile.state",
+ "state" : "failure",
+ "expected" : "CREATE_FAILED"
+ }, {
+ "matcher" : "path",
+ "argument" : "launchProfile.state",
+ "state" : "failure",
+ "expected" : "UPDATE_FAILED"
+ } ]
+ },
+ "StreamingImageDeleted" : {
+ "description" : "Wait until a StreamingImage Deleted. Use this after invoking DeleteStreamingImage",
+ "delay" : 2,
+ "maxAttempts" : 60,
+ "operation" : "GetStreamingImage",
+ "acceptors" : [ {
+ "matcher" : "path",
+ "argument" : "streamingImage.state",
+ "state" : "success",
+ "expected" : "DELETED"
+ }, {
+ "matcher" : "path",
+ "argument" : "streamingImage.state",
+ "state" : "failure",
+ "expected" : "DELETE_FAILED"
+ } ]
+ },
+ "StreamingImageReady" : {
+ "description" : "Wait until a StreamingImage is Ready. Use this after invoking CreateStreamingImage or UpdateStreamingImage",
+ "delay" : 2,
+ "maxAttempts" : 60,
+ "operation" : "GetStreamingImage",
+ "acceptors" : [ {
+ "matcher" : "path",
+ "argument" : "streamingImage.state",
+ "state" : "success",
+ "expected" : "READY"
+ }, {
+ "matcher" : "path",
+ "argument" : "streamingImage.state",
+ "state" : "failure",
+ "expected" : "CREATE_FAILED"
+ }, {
+ "matcher" : "path",
+ "argument" : "streamingImage.state",
+ "state" : "failure",
+ "expected" : "UPDATE_FAILED"
+ } ]
+ },
+ "StreamingSessionDeleted" : {
+ "description" : "Wait until a StreamingSessionDeleted. Use this after invoking DeleteStreamingSession",
+ "delay" : 5,
+ "maxAttempts" : 180,
+ "operation" : "GetStreamingSession",
+ "acceptors" : [ {
+ "matcher" : "path",
+ "argument" : "session.state",
+ "state" : "success",
+ "expected" : "DELETED"
+ }, {
+ "matcher" : "path",
+ "argument" : "session.state",
+ "state" : "failure",
+ "expected" : "DELETE_FAILED"
+ } ]
+ },
+ "StreamingSessionReady" : {
+ "description" : "Wait until a StreamingSession is ready. Use this after invoking CreateStreamingSession, StartStreamingSession",
+ "delay" : 10,
+ "maxAttempts" : 180,
+ "operation" : "GetStreamingSession",
+ "acceptors" : [ {
+ "matcher" : "path",
+ "argument" : "session.state",
+ "state" : "success",
+ "expected" : "READY"
+ }, {
+ "matcher" : "path",
+ "argument" : "session.state",
+ "state" : "failure",
+ "expected" : "CREATE_FAILED"
+ }, {
+ "matcher" : "path",
+ "argument" : "session.state",
+ "state" : "failure",
+ "expected" : "START_FAILED"
+ } ]
+ },
+ "StreamingSessionStopped" : {
+ "description" : "Wait until a StreamingSessionStopped. Use this after invoking StopStreamingSession",
+ "delay" : 5,
+ "maxAttempts" : 180,
+ "operation" : "GetStreamingSession",
+ "acceptors" : [ {
+ "matcher" : "path",
+ "argument" : "session.state",
+ "state" : "success",
+ "expected" : "STOPPED"
+ }, {
+ "matcher" : "path",
+ "argument" : "session.state",
+ "state" : "failure",
+ "expected" : "STOP_FAILED"
+ } ]
+ },
+ "StreamingSessionStreamReady" : {
+ "description" : "Wait until a StreamingSessionStream is ready. Use this after invoking CreateStreamingSessionStream",
+ "delay" : 5,
+ "maxAttempts" : 30,
+ "operation" : "GetStreamingSessionStream",
+ "acceptors" : [ {
+ "matcher" : "path",
+ "argument" : "stream.state",
+ "state" : "success",
+ "expected" : "READY"
+ }, {
+ "matcher" : "path",
+ "argument" : "stream.state",
+ "state" : "failure",
+ "expected" : "CREATE_FAILED"
+ } ]
+ },
+ "StudioComponentDeleted" : {
+ "description" : "Wait until a StudioComponent Deleted. Use this after invoking DeleteStudioComponent",
+ "delay" : 1,
+ "maxAttempts" : 120,
+ "operation" : "GetStudioComponent",
+ "acceptors" : [ {
+ "matcher" : "path",
+ "argument" : "studioComponent.state",
+ "state" : "success",
+ "expected" : "DELETED"
+ }, {
+ "matcher" : "path",
+ "argument" : "studioComponent.state",
+ "state" : "failure",
+ "expected" : "DELETE_FAILED"
+ } ]
+ },
+ "StudioComponentReady" : {
+ "description" : "Wait until a StudioComponent is Ready. Use this after invoking CreateStudioComponent or UpdateStudioComponent",
+ "delay" : 2,
+ "maxAttempts" : 60,
+ "operation" : "GetStudioComponent",
+ "acceptors" : [ {
+ "matcher" : "path",
+ "argument" : "studioComponent.state",
+ "state" : "success",
+ "expected" : "READY"
+ }, {
+ "matcher" : "path",
+ "argument" : "studioComponent.state",
+ "state" : "failure",
+ "expected" : "CREATE_FAILED"
+ }, {
+ "matcher" : "path",
+ "argument" : "studioComponent.state",
+ "state" : "failure",
+ "expected" : "UPDATE_FAILED"
+ } ]
+ },
+ "StudioDeleted" : {
+ "description" : "Wait until a Studio is Deleted. Use this after invoking DeleteStudio.",
+ "delay" : 2,
+ "maxAttempts" : 60,
+ "operation" : "GetStudio",
+ "acceptors" : [ {
+ "matcher" : "path",
+ "argument" : "studio.state",
+ "state" : "success",
+ "expected" : "DELETED"
+ }, {
+ "matcher" : "path",
+ "argument" : "studio.state",
+ "state" : "failure",
+ "expected" : "DELETE_FAILED"
+ } ]
+ },
+ "StudioReady" : {
+ "description" : "Wait until a Studio is Ready. Use this after invoking CreateStudio, UpdateStudio, or StartStudioSSOConfigurationRepair",
+ "delay" : 2,
+ "maxAttempts" : 60,
+ "operation" : "GetStudio",
+ "acceptors" : [ {
+ "matcher" : "path",
+ "argument" : "studio.state",
+ "state" : "success",
+ "expected" : "READY"
+ }, {
+ "matcher" : "path",
+ "argument" : "studio.state",
+ "state" : "failure",
+ "expected" : "CREATE_FAILED"
+ }, {
+ "matcher" : "path",
+ "argument" : "studio.state",
+ "state" : "failure",
+ "expected" : "UPDATE_FAILED"
+ } ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/gems/aws-sdk-nimblestudio/CHANGELOG.md b/gems/aws-sdk-nimblestudio/CHANGELOG.md
new file mode 100644
index 00000000000..4e5ce3276ec
--- /dev/null
+++ b/gems/aws-sdk-nimblestudio/CHANGELOG.md
@@ -0,0 +1,215 @@
+Unreleased Changes
+------------------
+
+* Feature - Nimble Studio has been removed from the SDK because it has been discontinued.
+
+1.40.0 (2024-09-24)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.39.0 (2024-09-23)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.38.0 (2024-09-20)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.37.0 (2024-09-11)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.36.0 (2024-09-10)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.35.0 (2024-09-03)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.34.0 (2024-07-02)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.33.0 (2024-06-25)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.32.0 (2024-06-24)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.31.0 (2024-06-05)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.30.0 (2024-05-13)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.29.0 (2024-04-25)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.28.0 (2024-01-26)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.27.0 (2023-11-28)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.26.0 (2023-11-22)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.25.0 (2023-09-27)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.24.0 (2023-09-19)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.23.0 (2023-07-11)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.22.0 (2023-07-06)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.21.0 (2023-06-28)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.20.0 (2023-06-15)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.19.0 (2023-05-31)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.18.0 (2023-01-18)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+* Issue - Replace runtime endpoint resolution approach with generated ruby code.
+
+1.17.0 (2022-12-20)
+------------------
+
+* Feature - Amazon Nimble Studio now supports configuring session storage volumes and persistence, as well as backup and restore sessions through launch profiles.
+
+1.16.0 (2022-10-25)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.15.0 (2022-09-23)
+------------------
+
+* Feature - Amazon Nimble Studio adds support for on-demand Amazon Elastic Compute Cloud (EC2) G3 and G5 instances, allowing customers to utilize additional GPU instance types for their creative projects.
+
+1.14.0 (2022-07-14)
+------------------
+
+* Feature - Amazon Nimble Studio adds support for IAM-based access to AWS resources for Nimble Studio components and custom studio components. Studio Component scripts use these roles on Nimble Studio workstation to mount filesystems, access S3 buckets, or other configured resources in the Studio's AWS account
+
+1.13.0 (2022-02-24)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.12.0 (2022-02-03)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.11.0 (2022-01-13)
+------------------
+
+* Feature - Amazon Nimble Studio now supports validation for Launch Profiles. Launch Profiles now report static validation results after create/update to detect errors in network or active directory configuration.
+
+1.10.0 (2021-12-21)
+------------------
+
+* Feature - Amazon Nimble Studio adds support for users to upload files during a streaming session using NICE DCV native client or browser.
+
+1.9.0 (2021-11-30)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.8.0 (2021-11-04)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.7.0 (2021-11-02)
+------------------
+
+* Feature - Amazon Nimble Studio adds support for users to stop and start streaming sessions.
+
+1.6.0 (2021-10-18)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+* Issue - Remove a plugin that sets the `Content-Type` header and instead depend on a new version of `aws-sdk-core` that does.
+
+1.5.0 (2021-09-01)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.4.0 (2021-08-11)
+------------------
+
+* Feature - Add new attribute 'ownedBy' in Streaming Session APIs. 'ownedBy' represents the AWS SSO Identity Store User ID of the owner of the Streaming Session resource.
+
+1.3.0 (2021-07-30)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.2.0 (2021-07-28)
+------------------
+
+* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
+
+1.1.0 (2021-05-05)
+------------------
+
+* Feature - Documentation Updates for Amazon Nimble Studio.
+
+* Issue - Add a `Content-Type` header to mitigate a service side issue.
+
+1.0.0 (2021-04-28)
+------------------
+
+* Feature - Initial release of `aws-sdk-nimblestudio`.
diff --git a/gems/aws-sdk-nimblestudio/LICENSE.txt b/gems/aws-sdk-nimblestudio/LICENSE.txt
new file mode 100644
index 00000000000..d6456956733
--- /dev/null
+++ b/gems/aws-sdk-nimblestudio/LICENSE.txt
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/gems/aws-sdk-nimblestudio/VERSION b/gems/aws-sdk-nimblestudio/VERSION
new file mode 100644
index 00000000000..32b7211cb61
--- /dev/null
+++ b/gems/aws-sdk-nimblestudio/VERSION
@@ -0,0 +1 @@
+1.40.0
diff --git a/gems/aws-sdk-nimblestudio/aws-sdk-nimblestudio.gemspec b/gems/aws-sdk-nimblestudio/aws-sdk-nimblestudio.gemspec
new file mode 100644
index 00000000000..a463cd00e0c
--- /dev/null
+++ b/gems/aws-sdk-nimblestudio/aws-sdk-nimblestudio.gemspec
@@ -0,0 +1,32 @@
+# 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
+
+Gem::Specification.new do |spec|
+
+ spec.name = 'aws-sdk-nimblestudio'
+ spec.version = File.read(File.expand_path('../VERSION', __FILE__)).strip
+ spec.summary = 'AWS SDK for Ruby - AmazonNimbleStudio'
+ spec.description = 'Official AWS Ruby gem for AmazonNimbleStudio. This gem is part of the AWS SDK for Ruby.'
+ spec.author = 'Amazon Web Services'
+ spec.homepage = 'https://github.com/aws/aws-sdk-ruby'
+ spec.license = 'Apache-2.0'
+ spec.email = ['aws-dr-rubygems@amazon.com']
+ spec.require_paths = ['lib']
+ spec.files = Dir["LICENSE.txt", "CHANGELOG.md", "VERSION", "lib/**/*.rb", "sig/**/*.rbs"]
+
+ spec.metadata = {
+ 'source_code_uri' => 'https://github.com/aws/aws-sdk-ruby/tree/version-3/gems/aws-sdk-nimblestudio',
+ 'changelog_uri' => 'https://github.com/aws/aws-sdk-ruby/tree/version-3/gems/aws-sdk-nimblestudio/CHANGELOG.md'
+ }
+
+ spec.add_dependency('aws-sdk-core', '~> 3', '>= 3.207.0')
+ spec.add_dependency('aws-sigv4', '~> 1.1')
+
+ spec.required_ruby_version = '>= 2.5'
+end
diff --git a/gems/aws-sdk-nimblestudio/features/env.rb b/gems/aws-sdk-nimblestudio/features/env.rb
new file mode 100644
index 00000000000..7517dc3987f
--- /dev/null
+++ b/gems/aws-sdk-nimblestudio/features/env.rb
@@ -0,0 +1,18 @@
+# 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
+
+$:.unshift(File.expand_path('../../lib', __FILE__))
+$:.unshift(File.expand_path('../../../aws-sdk-core/features', __FILE__))
+$:.unshift(File.expand_path('../../../aws-sdk-core/lib', __FILE__))
+$:.unshift(File.expand_path('../../../aws-sigv4/lib', __FILE__))
+
+require 'features_helper'
+require 'aws-sdk-nimblestudio'
+
+Aws::NimbleStudio::Client.add_plugin(ApiCallTracker)
diff --git a/gems/aws-sdk-nimblestudio/features/step_definitions.rb b/gems/aws-sdk-nimblestudio/features/step_definitions.rb
new file mode 100644
index 00000000000..5eb8af95d51
--- /dev/null
+++ b/gems/aws-sdk-nimblestudio/features/step_definitions.rb
@@ -0,0 +1,8 @@
+Before("@nimblestudio") do
+ @service = Aws::NimbleStudio::Resource.new
+ @client = @service.client
+end
+
+After("@nimblestudio") do
+ # shared cleanup logic
+end
diff --git a/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio.rb b/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio.rb
new file mode 100644
index 00000000000..3c70b0bf6fb
--- /dev/null
+++ b/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio.rb
@@ -0,0 +1,62 @@
+# 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
+
+
+require 'aws-sdk-core'
+require 'aws-sigv4'
+
+Aws::Plugins::GlobalConfiguration.add_identifier(:nimblestudio)
+
+# This module provides support for AmazonNimbleStudio. This module is available in the
+# `aws-sdk-nimblestudio` gem.
+#
+# # Client
+#
+# The {Client} class provides one method for each API operation. Operation
+# methods each accept a hash of request parameters and return a response
+# structure.
+#
+# nimble_studio = Aws::NimbleStudio::Client.new
+# resp = nimble_studio.accept_eulas(params)
+#
+# See {Client} for more information.
+#
+# # Errors
+#
+# Errors returned from AmazonNimbleStudio are defined in the
+# {Errors} module and all extend {Errors::ServiceError}.
+#
+# begin
+# # do stuff
+# rescue Aws::NimbleStudio::Errors::ServiceError
+# # rescues all AmazonNimbleStudio API errors
+# end
+#
+# See {Errors} for more information.
+#
+# @!group service
+module Aws::NimbleStudio
+ autoload :Types, 'aws-sdk-nimblestudio/types'
+ autoload :ClientApi, 'aws-sdk-nimblestudio/client_api'
+ module Plugins
+ autoload :Endpoints, 'aws-sdk-nimblestudio/plugins/endpoints.rb'
+ end
+ autoload :Client, 'aws-sdk-nimblestudio/client'
+ autoload :Errors, 'aws-sdk-nimblestudio/errors'
+ autoload :Waiters, 'aws-sdk-nimblestudio/waiters'
+ autoload :Resource, 'aws-sdk-nimblestudio/resource'
+ autoload :EndpointParameters, 'aws-sdk-nimblestudio/endpoint_parameters'
+ autoload :EndpointProvider, 'aws-sdk-nimblestudio/endpoint_provider'
+ autoload :Endpoints, 'aws-sdk-nimblestudio/endpoints'
+
+ GEM_VERSION = '1.40.0'
+
+end
+
+require_relative 'aws-sdk-nimblestudio/customizations'
diff --git a/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/client.rb b/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/client.rb
new file mode 100644
index 00000000000..bb257dc1954
--- /dev/null
+++ b/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/client.rb
@@ -0,0 +1,3978 @@
+# 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
+
+require 'seahorse/client/plugins/content_length.rb'
+require 'aws-sdk-core/plugins/credentials_configuration.rb'
+require 'aws-sdk-core/plugins/logging.rb'
+require 'aws-sdk-core/plugins/param_converter.rb'
+require 'aws-sdk-core/plugins/param_validator.rb'
+require 'aws-sdk-core/plugins/user_agent.rb'
+require 'aws-sdk-core/plugins/helpful_socket_errors.rb'
+require 'aws-sdk-core/plugins/retry_errors.rb'
+require 'aws-sdk-core/plugins/global_configuration.rb'
+require 'aws-sdk-core/plugins/regional_endpoint.rb'
+require 'aws-sdk-core/plugins/endpoint_discovery.rb'
+require 'aws-sdk-core/plugins/endpoint_pattern.rb'
+require 'aws-sdk-core/plugins/response_paging.rb'
+require 'aws-sdk-core/plugins/stub_responses.rb'
+require 'aws-sdk-core/plugins/idempotency_token.rb'
+require 'aws-sdk-core/plugins/invocation_id.rb'
+require 'aws-sdk-core/plugins/jsonvalue_converter.rb'
+require 'aws-sdk-core/plugins/client_metrics_plugin.rb'
+require 'aws-sdk-core/plugins/client_metrics_send_plugin.rb'
+require 'aws-sdk-core/plugins/transfer_encoding.rb'
+require 'aws-sdk-core/plugins/http_checksum.rb'
+require 'aws-sdk-core/plugins/checksum_algorithm.rb'
+require 'aws-sdk-core/plugins/request_compression.rb'
+require 'aws-sdk-core/plugins/defaults_mode.rb'
+require 'aws-sdk-core/plugins/recursion_detection.rb'
+require 'aws-sdk-core/plugins/telemetry.rb'
+require 'aws-sdk-core/plugins/sign.rb'
+require 'aws-sdk-core/plugins/protocols/rest_json.rb'
+
+module Aws::NimbleStudio
+ # An API client for NimbleStudio. To construct a client, you need to configure a `:region` and `:credentials`.
+ #
+ # client = Aws::NimbleStudio::Client.new(
+ # region: region_name,
+ # credentials: credentials,
+ # # ...
+ # )
+ #
+ # For details on configuring region and credentials see
+ # the [developer guide](/sdk-for-ruby/v3/developer-guide/setup-config.html).
+ #
+ # See {#initialize} for a full list of supported configuration options.
+ class Client < Seahorse::Client::Base
+
+ include Aws::ClientStubs
+
+ @identifier = :nimblestudio
+
+ set_api(ClientApi::API)
+
+ add_plugin(Seahorse::Client::Plugins::ContentLength)
+ add_plugin(Aws::Plugins::CredentialsConfiguration)
+ add_plugin(Aws::Plugins::Logging)
+ add_plugin(Aws::Plugins::ParamConverter)
+ add_plugin(Aws::Plugins::ParamValidator)
+ add_plugin(Aws::Plugins::UserAgent)
+ add_plugin(Aws::Plugins::HelpfulSocketErrors)
+ add_plugin(Aws::Plugins::RetryErrors)
+ add_plugin(Aws::Plugins::GlobalConfiguration)
+ add_plugin(Aws::Plugins::RegionalEndpoint)
+ add_plugin(Aws::Plugins::EndpointDiscovery)
+ add_plugin(Aws::Plugins::EndpointPattern)
+ add_plugin(Aws::Plugins::ResponsePaging)
+ add_plugin(Aws::Plugins::StubResponses)
+ add_plugin(Aws::Plugins::IdempotencyToken)
+ add_plugin(Aws::Plugins::InvocationId)
+ add_plugin(Aws::Plugins::JsonvalueConverter)
+ add_plugin(Aws::Plugins::ClientMetricsPlugin)
+ add_plugin(Aws::Plugins::ClientMetricsSendPlugin)
+ add_plugin(Aws::Plugins::TransferEncoding)
+ add_plugin(Aws::Plugins::HttpChecksum)
+ add_plugin(Aws::Plugins::ChecksumAlgorithm)
+ add_plugin(Aws::Plugins::RequestCompression)
+ add_plugin(Aws::Plugins::DefaultsMode)
+ add_plugin(Aws::Plugins::RecursionDetection)
+ add_plugin(Aws::Plugins::Telemetry)
+ add_plugin(Aws::Plugins::Sign)
+ add_plugin(Aws::Plugins::Protocols::RestJson)
+ add_plugin(Aws::NimbleStudio::Plugins::Endpoints)
+
+ # @overload initialize(options)
+ # @param [Hash] options
+ #
+ # @option options [Array] :plugins ([]])
+ # A list of plugins to apply to the client. Each plugin is either a
+ # class name or an instance of a plugin class.
+ #
+ # @option options [required, Aws::CredentialProvider] :credentials
+ # Your AWS credentials. This can be an instance of any one of the
+ # following classes:
+ #
+ # * `Aws::Credentials` - Used for configuring static, non-refreshing
+ # credentials.
+ #
+ # * `Aws::SharedCredentials` - Used for loading static credentials from a
+ # shared file, such as `~/.aws/config`.
+ #
+ # * `Aws::AssumeRoleCredentials` - Used when you need to assume a role.
+ #
+ # * `Aws::AssumeRoleWebIdentityCredentials` - Used when you need to
+ # assume a role after providing credentials via the web.
+ #
+ # * `Aws::SSOCredentials` - Used for loading credentials from AWS SSO using an
+ # access token generated from `aws login`.
+ #
+ # * `Aws::ProcessCredentials` - Used for loading credentials from a
+ # process that outputs to stdout.
+ #
+ # * `Aws::InstanceProfileCredentials` - Used for loading credentials
+ # from an EC2 IMDS on an EC2 instance.
+ #
+ # * `Aws::ECSCredentials` - Used for loading credentials from
+ # instances running in ECS.
+ #
+ # * `Aws::CognitoIdentityCredentials` - Used for loading credentials
+ # from the Cognito Identity service.
+ #
+ # When `:credentials` are not configured directly, the following
+ # locations will be searched for credentials:
+ #
+ # * `Aws.config[:credentials]`
+ # * The `:access_key_id`, `:secret_access_key`, `:session_token`, and
+ # `:account_id` options.
+ # * ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY'],
+ # ENV['AWS_SESSION_TOKEN'], and ENV['AWS_ACCOUNT_ID']
+ # * `~/.aws/credentials`
+ # * `~/.aws/config`
+ # * EC2/ECS IMDS instance profile - When used by default, the timeouts
+ # are very aggressive. Construct and pass an instance of
+ # `Aws::InstanceProfileCredentials` or `Aws::ECSCredentials` to
+ # enable retries and extended timeouts. Instance profile credential
+ # fetching can be disabled by setting ENV['AWS_EC2_METADATA_DISABLED']
+ # to true.
+ #
+ # @option options [required, String] :region
+ # The AWS region to connect to. The configured `:region` is
+ # used to determine the service `:endpoint`. When not passed,
+ # a default `:region` is searched for in the following locations:
+ #
+ # * `Aws.config[:region]`
+ # * `ENV['AWS_REGION']`
+ # * `ENV['AMAZON_REGION']`
+ # * `ENV['AWS_DEFAULT_REGION']`
+ # * `~/.aws/credentials`
+ # * `~/.aws/config`
+ #
+ # @option options [String] :access_key_id
+ #
+ # @option options [String] :account_id
+ #
+ # @option options [Boolean] :active_endpoint_cache (false)
+ # When set to `true`, a thread polling for endpoints will be running in
+ # the background every 60 secs (default). Defaults to `false`.
+ #
+ # @option options [Boolean] :adaptive_retry_wait_to_fill (true)
+ # Used only in `adaptive` retry mode. When true, the request will sleep
+ # until there is sufficent client side capacity to retry the request.
+ # When false, the request will raise a `RetryCapacityNotAvailableError` and will
+ # not retry instead of sleeping.
+ #
+ # @option options [Boolean] :client_side_monitoring (false)
+ # When `true`, client-side metrics will be collected for all API requests from
+ # this client.
+ #
+ # @option options [String] :client_side_monitoring_client_id ("")
+ # Allows you to provide an identifier for this client which will be attached to
+ # all generated client side metrics. Defaults to an empty string.
+ #
+ # @option options [String] :client_side_monitoring_host ("127.0.0.1")
+ # Allows you to specify the DNS hostname or IPv4 or IPv6 address that the client
+ # side monitoring agent is running on, where client metrics will be published via UDP.
+ #
+ # @option options [Integer] :client_side_monitoring_port (31000)
+ # Required for publishing client metrics. The port that the client side monitoring
+ # agent is running on, where client metrics will be published via UDP.
+ #
+ # @option options [Aws::ClientSideMonitoring::Publisher] :client_side_monitoring_publisher (Aws::ClientSideMonitoring::Publisher)
+ # Allows you to provide a custom client-side monitoring publisher class. By default,
+ # will use the Client Side Monitoring Agent Publisher.
+ #
+ # @option options [Boolean] :convert_params (true)
+ # When `true`, an attempt is made to coerce request parameters into
+ # the required types.
+ #
+ # @option options [Boolean] :correct_clock_skew (true)
+ # Used only in `standard` and adaptive retry modes. Specifies whether to apply
+ # a clock skew correction and retry requests with skewed client clocks.
+ #
+ # @option options [String] :defaults_mode ("legacy")
+ # See {Aws::DefaultsModeConfiguration} for a list of the
+ # accepted modes and the configuration defaults that are included.
+ #
+ # @option options [Boolean] :disable_host_prefix_injection (false)
+ # Set to true to disable SDK automatically adding host prefix
+ # to default service endpoint when available.
+ #
+ # @option options [Boolean] :disable_request_compression (false)
+ # When set to 'true' the request body will not be compressed
+ # for supported operations.
+ #
+ # @option options [String, URI::HTTPS, URI::HTTP] :endpoint
+ # Normally you should not configure the `:endpoint` option
+ # directly. This is normally constructed from the `:region`
+ # option. Configuring `:endpoint` is normally reserved for
+ # connecting to test or custom endpoints. The endpoint should
+ # be a URI formatted like:
+ #
+ # 'http://example.com'
+ # 'https://example.com'
+ # 'http://example.com:123'
+ #
+ # @option options [Integer] :endpoint_cache_max_entries (1000)
+ # Used for the maximum size limit of the LRU cache storing endpoints data
+ # for endpoint discovery enabled operations. Defaults to 1000.
+ #
+ # @option options [Integer] :endpoint_cache_max_threads (10)
+ # Used for the maximum threads in use for polling endpoints to be cached, defaults to 10.
+ #
+ # @option options [Integer] :endpoint_cache_poll_interval (60)
+ # When :endpoint_discovery and :active_endpoint_cache is enabled,
+ # Use this option to config the time interval in seconds for making
+ # requests fetching endpoints information. Defaults to 60 sec.
+ #
+ # @option options [Boolean] :endpoint_discovery (false)
+ # When set to `true`, endpoint discovery will be enabled for operations when available.
+ #
+ # @option options [Boolean] :ignore_configured_endpoint_urls
+ # Setting to true disables use of endpoint URLs provided via environment
+ # variables and the shared configuration file.
+ #
+ # @option options [Aws::Log::Formatter] :log_formatter (Aws::Log::Formatter.default)
+ # The log formatter.
+ #
+ # @option options [Symbol] :log_level (:info)
+ # The log level to send messages to the `:logger` at.
+ #
+ # @option options [Logger] :logger
+ # The Logger instance to send log messages to. If this option
+ # is not set, logging will be disabled.
+ #
+ # @option options [Integer] :max_attempts (3)
+ # An integer representing the maximum number attempts that will be made for
+ # a single request, including the initial attempt. For example,
+ # setting this value to 5 will result in a request being retried up to
+ # 4 times. Used in `standard` and `adaptive` retry modes.
+ #
+ # @option options [String] :profile ("default")
+ # Used when loading credentials from the shared credentials file
+ # at HOME/.aws/credentials. When not specified, 'default' is used.
+ #
+ # @option options [Integer] :request_min_compression_size_bytes (10240)
+ # The minimum size in bytes that triggers compression for request
+ # bodies. The value must be non-negative integer value between 0
+ # and 10485780 bytes inclusive.
+ #
+ # @option options [Proc] :retry_backoff
+ # A proc or lambda used for backoff. Defaults to 2**retries * retry_base_delay.
+ # This option is only used in the `legacy` retry mode.
+ #
+ # @option options [Float] :retry_base_delay (0.3)
+ # The base delay in seconds used by the default backoff function. This option
+ # is only used in the `legacy` retry mode.
+ #
+ # @option options [Symbol] :retry_jitter (:none)
+ # A delay randomiser function used by the default backoff function.
+ # Some predefined functions can be referenced by name - :none, :equal, :full,
+ # otherwise a Proc that takes and returns a number. This option is only used
+ # in the `legacy` retry mode.
+ #
+ # @see https://www.awsarchitectureblog.com/2015/03/backoff.html
+ #
+ # @option options [Integer] :retry_limit (3)
+ # The maximum number of times to retry failed requests. Only
+ # ~ 500 level server errors and certain ~ 400 level client errors
+ # are retried. Generally, these are throttling errors, data
+ # checksum errors, networking errors, timeout errors, auth errors,
+ # endpoint discovery, and errors from expired credentials.
+ # This option is only used in the `legacy` retry mode.
+ #
+ # @option options [Integer] :retry_max_delay (0)
+ # The maximum number of seconds to delay between retries (0 for no limit)
+ # used by the default backoff function. This option is only used in the
+ # `legacy` retry mode.
+ #
+ # @option options [String] :retry_mode ("legacy")
+ # Specifies which retry algorithm to use. Values are:
+ #
+ # * `legacy` - The pre-existing retry behavior. This is default value if
+ # no retry mode is provided.
+ #
+ # * `standard` - A standardized set of retry rules across the AWS SDKs.
+ # This includes support for retry quotas, which limit the number of
+ # unsuccessful retries a client can make.
+ #
+ # * `adaptive` - An experimental retry mode that includes all the
+ # functionality of `standard` mode along with automatic client side
+ # throttling. This is a provisional mode that may change behavior
+ # in the future.
+ #
+ # @option options [String] :sdk_ua_app_id
+ # A unique and opaque application ID that is appended to the
+ # User-Agent header as app/sdk_ua_app_id. It should have a
+ # maximum length of 50. This variable is sourced from environment
+ # variable AWS_SDK_UA_APP_ID or the shared config profile attribute sdk_ua_app_id.
+ #
+ # @option options [String] :secret_access_key
+ #
+ # @option options [String] :session_token
+ #
+ # @option options [Array] :sigv4a_signing_region_set
+ # A list of regions that should be signed with SigV4a signing. When
+ # not passed, a default `:sigv4a_signing_region_set` is searched for
+ # in the following locations:
+ #
+ # * `Aws.config[:sigv4a_signing_region_set]`
+ # * `ENV['AWS_SIGV4A_SIGNING_REGION_SET']`
+ # * `~/.aws/config`
+ #
+ # @option options [Boolean] :stub_responses (false)
+ # Causes the client to return stubbed responses. By default
+ # fake responses are generated and returned. You can specify
+ # the response data to return or errors to raise by calling
+ # {ClientStubs#stub_responses}. See {ClientStubs} for more information.
+ #
+ # ** Please note ** When response stubbing is enabled, no HTTP
+ # requests are made, and retries are disabled.
+ #
+ # @option options [Aws::Telemetry::TelemetryProviderBase] :telemetry_provider (Aws::Telemetry::NoOpTelemetryProvider)
+ # Allows you to provide a telemetry provider, which is used to
+ # emit telemetry data. By default, uses `NoOpTelemetryProvider` which
+ # will not record or emit any telemetry data. The SDK supports the
+ # following telemetry providers:
+ #
+ # * OpenTelemetry (OTel) - To use the OTel provider, install and require the
+ # `opentelemetry-sdk` gem and then, pass in an instance of a
+ # `Aws::Telemetry::OTelProvider` for telemetry provider.
+ #
+ # @option options [Aws::TokenProvider] :token_provider
+ # A Bearer Token Provider. This can be an instance of any one of the
+ # following classes:
+ #
+ # * `Aws::StaticTokenProvider` - Used for configuring static, non-refreshing
+ # tokens.
+ #
+ # * `Aws::SSOTokenProvider` - Used for loading tokens from AWS SSO using an
+ # access token generated from `aws login`.
+ #
+ # When `:token_provider` is not configured directly, the `Aws::TokenProviderChain`
+ # will be used to search for tokens configured for your profile in shared configuration files.
+ #
+ # @option options [Boolean] :use_dualstack_endpoint
+ # When set to `true`, dualstack enabled endpoints (with `.aws` TLD)
+ # will be used if available.
+ #
+ # @option options [Boolean] :use_fips_endpoint
+ # When set to `true`, fips compatible endpoints will be used if available.
+ # When a `fips` region is used, the region is normalized and this config
+ # is set to `true`.
+ #
+ # @option options [Boolean] :validate_params (true)
+ # When `true`, request parameters are validated before
+ # sending the request.
+ #
+ # @option options [Aws::NimbleStudio::EndpointProvider] :endpoint_provider
+ # The endpoint provider used to resolve endpoints. Any object that responds to
+ # `#resolve_endpoint(parameters)` where `parameters` is a Struct similar to
+ # `Aws::NimbleStudio::EndpointParameters`.
+ #
+ # @option options [Float] :http_continue_timeout (1)
+ # The number of seconds to wait for a 100-continue response before sending the
+ # request body. This option has no effect unless the request has "Expect"
+ # header set to "100-continue". Defaults to `nil` which disables this
+ # behaviour. This value can safely be set per request on the session.
+ #
+ # @option options [Float] :http_idle_timeout (5)
+ # The number of seconds a connection is allowed to sit idle before it
+ # is considered stale. Stale connections are closed and removed from the
+ # pool before making a request.
+ #
+ # @option options [Float] :http_open_timeout (15)
+ # The default number of seconds to wait for response data.
+ # This value can safely be set per-request on the session.
+ #
+ # @option options [URI::HTTP,String] :http_proxy
+ # A proxy to send requests through. Formatted like 'http://proxy.com:123'.
+ #
+ # @option options [Float] :http_read_timeout (60)
+ # The default number of seconds to wait for response data.
+ # This value can safely be set per-request on the session.
+ #
+ # @option options [Boolean] :http_wire_trace (false)
+ # When `true`, HTTP debug output will be sent to the `:logger`.
+ #
+ # @option options [Proc] :on_chunk_received
+ # When a Proc object is provided, it will be used as callback when each chunk
+ # of the response body is received. It provides three arguments: the chunk,
+ # the number of bytes received, and the total number of
+ # bytes in the response (or nil if the server did not send a `content-length`).
+ #
+ # @option options [Proc] :on_chunk_sent
+ # When a Proc object is provided, it will be used as callback when each chunk
+ # of the request body is sent. It provides three arguments: the chunk,
+ # the number of bytes read from the body, and the total number of
+ # bytes in the body.
+ #
+ # @option options [Boolean] :raise_response_errors (true)
+ # When `true`, response errors are raised.
+ #
+ # @option options [String] :ssl_ca_bundle
+ # Full path to the SSL certificate authority bundle file that should be used when
+ # verifying peer certificates. If you do not pass `:ssl_ca_bundle` or
+ # `:ssl_ca_directory` the the system default will be used if available.
+ #
+ # @option options [String] :ssl_ca_directory
+ # Full path of the directory that contains the unbundled SSL certificate
+ # authority files for verifying peer certificates. If you do
+ # not pass `:ssl_ca_bundle` or `:ssl_ca_directory` the the system
+ # default will be used if available.
+ #
+ # @option options [String] :ssl_ca_store
+ # Sets the X509::Store to verify peer certificate.
+ #
+ # @option options [OpenSSL::X509::Certificate] :ssl_cert
+ # Sets a client certificate when creating http connections.
+ #
+ # @option options [OpenSSL::PKey] :ssl_key
+ # Sets a client key when creating http connections.
+ #
+ # @option options [Float] :ssl_timeout
+ # Sets the SSL timeout in seconds
+ #
+ # @option options [Boolean] :ssl_verify_peer (true)
+ # When `true`, SSL peer certificates are verified when establishing a connection.
+ #
+ def initialize(*args)
+ super
+ end
+
+ # @!group API Operations
+
+ # Accept EULAs.
+ #
+ # @option params [String] :client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.**
+ #
+ # @option params [Array] :eula_ids
+ # The EULA ID.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::AcceptEulasResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::AcceptEulasResponse#eula_acceptances #eula_acceptances} => Array<Types::EulaAcceptance>
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.accept_eulas({
+ # client_token: "ClientToken",
+ # eula_ids: ["String"],
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.eula_acceptances #=> Array
+ # resp.eula_acceptances[0].accepted_at #=> Time
+ # resp.eula_acceptances[0].accepted_by #=> String
+ # resp.eula_acceptances[0].acceptee_id #=> String
+ # resp.eula_acceptances[0].eula_acceptance_id #=> String
+ # resp.eula_acceptances[0].eula_id #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/AcceptEulas AWS API Documentation
+ #
+ # @overload accept_eulas(params = {})
+ # @param [Hash] params ({})
+ def accept_eulas(params = {}, options = {})
+ req = build_request(:accept_eulas, params)
+ req.send_request(options)
+ end
+
+ # Create a launch profile.
+ #
+ # @option params [String] :client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.**
+ #
+ # @option params [String] :description
+ # The description.
+ #
+ # @option params [required, Array] :ec2_subnet_ids
+ # Specifies the IDs of the EC2 subnets where streaming sessions will be
+ # accessible from. These subnets must support the specified instance
+ # types.
+ #
+ # @option params [required, Array] :launch_profile_protocol_versions
+ # The version number of the protocol that is used by the launch profile.
+ # The only valid version is "2021-03-31".
+ #
+ # @option params [required, String] :name
+ # The name for the launch profile.
+ #
+ # @option params [required, Types::StreamConfigurationCreate] :stream_configuration
+ # A configuration for a streaming session.
+ #
+ # @option params [required, Array] :studio_component_ids
+ # Unique identifiers for a collection of studio components that can be
+ # used with this launch profile.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @option params [Hash] :tags
+ # A collection of labels, in the form of key-value pairs, that apply to
+ # this resource.
+ #
+ # @return [Types::CreateLaunchProfileResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::CreateLaunchProfileResponse#launch_profile #launch_profile} => Types::LaunchProfile
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.create_launch_profile({
+ # client_token: "ClientToken",
+ # description: "LaunchProfileDescription",
+ # ec2_subnet_ids: ["EC2SubnetId"], # required
+ # launch_profile_protocol_versions: ["LaunchProfileProtocolVersion"], # required
+ # name: "LaunchProfileName", # required
+ # stream_configuration: { # required
+ # automatic_termination_mode: "DEACTIVATED", # accepts DEACTIVATED, ACTIVATED
+ # clipboard_mode: "ENABLED", # required, accepts ENABLED, DISABLED
+ # ec2_instance_types: ["g4dn.xlarge"], # required, accepts g4dn.xlarge, g4dn.2xlarge, g4dn.4xlarge, g4dn.8xlarge, g4dn.12xlarge, g4dn.16xlarge, g3.4xlarge, g3s.xlarge, g5.xlarge, g5.2xlarge, g5.4xlarge, g5.8xlarge, g5.16xlarge
+ # max_session_length_in_minutes: 1,
+ # max_stopped_session_length_in_minutes: 1,
+ # session_backup: {
+ # max_backups_to_retain: 1,
+ # mode: "AUTOMATIC", # accepts AUTOMATIC, DEACTIVATED
+ # },
+ # session_persistence_mode: "DEACTIVATED", # accepts DEACTIVATED, ACTIVATED
+ # session_storage: {
+ # mode: ["UPLOAD"], # required, accepts UPLOAD
+ # root: {
+ # linux: "StreamingSessionStorageRootPathLinux",
+ # windows: "StreamingSessionStorageRootPathWindows",
+ # },
+ # },
+ # streaming_image_ids: ["StreamingImageId"], # required
+ # volume_configuration: {
+ # iops: 1,
+ # size: 1,
+ # throughput: 1,
+ # },
+ # },
+ # studio_component_ids: ["String"], # required
+ # studio_id: "String", # required
+ # tags: {
+ # "String" => "String",
+ # },
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.launch_profile.arn #=> String
+ # resp.launch_profile.created_at #=> Time
+ # resp.launch_profile.created_by #=> String
+ # resp.launch_profile.description #=> String
+ # resp.launch_profile.ec2_subnet_ids #=> Array
+ # resp.launch_profile.ec2_subnet_ids[0] #=> String
+ # resp.launch_profile.launch_profile_id #=> String
+ # resp.launch_profile.launch_profile_protocol_versions #=> Array
+ # resp.launch_profile.launch_profile_protocol_versions[0] #=> String
+ # resp.launch_profile.name #=> String
+ # resp.launch_profile.state #=> String, one of "CREATE_IN_PROGRESS", "READY", "UPDATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "DELETED", "DELETE_FAILED", "CREATE_FAILED", "UPDATE_FAILED"
+ # resp.launch_profile.status_code #=> String, one of "LAUNCH_PROFILE_CREATED", "LAUNCH_PROFILE_UPDATED", "LAUNCH_PROFILE_DELETED", "LAUNCH_PROFILE_CREATE_IN_PROGRESS", "LAUNCH_PROFILE_UPDATE_IN_PROGRESS", "LAUNCH_PROFILE_DELETE_IN_PROGRESS", "INTERNAL_ERROR", "STREAMING_IMAGE_NOT_FOUND", "STREAMING_IMAGE_NOT_READY", "LAUNCH_PROFILE_WITH_STREAM_SESSIONS_NOT_DELETED", "ENCRYPTION_KEY_ACCESS_DENIED", "ENCRYPTION_KEY_NOT_FOUND", "INVALID_SUBNETS_PROVIDED", "INVALID_INSTANCE_TYPES_PROVIDED", "INVALID_SUBNETS_COMBINATION"
+ # resp.launch_profile.status_message #=> String
+ # resp.launch_profile.stream_configuration.automatic_termination_mode #=> String, one of "DEACTIVATED", "ACTIVATED"
+ # resp.launch_profile.stream_configuration.clipboard_mode #=> String, one of "ENABLED", "DISABLED"
+ # resp.launch_profile.stream_configuration.ec2_instance_types #=> Array
+ # resp.launch_profile.stream_configuration.ec2_instance_types[0] #=> String, one of "g4dn.xlarge", "g4dn.2xlarge", "g4dn.4xlarge", "g4dn.8xlarge", "g4dn.12xlarge", "g4dn.16xlarge", "g3.4xlarge", "g3s.xlarge", "g5.xlarge", "g5.2xlarge", "g5.4xlarge", "g5.8xlarge", "g5.16xlarge"
+ # resp.launch_profile.stream_configuration.max_session_length_in_minutes #=> Integer
+ # resp.launch_profile.stream_configuration.max_stopped_session_length_in_minutes #=> Integer
+ # resp.launch_profile.stream_configuration.session_backup.max_backups_to_retain #=> Integer
+ # resp.launch_profile.stream_configuration.session_backup.mode #=> String, one of "AUTOMATIC", "DEACTIVATED"
+ # resp.launch_profile.stream_configuration.session_persistence_mode #=> String, one of "DEACTIVATED", "ACTIVATED"
+ # resp.launch_profile.stream_configuration.session_storage.mode #=> Array
+ # resp.launch_profile.stream_configuration.session_storage.mode[0] #=> String, one of "UPLOAD"
+ # resp.launch_profile.stream_configuration.session_storage.root.linux #=> String
+ # resp.launch_profile.stream_configuration.session_storage.root.windows #=> String
+ # resp.launch_profile.stream_configuration.streaming_image_ids #=> Array
+ # resp.launch_profile.stream_configuration.streaming_image_ids[0] #=> String
+ # resp.launch_profile.stream_configuration.volume_configuration.iops #=> Integer
+ # resp.launch_profile.stream_configuration.volume_configuration.size #=> Integer
+ # resp.launch_profile.stream_configuration.volume_configuration.throughput #=> Integer
+ # resp.launch_profile.studio_component_ids #=> Array
+ # resp.launch_profile.studio_component_ids[0] #=> String
+ # resp.launch_profile.tags #=> Hash
+ # resp.launch_profile.tags["String"] #=> String
+ # resp.launch_profile.updated_at #=> Time
+ # resp.launch_profile.updated_by #=> String
+ # resp.launch_profile.validation_results #=> Array
+ # resp.launch_profile.validation_results[0].state #=> String, one of "VALIDATION_NOT_STARTED", "VALIDATION_IN_PROGRESS", "VALIDATION_SUCCESS", "VALIDATION_FAILED", "VALIDATION_FAILED_INTERNAL_SERVER_ERROR"
+ # resp.launch_profile.validation_results[0].status_code #=> String, one of "VALIDATION_NOT_STARTED", "VALIDATION_IN_PROGRESS", "VALIDATION_SUCCESS", "VALIDATION_FAILED_INVALID_SUBNET_ROUTE_TABLE_ASSOCIATION", "VALIDATION_FAILED_SUBNET_NOT_FOUND", "VALIDATION_FAILED_INVALID_SECURITY_GROUP_ASSOCIATION", "VALIDATION_FAILED_INVALID_ACTIVE_DIRECTORY", "VALIDATION_FAILED_UNAUTHORIZED", "VALIDATION_FAILED_INTERNAL_SERVER_ERROR"
+ # resp.launch_profile.validation_results[0].status_message #=> String
+ # resp.launch_profile.validation_results[0].type #=> String, one of "VALIDATE_ACTIVE_DIRECTORY_STUDIO_COMPONENT", "VALIDATE_SUBNET_ASSOCIATION", "VALIDATE_NETWORK_ACL_ASSOCIATION", "VALIDATE_SECURITY_GROUP_ASSOCIATION"
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/CreateLaunchProfile AWS API Documentation
+ #
+ # @overload create_launch_profile(params = {})
+ # @param [Hash] params ({})
+ def create_launch_profile(params = {}, options = {})
+ req = build_request(:create_launch_profile, params)
+ req.send_request(options)
+ end
+
+ # Creates a streaming image resource in a studio.
+ #
+ # @option params [String] :client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.**
+ #
+ # @option params [String] :description
+ # A human-readable description of the streaming image.
+ #
+ # @option params [required, String] :ec2_image_id
+ # The ID of an EC2 machine image with which to create this streaming
+ # image.
+ #
+ # @option params [required, String] :name
+ # A friendly name for a streaming image resource.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @option params [Hash] :tags
+ # A collection of labels, in the form of key-value pairs, that apply to
+ # this resource.
+ #
+ # @return [Types::CreateStreamingImageResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::CreateStreamingImageResponse#streaming_image #streaming_image} => Types::StreamingImage
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.create_streaming_image({
+ # client_token: "ClientToken",
+ # description: "StreamingImageDescription",
+ # ec2_image_id: "EC2ImageId", # required
+ # name: "StreamingImageName", # required
+ # studio_id: "String", # required
+ # tags: {
+ # "String" => "String",
+ # },
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.streaming_image.arn #=> String
+ # resp.streaming_image.description #=> String
+ # resp.streaming_image.ec2_image_id #=> String
+ # resp.streaming_image.encryption_configuration.key_arn #=> String
+ # resp.streaming_image.encryption_configuration.key_type #=> String, one of "CUSTOMER_MANAGED_KEY"
+ # resp.streaming_image.eula_ids #=> Array
+ # resp.streaming_image.eula_ids[0] #=> String
+ # resp.streaming_image.name #=> String
+ # resp.streaming_image.owner #=> String
+ # resp.streaming_image.platform #=> String
+ # resp.streaming_image.state #=> String, one of "CREATE_IN_PROGRESS", "READY", "DELETE_IN_PROGRESS", "DELETED", "UPDATE_IN_PROGRESS", "UPDATE_FAILED", "CREATE_FAILED", "DELETE_FAILED"
+ # resp.streaming_image.status_code #=> String, one of "STREAMING_IMAGE_CREATE_IN_PROGRESS", "STREAMING_IMAGE_READY", "STREAMING_IMAGE_DELETE_IN_PROGRESS", "STREAMING_IMAGE_DELETED", "STREAMING_IMAGE_UPDATE_IN_PROGRESS", "INTERNAL_ERROR", "ACCESS_DENIED"
+ # resp.streaming_image.status_message #=> String
+ # resp.streaming_image.streaming_image_id #=> String
+ # resp.streaming_image.tags #=> Hash
+ # resp.streaming_image.tags["String"] #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/CreateStreamingImage AWS API Documentation
+ #
+ # @overload create_streaming_image(params = {})
+ # @param [Hash] params ({})
+ def create_streaming_image(params = {}, options = {})
+ req = build_request(:create_streaming_image, params)
+ req.send_request(options)
+ end
+
+ # Creates a streaming session in a studio.
+ #
+ # After invoking this operation, you must poll GetStreamingSession until
+ # the streaming session is in the `READY` state.
+ #
+ # @option params [String] :client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.**
+ #
+ # @option params [String] :ec2_instance_type
+ # The EC2 Instance type used for the streaming session.
+ #
+ # @option params [required, String] :launch_profile_id
+ # The ID of the launch profile used to control access from the streaming
+ # session.
+ #
+ # @option params [String] :owned_by
+ # The user ID of the user that owns the streaming session. The user that
+ # owns the session will be logging into the session and interacting with
+ # the virtual workstation.
+ #
+ # @option params [String] :streaming_image_id
+ # The ID of the streaming image.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @option params [Hash] :tags
+ # A collection of labels, in the form of key-value pairs, that apply to
+ # this resource.
+ #
+ # @return [Types::CreateStreamingSessionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::CreateStreamingSessionResponse#session #session} => Types::StreamingSession
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.create_streaming_session({
+ # client_token: "ClientToken",
+ # ec2_instance_type: "g4dn.xlarge", # accepts g4dn.xlarge, g4dn.2xlarge, g4dn.4xlarge, g4dn.8xlarge, g4dn.12xlarge, g4dn.16xlarge, g3.4xlarge, g3s.xlarge, g5.xlarge, g5.2xlarge, g5.4xlarge, g5.8xlarge, g5.16xlarge
+ # launch_profile_id: "String", # required
+ # owned_by: "String",
+ # streaming_image_id: "StreamingImageId",
+ # studio_id: "String", # required
+ # tags: {
+ # "String" => "String",
+ # },
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.session.arn #=> String
+ # resp.session.automatic_termination_mode #=> String, one of "DEACTIVATED", "ACTIVATED"
+ # resp.session.backup_mode #=> String, one of "AUTOMATIC", "DEACTIVATED"
+ # resp.session.created_at #=> Time
+ # resp.session.created_by #=> String
+ # resp.session.ec2_instance_type #=> String
+ # resp.session.launch_profile_id #=> String
+ # resp.session.max_backups_to_retain #=> Integer
+ # resp.session.owned_by #=> String
+ # resp.session.session_id #=> String
+ # resp.session.session_persistence_mode #=> String, one of "DEACTIVATED", "ACTIVATED"
+ # resp.session.started_at #=> Time
+ # resp.session.started_by #=> String
+ # resp.session.started_from_backup_id #=> String
+ # resp.session.state #=> String, one of "CREATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "READY", "DELETED", "CREATE_FAILED", "DELETE_FAILED", "STOP_IN_PROGRESS", "START_IN_PROGRESS", "STOPPED", "STOP_FAILED", "START_FAILED"
+ # resp.session.status_code #=> String, one of "STREAMING_SESSION_READY", "STREAMING_SESSION_DELETED", "STREAMING_SESSION_CREATE_IN_PROGRESS", "STREAMING_SESSION_DELETE_IN_PROGRESS", "INTERNAL_ERROR", "INSUFFICIENT_CAPACITY", "ACTIVE_DIRECTORY_DOMAIN_JOIN_ERROR", "NETWORK_CONNECTION_ERROR", "INITIALIZATION_SCRIPT_ERROR", "DECRYPT_STREAMING_IMAGE_ERROR", "NETWORK_INTERFACE_ERROR", "STREAMING_SESSION_STOPPED", "STREAMING_SESSION_STARTED", "STREAMING_SESSION_STOP_IN_PROGRESS", "STREAMING_SESSION_START_IN_PROGRESS", "AMI_VALIDATION_ERROR"
+ # resp.session.status_message #=> String
+ # resp.session.stop_at #=> Time
+ # resp.session.stopped_at #=> Time
+ # resp.session.stopped_by #=> String
+ # resp.session.streaming_image_id #=> String
+ # resp.session.tags #=> Hash
+ # resp.session.tags["String"] #=> String
+ # resp.session.terminate_at #=> Time
+ # resp.session.updated_at #=> Time
+ # resp.session.updated_by #=> String
+ # resp.session.volume_configuration.iops #=> Integer
+ # resp.session.volume_configuration.size #=> Integer
+ # resp.session.volume_configuration.throughput #=> Integer
+ # resp.session.volume_retention_mode #=> String, one of "RETAIN", "DELETE"
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/CreateStreamingSession AWS API Documentation
+ #
+ # @overload create_streaming_session(params = {})
+ # @param [Hash] params ({})
+ def create_streaming_session(params = {}, options = {})
+ req = build_request(:create_streaming_session, params)
+ req.send_request(options)
+ end
+
+ # Creates a streaming session stream for a streaming session.
+ #
+ # After invoking this API, invoke GetStreamingSessionStream with the
+ # returned streamId to poll the resource until it is in the `READY`
+ # state.
+ #
+ # @option params [String] :client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.**
+ #
+ # @option params [Integer] :expiration_in_seconds
+ # The expiration time in seconds.
+ #
+ # @option params [required, String] :session_id
+ # The streaming session ID.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::CreateStreamingSessionStreamResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::CreateStreamingSessionStreamResponse#stream #stream} => Types::StreamingSessionStream
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.create_streaming_session_stream({
+ # client_token: "ClientToken",
+ # expiration_in_seconds: 1,
+ # session_id: "String", # required
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.stream.created_at #=> Time
+ # resp.stream.created_by #=> String
+ # resp.stream.expires_at #=> Time
+ # resp.stream.owned_by #=> String
+ # resp.stream.state #=> String, one of "READY", "CREATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "DELETED", "CREATE_FAILED", "DELETE_FAILED"
+ # resp.stream.status_code #=> String, one of "STREAM_CREATE_IN_PROGRESS", "STREAM_READY", "STREAM_DELETE_IN_PROGRESS", "STREAM_DELETED", "INTERNAL_ERROR", "NETWORK_CONNECTION_ERROR"
+ # resp.stream.stream_id #=> String
+ # resp.stream.url #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/CreateStreamingSessionStream AWS API Documentation
+ #
+ # @overload create_streaming_session_stream(params = {})
+ # @param [Hash] params ({})
+ def create_streaming_session_stream(params = {}, options = {})
+ req = build_request(:create_streaming_session_stream, params)
+ req.send_request(options)
+ end
+
+ # Create a new studio.
+ #
+ # When creating a studio, two IAM roles must be provided: the admin role
+ # and the user role. These roles are assumed by your users when they log
+ # in to the Nimble Studio portal.
+ #
+ # The user role must have the `AmazonNimbleStudio-StudioUser` managed
+ # policy attached for the portal to function properly.
+ #
+ # The admin role must have the `AmazonNimbleStudio-StudioAdmin` managed
+ # policy attached for the portal to function properly.
+ #
+ # You may optionally specify a KMS key in the
+ # `StudioEncryptionConfiguration`.
+ #
+ # In Nimble Studio, resource names, descriptions, initialization
+ # scripts, and other data you provide are always encrypted at rest using
+ # an KMS key. By default, this key is owned by Amazon Web Services and
+ # managed on your behalf. You may provide your own KMS key when calling
+ # `CreateStudio` to encrypt this data using a key you own and manage.
+ #
+ # When providing an KMS key during studio creation, Nimble Studio
+ # creates KMS grants in your account to provide your studio user and
+ # admin roles access to these KMS keys.
+ #
+ # If you delete this grant, the studio will no longer be accessible to
+ # your portal users.
+ #
+ # If you delete the studio KMS key, your studio will no longer be
+ # accessible.
+ #
+ # @option params [required, String] :admin_role_arn
+ # The IAM role that studio admins will assume when logging in to the
+ # Nimble Studio portal.
+ #
+ # @option params [String] :client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.**
+ #
+ # @option params [required, String] :display_name
+ # A friendly name for the studio.
+ #
+ # @option params [Types::StudioEncryptionConfiguration] :studio_encryption_configuration
+ # The studio encryption configuration.
+ #
+ # @option params [required, String] :studio_name
+ # The studio name that is used in the URL of the Nimble Studio portal
+ # when accessed by Nimble Studio users.
+ #
+ # @option params [Hash] :tags
+ # A collection of labels, in the form of key-value pairs, that apply to
+ # this resource.
+ #
+ # @option params [required, String] :user_role_arn
+ # The IAM role that studio users will assume when logging in to the
+ # Nimble Studio portal.
+ #
+ # @return [Types::CreateStudioResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::CreateStudioResponse#studio #studio} => Types::Studio
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.create_studio({
+ # admin_role_arn: "RoleArn", # required
+ # client_token: "ClientToken",
+ # display_name: "StudioDisplayName", # required
+ # studio_encryption_configuration: {
+ # key_arn: "StudioEncryptionConfigurationKeyArn",
+ # key_type: "AWS_OWNED_KEY", # required, accepts AWS_OWNED_KEY, CUSTOMER_MANAGED_KEY
+ # },
+ # studio_name: "StudioName", # required
+ # tags: {
+ # "String" => "String",
+ # },
+ # user_role_arn: "RoleArn", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.studio.admin_role_arn #=> String
+ # resp.studio.arn #=> String
+ # resp.studio.created_at #=> Time
+ # resp.studio.display_name #=> String
+ # resp.studio.home_region #=> String
+ # resp.studio.sso_client_id #=> String
+ # resp.studio.state #=> String, one of "CREATE_IN_PROGRESS", "READY", "UPDATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "DELETED", "DELETE_FAILED", "CREATE_FAILED", "UPDATE_FAILED"
+ # resp.studio.status_code #=> String, one of "STUDIO_CREATED", "STUDIO_DELETED", "STUDIO_UPDATED", "STUDIO_CREATE_IN_PROGRESS", "STUDIO_UPDATE_IN_PROGRESS", "STUDIO_DELETE_IN_PROGRESS", "STUDIO_WITH_LAUNCH_PROFILES_NOT_DELETED", "STUDIO_WITH_STUDIO_COMPONENTS_NOT_DELETED", "STUDIO_WITH_STREAMING_IMAGES_NOT_DELETED", "AWS_SSO_NOT_ENABLED", "AWS_SSO_ACCESS_DENIED", "ROLE_NOT_OWNED_BY_STUDIO_OWNER", "ROLE_COULD_NOT_BE_ASSUMED", "INTERNAL_ERROR", "ENCRYPTION_KEY_NOT_FOUND", "ENCRYPTION_KEY_ACCESS_DENIED", "AWS_SSO_CONFIGURATION_REPAIRED", "AWS_SSO_CONFIGURATION_REPAIR_IN_PROGRESS", "AWS_STS_REGION_DISABLED"
+ # resp.studio.status_message #=> String
+ # resp.studio.studio_encryption_configuration.key_arn #=> String
+ # resp.studio.studio_encryption_configuration.key_type #=> String, one of "AWS_OWNED_KEY", "CUSTOMER_MANAGED_KEY"
+ # resp.studio.studio_id #=> String
+ # resp.studio.studio_name #=> String
+ # resp.studio.studio_url #=> String
+ # resp.studio.tags #=> Hash
+ # resp.studio.tags["String"] #=> String
+ # resp.studio.updated_at #=> Time
+ # resp.studio.user_role_arn #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/CreateStudio AWS API Documentation
+ #
+ # @overload create_studio(params = {})
+ # @param [Hash] params ({})
+ def create_studio(params = {}, options = {})
+ req = build_request(:create_studio, params)
+ req.send_request(options)
+ end
+
+ # Creates a studio component resource.
+ #
+ # @option params [String] :client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.**
+ #
+ # @option params [Types::StudioComponentConfiguration] :configuration
+ # The configuration of the studio component, based on component type.
+ #
+ # @option params [String] :description
+ # The description.
+ #
+ # @option params [Array] :ec2_security_group_ids
+ # The EC2 security groups that control access to the studio component.
+ #
+ # @option params [Array] :initialization_scripts
+ # Initialization scripts for studio components.
+ #
+ # @option params [required, String] :name
+ # The name for the studio component.
+ #
+ # @option params [String] :runtime_role_arn
+ # An IAM role attached to a Studio Component that gives the studio
+ # component access to Amazon Web Services resources at anytime while the
+ # instance is running.
+ #
+ # @option params [Array] :script_parameters
+ # Parameters for the studio component scripts.
+ #
+ # @option params [String] :secure_initialization_role_arn
+ # An IAM role attached to Studio Component when the system
+ # initialization script runs which give the studio component access to
+ # Amazon Web Services resources when the system initialization script
+ # runs.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @option params [String] :subtype
+ # The specific subtype of a studio component.
+ #
+ # @option params [Hash] :tags
+ # A collection of labels, in the form of key-value pairs, that apply to
+ # this resource.
+ #
+ # @option params [required, String] :type
+ # The type of the studio component.
+ #
+ # @return [Types::CreateStudioComponentResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::CreateStudioComponentResponse#studio_component #studio_component} => Types::StudioComponent
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.create_studio_component({
+ # client_token: "ClientToken",
+ # configuration: {
+ # active_directory_configuration: {
+ # computer_attributes: [
+ # {
+ # name: "ActiveDirectoryComputerAttributeName",
+ # value: "ActiveDirectoryComputerAttributeValue",
+ # },
+ # ],
+ # directory_id: "DirectoryId",
+ # organizational_unit_distinguished_name: "ActiveDirectoryOrganizationalUnitDistinguishedName",
+ # },
+ # compute_farm_configuration: {
+ # active_directory_user: "String",
+ # endpoint: "SensitiveString",
+ # },
+ # license_service_configuration: {
+ # endpoint: "SensitiveString",
+ # },
+ # shared_file_system_configuration: {
+ # endpoint: "SensitiveString",
+ # file_system_id: "String",
+ # linux_mount_point: "LinuxMountPoint",
+ # share_name: "SensitiveString",
+ # windows_mount_drive: "WindowsMountDrive",
+ # },
+ # },
+ # description: "StudioComponentDescription",
+ # ec2_security_group_ids: ["SecurityGroupId"],
+ # initialization_scripts: [
+ # {
+ # launch_profile_protocol_version: "LaunchProfileProtocolVersion",
+ # platform: "LINUX", # accepts LINUX, WINDOWS
+ # run_context: "SYSTEM_INITIALIZATION", # accepts SYSTEM_INITIALIZATION, USER_INITIALIZATION
+ # script: "StudioComponentInitializationScriptContent",
+ # },
+ # ],
+ # name: "StudioComponentName", # required
+ # runtime_role_arn: "RoleArn",
+ # script_parameters: [
+ # {
+ # key: "ScriptParameterKey",
+ # value: "ScriptParameterValue",
+ # },
+ # ],
+ # secure_initialization_role_arn: "RoleArn",
+ # studio_id: "String", # required
+ # subtype: "AWS_MANAGED_MICROSOFT_AD", # accepts AWS_MANAGED_MICROSOFT_AD, AMAZON_FSX_FOR_WINDOWS, AMAZON_FSX_FOR_LUSTRE, CUSTOM
+ # tags: {
+ # "String" => "String",
+ # },
+ # type: "ACTIVE_DIRECTORY", # required, accepts ACTIVE_DIRECTORY, SHARED_FILE_SYSTEM, COMPUTE_FARM, LICENSE_SERVICE, CUSTOM
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.studio_component.arn #=> String
+ # resp.studio_component.configuration.active_directory_configuration.computer_attributes #=> Array
+ # resp.studio_component.configuration.active_directory_configuration.computer_attributes[0].name #=> String
+ # resp.studio_component.configuration.active_directory_configuration.computer_attributes[0].value #=> String
+ # resp.studio_component.configuration.active_directory_configuration.directory_id #=> String
+ # resp.studio_component.configuration.active_directory_configuration.organizational_unit_distinguished_name #=> String
+ # resp.studio_component.configuration.compute_farm_configuration.active_directory_user #=> String
+ # resp.studio_component.configuration.compute_farm_configuration.endpoint #=> String
+ # resp.studio_component.configuration.license_service_configuration.endpoint #=> String
+ # resp.studio_component.configuration.shared_file_system_configuration.endpoint #=> String
+ # resp.studio_component.configuration.shared_file_system_configuration.file_system_id #=> String
+ # resp.studio_component.configuration.shared_file_system_configuration.linux_mount_point #=> String
+ # resp.studio_component.configuration.shared_file_system_configuration.share_name #=> String
+ # resp.studio_component.configuration.shared_file_system_configuration.windows_mount_drive #=> String
+ # resp.studio_component.created_at #=> Time
+ # resp.studio_component.created_by #=> String
+ # resp.studio_component.description #=> String
+ # resp.studio_component.ec2_security_group_ids #=> Array
+ # resp.studio_component.ec2_security_group_ids[0] #=> String
+ # resp.studio_component.initialization_scripts #=> Array
+ # resp.studio_component.initialization_scripts[0].launch_profile_protocol_version #=> String
+ # resp.studio_component.initialization_scripts[0].platform #=> String, one of "LINUX", "WINDOWS"
+ # resp.studio_component.initialization_scripts[0].run_context #=> String, one of "SYSTEM_INITIALIZATION", "USER_INITIALIZATION"
+ # resp.studio_component.initialization_scripts[0].script #=> String
+ # resp.studio_component.name #=> String
+ # resp.studio_component.runtime_role_arn #=> String
+ # resp.studio_component.script_parameters #=> Array
+ # resp.studio_component.script_parameters[0].key #=> String
+ # resp.studio_component.script_parameters[0].value #=> String
+ # resp.studio_component.secure_initialization_role_arn #=> String
+ # resp.studio_component.state #=> String, one of "CREATE_IN_PROGRESS", "READY", "UPDATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "DELETED", "DELETE_FAILED", "CREATE_FAILED", "UPDATE_FAILED"
+ # resp.studio_component.status_code #=> String, one of "ACTIVE_DIRECTORY_ALREADY_EXISTS", "STUDIO_COMPONENT_CREATED", "STUDIO_COMPONENT_UPDATED", "STUDIO_COMPONENT_DELETED", "ENCRYPTION_KEY_ACCESS_DENIED", "ENCRYPTION_KEY_NOT_FOUND", "STUDIO_COMPONENT_CREATE_IN_PROGRESS", "STUDIO_COMPONENT_UPDATE_IN_PROGRESS", "STUDIO_COMPONENT_DELETE_IN_PROGRESS", "INTERNAL_ERROR"
+ # resp.studio_component.status_message #=> String
+ # resp.studio_component.studio_component_id #=> String
+ # resp.studio_component.subtype #=> String, one of "AWS_MANAGED_MICROSOFT_AD", "AMAZON_FSX_FOR_WINDOWS", "AMAZON_FSX_FOR_LUSTRE", "CUSTOM"
+ # resp.studio_component.tags #=> Hash
+ # resp.studio_component.tags["String"] #=> String
+ # resp.studio_component.type #=> String, one of "ACTIVE_DIRECTORY", "SHARED_FILE_SYSTEM", "COMPUTE_FARM", "LICENSE_SERVICE", "CUSTOM"
+ # resp.studio_component.updated_at #=> Time
+ # resp.studio_component.updated_by #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/CreateStudioComponent AWS API Documentation
+ #
+ # @overload create_studio_component(params = {})
+ # @param [Hash] params ({})
+ def create_studio_component(params = {}, options = {})
+ req = build_request(:create_studio_component, params)
+ req.send_request(options)
+ end
+
+ # Permanently delete a launch profile.
+ #
+ # @option params [String] :client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.**
+ #
+ # @option params [required, String] :launch_profile_id
+ # The ID of the launch profile used to control access from the streaming
+ # session.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::DeleteLaunchProfileResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::DeleteLaunchProfileResponse#launch_profile #launch_profile} => Types::LaunchProfile
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.delete_launch_profile({
+ # client_token: "ClientToken",
+ # launch_profile_id: "String", # required
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.launch_profile.arn #=> String
+ # resp.launch_profile.created_at #=> Time
+ # resp.launch_profile.created_by #=> String
+ # resp.launch_profile.description #=> String
+ # resp.launch_profile.ec2_subnet_ids #=> Array
+ # resp.launch_profile.ec2_subnet_ids[0] #=> String
+ # resp.launch_profile.launch_profile_id #=> String
+ # resp.launch_profile.launch_profile_protocol_versions #=> Array
+ # resp.launch_profile.launch_profile_protocol_versions[0] #=> String
+ # resp.launch_profile.name #=> String
+ # resp.launch_profile.state #=> String, one of "CREATE_IN_PROGRESS", "READY", "UPDATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "DELETED", "DELETE_FAILED", "CREATE_FAILED", "UPDATE_FAILED"
+ # resp.launch_profile.status_code #=> String, one of "LAUNCH_PROFILE_CREATED", "LAUNCH_PROFILE_UPDATED", "LAUNCH_PROFILE_DELETED", "LAUNCH_PROFILE_CREATE_IN_PROGRESS", "LAUNCH_PROFILE_UPDATE_IN_PROGRESS", "LAUNCH_PROFILE_DELETE_IN_PROGRESS", "INTERNAL_ERROR", "STREAMING_IMAGE_NOT_FOUND", "STREAMING_IMAGE_NOT_READY", "LAUNCH_PROFILE_WITH_STREAM_SESSIONS_NOT_DELETED", "ENCRYPTION_KEY_ACCESS_DENIED", "ENCRYPTION_KEY_NOT_FOUND", "INVALID_SUBNETS_PROVIDED", "INVALID_INSTANCE_TYPES_PROVIDED", "INVALID_SUBNETS_COMBINATION"
+ # resp.launch_profile.status_message #=> String
+ # resp.launch_profile.stream_configuration.automatic_termination_mode #=> String, one of "DEACTIVATED", "ACTIVATED"
+ # resp.launch_profile.stream_configuration.clipboard_mode #=> String, one of "ENABLED", "DISABLED"
+ # resp.launch_profile.stream_configuration.ec2_instance_types #=> Array
+ # resp.launch_profile.stream_configuration.ec2_instance_types[0] #=> String, one of "g4dn.xlarge", "g4dn.2xlarge", "g4dn.4xlarge", "g4dn.8xlarge", "g4dn.12xlarge", "g4dn.16xlarge", "g3.4xlarge", "g3s.xlarge", "g5.xlarge", "g5.2xlarge", "g5.4xlarge", "g5.8xlarge", "g5.16xlarge"
+ # resp.launch_profile.stream_configuration.max_session_length_in_minutes #=> Integer
+ # resp.launch_profile.stream_configuration.max_stopped_session_length_in_minutes #=> Integer
+ # resp.launch_profile.stream_configuration.session_backup.max_backups_to_retain #=> Integer
+ # resp.launch_profile.stream_configuration.session_backup.mode #=> String, one of "AUTOMATIC", "DEACTIVATED"
+ # resp.launch_profile.stream_configuration.session_persistence_mode #=> String, one of "DEACTIVATED", "ACTIVATED"
+ # resp.launch_profile.stream_configuration.session_storage.mode #=> Array
+ # resp.launch_profile.stream_configuration.session_storage.mode[0] #=> String, one of "UPLOAD"
+ # resp.launch_profile.stream_configuration.session_storage.root.linux #=> String
+ # resp.launch_profile.stream_configuration.session_storage.root.windows #=> String
+ # resp.launch_profile.stream_configuration.streaming_image_ids #=> Array
+ # resp.launch_profile.stream_configuration.streaming_image_ids[0] #=> String
+ # resp.launch_profile.stream_configuration.volume_configuration.iops #=> Integer
+ # resp.launch_profile.stream_configuration.volume_configuration.size #=> Integer
+ # resp.launch_profile.stream_configuration.volume_configuration.throughput #=> Integer
+ # resp.launch_profile.studio_component_ids #=> Array
+ # resp.launch_profile.studio_component_ids[0] #=> String
+ # resp.launch_profile.tags #=> Hash
+ # resp.launch_profile.tags["String"] #=> String
+ # resp.launch_profile.updated_at #=> Time
+ # resp.launch_profile.updated_by #=> String
+ # resp.launch_profile.validation_results #=> Array
+ # resp.launch_profile.validation_results[0].state #=> String, one of "VALIDATION_NOT_STARTED", "VALIDATION_IN_PROGRESS", "VALIDATION_SUCCESS", "VALIDATION_FAILED", "VALIDATION_FAILED_INTERNAL_SERVER_ERROR"
+ # resp.launch_profile.validation_results[0].status_code #=> String, one of "VALIDATION_NOT_STARTED", "VALIDATION_IN_PROGRESS", "VALIDATION_SUCCESS", "VALIDATION_FAILED_INVALID_SUBNET_ROUTE_TABLE_ASSOCIATION", "VALIDATION_FAILED_SUBNET_NOT_FOUND", "VALIDATION_FAILED_INVALID_SECURITY_GROUP_ASSOCIATION", "VALIDATION_FAILED_INVALID_ACTIVE_DIRECTORY", "VALIDATION_FAILED_UNAUTHORIZED", "VALIDATION_FAILED_INTERNAL_SERVER_ERROR"
+ # resp.launch_profile.validation_results[0].status_message #=> String
+ # resp.launch_profile.validation_results[0].type #=> String, one of "VALIDATE_ACTIVE_DIRECTORY_STUDIO_COMPONENT", "VALIDATE_SUBNET_ASSOCIATION", "VALIDATE_NETWORK_ACL_ASSOCIATION", "VALIDATE_SECURITY_GROUP_ASSOCIATION"
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/DeleteLaunchProfile AWS API Documentation
+ #
+ # @overload delete_launch_profile(params = {})
+ # @param [Hash] params ({})
+ def delete_launch_profile(params = {}, options = {})
+ req = build_request(:delete_launch_profile, params)
+ req.send_request(options)
+ end
+
+ # Delete a user from launch profile membership.
+ #
+ # @option params [String] :client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.**
+ #
+ # @option params [required, String] :launch_profile_id
+ # The ID of the launch profile used to control access from the streaming
+ # session.
+ #
+ # @option params [required, String] :principal_id
+ # The principal ID. This currently supports a IAM Identity Center
+ # UserId.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.delete_launch_profile_member({
+ # client_token: "ClientToken",
+ # launch_profile_id: "String", # required
+ # principal_id: "String", # required
+ # studio_id: "String", # required
+ # })
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/DeleteLaunchProfileMember AWS API Documentation
+ #
+ # @overload delete_launch_profile_member(params = {})
+ # @param [Hash] params ({})
+ def delete_launch_profile_member(params = {}, options = {})
+ req = build_request(:delete_launch_profile_member, params)
+ req.send_request(options)
+ end
+
+ # Delete streaming image.
+ #
+ # @option params [String] :client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.**
+ #
+ # @option params [required, String] :streaming_image_id
+ # The streaming image ID.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::DeleteStreamingImageResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::DeleteStreamingImageResponse#streaming_image #streaming_image} => Types::StreamingImage
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.delete_streaming_image({
+ # client_token: "ClientToken",
+ # streaming_image_id: "String", # required
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.streaming_image.arn #=> String
+ # resp.streaming_image.description #=> String
+ # resp.streaming_image.ec2_image_id #=> String
+ # resp.streaming_image.encryption_configuration.key_arn #=> String
+ # resp.streaming_image.encryption_configuration.key_type #=> String, one of "CUSTOMER_MANAGED_KEY"
+ # resp.streaming_image.eula_ids #=> Array
+ # resp.streaming_image.eula_ids[0] #=> String
+ # resp.streaming_image.name #=> String
+ # resp.streaming_image.owner #=> String
+ # resp.streaming_image.platform #=> String
+ # resp.streaming_image.state #=> String, one of "CREATE_IN_PROGRESS", "READY", "DELETE_IN_PROGRESS", "DELETED", "UPDATE_IN_PROGRESS", "UPDATE_FAILED", "CREATE_FAILED", "DELETE_FAILED"
+ # resp.streaming_image.status_code #=> String, one of "STREAMING_IMAGE_CREATE_IN_PROGRESS", "STREAMING_IMAGE_READY", "STREAMING_IMAGE_DELETE_IN_PROGRESS", "STREAMING_IMAGE_DELETED", "STREAMING_IMAGE_UPDATE_IN_PROGRESS", "INTERNAL_ERROR", "ACCESS_DENIED"
+ # resp.streaming_image.status_message #=> String
+ # resp.streaming_image.streaming_image_id #=> String
+ # resp.streaming_image.tags #=> Hash
+ # resp.streaming_image.tags["String"] #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/DeleteStreamingImage AWS API Documentation
+ #
+ # @overload delete_streaming_image(params = {})
+ # @param [Hash] params ({})
+ def delete_streaming_image(params = {}, options = {})
+ req = build_request(:delete_streaming_image, params)
+ req.send_request(options)
+ end
+
+ # Deletes streaming session resource.
+ #
+ # After invoking this operation, use GetStreamingSession to poll the
+ # resource until it transitions to a `DELETED` state.
+ #
+ # A streaming session will count against your streaming session quota
+ # until it is marked `DELETED`.
+ #
+ # @option params [String] :client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.**
+ #
+ # @option params [required, String] :session_id
+ # The streaming session ID.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::DeleteStreamingSessionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::DeleteStreamingSessionResponse#session #session} => Types::StreamingSession
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.delete_streaming_session({
+ # client_token: "ClientToken",
+ # session_id: "String", # required
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.session.arn #=> String
+ # resp.session.automatic_termination_mode #=> String, one of "DEACTIVATED", "ACTIVATED"
+ # resp.session.backup_mode #=> String, one of "AUTOMATIC", "DEACTIVATED"
+ # resp.session.created_at #=> Time
+ # resp.session.created_by #=> String
+ # resp.session.ec2_instance_type #=> String
+ # resp.session.launch_profile_id #=> String
+ # resp.session.max_backups_to_retain #=> Integer
+ # resp.session.owned_by #=> String
+ # resp.session.session_id #=> String
+ # resp.session.session_persistence_mode #=> String, one of "DEACTIVATED", "ACTIVATED"
+ # resp.session.started_at #=> Time
+ # resp.session.started_by #=> String
+ # resp.session.started_from_backup_id #=> String
+ # resp.session.state #=> String, one of "CREATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "READY", "DELETED", "CREATE_FAILED", "DELETE_FAILED", "STOP_IN_PROGRESS", "START_IN_PROGRESS", "STOPPED", "STOP_FAILED", "START_FAILED"
+ # resp.session.status_code #=> String, one of "STREAMING_SESSION_READY", "STREAMING_SESSION_DELETED", "STREAMING_SESSION_CREATE_IN_PROGRESS", "STREAMING_SESSION_DELETE_IN_PROGRESS", "INTERNAL_ERROR", "INSUFFICIENT_CAPACITY", "ACTIVE_DIRECTORY_DOMAIN_JOIN_ERROR", "NETWORK_CONNECTION_ERROR", "INITIALIZATION_SCRIPT_ERROR", "DECRYPT_STREAMING_IMAGE_ERROR", "NETWORK_INTERFACE_ERROR", "STREAMING_SESSION_STOPPED", "STREAMING_SESSION_STARTED", "STREAMING_SESSION_STOP_IN_PROGRESS", "STREAMING_SESSION_START_IN_PROGRESS", "AMI_VALIDATION_ERROR"
+ # resp.session.status_message #=> String
+ # resp.session.stop_at #=> Time
+ # resp.session.stopped_at #=> Time
+ # resp.session.stopped_by #=> String
+ # resp.session.streaming_image_id #=> String
+ # resp.session.tags #=> Hash
+ # resp.session.tags["String"] #=> String
+ # resp.session.terminate_at #=> Time
+ # resp.session.updated_at #=> Time
+ # resp.session.updated_by #=> String
+ # resp.session.volume_configuration.iops #=> Integer
+ # resp.session.volume_configuration.size #=> Integer
+ # resp.session.volume_configuration.throughput #=> Integer
+ # resp.session.volume_retention_mode #=> String, one of "RETAIN", "DELETE"
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/DeleteStreamingSession AWS API Documentation
+ #
+ # @overload delete_streaming_session(params = {})
+ # @param [Hash] params ({})
+ def delete_streaming_session(params = {}, options = {})
+ req = build_request(:delete_streaming_session, params)
+ req.send_request(options)
+ end
+
+ # Delete a studio resource.
+ #
+ # @option params [String] :client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.**
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::DeleteStudioResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::DeleteStudioResponse#studio #studio} => Types::Studio
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.delete_studio({
+ # client_token: "ClientToken",
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.studio.admin_role_arn #=> String
+ # resp.studio.arn #=> String
+ # resp.studio.created_at #=> Time
+ # resp.studio.display_name #=> String
+ # resp.studio.home_region #=> String
+ # resp.studio.sso_client_id #=> String
+ # resp.studio.state #=> String, one of "CREATE_IN_PROGRESS", "READY", "UPDATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "DELETED", "DELETE_FAILED", "CREATE_FAILED", "UPDATE_FAILED"
+ # resp.studio.status_code #=> String, one of "STUDIO_CREATED", "STUDIO_DELETED", "STUDIO_UPDATED", "STUDIO_CREATE_IN_PROGRESS", "STUDIO_UPDATE_IN_PROGRESS", "STUDIO_DELETE_IN_PROGRESS", "STUDIO_WITH_LAUNCH_PROFILES_NOT_DELETED", "STUDIO_WITH_STUDIO_COMPONENTS_NOT_DELETED", "STUDIO_WITH_STREAMING_IMAGES_NOT_DELETED", "AWS_SSO_NOT_ENABLED", "AWS_SSO_ACCESS_DENIED", "ROLE_NOT_OWNED_BY_STUDIO_OWNER", "ROLE_COULD_NOT_BE_ASSUMED", "INTERNAL_ERROR", "ENCRYPTION_KEY_NOT_FOUND", "ENCRYPTION_KEY_ACCESS_DENIED", "AWS_SSO_CONFIGURATION_REPAIRED", "AWS_SSO_CONFIGURATION_REPAIR_IN_PROGRESS", "AWS_STS_REGION_DISABLED"
+ # resp.studio.status_message #=> String
+ # resp.studio.studio_encryption_configuration.key_arn #=> String
+ # resp.studio.studio_encryption_configuration.key_type #=> String, one of "AWS_OWNED_KEY", "CUSTOMER_MANAGED_KEY"
+ # resp.studio.studio_id #=> String
+ # resp.studio.studio_name #=> String
+ # resp.studio.studio_url #=> String
+ # resp.studio.tags #=> Hash
+ # resp.studio.tags["String"] #=> String
+ # resp.studio.updated_at #=> Time
+ # resp.studio.user_role_arn #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/DeleteStudio AWS API Documentation
+ #
+ # @overload delete_studio(params = {})
+ # @param [Hash] params ({})
+ def delete_studio(params = {}, options = {})
+ req = build_request(:delete_studio, params)
+ req.send_request(options)
+ end
+
+ # Deletes a studio component resource.
+ #
+ # @option params [String] :client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.**
+ #
+ # @option params [required, String] :studio_component_id
+ # The studio component ID.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::DeleteStudioComponentResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::DeleteStudioComponentResponse#studio_component #studio_component} => Types::StudioComponent
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.delete_studio_component({
+ # client_token: "ClientToken",
+ # studio_component_id: "String", # required
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.studio_component.arn #=> String
+ # resp.studio_component.configuration.active_directory_configuration.computer_attributes #=> Array
+ # resp.studio_component.configuration.active_directory_configuration.computer_attributes[0].name #=> String
+ # resp.studio_component.configuration.active_directory_configuration.computer_attributes[0].value #=> String
+ # resp.studio_component.configuration.active_directory_configuration.directory_id #=> String
+ # resp.studio_component.configuration.active_directory_configuration.organizational_unit_distinguished_name #=> String
+ # resp.studio_component.configuration.compute_farm_configuration.active_directory_user #=> String
+ # resp.studio_component.configuration.compute_farm_configuration.endpoint #=> String
+ # resp.studio_component.configuration.license_service_configuration.endpoint #=> String
+ # resp.studio_component.configuration.shared_file_system_configuration.endpoint #=> String
+ # resp.studio_component.configuration.shared_file_system_configuration.file_system_id #=> String
+ # resp.studio_component.configuration.shared_file_system_configuration.linux_mount_point #=> String
+ # resp.studio_component.configuration.shared_file_system_configuration.share_name #=> String
+ # resp.studio_component.configuration.shared_file_system_configuration.windows_mount_drive #=> String
+ # resp.studio_component.created_at #=> Time
+ # resp.studio_component.created_by #=> String
+ # resp.studio_component.description #=> String
+ # resp.studio_component.ec2_security_group_ids #=> Array
+ # resp.studio_component.ec2_security_group_ids[0] #=> String
+ # resp.studio_component.initialization_scripts #=> Array
+ # resp.studio_component.initialization_scripts[0].launch_profile_protocol_version #=> String
+ # resp.studio_component.initialization_scripts[0].platform #=> String, one of "LINUX", "WINDOWS"
+ # resp.studio_component.initialization_scripts[0].run_context #=> String, one of "SYSTEM_INITIALIZATION", "USER_INITIALIZATION"
+ # resp.studio_component.initialization_scripts[0].script #=> String
+ # resp.studio_component.name #=> String
+ # resp.studio_component.runtime_role_arn #=> String
+ # resp.studio_component.script_parameters #=> Array
+ # resp.studio_component.script_parameters[0].key #=> String
+ # resp.studio_component.script_parameters[0].value #=> String
+ # resp.studio_component.secure_initialization_role_arn #=> String
+ # resp.studio_component.state #=> String, one of "CREATE_IN_PROGRESS", "READY", "UPDATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "DELETED", "DELETE_FAILED", "CREATE_FAILED", "UPDATE_FAILED"
+ # resp.studio_component.status_code #=> String, one of "ACTIVE_DIRECTORY_ALREADY_EXISTS", "STUDIO_COMPONENT_CREATED", "STUDIO_COMPONENT_UPDATED", "STUDIO_COMPONENT_DELETED", "ENCRYPTION_KEY_ACCESS_DENIED", "ENCRYPTION_KEY_NOT_FOUND", "STUDIO_COMPONENT_CREATE_IN_PROGRESS", "STUDIO_COMPONENT_UPDATE_IN_PROGRESS", "STUDIO_COMPONENT_DELETE_IN_PROGRESS", "INTERNAL_ERROR"
+ # resp.studio_component.status_message #=> String
+ # resp.studio_component.studio_component_id #=> String
+ # resp.studio_component.subtype #=> String, one of "AWS_MANAGED_MICROSOFT_AD", "AMAZON_FSX_FOR_WINDOWS", "AMAZON_FSX_FOR_LUSTRE", "CUSTOM"
+ # resp.studio_component.tags #=> Hash
+ # resp.studio_component.tags["String"] #=> String
+ # resp.studio_component.type #=> String, one of "ACTIVE_DIRECTORY", "SHARED_FILE_SYSTEM", "COMPUTE_FARM", "LICENSE_SERVICE", "CUSTOM"
+ # resp.studio_component.updated_at #=> Time
+ # resp.studio_component.updated_by #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/DeleteStudioComponent AWS API Documentation
+ #
+ # @overload delete_studio_component(params = {})
+ # @param [Hash] params ({})
+ def delete_studio_component(params = {}, options = {})
+ req = build_request(:delete_studio_component, params)
+ req.send_request(options)
+ end
+
+ # Delete a user from studio membership.
+ #
+ # @option params [String] :client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.**
+ #
+ # @option params [required, String] :principal_id
+ # The principal ID. This currently supports a IAM Identity Center
+ # UserId.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.delete_studio_member({
+ # client_token: "ClientToken",
+ # principal_id: "String", # required
+ # studio_id: "String", # required
+ # })
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/DeleteStudioMember AWS API Documentation
+ #
+ # @overload delete_studio_member(params = {})
+ # @param [Hash] params ({})
+ def delete_studio_member(params = {}, options = {})
+ req = build_request(:delete_studio_member, params)
+ req.send_request(options)
+ end
+
+ # Get EULA.
+ #
+ # @option params [required, String] :eula_id
+ # The EULA ID.
+ #
+ # @return [Types::GetEulaResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::GetEulaResponse#eula #eula} => Types::Eula
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.get_eula({
+ # eula_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.eula.content #=> String
+ # resp.eula.created_at #=> Time
+ # resp.eula.eula_id #=> String
+ # resp.eula.name #=> String
+ # resp.eula.updated_at #=> Time
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetEula AWS API Documentation
+ #
+ # @overload get_eula(params = {})
+ # @param [Hash] params ({})
+ def get_eula(params = {}, options = {})
+ req = build_request(:get_eula, params)
+ req.send_request(options)
+ end
+
+ # Get a launch profile.
+ #
+ # @option params [required, String] :launch_profile_id
+ # The ID of the launch profile used to control access from the streaming
+ # session.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::GetLaunchProfileResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::GetLaunchProfileResponse#launch_profile #launch_profile} => Types::LaunchProfile
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.get_launch_profile({
+ # launch_profile_id: "String", # required
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.launch_profile.arn #=> String
+ # resp.launch_profile.created_at #=> Time
+ # resp.launch_profile.created_by #=> String
+ # resp.launch_profile.description #=> String
+ # resp.launch_profile.ec2_subnet_ids #=> Array
+ # resp.launch_profile.ec2_subnet_ids[0] #=> String
+ # resp.launch_profile.launch_profile_id #=> String
+ # resp.launch_profile.launch_profile_protocol_versions #=> Array
+ # resp.launch_profile.launch_profile_protocol_versions[0] #=> String
+ # resp.launch_profile.name #=> String
+ # resp.launch_profile.state #=> String, one of "CREATE_IN_PROGRESS", "READY", "UPDATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "DELETED", "DELETE_FAILED", "CREATE_FAILED", "UPDATE_FAILED"
+ # resp.launch_profile.status_code #=> String, one of "LAUNCH_PROFILE_CREATED", "LAUNCH_PROFILE_UPDATED", "LAUNCH_PROFILE_DELETED", "LAUNCH_PROFILE_CREATE_IN_PROGRESS", "LAUNCH_PROFILE_UPDATE_IN_PROGRESS", "LAUNCH_PROFILE_DELETE_IN_PROGRESS", "INTERNAL_ERROR", "STREAMING_IMAGE_NOT_FOUND", "STREAMING_IMAGE_NOT_READY", "LAUNCH_PROFILE_WITH_STREAM_SESSIONS_NOT_DELETED", "ENCRYPTION_KEY_ACCESS_DENIED", "ENCRYPTION_KEY_NOT_FOUND", "INVALID_SUBNETS_PROVIDED", "INVALID_INSTANCE_TYPES_PROVIDED", "INVALID_SUBNETS_COMBINATION"
+ # resp.launch_profile.status_message #=> String
+ # resp.launch_profile.stream_configuration.automatic_termination_mode #=> String, one of "DEACTIVATED", "ACTIVATED"
+ # resp.launch_profile.stream_configuration.clipboard_mode #=> String, one of "ENABLED", "DISABLED"
+ # resp.launch_profile.stream_configuration.ec2_instance_types #=> Array
+ # resp.launch_profile.stream_configuration.ec2_instance_types[0] #=> String, one of "g4dn.xlarge", "g4dn.2xlarge", "g4dn.4xlarge", "g4dn.8xlarge", "g4dn.12xlarge", "g4dn.16xlarge", "g3.4xlarge", "g3s.xlarge", "g5.xlarge", "g5.2xlarge", "g5.4xlarge", "g5.8xlarge", "g5.16xlarge"
+ # resp.launch_profile.stream_configuration.max_session_length_in_minutes #=> Integer
+ # resp.launch_profile.stream_configuration.max_stopped_session_length_in_minutes #=> Integer
+ # resp.launch_profile.stream_configuration.session_backup.max_backups_to_retain #=> Integer
+ # resp.launch_profile.stream_configuration.session_backup.mode #=> String, one of "AUTOMATIC", "DEACTIVATED"
+ # resp.launch_profile.stream_configuration.session_persistence_mode #=> String, one of "DEACTIVATED", "ACTIVATED"
+ # resp.launch_profile.stream_configuration.session_storage.mode #=> Array
+ # resp.launch_profile.stream_configuration.session_storage.mode[0] #=> String, one of "UPLOAD"
+ # resp.launch_profile.stream_configuration.session_storage.root.linux #=> String
+ # resp.launch_profile.stream_configuration.session_storage.root.windows #=> String
+ # resp.launch_profile.stream_configuration.streaming_image_ids #=> Array
+ # resp.launch_profile.stream_configuration.streaming_image_ids[0] #=> String
+ # resp.launch_profile.stream_configuration.volume_configuration.iops #=> Integer
+ # resp.launch_profile.stream_configuration.volume_configuration.size #=> Integer
+ # resp.launch_profile.stream_configuration.volume_configuration.throughput #=> Integer
+ # resp.launch_profile.studio_component_ids #=> Array
+ # resp.launch_profile.studio_component_ids[0] #=> String
+ # resp.launch_profile.tags #=> Hash
+ # resp.launch_profile.tags["String"] #=> String
+ # resp.launch_profile.updated_at #=> Time
+ # resp.launch_profile.updated_by #=> String
+ # resp.launch_profile.validation_results #=> Array
+ # resp.launch_profile.validation_results[0].state #=> String, one of "VALIDATION_NOT_STARTED", "VALIDATION_IN_PROGRESS", "VALIDATION_SUCCESS", "VALIDATION_FAILED", "VALIDATION_FAILED_INTERNAL_SERVER_ERROR"
+ # resp.launch_profile.validation_results[0].status_code #=> String, one of "VALIDATION_NOT_STARTED", "VALIDATION_IN_PROGRESS", "VALIDATION_SUCCESS", "VALIDATION_FAILED_INVALID_SUBNET_ROUTE_TABLE_ASSOCIATION", "VALIDATION_FAILED_SUBNET_NOT_FOUND", "VALIDATION_FAILED_INVALID_SECURITY_GROUP_ASSOCIATION", "VALIDATION_FAILED_INVALID_ACTIVE_DIRECTORY", "VALIDATION_FAILED_UNAUTHORIZED", "VALIDATION_FAILED_INTERNAL_SERVER_ERROR"
+ # resp.launch_profile.validation_results[0].status_message #=> String
+ # resp.launch_profile.validation_results[0].type #=> String, one of "VALIDATE_ACTIVE_DIRECTORY_STUDIO_COMPONENT", "VALIDATE_SUBNET_ASSOCIATION", "VALIDATE_NETWORK_ACL_ASSOCIATION", "VALIDATE_SECURITY_GROUP_ASSOCIATION"
+ #
+ #
+ # The following waiters are defined for this operation (see {Client#wait_until} for detailed usage):
+ #
+ # * launch_profile_deleted
+ # * launch_profile_ready
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetLaunchProfile AWS API Documentation
+ #
+ # @overload get_launch_profile(params = {})
+ # @param [Hash] params ({})
+ def get_launch_profile(params = {}, options = {})
+ req = build_request(:get_launch_profile, params)
+ req.send_request(options)
+ end
+
+ # Launch profile details include the launch profile resource and summary
+ # information of resources that are used by, or available to, the launch
+ # profile. This includes the name and description of all studio
+ # components used by the launch profiles, and the name and description
+ # of streaming images that can be used with this launch profile.
+ #
+ # @option params [required, String] :launch_profile_id
+ # The ID of the launch profile used to control access from the streaming
+ # session.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::GetLaunchProfileDetailsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::GetLaunchProfileDetailsResponse#launch_profile #launch_profile} => Types::LaunchProfile
+ # * {Types::GetLaunchProfileDetailsResponse#streaming_images #streaming_images} => Array<Types::StreamingImage>
+ # * {Types::GetLaunchProfileDetailsResponse#studio_component_summaries #studio_component_summaries} => Array<Types::StudioComponentSummary>
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.get_launch_profile_details({
+ # launch_profile_id: "String", # required
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.launch_profile.arn #=> String
+ # resp.launch_profile.created_at #=> Time
+ # resp.launch_profile.created_by #=> String
+ # resp.launch_profile.description #=> String
+ # resp.launch_profile.ec2_subnet_ids #=> Array
+ # resp.launch_profile.ec2_subnet_ids[0] #=> String
+ # resp.launch_profile.launch_profile_id #=> String
+ # resp.launch_profile.launch_profile_protocol_versions #=> Array
+ # resp.launch_profile.launch_profile_protocol_versions[0] #=> String
+ # resp.launch_profile.name #=> String
+ # resp.launch_profile.state #=> String, one of "CREATE_IN_PROGRESS", "READY", "UPDATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "DELETED", "DELETE_FAILED", "CREATE_FAILED", "UPDATE_FAILED"
+ # resp.launch_profile.status_code #=> String, one of "LAUNCH_PROFILE_CREATED", "LAUNCH_PROFILE_UPDATED", "LAUNCH_PROFILE_DELETED", "LAUNCH_PROFILE_CREATE_IN_PROGRESS", "LAUNCH_PROFILE_UPDATE_IN_PROGRESS", "LAUNCH_PROFILE_DELETE_IN_PROGRESS", "INTERNAL_ERROR", "STREAMING_IMAGE_NOT_FOUND", "STREAMING_IMAGE_NOT_READY", "LAUNCH_PROFILE_WITH_STREAM_SESSIONS_NOT_DELETED", "ENCRYPTION_KEY_ACCESS_DENIED", "ENCRYPTION_KEY_NOT_FOUND", "INVALID_SUBNETS_PROVIDED", "INVALID_INSTANCE_TYPES_PROVIDED", "INVALID_SUBNETS_COMBINATION"
+ # resp.launch_profile.status_message #=> String
+ # resp.launch_profile.stream_configuration.automatic_termination_mode #=> String, one of "DEACTIVATED", "ACTIVATED"
+ # resp.launch_profile.stream_configuration.clipboard_mode #=> String, one of "ENABLED", "DISABLED"
+ # resp.launch_profile.stream_configuration.ec2_instance_types #=> Array
+ # resp.launch_profile.stream_configuration.ec2_instance_types[0] #=> String, one of "g4dn.xlarge", "g4dn.2xlarge", "g4dn.4xlarge", "g4dn.8xlarge", "g4dn.12xlarge", "g4dn.16xlarge", "g3.4xlarge", "g3s.xlarge", "g5.xlarge", "g5.2xlarge", "g5.4xlarge", "g5.8xlarge", "g5.16xlarge"
+ # resp.launch_profile.stream_configuration.max_session_length_in_minutes #=> Integer
+ # resp.launch_profile.stream_configuration.max_stopped_session_length_in_minutes #=> Integer
+ # resp.launch_profile.stream_configuration.session_backup.max_backups_to_retain #=> Integer
+ # resp.launch_profile.stream_configuration.session_backup.mode #=> String, one of "AUTOMATIC", "DEACTIVATED"
+ # resp.launch_profile.stream_configuration.session_persistence_mode #=> String, one of "DEACTIVATED", "ACTIVATED"
+ # resp.launch_profile.stream_configuration.session_storage.mode #=> Array
+ # resp.launch_profile.stream_configuration.session_storage.mode[0] #=> String, one of "UPLOAD"
+ # resp.launch_profile.stream_configuration.session_storage.root.linux #=> String
+ # resp.launch_profile.stream_configuration.session_storage.root.windows #=> String
+ # resp.launch_profile.stream_configuration.streaming_image_ids #=> Array
+ # resp.launch_profile.stream_configuration.streaming_image_ids[0] #=> String
+ # resp.launch_profile.stream_configuration.volume_configuration.iops #=> Integer
+ # resp.launch_profile.stream_configuration.volume_configuration.size #=> Integer
+ # resp.launch_profile.stream_configuration.volume_configuration.throughput #=> Integer
+ # resp.launch_profile.studio_component_ids #=> Array
+ # resp.launch_profile.studio_component_ids[0] #=> String
+ # resp.launch_profile.tags #=> Hash
+ # resp.launch_profile.tags["String"] #=> String
+ # resp.launch_profile.updated_at #=> Time
+ # resp.launch_profile.updated_by #=> String
+ # resp.launch_profile.validation_results #=> Array
+ # resp.launch_profile.validation_results[0].state #=> String, one of "VALIDATION_NOT_STARTED", "VALIDATION_IN_PROGRESS", "VALIDATION_SUCCESS", "VALIDATION_FAILED", "VALIDATION_FAILED_INTERNAL_SERVER_ERROR"
+ # resp.launch_profile.validation_results[0].status_code #=> String, one of "VALIDATION_NOT_STARTED", "VALIDATION_IN_PROGRESS", "VALIDATION_SUCCESS", "VALIDATION_FAILED_INVALID_SUBNET_ROUTE_TABLE_ASSOCIATION", "VALIDATION_FAILED_SUBNET_NOT_FOUND", "VALIDATION_FAILED_INVALID_SECURITY_GROUP_ASSOCIATION", "VALIDATION_FAILED_INVALID_ACTIVE_DIRECTORY", "VALIDATION_FAILED_UNAUTHORIZED", "VALIDATION_FAILED_INTERNAL_SERVER_ERROR"
+ # resp.launch_profile.validation_results[0].status_message #=> String
+ # resp.launch_profile.validation_results[0].type #=> String, one of "VALIDATE_ACTIVE_DIRECTORY_STUDIO_COMPONENT", "VALIDATE_SUBNET_ASSOCIATION", "VALIDATE_NETWORK_ACL_ASSOCIATION", "VALIDATE_SECURITY_GROUP_ASSOCIATION"
+ # resp.streaming_images #=> Array
+ # resp.streaming_images[0].arn #=> String
+ # resp.streaming_images[0].description #=> String
+ # resp.streaming_images[0].ec2_image_id #=> String
+ # resp.streaming_images[0].encryption_configuration.key_arn #=> String
+ # resp.streaming_images[0].encryption_configuration.key_type #=> String, one of "CUSTOMER_MANAGED_KEY"
+ # resp.streaming_images[0].eula_ids #=> Array
+ # resp.streaming_images[0].eula_ids[0] #=> String
+ # resp.streaming_images[0].name #=> String
+ # resp.streaming_images[0].owner #=> String
+ # resp.streaming_images[0].platform #=> String
+ # resp.streaming_images[0].state #=> String, one of "CREATE_IN_PROGRESS", "READY", "DELETE_IN_PROGRESS", "DELETED", "UPDATE_IN_PROGRESS", "UPDATE_FAILED", "CREATE_FAILED", "DELETE_FAILED"
+ # resp.streaming_images[0].status_code #=> String, one of "STREAMING_IMAGE_CREATE_IN_PROGRESS", "STREAMING_IMAGE_READY", "STREAMING_IMAGE_DELETE_IN_PROGRESS", "STREAMING_IMAGE_DELETED", "STREAMING_IMAGE_UPDATE_IN_PROGRESS", "INTERNAL_ERROR", "ACCESS_DENIED"
+ # resp.streaming_images[0].status_message #=> String
+ # resp.streaming_images[0].streaming_image_id #=> String
+ # resp.streaming_images[0].tags #=> Hash
+ # resp.streaming_images[0].tags["String"] #=> String
+ # resp.studio_component_summaries #=> Array
+ # resp.studio_component_summaries[0].created_at #=> Time
+ # resp.studio_component_summaries[0].created_by #=> String
+ # resp.studio_component_summaries[0].description #=> String
+ # resp.studio_component_summaries[0].name #=> String
+ # resp.studio_component_summaries[0].studio_component_id #=> String
+ # resp.studio_component_summaries[0].subtype #=> String, one of "AWS_MANAGED_MICROSOFT_AD", "AMAZON_FSX_FOR_WINDOWS", "AMAZON_FSX_FOR_LUSTRE", "CUSTOM"
+ # resp.studio_component_summaries[0].type #=> String, one of "ACTIVE_DIRECTORY", "SHARED_FILE_SYSTEM", "COMPUTE_FARM", "LICENSE_SERVICE", "CUSTOM"
+ # resp.studio_component_summaries[0].updated_at #=> Time
+ # resp.studio_component_summaries[0].updated_by #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetLaunchProfileDetails AWS API Documentation
+ #
+ # @overload get_launch_profile_details(params = {})
+ # @param [Hash] params ({})
+ def get_launch_profile_details(params = {}, options = {})
+ req = build_request(:get_launch_profile_details, params)
+ req.send_request(options)
+ end
+
+ # Get a launch profile initialization.
+ #
+ # @option params [required, String] :launch_profile_id
+ # The ID of the launch profile used to control access from the streaming
+ # session.
+ #
+ # @option params [required, Array] :launch_profile_protocol_versions
+ # The launch profile protocol versions supported by the client.
+ #
+ # @option params [required, String] :launch_purpose
+ # The launch purpose.
+ #
+ # @option params [required, String] :platform
+ # The platform where this Launch Profile will be used, either Windows or
+ # Linux.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::GetLaunchProfileInitializationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::GetLaunchProfileInitializationResponse#launch_profile_initialization #launch_profile_initialization} => Types::LaunchProfileInitialization
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.get_launch_profile_initialization({
+ # launch_profile_id: "String", # required
+ # launch_profile_protocol_versions: ["String"], # required
+ # launch_purpose: "String", # required
+ # platform: "String", # required
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.launch_profile_initialization.active_directory.computer_attributes #=> Array
+ # resp.launch_profile_initialization.active_directory.computer_attributes[0].name #=> String
+ # resp.launch_profile_initialization.active_directory.computer_attributes[0].value #=> String
+ # resp.launch_profile_initialization.active_directory.directory_id #=> String
+ # resp.launch_profile_initialization.active_directory.directory_name #=> String
+ # resp.launch_profile_initialization.active_directory.dns_ip_addresses #=> Array
+ # resp.launch_profile_initialization.active_directory.dns_ip_addresses[0] #=> String
+ # resp.launch_profile_initialization.active_directory.organizational_unit_distinguished_name #=> String
+ # resp.launch_profile_initialization.active_directory.studio_component_id #=> String
+ # resp.launch_profile_initialization.active_directory.studio_component_name #=> String
+ # resp.launch_profile_initialization.ec2_security_group_ids #=> Array
+ # resp.launch_profile_initialization.ec2_security_group_ids[0] #=> String
+ # resp.launch_profile_initialization.launch_profile_id #=> String
+ # resp.launch_profile_initialization.launch_profile_protocol_version #=> String
+ # resp.launch_profile_initialization.launch_purpose #=> String
+ # resp.launch_profile_initialization.name #=> String
+ # resp.launch_profile_initialization.platform #=> String, one of "LINUX", "WINDOWS"
+ # resp.launch_profile_initialization.system_initialization_scripts #=> Array
+ # resp.launch_profile_initialization.system_initialization_scripts[0].runtime_role_arn #=> String
+ # resp.launch_profile_initialization.system_initialization_scripts[0].script #=> String
+ # resp.launch_profile_initialization.system_initialization_scripts[0].secure_initialization_role_arn #=> String
+ # resp.launch_profile_initialization.system_initialization_scripts[0].studio_component_id #=> String
+ # resp.launch_profile_initialization.system_initialization_scripts[0].studio_component_name #=> String
+ # resp.launch_profile_initialization.user_initialization_scripts #=> Array
+ # resp.launch_profile_initialization.user_initialization_scripts[0].runtime_role_arn #=> String
+ # resp.launch_profile_initialization.user_initialization_scripts[0].script #=> String
+ # resp.launch_profile_initialization.user_initialization_scripts[0].secure_initialization_role_arn #=> String
+ # resp.launch_profile_initialization.user_initialization_scripts[0].studio_component_id #=> String
+ # resp.launch_profile_initialization.user_initialization_scripts[0].studio_component_name #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetLaunchProfileInitialization AWS API Documentation
+ #
+ # @overload get_launch_profile_initialization(params = {})
+ # @param [Hash] params ({})
+ def get_launch_profile_initialization(params = {}, options = {})
+ req = build_request(:get_launch_profile_initialization, params)
+ req.send_request(options)
+ end
+
+ # Get a user persona in launch profile membership.
+ #
+ # @option params [required, String] :launch_profile_id
+ # The ID of the launch profile used to control access from the streaming
+ # session.
+ #
+ # @option params [required, String] :principal_id
+ # The principal ID. This currently supports a IAM Identity Center
+ # UserId.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::GetLaunchProfileMemberResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::GetLaunchProfileMemberResponse#member #member} => Types::LaunchProfileMembership
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.get_launch_profile_member({
+ # launch_profile_id: "String", # required
+ # principal_id: "String", # required
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.member.identity_store_id #=> String
+ # resp.member.persona #=> String, one of "USER"
+ # resp.member.principal_id #=> String
+ # resp.member.sid #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetLaunchProfileMember AWS API Documentation
+ #
+ # @overload get_launch_profile_member(params = {})
+ # @param [Hash] params ({})
+ def get_launch_profile_member(params = {}, options = {})
+ req = build_request(:get_launch_profile_member, params)
+ req.send_request(options)
+ end
+
+ # Get streaming image.
+ #
+ # @option params [required, String] :streaming_image_id
+ # The streaming image ID.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::GetStreamingImageResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::GetStreamingImageResponse#streaming_image #streaming_image} => Types::StreamingImage
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.get_streaming_image({
+ # streaming_image_id: "String", # required
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.streaming_image.arn #=> String
+ # resp.streaming_image.description #=> String
+ # resp.streaming_image.ec2_image_id #=> String
+ # resp.streaming_image.encryption_configuration.key_arn #=> String
+ # resp.streaming_image.encryption_configuration.key_type #=> String, one of "CUSTOMER_MANAGED_KEY"
+ # resp.streaming_image.eula_ids #=> Array
+ # resp.streaming_image.eula_ids[0] #=> String
+ # resp.streaming_image.name #=> String
+ # resp.streaming_image.owner #=> String
+ # resp.streaming_image.platform #=> String
+ # resp.streaming_image.state #=> String, one of "CREATE_IN_PROGRESS", "READY", "DELETE_IN_PROGRESS", "DELETED", "UPDATE_IN_PROGRESS", "UPDATE_FAILED", "CREATE_FAILED", "DELETE_FAILED"
+ # resp.streaming_image.status_code #=> String, one of "STREAMING_IMAGE_CREATE_IN_PROGRESS", "STREAMING_IMAGE_READY", "STREAMING_IMAGE_DELETE_IN_PROGRESS", "STREAMING_IMAGE_DELETED", "STREAMING_IMAGE_UPDATE_IN_PROGRESS", "INTERNAL_ERROR", "ACCESS_DENIED"
+ # resp.streaming_image.status_message #=> String
+ # resp.streaming_image.streaming_image_id #=> String
+ # resp.streaming_image.tags #=> Hash
+ # resp.streaming_image.tags["String"] #=> String
+ #
+ #
+ # The following waiters are defined for this operation (see {Client#wait_until} for detailed usage):
+ #
+ # * streaming_image_deleted
+ # * streaming_image_ready
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetStreamingImage AWS API Documentation
+ #
+ # @overload get_streaming_image(params = {})
+ # @param [Hash] params ({})
+ def get_streaming_image(params = {}, options = {})
+ req = build_request(:get_streaming_image, params)
+ req.send_request(options)
+ end
+
+ # Gets StreamingSession resource.
+ #
+ # Invoke this operation to poll for a streaming session state while
+ # creating or deleting a session.
+ #
+ # @option params [required, String] :session_id
+ # The streaming session ID.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::GetStreamingSessionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::GetStreamingSessionResponse#session #session} => Types::StreamingSession
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.get_streaming_session({
+ # session_id: "String", # required
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.session.arn #=> String
+ # resp.session.automatic_termination_mode #=> String, one of "DEACTIVATED", "ACTIVATED"
+ # resp.session.backup_mode #=> String, one of "AUTOMATIC", "DEACTIVATED"
+ # resp.session.created_at #=> Time
+ # resp.session.created_by #=> String
+ # resp.session.ec2_instance_type #=> String
+ # resp.session.launch_profile_id #=> String
+ # resp.session.max_backups_to_retain #=> Integer
+ # resp.session.owned_by #=> String
+ # resp.session.session_id #=> String
+ # resp.session.session_persistence_mode #=> String, one of "DEACTIVATED", "ACTIVATED"
+ # resp.session.started_at #=> Time
+ # resp.session.started_by #=> String
+ # resp.session.started_from_backup_id #=> String
+ # resp.session.state #=> String, one of "CREATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "READY", "DELETED", "CREATE_FAILED", "DELETE_FAILED", "STOP_IN_PROGRESS", "START_IN_PROGRESS", "STOPPED", "STOP_FAILED", "START_FAILED"
+ # resp.session.status_code #=> String, one of "STREAMING_SESSION_READY", "STREAMING_SESSION_DELETED", "STREAMING_SESSION_CREATE_IN_PROGRESS", "STREAMING_SESSION_DELETE_IN_PROGRESS", "INTERNAL_ERROR", "INSUFFICIENT_CAPACITY", "ACTIVE_DIRECTORY_DOMAIN_JOIN_ERROR", "NETWORK_CONNECTION_ERROR", "INITIALIZATION_SCRIPT_ERROR", "DECRYPT_STREAMING_IMAGE_ERROR", "NETWORK_INTERFACE_ERROR", "STREAMING_SESSION_STOPPED", "STREAMING_SESSION_STARTED", "STREAMING_SESSION_STOP_IN_PROGRESS", "STREAMING_SESSION_START_IN_PROGRESS", "AMI_VALIDATION_ERROR"
+ # resp.session.status_message #=> String
+ # resp.session.stop_at #=> Time
+ # resp.session.stopped_at #=> Time
+ # resp.session.stopped_by #=> String
+ # resp.session.streaming_image_id #=> String
+ # resp.session.tags #=> Hash
+ # resp.session.tags["String"] #=> String
+ # resp.session.terminate_at #=> Time
+ # resp.session.updated_at #=> Time
+ # resp.session.updated_by #=> String
+ # resp.session.volume_configuration.iops #=> Integer
+ # resp.session.volume_configuration.size #=> Integer
+ # resp.session.volume_configuration.throughput #=> Integer
+ # resp.session.volume_retention_mode #=> String, one of "RETAIN", "DELETE"
+ #
+ #
+ # The following waiters are defined for this operation (see {Client#wait_until} for detailed usage):
+ #
+ # * streaming_session_deleted
+ # * streaming_session_ready
+ # * streaming_session_stopped
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetStreamingSession AWS API Documentation
+ #
+ # @overload get_streaming_session(params = {})
+ # @param [Hash] params ({})
+ def get_streaming_session(params = {}, options = {})
+ req = build_request(:get_streaming_session, params)
+ req.send_request(options)
+ end
+
+ # Gets `StreamingSessionBackup` resource.
+ #
+ # Invoke this operation to poll for a streaming session backup while
+ # stopping a streaming session.
+ #
+ # @option params [required, String] :backup_id
+ # The ID of the backup.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::GetStreamingSessionBackupResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::GetStreamingSessionBackupResponse#streaming_session_backup #streaming_session_backup} => Types::StreamingSessionBackup
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.get_streaming_session_backup({
+ # backup_id: "String", # required
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.streaming_session_backup.arn #=> String
+ # resp.streaming_session_backup.backup_id #=> String
+ # resp.streaming_session_backup.created_at #=> Time
+ # resp.streaming_session_backup.launch_profile_id #=> String
+ # resp.streaming_session_backup.owned_by #=> String
+ # resp.streaming_session_backup.session_id #=> String
+ # resp.streaming_session_backup.state #=> String, one of "CREATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "READY", "DELETED", "CREATE_FAILED", "DELETE_FAILED", "STOP_IN_PROGRESS", "START_IN_PROGRESS", "STOPPED", "STOP_FAILED", "START_FAILED"
+ # resp.streaming_session_backup.status_code #=> String, one of "STREAMING_SESSION_READY", "STREAMING_SESSION_DELETED", "STREAMING_SESSION_CREATE_IN_PROGRESS", "STREAMING_SESSION_DELETE_IN_PROGRESS", "INTERNAL_ERROR", "INSUFFICIENT_CAPACITY", "ACTIVE_DIRECTORY_DOMAIN_JOIN_ERROR", "NETWORK_CONNECTION_ERROR", "INITIALIZATION_SCRIPT_ERROR", "DECRYPT_STREAMING_IMAGE_ERROR", "NETWORK_INTERFACE_ERROR", "STREAMING_SESSION_STOPPED", "STREAMING_SESSION_STARTED", "STREAMING_SESSION_STOP_IN_PROGRESS", "STREAMING_SESSION_START_IN_PROGRESS", "AMI_VALIDATION_ERROR"
+ # resp.streaming_session_backup.status_message #=> String
+ # resp.streaming_session_backup.tags #=> Hash
+ # resp.streaming_session_backup.tags["String"] #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetStreamingSessionBackup AWS API Documentation
+ #
+ # @overload get_streaming_session_backup(params = {})
+ # @param [Hash] params ({})
+ def get_streaming_session_backup(params = {}, options = {})
+ req = build_request(:get_streaming_session_backup, params)
+ req.send_request(options)
+ end
+
+ # Gets a StreamingSessionStream for a streaming session.
+ #
+ # Invoke this operation to poll the resource after invoking
+ # `CreateStreamingSessionStream`.
+ #
+ # After the `StreamingSessionStream` changes to the `READY` state, the
+ # url property will contain a stream to be used with the DCV streaming
+ # client.
+ #
+ # @option params [required, String] :session_id
+ # The streaming session ID.
+ #
+ # @option params [required, String] :stream_id
+ # The streaming session stream ID.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::GetStreamingSessionStreamResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::GetStreamingSessionStreamResponse#stream #stream} => Types::StreamingSessionStream
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.get_streaming_session_stream({
+ # session_id: "String", # required
+ # stream_id: "String", # required
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.stream.created_at #=> Time
+ # resp.stream.created_by #=> String
+ # resp.stream.expires_at #=> Time
+ # resp.stream.owned_by #=> String
+ # resp.stream.state #=> String, one of "READY", "CREATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "DELETED", "CREATE_FAILED", "DELETE_FAILED"
+ # resp.stream.status_code #=> String, one of "STREAM_CREATE_IN_PROGRESS", "STREAM_READY", "STREAM_DELETE_IN_PROGRESS", "STREAM_DELETED", "INTERNAL_ERROR", "NETWORK_CONNECTION_ERROR"
+ # resp.stream.stream_id #=> String
+ # resp.stream.url #=> String
+ #
+ #
+ # The following waiters are defined for this operation (see {Client#wait_until} for detailed usage):
+ #
+ # * streaming_session_stream_ready
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetStreamingSessionStream AWS API Documentation
+ #
+ # @overload get_streaming_session_stream(params = {})
+ # @param [Hash] params ({})
+ def get_streaming_session_stream(params = {}, options = {})
+ req = build_request(:get_streaming_session_stream, params)
+ req.send_request(options)
+ end
+
+ # Get a studio resource.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::GetStudioResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::GetStudioResponse#studio #studio} => Types::Studio
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.get_studio({
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.studio.admin_role_arn #=> String
+ # resp.studio.arn #=> String
+ # resp.studio.created_at #=> Time
+ # resp.studio.display_name #=> String
+ # resp.studio.home_region #=> String
+ # resp.studio.sso_client_id #=> String
+ # resp.studio.state #=> String, one of "CREATE_IN_PROGRESS", "READY", "UPDATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "DELETED", "DELETE_FAILED", "CREATE_FAILED", "UPDATE_FAILED"
+ # resp.studio.status_code #=> String, one of "STUDIO_CREATED", "STUDIO_DELETED", "STUDIO_UPDATED", "STUDIO_CREATE_IN_PROGRESS", "STUDIO_UPDATE_IN_PROGRESS", "STUDIO_DELETE_IN_PROGRESS", "STUDIO_WITH_LAUNCH_PROFILES_NOT_DELETED", "STUDIO_WITH_STUDIO_COMPONENTS_NOT_DELETED", "STUDIO_WITH_STREAMING_IMAGES_NOT_DELETED", "AWS_SSO_NOT_ENABLED", "AWS_SSO_ACCESS_DENIED", "ROLE_NOT_OWNED_BY_STUDIO_OWNER", "ROLE_COULD_NOT_BE_ASSUMED", "INTERNAL_ERROR", "ENCRYPTION_KEY_NOT_FOUND", "ENCRYPTION_KEY_ACCESS_DENIED", "AWS_SSO_CONFIGURATION_REPAIRED", "AWS_SSO_CONFIGURATION_REPAIR_IN_PROGRESS", "AWS_STS_REGION_DISABLED"
+ # resp.studio.status_message #=> String
+ # resp.studio.studio_encryption_configuration.key_arn #=> String
+ # resp.studio.studio_encryption_configuration.key_type #=> String, one of "AWS_OWNED_KEY", "CUSTOMER_MANAGED_KEY"
+ # resp.studio.studio_id #=> String
+ # resp.studio.studio_name #=> String
+ # resp.studio.studio_url #=> String
+ # resp.studio.tags #=> Hash
+ # resp.studio.tags["String"] #=> String
+ # resp.studio.updated_at #=> Time
+ # resp.studio.user_role_arn #=> String
+ #
+ #
+ # The following waiters are defined for this operation (see {Client#wait_until} for detailed usage):
+ #
+ # * studio_deleted
+ # * studio_ready
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetStudio AWS API Documentation
+ #
+ # @overload get_studio(params = {})
+ # @param [Hash] params ({})
+ def get_studio(params = {}, options = {})
+ req = build_request(:get_studio, params)
+ req.send_request(options)
+ end
+
+ # Gets a studio component resource.
+ #
+ # @option params [required, String] :studio_component_id
+ # The studio component ID.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::GetStudioComponentResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::GetStudioComponentResponse#studio_component #studio_component} => Types::StudioComponent
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.get_studio_component({
+ # studio_component_id: "String", # required
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.studio_component.arn #=> String
+ # resp.studio_component.configuration.active_directory_configuration.computer_attributes #=> Array
+ # resp.studio_component.configuration.active_directory_configuration.computer_attributes[0].name #=> String
+ # resp.studio_component.configuration.active_directory_configuration.computer_attributes[0].value #=> String
+ # resp.studio_component.configuration.active_directory_configuration.directory_id #=> String
+ # resp.studio_component.configuration.active_directory_configuration.organizational_unit_distinguished_name #=> String
+ # resp.studio_component.configuration.compute_farm_configuration.active_directory_user #=> String
+ # resp.studio_component.configuration.compute_farm_configuration.endpoint #=> String
+ # resp.studio_component.configuration.license_service_configuration.endpoint #=> String
+ # resp.studio_component.configuration.shared_file_system_configuration.endpoint #=> String
+ # resp.studio_component.configuration.shared_file_system_configuration.file_system_id #=> String
+ # resp.studio_component.configuration.shared_file_system_configuration.linux_mount_point #=> String
+ # resp.studio_component.configuration.shared_file_system_configuration.share_name #=> String
+ # resp.studio_component.configuration.shared_file_system_configuration.windows_mount_drive #=> String
+ # resp.studio_component.created_at #=> Time
+ # resp.studio_component.created_by #=> String
+ # resp.studio_component.description #=> String
+ # resp.studio_component.ec2_security_group_ids #=> Array
+ # resp.studio_component.ec2_security_group_ids[0] #=> String
+ # resp.studio_component.initialization_scripts #=> Array
+ # resp.studio_component.initialization_scripts[0].launch_profile_protocol_version #=> String
+ # resp.studio_component.initialization_scripts[0].platform #=> String, one of "LINUX", "WINDOWS"
+ # resp.studio_component.initialization_scripts[0].run_context #=> String, one of "SYSTEM_INITIALIZATION", "USER_INITIALIZATION"
+ # resp.studio_component.initialization_scripts[0].script #=> String
+ # resp.studio_component.name #=> String
+ # resp.studio_component.runtime_role_arn #=> String
+ # resp.studio_component.script_parameters #=> Array
+ # resp.studio_component.script_parameters[0].key #=> String
+ # resp.studio_component.script_parameters[0].value #=> String
+ # resp.studio_component.secure_initialization_role_arn #=> String
+ # resp.studio_component.state #=> String, one of "CREATE_IN_PROGRESS", "READY", "UPDATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "DELETED", "DELETE_FAILED", "CREATE_FAILED", "UPDATE_FAILED"
+ # resp.studio_component.status_code #=> String, one of "ACTIVE_DIRECTORY_ALREADY_EXISTS", "STUDIO_COMPONENT_CREATED", "STUDIO_COMPONENT_UPDATED", "STUDIO_COMPONENT_DELETED", "ENCRYPTION_KEY_ACCESS_DENIED", "ENCRYPTION_KEY_NOT_FOUND", "STUDIO_COMPONENT_CREATE_IN_PROGRESS", "STUDIO_COMPONENT_UPDATE_IN_PROGRESS", "STUDIO_COMPONENT_DELETE_IN_PROGRESS", "INTERNAL_ERROR"
+ # resp.studio_component.status_message #=> String
+ # resp.studio_component.studio_component_id #=> String
+ # resp.studio_component.subtype #=> String, one of "AWS_MANAGED_MICROSOFT_AD", "AMAZON_FSX_FOR_WINDOWS", "AMAZON_FSX_FOR_LUSTRE", "CUSTOM"
+ # resp.studio_component.tags #=> Hash
+ # resp.studio_component.tags["String"] #=> String
+ # resp.studio_component.type #=> String, one of "ACTIVE_DIRECTORY", "SHARED_FILE_SYSTEM", "COMPUTE_FARM", "LICENSE_SERVICE", "CUSTOM"
+ # resp.studio_component.updated_at #=> Time
+ # resp.studio_component.updated_by #=> String
+ #
+ #
+ # The following waiters are defined for this operation (see {Client#wait_until} for detailed usage):
+ #
+ # * studio_component_deleted
+ # * studio_component_ready
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetStudioComponent AWS API Documentation
+ #
+ # @overload get_studio_component(params = {})
+ # @param [Hash] params ({})
+ def get_studio_component(params = {}, options = {})
+ req = build_request(:get_studio_component, params)
+ req.send_request(options)
+ end
+
+ # Get a user's membership in a studio.
+ #
+ # @option params [required, String] :principal_id
+ # The principal ID. This currently supports a IAM Identity Center
+ # UserId.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::GetStudioMemberResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::GetStudioMemberResponse#member #member} => Types::StudioMembership
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.get_studio_member({
+ # principal_id: "String", # required
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.member.identity_store_id #=> String
+ # resp.member.persona #=> String, one of "ADMINISTRATOR"
+ # resp.member.principal_id #=> String
+ # resp.member.sid #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetStudioMember AWS API Documentation
+ #
+ # @overload get_studio_member(params = {})
+ # @param [Hash] params ({})
+ def get_studio_member(params = {}, options = {})
+ req = build_request(:get_studio_member, params)
+ req.send_request(options)
+ end
+
+ # List EULA acceptances.
+ #
+ # @option params [Array] :eula_ids
+ # The list of EULA IDs that have been previously accepted.
+ #
+ # @option params [String] :next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::ListEulaAcceptancesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::ListEulaAcceptancesResponse#eula_acceptances #eula_acceptances} => Array<Types::EulaAcceptance>
+ # * {Types::ListEulaAcceptancesResponse#next_token #next_token} => String
+ #
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.list_eula_acceptances({
+ # eula_ids: ["String"],
+ # next_token: "String",
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.eula_acceptances #=> Array
+ # resp.eula_acceptances[0].accepted_at #=> Time
+ # resp.eula_acceptances[0].accepted_by #=> String
+ # resp.eula_acceptances[0].acceptee_id #=> String
+ # resp.eula_acceptances[0].eula_acceptance_id #=> String
+ # resp.eula_acceptances[0].eula_id #=> String
+ # resp.next_token #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListEulaAcceptances AWS API Documentation
+ #
+ # @overload list_eula_acceptances(params = {})
+ # @param [Hash] params ({})
+ def list_eula_acceptances(params = {}, options = {})
+ req = build_request(:list_eula_acceptances, params)
+ req.send_request(options)
+ end
+
+ # List EULAs.
+ #
+ # @option params [Array] :eula_ids
+ # The list of EULA IDs that should be returned
+ #
+ # @option params [String] :next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ #
+ # @return [Types::ListEulasResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::ListEulasResponse#eulas #eulas} => Array<Types::Eula>
+ # * {Types::ListEulasResponse#next_token #next_token} => String
+ #
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.list_eulas({
+ # eula_ids: ["String"],
+ # next_token: "String",
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.eulas #=> Array
+ # resp.eulas[0].content #=> String
+ # resp.eulas[0].created_at #=> Time
+ # resp.eulas[0].eula_id #=> String
+ # resp.eulas[0].name #=> String
+ # resp.eulas[0].updated_at #=> Time
+ # resp.next_token #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListEulas AWS API Documentation
+ #
+ # @overload list_eulas(params = {})
+ # @param [Hash] params ({})
+ def list_eulas(params = {}, options = {})
+ req = build_request(:list_eulas, params)
+ req.send_request(options)
+ end
+
+ # Get all users in a given launch profile membership.
+ #
+ # @option params [required, String] :launch_profile_id
+ # The ID of the launch profile used to control access from the streaming
+ # session.
+ #
+ # @option params [Integer] :max_results
+ # The max number of results to return in the response.
+ #
+ # @option params [String] :next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::ListLaunchProfileMembersResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::ListLaunchProfileMembersResponse#members #members} => Array<Types::LaunchProfileMembership>
+ # * {Types::ListLaunchProfileMembersResponse#next_token #next_token} => String
+ #
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.list_launch_profile_members({
+ # launch_profile_id: "String", # required
+ # max_results: 1,
+ # next_token: "String",
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.members #=> Array
+ # resp.members[0].identity_store_id #=> String
+ # resp.members[0].persona #=> String, one of "USER"
+ # resp.members[0].principal_id #=> String
+ # resp.members[0].sid #=> String
+ # resp.next_token #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListLaunchProfileMembers AWS API Documentation
+ #
+ # @overload list_launch_profile_members(params = {})
+ # @param [Hash] params ({})
+ def list_launch_profile_members(params = {}, options = {})
+ req = build_request(:list_launch_profile_members, params)
+ req.send_request(options)
+ end
+
+ # List all the launch profiles a studio.
+ #
+ # @option params [Integer] :max_results
+ # The max number of results to return in the response.
+ #
+ # @option params [String] :next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ #
+ # @option params [String] :principal_id
+ # The principal ID. This currently supports a IAM Identity Center
+ # UserId.
+ #
+ # @option params [Array] :states
+ # Filter this request to launch profiles in any of the given states.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::ListLaunchProfilesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::ListLaunchProfilesResponse#launch_profiles #launch_profiles} => Array<Types::LaunchProfile>
+ # * {Types::ListLaunchProfilesResponse#next_token #next_token} => String
+ #
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.list_launch_profiles({
+ # max_results: 1,
+ # next_token: "String",
+ # principal_id: "String",
+ # states: ["CREATE_IN_PROGRESS"], # accepts CREATE_IN_PROGRESS, READY, UPDATE_IN_PROGRESS, DELETE_IN_PROGRESS, DELETED, DELETE_FAILED, CREATE_FAILED, UPDATE_FAILED
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.launch_profiles #=> Array
+ # resp.launch_profiles[0].arn #=> String
+ # resp.launch_profiles[0].created_at #=> Time
+ # resp.launch_profiles[0].created_by #=> String
+ # resp.launch_profiles[0].description #=> String
+ # resp.launch_profiles[0].ec2_subnet_ids #=> Array
+ # resp.launch_profiles[0].ec2_subnet_ids[0] #=> String
+ # resp.launch_profiles[0].launch_profile_id #=> String
+ # resp.launch_profiles[0].launch_profile_protocol_versions #=> Array
+ # resp.launch_profiles[0].launch_profile_protocol_versions[0] #=> String
+ # resp.launch_profiles[0].name #=> String
+ # resp.launch_profiles[0].state #=> String, one of "CREATE_IN_PROGRESS", "READY", "UPDATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "DELETED", "DELETE_FAILED", "CREATE_FAILED", "UPDATE_FAILED"
+ # resp.launch_profiles[0].status_code #=> String, one of "LAUNCH_PROFILE_CREATED", "LAUNCH_PROFILE_UPDATED", "LAUNCH_PROFILE_DELETED", "LAUNCH_PROFILE_CREATE_IN_PROGRESS", "LAUNCH_PROFILE_UPDATE_IN_PROGRESS", "LAUNCH_PROFILE_DELETE_IN_PROGRESS", "INTERNAL_ERROR", "STREAMING_IMAGE_NOT_FOUND", "STREAMING_IMAGE_NOT_READY", "LAUNCH_PROFILE_WITH_STREAM_SESSIONS_NOT_DELETED", "ENCRYPTION_KEY_ACCESS_DENIED", "ENCRYPTION_KEY_NOT_FOUND", "INVALID_SUBNETS_PROVIDED", "INVALID_INSTANCE_TYPES_PROVIDED", "INVALID_SUBNETS_COMBINATION"
+ # resp.launch_profiles[0].status_message #=> String
+ # resp.launch_profiles[0].stream_configuration.automatic_termination_mode #=> String, one of "DEACTIVATED", "ACTIVATED"
+ # resp.launch_profiles[0].stream_configuration.clipboard_mode #=> String, one of "ENABLED", "DISABLED"
+ # resp.launch_profiles[0].stream_configuration.ec2_instance_types #=> Array
+ # resp.launch_profiles[0].stream_configuration.ec2_instance_types[0] #=> String, one of "g4dn.xlarge", "g4dn.2xlarge", "g4dn.4xlarge", "g4dn.8xlarge", "g4dn.12xlarge", "g4dn.16xlarge", "g3.4xlarge", "g3s.xlarge", "g5.xlarge", "g5.2xlarge", "g5.4xlarge", "g5.8xlarge", "g5.16xlarge"
+ # resp.launch_profiles[0].stream_configuration.max_session_length_in_minutes #=> Integer
+ # resp.launch_profiles[0].stream_configuration.max_stopped_session_length_in_minutes #=> Integer
+ # resp.launch_profiles[0].stream_configuration.session_backup.max_backups_to_retain #=> Integer
+ # resp.launch_profiles[0].stream_configuration.session_backup.mode #=> String, one of "AUTOMATIC", "DEACTIVATED"
+ # resp.launch_profiles[0].stream_configuration.session_persistence_mode #=> String, one of "DEACTIVATED", "ACTIVATED"
+ # resp.launch_profiles[0].stream_configuration.session_storage.mode #=> Array
+ # resp.launch_profiles[0].stream_configuration.session_storage.mode[0] #=> String, one of "UPLOAD"
+ # resp.launch_profiles[0].stream_configuration.session_storage.root.linux #=> String
+ # resp.launch_profiles[0].stream_configuration.session_storage.root.windows #=> String
+ # resp.launch_profiles[0].stream_configuration.streaming_image_ids #=> Array
+ # resp.launch_profiles[0].stream_configuration.streaming_image_ids[0] #=> String
+ # resp.launch_profiles[0].stream_configuration.volume_configuration.iops #=> Integer
+ # resp.launch_profiles[0].stream_configuration.volume_configuration.size #=> Integer
+ # resp.launch_profiles[0].stream_configuration.volume_configuration.throughput #=> Integer
+ # resp.launch_profiles[0].studio_component_ids #=> Array
+ # resp.launch_profiles[0].studio_component_ids[0] #=> String
+ # resp.launch_profiles[0].tags #=> Hash
+ # resp.launch_profiles[0].tags["String"] #=> String
+ # resp.launch_profiles[0].updated_at #=> Time
+ # resp.launch_profiles[0].updated_by #=> String
+ # resp.launch_profiles[0].validation_results #=> Array
+ # resp.launch_profiles[0].validation_results[0].state #=> String, one of "VALIDATION_NOT_STARTED", "VALIDATION_IN_PROGRESS", "VALIDATION_SUCCESS", "VALIDATION_FAILED", "VALIDATION_FAILED_INTERNAL_SERVER_ERROR"
+ # resp.launch_profiles[0].validation_results[0].status_code #=> String, one of "VALIDATION_NOT_STARTED", "VALIDATION_IN_PROGRESS", "VALIDATION_SUCCESS", "VALIDATION_FAILED_INVALID_SUBNET_ROUTE_TABLE_ASSOCIATION", "VALIDATION_FAILED_SUBNET_NOT_FOUND", "VALIDATION_FAILED_INVALID_SECURITY_GROUP_ASSOCIATION", "VALIDATION_FAILED_INVALID_ACTIVE_DIRECTORY", "VALIDATION_FAILED_UNAUTHORIZED", "VALIDATION_FAILED_INTERNAL_SERVER_ERROR"
+ # resp.launch_profiles[0].validation_results[0].status_message #=> String
+ # resp.launch_profiles[0].validation_results[0].type #=> String, one of "VALIDATE_ACTIVE_DIRECTORY_STUDIO_COMPONENT", "VALIDATE_SUBNET_ASSOCIATION", "VALIDATE_NETWORK_ACL_ASSOCIATION", "VALIDATE_SECURITY_GROUP_ASSOCIATION"
+ # resp.next_token #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListLaunchProfiles AWS API Documentation
+ #
+ # @overload list_launch_profiles(params = {})
+ # @param [Hash] params ({})
+ def list_launch_profiles(params = {}, options = {})
+ req = build_request(:list_launch_profiles, params)
+ req.send_request(options)
+ end
+
+ # List the streaming image resources available to this studio.
+ #
+ # This list will contain both images provided by Amazon Web Services, as
+ # well as streaming images that you have created in your studio.
+ #
+ # @option params [String] :next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ #
+ # @option params [String] :owner
+ # Filter this request to streaming images with the given owner
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::ListStreamingImagesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::ListStreamingImagesResponse#next_token #next_token} => String
+ # * {Types::ListStreamingImagesResponse#streaming_images #streaming_images} => Array<Types::StreamingImage>
+ #
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.list_streaming_images({
+ # next_token: "String",
+ # owner: "String",
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.next_token #=> String
+ # resp.streaming_images #=> Array
+ # resp.streaming_images[0].arn #=> String
+ # resp.streaming_images[0].description #=> String
+ # resp.streaming_images[0].ec2_image_id #=> String
+ # resp.streaming_images[0].encryption_configuration.key_arn #=> String
+ # resp.streaming_images[0].encryption_configuration.key_type #=> String, one of "CUSTOMER_MANAGED_KEY"
+ # resp.streaming_images[0].eula_ids #=> Array
+ # resp.streaming_images[0].eula_ids[0] #=> String
+ # resp.streaming_images[0].name #=> String
+ # resp.streaming_images[0].owner #=> String
+ # resp.streaming_images[0].platform #=> String
+ # resp.streaming_images[0].state #=> String, one of "CREATE_IN_PROGRESS", "READY", "DELETE_IN_PROGRESS", "DELETED", "UPDATE_IN_PROGRESS", "UPDATE_FAILED", "CREATE_FAILED", "DELETE_FAILED"
+ # resp.streaming_images[0].status_code #=> String, one of "STREAMING_IMAGE_CREATE_IN_PROGRESS", "STREAMING_IMAGE_READY", "STREAMING_IMAGE_DELETE_IN_PROGRESS", "STREAMING_IMAGE_DELETED", "STREAMING_IMAGE_UPDATE_IN_PROGRESS", "INTERNAL_ERROR", "ACCESS_DENIED"
+ # resp.streaming_images[0].status_message #=> String
+ # resp.streaming_images[0].streaming_image_id #=> String
+ # resp.streaming_images[0].tags #=> Hash
+ # resp.streaming_images[0].tags["String"] #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListStreamingImages AWS API Documentation
+ #
+ # @overload list_streaming_images(params = {})
+ # @param [Hash] params ({})
+ def list_streaming_images(params = {}, options = {})
+ req = build_request(:list_streaming_images, params)
+ req.send_request(options)
+ end
+
+ # Lists the backups of a streaming session in a studio.
+ #
+ # @option params [String] :next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ #
+ # @option params [String] :owned_by
+ # The user ID of the user that owns the streaming session.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::ListStreamingSessionBackupsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::ListStreamingSessionBackupsResponse#next_token #next_token} => String
+ # * {Types::ListStreamingSessionBackupsResponse#streaming_session_backups #streaming_session_backups} => Array<Types::StreamingSessionBackup>
+ #
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.list_streaming_session_backups({
+ # next_token: "String",
+ # owned_by: "String",
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.next_token #=> String
+ # resp.streaming_session_backups #=> Array
+ # resp.streaming_session_backups[0].arn #=> String
+ # resp.streaming_session_backups[0].backup_id #=> String
+ # resp.streaming_session_backups[0].created_at #=> Time
+ # resp.streaming_session_backups[0].launch_profile_id #=> String
+ # resp.streaming_session_backups[0].owned_by #=> String
+ # resp.streaming_session_backups[0].session_id #=> String
+ # resp.streaming_session_backups[0].state #=> String, one of "CREATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "READY", "DELETED", "CREATE_FAILED", "DELETE_FAILED", "STOP_IN_PROGRESS", "START_IN_PROGRESS", "STOPPED", "STOP_FAILED", "START_FAILED"
+ # resp.streaming_session_backups[0].status_code #=> String, one of "STREAMING_SESSION_READY", "STREAMING_SESSION_DELETED", "STREAMING_SESSION_CREATE_IN_PROGRESS", "STREAMING_SESSION_DELETE_IN_PROGRESS", "INTERNAL_ERROR", "INSUFFICIENT_CAPACITY", "ACTIVE_DIRECTORY_DOMAIN_JOIN_ERROR", "NETWORK_CONNECTION_ERROR", "INITIALIZATION_SCRIPT_ERROR", "DECRYPT_STREAMING_IMAGE_ERROR", "NETWORK_INTERFACE_ERROR", "STREAMING_SESSION_STOPPED", "STREAMING_SESSION_STARTED", "STREAMING_SESSION_STOP_IN_PROGRESS", "STREAMING_SESSION_START_IN_PROGRESS", "AMI_VALIDATION_ERROR"
+ # resp.streaming_session_backups[0].status_message #=> String
+ # resp.streaming_session_backups[0].tags #=> Hash
+ # resp.streaming_session_backups[0].tags["String"] #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListStreamingSessionBackups AWS API Documentation
+ #
+ # @overload list_streaming_session_backups(params = {})
+ # @param [Hash] params ({})
+ def list_streaming_session_backups(params = {}, options = {})
+ req = build_request(:list_streaming_session_backups, params)
+ req.send_request(options)
+ end
+
+ # Lists the streaming sessions in a studio.
+ #
+ # @option params [String] :created_by
+ # Filters the request to streaming sessions created by the given user.
+ #
+ # @option params [String] :next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ #
+ # @option params [String] :owned_by
+ # Filters the request to streaming session owned by the given user
+ #
+ # @option params [String] :session_ids
+ # Filters the request to only the provided session IDs.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::ListStreamingSessionsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::ListStreamingSessionsResponse#next_token #next_token} => String
+ # * {Types::ListStreamingSessionsResponse#sessions #sessions} => Array<Types::StreamingSession>
+ #
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.list_streaming_sessions({
+ # created_by: "String",
+ # next_token: "String",
+ # owned_by: "String",
+ # session_ids: "String",
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.next_token #=> String
+ # resp.sessions #=> Array
+ # resp.sessions[0].arn #=> String
+ # resp.sessions[0].automatic_termination_mode #=> String, one of "DEACTIVATED", "ACTIVATED"
+ # resp.sessions[0].backup_mode #=> String, one of "AUTOMATIC", "DEACTIVATED"
+ # resp.sessions[0].created_at #=> Time
+ # resp.sessions[0].created_by #=> String
+ # resp.sessions[0].ec2_instance_type #=> String
+ # resp.sessions[0].launch_profile_id #=> String
+ # resp.sessions[0].max_backups_to_retain #=> Integer
+ # resp.sessions[0].owned_by #=> String
+ # resp.sessions[0].session_id #=> String
+ # resp.sessions[0].session_persistence_mode #=> String, one of "DEACTIVATED", "ACTIVATED"
+ # resp.sessions[0].started_at #=> Time
+ # resp.sessions[0].started_by #=> String
+ # resp.sessions[0].started_from_backup_id #=> String
+ # resp.sessions[0].state #=> String, one of "CREATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "READY", "DELETED", "CREATE_FAILED", "DELETE_FAILED", "STOP_IN_PROGRESS", "START_IN_PROGRESS", "STOPPED", "STOP_FAILED", "START_FAILED"
+ # resp.sessions[0].status_code #=> String, one of "STREAMING_SESSION_READY", "STREAMING_SESSION_DELETED", "STREAMING_SESSION_CREATE_IN_PROGRESS", "STREAMING_SESSION_DELETE_IN_PROGRESS", "INTERNAL_ERROR", "INSUFFICIENT_CAPACITY", "ACTIVE_DIRECTORY_DOMAIN_JOIN_ERROR", "NETWORK_CONNECTION_ERROR", "INITIALIZATION_SCRIPT_ERROR", "DECRYPT_STREAMING_IMAGE_ERROR", "NETWORK_INTERFACE_ERROR", "STREAMING_SESSION_STOPPED", "STREAMING_SESSION_STARTED", "STREAMING_SESSION_STOP_IN_PROGRESS", "STREAMING_SESSION_START_IN_PROGRESS", "AMI_VALIDATION_ERROR"
+ # resp.sessions[0].status_message #=> String
+ # resp.sessions[0].stop_at #=> Time
+ # resp.sessions[0].stopped_at #=> Time
+ # resp.sessions[0].stopped_by #=> String
+ # resp.sessions[0].streaming_image_id #=> String
+ # resp.sessions[0].tags #=> Hash
+ # resp.sessions[0].tags["String"] #=> String
+ # resp.sessions[0].terminate_at #=> Time
+ # resp.sessions[0].updated_at #=> Time
+ # resp.sessions[0].updated_by #=> String
+ # resp.sessions[0].volume_configuration.iops #=> Integer
+ # resp.sessions[0].volume_configuration.size #=> Integer
+ # resp.sessions[0].volume_configuration.throughput #=> Integer
+ # resp.sessions[0].volume_retention_mode #=> String, one of "RETAIN", "DELETE"
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListStreamingSessions AWS API Documentation
+ #
+ # @overload list_streaming_sessions(params = {})
+ # @param [Hash] params ({})
+ def list_streaming_sessions(params = {}, options = {})
+ req = build_request(:list_streaming_sessions, params)
+ req.send_request(options)
+ end
+
+ # Lists the `StudioComponents` in a studio.
+ #
+ # @option params [Integer] :max_results
+ # The max number of results to return in the response.
+ #
+ # @option params [String] :next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ #
+ # @option params [Array] :states
+ # Filters the request to studio components that are in one of the given
+ # states.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @option params [Array] :types
+ # Filters the request to studio components that are of one of the given
+ # types.
+ #
+ # @return [Types::ListStudioComponentsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::ListStudioComponentsResponse#next_token #next_token} => String
+ # * {Types::ListStudioComponentsResponse#studio_components #studio_components} => Array<Types::StudioComponent>
+ #
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.list_studio_components({
+ # max_results: 1,
+ # next_token: "String",
+ # states: ["CREATE_IN_PROGRESS"], # accepts CREATE_IN_PROGRESS, READY, UPDATE_IN_PROGRESS, DELETE_IN_PROGRESS, DELETED, DELETE_FAILED, CREATE_FAILED, UPDATE_FAILED
+ # studio_id: "String", # required
+ # types: ["ACTIVE_DIRECTORY"], # accepts ACTIVE_DIRECTORY, SHARED_FILE_SYSTEM, COMPUTE_FARM, LICENSE_SERVICE, CUSTOM
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.next_token #=> String
+ # resp.studio_components #=> Array
+ # resp.studio_components[0].arn #=> String
+ # resp.studio_components[0].configuration.active_directory_configuration.computer_attributes #=> Array
+ # resp.studio_components[0].configuration.active_directory_configuration.computer_attributes[0].name #=> String
+ # resp.studio_components[0].configuration.active_directory_configuration.computer_attributes[0].value #=> String
+ # resp.studio_components[0].configuration.active_directory_configuration.directory_id #=> String
+ # resp.studio_components[0].configuration.active_directory_configuration.organizational_unit_distinguished_name #=> String
+ # resp.studio_components[0].configuration.compute_farm_configuration.active_directory_user #=> String
+ # resp.studio_components[0].configuration.compute_farm_configuration.endpoint #=> String
+ # resp.studio_components[0].configuration.license_service_configuration.endpoint #=> String
+ # resp.studio_components[0].configuration.shared_file_system_configuration.endpoint #=> String
+ # resp.studio_components[0].configuration.shared_file_system_configuration.file_system_id #=> String
+ # resp.studio_components[0].configuration.shared_file_system_configuration.linux_mount_point #=> String
+ # resp.studio_components[0].configuration.shared_file_system_configuration.share_name #=> String
+ # resp.studio_components[0].configuration.shared_file_system_configuration.windows_mount_drive #=> String
+ # resp.studio_components[0].created_at #=> Time
+ # resp.studio_components[0].created_by #=> String
+ # resp.studio_components[0].description #=> String
+ # resp.studio_components[0].ec2_security_group_ids #=> Array
+ # resp.studio_components[0].ec2_security_group_ids[0] #=> String
+ # resp.studio_components[0].initialization_scripts #=> Array
+ # resp.studio_components[0].initialization_scripts[0].launch_profile_protocol_version #=> String
+ # resp.studio_components[0].initialization_scripts[0].platform #=> String, one of "LINUX", "WINDOWS"
+ # resp.studio_components[0].initialization_scripts[0].run_context #=> String, one of "SYSTEM_INITIALIZATION", "USER_INITIALIZATION"
+ # resp.studio_components[0].initialization_scripts[0].script #=> String
+ # resp.studio_components[0].name #=> String
+ # resp.studio_components[0].runtime_role_arn #=> String
+ # resp.studio_components[0].script_parameters #=> Array
+ # resp.studio_components[0].script_parameters[0].key #=> String
+ # resp.studio_components[0].script_parameters[0].value #=> String
+ # resp.studio_components[0].secure_initialization_role_arn #=> String
+ # resp.studio_components[0].state #=> String, one of "CREATE_IN_PROGRESS", "READY", "UPDATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "DELETED", "DELETE_FAILED", "CREATE_FAILED", "UPDATE_FAILED"
+ # resp.studio_components[0].status_code #=> String, one of "ACTIVE_DIRECTORY_ALREADY_EXISTS", "STUDIO_COMPONENT_CREATED", "STUDIO_COMPONENT_UPDATED", "STUDIO_COMPONENT_DELETED", "ENCRYPTION_KEY_ACCESS_DENIED", "ENCRYPTION_KEY_NOT_FOUND", "STUDIO_COMPONENT_CREATE_IN_PROGRESS", "STUDIO_COMPONENT_UPDATE_IN_PROGRESS", "STUDIO_COMPONENT_DELETE_IN_PROGRESS", "INTERNAL_ERROR"
+ # resp.studio_components[0].status_message #=> String
+ # resp.studio_components[0].studio_component_id #=> String
+ # resp.studio_components[0].subtype #=> String, one of "AWS_MANAGED_MICROSOFT_AD", "AMAZON_FSX_FOR_WINDOWS", "AMAZON_FSX_FOR_LUSTRE", "CUSTOM"
+ # resp.studio_components[0].tags #=> Hash
+ # resp.studio_components[0].tags["String"] #=> String
+ # resp.studio_components[0].type #=> String, one of "ACTIVE_DIRECTORY", "SHARED_FILE_SYSTEM", "COMPUTE_FARM", "LICENSE_SERVICE", "CUSTOM"
+ # resp.studio_components[0].updated_at #=> Time
+ # resp.studio_components[0].updated_by #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListStudioComponents AWS API Documentation
+ #
+ # @overload list_studio_components(params = {})
+ # @param [Hash] params ({})
+ def list_studio_components(params = {}, options = {})
+ req = build_request(:list_studio_components, params)
+ req.send_request(options)
+ end
+
+ # Get all users in a given studio membership.
+ #
+ # `ListStudioMembers` only returns admin members.
+ #
+ #
+ #
+ # @option params [Integer] :max_results
+ # The max number of results to return in the response.
+ #
+ # @option params [String] :next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::ListStudioMembersResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::ListStudioMembersResponse#members #members} => Array<Types::StudioMembership>
+ # * {Types::ListStudioMembersResponse#next_token #next_token} => String
+ #
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.list_studio_members({
+ # max_results: 1,
+ # next_token: "String",
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.members #=> Array
+ # resp.members[0].identity_store_id #=> String
+ # resp.members[0].persona #=> String, one of "ADMINISTRATOR"
+ # resp.members[0].principal_id #=> String
+ # resp.members[0].sid #=> String
+ # resp.next_token #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListStudioMembers AWS API Documentation
+ #
+ # @overload list_studio_members(params = {})
+ # @param [Hash] params ({})
+ def list_studio_members(params = {}, options = {})
+ req = build_request(:list_studio_members, params)
+ req.send_request(options)
+ end
+
+ # List studios in your Amazon Web Services accounts in the requested
+ # Amazon Web Services Region.
+ #
+ # @option params [String] :next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ #
+ # @return [Types::ListStudiosResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::ListStudiosResponse#next_token #next_token} => String
+ # * {Types::ListStudiosResponse#studios #studios} => Array<Types::Studio>
+ #
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.list_studios({
+ # next_token: "String",
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.next_token #=> String
+ # resp.studios #=> Array
+ # resp.studios[0].admin_role_arn #=> String
+ # resp.studios[0].arn #=> String
+ # resp.studios[0].created_at #=> Time
+ # resp.studios[0].display_name #=> String
+ # resp.studios[0].home_region #=> String
+ # resp.studios[0].sso_client_id #=> String
+ # resp.studios[0].state #=> String, one of "CREATE_IN_PROGRESS", "READY", "UPDATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "DELETED", "DELETE_FAILED", "CREATE_FAILED", "UPDATE_FAILED"
+ # resp.studios[0].status_code #=> String, one of "STUDIO_CREATED", "STUDIO_DELETED", "STUDIO_UPDATED", "STUDIO_CREATE_IN_PROGRESS", "STUDIO_UPDATE_IN_PROGRESS", "STUDIO_DELETE_IN_PROGRESS", "STUDIO_WITH_LAUNCH_PROFILES_NOT_DELETED", "STUDIO_WITH_STUDIO_COMPONENTS_NOT_DELETED", "STUDIO_WITH_STREAMING_IMAGES_NOT_DELETED", "AWS_SSO_NOT_ENABLED", "AWS_SSO_ACCESS_DENIED", "ROLE_NOT_OWNED_BY_STUDIO_OWNER", "ROLE_COULD_NOT_BE_ASSUMED", "INTERNAL_ERROR", "ENCRYPTION_KEY_NOT_FOUND", "ENCRYPTION_KEY_ACCESS_DENIED", "AWS_SSO_CONFIGURATION_REPAIRED", "AWS_SSO_CONFIGURATION_REPAIR_IN_PROGRESS", "AWS_STS_REGION_DISABLED"
+ # resp.studios[0].status_message #=> String
+ # resp.studios[0].studio_encryption_configuration.key_arn #=> String
+ # resp.studios[0].studio_encryption_configuration.key_type #=> String, one of "AWS_OWNED_KEY", "CUSTOMER_MANAGED_KEY"
+ # resp.studios[0].studio_id #=> String
+ # resp.studios[0].studio_name #=> String
+ # resp.studios[0].studio_url #=> String
+ # resp.studios[0].tags #=> Hash
+ # resp.studios[0].tags["String"] #=> String
+ # resp.studios[0].updated_at #=> Time
+ # resp.studios[0].user_role_arn #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListStudios AWS API Documentation
+ #
+ # @overload list_studios(params = {})
+ # @param [Hash] params ({})
+ def list_studios(params = {}, options = {})
+ req = build_request(:list_studios, params)
+ req.send_request(options)
+ end
+
+ # Gets the tags for a resource, given its Amazon Resource Names (ARN).
+ #
+ # This operation supports ARNs for all resource types in Nimble Studio
+ # that support tags, including studio, studio component, launch profile,
+ # streaming image, and streaming session. All resources that can be
+ # tagged will contain an ARN property, so you do not have to create this
+ # ARN yourself.
+ #
+ # @option params [required, String] :resource_arn
+ # The Amazon Resource Name (ARN) of the resource for which you want to
+ # list tags.
+ #
+ # @return [Types::ListTagsForResourceResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::ListTagsForResourceResponse#tags #tags} => Hash<String,String>
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.list_tags_for_resource({
+ # resource_arn: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.tags #=> Hash
+ # resp.tags["String"] #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListTagsForResource AWS API Documentation
+ #
+ # @overload list_tags_for_resource(params = {})
+ # @param [Hash] params ({})
+ def list_tags_for_resource(params = {}, options = {})
+ req = build_request(:list_tags_for_resource, params)
+ req.send_request(options)
+ end
+
+ # Add/update users with given persona to launch profile membership.
+ #
+ # @option params [String] :client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.**
+ #
+ # @option params [required, String] :identity_store_id
+ # The ID of the identity store.
+ #
+ # @option params [required, String] :launch_profile_id
+ # The ID of the launch profile used to control access from the streaming
+ # session.
+ #
+ # @option params [required, Array] :members
+ # A list of members.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.put_launch_profile_members({
+ # client_token: "ClientToken",
+ # identity_store_id: "String", # required
+ # launch_profile_id: "String", # required
+ # members: [ # required
+ # {
+ # persona: "USER", # required, accepts USER
+ # principal_id: "String", # required
+ # },
+ # ],
+ # studio_id: "String", # required
+ # })
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/PutLaunchProfileMembers AWS API Documentation
+ #
+ # @overload put_launch_profile_members(params = {})
+ # @param [Hash] params ({})
+ def put_launch_profile_members(params = {}, options = {})
+ req = build_request(:put_launch_profile_members, params)
+ req.send_request(options)
+ end
+
+ # Add/update users with given persona to studio membership.
+ #
+ # @option params [String] :client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.**
+ #
+ # @option params [required, String] :identity_store_id
+ # The ID of the identity store.
+ #
+ # @option params [required, Array] :members
+ # A list of members.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.put_studio_members({
+ # client_token: "ClientToken",
+ # identity_store_id: "String", # required
+ # members: [ # required
+ # {
+ # persona: "ADMINISTRATOR", # required, accepts ADMINISTRATOR
+ # principal_id: "String", # required
+ # },
+ # ],
+ # studio_id: "String", # required
+ # })
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/PutStudioMembers AWS API Documentation
+ #
+ # @overload put_studio_members(params = {})
+ # @param [Hash] params ({})
+ def put_studio_members(params = {}, options = {})
+ req = build_request(:put_studio_members, params)
+ req.send_request(options)
+ end
+
+ # Transitions sessions from the `STOPPED` state into the `READY` state.
+ # The `START_IN_PROGRESS` state is the intermediate state between the
+ # `STOPPED` and `READY` states.
+ #
+ # @option params [String] :backup_id
+ # The ID of the backup.
+ #
+ # @option params [String] :client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.**
+ #
+ # @option params [required, String] :session_id
+ # The streaming session ID for the `StartStreamingSessionRequest`.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID for the StartStreamingSessionRequest.
+ #
+ # @return [Types::StartStreamingSessionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::StartStreamingSessionResponse#session #session} => Types::StreamingSession
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.start_streaming_session({
+ # backup_id: "String",
+ # client_token: "ClientToken",
+ # session_id: "String", # required
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.session.arn #=> String
+ # resp.session.automatic_termination_mode #=> String, one of "DEACTIVATED", "ACTIVATED"
+ # resp.session.backup_mode #=> String, one of "AUTOMATIC", "DEACTIVATED"
+ # resp.session.created_at #=> Time
+ # resp.session.created_by #=> String
+ # resp.session.ec2_instance_type #=> String
+ # resp.session.launch_profile_id #=> String
+ # resp.session.max_backups_to_retain #=> Integer
+ # resp.session.owned_by #=> String
+ # resp.session.session_id #=> String
+ # resp.session.session_persistence_mode #=> String, one of "DEACTIVATED", "ACTIVATED"
+ # resp.session.started_at #=> Time
+ # resp.session.started_by #=> String
+ # resp.session.started_from_backup_id #=> String
+ # resp.session.state #=> String, one of "CREATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "READY", "DELETED", "CREATE_FAILED", "DELETE_FAILED", "STOP_IN_PROGRESS", "START_IN_PROGRESS", "STOPPED", "STOP_FAILED", "START_FAILED"
+ # resp.session.status_code #=> String, one of "STREAMING_SESSION_READY", "STREAMING_SESSION_DELETED", "STREAMING_SESSION_CREATE_IN_PROGRESS", "STREAMING_SESSION_DELETE_IN_PROGRESS", "INTERNAL_ERROR", "INSUFFICIENT_CAPACITY", "ACTIVE_DIRECTORY_DOMAIN_JOIN_ERROR", "NETWORK_CONNECTION_ERROR", "INITIALIZATION_SCRIPT_ERROR", "DECRYPT_STREAMING_IMAGE_ERROR", "NETWORK_INTERFACE_ERROR", "STREAMING_SESSION_STOPPED", "STREAMING_SESSION_STARTED", "STREAMING_SESSION_STOP_IN_PROGRESS", "STREAMING_SESSION_START_IN_PROGRESS", "AMI_VALIDATION_ERROR"
+ # resp.session.status_message #=> String
+ # resp.session.stop_at #=> Time
+ # resp.session.stopped_at #=> Time
+ # resp.session.stopped_by #=> String
+ # resp.session.streaming_image_id #=> String
+ # resp.session.tags #=> Hash
+ # resp.session.tags["String"] #=> String
+ # resp.session.terminate_at #=> Time
+ # resp.session.updated_at #=> Time
+ # resp.session.updated_by #=> String
+ # resp.session.volume_configuration.iops #=> Integer
+ # resp.session.volume_configuration.size #=> Integer
+ # resp.session.volume_configuration.throughput #=> Integer
+ # resp.session.volume_retention_mode #=> String, one of "RETAIN", "DELETE"
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/StartStreamingSession AWS API Documentation
+ #
+ # @overload start_streaming_session(params = {})
+ # @param [Hash] params ({})
+ def start_streaming_session(params = {}, options = {})
+ req = build_request(:start_streaming_session, params)
+ req.send_request(options)
+ end
+
+ # Repairs the IAM Identity Center configuration for a given studio.
+ #
+ # If the studio has a valid IAM Identity Center configuration currently
+ # associated with it, this operation will fail with a validation error.
+ #
+ # If the studio does not have a valid IAM Identity Center configuration
+ # currently associated with it, then a new IAM Identity Center
+ # application is created for the studio and the studio is changed to the
+ # `READY` state.
+ #
+ # After the IAM Identity Center application is repaired, you must use
+ # the Amazon Nimble Studio console to add administrators and users to
+ # your studio.
+ #
+ # @option params [String] :client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.**
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::StartStudioSSOConfigurationRepairResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::StartStudioSSOConfigurationRepairResponse#studio #studio} => Types::Studio
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.start_studio_sso_configuration_repair({
+ # client_token: "ClientToken",
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.studio.admin_role_arn #=> String
+ # resp.studio.arn #=> String
+ # resp.studio.created_at #=> Time
+ # resp.studio.display_name #=> String
+ # resp.studio.home_region #=> String
+ # resp.studio.sso_client_id #=> String
+ # resp.studio.state #=> String, one of "CREATE_IN_PROGRESS", "READY", "UPDATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "DELETED", "DELETE_FAILED", "CREATE_FAILED", "UPDATE_FAILED"
+ # resp.studio.status_code #=> String, one of "STUDIO_CREATED", "STUDIO_DELETED", "STUDIO_UPDATED", "STUDIO_CREATE_IN_PROGRESS", "STUDIO_UPDATE_IN_PROGRESS", "STUDIO_DELETE_IN_PROGRESS", "STUDIO_WITH_LAUNCH_PROFILES_NOT_DELETED", "STUDIO_WITH_STUDIO_COMPONENTS_NOT_DELETED", "STUDIO_WITH_STREAMING_IMAGES_NOT_DELETED", "AWS_SSO_NOT_ENABLED", "AWS_SSO_ACCESS_DENIED", "ROLE_NOT_OWNED_BY_STUDIO_OWNER", "ROLE_COULD_NOT_BE_ASSUMED", "INTERNAL_ERROR", "ENCRYPTION_KEY_NOT_FOUND", "ENCRYPTION_KEY_ACCESS_DENIED", "AWS_SSO_CONFIGURATION_REPAIRED", "AWS_SSO_CONFIGURATION_REPAIR_IN_PROGRESS", "AWS_STS_REGION_DISABLED"
+ # resp.studio.status_message #=> String
+ # resp.studio.studio_encryption_configuration.key_arn #=> String
+ # resp.studio.studio_encryption_configuration.key_type #=> String, one of "AWS_OWNED_KEY", "CUSTOMER_MANAGED_KEY"
+ # resp.studio.studio_id #=> String
+ # resp.studio.studio_name #=> String
+ # resp.studio.studio_url #=> String
+ # resp.studio.tags #=> Hash
+ # resp.studio.tags["String"] #=> String
+ # resp.studio.updated_at #=> Time
+ # resp.studio.user_role_arn #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/StartStudioSSOConfigurationRepair AWS API Documentation
+ #
+ # @overload start_studio_sso_configuration_repair(params = {})
+ # @param [Hash] params ({})
+ def start_studio_sso_configuration_repair(params = {}, options = {})
+ req = build_request(:start_studio_sso_configuration_repair, params)
+ req.send_request(options)
+ end
+
+ # Transitions sessions from the `READY` state into the `STOPPED` state.
+ # The `STOP_IN_PROGRESS` state is the intermediate state between the
+ # `READY` and `STOPPED` states.
+ #
+ # @option params [String] :client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.**
+ #
+ # @option params [required, String] :session_id
+ # The streaming session ID for the `StopStreamingSessionRequest`.
+ #
+ # @option params [required, String] :studio_id
+ # The studioId for the StopStreamingSessionRequest.
+ #
+ # @option params [String] :volume_retention_mode
+ # Adds additional instructions to a streaming session stop action to
+ # either retain the EBS volumes or delete the EBS volumes.
+ #
+ # @return [Types::StopStreamingSessionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::StopStreamingSessionResponse#session #session} => Types::StreamingSession
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.stop_streaming_session({
+ # client_token: "ClientToken",
+ # session_id: "String", # required
+ # studio_id: "String", # required
+ # volume_retention_mode: "RETAIN", # accepts RETAIN, DELETE
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.session.arn #=> String
+ # resp.session.automatic_termination_mode #=> String, one of "DEACTIVATED", "ACTIVATED"
+ # resp.session.backup_mode #=> String, one of "AUTOMATIC", "DEACTIVATED"
+ # resp.session.created_at #=> Time
+ # resp.session.created_by #=> String
+ # resp.session.ec2_instance_type #=> String
+ # resp.session.launch_profile_id #=> String
+ # resp.session.max_backups_to_retain #=> Integer
+ # resp.session.owned_by #=> String
+ # resp.session.session_id #=> String
+ # resp.session.session_persistence_mode #=> String, one of "DEACTIVATED", "ACTIVATED"
+ # resp.session.started_at #=> Time
+ # resp.session.started_by #=> String
+ # resp.session.started_from_backup_id #=> String
+ # resp.session.state #=> String, one of "CREATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "READY", "DELETED", "CREATE_FAILED", "DELETE_FAILED", "STOP_IN_PROGRESS", "START_IN_PROGRESS", "STOPPED", "STOP_FAILED", "START_FAILED"
+ # resp.session.status_code #=> String, one of "STREAMING_SESSION_READY", "STREAMING_SESSION_DELETED", "STREAMING_SESSION_CREATE_IN_PROGRESS", "STREAMING_SESSION_DELETE_IN_PROGRESS", "INTERNAL_ERROR", "INSUFFICIENT_CAPACITY", "ACTIVE_DIRECTORY_DOMAIN_JOIN_ERROR", "NETWORK_CONNECTION_ERROR", "INITIALIZATION_SCRIPT_ERROR", "DECRYPT_STREAMING_IMAGE_ERROR", "NETWORK_INTERFACE_ERROR", "STREAMING_SESSION_STOPPED", "STREAMING_SESSION_STARTED", "STREAMING_SESSION_STOP_IN_PROGRESS", "STREAMING_SESSION_START_IN_PROGRESS", "AMI_VALIDATION_ERROR"
+ # resp.session.status_message #=> String
+ # resp.session.stop_at #=> Time
+ # resp.session.stopped_at #=> Time
+ # resp.session.stopped_by #=> String
+ # resp.session.streaming_image_id #=> String
+ # resp.session.tags #=> Hash
+ # resp.session.tags["String"] #=> String
+ # resp.session.terminate_at #=> Time
+ # resp.session.updated_at #=> Time
+ # resp.session.updated_by #=> String
+ # resp.session.volume_configuration.iops #=> Integer
+ # resp.session.volume_configuration.size #=> Integer
+ # resp.session.volume_configuration.throughput #=> Integer
+ # resp.session.volume_retention_mode #=> String, one of "RETAIN", "DELETE"
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/StopStreamingSession AWS API Documentation
+ #
+ # @overload stop_streaming_session(params = {})
+ # @param [Hash] params ({})
+ def stop_streaming_session(params = {}, options = {})
+ req = build_request(:stop_streaming_session, params)
+ req.send_request(options)
+ end
+
+ # Creates tags for a resource, given its ARN.
+ #
+ # @option params [required, String] :resource_arn
+ # The Amazon Resource Name (ARN) of the resource you want to add tags
+ # to.
+ #
+ # @option params [Hash] :tags
+ # A collection of labels, in the form of key-value pairs, that apply to
+ # this resource.
+ #
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.tag_resource({
+ # resource_arn: "String", # required
+ # tags: {
+ # "String" => "String",
+ # },
+ # })
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/TagResource AWS API Documentation
+ #
+ # @overload tag_resource(params = {})
+ # @param [Hash] params ({})
+ def tag_resource(params = {}, options = {})
+ req = build_request(:tag_resource, params)
+ req.send_request(options)
+ end
+
+ # Deletes the tags for a resource.
+ #
+ # @option params [required, String] :resource_arn
+ # Identifies the Amazon Resource Name(ARN) key from which you are
+ # removing tags.
+ #
+ # @option params [required, Array] :tag_keys
+ # One or more tag keys. Specify only the tag keys, not the tag values.
+ #
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.untag_resource({
+ # resource_arn: "String", # required
+ # tag_keys: ["String"], # required
+ # })
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/UntagResource AWS API Documentation
+ #
+ # @overload untag_resource(params = {})
+ # @param [Hash] params ({})
+ def untag_resource(params = {}, options = {})
+ req = build_request(:untag_resource, params)
+ req.send_request(options)
+ end
+
+ # Update a launch profile.
+ #
+ # @option params [String] :client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.**
+ #
+ # @option params [String] :description
+ # The description.
+ #
+ # @option params [required, String] :launch_profile_id
+ # The ID of the launch profile used to control access from the streaming
+ # session.
+ #
+ # @option params [Array] :launch_profile_protocol_versions
+ # The version number of the protocol that is used by the launch profile.
+ # The only valid version is "2021-03-31".
+ #
+ # @option params [String] :name
+ # The name for the launch profile.
+ #
+ # @option params [Types::StreamConfigurationCreate] :stream_configuration
+ # A configuration for a streaming session.
+ #
+ # @option params [Array] :studio_component_ids
+ # Unique identifiers for a collection of studio components that can be
+ # used with this launch profile.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::UpdateLaunchProfileResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::UpdateLaunchProfileResponse#launch_profile #launch_profile} => Types::LaunchProfile
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.update_launch_profile({
+ # client_token: "ClientToken",
+ # description: "LaunchProfileDescription",
+ # launch_profile_id: "String", # required
+ # launch_profile_protocol_versions: ["LaunchProfileProtocolVersion"],
+ # name: "LaunchProfileName",
+ # stream_configuration: {
+ # automatic_termination_mode: "DEACTIVATED", # accepts DEACTIVATED, ACTIVATED
+ # clipboard_mode: "ENABLED", # required, accepts ENABLED, DISABLED
+ # ec2_instance_types: ["g4dn.xlarge"], # required, accepts g4dn.xlarge, g4dn.2xlarge, g4dn.4xlarge, g4dn.8xlarge, g4dn.12xlarge, g4dn.16xlarge, g3.4xlarge, g3s.xlarge, g5.xlarge, g5.2xlarge, g5.4xlarge, g5.8xlarge, g5.16xlarge
+ # max_session_length_in_minutes: 1,
+ # max_stopped_session_length_in_minutes: 1,
+ # session_backup: {
+ # max_backups_to_retain: 1,
+ # mode: "AUTOMATIC", # accepts AUTOMATIC, DEACTIVATED
+ # },
+ # session_persistence_mode: "DEACTIVATED", # accepts DEACTIVATED, ACTIVATED
+ # session_storage: {
+ # mode: ["UPLOAD"], # required, accepts UPLOAD
+ # root: {
+ # linux: "StreamingSessionStorageRootPathLinux",
+ # windows: "StreamingSessionStorageRootPathWindows",
+ # },
+ # },
+ # streaming_image_ids: ["StreamingImageId"], # required
+ # volume_configuration: {
+ # iops: 1,
+ # size: 1,
+ # throughput: 1,
+ # },
+ # },
+ # studio_component_ids: ["String"],
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.launch_profile.arn #=> String
+ # resp.launch_profile.created_at #=> Time
+ # resp.launch_profile.created_by #=> String
+ # resp.launch_profile.description #=> String
+ # resp.launch_profile.ec2_subnet_ids #=> Array
+ # resp.launch_profile.ec2_subnet_ids[0] #=> String
+ # resp.launch_profile.launch_profile_id #=> String
+ # resp.launch_profile.launch_profile_protocol_versions #=> Array
+ # resp.launch_profile.launch_profile_protocol_versions[0] #=> String
+ # resp.launch_profile.name #=> String
+ # resp.launch_profile.state #=> String, one of "CREATE_IN_PROGRESS", "READY", "UPDATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "DELETED", "DELETE_FAILED", "CREATE_FAILED", "UPDATE_FAILED"
+ # resp.launch_profile.status_code #=> String, one of "LAUNCH_PROFILE_CREATED", "LAUNCH_PROFILE_UPDATED", "LAUNCH_PROFILE_DELETED", "LAUNCH_PROFILE_CREATE_IN_PROGRESS", "LAUNCH_PROFILE_UPDATE_IN_PROGRESS", "LAUNCH_PROFILE_DELETE_IN_PROGRESS", "INTERNAL_ERROR", "STREAMING_IMAGE_NOT_FOUND", "STREAMING_IMAGE_NOT_READY", "LAUNCH_PROFILE_WITH_STREAM_SESSIONS_NOT_DELETED", "ENCRYPTION_KEY_ACCESS_DENIED", "ENCRYPTION_KEY_NOT_FOUND", "INVALID_SUBNETS_PROVIDED", "INVALID_INSTANCE_TYPES_PROVIDED", "INVALID_SUBNETS_COMBINATION"
+ # resp.launch_profile.status_message #=> String
+ # resp.launch_profile.stream_configuration.automatic_termination_mode #=> String, one of "DEACTIVATED", "ACTIVATED"
+ # resp.launch_profile.stream_configuration.clipboard_mode #=> String, one of "ENABLED", "DISABLED"
+ # resp.launch_profile.stream_configuration.ec2_instance_types #=> Array
+ # resp.launch_profile.stream_configuration.ec2_instance_types[0] #=> String, one of "g4dn.xlarge", "g4dn.2xlarge", "g4dn.4xlarge", "g4dn.8xlarge", "g4dn.12xlarge", "g4dn.16xlarge", "g3.4xlarge", "g3s.xlarge", "g5.xlarge", "g5.2xlarge", "g5.4xlarge", "g5.8xlarge", "g5.16xlarge"
+ # resp.launch_profile.stream_configuration.max_session_length_in_minutes #=> Integer
+ # resp.launch_profile.stream_configuration.max_stopped_session_length_in_minutes #=> Integer
+ # resp.launch_profile.stream_configuration.session_backup.max_backups_to_retain #=> Integer
+ # resp.launch_profile.stream_configuration.session_backup.mode #=> String, one of "AUTOMATIC", "DEACTIVATED"
+ # resp.launch_profile.stream_configuration.session_persistence_mode #=> String, one of "DEACTIVATED", "ACTIVATED"
+ # resp.launch_profile.stream_configuration.session_storage.mode #=> Array
+ # resp.launch_profile.stream_configuration.session_storage.mode[0] #=> String, one of "UPLOAD"
+ # resp.launch_profile.stream_configuration.session_storage.root.linux #=> String
+ # resp.launch_profile.stream_configuration.session_storage.root.windows #=> String
+ # resp.launch_profile.stream_configuration.streaming_image_ids #=> Array
+ # resp.launch_profile.stream_configuration.streaming_image_ids[0] #=> String
+ # resp.launch_profile.stream_configuration.volume_configuration.iops #=> Integer
+ # resp.launch_profile.stream_configuration.volume_configuration.size #=> Integer
+ # resp.launch_profile.stream_configuration.volume_configuration.throughput #=> Integer
+ # resp.launch_profile.studio_component_ids #=> Array
+ # resp.launch_profile.studio_component_ids[0] #=> String
+ # resp.launch_profile.tags #=> Hash
+ # resp.launch_profile.tags["String"] #=> String
+ # resp.launch_profile.updated_at #=> Time
+ # resp.launch_profile.updated_by #=> String
+ # resp.launch_profile.validation_results #=> Array
+ # resp.launch_profile.validation_results[0].state #=> String, one of "VALIDATION_NOT_STARTED", "VALIDATION_IN_PROGRESS", "VALIDATION_SUCCESS", "VALIDATION_FAILED", "VALIDATION_FAILED_INTERNAL_SERVER_ERROR"
+ # resp.launch_profile.validation_results[0].status_code #=> String, one of "VALIDATION_NOT_STARTED", "VALIDATION_IN_PROGRESS", "VALIDATION_SUCCESS", "VALIDATION_FAILED_INVALID_SUBNET_ROUTE_TABLE_ASSOCIATION", "VALIDATION_FAILED_SUBNET_NOT_FOUND", "VALIDATION_FAILED_INVALID_SECURITY_GROUP_ASSOCIATION", "VALIDATION_FAILED_INVALID_ACTIVE_DIRECTORY", "VALIDATION_FAILED_UNAUTHORIZED", "VALIDATION_FAILED_INTERNAL_SERVER_ERROR"
+ # resp.launch_profile.validation_results[0].status_message #=> String
+ # resp.launch_profile.validation_results[0].type #=> String, one of "VALIDATE_ACTIVE_DIRECTORY_STUDIO_COMPONENT", "VALIDATE_SUBNET_ASSOCIATION", "VALIDATE_NETWORK_ACL_ASSOCIATION", "VALIDATE_SECURITY_GROUP_ASSOCIATION"
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/UpdateLaunchProfile AWS API Documentation
+ #
+ # @overload update_launch_profile(params = {})
+ # @param [Hash] params ({})
+ def update_launch_profile(params = {}, options = {})
+ req = build_request(:update_launch_profile, params)
+ req.send_request(options)
+ end
+
+ # Update a user persona in launch profile membership.
+ #
+ # @option params [String] :client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.**
+ #
+ # @option params [required, String] :launch_profile_id
+ # The ID of the launch profile used to control access from the streaming
+ # session.
+ #
+ # @option params [required, String] :persona
+ # The persona.
+ #
+ # @option params [required, String] :principal_id
+ # The principal ID. This currently supports a IAM Identity Center
+ # UserId.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::UpdateLaunchProfileMemberResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::UpdateLaunchProfileMemberResponse#member #member} => Types::LaunchProfileMembership
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.update_launch_profile_member({
+ # client_token: "ClientToken",
+ # launch_profile_id: "String", # required
+ # persona: "USER", # required, accepts USER
+ # principal_id: "String", # required
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.member.identity_store_id #=> String
+ # resp.member.persona #=> String, one of "USER"
+ # resp.member.principal_id #=> String
+ # resp.member.sid #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/UpdateLaunchProfileMember AWS API Documentation
+ #
+ # @overload update_launch_profile_member(params = {})
+ # @param [Hash] params ({})
+ def update_launch_profile_member(params = {}, options = {})
+ req = build_request(:update_launch_profile_member, params)
+ req.send_request(options)
+ end
+
+ # Update streaming image.
+ #
+ # @option params [String] :client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.**
+ #
+ # @option params [String] :description
+ # The description.
+ #
+ # @option params [String] :name
+ # The name for the streaming image.
+ #
+ # @option params [required, String] :streaming_image_id
+ # The streaming image ID.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @return [Types::UpdateStreamingImageResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::UpdateStreamingImageResponse#streaming_image #streaming_image} => Types::StreamingImage
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.update_streaming_image({
+ # client_token: "ClientToken",
+ # description: "StreamingImageDescription",
+ # name: "StreamingImageName",
+ # streaming_image_id: "String", # required
+ # studio_id: "String", # required
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.streaming_image.arn #=> String
+ # resp.streaming_image.description #=> String
+ # resp.streaming_image.ec2_image_id #=> String
+ # resp.streaming_image.encryption_configuration.key_arn #=> String
+ # resp.streaming_image.encryption_configuration.key_type #=> String, one of "CUSTOMER_MANAGED_KEY"
+ # resp.streaming_image.eula_ids #=> Array
+ # resp.streaming_image.eula_ids[0] #=> String
+ # resp.streaming_image.name #=> String
+ # resp.streaming_image.owner #=> String
+ # resp.streaming_image.platform #=> String
+ # resp.streaming_image.state #=> String, one of "CREATE_IN_PROGRESS", "READY", "DELETE_IN_PROGRESS", "DELETED", "UPDATE_IN_PROGRESS", "UPDATE_FAILED", "CREATE_FAILED", "DELETE_FAILED"
+ # resp.streaming_image.status_code #=> String, one of "STREAMING_IMAGE_CREATE_IN_PROGRESS", "STREAMING_IMAGE_READY", "STREAMING_IMAGE_DELETE_IN_PROGRESS", "STREAMING_IMAGE_DELETED", "STREAMING_IMAGE_UPDATE_IN_PROGRESS", "INTERNAL_ERROR", "ACCESS_DENIED"
+ # resp.streaming_image.status_message #=> String
+ # resp.streaming_image.streaming_image_id #=> String
+ # resp.streaming_image.tags #=> Hash
+ # resp.streaming_image.tags["String"] #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/UpdateStreamingImage AWS API Documentation
+ #
+ # @overload update_streaming_image(params = {})
+ # @param [Hash] params ({})
+ def update_streaming_image(params = {}, options = {})
+ req = build_request(:update_streaming_image, params)
+ req.send_request(options)
+ end
+
+ # Update a Studio resource.
+ #
+ # Currently, this operation only supports updating the displayName of
+ # your studio.
+ #
+ # @option params [String] :admin_role_arn
+ # The IAM role that Studio Admins will assume when logging in to the
+ # Nimble Studio portal.
+ #
+ # @option params [String] :client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.**
+ #
+ # @option params [String] :display_name
+ # A friendly name for the studio.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @option params [String] :user_role_arn
+ # The IAM role that Studio Users will assume when logging in to the
+ # Nimble Studio portal.
+ #
+ # @return [Types::UpdateStudioResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::UpdateStudioResponse#studio #studio} => Types::Studio
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.update_studio({
+ # admin_role_arn: "RoleArn",
+ # client_token: "ClientToken",
+ # display_name: "StudioDisplayName",
+ # studio_id: "String", # required
+ # user_role_arn: "RoleArn",
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.studio.admin_role_arn #=> String
+ # resp.studio.arn #=> String
+ # resp.studio.created_at #=> Time
+ # resp.studio.display_name #=> String
+ # resp.studio.home_region #=> String
+ # resp.studio.sso_client_id #=> String
+ # resp.studio.state #=> String, one of "CREATE_IN_PROGRESS", "READY", "UPDATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "DELETED", "DELETE_FAILED", "CREATE_FAILED", "UPDATE_FAILED"
+ # resp.studio.status_code #=> String, one of "STUDIO_CREATED", "STUDIO_DELETED", "STUDIO_UPDATED", "STUDIO_CREATE_IN_PROGRESS", "STUDIO_UPDATE_IN_PROGRESS", "STUDIO_DELETE_IN_PROGRESS", "STUDIO_WITH_LAUNCH_PROFILES_NOT_DELETED", "STUDIO_WITH_STUDIO_COMPONENTS_NOT_DELETED", "STUDIO_WITH_STREAMING_IMAGES_NOT_DELETED", "AWS_SSO_NOT_ENABLED", "AWS_SSO_ACCESS_DENIED", "ROLE_NOT_OWNED_BY_STUDIO_OWNER", "ROLE_COULD_NOT_BE_ASSUMED", "INTERNAL_ERROR", "ENCRYPTION_KEY_NOT_FOUND", "ENCRYPTION_KEY_ACCESS_DENIED", "AWS_SSO_CONFIGURATION_REPAIRED", "AWS_SSO_CONFIGURATION_REPAIR_IN_PROGRESS", "AWS_STS_REGION_DISABLED"
+ # resp.studio.status_message #=> String
+ # resp.studio.studio_encryption_configuration.key_arn #=> String
+ # resp.studio.studio_encryption_configuration.key_type #=> String, one of "AWS_OWNED_KEY", "CUSTOMER_MANAGED_KEY"
+ # resp.studio.studio_id #=> String
+ # resp.studio.studio_name #=> String
+ # resp.studio.studio_url #=> String
+ # resp.studio.tags #=> Hash
+ # resp.studio.tags["String"] #=> String
+ # resp.studio.updated_at #=> Time
+ # resp.studio.user_role_arn #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/UpdateStudio AWS API Documentation
+ #
+ # @overload update_studio(params = {})
+ # @param [Hash] params ({})
+ def update_studio(params = {}, options = {})
+ req = build_request(:update_studio, params)
+ req.send_request(options)
+ end
+
+ # Updates a studio component resource.
+ #
+ # @option params [String] :client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.**
+ #
+ # @option params [Types::StudioComponentConfiguration] :configuration
+ # The configuration of the studio component, based on component type.
+ #
+ # @option params [String] :description
+ # The description.
+ #
+ # @option params [Array] :ec2_security_group_ids
+ # The EC2 security groups that control access to the studio component.
+ #
+ # @option params [Array] :initialization_scripts
+ # Initialization scripts for studio components.
+ #
+ # @option params [String] :name
+ # The name for the studio component.
+ #
+ # @option params [String] :runtime_role_arn
+ # An IAM role attached to a Studio Component that gives the studio
+ # component access to Amazon Web Services resources at anytime while the
+ # instance is running.
+ #
+ # @option params [Array] :script_parameters
+ # Parameters for the studio component scripts.
+ #
+ # @option params [String] :secure_initialization_role_arn
+ # An IAM role attached to Studio Component when the system
+ # initialization script runs which give the studio component access to
+ # Amazon Web Services resources when the system initialization script
+ # runs.
+ #
+ # @option params [required, String] :studio_component_id
+ # The studio component ID.
+ #
+ # @option params [required, String] :studio_id
+ # The studio ID.
+ #
+ # @option params [String] :subtype
+ # The specific subtype of a studio component.
+ #
+ # @option params [String] :type
+ # The type of the studio component.
+ #
+ # @return [Types::UpdateStudioComponentResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
+ #
+ # * {Types::UpdateStudioComponentResponse#studio_component #studio_component} => Types::StudioComponent
+ #
+ # @example Request syntax with placeholder values
+ #
+ # resp = client.update_studio_component({
+ # client_token: "ClientToken",
+ # configuration: {
+ # active_directory_configuration: {
+ # computer_attributes: [
+ # {
+ # name: "ActiveDirectoryComputerAttributeName",
+ # value: "ActiveDirectoryComputerAttributeValue",
+ # },
+ # ],
+ # directory_id: "DirectoryId",
+ # organizational_unit_distinguished_name: "ActiveDirectoryOrganizationalUnitDistinguishedName",
+ # },
+ # compute_farm_configuration: {
+ # active_directory_user: "String",
+ # endpoint: "SensitiveString",
+ # },
+ # license_service_configuration: {
+ # endpoint: "SensitiveString",
+ # },
+ # shared_file_system_configuration: {
+ # endpoint: "SensitiveString",
+ # file_system_id: "String",
+ # linux_mount_point: "LinuxMountPoint",
+ # share_name: "SensitiveString",
+ # windows_mount_drive: "WindowsMountDrive",
+ # },
+ # },
+ # description: "StudioComponentDescription",
+ # ec2_security_group_ids: ["SecurityGroupId"],
+ # initialization_scripts: [
+ # {
+ # launch_profile_protocol_version: "LaunchProfileProtocolVersion",
+ # platform: "LINUX", # accepts LINUX, WINDOWS
+ # run_context: "SYSTEM_INITIALIZATION", # accepts SYSTEM_INITIALIZATION, USER_INITIALIZATION
+ # script: "StudioComponentInitializationScriptContent",
+ # },
+ # ],
+ # name: "StudioComponentName",
+ # runtime_role_arn: "RoleArn",
+ # script_parameters: [
+ # {
+ # key: "ScriptParameterKey",
+ # value: "ScriptParameterValue",
+ # },
+ # ],
+ # secure_initialization_role_arn: "RoleArn",
+ # studio_component_id: "String", # required
+ # studio_id: "String", # required
+ # subtype: "AWS_MANAGED_MICROSOFT_AD", # accepts AWS_MANAGED_MICROSOFT_AD, AMAZON_FSX_FOR_WINDOWS, AMAZON_FSX_FOR_LUSTRE, CUSTOM
+ # type: "ACTIVE_DIRECTORY", # accepts ACTIVE_DIRECTORY, SHARED_FILE_SYSTEM, COMPUTE_FARM, LICENSE_SERVICE, CUSTOM
+ # })
+ #
+ # @example Response structure
+ #
+ # resp.studio_component.arn #=> String
+ # resp.studio_component.configuration.active_directory_configuration.computer_attributes #=> Array
+ # resp.studio_component.configuration.active_directory_configuration.computer_attributes[0].name #=> String
+ # resp.studio_component.configuration.active_directory_configuration.computer_attributes[0].value #=> String
+ # resp.studio_component.configuration.active_directory_configuration.directory_id #=> String
+ # resp.studio_component.configuration.active_directory_configuration.organizational_unit_distinguished_name #=> String
+ # resp.studio_component.configuration.compute_farm_configuration.active_directory_user #=> String
+ # resp.studio_component.configuration.compute_farm_configuration.endpoint #=> String
+ # resp.studio_component.configuration.license_service_configuration.endpoint #=> String
+ # resp.studio_component.configuration.shared_file_system_configuration.endpoint #=> String
+ # resp.studio_component.configuration.shared_file_system_configuration.file_system_id #=> String
+ # resp.studio_component.configuration.shared_file_system_configuration.linux_mount_point #=> String
+ # resp.studio_component.configuration.shared_file_system_configuration.share_name #=> String
+ # resp.studio_component.configuration.shared_file_system_configuration.windows_mount_drive #=> String
+ # resp.studio_component.created_at #=> Time
+ # resp.studio_component.created_by #=> String
+ # resp.studio_component.description #=> String
+ # resp.studio_component.ec2_security_group_ids #=> Array
+ # resp.studio_component.ec2_security_group_ids[0] #=> String
+ # resp.studio_component.initialization_scripts #=> Array
+ # resp.studio_component.initialization_scripts[0].launch_profile_protocol_version #=> String
+ # resp.studio_component.initialization_scripts[0].platform #=> String, one of "LINUX", "WINDOWS"
+ # resp.studio_component.initialization_scripts[0].run_context #=> String, one of "SYSTEM_INITIALIZATION", "USER_INITIALIZATION"
+ # resp.studio_component.initialization_scripts[0].script #=> String
+ # resp.studio_component.name #=> String
+ # resp.studio_component.runtime_role_arn #=> String
+ # resp.studio_component.script_parameters #=> Array
+ # resp.studio_component.script_parameters[0].key #=> String
+ # resp.studio_component.script_parameters[0].value #=> String
+ # resp.studio_component.secure_initialization_role_arn #=> String
+ # resp.studio_component.state #=> String, one of "CREATE_IN_PROGRESS", "READY", "UPDATE_IN_PROGRESS", "DELETE_IN_PROGRESS", "DELETED", "DELETE_FAILED", "CREATE_FAILED", "UPDATE_FAILED"
+ # resp.studio_component.status_code #=> String, one of "ACTIVE_DIRECTORY_ALREADY_EXISTS", "STUDIO_COMPONENT_CREATED", "STUDIO_COMPONENT_UPDATED", "STUDIO_COMPONENT_DELETED", "ENCRYPTION_KEY_ACCESS_DENIED", "ENCRYPTION_KEY_NOT_FOUND", "STUDIO_COMPONENT_CREATE_IN_PROGRESS", "STUDIO_COMPONENT_UPDATE_IN_PROGRESS", "STUDIO_COMPONENT_DELETE_IN_PROGRESS", "INTERNAL_ERROR"
+ # resp.studio_component.status_message #=> String
+ # resp.studio_component.studio_component_id #=> String
+ # resp.studio_component.subtype #=> String, one of "AWS_MANAGED_MICROSOFT_AD", "AMAZON_FSX_FOR_WINDOWS", "AMAZON_FSX_FOR_LUSTRE", "CUSTOM"
+ # resp.studio_component.tags #=> Hash
+ # resp.studio_component.tags["String"] #=> String
+ # resp.studio_component.type #=> String, one of "ACTIVE_DIRECTORY", "SHARED_FILE_SYSTEM", "COMPUTE_FARM", "LICENSE_SERVICE", "CUSTOM"
+ # resp.studio_component.updated_at #=> Time
+ # resp.studio_component.updated_by #=> String
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/UpdateStudioComponent AWS API Documentation
+ #
+ # @overload update_studio_component(params = {})
+ # @param [Hash] params ({})
+ def update_studio_component(params = {}, options = {})
+ req = build_request(:update_studio_component, params)
+ req.send_request(options)
+ end
+
+ # @!endgroup
+
+ # @param params ({})
+ # @api private
+ def build_request(operation_name, params = {})
+ handlers = @handlers.for(operation_name)
+ tracer = config.telemetry_provider.tracer_provider.tracer(
+ Aws::Telemetry.module_to_tracer_name('Aws::NimbleStudio')
+ )
+ context = Seahorse::Client::RequestContext.new(
+ operation_name: operation_name,
+ operation: config.api.operation(operation_name),
+ client: self,
+ params: params,
+ config: config,
+ tracer: tracer
+ )
+ context[:gem_name] = 'aws-sdk-nimblestudio'
+ context[:gem_version] = '1.40.0'
+ Seahorse::Client::Request.new(handlers, context)
+ end
+
+ # Polls an API operation until a resource enters a desired state.
+ #
+ # ## Basic Usage
+ #
+ # A waiter will call an API operation until:
+ #
+ # * It is successful
+ # * It enters a terminal state
+ # * It makes the maximum number of attempts
+ #
+ # In between attempts, the waiter will sleep.
+ #
+ # # polls in a loop, sleeping between attempts
+ # client.wait_until(waiter_name, params)
+ #
+ # ## Configuration
+ #
+ # You can configure the maximum number of polling attempts, and the
+ # delay (in seconds) between each polling attempt. You can pass
+ # configuration as the final arguments hash.
+ #
+ # # poll for ~25 seconds
+ # client.wait_until(waiter_name, params, {
+ # max_attempts: 5,
+ # delay: 5,
+ # })
+ #
+ # ## Callbacks
+ #
+ # You can be notified before each polling attempt and before each
+ # delay. If you throw `:success` or `:failure` from these callbacks,
+ # it will terminate the waiter.
+ #
+ # started_at = Time.now
+ # client.wait_until(waiter_name, params, {
+ #
+ # # disable max attempts
+ # max_attempts: nil,
+ #
+ # # poll for 1 hour, instead of a number of attempts
+ # before_wait: -> (attempts, response) do
+ # throw :failure if Time.now - started_at > 3600
+ # end
+ # })
+ #
+ # ## Handling Errors
+ #
+ # When a waiter is unsuccessful, it will raise an error.
+ # All of the failure errors extend from
+ # {Aws::Waiters::Errors::WaiterFailed}.
+ #
+ # begin
+ # client.wait_until(...)
+ # rescue Aws::Waiters::Errors::WaiterFailed
+ # # resource did not enter the desired state in time
+ # end
+ #
+ # ## Valid Waiters
+ #
+ # The following table lists the valid waiter names, the operations they call,
+ # and the default `:delay` and `:max_attempts` values.
+ #
+ # | waiter_name | params | :delay | :max_attempts |
+ # | ------------------------------ | ------------------------------------- | -------- | ------------- |
+ # | launch_profile_deleted | {Client#get_launch_profile} | 5 | 150 |
+ # | launch_profile_ready | {Client#get_launch_profile} | 5 | 150 |
+ # | streaming_image_deleted | {Client#get_streaming_image} | 2 | 60 |
+ # | streaming_image_ready | {Client#get_streaming_image} | 2 | 60 |
+ # | streaming_session_deleted | {Client#get_streaming_session} | 5 | 180 |
+ # | streaming_session_ready | {Client#get_streaming_session} | 10 | 180 |
+ # | streaming_session_stopped | {Client#get_streaming_session} | 5 | 180 |
+ # | streaming_session_stream_ready | {Client#get_streaming_session_stream} | 5 | 30 |
+ # | studio_component_deleted | {Client#get_studio_component} | 1 | 120 |
+ # | studio_component_ready | {Client#get_studio_component} | 2 | 60 |
+ # | studio_deleted | {Client#get_studio} | 2 | 60 |
+ # | studio_ready | {Client#get_studio} | 2 | 60 |
+ #
+ # @raise [Errors::FailureStateError] Raised when the waiter terminates
+ # because the waiter has entered a state that it will not transition
+ # out of, preventing success.
+ #
+ # @raise [Errors::TooManyAttemptsError] Raised when the configured
+ # maximum number of attempts have been made, and the waiter is not
+ # yet successful.
+ #
+ # @raise [Errors::UnexpectedError] Raised when an error is encounted
+ # while polling for a resource that is not expected.
+ #
+ # @raise [Errors::NoSuchWaiterError] Raised when you request to wait
+ # for an unknown state.
+ #
+ # @return [Boolean] Returns `true` if the waiter was successful.
+ # @param [Symbol] waiter_name
+ # @param [Hash] params ({})
+ # @param [Hash] options ({})
+ # @option options [Integer] :max_attempts
+ # @option options [Integer] :delay
+ # @option options [Proc] :before_attempt
+ # @option options [Proc] :before_wait
+ def wait_until(waiter_name, params = {}, options = {})
+ w = waiter(waiter_name, options)
+ yield(w.waiter) if block_given? # deprecated
+ w.wait(params)
+ end
+
+ # @api private
+ # @deprecated
+ def waiter_names
+ waiters.keys
+ end
+
+ private
+
+ # @param [Symbol] waiter_name
+ # @param [Hash] options ({})
+ def waiter(waiter_name, options = {})
+ waiter_class = waiters[waiter_name]
+ if waiter_class
+ waiter_class.new(options.merge(client: self))
+ else
+ raise Aws::Waiters::Errors::NoSuchWaiterError.new(waiter_name, waiters.keys)
+ end
+ end
+
+ def waiters
+ {
+ launch_profile_deleted: Waiters::LaunchProfileDeleted,
+ launch_profile_ready: Waiters::LaunchProfileReady,
+ streaming_image_deleted: Waiters::StreamingImageDeleted,
+ streaming_image_ready: Waiters::StreamingImageReady,
+ streaming_session_deleted: Waiters::StreamingSessionDeleted,
+ streaming_session_ready: Waiters::StreamingSessionReady,
+ streaming_session_stopped: Waiters::StreamingSessionStopped,
+ streaming_session_stream_ready: Waiters::StreamingSessionStreamReady,
+ studio_component_deleted: Waiters::StudioComponentDeleted,
+ studio_component_ready: Waiters::StudioComponentReady,
+ studio_deleted: Waiters::StudioDeleted,
+ studio_ready: Waiters::StudioReady
+ }
+ end
+
+ class << self
+
+ # @api private
+ attr_reader :identifier
+
+ # @api private
+ def errors_module
+ Errors
+ end
+
+ end
+ end
+end
diff --git a/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/client_api.rb b/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/client_api.rb
new file mode 100644
index 00000000000..aa55a7a0aec
--- /dev/null
+++ b/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/client_api.rb
@@ -0,0 +1,1923 @@
+# 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::NimbleStudio
+ # @api private
+ module ClientApi
+
+ include Seahorse::Model
+
+ AcceptEulasRequest = Shapes::StructureShape.new(name: 'AcceptEulasRequest')
+ AcceptEulasResponse = Shapes::StructureShape.new(name: 'AcceptEulasResponse')
+ AccessDeniedException = Shapes::StructureShape.new(name: 'AccessDeniedException')
+ ActiveDirectoryComputerAttribute = Shapes::StructureShape.new(name: 'ActiveDirectoryComputerAttribute')
+ ActiveDirectoryComputerAttributeList = Shapes::ListShape.new(name: 'ActiveDirectoryComputerAttributeList')
+ ActiveDirectoryComputerAttributeName = Shapes::StringShape.new(name: 'ActiveDirectoryComputerAttributeName')
+ ActiveDirectoryComputerAttributeValue = Shapes::StringShape.new(name: 'ActiveDirectoryComputerAttributeValue')
+ ActiveDirectoryConfiguration = Shapes::StructureShape.new(name: 'ActiveDirectoryConfiguration')
+ ActiveDirectoryDnsIpAddress = Shapes::StringShape.new(name: 'ActiveDirectoryDnsIpAddress')
+ ActiveDirectoryDnsIpAddressList = Shapes::ListShape.new(name: 'ActiveDirectoryDnsIpAddressList')
+ ActiveDirectoryOrganizationalUnitDistinguishedName = Shapes::StringShape.new(name: 'ActiveDirectoryOrganizationalUnitDistinguishedName')
+ AutomaticTerminationMode = Shapes::StringShape.new(name: 'AutomaticTerminationMode')
+ ClientToken = Shapes::StringShape.new(name: 'ClientToken')
+ ComputeFarmConfiguration = Shapes::StructureShape.new(name: 'ComputeFarmConfiguration')
+ ConflictException = Shapes::StructureShape.new(name: 'ConflictException')
+ CreateLaunchProfileRequest = Shapes::StructureShape.new(name: 'CreateLaunchProfileRequest')
+ CreateLaunchProfileResponse = Shapes::StructureShape.new(name: 'CreateLaunchProfileResponse')
+ CreateStreamingImageRequest = Shapes::StructureShape.new(name: 'CreateStreamingImageRequest')
+ CreateStreamingImageResponse = Shapes::StructureShape.new(name: 'CreateStreamingImageResponse')
+ CreateStreamingSessionRequest = Shapes::StructureShape.new(name: 'CreateStreamingSessionRequest')
+ CreateStreamingSessionResponse = Shapes::StructureShape.new(name: 'CreateStreamingSessionResponse')
+ CreateStreamingSessionStreamRequest = Shapes::StructureShape.new(name: 'CreateStreamingSessionStreamRequest')
+ CreateStreamingSessionStreamResponse = Shapes::StructureShape.new(name: 'CreateStreamingSessionStreamResponse')
+ CreateStudioComponentRequest = Shapes::StructureShape.new(name: 'CreateStudioComponentRequest')
+ CreateStudioComponentResponse = Shapes::StructureShape.new(name: 'CreateStudioComponentResponse')
+ CreateStudioRequest = Shapes::StructureShape.new(name: 'CreateStudioRequest')
+ CreateStudioResponse = Shapes::StructureShape.new(name: 'CreateStudioResponse')
+ DeleteLaunchProfileMemberRequest = Shapes::StructureShape.new(name: 'DeleteLaunchProfileMemberRequest')
+ DeleteLaunchProfileMemberResponse = Shapes::StructureShape.new(name: 'DeleteLaunchProfileMemberResponse')
+ DeleteLaunchProfileRequest = Shapes::StructureShape.new(name: 'DeleteLaunchProfileRequest')
+ DeleteLaunchProfileResponse = Shapes::StructureShape.new(name: 'DeleteLaunchProfileResponse')
+ DeleteStreamingImageRequest = Shapes::StructureShape.new(name: 'DeleteStreamingImageRequest')
+ DeleteStreamingImageResponse = Shapes::StructureShape.new(name: 'DeleteStreamingImageResponse')
+ DeleteStreamingSessionRequest = Shapes::StructureShape.new(name: 'DeleteStreamingSessionRequest')
+ DeleteStreamingSessionResponse = Shapes::StructureShape.new(name: 'DeleteStreamingSessionResponse')
+ DeleteStudioComponentRequest = Shapes::StructureShape.new(name: 'DeleteStudioComponentRequest')
+ DeleteStudioComponentResponse = Shapes::StructureShape.new(name: 'DeleteStudioComponentResponse')
+ DeleteStudioMemberRequest = Shapes::StructureShape.new(name: 'DeleteStudioMemberRequest')
+ DeleteStudioMemberResponse = Shapes::StructureShape.new(name: 'DeleteStudioMemberResponse')
+ DeleteStudioRequest = Shapes::StructureShape.new(name: 'DeleteStudioRequest')
+ DeleteStudioResponse = Shapes::StructureShape.new(name: 'DeleteStudioResponse')
+ DirectoryId = Shapes::StringShape.new(name: 'DirectoryId')
+ EC2ImageId = Shapes::StringShape.new(name: 'EC2ImageId')
+ EC2SubnetId = Shapes::StringShape.new(name: 'EC2SubnetId')
+ EC2SubnetIdList = Shapes::ListShape.new(name: 'EC2SubnetIdList')
+ Eula = Shapes::StructureShape.new(name: 'Eula')
+ EulaAcceptance = Shapes::StructureShape.new(name: 'EulaAcceptance')
+ EulaAcceptanceId = Shapes::StringShape.new(name: 'EulaAcceptanceId')
+ EulaAcceptanceList = Shapes::ListShape.new(name: 'EulaAcceptanceList')
+ EulaId = Shapes::StringShape.new(name: 'EulaId')
+ EulaIdList = Shapes::ListShape.new(name: 'EulaIdList')
+ EulaList = Shapes::ListShape.new(name: 'EulaList')
+ EulaName = Shapes::StringShape.new(name: 'EulaName')
+ ExceptionContext = Shapes::MapShape.new(name: 'ExceptionContext')
+ GetEulaRequest = Shapes::StructureShape.new(name: 'GetEulaRequest')
+ GetEulaResponse = Shapes::StructureShape.new(name: 'GetEulaResponse')
+ GetLaunchProfileDetailsRequest = Shapes::StructureShape.new(name: 'GetLaunchProfileDetailsRequest')
+ GetLaunchProfileDetailsResponse = Shapes::StructureShape.new(name: 'GetLaunchProfileDetailsResponse')
+ GetLaunchProfileInitializationRequest = Shapes::StructureShape.new(name: 'GetLaunchProfileInitializationRequest')
+ GetLaunchProfileInitializationResponse = Shapes::StructureShape.new(name: 'GetLaunchProfileInitializationResponse')
+ GetLaunchProfileMemberRequest = Shapes::StructureShape.new(name: 'GetLaunchProfileMemberRequest')
+ GetLaunchProfileMemberResponse = Shapes::StructureShape.new(name: 'GetLaunchProfileMemberResponse')
+ GetLaunchProfileRequest = Shapes::StructureShape.new(name: 'GetLaunchProfileRequest')
+ GetLaunchProfileResponse = Shapes::StructureShape.new(name: 'GetLaunchProfileResponse')
+ GetStreamingImageRequest = Shapes::StructureShape.new(name: 'GetStreamingImageRequest')
+ GetStreamingImageResponse = Shapes::StructureShape.new(name: 'GetStreamingImageResponse')
+ GetStreamingSessionBackupRequest = Shapes::StructureShape.new(name: 'GetStreamingSessionBackupRequest')
+ GetStreamingSessionBackupResponse = Shapes::StructureShape.new(name: 'GetStreamingSessionBackupResponse')
+ GetStreamingSessionRequest = Shapes::StructureShape.new(name: 'GetStreamingSessionRequest')
+ GetStreamingSessionResponse = Shapes::StructureShape.new(name: 'GetStreamingSessionResponse')
+ GetStreamingSessionStreamRequest = Shapes::StructureShape.new(name: 'GetStreamingSessionStreamRequest')
+ GetStreamingSessionStreamResponse = Shapes::StructureShape.new(name: 'GetStreamingSessionStreamResponse')
+ GetStudioComponentRequest = Shapes::StructureShape.new(name: 'GetStudioComponentRequest')
+ GetStudioComponentResponse = Shapes::StructureShape.new(name: 'GetStudioComponentResponse')
+ GetStudioMemberRequest = Shapes::StructureShape.new(name: 'GetStudioMemberRequest')
+ GetStudioMemberResponse = Shapes::StructureShape.new(name: 'GetStudioMemberResponse')
+ GetStudioRequest = Shapes::StructureShape.new(name: 'GetStudioRequest')
+ GetStudioResponse = Shapes::StructureShape.new(name: 'GetStudioResponse')
+ InternalServerErrorException = Shapes::StructureShape.new(name: 'InternalServerErrorException')
+ LaunchProfile = Shapes::StructureShape.new(name: 'LaunchProfile')
+ LaunchProfileDescription = Shapes::StringShape.new(name: 'LaunchProfileDescription')
+ LaunchProfileId = Shapes::StringShape.new(name: 'LaunchProfileId')
+ LaunchProfileInitialization = Shapes::StructureShape.new(name: 'LaunchProfileInitialization')
+ LaunchProfileInitializationActiveDirectory = Shapes::StructureShape.new(name: 'LaunchProfileInitializationActiveDirectory')
+ LaunchProfileInitializationScript = Shapes::StructureShape.new(name: 'LaunchProfileInitializationScript')
+ LaunchProfileInitializationScriptList = Shapes::ListShape.new(name: 'LaunchProfileInitializationScriptList')
+ LaunchProfileList = Shapes::ListShape.new(name: 'LaunchProfileList')
+ LaunchProfileMembership = Shapes::StructureShape.new(name: 'LaunchProfileMembership')
+ LaunchProfileMembershipList = Shapes::ListShape.new(name: 'LaunchProfileMembershipList')
+ LaunchProfileName = Shapes::StringShape.new(name: 'LaunchProfileName')
+ LaunchProfilePersona = Shapes::StringShape.new(name: 'LaunchProfilePersona')
+ LaunchProfilePlatform = Shapes::StringShape.new(name: 'LaunchProfilePlatform')
+ LaunchProfileProtocolVersion = Shapes::StringShape.new(name: 'LaunchProfileProtocolVersion')
+ LaunchProfileProtocolVersionList = Shapes::ListShape.new(name: 'LaunchProfileProtocolVersionList')
+ LaunchProfileSecurityGroupIdList = Shapes::ListShape.new(name: 'LaunchProfileSecurityGroupIdList')
+ LaunchProfileState = Shapes::StringShape.new(name: 'LaunchProfileState')
+ LaunchProfileStateList = Shapes::ListShape.new(name: 'LaunchProfileStateList')
+ LaunchProfileStatusCode = Shapes::StringShape.new(name: 'LaunchProfileStatusCode')
+ LaunchProfileStudioComponentIdList = Shapes::ListShape.new(name: 'LaunchProfileStudioComponentIdList')
+ LaunchProfileValidationState = Shapes::StringShape.new(name: 'LaunchProfileValidationState')
+ LaunchProfileValidationStatusCode = Shapes::StringShape.new(name: 'LaunchProfileValidationStatusCode')
+ LaunchProfileValidationStatusMessage = Shapes::StringShape.new(name: 'LaunchProfileValidationStatusMessage')
+ LaunchProfileValidationType = Shapes::StringShape.new(name: 'LaunchProfileValidationType')
+ LaunchPurpose = Shapes::StringShape.new(name: 'LaunchPurpose')
+ LicenseServiceConfiguration = Shapes::StructureShape.new(name: 'LicenseServiceConfiguration')
+ LinuxMountPoint = Shapes::StringShape.new(name: 'LinuxMountPoint')
+ ListEulaAcceptancesRequest = Shapes::StructureShape.new(name: 'ListEulaAcceptancesRequest')
+ ListEulaAcceptancesResponse = Shapes::StructureShape.new(name: 'ListEulaAcceptancesResponse')
+ ListEulasRequest = Shapes::StructureShape.new(name: 'ListEulasRequest')
+ ListEulasResponse = Shapes::StructureShape.new(name: 'ListEulasResponse')
+ ListLaunchProfileMembersRequest = Shapes::StructureShape.new(name: 'ListLaunchProfileMembersRequest')
+ ListLaunchProfileMembersResponse = Shapes::StructureShape.new(name: 'ListLaunchProfileMembersResponse')
+ ListLaunchProfilesRequest = Shapes::StructureShape.new(name: 'ListLaunchProfilesRequest')
+ ListLaunchProfilesResponse = Shapes::StructureShape.new(name: 'ListLaunchProfilesResponse')
+ ListStreamingImagesRequest = Shapes::StructureShape.new(name: 'ListStreamingImagesRequest')
+ ListStreamingImagesResponse = Shapes::StructureShape.new(name: 'ListStreamingImagesResponse')
+ ListStreamingSessionBackupsRequest = Shapes::StructureShape.new(name: 'ListStreamingSessionBackupsRequest')
+ ListStreamingSessionBackupsResponse = Shapes::StructureShape.new(name: 'ListStreamingSessionBackupsResponse')
+ ListStreamingSessionsRequest = Shapes::StructureShape.new(name: 'ListStreamingSessionsRequest')
+ ListStreamingSessionsResponse = Shapes::StructureShape.new(name: 'ListStreamingSessionsResponse')
+ ListStudioComponentsRequest = Shapes::StructureShape.new(name: 'ListStudioComponentsRequest')
+ ListStudioComponentsResponse = Shapes::StructureShape.new(name: 'ListStudioComponentsResponse')
+ ListStudioMembersRequest = Shapes::StructureShape.new(name: 'ListStudioMembersRequest')
+ ListStudioMembersResponse = Shapes::StructureShape.new(name: 'ListStudioMembersResponse')
+ ListStudiosRequest = Shapes::StructureShape.new(name: 'ListStudiosRequest')
+ ListStudiosResponse = Shapes::StructureShape.new(name: 'ListStudiosResponse')
+ ListTagsForResourceRequest = Shapes::StructureShape.new(name: 'ListTagsForResourceRequest')
+ ListTagsForResourceResponse = Shapes::StructureShape.new(name: 'ListTagsForResourceResponse')
+ MaxResults = Shapes::IntegerShape.new(name: 'MaxResults')
+ NewLaunchProfileMember = Shapes::StructureShape.new(name: 'NewLaunchProfileMember')
+ NewLaunchProfileMemberList = Shapes::ListShape.new(name: 'NewLaunchProfileMemberList')
+ NewStudioMember = Shapes::StructureShape.new(name: 'NewStudioMember')
+ NewStudioMemberList = Shapes::ListShape.new(name: 'NewStudioMemberList')
+ PutLaunchProfileMembersRequest = Shapes::StructureShape.new(name: 'PutLaunchProfileMembersRequest')
+ PutLaunchProfileMembersResponse = Shapes::StructureShape.new(name: 'PutLaunchProfileMembersResponse')
+ PutStudioMembersRequest = Shapes::StructureShape.new(name: 'PutStudioMembersRequest')
+ PutStudioMembersResponse = Shapes::StructureShape.new(name: 'PutStudioMembersResponse')
+ Region = Shapes::StringShape.new(name: 'Region')
+ ResourceNotFoundException = Shapes::StructureShape.new(name: 'ResourceNotFoundException')
+ RoleArn = Shapes::StringShape.new(name: 'RoleArn')
+ ScriptParameterKey = Shapes::StringShape.new(name: 'ScriptParameterKey')
+ ScriptParameterKeyValue = Shapes::StructureShape.new(name: 'ScriptParameterKeyValue')
+ ScriptParameterValue = Shapes::StringShape.new(name: 'ScriptParameterValue')
+ SecurityGroupId = Shapes::StringShape.new(name: 'SecurityGroupId')
+ SensitiveString = Shapes::StringShape.new(name: 'SensitiveString')
+ ServiceQuotaExceededException = Shapes::StructureShape.new(name: 'ServiceQuotaExceededException')
+ SessionBackupMode = Shapes::StringShape.new(name: 'SessionBackupMode')
+ SessionPersistenceMode = Shapes::StringShape.new(name: 'SessionPersistenceMode')
+ SharedFileSystemConfiguration = Shapes::StructureShape.new(name: 'SharedFileSystemConfiguration')
+ StartStreamingSessionRequest = Shapes::StructureShape.new(name: 'StartStreamingSessionRequest')
+ StartStreamingSessionResponse = Shapes::StructureShape.new(name: 'StartStreamingSessionResponse')
+ StartStudioSSOConfigurationRepairRequest = Shapes::StructureShape.new(name: 'StartStudioSSOConfigurationRepairRequest')
+ StartStudioSSOConfigurationRepairResponse = Shapes::StructureShape.new(name: 'StartStudioSSOConfigurationRepairResponse')
+ StopStreamingSessionRequest = Shapes::StructureShape.new(name: 'StopStreamingSessionRequest')
+ StopStreamingSessionResponse = Shapes::StructureShape.new(name: 'StopStreamingSessionResponse')
+ StreamConfiguration = Shapes::StructureShape.new(name: 'StreamConfiguration')
+ StreamConfigurationCreate = Shapes::StructureShape.new(name: 'StreamConfigurationCreate')
+ StreamConfigurationMaxBackupsToRetain = Shapes::IntegerShape.new(name: 'StreamConfigurationMaxBackupsToRetain')
+ StreamConfigurationMaxSessionLengthInMinutes = Shapes::IntegerShape.new(name: 'StreamConfigurationMaxSessionLengthInMinutes')
+ StreamConfigurationMaxStoppedSessionLengthInMinutes = Shapes::IntegerShape.new(name: 'StreamConfigurationMaxStoppedSessionLengthInMinutes')
+ StreamConfigurationSessionBackup = Shapes::StructureShape.new(name: 'StreamConfigurationSessionBackup')
+ StreamConfigurationSessionStorage = Shapes::StructureShape.new(name: 'StreamConfigurationSessionStorage')
+ StreamingClipboardMode = Shapes::StringShape.new(name: 'StreamingClipboardMode')
+ StreamingImage = Shapes::StructureShape.new(name: 'StreamingImage')
+ StreamingImageDescription = Shapes::StringShape.new(name: 'StreamingImageDescription')
+ StreamingImageEncryptionConfiguration = Shapes::StructureShape.new(name: 'StreamingImageEncryptionConfiguration')
+ StreamingImageEncryptionConfigurationKeyArn = Shapes::StringShape.new(name: 'StreamingImageEncryptionConfigurationKeyArn')
+ StreamingImageEncryptionConfigurationKeyType = Shapes::StringShape.new(name: 'StreamingImageEncryptionConfigurationKeyType')
+ StreamingImageId = Shapes::StringShape.new(name: 'StreamingImageId')
+ StreamingImageIdList = Shapes::ListShape.new(name: 'StreamingImageIdList')
+ StreamingImageList = Shapes::ListShape.new(name: 'StreamingImageList')
+ StreamingImageName = Shapes::StringShape.new(name: 'StreamingImageName')
+ StreamingImageOwner = Shapes::StringShape.new(name: 'StreamingImageOwner')
+ StreamingImagePlatform = Shapes::StringShape.new(name: 'StreamingImagePlatform')
+ StreamingImageState = Shapes::StringShape.new(name: 'StreamingImageState')
+ StreamingImageStatusCode = Shapes::StringShape.new(name: 'StreamingImageStatusCode')
+ StreamingInstanceType = Shapes::StringShape.new(name: 'StreamingInstanceType')
+ StreamingInstanceTypeList = Shapes::ListShape.new(name: 'StreamingInstanceTypeList')
+ StreamingSession = Shapes::StructureShape.new(name: 'StreamingSession')
+ StreamingSessionBackup = Shapes::StructureShape.new(name: 'StreamingSessionBackup')
+ StreamingSessionBackupList = Shapes::ListShape.new(name: 'StreamingSessionBackupList')
+ StreamingSessionId = Shapes::StringShape.new(name: 'StreamingSessionId')
+ StreamingSessionList = Shapes::ListShape.new(name: 'StreamingSessionList')
+ StreamingSessionState = Shapes::StringShape.new(name: 'StreamingSessionState')
+ StreamingSessionStatusCode = Shapes::StringShape.new(name: 'StreamingSessionStatusCode')
+ StreamingSessionStorageMode = Shapes::StringShape.new(name: 'StreamingSessionStorageMode')
+ StreamingSessionStorageModeList = Shapes::ListShape.new(name: 'StreamingSessionStorageModeList')
+ StreamingSessionStorageRoot = Shapes::StructureShape.new(name: 'StreamingSessionStorageRoot')
+ StreamingSessionStorageRootPathLinux = Shapes::StringShape.new(name: 'StreamingSessionStorageRootPathLinux')
+ StreamingSessionStorageRootPathWindows = Shapes::StringShape.new(name: 'StreamingSessionStorageRootPathWindows')
+ StreamingSessionStream = Shapes::StructureShape.new(name: 'StreamingSessionStream')
+ StreamingSessionStreamExpirationInSeconds = Shapes::IntegerShape.new(name: 'StreamingSessionStreamExpirationInSeconds')
+ StreamingSessionStreamState = Shapes::StringShape.new(name: 'StreamingSessionStreamState')
+ StreamingSessionStreamStatusCode = Shapes::StringShape.new(name: 'StreamingSessionStreamStatusCode')
+ String = Shapes::StringShape.new(name: 'String')
+ StringList = Shapes::ListShape.new(name: 'StringList')
+ Studio = Shapes::StructureShape.new(name: 'Studio')
+ StudioComponent = Shapes::StructureShape.new(name: 'StudioComponent')
+ StudioComponentConfiguration = Shapes::UnionShape.new(name: 'StudioComponentConfiguration')
+ StudioComponentDescription = Shapes::StringShape.new(name: 'StudioComponentDescription')
+ StudioComponentId = Shapes::StringShape.new(name: 'StudioComponentId')
+ StudioComponentInitializationScript = Shapes::StructureShape.new(name: 'StudioComponentInitializationScript')
+ StudioComponentInitializationScriptContent = Shapes::StringShape.new(name: 'StudioComponentInitializationScriptContent')
+ StudioComponentInitializationScriptList = Shapes::ListShape.new(name: 'StudioComponentInitializationScriptList')
+ StudioComponentInitializationScriptRunContext = Shapes::StringShape.new(name: 'StudioComponentInitializationScriptRunContext')
+ StudioComponentList = Shapes::ListShape.new(name: 'StudioComponentList')
+ StudioComponentName = Shapes::StringShape.new(name: 'StudioComponentName')
+ StudioComponentScriptParameterKeyValueList = Shapes::ListShape.new(name: 'StudioComponentScriptParameterKeyValueList')
+ StudioComponentSecurityGroupIdList = Shapes::ListShape.new(name: 'StudioComponentSecurityGroupIdList')
+ StudioComponentState = Shapes::StringShape.new(name: 'StudioComponentState')
+ StudioComponentStateList = Shapes::ListShape.new(name: 'StudioComponentStateList')
+ StudioComponentStatusCode = Shapes::StringShape.new(name: 'StudioComponentStatusCode')
+ StudioComponentSubtype = Shapes::StringShape.new(name: 'StudioComponentSubtype')
+ StudioComponentSummary = Shapes::StructureShape.new(name: 'StudioComponentSummary')
+ StudioComponentSummaryList = Shapes::ListShape.new(name: 'StudioComponentSummaryList')
+ StudioComponentType = Shapes::StringShape.new(name: 'StudioComponentType')
+ StudioComponentTypeList = Shapes::ListShape.new(name: 'StudioComponentTypeList')
+ StudioDisplayName = Shapes::StringShape.new(name: 'StudioDisplayName')
+ StudioEncryptionConfiguration = Shapes::StructureShape.new(name: 'StudioEncryptionConfiguration')
+ StudioEncryptionConfigurationKeyArn = Shapes::StringShape.new(name: 'StudioEncryptionConfigurationKeyArn')
+ StudioEncryptionConfigurationKeyType = Shapes::StringShape.new(name: 'StudioEncryptionConfigurationKeyType')
+ StudioList = Shapes::ListShape.new(name: 'StudioList')
+ StudioMembership = Shapes::StructureShape.new(name: 'StudioMembership')
+ StudioMembershipList = Shapes::ListShape.new(name: 'StudioMembershipList')
+ StudioName = Shapes::StringShape.new(name: 'StudioName')
+ StudioPersona = Shapes::StringShape.new(name: 'StudioPersona')
+ StudioState = Shapes::StringShape.new(name: 'StudioState')
+ StudioStatusCode = Shapes::StringShape.new(name: 'StudioStatusCode')
+ TagResourceRequest = Shapes::StructureShape.new(name: 'TagResourceRequest')
+ TagResourceResponse = Shapes::StructureShape.new(name: 'TagResourceResponse')
+ Tags = Shapes::MapShape.new(name: 'Tags')
+ ThrottlingException = Shapes::StructureShape.new(name: 'ThrottlingException')
+ Timestamp = Shapes::TimestampShape.new(name: 'Timestamp', timestampFormat: "iso8601")
+ UntagResourceRequest = Shapes::StructureShape.new(name: 'UntagResourceRequest')
+ UntagResourceResponse = Shapes::StructureShape.new(name: 'UntagResourceResponse')
+ UpdateLaunchProfileMemberRequest = Shapes::StructureShape.new(name: 'UpdateLaunchProfileMemberRequest')
+ UpdateLaunchProfileMemberResponse = Shapes::StructureShape.new(name: 'UpdateLaunchProfileMemberResponse')
+ UpdateLaunchProfileRequest = Shapes::StructureShape.new(name: 'UpdateLaunchProfileRequest')
+ UpdateLaunchProfileResponse = Shapes::StructureShape.new(name: 'UpdateLaunchProfileResponse')
+ UpdateStreamingImageRequest = Shapes::StructureShape.new(name: 'UpdateStreamingImageRequest')
+ UpdateStreamingImageResponse = Shapes::StructureShape.new(name: 'UpdateStreamingImageResponse')
+ UpdateStudioComponentRequest = Shapes::StructureShape.new(name: 'UpdateStudioComponentRequest')
+ UpdateStudioComponentResponse = Shapes::StructureShape.new(name: 'UpdateStudioComponentResponse')
+ UpdateStudioRequest = Shapes::StructureShape.new(name: 'UpdateStudioRequest')
+ UpdateStudioResponse = Shapes::StructureShape.new(name: 'UpdateStudioResponse')
+ ValidationException = Shapes::StructureShape.new(name: 'ValidationException')
+ ValidationResult = Shapes::StructureShape.new(name: 'ValidationResult')
+ ValidationResults = Shapes::ListShape.new(name: 'ValidationResults')
+ VolumeConfiguration = Shapes::StructureShape.new(name: 'VolumeConfiguration')
+ VolumeIops = Shapes::IntegerShape.new(name: 'VolumeIops')
+ VolumeRetentionMode = Shapes::StringShape.new(name: 'VolumeRetentionMode')
+ VolumeSizeInGiB = Shapes::IntegerShape.new(name: 'VolumeSizeInGiB')
+ VolumeThroughputInMiBs = Shapes::IntegerShape.new(name: 'VolumeThroughputInMiBs')
+ WindowsMountDrive = Shapes::StringShape.new(name: 'WindowsMountDrive')
+
+ AcceptEulasRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location: "header", location_name: "X-Amz-Client-Token", metadata: {"idempotencyToken"=>true}))
+ AcceptEulasRequest.add_member(:eula_ids, Shapes::ShapeRef.new(shape: EulaIdList, location_name: "eulaIds"))
+ AcceptEulasRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ AcceptEulasRequest.struct_class = Types::AcceptEulasRequest
+
+ AcceptEulasResponse.add_member(:eula_acceptances, Shapes::ShapeRef.new(shape: EulaAcceptanceList, location_name: "eulaAcceptances"))
+ AcceptEulasResponse.struct_class = Types::AcceptEulasResponse
+
+ AccessDeniedException.add_member(:code, Shapes::ShapeRef.new(shape: String, location_name: "code"))
+ AccessDeniedException.add_member(:context, Shapes::ShapeRef.new(shape: ExceptionContext, location_name: "context"))
+ AccessDeniedException.add_member(:message, Shapes::ShapeRef.new(shape: String, location_name: "message"))
+ AccessDeniedException.struct_class = Types::AccessDeniedException
+
+ ActiveDirectoryComputerAttribute.add_member(:name, Shapes::ShapeRef.new(shape: ActiveDirectoryComputerAttributeName, location_name: "name"))
+ ActiveDirectoryComputerAttribute.add_member(:value, Shapes::ShapeRef.new(shape: ActiveDirectoryComputerAttributeValue, location_name: "value"))
+ ActiveDirectoryComputerAttribute.struct_class = Types::ActiveDirectoryComputerAttribute
+
+ ActiveDirectoryComputerAttributeList.member = Shapes::ShapeRef.new(shape: ActiveDirectoryComputerAttribute)
+
+ ActiveDirectoryConfiguration.add_member(:computer_attributes, Shapes::ShapeRef.new(shape: ActiveDirectoryComputerAttributeList, location_name: "computerAttributes"))
+ ActiveDirectoryConfiguration.add_member(:directory_id, Shapes::ShapeRef.new(shape: DirectoryId, location_name: "directoryId"))
+ ActiveDirectoryConfiguration.add_member(:organizational_unit_distinguished_name, Shapes::ShapeRef.new(shape: ActiveDirectoryOrganizationalUnitDistinguishedName, location_name: "organizationalUnitDistinguishedName"))
+ ActiveDirectoryConfiguration.struct_class = Types::ActiveDirectoryConfiguration
+
+ ActiveDirectoryDnsIpAddressList.member = Shapes::ShapeRef.new(shape: ActiveDirectoryDnsIpAddress)
+
+ ComputeFarmConfiguration.add_member(:active_directory_user, Shapes::ShapeRef.new(shape: String, location_name: "activeDirectoryUser"))
+ ComputeFarmConfiguration.add_member(:endpoint, Shapes::ShapeRef.new(shape: SensitiveString, location_name: "endpoint"))
+ ComputeFarmConfiguration.struct_class = Types::ComputeFarmConfiguration
+
+ ConflictException.add_member(:code, Shapes::ShapeRef.new(shape: String, location_name: "code"))
+ ConflictException.add_member(:context, Shapes::ShapeRef.new(shape: ExceptionContext, location_name: "context"))
+ ConflictException.add_member(:message, Shapes::ShapeRef.new(shape: String, location_name: "message"))
+ ConflictException.struct_class = Types::ConflictException
+
+ CreateLaunchProfileRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location: "header", location_name: "X-Amz-Client-Token", metadata: {"idempotencyToken"=>true}))
+ CreateLaunchProfileRequest.add_member(:description, Shapes::ShapeRef.new(shape: LaunchProfileDescription, location_name: "description"))
+ CreateLaunchProfileRequest.add_member(:ec2_subnet_ids, Shapes::ShapeRef.new(shape: EC2SubnetIdList, required: true, location_name: "ec2SubnetIds"))
+ CreateLaunchProfileRequest.add_member(:launch_profile_protocol_versions, Shapes::ShapeRef.new(shape: LaunchProfileProtocolVersionList, required: true, location_name: "launchProfileProtocolVersions"))
+ CreateLaunchProfileRequest.add_member(:name, Shapes::ShapeRef.new(shape: LaunchProfileName, required: true, location_name: "name"))
+ CreateLaunchProfileRequest.add_member(:stream_configuration, Shapes::ShapeRef.new(shape: StreamConfigurationCreate, required: true, location_name: "streamConfiguration"))
+ CreateLaunchProfileRequest.add_member(:studio_component_ids, Shapes::ShapeRef.new(shape: LaunchProfileStudioComponentIdList, required: true, location_name: "studioComponentIds"))
+ CreateLaunchProfileRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ CreateLaunchProfileRequest.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, location_name: "tags"))
+ CreateLaunchProfileRequest.struct_class = Types::CreateLaunchProfileRequest
+
+ CreateLaunchProfileResponse.add_member(:launch_profile, Shapes::ShapeRef.new(shape: LaunchProfile, location_name: "launchProfile"))
+ CreateLaunchProfileResponse.struct_class = Types::CreateLaunchProfileResponse
+
+ CreateStreamingImageRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location: "header", location_name: "X-Amz-Client-Token", metadata: {"idempotencyToken"=>true}))
+ CreateStreamingImageRequest.add_member(:description, Shapes::ShapeRef.new(shape: StreamingImageDescription, location_name: "description"))
+ CreateStreamingImageRequest.add_member(:ec2_image_id, Shapes::ShapeRef.new(shape: EC2ImageId, required: true, location_name: "ec2ImageId"))
+ CreateStreamingImageRequest.add_member(:name, Shapes::ShapeRef.new(shape: StreamingImageName, required: true, location_name: "name"))
+ CreateStreamingImageRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ CreateStreamingImageRequest.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, location_name: "tags"))
+ CreateStreamingImageRequest.struct_class = Types::CreateStreamingImageRequest
+
+ CreateStreamingImageResponse.add_member(:streaming_image, Shapes::ShapeRef.new(shape: StreamingImage, location_name: "streamingImage"))
+ CreateStreamingImageResponse.struct_class = Types::CreateStreamingImageResponse
+
+ CreateStreamingSessionRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location: "header", location_name: "X-Amz-Client-Token", metadata: {"idempotencyToken"=>true}))
+ CreateStreamingSessionRequest.add_member(:ec2_instance_type, Shapes::ShapeRef.new(shape: StreamingInstanceType, location_name: "ec2InstanceType"))
+ CreateStreamingSessionRequest.add_member(:launch_profile_id, Shapes::ShapeRef.new(shape: String, required: true, location_name: "launchProfileId"))
+ CreateStreamingSessionRequest.add_member(:owned_by, Shapes::ShapeRef.new(shape: String, location_name: "ownedBy"))
+ CreateStreamingSessionRequest.add_member(:streaming_image_id, Shapes::ShapeRef.new(shape: StreamingImageId, location_name: "streamingImageId"))
+ CreateStreamingSessionRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ CreateStreamingSessionRequest.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, location_name: "tags"))
+ CreateStreamingSessionRequest.struct_class = Types::CreateStreamingSessionRequest
+
+ CreateStreamingSessionResponse.add_member(:session, Shapes::ShapeRef.new(shape: StreamingSession, location_name: "session"))
+ CreateStreamingSessionResponse.struct_class = Types::CreateStreamingSessionResponse
+
+ CreateStreamingSessionStreamRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location: "header", location_name: "X-Amz-Client-Token", metadata: {"idempotencyToken"=>true}))
+ CreateStreamingSessionStreamRequest.add_member(:expiration_in_seconds, Shapes::ShapeRef.new(shape: StreamingSessionStreamExpirationInSeconds, location_name: "expirationInSeconds"))
+ CreateStreamingSessionStreamRequest.add_member(:session_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "sessionId"))
+ CreateStreamingSessionStreamRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ CreateStreamingSessionStreamRequest.struct_class = Types::CreateStreamingSessionStreamRequest
+
+ CreateStreamingSessionStreamResponse.add_member(:stream, Shapes::ShapeRef.new(shape: StreamingSessionStream, location_name: "stream"))
+ CreateStreamingSessionStreamResponse.struct_class = Types::CreateStreamingSessionStreamResponse
+
+ CreateStudioComponentRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location: "header", location_name: "X-Amz-Client-Token", metadata: {"idempotencyToken"=>true}))
+ CreateStudioComponentRequest.add_member(:configuration, Shapes::ShapeRef.new(shape: StudioComponentConfiguration, location_name: "configuration"))
+ CreateStudioComponentRequest.add_member(:description, Shapes::ShapeRef.new(shape: StudioComponentDescription, location_name: "description"))
+ CreateStudioComponentRequest.add_member(:ec2_security_group_ids, Shapes::ShapeRef.new(shape: StudioComponentSecurityGroupIdList, location_name: "ec2SecurityGroupIds"))
+ CreateStudioComponentRequest.add_member(:initialization_scripts, Shapes::ShapeRef.new(shape: StudioComponentInitializationScriptList, location_name: "initializationScripts"))
+ CreateStudioComponentRequest.add_member(:name, Shapes::ShapeRef.new(shape: StudioComponentName, required: true, location_name: "name"))
+ CreateStudioComponentRequest.add_member(:runtime_role_arn, Shapes::ShapeRef.new(shape: RoleArn, location_name: "runtimeRoleArn"))
+ CreateStudioComponentRequest.add_member(:script_parameters, Shapes::ShapeRef.new(shape: StudioComponentScriptParameterKeyValueList, location_name: "scriptParameters"))
+ CreateStudioComponentRequest.add_member(:secure_initialization_role_arn, Shapes::ShapeRef.new(shape: RoleArn, location_name: "secureInitializationRoleArn"))
+ CreateStudioComponentRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ CreateStudioComponentRequest.add_member(:subtype, Shapes::ShapeRef.new(shape: StudioComponentSubtype, location_name: "subtype"))
+ CreateStudioComponentRequest.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, location_name: "tags"))
+ CreateStudioComponentRequest.add_member(:type, Shapes::ShapeRef.new(shape: StudioComponentType, required: true, location_name: "type"))
+ CreateStudioComponentRequest.struct_class = Types::CreateStudioComponentRequest
+
+ CreateStudioComponentResponse.add_member(:studio_component, Shapes::ShapeRef.new(shape: StudioComponent, location_name: "studioComponent"))
+ CreateStudioComponentResponse.struct_class = Types::CreateStudioComponentResponse
+
+ CreateStudioRequest.add_member(:admin_role_arn, Shapes::ShapeRef.new(shape: RoleArn, required: true, location_name: "adminRoleArn"))
+ CreateStudioRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location: "header", location_name: "X-Amz-Client-Token", metadata: {"idempotencyToken"=>true}))
+ CreateStudioRequest.add_member(:display_name, Shapes::ShapeRef.new(shape: StudioDisplayName, required: true, location_name: "displayName"))
+ CreateStudioRequest.add_member(:studio_encryption_configuration, Shapes::ShapeRef.new(shape: StudioEncryptionConfiguration, location_name: "studioEncryptionConfiguration"))
+ CreateStudioRequest.add_member(:studio_name, Shapes::ShapeRef.new(shape: StudioName, required: true, location_name: "studioName"))
+ CreateStudioRequest.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, location_name: "tags"))
+ CreateStudioRequest.add_member(:user_role_arn, Shapes::ShapeRef.new(shape: RoleArn, required: true, location_name: "userRoleArn"))
+ CreateStudioRequest.struct_class = Types::CreateStudioRequest
+
+ CreateStudioResponse.add_member(:studio, Shapes::ShapeRef.new(shape: Studio, location_name: "studio"))
+ CreateStudioResponse.struct_class = Types::CreateStudioResponse
+
+ DeleteLaunchProfileMemberRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location: "header", location_name: "X-Amz-Client-Token", metadata: {"idempotencyToken"=>true}))
+ DeleteLaunchProfileMemberRequest.add_member(:launch_profile_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "launchProfileId"))
+ DeleteLaunchProfileMemberRequest.add_member(:principal_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "principalId"))
+ DeleteLaunchProfileMemberRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ DeleteLaunchProfileMemberRequest.struct_class = Types::DeleteLaunchProfileMemberRequest
+
+ DeleteLaunchProfileMemberResponse.struct_class = Types::DeleteLaunchProfileMemberResponse
+
+ DeleteLaunchProfileRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location: "header", location_name: "X-Amz-Client-Token", metadata: {"idempotencyToken"=>true}))
+ DeleteLaunchProfileRequest.add_member(:launch_profile_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "launchProfileId"))
+ DeleteLaunchProfileRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ DeleteLaunchProfileRequest.struct_class = Types::DeleteLaunchProfileRequest
+
+ DeleteLaunchProfileResponse.add_member(:launch_profile, Shapes::ShapeRef.new(shape: LaunchProfile, location_name: "launchProfile"))
+ DeleteLaunchProfileResponse.struct_class = Types::DeleteLaunchProfileResponse
+
+ DeleteStreamingImageRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location: "header", location_name: "X-Amz-Client-Token", metadata: {"idempotencyToken"=>true}))
+ DeleteStreamingImageRequest.add_member(:streaming_image_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "streamingImageId"))
+ DeleteStreamingImageRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ DeleteStreamingImageRequest.struct_class = Types::DeleteStreamingImageRequest
+
+ DeleteStreamingImageResponse.add_member(:streaming_image, Shapes::ShapeRef.new(shape: StreamingImage, location_name: "streamingImage"))
+ DeleteStreamingImageResponse.struct_class = Types::DeleteStreamingImageResponse
+
+ DeleteStreamingSessionRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location: "header", location_name: "X-Amz-Client-Token", metadata: {"idempotencyToken"=>true}))
+ DeleteStreamingSessionRequest.add_member(:session_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "sessionId"))
+ DeleteStreamingSessionRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ DeleteStreamingSessionRequest.struct_class = Types::DeleteStreamingSessionRequest
+
+ DeleteStreamingSessionResponse.add_member(:session, Shapes::ShapeRef.new(shape: StreamingSession, location_name: "session"))
+ DeleteStreamingSessionResponse.struct_class = Types::DeleteStreamingSessionResponse
+
+ DeleteStudioComponentRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location: "header", location_name: "X-Amz-Client-Token", metadata: {"idempotencyToken"=>true}))
+ DeleteStudioComponentRequest.add_member(:studio_component_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioComponentId"))
+ DeleteStudioComponentRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ DeleteStudioComponentRequest.struct_class = Types::DeleteStudioComponentRequest
+
+ DeleteStudioComponentResponse.add_member(:studio_component, Shapes::ShapeRef.new(shape: StudioComponent, location_name: "studioComponent"))
+ DeleteStudioComponentResponse.struct_class = Types::DeleteStudioComponentResponse
+
+ DeleteStudioMemberRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location: "header", location_name: "X-Amz-Client-Token", metadata: {"idempotencyToken"=>true}))
+ DeleteStudioMemberRequest.add_member(:principal_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "principalId"))
+ DeleteStudioMemberRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ DeleteStudioMemberRequest.struct_class = Types::DeleteStudioMemberRequest
+
+ DeleteStudioMemberResponse.struct_class = Types::DeleteStudioMemberResponse
+
+ DeleteStudioRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location: "header", location_name: "X-Amz-Client-Token", metadata: {"idempotencyToken"=>true}))
+ DeleteStudioRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ DeleteStudioRequest.struct_class = Types::DeleteStudioRequest
+
+ DeleteStudioResponse.add_member(:studio, Shapes::ShapeRef.new(shape: Studio, required: true, location_name: "studio"))
+ DeleteStudioResponse.struct_class = Types::DeleteStudioResponse
+
+ EC2SubnetIdList.member = Shapes::ShapeRef.new(shape: EC2SubnetId)
+
+ Eula.add_member(:content, Shapes::ShapeRef.new(shape: String, location_name: "content"))
+ Eula.add_member(:created_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "createdAt"))
+ Eula.add_member(:eula_id, Shapes::ShapeRef.new(shape: EulaId, location_name: "eulaId"))
+ Eula.add_member(:name, Shapes::ShapeRef.new(shape: EulaName, location_name: "name"))
+ Eula.add_member(:updated_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "updatedAt"))
+ Eula.struct_class = Types::Eula
+
+ EulaAcceptance.add_member(:accepted_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "acceptedAt"))
+ EulaAcceptance.add_member(:accepted_by, Shapes::ShapeRef.new(shape: String, location_name: "acceptedBy"))
+ EulaAcceptance.add_member(:acceptee_id, Shapes::ShapeRef.new(shape: String, location_name: "accepteeId"))
+ EulaAcceptance.add_member(:eula_acceptance_id, Shapes::ShapeRef.new(shape: EulaAcceptanceId, location_name: "eulaAcceptanceId"))
+ EulaAcceptance.add_member(:eula_id, Shapes::ShapeRef.new(shape: EulaId, location_name: "eulaId"))
+ EulaAcceptance.struct_class = Types::EulaAcceptance
+
+ EulaAcceptanceList.member = Shapes::ShapeRef.new(shape: EulaAcceptance)
+
+ EulaIdList.member = Shapes::ShapeRef.new(shape: String)
+
+ EulaList.member = Shapes::ShapeRef.new(shape: Eula)
+
+ ExceptionContext.key = Shapes::ShapeRef.new(shape: String)
+ ExceptionContext.value = Shapes::ShapeRef.new(shape: String)
+
+ GetEulaRequest.add_member(:eula_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "eulaId"))
+ GetEulaRequest.struct_class = Types::GetEulaRequest
+
+ GetEulaResponse.add_member(:eula, Shapes::ShapeRef.new(shape: Eula, location_name: "eula"))
+ GetEulaResponse.struct_class = Types::GetEulaResponse
+
+ GetLaunchProfileDetailsRequest.add_member(:launch_profile_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "launchProfileId"))
+ GetLaunchProfileDetailsRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ GetLaunchProfileDetailsRequest.struct_class = Types::GetLaunchProfileDetailsRequest
+
+ GetLaunchProfileDetailsResponse.add_member(:launch_profile, Shapes::ShapeRef.new(shape: LaunchProfile, location_name: "launchProfile"))
+ GetLaunchProfileDetailsResponse.add_member(:streaming_images, Shapes::ShapeRef.new(shape: StreamingImageList, location_name: "streamingImages"))
+ GetLaunchProfileDetailsResponse.add_member(:studio_component_summaries, Shapes::ShapeRef.new(shape: StudioComponentSummaryList, location_name: "studioComponentSummaries"))
+ GetLaunchProfileDetailsResponse.struct_class = Types::GetLaunchProfileDetailsResponse
+
+ GetLaunchProfileInitializationRequest.add_member(:launch_profile_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "launchProfileId"))
+ GetLaunchProfileInitializationRequest.add_member(:launch_profile_protocol_versions, Shapes::ShapeRef.new(shape: StringList, required: true, location: "querystring", location_name: "launchProfileProtocolVersions"))
+ GetLaunchProfileInitializationRequest.add_member(:launch_purpose, Shapes::ShapeRef.new(shape: String, required: true, location: "querystring", location_name: "launchPurpose"))
+ GetLaunchProfileInitializationRequest.add_member(:platform, Shapes::ShapeRef.new(shape: String, required: true, location: "querystring", location_name: "platform"))
+ GetLaunchProfileInitializationRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ GetLaunchProfileInitializationRequest.struct_class = Types::GetLaunchProfileInitializationRequest
+
+ GetLaunchProfileInitializationResponse.add_member(:launch_profile_initialization, Shapes::ShapeRef.new(shape: LaunchProfileInitialization, location_name: "launchProfileInitialization"))
+ GetLaunchProfileInitializationResponse.struct_class = Types::GetLaunchProfileInitializationResponse
+
+ GetLaunchProfileMemberRequest.add_member(:launch_profile_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "launchProfileId"))
+ GetLaunchProfileMemberRequest.add_member(:principal_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "principalId"))
+ GetLaunchProfileMemberRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ GetLaunchProfileMemberRequest.struct_class = Types::GetLaunchProfileMemberRequest
+
+ GetLaunchProfileMemberResponse.add_member(:member, Shapes::ShapeRef.new(shape: LaunchProfileMembership, location_name: "member"))
+ GetLaunchProfileMemberResponse.struct_class = Types::GetLaunchProfileMemberResponse
+
+ GetLaunchProfileRequest.add_member(:launch_profile_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "launchProfileId"))
+ GetLaunchProfileRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ GetLaunchProfileRequest.struct_class = Types::GetLaunchProfileRequest
+
+ GetLaunchProfileResponse.add_member(:launch_profile, Shapes::ShapeRef.new(shape: LaunchProfile, location_name: "launchProfile"))
+ GetLaunchProfileResponse.struct_class = Types::GetLaunchProfileResponse
+
+ GetStreamingImageRequest.add_member(:streaming_image_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "streamingImageId"))
+ GetStreamingImageRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ GetStreamingImageRequest.struct_class = Types::GetStreamingImageRequest
+
+ GetStreamingImageResponse.add_member(:streaming_image, Shapes::ShapeRef.new(shape: StreamingImage, location_name: "streamingImage"))
+ GetStreamingImageResponse.struct_class = Types::GetStreamingImageResponse
+
+ GetStreamingSessionBackupRequest.add_member(:backup_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "backupId"))
+ GetStreamingSessionBackupRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ GetStreamingSessionBackupRequest.struct_class = Types::GetStreamingSessionBackupRequest
+
+ GetStreamingSessionBackupResponse.add_member(:streaming_session_backup, Shapes::ShapeRef.new(shape: StreamingSessionBackup, location_name: "streamingSessionBackup"))
+ GetStreamingSessionBackupResponse.struct_class = Types::GetStreamingSessionBackupResponse
+
+ GetStreamingSessionRequest.add_member(:session_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "sessionId"))
+ GetStreamingSessionRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ GetStreamingSessionRequest.struct_class = Types::GetStreamingSessionRequest
+
+ GetStreamingSessionResponse.add_member(:session, Shapes::ShapeRef.new(shape: StreamingSession, location_name: "session"))
+ GetStreamingSessionResponse.struct_class = Types::GetStreamingSessionResponse
+
+ GetStreamingSessionStreamRequest.add_member(:session_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "sessionId"))
+ GetStreamingSessionStreamRequest.add_member(:stream_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "streamId"))
+ GetStreamingSessionStreamRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ GetStreamingSessionStreamRequest.struct_class = Types::GetStreamingSessionStreamRequest
+
+ GetStreamingSessionStreamResponse.add_member(:stream, Shapes::ShapeRef.new(shape: StreamingSessionStream, location_name: "stream"))
+ GetStreamingSessionStreamResponse.struct_class = Types::GetStreamingSessionStreamResponse
+
+ GetStudioComponentRequest.add_member(:studio_component_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioComponentId"))
+ GetStudioComponentRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ GetStudioComponentRequest.struct_class = Types::GetStudioComponentRequest
+
+ GetStudioComponentResponse.add_member(:studio_component, Shapes::ShapeRef.new(shape: StudioComponent, location_name: "studioComponent"))
+ GetStudioComponentResponse.struct_class = Types::GetStudioComponentResponse
+
+ GetStudioMemberRequest.add_member(:principal_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "principalId"))
+ GetStudioMemberRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ GetStudioMemberRequest.struct_class = Types::GetStudioMemberRequest
+
+ GetStudioMemberResponse.add_member(:member, Shapes::ShapeRef.new(shape: StudioMembership, location_name: "member"))
+ GetStudioMemberResponse.struct_class = Types::GetStudioMemberResponse
+
+ GetStudioRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ GetStudioRequest.struct_class = Types::GetStudioRequest
+
+ GetStudioResponse.add_member(:studio, Shapes::ShapeRef.new(shape: Studio, required: true, location_name: "studio"))
+ GetStudioResponse.struct_class = Types::GetStudioResponse
+
+ InternalServerErrorException.add_member(:code, Shapes::ShapeRef.new(shape: String, location_name: "code"))
+ InternalServerErrorException.add_member(:context, Shapes::ShapeRef.new(shape: ExceptionContext, location_name: "context"))
+ InternalServerErrorException.add_member(:message, Shapes::ShapeRef.new(shape: String, location_name: "message"))
+ InternalServerErrorException.struct_class = Types::InternalServerErrorException
+
+ LaunchProfile.add_member(:arn, Shapes::ShapeRef.new(shape: String, location_name: "arn"))
+ LaunchProfile.add_member(:created_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "createdAt"))
+ LaunchProfile.add_member(:created_by, Shapes::ShapeRef.new(shape: String, location_name: "createdBy"))
+ LaunchProfile.add_member(:description, Shapes::ShapeRef.new(shape: LaunchProfileDescription, location_name: "description"))
+ LaunchProfile.add_member(:ec2_subnet_ids, Shapes::ShapeRef.new(shape: EC2SubnetIdList, location_name: "ec2SubnetIds"))
+ LaunchProfile.add_member(:launch_profile_id, Shapes::ShapeRef.new(shape: LaunchProfileId, location_name: "launchProfileId"))
+ LaunchProfile.add_member(:launch_profile_protocol_versions, Shapes::ShapeRef.new(shape: LaunchProfileProtocolVersionList, location_name: "launchProfileProtocolVersions"))
+ LaunchProfile.add_member(:name, Shapes::ShapeRef.new(shape: LaunchProfileName, location_name: "name"))
+ LaunchProfile.add_member(:state, Shapes::ShapeRef.new(shape: LaunchProfileState, location_name: "state"))
+ LaunchProfile.add_member(:status_code, Shapes::ShapeRef.new(shape: LaunchProfileStatusCode, location_name: "statusCode"))
+ LaunchProfile.add_member(:status_message, Shapes::ShapeRef.new(shape: String, location_name: "statusMessage"))
+ LaunchProfile.add_member(:stream_configuration, Shapes::ShapeRef.new(shape: StreamConfiguration, location_name: "streamConfiguration"))
+ LaunchProfile.add_member(:studio_component_ids, Shapes::ShapeRef.new(shape: LaunchProfileStudioComponentIdList, location_name: "studioComponentIds"))
+ LaunchProfile.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, location_name: "tags"))
+ LaunchProfile.add_member(:updated_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "updatedAt"))
+ LaunchProfile.add_member(:updated_by, Shapes::ShapeRef.new(shape: String, location_name: "updatedBy"))
+ LaunchProfile.add_member(:validation_results, Shapes::ShapeRef.new(shape: ValidationResults, location_name: "validationResults"))
+ LaunchProfile.struct_class = Types::LaunchProfile
+
+ LaunchProfileInitialization.add_member(:active_directory, Shapes::ShapeRef.new(shape: LaunchProfileInitializationActiveDirectory, location_name: "activeDirectory"))
+ LaunchProfileInitialization.add_member(:ec2_security_group_ids, Shapes::ShapeRef.new(shape: LaunchProfileSecurityGroupIdList, location_name: "ec2SecurityGroupIds"))
+ LaunchProfileInitialization.add_member(:launch_profile_id, Shapes::ShapeRef.new(shape: LaunchProfileId, location_name: "launchProfileId"))
+ LaunchProfileInitialization.add_member(:launch_profile_protocol_version, Shapes::ShapeRef.new(shape: LaunchProfileProtocolVersion, location_name: "launchProfileProtocolVersion"))
+ LaunchProfileInitialization.add_member(:launch_purpose, Shapes::ShapeRef.new(shape: LaunchPurpose, location_name: "launchPurpose"))
+ LaunchProfileInitialization.add_member(:name, Shapes::ShapeRef.new(shape: LaunchProfileName, location_name: "name"))
+ LaunchProfileInitialization.add_member(:platform, Shapes::ShapeRef.new(shape: LaunchProfilePlatform, location_name: "platform"))
+ LaunchProfileInitialization.add_member(:system_initialization_scripts, Shapes::ShapeRef.new(shape: LaunchProfileInitializationScriptList, location_name: "systemInitializationScripts"))
+ LaunchProfileInitialization.add_member(:user_initialization_scripts, Shapes::ShapeRef.new(shape: LaunchProfileInitializationScriptList, location_name: "userInitializationScripts"))
+ LaunchProfileInitialization.struct_class = Types::LaunchProfileInitialization
+
+ LaunchProfileInitializationActiveDirectory.add_member(:computer_attributes, Shapes::ShapeRef.new(shape: ActiveDirectoryComputerAttributeList, location_name: "computerAttributes"))
+ LaunchProfileInitializationActiveDirectory.add_member(:directory_id, Shapes::ShapeRef.new(shape: DirectoryId, location_name: "directoryId"))
+ LaunchProfileInitializationActiveDirectory.add_member(:directory_name, Shapes::ShapeRef.new(shape: String, location_name: "directoryName"))
+ LaunchProfileInitializationActiveDirectory.add_member(:dns_ip_addresses, Shapes::ShapeRef.new(shape: ActiveDirectoryDnsIpAddressList, location_name: "dnsIpAddresses"))
+ LaunchProfileInitializationActiveDirectory.add_member(:organizational_unit_distinguished_name, Shapes::ShapeRef.new(shape: ActiveDirectoryOrganizationalUnitDistinguishedName, location_name: "organizationalUnitDistinguishedName"))
+ LaunchProfileInitializationActiveDirectory.add_member(:studio_component_id, Shapes::ShapeRef.new(shape: StudioComponentId, location_name: "studioComponentId"))
+ LaunchProfileInitializationActiveDirectory.add_member(:studio_component_name, Shapes::ShapeRef.new(shape: StudioComponentName, location_name: "studioComponentName"))
+ LaunchProfileInitializationActiveDirectory.struct_class = Types::LaunchProfileInitializationActiveDirectory
+
+ LaunchProfileInitializationScript.add_member(:runtime_role_arn, Shapes::ShapeRef.new(shape: RoleArn, location_name: "runtimeRoleArn"))
+ LaunchProfileInitializationScript.add_member(:script, Shapes::ShapeRef.new(shape: StudioComponentInitializationScriptContent, location_name: "script"))
+ LaunchProfileInitializationScript.add_member(:secure_initialization_role_arn, Shapes::ShapeRef.new(shape: RoleArn, location_name: "secureInitializationRoleArn"))
+ LaunchProfileInitializationScript.add_member(:studio_component_id, Shapes::ShapeRef.new(shape: StudioComponentId, location_name: "studioComponentId"))
+ LaunchProfileInitializationScript.add_member(:studio_component_name, Shapes::ShapeRef.new(shape: StudioComponentName, location_name: "studioComponentName"))
+ LaunchProfileInitializationScript.struct_class = Types::LaunchProfileInitializationScript
+
+ LaunchProfileInitializationScriptList.member = Shapes::ShapeRef.new(shape: LaunchProfileInitializationScript)
+
+ LaunchProfileList.member = Shapes::ShapeRef.new(shape: LaunchProfile)
+
+ LaunchProfileMembership.add_member(:identity_store_id, Shapes::ShapeRef.new(shape: String, location_name: "identityStoreId"))
+ LaunchProfileMembership.add_member(:persona, Shapes::ShapeRef.new(shape: LaunchProfilePersona, location_name: "persona"))
+ LaunchProfileMembership.add_member(:principal_id, Shapes::ShapeRef.new(shape: String, location_name: "principalId"))
+ LaunchProfileMembership.add_member(:sid, Shapes::ShapeRef.new(shape: String, location_name: "sid"))
+ LaunchProfileMembership.struct_class = Types::LaunchProfileMembership
+
+ LaunchProfileMembershipList.member = Shapes::ShapeRef.new(shape: LaunchProfileMembership)
+
+ LaunchProfileProtocolVersionList.member = Shapes::ShapeRef.new(shape: LaunchProfileProtocolVersion)
+
+ LaunchProfileSecurityGroupIdList.member = Shapes::ShapeRef.new(shape: SecurityGroupId)
+
+ LaunchProfileStateList.member = Shapes::ShapeRef.new(shape: LaunchProfileState)
+
+ LaunchProfileStudioComponentIdList.member = Shapes::ShapeRef.new(shape: String)
+
+ LicenseServiceConfiguration.add_member(:endpoint, Shapes::ShapeRef.new(shape: SensitiveString, location_name: "endpoint"))
+ LicenseServiceConfiguration.struct_class = Types::LicenseServiceConfiguration
+
+ ListEulaAcceptancesRequest.add_member(:eula_ids, Shapes::ShapeRef.new(shape: StringList, location: "querystring", location_name: "eulaIds"))
+ ListEulaAcceptancesRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location: "querystring", location_name: "nextToken"))
+ ListEulaAcceptancesRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ ListEulaAcceptancesRequest.struct_class = Types::ListEulaAcceptancesRequest
+
+ ListEulaAcceptancesResponse.add_member(:eula_acceptances, Shapes::ShapeRef.new(shape: EulaAcceptanceList, location_name: "eulaAcceptances"))
+ ListEulaAcceptancesResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location_name: "nextToken"))
+ ListEulaAcceptancesResponse.struct_class = Types::ListEulaAcceptancesResponse
+
+ ListEulasRequest.add_member(:eula_ids, Shapes::ShapeRef.new(shape: StringList, location: "querystring", location_name: "eulaIds"))
+ ListEulasRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location: "querystring", location_name: "nextToken"))
+ ListEulasRequest.struct_class = Types::ListEulasRequest
+
+ ListEulasResponse.add_member(:eulas, Shapes::ShapeRef.new(shape: EulaList, location_name: "eulas"))
+ ListEulasResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location_name: "nextToken"))
+ ListEulasResponse.struct_class = Types::ListEulasResponse
+
+ ListLaunchProfileMembersRequest.add_member(:launch_profile_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "launchProfileId"))
+ ListLaunchProfileMembersRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location: "querystring", location_name: "maxResults"))
+ ListLaunchProfileMembersRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location: "querystring", location_name: "nextToken"))
+ ListLaunchProfileMembersRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ ListLaunchProfileMembersRequest.struct_class = Types::ListLaunchProfileMembersRequest
+
+ ListLaunchProfileMembersResponse.add_member(:members, Shapes::ShapeRef.new(shape: LaunchProfileMembershipList, location_name: "members"))
+ ListLaunchProfileMembersResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location_name: "nextToken"))
+ ListLaunchProfileMembersResponse.struct_class = Types::ListLaunchProfileMembersResponse
+
+ ListLaunchProfilesRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location: "querystring", location_name: "maxResults"))
+ ListLaunchProfilesRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location: "querystring", location_name: "nextToken"))
+ ListLaunchProfilesRequest.add_member(:principal_id, Shapes::ShapeRef.new(shape: String, location: "querystring", location_name: "principalId"))
+ ListLaunchProfilesRequest.add_member(:states, Shapes::ShapeRef.new(shape: LaunchProfileStateList, location: "querystring", location_name: "states"))
+ ListLaunchProfilesRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ ListLaunchProfilesRequest.struct_class = Types::ListLaunchProfilesRequest
+
+ ListLaunchProfilesResponse.add_member(:launch_profiles, Shapes::ShapeRef.new(shape: LaunchProfileList, location_name: "launchProfiles"))
+ ListLaunchProfilesResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location_name: "nextToken"))
+ ListLaunchProfilesResponse.struct_class = Types::ListLaunchProfilesResponse
+
+ ListStreamingImagesRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location: "querystring", location_name: "nextToken"))
+ ListStreamingImagesRequest.add_member(:owner, Shapes::ShapeRef.new(shape: String, location: "querystring", location_name: "owner"))
+ ListStreamingImagesRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ ListStreamingImagesRequest.struct_class = Types::ListStreamingImagesRequest
+
+ ListStreamingImagesResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location_name: "nextToken"))
+ ListStreamingImagesResponse.add_member(:streaming_images, Shapes::ShapeRef.new(shape: StreamingImageList, location_name: "streamingImages"))
+ ListStreamingImagesResponse.struct_class = Types::ListStreamingImagesResponse
+
+ ListStreamingSessionBackupsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location: "querystring", location_name: "nextToken"))
+ ListStreamingSessionBackupsRequest.add_member(:owned_by, Shapes::ShapeRef.new(shape: String, location: "querystring", location_name: "ownedBy"))
+ ListStreamingSessionBackupsRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ ListStreamingSessionBackupsRequest.struct_class = Types::ListStreamingSessionBackupsRequest
+
+ ListStreamingSessionBackupsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location_name: "nextToken"))
+ ListStreamingSessionBackupsResponse.add_member(:streaming_session_backups, Shapes::ShapeRef.new(shape: StreamingSessionBackupList, location_name: "streamingSessionBackups"))
+ ListStreamingSessionBackupsResponse.struct_class = Types::ListStreamingSessionBackupsResponse
+
+ ListStreamingSessionsRequest.add_member(:created_by, Shapes::ShapeRef.new(shape: String, location: "querystring", location_name: "createdBy"))
+ ListStreamingSessionsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location: "querystring", location_name: "nextToken"))
+ ListStreamingSessionsRequest.add_member(:owned_by, Shapes::ShapeRef.new(shape: String, location: "querystring", location_name: "ownedBy"))
+ ListStreamingSessionsRequest.add_member(:session_ids, Shapes::ShapeRef.new(shape: String, location: "querystring", location_name: "sessionIds"))
+ ListStreamingSessionsRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ ListStreamingSessionsRequest.struct_class = Types::ListStreamingSessionsRequest
+
+ ListStreamingSessionsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location_name: "nextToken"))
+ ListStreamingSessionsResponse.add_member(:sessions, Shapes::ShapeRef.new(shape: StreamingSessionList, location_name: "sessions"))
+ ListStreamingSessionsResponse.struct_class = Types::ListStreamingSessionsResponse
+
+ ListStudioComponentsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location: "querystring", location_name: "maxResults"))
+ ListStudioComponentsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location: "querystring", location_name: "nextToken"))
+ ListStudioComponentsRequest.add_member(:states, Shapes::ShapeRef.new(shape: StudioComponentStateList, location: "querystring", location_name: "states"))
+ ListStudioComponentsRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ ListStudioComponentsRequest.add_member(:types, Shapes::ShapeRef.new(shape: StudioComponentTypeList, location: "querystring", location_name: "types"))
+ ListStudioComponentsRequest.struct_class = Types::ListStudioComponentsRequest
+
+ ListStudioComponentsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location_name: "nextToken"))
+ ListStudioComponentsResponse.add_member(:studio_components, Shapes::ShapeRef.new(shape: StudioComponentList, location_name: "studioComponents"))
+ ListStudioComponentsResponse.struct_class = Types::ListStudioComponentsResponse
+
+ ListStudioMembersRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location: "querystring", location_name: "maxResults"))
+ ListStudioMembersRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location: "querystring", location_name: "nextToken"))
+ ListStudioMembersRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ ListStudioMembersRequest.struct_class = Types::ListStudioMembersRequest
+
+ ListStudioMembersResponse.add_member(:members, Shapes::ShapeRef.new(shape: StudioMembershipList, location_name: "members"))
+ ListStudioMembersResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location_name: "nextToken"))
+ ListStudioMembersResponse.struct_class = Types::ListStudioMembersResponse
+
+ ListStudiosRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location: "querystring", location_name: "nextToken"))
+ ListStudiosRequest.struct_class = Types::ListStudiosRequest
+
+ ListStudiosResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: String, location_name: "nextToken"))
+ ListStudiosResponse.add_member(:studios, Shapes::ShapeRef.new(shape: StudioList, required: true, location_name: "studios"))
+ ListStudiosResponse.struct_class = Types::ListStudiosResponse
+
+ ListTagsForResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "resourceArn"))
+ ListTagsForResourceRequest.struct_class = Types::ListTagsForResourceRequest
+
+ ListTagsForResourceResponse.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, location_name: "tags"))
+ ListTagsForResourceResponse.struct_class = Types::ListTagsForResourceResponse
+
+ NewLaunchProfileMember.add_member(:persona, Shapes::ShapeRef.new(shape: LaunchProfilePersona, required: true, location_name: "persona"))
+ NewLaunchProfileMember.add_member(:principal_id, Shapes::ShapeRef.new(shape: String, required: true, location_name: "principalId"))
+ NewLaunchProfileMember.struct_class = Types::NewLaunchProfileMember
+
+ NewLaunchProfileMemberList.member = Shapes::ShapeRef.new(shape: NewLaunchProfileMember)
+
+ NewStudioMember.add_member(:persona, Shapes::ShapeRef.new(shape: StudioPersona, required: true, location_name: "persona"))
+ NewStudioMember.add_member(:principal_id, Shapes::ShapeRef.new(shape: String, required: true, location_name: "principalId"))
+ NewStudioMember.struct_class = Types::NewStudioMember
+
+ NewStudioMemberList.member = Shapes::ShapeRef.new(shape: NewStudioMember)
+
+ PutLaunchProfileMembersRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location: "header", location_name: "X-Amz-Client-Token", metadata: {"idempotencyToken"=>true}))
+ PutLaunchProfileMembersRequest.add_member(:identity_store_id, Shapes::ShapeRef.new(shape: String, required: true, location_name: "identityStoreId"))
+ PutLaunchProfileMembersRequest.add_member(:launch_profile_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "launchProfileId"))
+ PutLaunchProfileMembersRequest.add_member(:members, Shapes::ShapeRef.new(shape: NewLaunchProfileMemberList, required: true, location_name: "members"))
+ PutLaunchProfileMembersRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ PutLaunchProfileMembersRequest.struct_class = Types::PutLaunchProfileMembersRequest
+
+ PutLaunchProfileMembersResponse.struct_class = Types::PutLaunchProfileMembersResponse
+
+ PutStudioMembersRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location: "header", location_name: "X-Amz-Client-Token", metadata: {"idempotencyToken"=>true}))
+ PutStudioMembersRequest.add_member(:identity_store_id, Shapes::ShapeRef.new(shape: String, required: true, location_name: "identityStoreId"))
+ PutStudioMembersRequest.add_member(:members, Shapes::ShapeRef.new(shape: NewStudioMemberList, required: true, location_name: "members"))
+ PutStudioMembersRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ PutStudioMembersRequest.struct_class = Types::PutStudioMembersRequest
+
+ PutStudioMembersResponse.struct_class = Types::PutStudioMembersResponse
+
+ ResourceNotFoundException.add_member(:code, Shapes::ShapeRef.new(shape: String, location_name: "code"))
+ ResourceNotFoundException.add_member(:context, Shapes::ShapeRef.new(shape: ExceptionContext, location_name: "context"))
+ ResourceNotFoundException.add_member(:message, Shapes::ShapeRef.new(shape: String, location_name: "message"))
+ ResourceNotFoundException.struct_class = Types::ResourceNotFoundException
+
+ ScriptParameterKeyValue.add_member(:key, Shapes::ShapeRef.new(shape: ScriptParameterKey, location_name: "key"))
+ ScriptParameterKeyValue.add_member(:value, Shapes::ShapeRef.new(shape: ScriptParameterValue, location_name: "value"))
+ ScriptParameterKeyValue.struct_class = Types::ScriptParameterKeyValue
+
+ ServiceQuotaExceededException.add_member(:code, Shapes::ShapeRef.new(shape: String, location_name: "code"))
+ ServiceQuotaExceededException.add_member(:context, Shapes::ShapeRef.new(shape: ExceptionContext, location_name: "context"))
+ ServiceQuotaExceededException.add_member(:message, Shapes::ShapeRef.new(shape: String, location_name: "message"))
+ ServiceQuotaExceededException.struct_class = Types::ServiceQuotaExceededException
+
+ SharedFileSystemConfiguration.add_member(:endpoint, Shapes::ShapeRef.new(shape: SensitiveString, location_name: "endpoint"))
+ SharedFileSystemConfiguration.add_member(:file_system_id, Shapes::ShapeRef.new(shape: String, location_name: "fileSystemId"))
+ SharedFileSystemConfiguration.add_member(:linux_mount_point, Shapes::ShapeRef.new(shape: LinuxMountPoint, location_name: "linuxMountPoint"))
+ SharedFileSystemConfiguration.add_member(:share_name, Shapes::ShapeRef.new(shape: SensitiveString, location_name: "shareName"))
+ SharedFileSystemConfiguration.add_member(:windows_mount_drive, Shapes::ShapeRef.new(shape: WindowsMountDrive, location_name: "windowsMountDrive"))
+ SharedFileSystemConfiguration.struct_class = Types::SharedFileSystemConfiguration
+
+ StartStreamingSessionRequest.add_member(:backup_id, Shapes::ShapeRef.new(shape: String, location_name: "backupId"))
+ StartStreamingSessionRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location: "header", location_name: "X-Amz-Client-Token", metadata: {"idempotencyToken"=>true}))
+ StartStreamingSessionRequest.add_member(:session_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "sessionId"))
+ StartStreamingSessionRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ StartStreamingSessionRequest.struct_class = Types::StartStreamingSessionRequest
+
+ StartStreamingSessionResponse.add_member(:session, Shapes::ShapeRef.new(shape: StreamingSession, location_name: "session"))
+ StartStreamingSessionResponse.struct_class = Types::StartStreamingSessionResponse
+
+ StartStudioSSOConfigurationRepairRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location: "header", location_name: "X-Amz-Client-Token", metadata: {"idempotencyToken"=>true}))
+ StartStudioSSOConfigurationRepairRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ StartStudioSSOConfigurationRepairRequest.struct_class = Types::StartStudioSSOConfigurationRepairRequest
+
+ StartStudioSSOConfigurationRepairResponse.add_member(:studio, Shapes::ShapeRef.new(shape: Studio, required: true, location_name: "studio"))
+ StartStudioSSOConfigurationRepairResponse.struct_class = Types::StartStudioSSOConfigurationRepairResponse
+
+ StopStreamingSessionRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location: "header", location_name: "X-Amz-Client-Token", metadata: {"idempotencyToken"=>true}))
+ StopStreamingSessionRequest.add_member(:session_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "sessionId"))
+ StopStreamingSessionRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ StopStreamingSessionRequest.add_member(:volume_retention_mode, Shapes::ShapeRef.new(shape: VolumeRetentionMode, location_name: "volumeRetentionMode"))
+ StopStreamingSessionRequest.struct_class = Types::StopStreamingSessionRequest
+
+ StopStreamingSessionResponse.add_member(:session, Shapes::ShapeRef.new(shape: StreamingSession, location_name: "session"))
+ StopStreamingSessionResponse.struct_class = Types::StopStreamingSessionResponse
+
+ StreamConfiguration.add_member(:automatic_termination_mode, Shapes::ShapeRef.new(shape: AutomaticTerminationMode, location_name: "automaticTerminationMode"))
+ StreamConfiguration.add_member(:clipboard_mode, Shapes::ShapeRef.new(shape: StreamingClipboardMode, required: true, location_name: "clipboardMode"))
+ StreamConfiguration.add_member(:ec2_instance_types, Shapes::ShapeRef.new(shape: StreamingInstanceTypeList, required: true, location_name: "ec2InstanceTypes"))
+ StreamConfiguration.add_member(:max_session_length_in_minutes, Shapes::ShapeRef.new(shape: StreamConfigurationMaxSessionLengthInMinutes, location_name: "maxSessionLengthInMinutes"))
+ StreamConfiguration.add_member(:max_stopped_session_length_in_minutes, Shapes::ShapeRef.new(shape: StreamConfigurationMaxStoppedSessionLengthInMinutes, location_name: "maxStoppedSessionLengthInMinutes"))
+ StreamConfiguration.add_member(:session_backup, Shapes::ShapeRef.new(shape: StreamConfigurationSessionBackup, location_name: "sessionBackup"))
+ StreamConfiguration.add_member(:session_persistence_mode, Shapes::ShapeRef.new(shape: SessionPersistenceMode, location_name: "sessionPersistenceMode"))
+ StreamConfiguration.add_member(:session_storage, Shapes::ShapeRef.new(shape: StreamConfigurationSessionStorage, location_name: "sessionStorage"))
+ StreamConfiguration.add_member(:streaming_image_ids, Shapes::ShapeRef.new(shape: StreamingImageIdList, required: true, location_name: "streamingImageIds"))
+ StreamConfiguration.add_member(:volume_configuration, Shapes::ShapeRef.new(shape: VolumeConfiguration, location_name: "volumeConfiguration"))
+ StreamConfiguration.struct_class = Types::StreamConfiguration
+
+ StreamConfigurationCreate.add_member(:automatic_termination_mode, Shapes::ShapeRef.new(shape: AutomaticTerminationMode, location_name: "automaticTerminationMode"))
+ StreamConfigurationCreate.add_member(:clipboard_mode, Shapes::ShapeRef.new(shape: StreamingClipboardMode, required: true, location_name: "clipboardMode"))
+ StreamConfigurationCreate.add_member(:ec2_instance_types, Shapes::ShapeRef.new(shape: StreamingInstanceTypeList, required: true, location_name: "ec2InstanceTypes"))
+ StreamConfigurationCreate.add_member(:max_session_length_in_minutes, Shapes::ShapeRef.new(shape: StreamConfigurationMaxSessionLengthInMinutes, location_name: "maxSessionLengthInMinutes"))
+ StreamConfigurationCreate.add_member(:max_stopped_session_length_in_minutes, Shapes::ShapeRef.new(shape: StreamConfigurationMaxStoppedSessionLengthInMinutes, location_name: "maxStoppedSessionLengthInMinutes"))
+ StreamConfigurationCreate.add_member(:session_backup, Shapes::ShapeRef.new(shape: StreamConfigurationSessionBackup, location_name: "sessionBackup"))
+ StreamConfigurationCreate.add_member(:session_persistence_mode, Shapes::ShapeRef.new(shape: SessionPersistenceMode, location_name: "sessionPersistenceMode"))
+ StreamConfigurationCreate.add_member(:session_storage, Shapes::ShapeRef.new(shape: StreamConfigurationSessionStorage, location_name: "sessionStorage"))
+ StreamConfigurationCreate.add_member(:streaming_image_ids, Shapes::ShapeRef.new(shape: StreamingImageIdList, required: true, location_name: "streamingImageIds"))
+ StreamConfigurationCreate.add_member(:volume_configuration, Shapes::ShapeRef.new(shape: VolumeConfiguration, location_name: "volumeConfiguration"))
+ StreamConfigurationCreate.struct_class = Types::StreamConfigurationCreate
+
+ StreamConfigurationSessionBackup.add_member(:max_backups_to_retain, Shapes::ShapeRef.new(shape: StreamConfigurationMaxBackupsToRetain, location_name: "maxBackupsToRetain"))
+ StreamConfigurationSessionBackup.add_member(:mode, Shapes::ShapeRef.new(shape: SessionBackupMode, location_name: "mode"))
+ StreamConfigurationSessionBackup.struct_class = Types::StreamConfigurationSessionBackup
+
+ StreamConfigurationSessionStorage.add_member(:mode, Shapes::ShapeRef.new(shape: StreamingSessionStorageModeList, required: true, location_name: "mode"))
+ StreamConfigurationSessionStorage.add_member(:root, Shapes::ShapeRef.new(shape: StreamingSessionStorageRoot, location_name: "root"))
+ StreamConfigurationSessionStorage.struct_class = Types::StreamConfigurationSessionStorage
+
+ StreamingImage.add_member(:arn, Shapes::ShapeRef.new(shape: String, location_name: "arn"))
+ StreamingImage.add_member(:description, Shapes::ShapeRef.new(shape: StreamingImageDescription, location_name: "description"))
+ StreamingImage.add_member(:ec2_image_id, Shapes::ShapeRef.new(shape: EC2ImageId, location_name: "ec2ImageId"))
+ StreamingImage.add_member(:encryption_configuration, Shapes::ShapeRef.new(shape: StreamingImageEncryptionConfiguration, location_name: "encryptionConfiguration"))
+ StreamingImage.add_member(:eula_ids, Shapes::ShapeRef.new(shape: EulaIdList, location_name: "eulaIds"))
+ StreamingImage.add_member(:name, Shapes::ShapeRef.new(shape: StreamingImageName, location_name: "name"))
+ StreamingImage.add_member(:owner, Shapes::ShapeRef.new(shape: StreamingImageOwner, location_name: "owner"))
+ StreamingImage.add_member(:platform, Shapes::ShapeRef.new(shape: StreamingImagePlatform, location_name: "platform"))
+ StreamingImage.add_member(:state, Shapes::ShapeRef.new(shape: StreamingImageState, location_name: "state"))
+ StreamingImage.add_member(:status_code, Shapes::ShapeRef.new(shape: StreamingImageStatusCode, location_name: "statusCode"))
+ StreamingImage.add_member(:status_message, Shapes::ShapeRef.new(shape: String, location_name: "statusMessage"))
+ StreamingImage.add_member(:streaming_image_id, Shapes::ShapeRef.new(shape: StreamingImageId, location_name: "streamingImageId"))
+ StreamingImage.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, location_name: "tags"))
+ StreamingImage.struct_class = Types::StreamingImage
+
+ StreamingImageEncryptionConfiguration.add_member(:key_arn, Shapes::ShapeRef.new(shape: StreamingImageEncryptionConfigurationKeyArn, location_name: "keyArn"))
+ StreamingImageEncryptionConfiguration.add_member(:key_type, Shapes::ShapeRef.new(shape: StreamingImageEncryptionConfigurationKeyType, required: true, location_name: "keyType"))
+ StreamingImageEncryptionConfiguration.struct_class = Types::StreamingImageEncryptionConfiguration
+
+ StreamingImageIdList.member = Shapes::ShapeRef.new(shape: StreamingImageId)
+
+ StreamingImageList.member = Shapes::ShapeRef.new(shape: StreamingImage)
+
+ StreamingInstanceTypeList.member = Shapes::ShapeRef.new(shape: StreamingInstanceType)
+
+ StreamingSession.add_member(:arn, Shapes::ShapeRef.new(shape: String, location_name: "arn"))
+ StreamingSession.add_member(:automatic_termination_mode, Shapes::ShapeRef.new(shape: AutomaticTerminationMode, location_name: "automaticTerminationMode"))
+ StreamingSession.add_member(:backup_mode, Shapes::ShapeRef.new(shape: SessionBackupMode, location_name: "backupMode"))
+ StreamingSession.add_member(:created_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "createdAt"))
+ StreamingSession.add_member(:created_by, Shapes::ShapeRef.new(shape: String, location_name: "createdBy"))
+ StreamingSession.add_member(:ec2_instance_type, Shapes::ShapeRef.new(shape: String, location_name: "ec2InstanceType"))
+ StreamingSession.add_member(:launch_profile_id, Shapes::ShapeRef.new(shape: String, location_name: "launchProfileId"))
+ StreamingSession.add_member(:max_backups_to_retain, Shapes::ShapeRef.new(shape: StreamConfigurationMaxBackupsToRetain, location_name: "maxBackupsToRetain"))
+ StreamingSession.add_member(:owned_by, Shapes::ShapeRef.new(shape: String, location_name: "ownedBy"))
+ StreamingSession.add_member(:session_id, Shapes::ShapeRef.new(shape: StreamingSessionId, location_name: "sessionId"))
+ StreamingSession.add_member(:session_persistence_mode, Shapes::ShapeRef.new(shape: SessionPersistenceMode, location_name: "sessionPersistenceMode"))
+ StreamingSession.add_member(:started_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "startedAt"))
+ StreamingSession.add_member(:started_by, Shapes::ShapeRef.new(shape: String, location_name: "startedBy"))
+ StreamingSession.add_member(:started_from_backup_id, Shapes::ShapeRef.new(shape: String, location_name: "startedFromBackupId"))
+ StreamingSession.add_member(:state, Shapes::ShapeRef.new(shape: StreamingSessionState, location_name: "state"))
+ StreamingSession.add_member(:status_code, Shapes::ShapeRef.new(shape: StreamingSessionStatusCode, location_name: "statusCode"))
+ StreamingSession.add_member(:status_message, Shapes::ShapeRef.new(shape: String, location_name: "statusMessage"))
+ StreamingSession.add_member(:stop_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "stopAt"))
+ StreamingSession.add_member(:stopped_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "stoppedAt"))
+ StreamingSession.add_member(:stopped_by, Shapes::ShapeRef.new(shape: String, location_name: "stoppedBy"))
+ StreamingSession.add_member(:streaming_image_id, Shapes::ShapeRef.new(shape: StreamingImageId, location_name: "streamingImageId"))
+ StreamingSession.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, location_name: "tags"))
+ StreamingSession.add_member(:terminate_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "terminateAt"))
+ StreamingSession.add_member(:updated_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "updatedAt"))
+ StreamingSession.add_member(:updated_by, Shapes::ShapeRef.new(shape: String, location_name: "updatedBy"))
+ StreamingSession.add_member(:volume_configuration, Shapes::ShapeRef.new(shape: VolumeConfiguration, location_name: "volumeConfiguration"))
+ StreamingSession.add_member(:volume_retention_mode, Shapes::ShapeRef.new(shape: VolumeRetentionMode, location_name: "volumeRetentionMode"))
+ StreamingSession.struct_class = Types::StreamingSession
+
+ StreamingSessionBackup.add_member(:arn, Shapes::ShapeRef.new(shape: String, location_name: "arn"))
+ StreamingSessionBackup.add_member(:backup_id, Shapes::ShapeRef.new(shape: String, location_name: "backupId"))
+ StreamingSessionBackup.add_member(:created_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "createdAt"))
+ StreamingSessionBackup.add_member(:launch_profile_id, Shapes::ShapeRef.new(shape: String, location_name: "launchProfileId"))
+ StreamingSessionBackup.add_member(:owned_by, Shapes::ShapeRef.new(shape: String, location_name: "ownedBy"))
+ StreamingSessionBackup.add_member(:session_id, Shapes::ShapeRef.new(shape: StreamingSessionId, location_name: "sessionId"))
+ StreamingSessionBackup.add_member(:state, Shapes::ShapeRef.new(shape: StreamingSessionState, location_name: "state"))
+ StreamingSessionBackup.add_member(:status_code, Shapes::ShapeRef.new(shape: StreamingSessionStatusCode, location_name: "statusCode"))
+ StreamingSessionBackup.add_member(:status_message, Shapes::ShapeRef.new(shape: String, location_name: "statusMessage"))
+ StreamingSessionBackup.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, location_name: "tags"))
+ StreamingSessionBackup.struct_class = Types::StreamingSessionBackup
+
+ StreamingSessionBackupList.member = Shapes::ShapeRef.new(shape: StreamingSessionBackup)
+
+ StreamingSessionList.member = Shapes::ShapeRef.new(shape: StreamingSession)
+
+ StreamingSessionStorageModeList.member = Shapes::ShapeRef.new(shape: StreamingSessionStorageMode)
+
+ StreamingSessionStorageRoot.add_member(:linux, Shapes::ShapeRef.new(shape: StreamingSessionStorageRootPathLinux, location_name: "linux"))
+ StreamingSessionStorageRoot.add_member(:windows, Shapes::ShapeRef.new(shape: StreamingSessionStorageRootPathWindows, location_name: "windows"))
+ StreamingSessionStorageRoot.struct_class = Types::StreamingSessionStorageRoot
+
+ StreamingSessionStream.add_member(:created_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "createdAt"))
+ StreamingSessionStream.add_member(:created_by, Shapes::ShapeRef.new(shape: String, location_name: "createdBy"))
+ StreamingSessionStream.add_member(:expires_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "expiresAt"))
+ StreamingSessionStream.add_member(:owned_by, Shapes::ShapeRef.new(shape: String, location_name: "ownedBy"))
+ StreamingSessionStream.add_member(:state, Shapes::ShapeRef.new(shape: StreamingSessionStreamState, location_name: "state"))
+ StreamingSessionStream.add_member(:status_code, Shapes::ShapeRef.new(shape: StreamingSessionStreamStatusCode, location_name: "statusCode"))
+ StreamingSessionStream.add_member(:stream_id, Shapes::ShapeRef.new(shape: String, location_name: "streamId"))
+ StreamingSessionStream.add_member(:url, Shapes::ShapeRef.new(shape: SensitiveString, location_name: "url"))
+ StreamingSessionStream.struct_class = Types::StreamingSessionStream
+
+ StringList.member = Shapes::ShapeRef.new(shape: String)
+
+ Studio.add_member(:admin_role_arn, Shapes::ShapeRef.new(shape: RoleArn, location_name: "adminRoleArn"))
+ Studio.add_member(:arn, Shapes::ShapeRef.new(shape: String, location_name: "arn"))
+ Studio.add_member(:created_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "createdAt"))
+ Studio.add_member(:display_name, Shapes::ShapeRef.new(shape: StudioDisplayName, location_name: "displayName"))
+ Studio.add_member(:home_region, Shapes::ShapeRef.new(shape: Region, location_name: "homeRegion"))
+ Studio.add_member(:sso_client_id, Shapes::ShapeRef.new(shape: String, location_name: "ssoClientId"))
+ Studio.add_member(:state, Shapes::ShapeRef.new(shape: StudioState, location_name: "state"))
+ Studio.add_member(:status_code, Shapes::ShapeRef.new(shape: StudioStatusCode, location_name: "statusCode"))
+ Studio.add_member(:status_message, Shapes::ShapeRef.new(shape: String, location_name: "statusMessage"))
+ Studio.add_member(:studio_encryption_configuration, Shapes::ShapeRef.new(shape: StudioEncryptionConfiguration, location_name: "studioEncryptionConfiguration"))
+ Studio.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, location_name: "studioId"))
+ Studio.add_member(:studio_name, Shapes::ShapeRef.new(shape: StudioName, location_name: "studioName"))
+ Studio.add_member(:studio_url, Shapes::ShapeRef.new(shape: String, location_name: "studioUrl"))
+ Studio.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, location_name: "tags"))
+ Studio.add_member(:updated_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "updatedAt"))
+ Studio.add_member(:user_role_arn, Shapes::ShapeRef.new(shape: RoleArn, location_name: "userRoleArn"))
+ Studio.struct_class = Types::Studio
+
+ StudioComponent.add_member(:arn, Shapes::ShapeRef.new(shape: String, location_name: "arn"))
+ StudioComponent.add_member(:configuration, Shapes::ShapeRef.new(shape: StudioComponentConfiguration, location_name: "configuration"))
+ StudioComponent.add_member(:created_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "createdAt"))
+ StudioComponent.add_member(:created_by, Shapes::ShapeRef.new(shape: String, location_name: "createdBy"))
+ StudioComponent.add_member(:description, Shapes::ShapeRef.new(shape: StudioComponentDescription, location_name: "description"))
+ StudioComponent.add_member(:ec2_security_group_ids, Shapes::ShapeRef.new(shape: StudioComponentSecurityGroupIdList, location_name: "ec2SecurityGroupIds"))
+ StudioComponent.add_member(:initialization_scripts, Shapes::ShapeRef.new(shape: StudioComponentInitializationScriptList, location_name: "initializationScripts"))
+ StudioComponent.add_member(:name, Shapes::ShapeRef.new(shape: StudioComponentName, location_name: "name"))
+ StudioComponent.add_member(:runtime_role_arn, Shapes::ShapeRef.new(shape: RoleArn, location_name: "runtimeRoleArn"))
+ StudioComponent.add_member(:script_parameters, Shapes::ShapeRef.new(shape: StudioComponentScriptParameterKeyValueList, location_name: "scriptParameters"))
+ StudioComponent.add_member(:secure_initialization_role_arn, Shapes::ShapeRef.new(shape: RoleArn, location_name: "secureInitializationRoleArn"))
+ StudioComponent.add_member(:state, Shapes::ShapeRef.new(shape: StudioComponentState, location_name: "state"))
+ StudioComponent.add_member(:status_code, Shapes::ShapeRef.new(shape: StudioComponentStatusCode, location_name: "statusCode"))
+ StudioComponent.add_member(:status_message, Shapes::ShapeRef.new(shape: String, location_name: "statusMessage"))
+ StudioComponent.add_member(:studio_component_id, Shapes::ShapeRef.new(shape: StudioComponentId, location_name: "studioComponentId"))
+ StudioComponent.add_member(:subtype, Shapes::ShapeRef.new(shape: StudioComponentSubtype, location_name: "subtype"))
+ StudioComponent.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, location_name: "tags"))
+ StudioComponent.add_member(:type, Shapes::ShapeRef.new(shape: StudioComponentType, location_name: "type"))
+ StudioComponent.add_member(:updated_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "updatedAt"))
+ StudioComponent.add_member(:updated_by, Shapes::ShapeRef.new(shape: String, location_name: "updatedBy"))
+ StudioComponent.struct_class = Types::StudioComponent
+
+ StudioComponentConfiguration.add_member(:active_directory_configuration, Shapes::ShapeRef.new(shape: ActiveDirectoryConfiguration, location_name: "activeDirectoryConfiguration"))
+ StudioComponentConfiguration.add_member(:compute_farm_configuration, Shapes::ShapeRef.new(shape: ComputeFarmConfiguration, location_name: "computeFarmConfiguration"))
+ StudioComponentConfiguration.add_member(:license_service_configuration, Shapes::ShapeRef.new(shape: LicenseServiceConfiguration, location_name: "licenseServiceConfiguration"))
+ StudioComponentConfiguration.add_member(:shared_file_system_configuration, Shapes::ShapeRef.new(shape: SharedFileSystemConfiguration, location_name: "sharedFileSystemConfiguration"))
+ StudioComponentConfiguration.add_member(:unknown, Shapes::ShapeRef.new(shape: nil, location_name: 'unknown'))
+ StudioComponentConfiguration.add_member_subclass(:active_directory_configuration, Types::StudioComponentConfiguration::ActiveDirectoryConfiguration)
+ StudioComponentConfiguration.add_member_subclass(:compute_farm_configuration, Types::StudioComponentConfiguration::ComputeFarmConfiguration)
+ StudioComponentConfiguration.add_member_subclass(:license_service_configuration, Types::StudioComponentConfiguration::LicenseServiceConfiguration)
+ StudioComponentConfiguration.add_member_subclass(:shared_file_system_configuration, Types::StudioComponentConfiguration::SharedFileSystemConfiguration)
+ StudioComponentConfiguration.add_member_subclass(:unknown, Types::StudioComponentConfiguration::Unknown)
+ StudioComponentConfiguration.struct_class = Types::StudioComponentConfiguration
+
+ StudioComponentInitializationScript.add_member(:launch_profile_protocol_version, Shapes::ShapeRef.new(shape: LaunchProfileProtocolVersion, location_name: "launchProfileProtocolVersion"))
+ StudioComponentInitializationScript.add_member(:platform, Shapes::ShapeRef.new(shape: LaunchProfilePlatform, location_name: "platform"))
+ StudioComponentInitializationScript.add_member(:run_context, Shapes::ShapeRef.new(shape: StudioComponentInitializationScriptRunContext, location_name: "runContext"))
+ StudioComponentInitializationScript.add_member(:script, Shapes::ShapeRef.new(shape: StudioComponentInitializationScriptContent, location_name: "script"))
+ StudioComponentInitializationScript.struct_class = Types::StudioComponentInitializationScript
+
+ StudioComponentInitializationScriptList.member = Shapes::ShapeRef.new(shape: StudioComponentInitializationScript)
+
+ StudioComponentList.member = Shapes::ShapeRef.new(shape: StudioComponent)
+
+ StudioComponentScriptParameterKeyValueList.member = Shapes::ShapeRef.new(shape: ScriptParameterKeyValue)
+
+ StudioComponentSecurityGroupIdList.member = Shapes::ShapeRef.new(shape: SecurityGroupId)
+
+ StudioComponentStateList.member = Shapes::ShapeRef.new(shape: StudioComponentState)
+
+ StudioComponentSummary.add_member(:created_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "createdAt"))
+ StudioComponentSummary.add_member(:created_by, Shapes::ShapeRef.new(shape: String, location_name: "createdBy"))
+ StudioComponentSummary.add_member(:description, Shapes::ShapeRef.new(shape: StudioComponentDescription, location_name: "description"))
+ StudioComponentSummary.add_member(:name, Shapes::ShapeRef.new(shape: StudioComponentName, location_name: "name"))
+ StudioComponentSummary.add_member(:studio_component_id, Shapes::ShapeRef.new(shape: StudioComponentId, location_name: "studioComponentId"))
+ StudioComponentSummary.add_member(:subtype, Shapes::ShapeRef.new(shape: StudioComponentSubtype, location_name: "subtype"))
+ StudioComponentSummary.add_member(:type, Shapes::ShapeRef.new(shape: StudioComponentType, location_name: "type"))
+ StudioComponentSummary.add_member(:updated_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "updatedAt"))
+ StudioComponentSummary.add_member(:updated_by, Shapes::ShapeRef.new(shape: String, location_name: "updatedBy"))
+ StudioComponentSummary.struct_class = Types::StudioComponentSummary
+
+ StudioComponentSummaryList.member = Shapes::ShapeRef.new(shape: StudioComponentSummary)
+
+ StudioComponentTypeList.member = Shapes::ShapeRef.new(shape: StudioComponentType)
+
+ StudioEncryptionConfiguration.add_member(:key_arn, Shapes::ShapeRef.new(shape: StudioEncryptionConfigurationKeyArn, location_name: "keyArn"))
+ StudioEncryptionConfiguration.add_member(:key_type, Shapes::ShapeRef.new(shape: StudioEncryptionConfigurationKeyType, required: true, location_name: "keyType"))
+ StudioEncryptionConfiguration.struct_class = Types::StudioEncryptionConfiguration
+
+ StudioList.member = Shapes::ShapeRef.new(shape: Studio)
+
+ StudioMembership.add_member(:identity_store_id, Shapes::ShapeRef.new(shape: String, location_name: "identityStoreId"))
+ StudioMembership.add_member(:persona, Shapes::ShapeRef.new(shape: StudioPersona, location_name: "persona"))
+ StudioMembership.add_member(:principal_id, Shapes::ShapeRef.new(shape: String, location_name: "principalId"))
+ StudioMembership.add_member(:sid, Shapes::ShapeRef.new(shape: String, location_name: "sid"))
+ StudioMembership.struct_class = Types::StudioMembership
+
+ StudioMembershipList.member = Shapes::ShapeRef.new(shape: StudioMembership)
+
+ TagResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "resourceArn"))
+ TagResourceRequest.add_member(:tags, Shapes::ShapeRef.new(shape: Tags, location_name: "tags"))
+ TagResourceRequest.struct_class = Types::TagResourceRequest
+
+ TagResourceResponse.struct_class = Types::TagResourceResponse
+
+ Tags.key = Shapes::ShapeRef.new(shape: String)
+ Tags.value = Shapes::ShapeRef.new(shape: String)
+
+ ThrottlingException.add_member(:code, Shapes::ShapeRef.new(shape: String, location_name: "code"))
+ ThrottlingException.add_member(:context, Shapes::ShapeRef.new(shape: ExceptionContext, location_name: "context"))
+ ThrottlingException.add_member(:message, Shapes::ShapeRef.new(shape: String, location_name: "message"))
+ ThrottlingException.struct_class = Types::ThrottlingException
+
+ UntagResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "resourceArn"))
+ UntagResourceRequest.add_member(:tag_keys, Shapes::ShapeRef.new(shape: StringList, required: true, location: "querystring", location_name: "tagKeys"))
+ UntagResourceRequest.struct_class = Types::UntagResourceRequest
+
+ UntagResourceResponse.struct_class = Types::UntagResourceResponse
+
+ UpdateLaunchProfileMemberRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location: "header", location_name: "X-Amz-Client-Token", metadata: {"idempotencyToken"=>true}))
+ UpdateLaunchProfileMemberRequest.add_member(:launch_profile_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "launchProfileId"))
+ UpdateLaunchProfileMemberRequest.add_member(:persona, Shapes::ShapeRef.new(shape: LaunchProfilePersona, required: true, location_name: "persona"))
+ UpdateLaunchProfileMemberRequest.add_member(:principal_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "principalId"))
+ UpdateLaunchProfileMemberRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ UpdateLaunchProfileMemberRequest.struct_class = Types::UpdateLaunchProfileMemberRequest
+
+ UpdateLaunchProfileMemberResponse.add_member(:member, Shapes::ShapeRef.new(shape: LaunchProfileMembership, location_name: "member"))
+ UpdateLaunchProfileMemberResponse.struct_class = Types::UpdateLaunchProfileMemberResponse
+
+ UpdateLaunchProfileRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location: "header", location_name: "X-Amz-Client-Token", metadata: {"idempotencyToken"=>true}))
+ UpdateLaunchProfileRequest.add_member(:description, Shapes::ShapeRef.new(shape: LaunchProfileDescription, location_name: "description"))
+ UpdateLaunchProfileRequest.add_member(:launch_profile_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "launchProfileId"))
+ UpdateLaunchProfileRequest.add_member(:launch_profile_protocol_versions, Shapes::ShapeRef.new(shape: LaunchProfileProtocolVersionList, location_name: "launchProfileProtocolVersions"))
+ UpdateLaunchProfileRequest.add_member(:name, Shapes::ShapeRef.new(shape: LaunchProfileName, location_name: "name"))
+ UpdateLaunchProfileRequest.add_member(:stream_configuration, Shapes::ShapeRef.new(shape: StreamConfigurationCreate, location_name: "streamConfiguration"))
+ UpdateLaunchProfileRequest.add_member(:studio_component_ids, Shapes::ShapeRef.new(shape: LaunchProfileStudioComponentIdList, location_name: "studioComponentIds"))
+ UpdateLaunchProfileRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ UpdateLaunchProfileRequest.struct_class = Types::UpdateLaunchProfileRequest
+
+ UpdateLaunchProfileResponse.add_member(:launch_profile, Shapes::ShapeRef.new(shape: LaunchProfile, location_name: "launchProfile"))
+ UpdateLaunchProfileResponse.struct_class = Types::UpdateLaunchProfileResponse
+
+ UpdateStreamingImageRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location: "header", location_name: "X-Amz-Client-Token", metadata: {"idempotencyToken"=>true}))
+ UpdateStreamingImageRequest.add_member(:description, Shapes::ShapeRef.new(shape: StreamingImageDescription, location_name: "description"))
+ UpdateStreamingImageRequest.add_member(:name, Shapes::ShapeRef.new(shape: StreamingImageName, location_name: "name"))
+ UpdateStreamingImageRequest.add_member(:streaming_image_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "streamingImageId"))
+ UpdateStreamingImageRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ UpdateStreamingImageRequest.struct_class = Types::UpdateStreamingImageRequest
+
+ UpdateStreamingImageResponse.add_member(:streaming_image, Shapes::ShapeRef.new(shape: StreamingImage, location_name: "streamingImage"))
+ UpdateStreamingImageResponse.struct_class = Types::UpdateStreamingImageResponse
+
+ UpdateStudioComponentRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location: "header", location_name: "X-Amz-Client-Token", metadata: {"idempotencyToken"=>true}))
+ UpdateStudioComponentRequest.add_member(:configuration, Shapes::ShapeRef.new(shape: StudioComponentConfiguration, location_name: "configuration"))
+ UpdateStudioComponentRequest.add_member(:description, Shapes::ShapeRef.new(shape: StudioComponentDescription, location_name: "description"))
+ UpdateStudioComponentRequest.add_member(:ec2_security_group_ids, Shapes::ShapeRef.new(shape: StudioComponentSecurityGroupIdList, location_name: "ec2SecurityGroupIds"))
+ UpdateStudioComponentRequest.add_member(:initialization_scripts, Shapes::ShapeRef.new(shape: StudioComponentInitializationScriptList, location_name: "initializationScripts"))
+ UpdateStudioComponentRequest.add_member(:name, Shapes::ShapeRef.new(shape: StudioComponentName, location_name: "name"))
+ UpdateStudioComponentRequest.add_member(:runtime_role_arn, Shapes::ShapeRef.new(shape: RoleArn, location_name: "runtimeRoleArn"))
+ UpdateStudioComponentRequest.add_member(:script_parameters, Shapes::ShapeRef.new(shape: StudioComponentScriptParameterKeyValueList, location_name: "scriptParameters"))
+ UpdateStudioComponentRequest.add_member(:secure_initialization_role_arn, Shapes::ShapeRef.new(shape: RoleArn, location_name: "secureInitializationRoleArn"))
+ UpdateStudioComponentRequest.add_member(:studio_component_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioComponentId"))
+ UpdateStudioComponentRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ UpdateStudioComponentRequest.add_member(:subtype, Shapes::ShapeRef.new(shape: StudioComponentSubtype, location_name: "subtype"))
+ UpdateStudioComponentRequest.add_member(:type, Shapes::ShapeRef.new(shape: StudioComponentType, location_name: "type"))
+ UpdateStudioComponentRequest.struct_class = Types::UpdateStudioComponentRequest
+
+ UpdateStudioComponentResponse.add_member(:studio_component, Shapes::ShapeRef.new(shape: StudioComponent, location_name: "studioComponent"))
+ UpdateStudioComponentResponse.struct_class = Types::UpdateStudioComponentResponse
+
+ UpdateStudioRequest.add_member(:admin_role_arn, Shapes::ShapeRef.new(shape: RoleArn, location_name: "adminRoleArn"))
+ UpdateStudioRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location: "header", location_name: "X-Amz-Client-Token", metadata: {"idempotencyToken"=>true}))
+ UpdateStudioRequest.add_member(:display_name, Shapes::ShapeRef.new(shape: StudioDisplayName, location_name: "displayName"))
+ UpdateStudioRequest.add_member(:studio_id, Shapes::ShapeRef.new(shape: String, required: true, location: "uri", location_name: "studioId"))
+ UpdateStudioRequest.add_member(:user_role_arn, Shapes::ShapeRef.new(shape: RoleArn, location_name: "userRoleArn"))
+ UpdateStudioRequest.struct_class = Types::UpdateStudioRequest
+
+ UpdateStudioResponse.add_member(:studio, Shapes::ShapeRef.new(shape: Studio, required: true, location_name: "studio"))
+ UpdateStudioResponse.struct_class = Types::UpdateStudioResponse
+
+ ValidationException.add_member(:code, Shapes::ShapeRef.new(shape: String, location_name: "code"))
+ ValidationException.add_member(:context, Shapes::ShapeRef.new(shape: ExceptionContext, location_name: "context"))
+ ValidationException.add_member(:message, Shapes::ShapeRef.new(shape: String, location_name: "message"))
+ ValidationException.struct_class = Types::ValidationException
+
+ ValidationResult.add_member(:state, Shapes::ShapeRef.new(shape: LaunchProfileValidationState, required: true, location_name: "state"))
+ ValidationResult.add_member(:status_code, Shapes::ShapeRef.new(shape: LaunchProfileValidationStatusCode, required: true, location_name: "statusCode"))
+ ValidationResult.add_member(:status_message, Shapes::ShapeRef.new(shape: LaunchProfileValidationStatusMessage, required: true, location_name: "statusMessage"))
+ ValidationResult.add_member(:type, Shapes::ShapeRef.new(shape: LaunchProfileValidationType, required: true, location_name: "type"))
+ ValidationResult.struct_class = Types::ValidationResult
+
+ ValidationResults.member = Shapes::ShapeRef.new(shape: ValidationResult)
+
+ VolumeConfiguration.add_member(:iops, Shapes::ShapeRef.new(shape: VolumeIops, location_name: "iops"))
+ VolumeConfiguration.add_member(:size, Shapes::ShapeRef.new(shape: VolumeSizeInGiB, location_name: "size"))
+ VolumeConfiguration.add_member(:throughput, Shapes::ShapeRef.new(shape: VolumeThroughputInMiBs, location_name: "throughput"))
+ VolumeConfiguration.struct_class = Types::VolumeConfiguration
+
+
+ # @api private
+ API = Seahorse::Model::Api.new.tap do |api|
+
+ api.version = "2020-08-01"
+
+ api.metadata = {
+ "apiVersion" => "2020-08-01",
+ "endpointPrefix" => "nimble",
+ "jsonVersion" => "1.1",
+ "protocol" => "rest-json",
+ "serviceFullName" => "AmazonNimbleStudio",
+ "serviceId" => "nimble",
+ "signatureVersion" => "v4",
+ "signingName" => "nimble",
+ "uid" => "nimble-2020-08-01",
+ }
+
+ api.add_operation(:accept_eulas, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "AcceptEulas"
+ o.http_method = "POST"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/eula-acceptances"
+ o.input = Shapes::ShapeRef.new(shape: AcceptEulasRequest)
+ o.output = Shapes::ShapeRef.new(shape: AcceptEulasResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:create_launch_profile, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "CreateLaunchProfile"
+ o.http_method = "POST"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/launch-profiles"
+ o.input = Shapes::ShapeRef.new(shape: CreateLaunchProfileRequest)
+ o.output = Shapes::ShapeRef.new(shape: CreateLaunchProfileResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:create_streaming_image, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "CreateStreamingImage"
+ o.http_method = "POST"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/streaming-images"
+ o.input = Shapes::ShapeRef.new(shape: CreateStreamingImageRequest)
+ o.output = Shapes::ShapeRef.new(shape: CreateStreamingImageResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:create_streaming_session, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "CreateStreamingSession"
+ o.http_method = "POST"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/streaming-sessions"
+ o.input = Shapes::ShapeRef.new(shape: CreateStreamingSessionRequest)
+ o.output = Shapes::ShapeRef.new(shape: CreateStreamingSessionResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:create_streaming_session_stream, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "CreateStreamingSessionStream"
+ o.http_method = "POST"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/streaming-sessions/{sessionId}/streams"
+ o.input = Shapes::ShapeRef.new(shape: CreateStreamingSessionStreamRequest)
+ o.output = Shapes::ShapeRef.new(shape: CreateStreamingSessionStreamResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:create_studio, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "CreateStudio"
+ o.http_method = "POST"
+ o.http_request_uri = "/2020-08-01/studios"
+ o.input = Shapes::ShapeRef.new(shape: CreateStudioRequest)
+ o.output = Shapes::ShapeRef.new(shape: CreateStudioResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:create_studio_component, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "CreateStudioComponent"
+ o.http_method = "POST"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/studio-components"
+ o.input = Shapes::ShapeRef.new(shape: CreateStudioComponentRequest)
+ o.output = Shapes::ShapeRef.new(shape: CreateStudioComponentResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:delete_launch_profile, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "DeleteLaunchProfile"
+ o.http_method = "DELETE"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}"
+ o.input = Shapes::ShapeRef.new(shape: DeleteLaunchProfileRequest)
+ o.output = Shapes::ShapeRef.new(shape: DeleteLaunchProfileResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:delete_launch_profile_member, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "DeleteLaunchProfileMember"
+ o.http_method = "DELETE"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}/membership/{principalId}"
+ o.input = Shapes::ShapeRef.new(shape: DeleteLaunchProfileMemberRequest)
+ o.output = Shapes::ShapeRef.new(shape: DeleteLaunchProfileMemberResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:delete_streaming_image, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "DeleteStreamingImage"
+ o.http_method = "DELETE"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/streaming-images/{streamingImageId}"
+ o.input = Shapes::ShapeRef.new(shape: DeleteStreamingImageRequest)
+ o.output = Shapes::ShapeRef.new(shape: DeleteStreamingImageResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:delete_streaming_session, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "DeleteStreamingSession"
+ o.http_method = "DELETE"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/streaming-sessions/{sessionId}"
+ o.input = Shapes::ShapeRef.new(shape: DeleteStreamingSessionRequest)
+ o.output = Shapes::ShapeRef.new(shape: DeleteStreamingSessionResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:delete_studio, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "DeleteStudio"
+ o.http_method = "DELETE"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}"
+ o.input = Shapes::ShapeRef.new(shape: DeleteStudioRequest)
+ o.output = Shapes::ShapeRef.new(shape: DeleteStudioResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:delete_studio_component, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "DeleteStudioComponent"
+ o.http_method = "DELETE"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/studio-components/{studioComponentId}"
+ o.input = Shapes::ShapeRef.new(shape: DeleteStudioComponentRequest)
+ o.output = Shapes::ShapeRef.new(shape: DeleteStudioComponentResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:delete_studio_member, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "DeleteStudioMember"
+ o.http_method = "DELETE"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/membership/{principalId}"
+ o.input = Shapes::ShapeRef.new(shape: DeleteStudioMemberRequest)
+ o.output = Shapes::ShapeRef.new(shape: DeleteStudioMemberResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:get_eula, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "GetEula"
+ o.http_method = "GET"
+ o.http_request_uri = "/2020-08-01/eulas/{eulaId}"
+ o.input = Shapes::ShapeRef.new(shape: GetEulaRequest)
+ o.output = Shapes::ShapeRef.new(shape: GetEulaResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:get_launch_profile, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "GetLaunchProfile"
+ o.http_method = "GET"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}"
+ o.input = Shapes::ShapeRef.new(shape: GetLaunchProfileRequest)
+ o.output = Shapes::ShapeRef.new(shape: GetLaunchProfileResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:get_launch_profile_details, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "GetLaunchProfileDetails"
+ o.http_method = "GET"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}/details"
+ o.input = Shapes::ShapeRef.new(shape: GetLaunchProfileDetailsRequest)
+ o.output = Shapes::ShapeRef.new(shape: GetLaunchProfileDetailsResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:get_launch_profile_initialization, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "GetLaunchProfileInitialization"
+ o.http_method = "GET"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}/init"
+ o.input = Shapes::ShapeRef.new(shape: GetLaunchProfileInitializationRequest)
+ o.output = Shapes::ShapeRef.new(shape: GetLaunchProfileInitializationResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:get_launch_profile_member, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "GetLaunchProfileMember"
+ o.http_method = "GET"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}/membership/{principalId}"
+ o.input = Shapes::ShapeRef.new(shape: GetLaunchProfileMemberRequest)
+ o.output = Shapes::ShapeRef.new(shape: GetLaunchProfileMemberResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:get_streaming_image, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "GetStreamingImage"
+ o.http_method = "GET"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/streaming-images/{streamingImageId}"
+ o.input = Shapes::ShapeRef.new(shape: GetStreamingImageRequest)
+ o.output = Shapes::ShapeRef.new(shape: GetStreamingImageResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:get_streaming_session, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "GetStreamingSession"
+ o.http_method = "GET"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/streaming-sessions/{sessionId}"
+ o.input = Shapes::ShapeRef.new(shape: GetStreamingSessionRequest)
+ o.output = Shapes::ShapeRef.new(shape: GetStreamingSessionResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:get_streaming_session_backup, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "GetStreamingSessionBackup"
+ o.http_method = "GET"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/streaming-session-backups/{backupId}"
+ o.input = Shapes::ShapeRef.new(shape: GetStreamingSessionBackupRequest)
+ o.output = Shapes::ShapeRef.new(shape: GetStreamingSessionBackupResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ end)
+
+ api.add_operation(:get_streaming_session_stream, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "GetStreamingSessionStream"
+ o.http_method = "GET"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/streaming-sessions/{sessionId}/streams/{streamId}"
+ o.input = Shapes::ShapeRef.new(shape: GetStreamingSessionStreamRequest)
+ o.output = Shapes::ShapeRef.new(shape: GetStreamingSessionStreamResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:get_studio, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "GetStudio"
+ o.http_method = "GET"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}"
+ o.input = Shapes::ShapeRef.new(shape: GetStudioRequest)
+ o.output = Shapes::ShapeRef.new(shape: GetStudioResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:get_studio_component, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "GetStudioComponent"
+ o.http_method = "GET"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/studio-components/{studioComponentId}"
+ o.input = Shapes::ShapeRef.new(shape: GetStudioComponentRequest)
+ o.output = Shapes::ShapeRef.new(shape: GetStudioComponentResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:get_studio_member, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "GetStudioMember"
+ o.http_method = "GET"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/membership/{principalId}"
+ o.input = Shapes::ShapeRef.new(shape: GetStudioMemberRequest)
+ o.output = Shapes::ShapeRef.new(shape: GetStudioMemberResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:list_eula_acceptances, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "ListEulaAcceptances"
+ o.http_method = "GET"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/eula-acceptances"
+ o.input = Shapes::ShapeRef.new(shape: ListEulaAcceptancesRequest)
+ o.output = Shapes::ShapeRef.new(shape: ListEulaAcceptancesResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ o[:pager] = Aws::Pager.new(
+ tokens: {
+ "next_token" => "next_token"
+ }
+ )
+ end)
+
+ api.add_operation(:list_eulas, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "ListEulas"
+ o.http_method = "GET"
+ o.http_request_uri = "/2020-08-01/eulas"
+ o.input = Shapes::ShapeRef.new(shape: ListEulasRequest)
+ o.output = Shapes::ShapeRef.new(shape: ListEulasResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ o[:pager] = Aws::Pager.new(
+ tokens: {
+ "next_token" => "next_token"
+ }
+ )
+ end)
+
+ api.add_operation(:list_launch_profile_members, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "ListLaunchProfileMembers"
+ o.http_method = "GET"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}/membership"
+ o.input = Shapes::ShapeRef.new(shape: ListLaunchProfileMembersRequest)
+ o.output = Shapes::ShapeRef.new(shape: ListLaunchProfileMembersResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ o[:pager] = Aws::Pager.new(
+ limit_key: "max_results",
+ tokens: {
+ "next_token" => "next_token"
+ }
+ )
+ end)
+
+ api.add_operation(:list_launch_profiles, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "ListLaunchProfiles"
+ o.http_method = "GET"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/launch-profiles"
+ o.input = Shapes::ShapeRef.new(shape: ListLaunchProfilesRequest)
+ o.output = Shapes::ShapeRef.new(shape: ListLaunchProfilesResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ o[:pager] = Aws::Pager.new(
+ limit_key: "max_results",
+ tokens: {
+ "next_token" => "next_token"
+ }
+ )
+ end)
+
+ api.add_operation(:list_streaming_images, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "ListStreamingImages"
+ o.http_method = "GET"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/streaming-images"
+ o.input = Shapes::ShapeRef.new(shape: ListStreamingImagesRequest)
+ o.output = Shapes::ShapeRef.new(shape: ListStreamingImagesResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ o[:pager] = Aws::Pager.new(
+ tokens: {
+ "next_token" => "next_token"
+ }
+ )
+ end)
+
+ api.add_operation(:list_streaming_session_backups, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "ListStreamingSessionBackups"
+ o.http_method = "GET"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/streaming-session-backups"
+ o.input = Shapes::ShapeRef.new(shape: ListStreamingSessionBackupsRequest)
+ o.output = Shapes::ShapeRef.new(shape: ListStreamingSessionBackupsResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o[:pager] = Aws::Pager.new(
+ tokens: {
+ "next_token" => "next_token"
+ }
+ )
+ end)
+
+ api.add_operation(:list_streaming_sessions, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "ListStreamingSessions"
+ o.http_method = "GET"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/streaming-sessions"
+ o.input = Shapes::ShapeRef.new(shape: ListStreamingSessionsRequest)
+ o.output = Shapes::ShapeRef.new(shape: ListStreamingSessionsResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ o[:pager] = Aws::Pager.new(
+ tokens: {
+ "next_token" => "next_token"
+ }
+ )
+ end)
+
+ api.add_operation(:list_studio_components, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "ListStudioComponents"
+ o.http_method = "GET"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/studio-components"
+ o.input = Shapes::ShapeRef.new(shape: ListStudioComponentsRequest)
+ o.output = Shapes::ShapeRef.new(shape: ListStudioComponentsResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ o[:pager] = Aws::Pager.new(
+ limit_key: "max_results",
+ tokens: {
+ "next_token" => "next_token"
+ }
+ )
+ end)
+
+ api.add_operation(:list_studio_members, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "ListStudioMembers"
+ o.http_method = "GET"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/membership"
+ o.input = Shapes::ShapeRef.new(shape: ListStudioMembersRequest)
+ o.output = Shapes::ShapeRef.new(shape: ListStudioMembersResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ o[:pager] = Aws::Pager.new(
+ limit_key: "max_results",
+ tokens: {
+ "next_token" => "next_token"
+ }
+ )
+ end)
+
+ api.add_operation(:list_studios, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "ListStudios"
+ o.http_method = "GET"
+ o.http_request_uri = "/2020-08-01/studios"
+ o.input = Shapes::ShapeRef.new(shape: ListStudiosRequest)
+ o.output = Shapes::ShapeRef.new(shape: ListStudiosResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ o[:pager] = Aws::Pager.new(
+ tokens: {
+ "next_token" => "next_token"
+ }
+ )
+ end)
+
+ api.add_operation(:list_tags_for_resource, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "ListTagsForResource"
+ o.http_method = "GET"
+ o.http_request_uri = "/2020-08-01/tags/{resourceArn}"
+ o.input = Shapes::ShapeRef.new(shape: ListTagsForResourceRequest)
+ o.output = Shapes::ShapeRef.new(shape: ListTagsForResourceResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:put_launch_profile_members, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "PutLaunchProfileMembers"
+ o.http_method = "POST"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}/membership"
+ o.input = Shapes::ShapeRef.new(shape: PutLaunchProfileMembersRequest)
+ o.output = Shapes::ShapeRef.new(shape: PutLaunchProfileMembersResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:put_studio_members, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "PutStudioMembers"
+ o.http_method = "POST"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/membership"
+ o.input = Shapes::ShapeRef.new(shape: PutStudioMembersRequest)
+ o.output = Shapes::ShapeRef.new(shape: PutStudioMembersResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:start_streaming_session, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "StartStreamingSession"
+ o.http_method = "POST"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/streaming-sessions/{sessionId}/start"
+ o.input = Shapes::ShapeRef.new(shape: StartStreamingSessionRequest)
+ o.output = Shapes::ShapeRef.new(shape: StartStreamingSessionResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:start_studio_sso_configuration_repair, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "StartStudioSSOConfigurationRepair"
+ o.http_method = "PUT"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/sso-configuration"
+ o.input = Shapes::ShapeRef.new(shape: StartStudioSSOConfigurationRepairRequest)
+ o.output = Shapes::ShapeRef.new(shape: StartStudioSSOConfigurationRepairResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:stop_streaming_session, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "StopStreamingSession"
+ o.http_method = "POST"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/streaming-sessions/{sessionId}/stop"
+ o.input = Shapes::ShapeRef.new(shape: StopStreamingSessionRequest)
+ o.output = Shapes::ShapeRef.new(shape: StopStreamingSessionResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:tag_resource, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "TagResource"
+ o.http_method = "POST"
+ o.http_request_uri = "/2020-08-01/tags/{resourceArn}"
+ o.input = Shapes::ShapeRef.new(shape: TagResourceRequest)
+ o.output = Shapes::ShapeRef.new(shape: TagResourceResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:untag_resource, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "UntagResource"
+ o.http_method = "DELETE"
+ o.http_request_uri = "/2020-08-01/tags/{resourceArn}"
+ o.input = Shapes::ShapeRef.new(shape: UntagResourceRequest)
+ o.output = Shapes::ShapeRef.new(shape: UntagResourceResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:update_launch_profile, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "UpdateLaunchProfile"
+ o.http_method = "PATCH"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}"
+ o.input = Shapes::ShapeRef.new(shape: UpdateLaunchProfileRequest)
+ o.output = Shapes::ShapeRef.new(shape: UpdateLaunchProfileResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:update_launch_profile_member, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "UpdateLaunchProfileMember"
+ o.http_method = "PATCH"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}/membership/{principalId}"
+ o.input = Shapes::ShapeRef.new(shape: UpdateLaunchProfileMemberRequest)
+ o.output = Shapes::ShapeRef.new(shape: UpdateLaunchProfileMemberResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:update_streaming_image, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "UpdateStreamingImage"
+ o.http_method = "PATCH"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/streaming-images/{streamingImageId}"
+ o.input = Shapes::ShapeRef.new(shape: UpdateStreamingImageRequest)
+ o.output = Shapes::ShapeRef.new(shape: UpdateStreamingImageResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:update_studio, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "UpdateStudio"
+ o.http_method = "PATCH"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}"
+ o.input = Shapes::ShapeRef.new(shape: UpdateStudioRequest)
+ o.output = Shapes::ShapeRef.new(shape: UpdateStudioResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+
+ api.add_operation(:update_studio_component, Seahorse::Model::Operation.new.tap do |o|
+ o.name = "UpdateStudioComponent"
+ o.http_method = "PATCH"
+ o.http_request_uri = "/2020-08-01/studios/{studioId}/studio-components/{studioComponentId}"
+ o.input = Shapes::ShapeRef.new(shape: UpdateStudioComponentRequest)
+ o.output = Shapes::ShapeRef.new(shape: UpdateStudioComponentResponse)
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerErrorException)
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
+ end)
+ end
+
+ end
+end
diff --git a/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/customizations.rb b/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/customizations.rb
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/endpoint_parameters.rb b/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/endpoint_parameters.rb
new file mode 100644
index 00000000000..303c27e9ebd
--- /dev/null
+++ b/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/endpoint_parameters.rb
@@ -0,0 +1,66 @@
+# 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::NimbleStudio
+ # Endpoint parameters used to influence endpoints per request.
+ #
+ # @!attribute region
+ # The AWS region used to dispatch the request.
+ #
+ # @return [String]
+ #
+ # @!attribute use_dual_stack
+ # When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
+ #
+ # @return [Boolean]
+ #
+ # @!attribute use_fips
+ # When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.
+ #
+ # @return [Boolean]
+ #
+ # @!attribute endpoint
+ # Override the endpoint used to send this request
+ #
+ # @return [String]
+ #
+ EndpointParameters = Struct.new(
+ :region,
+ :use_dual_stack,
+ :use_fips,
+ :endpoint,
+ ) do
+ include Aws::Structure
+
+ # @api private
+ class << self
+ PARAM_MAP = {
+ 'Region' => :region,
+ 'UseDualStack' => :use_dual_stack,
+ 'UseFIPS' => :use_fips,
+ 'Endpoint' => :endpoint,
+ }.freeze
+ end
+
+ def initialize(options = {})
+ self[:region] = options[:region]
+ self[:use_dual_stack] = options[:use_dual_stack]
+ self[:use_dual_stack] = false if self[:use_dual_stack].nil?
+ if self[:use_dual_stack].nil?
+ raise ArgumentError, "Missing required EndpointParameter: :use_dual_stack"
+ end
+ self[:use_fips] = options[:use_fips]
+ self[:use_fips] = false if self[:use_fips].nil?
+ if self[:use_fips].nil?
+ raise ArgumentError, "Missing required EndpointParameter: :use_fips"
+ end
+ self[:endpoint] = options[:endpoint]
+ end
+ end
+end
diff --git a/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/endpoint_provider.rb b/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/endpoint_provider.rb
new file mode 100644
index 00000000000..653e16dfdb7
--- /dev/null
+++ b/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/endpoint_provider.rb
@@ -0,0 +1,54 @@
+# 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::NimbleStudio
+ class EndpointProvider
+ def resolve_endpoint(parameters)
+ region = parameters.region
+ use_dual_stack = parameters.use_dual_stack
+ use_fips = parameters.use_fips
+ endpoint = parameters.endpoint
+ if Aws::Endpoints::Matchers.set?(endpoint)
+ if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
+ raise ArgumentError, "Invalid Configuration: FIPS and custom endpoint are not supported"
+ end
+ if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
+ raise ArgumentError, "Invalid Configuration: Dualstack and custom endpoint are not supported"
+ end
+ return Aws::Endpoints::Endpoint.new(url: endpoint, headers: {}, properties: {})
+ end
+ if Aws::Endpoints::Matchers.set?(region)
+ if (partition_result = Aws::Endpoints::Matchers.aws_partition(region))
+ if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) && Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
+ if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS")) && Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack"))
+ return Aws::Endpoints::Endpoint.new(url: "https://nimble-fips.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {})
+ end
+ raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both"
+ end
+ if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
+ if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"))
+ return Aws::Endpoints::Endpoint.new(url: "https://nimble-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {})
+ end
+ raise ArgumentError, "FIPS is enabled but this partition does not support FIPS"
+ end
+ if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
+ if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack"))
+ return Aws::Endpoints::Endpoint.new(url: "https://nimble.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {})
+ end
+ raise ArgumentError, "DualStack is enabled but this partition does not support DualStack"
+ end
+ return Aws::Endpoints::Endpoint.new(url: "https://nimble.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {})
+ end
+ end
+ raise ArgumentError, "Invalid Configuration: Missing Region"
+ raise ArgumentError, 'No endpoint could be resolved'
+
+ end
+ end
+end
diff --git a/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/endpoints.rb b/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/endpoints.rb
new file mode 100644
index 00000000000..2f4ac0ec23a
--- /dev/null
+++ b/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/endpoints.rb
@@ -0,0 +1,555 @@
+# 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::NimbleStudio
+ # @api private
+ module Endpoints
+
+ class AcceptEulas
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class CreateLaunchProfile
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class CreateStreamingImage
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class CreateStreamingSession
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class CreateStreamingSessionStream
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class CreateStudio
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class CreateStudioComponent
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class DeleteLaunchProfile
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class DeleteLaunchProfileMember
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class DeleteStreamingImage
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class DeleteStreamingSession
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class DeleteStudio
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class DeleteStudioComponent
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class DeleteStudioMember
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class GetEula
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class GetLaunchProfile
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class GetLaunchProfileDetails
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class GetLaunchProfileInitialization
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class GetLaunchProfileMember
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class GetStreamingImage
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class GetStreamingSession
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class GetStreamingSessionBackup
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class GetStreamingSessionStream
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class GetStudio
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class GetStudioComponent
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class GetStudioMember
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class ListEulaAcceptances
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class ListEulas
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class ListLaunchProfileMembers
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class ListLaunchProfiles
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class ListStreamingImages
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class ListStreamingSessionBackups
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class ListStreamingSessions
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class ListStudioComponents
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class ListStudioMembers
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class ListStudios
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class ListTagsForResource
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class PutLaunchProfileMembers
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class PutStudioMembers
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class StartStreamingSession
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class StartStudioSSOConfigurationRepair
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class StopStreamingSession
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class TagResource
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class UntagResource
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class UpdateLaunchProfile
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class UpdateLaunchProfileMember
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class UpdateStreamingImage
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class UpdateStudio
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ class UpdateStudioComponent
+ def self.build(context)
+ Aws::NimbleStudio::EndpointParameters.new(
+ region: context.config.region,
+ use_dual_stack: context.config.use_dualstack_endpoint,
+ use_fips: context.config.use_fips_endpoint,
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
+ )
+ end
+ end
+
+ end
+end
diff --git a/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/errors.rb b/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/errors.rb
new file mode 100644
index 00000000000..da2cfff31b2
--- /dev/null
+++ b/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/errors.rb
@@ -0,0 +1,228 @@
+# 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::NimbleStudio
+
+ # When NimbleStudio returns an error response, the Ruby SDK constructs and raises an error.
+ # These errors all extend Aws::NimbleStudio::Errors::ServiceError < {Aws::Errors::ServiceError}
+ #
+ # You can rescue all NimbleStudio errors using ServiceError:
+ #
+ # begin
+ # # do stuff
+ # rescue Aws::NimbleStudio::Errors::ServiceError
+ # # rescues all NimbleStudio API errors
+ # end
+ #
+ #
+ # ## Request Context
+ # ServiceError objects have a {Aws::Errors::ServiceError#context #context} method that returns
+ # information about the request that generated the error.
+ # See {Seahorse::Client::RequestContext} for more information.
+ #
+ # ## Error Classes
+ # * {AccessDeniedException}
+ # * {ConflictException}
+ # * {InternalServerErrorException}
+ # * {ResourceNotFoundException}
+ # * {ServiceQuotaExceededException}
+ # * {ThrottlingException}
+ # * {ValidationException}
+ #
+ # Additionally, error classes are dynamically generated for service errors based on the error code
+ # if they are not defined above.
+ module Errors
+
+ extend Aws::Errors::DynamicErrors
+
+ class AccessDeniedException < ServiceError
+
+ # @param [Seahorse::Client::RequestContext] context
+ # @param [String] message
+ # @param [Aws::NimbleStudio::Types::AccessDeniedException] data
+ def initialize(context, message, data = Aws::EmptyStructure.new)
+ super(context, message, data)
+ end
+
+ # @return [String]
+ def code
+ @code || @data[:code]
+ end
+
+ # @return [String]
+ def context
+ @data[:context]
+ end
+
+ # @return [String]
+ def message
+ @message || @data[:message]
+ end
+ end
+
+ class ConflictException < ServiceError
+
+ # @param [Seahorse::Client::RequestContext] context
+ # @param [String] message
+ # @param [Aws::NimbleStudio::Types::ConflictException] data
+ def initialize(context, message, data = Aws::EmptyStructure.new)
+ super(context, message, data)
+ end
+
+ # @return [String]
+ def code
+ @code || @data[:code]
+ end
+
+ # @return [String]
+ def context
+ @data[:context]
+ end
+
+ # @return [String]
+ def message
+ @message || @data[:message]
+ end
+ end
+
+ class InternalServerErrorException < ServiceError
+
+ # @param [Seahorse::Client::RequestContext] context
+ # @param [String] message
+ # @param [Aws::NimbleStudio::Types::InternalServerErrorException] data
+ def initialize(context, message, data = Aws::EmptyStructure.new)
+ super(context, message, data)
+ end
+
+ # @return [String]
+ def code
+ @code || @data[:code]
+ end
+
+ # @return [String]
+ def context
+ @data[:context]
+ end
+
+ # @return [String]
+ def message
+ @message || @data[:message]
+ end
+
+ def retryable?
+ true
+ end
+ end
+
+ class ResourceNotFoundException < ServiceError
+
+ # @param [Seahorse::Client::RequestContext] context
+ # @param [String] message
+ # @param [Aws::NimbleStudio::Types::ResourceNotFoundException] data
+ def initialize(context, message, data = Aws::EmptyStructure.new)
+ super(context, message, data)
+ end
+
+ # @return [String]
+ def code
+ @code || @data[:code]
+ end
+
+ # @return [String]
+ def context
+ @data[:context]
+ end
+
+ # @return [String]
+ def message
+ @message || @data[:message]
+ end
+ end
+
+ class ServiceQuotaExceededException < ServiceError
+
+ # @param [Seahorse::Client::RequestContext] context
+ # @param [String] message
+ # @param [Aws::NimbleStudio::Types::ServiceQuotaExceededException] data
+ def initialize(context, message, data = Aws::EmptyStructure.new)
+ super(context, message, data)
+ end
+
+ # @return [String]
+ def code
+ @code || @data[:code]
+ end
+
+ # @return [String]
+ def context
+ @data[:context]
+ end
+
+ # @return [String]
+ def message
+ @message || @data[:message]
+ end
+ end
+
+ class ThrottlingException < ServiceError
+
+ # @param [Seahorse::Client::RequestContext] context
+ # @param [String] message
+ # @param [Aws::NimbleStudio::Types::ThrottlingException] data
+ def initialize(context, message, data = Aws::EmptyStructure.new)
+ super(context, message, data)
+ end
+
+ # @return [String]
+ def code
+ @code || @data[:code]
+ end
+
+ # @return [String]
+ def context
+ @data[:context]
+ end
+
+ # @return [String]
+ def message
+ @message || @data[:message]
+ end
+
+ def retryable?
+ true
+ end
+ end
+
+ class ValidationException < ServiceError
+
+ # @param [Seahorse::Client::RequestContext] context
+ # @param [String] message
+ # @param [Aws::NimbleStudio::Types::ValidationException] data
+ def initialize(context, message, data = Aws::EmptyStructure.new)
+ super(context, message, data)
+ end
+
+ # @return [String]
+ def code
+ @code || @data[:code]
+ end
+
+ # @return [String]
+ def context
+ @data[:context]
+ end
+
+ # @return [String]
+ def message
+ @message || @data[:message]
+ end
+ end
+
+ end
+end
diff --git a/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/plugins/endpoints.rb b/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/plugins/endpoints.rb
new file mode 100644
index 00000000000..024b88270e5
--- /dev/null
+++ b/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/plugins/endpoints.rb
@@ -0,0 +1,180 @@
+# 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::NimbleStudio
+ module Plugins
+ class Endpoints < Seahorse::Client::Plugin
+ option(
+ :endpoint_provider,
+ doc_type: 'Aws::NimbleStudio::EndpointProvider',
+ rbs_type: 'untyped',
+ docstring: <<~DOCS) do |_cfg|
+The endpoint provider used to resolve endpoints. Any object that responds to
+`#resolve_endpoint(parameters)` where `parameters` is a Struct similar to
+`Aws::NimbleStudio::EndpointParameters`.
+ DOCS
+ Aws::NimbleStudio::EndpointProvider.new
+ end
+
+ # @api private
+ class Handler < Seahorse::Client::Handler
+ def call(context)
+ unless context[:discovered_endpoint]
+ params = parameters_for_operation(context)
+ endpoint = context.config.endpoint_provider.resolve_endpoint(params)
+
+ context.http_request.endpoint = endpoint.url
+ apply_endpoint_headers(context, endpoint.headers)
+
+ context[:endpoint_params] = params
+ context[:endpoint_properties] = endpoint.properties
+ end
+
+ context[:auth_scheme] =
+ Aws::Endpoints.resolve_auth_scheme(context, endpoint)
+
+ with_metrics(context) { @handler.call(context) }
+ end
+
+ private
+
+ def with_metrics(context, &block)
+ metrics = []
+ metrics << 'ENDPOINT_OVERRIDE' unless context.config.regional_endpoint
+ if context[:auth_scheme] && context[:auth_scheme]['name'] == 'sigv4a'
+ metrics << 'SIGV4A_SIGNING'
+ end
+ if context.config.credentials&.credentials&.account_id
+ metrics << 'RESOLVED_ACCOUNT_ID'
+ end
+ Aws::Plugins::UserAgent.metric(*metrics, &block)
+ end
+
+ def apply_endpoint_headers(context, headers)
+ headers.each do |key, values|
+ value = values
+ .compact
+ .map { |s| Seahorse::Util.escape_header_list_string(s.to_s) }
+ .join(',')
+
+ context.http_request.headers[key] = value
+ end
+ end
+
+ def parameters_for_operation(context)
+ case context.operation_name
+ when :accept_eulas
+ Aws::NimbleStudio::Endpoints::AcceptEulas.build(context)
+ when :create_launch_profile
+ Aws::NimbleStudio::Endpoints::CreateLaunchProfile.build(context)
+ when :create_streaming_image
+ Aws::NimbleStudio::Endpoints::CreateStreamingImage.build(context)
+ when :create_streaming_session
+ Aws::NimbleStudio::Endpoints::CreateStreamingSession.build(context)
+ when :create_streaming_session_stream
+ Aws::NimbleStudio::Endpoints::CreateStreamingSessionStream.build(context)
+ when :create_studio
+ Aws::NimbleStudio::Endpoints::CreateStudio.build(context)
+ when :create_studio_component
+ Aws::NimbleStudio::Endpoints::CreateStudioComponent.build(context)
+ when :delete_launch_profile
+ Aws::NimbleStudio::Endpoints::DeleteLaunchProfile.build(context)
+ when :delete_launch_profile_member
+ Aws::NimbleStudio::Endpoints::DeleteLaunchProfileMember.build(context)
+ when :delete_streaming_image
+ Aws::NimbleStudio::Endpoints::DeleteStreamingImage.build(context)
+ when :delete_streaming_session
+ Aws::NimbleStudio::Endpoints::DeleteStreamingSession.build(context)
+ when :delete_studio
+ Aws::NimbleStudio::Endpoints::DeleteStudio.build(context)
+ when :delete_studio_component
+ Aws::NimbleStudio::Endpoints::DeleteStudioComponent.build(context)
+ when :delete_studio_member
+ Aws::NimbleStudio::Endpoints::DeleteStudioMember.build(context)
+ when :get_eula
+ Aws::NimbleStudio::Endpoints::GetEula.build(context)
+ when :get_launch_profile
+ Aws::NimbleStudio::Endpoints::GetLaunchProfile.build(context)
+ when :get_launch_profile_details
+ Aws::NimbleStudio::Endpoints::GetLaunchProfileDetails.build(context)
+ when :get_launch_profile_initialization
+ Aws::NimbleStudio::Endpoints::GetLaunchProfileInitialization.build(context)
+ when :get_launch_profile_member
+ Aws::NimbleStudio::Endpoints::GetLaunchProfileMember.build(context)
+ when :get_streaming_image
+ Aws::NimbleStudio::Endpoints::GetStreamingImage.build(context)
+ when :get_streaming_session
+ Aws::NimbleStudio::Endpoints::GetStreamingSession.build(context)
+ when :get_streaming_session_backup
+ Aws::NimbleStudio::Endpoints::GetStreamingSessionBackup.build(context)
+ when :get_streaming_session_stream
+ Aws::NimbleStudio::Endpoints::GetStreamingSessionStream.build(context)
+ when :get_studio
+ Aws::NimbleStudio::Endpoints::GetStudio.build(context)
+ when :get_studio_component
+ Aws::NimbleStudio::Endpoints::GetStudioComponent.build(context)
+ when :get_studio_member
+ Aws::NimbleStudio::Endpoints::GetStudioMember.build(context)
+ when :list_eula_acceptances
+ Aws::NimbleStudio::Endpoints::ListEulaAcceptances.build(context)
+ when :list_eulas
+ Aws::NimbleStudio::Endpoints::ListEulas.build(context)
+ when :list_launch_profile_members
+ Aws::NimbleStudio::Endpoints::ListLaunchProfileMembers.build(context)
+ when :list_launch_profiles
+ Aws::NimbleStudio::Endpoints::ListLaunchProfiles.build(context)
+ when :list_streaming_images
+ Aws::NimbleStudio::Endpoints::ListStreamingImages.build(context)
+ when :list_streaming_session_backups
+ Aws::NimbleStudio::Endpoints::ListStreamingSessionBackups.build(context)
+ when :list_streaming_sessions
+ Aws::NimbleStudio::Endpoints::ListStreamingSessions.build(context)
+ when :list_studio_components
+ Aws::NimbleStudio::Endpoints::ListStudioComponents.build(context)
+ when :list_studio_members
+ Aws::NimbleStudio::Endpoints::ListStudioMembers.build(context)
+ when :list_studios
+ Aws::NimbleStudio::Endpoints::ListStudios.build(context)
+ when :list_tags_for_resource
+ Aws::NimbleStudio::Endpoints::ListTagsForResource.build(context)
+ when :put_launch_profile_members
+ Aws::NimbleStudio::Endpoints::PutLaunchProfileMembers.build(context)
+ when :put_studio_members
+ Aws::NimbleStudio::Endpoints::PutStudioMembers.build(context)
+ when :start_streaming_session
+ Aws::NimbleStudio::Endpoints::StartStreamingSession.build(context)
+ when :start_studio_sso_configuration_repair
+ Aws::NimbleStudio::Endpoints::StartStudioSSOConfigurationRepair.build(context)
+ when :stop_streaming_session
+ Aws::NimbleStudio::Endpoints::StopStreamingSession.build(context)
+ when :tag_resource
+ Aws::NimbleStudio::Endpoints::TagResource.build(context)
+ when :untag_resource
+ Aws::NimbleStudio::Endpoints::UntagResource.build(context)
+ when :update_launch_profile
+ Aws::NimbleStudio::Endpoints::UpdateLaunchProfile.build(context)
+ when :update_launch_profile_member
+ Aws::NimbleStudio::Endpoints::UpdateLaunchProfileMember.build(context)
+ when :update_streaming_image
+ Aws::NimbleStudio::Endpoints::UpdateStreamingImage.build(context)
+ when :update_studio
+ Aws::NimbleStudio::Endpoints::UpdateStudio.build(context)
+ when :update_studio_component
+ Aws::NimbleStudio::Endpoints::UpdateStudioComponent.build(context)
+ end
+ end
+ end
+
+ def add_handlers(handlers, _config)
+ handlers.add(Handler, step: :build, priority: 75)
+ end
+ end
+ end
+end
diff --git a/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/resource.rb b/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/resource.rb
new file mode 100644
index 00000000000..3274d0277ca
--- /dev/null
+++ b/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/resource.rb
@@ -0,0 +1,26 @@
+# 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::NimbleStudio
+
+ class Resource
+
+ # @param options ({})
+ # @option options [Client] :client
+ def initialize(options = {})
+ @client = options[:client] || Client.new(options)
+ end
+
+ # @return [Client]
+ def client
+ @client
+ end
+
+ end
+end
diff --git a/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/types.rb b/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/types.rb
new file mode 100644
index 00000000000..38e55cea35b
--- /dev/null
+++ b/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/types.rb
@@ -0,0 +1,4042 @@
+# 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::NimbleStudio
+ module Types
+
+ # @!attribute [rw] client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.
+ # @return [String]
+ #
+ # @!attribute [rw] eula_ids
+ # The EULA ID.
+ # @return [Array]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/AcceptEulasRequest AWS API Documentation
+ #
+ class AcceptEulasRequest < Struct.new(
+ :client_token,
+ :eula_ids,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] eula_acceptances
+ # A collection of EULA acceptances.
+ # @return [Array]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/AcceptEulasResponse AWS API Documentation
+ #
+ class AcceptEulasResponse < Struct.new(
+ :eula_acceptances)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # You are not authorized to perform this operation. Check your IAM
+ # policies, and ensure that you are using the correct access keys.
+ #
+ # @!attribute [rw] code
+ # A more specific error code.
+ # @return [String]
+ #
+ # @!attribute [rw] context
+ # The exception context.
+ # @return [Hash]
+ #
+ # @!attribute [rw] message
+ # A human-readable description of the error.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/AccessDeniedException AWS API Documentation
+ #
+ class AccessDeniedException < Struct.new(
+ :code,
+ :context,
+ :message)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # An LDAP attribute of an Active Directory computer account, in the form
+ # of a name:value pair.
+ #
+ # @!attribute [rw] name
+ # The name for the LDAP attribute.
+ # @return [String]
+ #
+ # @!attribute [rw] value
+ # The value for the LDAP attribute.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ActiveDirectoryComputerAttribute AWS API Documentation
+ #
+ class ActiveDirectoryComputerAttribute < Struct.new(
+ :name,
+ :value)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # The configuration for a Directory Service for Microsoft Active
+ # Directory studio resource.
+ #
+ # @!attribute [rw] computer_attributes
+ # A collection of custom attributes for an Active Directory computer.
+ # @return [Array]
+ #
+ # @!attribute [rw] directory_id
+ # The directory ID of the Directory Service for Microsoft Active
+ # Directory to access using this studio component.
+ # @return [String]
+ #
+ # @!attribute [rw] organizational_unit_distinguished_name
+ # The distinguished name (DN) and organizational unit (OU) of an
+ # Active Directory computer.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ActiveDirectoryConfiguration AWS API Documentation
+ #
+ class ActiveDirectoryConfiguration < Struct.new(
+ :computer_attributes,
+ :directory_id,
+ :organizational_unit_distinguished_name)
+ SENSITIVE = [:computer_attributes]
+ include Aws::Structure
+ end
+
+ # The configuration for a render farm that is associated with a studio
+ # resource.
+ #
+ # @!attribute [rw] active_directory_user
+ # The name of an Active Directory user that is used on ComputeFarm
+ # worker instances.
+ # @return [String]
+ #
+ # @!attribute [rw] endpoint
+ # The endpoint of the ComputeFarm that is accessed by the studio
+ # component resource.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ComputeFarmConfiguration AWS API Documentation
+ #
+ class ComputeFarmConfiguration < Struct.new(
+ :active_directory_user,
+ :endpoint)
+ SENSITIVE = [:endpoint]
+ include Aws::Structure
+ end
+
+ # Another operation is in progress.
+ #
+ # @!attribute [rw] code
+ # A more specific error code.
+ # @return [String]
+ #
+ # @!attribute [rw] context
+ # The exception context.
+ # @return [Hash]
+ #
+ # @!attribute [rw] message
+ # A human-readable description of the error.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ConflictException AWS API Documentation
+ #
+ class ConflictException < Struct.new(
+ :code,
+ :context,
+ :message)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.
+ # @return [String]
+ #
+ # @!attribute [rw] description
+ # The description.
+ # @return [String]
+ #
+ # @!attribute [rw] ec2_subnet_ids
+ # Specifies the IDs of the EC2 subnets where streaming sessions will
+ # be accessible from. These subnets must support the specified
+ # instance types.
+ # @return [Array]
+ #
+ # @!attribute [rw] launch_profile_protocol_versions
+ # The version number of the protocol that is used by the launch
+ # profile. The only valid version is "2021-03-31".
+ # @return [Array]
+ #
+ # @!attribute [rw] name
+ # The name for the launch profile.
+ # @return [String]
+ #
+ # @!attribute [rw] stream_configuration
+ # A configuration for a streaming session.
+ # @return [Types::StreamConfigurationCreate]
+ #
+ # @!attribute [rw] studio_component_ids
+ # Unique identifiers for a collection of studio components that can be
+ # used with this launch profile.
+ # @return [Array]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @!attribute [rw] tags
+ # A collection of labels, in the form of key-value pairs, that apply
+ # to this resource.
+ # @return [Hash]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/CreateLaunchProfileRequest AWS API Documentation
+ #
+ class CreateLaunchProfileRequest < Struct.new(
+ :client_token,
+ :description,
+ :ec2_subnet_ids,
+ :launch_profile_protocol_versions,
+ :name,
+ :stream_configuration,
+ :studio_component_ids,
+ :studio_id,
+ :tags)
+ SENSITIVE = [:description, :name]
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] launch_profile
+ # The launch profile.
+ # @return [Types::LaunchProfile]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/CreateLaunchProfileResponse AWS API Documentation
+ #
+ class CreateLaunchProfileResponse < Struct.new(
+ :launch_profile)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.
+ # @return [String]
+ #
+ # @!attribute [rw] description
+ # A human-readable description of the streaming image.
+ # @return [String]
+ #
+ # @!attribute [rw] ec2_image_id
+ # The ID of an EC2 machine image with which to create this streaming
+ # image.
+ # @return [String]
+ #
+ # @!attribute [rw] name
+ # A friendly name for a streaming image resource.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @!attribute [rw] tags
+ # A collection of labels, in the form of key-value pairs, that apply
+ # to this resource.
+ # @return [Hash]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/CreateStreamingImageRequest AWS API Documentation
+ #
+ class CreateStreamingImageRequest < Struct.new(
+ :client_token,
+ :description,
+ :ec2_image_id,
+ :name,
+ :studio_id,
+ :tags)
+ SENSITIVE = [:description, :name]
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] streaming_image
+ # The streaming image.
+ # @return [Types::StreamingImage]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/CreateStreamingImageResponse AWS API Documentation
+ #
+ class CreateStreamingImageResponse < Struct.new(
+ :streaming_image)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.
+ # @return [String]
+ #
+ # @!attribute [rw] ec2_instance_type
+ # The EC2 Instance type used for the streaming session.
+ # @return [String]
+ #
+ # @!attribute [rw] launch_profile_id
+ # The ID of the launch profile used to control access from the
+ # streaming session.
+ # @return [String]
+ #
+ # @!attribute [rw] owned_by
+ # The user ID of the user that owns the streaming session. The user
+ # that owns the session will be logging into the session and
+ # interacting with the virtual workstation.
+ # @return [String]
+ #
+ # @!attribute [rw] streaming_image_id
+ # The ID of the streaming image.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @!attribute [rw] tags
+ # A collection of labels, in the form of key-value pairs, that apply
+ # to this resource.
+ # @return [Hash]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/CreateStreamingSessionRequest AWS API Documentation
+ #
+ class CreateStreamingSessionRequest < Struct.new(
+ :client_token,
+ :ec2_instance_type,
+ :launch_profile_id,
+ :owned_by,
+ :streaming_image_id,
+ :studio_id,
+ :tags)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] session
+ # The session.
+ # @return [Types::StreamingSession]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/CreateStreamingSessionResponse AWS API Documentation
+ #
+ class CreateStreamingSessionResponse < Struct.new(
+ :session)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.
+ # @return [String]
+ #
+ # @!attribute [rw] expiration_in_seconds
+ # The expiration time in seconds.
+ # @return [Integer]
+ #
+ # @!attribute [rw] session_id
+ # The streaming session ID.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/CreateStreamingSessionStreamRequest AWS API Documentation
+ #
+ class CreateStreamingSessionStreamRequest < Struct.new(
+ :client_token,
+ :expiration_in_seconds,
+ :session_id,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] stream
+ # The stream.
+ # @return [Types::StreamingSessionStream]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/CreateStreamingSessionStreamResponse AWS API Documentation
+ #
+ class CreateStreamingSessionStreamResponse < Struct.new(
+ :stream)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.
+ # @return [String]
+ #
+ # @!attribute [rw] configuration
+ # The configuration of the studio component, based on component type.
+ # @return [Types::StudioComponentConfiguration]
+ #
+ # @!attribute [rw] description
+ # The description.
+ # @return [String]
+ #
+ # @!attribute [rw] ec2_security_group_ids
+ # The EC2 security groups that control access to the studio component.
+ # @return [Array]
+ #
+ # @!attribute [rw] initialization_scripts
+ # Initialization scripts for studio components.
+ # @return [Array]
+ #
+ # @!attribute [rw] name
+ # The name for the studio component.
+ # @return [String]
+ #
+ # @!attribute [rw] runtime_role_arn
+ # An IAM role attached to a Studio Component that gives the studio
+ # component access to Amazon Web Services resources at anytime while
+ # the instance is running.
+ # @return [String]
+ #
+ # @!attribute [rw] script_parameters
+ # Parameters for the studio component scripts.
+ # @return [Array]
+ #
+ # @!attribute [rw] secure_initialization_role_arn
+ # An IAM role attached to Studio Component when the system
+ # initialization script runs which give the studio component access to
+ # Amazon Web Services resources when the system initialization script
+ # runs.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @!attribute [rw] subtype
+ # The specific subtype of a studio component.
+ # @return [String]
+ #
+ # @!attribute [rw] tags
+ # A collection of labels, in the form of key-value pairs, that apply
+ # to this resource.
+ # @return [Hash]
+ #
+ # @!attribute [rw] type
+ # The type of the studio component.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/CreateStudioComponentRequest AWS API Documentation
+ #
+ class CreateStudioComponentRequest < Struct.new(
+ :client_token,
+ :configuration,
+ :description,
+ :ec2_security_group_ids,
+ :initialization_scripts,
+ :name,
+ :runtime_role_arn,
+ :script_parameters,
+ :secure_initialization_role_arn,
+ :studio_id,
+ :subtype,
+ :tags,
+ :type)
+ SENSITIVE = [:description, :name, :script_parameters]
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] studio_component
+ # Information about the studio component.
+ # @return [Types::StudioComponent]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/CreateStudioComponentResponse AWS API Documentation
+ #
+ class CreateStudioComponentResponse < Struct.new(
+ :studio_component)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] admin_role_arn
+ # The IAM role that studio admins will assume when logging in to the
+ # Nimble Studio portal.
+ # @return [String]
+ #
+ # @!attribute [rw] client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.
+ # @return [String]
+ #
+ # @!attribute [rw] display_name
+ # A friendly name for the studio.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_encryption_configuration
+ # The studio encryption configuration.
+ # @return [Types::StudioEncryptionConfiguration]
+ #
+ # @!attribute [rw] studio_name
+ # The studio name that is used in the URL of the Nimble Studio portal
+ # when accessed by Nimble Studio users.
+ # @return [String]
+ #
+ # @!attribute [rw] tags
+ # A collection of labels, in the form of key-value pairs, that apply
+ # to this resource.
+ # @return [Hash]
+ #
+ # @!attribute [rw] user_role_arn
+ # The IAM role that studio users will assume when logging in to the
+ # Nimble Studio portal.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/CreateStudioRequest AWS API Documentation
+ #
+ class CreateStudioRequest < Struct.new(
+ :admin_role_arn,
+ :client_token,
+ :display_name,
+ :studio_encryption_configuration,
+ :studio_name,
+ :tags,
+ :user_role_arn)
+ SENSITIVE = [:display_name]
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] studio
+ # Information about a studio.
+ # @return [Types::Studio]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/CreateStudioResponse AWS API Documentation
+ #
+ class CreateStudioResponse < Struct.new(
+ :studio)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.
+ # @return [String]
+ #
+ # @!attribute [rw] launch_profile_id
+ # The ID of the launch profile used to control access from the
+ # streaming session.
+ # @return [String]
+ #
+ # @!attribute [rw] principal_id
+ # The principal ID. This currently supports a IAM Identity Center
+ # UserId.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/DeleteLaunchProfileMemberRequest AWS API Documentation
+ #
+ class DeleteLaunchProfileMemberRequest < Struct.new(
+ :client_token,
+ :launch_profile_id,
+ :principal_id,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/DeleteLaunchProfileMemberResponse AWS API Documentation
+ #
+ class DeleteLaunchProfileMemberResponse < Aws::EmptyStructure; end
+
+ # @!attribute [rw] client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.
+ # @return [String]
+ #
+ # @!attribute [rw] launch_profile_id
+ # The ID of the launch profile used to control access from the
+ # streaming session.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/DeleteLaunchProfileRequest AWS API Documentation
+ #
+ class DeleteLaunchProfileRequest < Struct.new(
+ :client_token,
+ :launch_profile_id,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] launch_profile
+ # The launch profile.
+ # @return [Types::LaunchProfile]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/DeleteLaunchProfileResponse AWS API Documentation
+ #
+ class DeleteLaunchProfileResponse < Struct.new(
+ :launch_profile)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.
+ # @return [String]
+ #
+ # @!attribute [rw] streaming_image_id
+ # The streaming image ID.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/DeleteStreamingImageRequest AWS API Documentation
+ #
+ class DeleteStreamingImageRequest < Struct.new(
+ :client_token,
+ :streaming_image_id,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] streaming_image
+ # The streaming image.
+ # @return [Types::StreamingImage]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/DeleteStreamingImageResponse AWS API Documentation
+ #
+ class DeleteStreamingImageResponse < Struct.new(
+ :streaming_image)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.
+ # @return [String]
+ #
+ # @!attribute [rw] session_id
+ # The streaming session ID.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/DeleteStreamingSessionRequest AWS API Documentation
+ #
+ class DeleteStreamingSessionRequest < Struct.new(
+ :client_token,
+ :session_id,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] session
+ # The session.
+ # @return [Types::StreamingSession]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/DeleteStreamingSessionResponse AWS API Documentation
+ #
+ class DeleteStreamingSessionResponse < Struct.new(
+ :session)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_component_id
+ # The studio component ID.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/DeleteStudioComponentRequest AWS API Documentation
+ #
+ class DeleteStudioComponentRequest < Struct.new(
+ :client_token,
+ :studio_component_id,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] studio_component
+ # Information about the studio component.
+ # @return [Types::StudioComponent]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/DeleteStudioComponentResponse AWS API Documentation
+ #
+ class DeleteStudioComponentResponse < Struct.new(
+ :studio_component)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.
+ # @return [String]
+ #
+ # @!attribute [rw] principal_id
+ # The principal ID. This currently supports a IAM Identity Center
+ # UserId.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/DeleteStudioMemberRequest AWS API Documentation
+ #
+ class DeleteStudioMemberRequest < Struct.new(
+ :client_token,
+ :principal_id,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/DeleteStudioMemberResponse AWS API Documentation
+ #
+ class DeleteStudioMemberResponse < Aws::EmptyStructure; end
+
+ # @!attribute [rw] client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/DeleteStudioRequest AWS API Documentation
+ #
+ class DeleteStudioRequest < Struct.new(
+ :client_token,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] studio
+ # Information about a studio.
+ # @return [Types::Studio]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/DeleteStudioResponse AWS API Documentation
+ #
+ class DeleteStudioResponse < Struct.new(
+ :studio)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # Represents a EULA resource.
+ #
+ # @!attribute [rw] content
+ # The EULA content.
+ # @return [String]
+ #
+ # @!attribute [rw] created_at
+ # The ISO timestamp in seconds for when the resource was created.
+ # @return [Time]
+ #
+ # @!attribute [rw] eula_id
+ # The EULA ID.
+ # @return [String]
+ #
+ # @!attribute [rw] name
+ # The name for the EULA.
+ # @return [String]
+ #
+ # @!attribute [rw] updated_at
+ # The ISO timestamp in seconds for when the resource was updated.
+ # @return [Time]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/Eula AWS API Documentation
+ #
+ class Eula < Struct.new(
+ :content,
+ :created_at,
+ :eula_id,
+ :name,
+ :updated_at)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # The acceptance of a EULA, required to use Amazon-provided streaming
+ # images.
+ #
+ # @!attribute [rw] accepted_at
+ # The ISO timestamp in seconds for when the EULA was accepted.
+ # @return [Time]
+ #
+ # @!attribute [rw] accepted_by
+ # The ID of the person who accepted the EULA.
+ # @return [String]
+ #
+ # @!attribute [rw] acceptee_id
+ # The ID of the acceptee.
+ # @return [String]
+ #
+ # @!attribute [rw] eula_acceptance_id
+ # The EULA acceptance ID.
+ # @return [String]
+ #
+ # @!attribute [rw] eula_id
+ # The EULA ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/EulaAcceptance AWS API Documentation
+ #
+ class EulaAcceptance < Struct.new(
+ :accepted_at,
+ :accepted_by,
+ :acceptee_id,
+ :eula_acceptance_id,
+ :eula_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] eula_id
+ # The EULA ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetEulaRequest AWS API Documentation
+ #
+ class GetEulaRequest < Struct.new(
+ :eula_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] eula
+ # The EULA.
+ # @return [Types::Eula]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetEulaResponse AWS API Documentation
+ #
+ class GetEulaResponse < Struct.new(
+ :eula)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] launch_profile_id
+ # The ID of the launch profile used to control access from the
+ # streaming session.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetLaunchProfileDetailsRequest AWS API Documentation
+ #
+ class GetLaunchProfileDetailsRequest < Struct.new(
+ :launch_profile_id,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] launch_profile
+ # The launch profile.
+ # @return [Types::LaunchProfile]
+ #
+ # @!attribute [rw] streaming_images
+ # A collection of streaming images.
+ # @return [Array]
+ #
+ # @!attribute [rw] studio_component_summaries
+ # A collection of studio component summaries.
+ # @return [Array]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetLaunchProfileDetailsResponse AWS API Documentation
+ #
+ class GetLaunchProfileDetailsResponse < Struct.new(
+ :launch_profile,
+ :streaming_images,
+ :studio_component_summaries)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] launch_profile_id
+ # The ID of the launch profile used to control access from the
+ # streaming session.
+ # @return [String]
+ #
+ # @!attribute [rw] launch_profile_protocol_versions
+ # The launch profile protocol versions supported by the client.
+ # @return [Array]
+ #
+ # @!attribute [rw] launch_purpose
+ # The launch purpose.
+ # @return [String]
+ #
+ # @!attribute [rw] platform
+ # The platform where this Launch Profile will be used, either Windows
+ # or Linux.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetLaunchProfileInitializationRequest AWS API Documentation
+ #
+ class GetLaunchProfileInitializationRequest < Struct.new(
+ :launch_profile_id,
+ :launch_profile_protocol_versions,
+ :launch_purpose,
+ :platform,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] launch_profile_initialization
+ # The launch profile initialization.
+ # @return [Types::LaunchProfileInitialization]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetLaunchProfileInitializationResponse AWS API Documentation
+ #
+ class GetLaunchProfileInitializationResponse < Struct.new(
+ :launch_profile_initialization)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] launch_profile_id
+ # The ID of the launch profile used to control access from the
+ # streaming session.
+ # @return [String]
+ #
+ # @!attribute [rw] principal_id
+ # The principal ID. This currently supports a IAM Identity Center
+ # UserId.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetLaunchProfileMemberRequest AWS API Documentation
+ #
+ class GetLaunchProfileMemberRequest < Struct.new(
+ :launch_profile_id,
+ :principal_id,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] member
+ # The member.
+ # @return [Types::LaunchProfileMembership]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetLaunchProfileMemberResponse AWS API Documentation
+ #
+ class GetLaunchProfileMemberResponse < Struct.new(
+ :member)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] launch_profile_id
+ # The ID of the launch profile used to control access from the
+ # streaming session.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetLaunchProfileRequest AWS API Documentation
+ #
+ class GetLaunchProfileRequest < Struct.new(
+ :launch_profile_id,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] launch_profile
+ # The launch profile.
+ # @return [Types::LaunchProfile]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetLaunchProfileResponse AWS API Documentation
+ #
+ class GetLaunchProfileResponse < Struct.new(
+ :launch_profile)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] streaming_image_id
+ # The streaming image ID.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetStreamingImageRequest AWS API Documentation
+ #
+ class GetStreamingImageRequest < Struct.new(
+ :streaming_image_id,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] streaming_image
+ # The streaming image.
+ # @return [Types::StreamingImage]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetStreamingImageResponse AWS API Documentation
+ #
+ class GetStreamingImageResponse < Struct.new(
+ :streaming_image)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] backup_id
+ # The ID of the backup.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetStreamingSessionBackupRequest AWS API Documentation
+ #
+ class GetStreamingSessionBackupRequest < Struct.new(
+ :backup_id,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] streaming_session_backup
+ # Information about the streaming session backup.
+ # @return [Types::StreamingSessionBackup]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetStreamingSessionBackupResponse AWS API Documentation
+ #
+ class GetStreamingSessionBackupResponse < Struct.new(
+ :streaming_session_backup)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] session_id
+ # The streaming session ID.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetStreamingSessionRequest AWS API Documentation
+ #
+ class GetStreamingSessionRequest < Struct.new(
+ :session_id,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] session
+ # The session.
+ # @return [Types::StreamingSession]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetStreamingSessionResponse AWS API Documentation
+ #
+ class GetStreamingSessionResponse < Struct.new(
+ :session)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] session_id
+ # The streaming session ID.
+ # @return [String]
+ #
+ # @!attribute [rw] stream_id
+ # The streaming session stream ID.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetStreamingSessionStreamRequest AWS API Documentation
+ #
+ class GetStreamingSessionStreamRequest < Struct.new(
+ :session_id,
+ :stream_id,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] stream
+ # The stream.
+ # @return [Types::StreamingSessionStream]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetStreamingSessionStreamResponse AWS API Documentation
+ #
+ class GetStreamingSessionStreamResponse < Struct.new(
+ :stream)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] studio_component_id
+ # The studio component ID.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetStudioComponentRequest AWS API Documentation
+ #
+ class GetStudioComponentRequest < Struct.new(
+ :studio_component_id,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] studio_component
+ # Information about the studio component.
+ # @return [Types::StudioComponent]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetStudioComponentResponse AWS API Documentation
+ #
+ class GetStudioComponentResponse < Struct.new(
+ :studio_component)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] principal_id
+ # The principal ID. This currently supports a IAM Identity Center
+ # UserId.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetStudioMemberRequest AWS API Documentation
+ #
+ class GetStudioMemberRequest < Struct.new(
+ :principal_id,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] member
+ # The member.
+ # @return [Types::StudioMembership]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetStudioMemberResponse AWS API Documentation
+ #
+ class GetStudioMemberResponse < Struct.new(
+ :member)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetStudioRequest AWS API Documentation
+ #
+ class GetStudioRequest < Struct.new(
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] studio
+ # Information about a studio.
+ # @return [Types::Studio]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/GetStudioResponse AWS API Documentation
+ #
+ class GetStudioResponse < Struct.new(
+ :studio)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # An internal error has occurred. Please retry your request.
+ #
+ # @!attribute [rw] code
+ # A more specific error code.
+ # @return [String]
+ #
+ # @!attribute [rw] context
+ # The exception context.
+ # @return [Hash]
+ #
+ # @!attribute [rw] message
+ # A human-readable description of the error.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/InternalServerErrorException AWS API Documentation
+ #
+ class InternalServerErrorException < Struct.new(
+ :code,
+ :context,
+ :message)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # A launch profile controls your artist workforce’s access to studio
+ # components, like compute farms, shared file systems, managed file
+ # systems, and license server configurations, as well as instance types
+ # and Amazon Machine Images (AMIs).
+ #
+ # Studio administrators create launch profiles in the Nimble Studio
+ # console. Artists can use their launch profiles to launch an instance
+ # from the Nimble Studio portal. Each user’s launch profile defines how
+ # they can launch a streaming session. By default, studio admins can use
+ # all launch profiles.
+ #
+ # @!attribute [rw] arn
+ # The Amazon Resource Name (ARN) that is assigned to a studio resource
+ # and uniquely identifies it. ARNs are unique across all Regions.
+ # @return [String]
+ #
+ # @!attribute [rw] created_at
+ # The ISO timestamp in seconds for when the resource was created.
+ # @return [Time]
+ #
+ # @!attribute [rw] created_by
+ # The user ID of the user that created the launch profile.
+ # @return [String]
+ #
+ # @!attribute [rw] description
+ # A human-readable description of the launch profile.
+ # @return [String]
+ #
+ # @!attribute [rw] ec2_subnet_ids
+ # Unique identifiers for a collection of EC2 subnets.
+ # @return [Array]
+ #
+ # @!attribute [rw] launch_profile_id
+ # The ID of the launch profile used to control access from the
+ # streaming session.
+ # @return [String]
+ #
+ # @!attribute [rw] launch_profile_protocol_versions
+ # The version number of the protocol that is used by the launch
+ # profile. The only valid version is "2021-03-31".
+ # @return [Array]
+ #
+ # @!attribute [rw] name
+ # A friendly name for the launch profile.
+ # @return [String]
+ #
+ # @!attribute [rw] state
+ # The current state.
+ # @return [String]
+ #
+ # @!attribute [rw] status_code
+ # The status code.
+ # @return [String]
+ #
+ # @!attribute [rw] status_message
+ # The status message for the launch profile.
+ # @return [String]
+ #
+ # @!attribute [rw] stream_configuration
+ # A configuration for a streaming session.
+ # @return [Types::StreamConfiguration]
+ #
+ # @!attribute [rw] studio_component_ids
+ # Unique identifiers for a collection of studio components that can be
+ # used with this launch profile.
+ # @return [Array]
+ #
+ # @!attribute [rw] tags
+ # A collection of labels, in the form of key-value pairs, that apply
+ # to this resource.
+ # @return [Hash]
+ #
+ # @!attribute [rw] updated_at
+ # The ISO timestamp in seconds for when the resource was updated.
+ # @return [Time]
+ #
+ # @!attribute [rw] updated_by
+ # The user ID of the user that most recently updated the resource.
+ # @return [String]
+ #
+ # @!attribute [rw] validation_results
+ # The list of the latest validation results.
+ # @return [Array]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/LaunchProfile AWS API Documentation
+ #
+ class LaunchProfile < Struct.new(
+ :arn,
+ :created_at,
+ :created_by,
+ :description,
+ :ec2_subnet_ids,
+ :launch_profile_id,
+ :launch_profile_protocol_versions,
+ :name,
+ :state,
+ :status_code,
+ :status_message,
+ :stream_configuration,
+ :studio_component_ids,
+ :tags,
+ :updated_at,
+ :updated_by,
+ :validation_results)
+ SENSITIVE = [:description, :name]
+ include Aws::Structure
+ end
+
+ # A launch profile initialization contains information required for a
+ # workstation or server to connect to a launch profile.
+ #
+ # This includes scripts, endpoints, security groups, subnets, and other
+ # configuration.
+ #
+ # @!attribute [rw] active_directory
+ # A `LaunchProfileInitializationActiveDirectory` resource.
+ # @return [Types::LaunchProfileInitializationActiveDirectory]
+ #
+ # @!attribute [rw] ec2_security_group_ids
+ # The EC2 security groups that control access to the studio component.
+ # @return [Array]
+ #
+ # @!attribute [rw] launch_profile_id
+ # The ID of the launch profile used to control access from the
+ # streaming session.
+ # @return [String]
+ #
+ # @!attribute [rw] launch_profile_protocol_version
+ # The version number of the protocol that is used by the launch
+ # profile. The only valid version is "2021-03-31".
+ # @return [String]
+ #
+ # @!attribute [rw] launch_purpose
+ # The launch purpose.
+ # @return [String]
+ #
+ # @!attribute [rw] name
+ # The name for the launch profile.
+ # @return [String]
+ #
+ # @!attribute [rw] platform
+ # The platform of the launch platform, either Windows or Linux.
+ # @return [String]
+ #
+ # @!attribute [rw] system_initialization_scripts
+ # The system initializtion scripts.
+ # @return [Array]
+ #
+ # @!attribute [rw] user_initialization_scripts
+ # The user initializtion scripts.
+ # @return [Array]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/LaunchProfileInitialization AWS API Documentation
+ #
+ class LaunchProfileInitialization < Struct.new(
+ :active_directory,
+ :ec2_security_group_ids,
+ :launch_profile_id,
+ :launch_profile_protocol_version,
+ :launch_purpose,
+ :name,
+ :platform,
+ :system_initialization_scripts,
+ :user_initialization_scripts)
+ SENSITIVE = [:name]
+ include Aws::Structure
+ end
+
+ # The launch profile initialization Active Directory contains
+ # information required for the launch profile to connect to the Active
+ # Directory.
+ #
+ # @!attribute [rw] computer_attributes
+ # A collection of custom attributes for an Active Directory computer.
+ # @return [Array]
+ #
+ # @!attribute [rw] directory_id
+ # The directory ID of the Directory Service for Microsoft Active
+ # Directory to access using this launch profile.
+ # @return [String]
+ #
+ # @!attribute [rw] directory_name
+ # The directory name.
+ # @return [String]
+ #
+ # @!attribute [rw] dns_ip_addresses
+ # The DNS IP address.
+ # @return [Array]
+ #
+ # @!attribute [rw] organizational_unit_distinguished_name
+ # The name for the organizational unit distinguished name.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_component_id
+ # The unique identifier for a studio component resource.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_component_name
+ # The name for the studio component.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/LaunchProfileInitializationActiveDirectory AWS API Documentation
+ #
+ class LaunchProfileInitializationActiveDirectory < Struct.new(
+ :computer_attributes,
+ :directory_id,
+ :directory_name,
+ :dns_ip_addresses,
+ :organizational_unit_distinguished_name,
+ :studio_component_id,
+ :studio_component_name)
+ SENSITIVE = [:computer_attributes, :studio_component_name]
+ include Aws::Structure
+ end
+
+ # The launch profile initialization script is used when start streaming
+ # session runs.
+ #
+ # @!attribute [rw] runtime_role_arn
+ # An IAM role attached to a Studio Component that gives the studio
+ # component access to Amazon Web Services resources at anytime while
+ # the instance is running.
+ # @return [String]
+ #
+ # @!attribute [rw] script
+ # The initialization script.
+ # @return [String]
+ #
+ # @!attribute [rw] secure_initialization_role_arn
+ # An IAM role attached to Studio Component when the system
+ # initialization script runs which give the studio component access to
+ # Amazon Web Services resources when the system initialization script
+ # runs.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_component_id
+ # The unique identifier for a studio component resource.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_component_name
+ # The name for the studio component.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/LaunchProfileInitializationScript AWS API Documentation
+ #
+ class LaunchProfileInitializationScript < Struct.new(
+ :runtime_role_arn,
+ :script,
+ :secure_initialization_role_arn,
+ :studio_component_id,
+ :studio_component_name)
+ SENSITIVE = [:script, :studio_component_name]
+ include Aws::Structure
+ end
+
+ # Studio admins can use launch profile membership to delegate launch
+ # profile access to studio users in the Nimble Studio portal without
+ # writing or maintaining complex IAM policies. A launch profile member
+ # is a user association from your studio identity source who is granted
+ # permissions to a launch profile.
+ #
+ # A launch profile member (type USER) provides the following permissions
+ # to that launch profile:
+ #
+ # * GetLaunchProfile
+ #
+ # * GetLaunchProfileInitialization
+ #
+ # * GetLaunchProfileMembers
+ #
+ # * GetLaunchProfileMember
+ #
+ # * CreateStreamingSession
+ #
+ # * GetLaunchProfileDetails
+ #
+ # @!attribute [rw] identity_store_id
+ # The ID of the identity store.
+ # @return [String]
+ #
+ # @!attribute [rw] persona
+ # The persona.
+ # @return [String]
+ #
+ # @!attribute [rw] principal_id
+ # The principal ID.
+ # @return [String]
+ #
+ # @!attribute [rw] sid
+ # The Active Directory Security Identifier for this user, if
+ # available.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/LaunchProfileMembership AWS API Documentation
+ #
+ class LaunchProfileMembership < Struct.new(
+ :identity_store_id,
+ :persona,
+ :principal_id,
+ :sid)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # The configuration for a license service that is associated with a
+ # studio resource.
+ #
+ # @!attribute [rw] endpoint
+ # The endpoint of the license service that is accessed by the studio
+ # component resource.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/LicenseServiceConfiguration AWS API Documentation
+ #
+ class LicenseServiceConfiguration < Struct.new(
+ :endpoint)
+ SENSITIVE = [:endpoint]
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] eula_ids
+ # The list of EULA IDs that have been previously accepted.
+ # @return [Array]
+ #
+ # @!attribute [rw] next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListEulaAcceptancesRequest AWS API Documentation
+ #
+ class ListEulaAcceptancesRequest < Struct.new(
+ :eula_ids,
+ :next_token,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] eula_acceptances
+ # A collection of EULA acceptances.
+ # @return [Array]
+ #
+ # @!attribute [rw] next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListEulaAcceptancesResponse AWS API Documentation
+ #
+ class ListEulaAcceptancesResponse < Struct.new(
+ :eula_acceptances,
+ :next_token)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] eula_ids
+ # The list of EULA IDs that should be returned
+ # @return [Array]
+ #
+ # @!attribute [rw] next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListEulasRequest AWS API Documentation
+ #
+ class ListEulasRequest < Struct.new(
+ :eula_ids,
+ :next_token)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] eulas
+ # A collection of EULA resources.
+ # @return [Array]
+ #
+ # @!attribute [rw] next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListEulasResponse AWS API Documentation
+ #
+ class ListEulasResponse < Struct.new(
+ :eulas,
+ :next_token)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] launch_profile_id
+ # The ID of the launch profile used to control access from the
+ # streaming session.
+ # @return [String]
+ #
+ # @!attribute [rw] max_results
+ # The max number of results to return in the response.
+ # @return [Integer]
+ #
+ # @!attribute [rw] next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListLaunchProfileMembersRequest AWS API Documentation
+ #
+ class ListLaunchProfileMembersRequest < Struct.new(
+ :launch_profile_id,
+ :max_results,
+ :next_token,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] members
+ # A list of members.
+ # @return [Array]
+ #
+ # @!attribute [rw] next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListLaunchProfileMembersResponse AWS API Documentation
+ #
+ class ListLaunchProfileMembersResponse < Struct.new(
+ :members,
+ :next_token)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] max_results
+ # The max number of results to return in the response.
+ # @return [Integer]
+ #
+ # @!attribute [rw] next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ # @return [String]
+ #
+ # @!attribute [rw] principal_id
+ # The principal ID. This currently supports a IAM Identity Center
+ # UserId.
+ # @return [String]
+ #
+ # @!attribute [rw] states
+ # Filter this request to launch profiles in any of the given states.
+ # @return [Array]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListLaunchProfilesRequest AWS API Documentation
+ #
+ class ListLaunchProfilesRequest < Struct.new(
+ :max_results,
+ :next_token,
+ :principal_id,
+ :states,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] launch_profiles
+ # A collection of launch profiles.
+ # @return [Array]
+ #
+ # @!attribute [rw] next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListLaunchProfilesResponse AWS API Documentation
+ #
+ class ListLaunchProfilesResponse < Struct.new(
+ :launch_profiles,
+ :next_token)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ # @return [String]
+ #
+ # @!attribute [rw] owner
+ # Filter this request to streaming images with the given owner
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListStreamingImagesRequest AWS API Documentation
+ #
+ class ListStreamingImagesRequest < Struct.new(
+ :next_token,
+ :owner,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ # @return [String]
+ #
+ # @!attribute [rw] streaming_images
+ # A collection of streaming images.
+ # @return [Array]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListStreamingImagesResponse AWS API Documentation
+ #
+ class ListStreamingImagesResponse < Struct.new(
+ :next_token,
+ :streaming_images)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ # @return [String]
+ #
+ # @!attribute [rw] owned_by
+ # The user ID of the user that owns the streaming session.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListStreamingSessionBackupsRequest AWS API Documentation
+ #
+ class ListStreamingSessionBackupsRequest < Struct.new(
+ :next_token,
+ :owned_by,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ # @return [String]
+ #
+ # @!attribute [rw] streaming_session_backups
+ # Information about the streaming session backups.
+ # @return [Array]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListStreamingSessionBackupsResponse AWS API Documentation
+ #
+ class ListStreamingSessionBackupsResponse < Struct.new(
+ :next_token,
+ :streaming_session_backups)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] created_by
+ # Filters the request to streaming sessions created by the given user.
+ # @return [String]
+ #
+ # @!attribute [rw] next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ # @return [String]
+ #
+ # @!attribute [rw] owned_by
+ # Filters the request to streaming session owned by the given user
+ # @return [String]
+ #
+ # @!attribute [rw] session_ids
+ # Filters the request to only the provided session IDs.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListStreamingSessionsRequest AWS API Documentation
+ #
+ class ListStreamingSessionsRequest < Struct.new(
+ :created_by,
+ :next_token,
+ :owned_by,
+ :session_ids,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ # @return [String]
+ #
+ # @!attribute [rw] sessions
+ # A collection of streaming sessions.
+ # @return [Array]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListStreamingSessionsResponse AWS API Documentation
+ #
+ class ListStreamingSessionsResponse < Struct.new(
+ :next_token,
+ :sessions)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] max_results
+ # The max number of results to return in the response.
+ # @return [Integer]
+ #
+ # @!attribute [rw] next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ # @return [String]
+ #
+ # @!attribute [rw] states
+ # Filters the request to studio components that are in one of the
+ # given states.
+ # @return [Array]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @!attribute [rw] types
+ # Filters the request to studio components that are of one of the
+ # given types.
+ # @return [Array]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListStudioComponentsRequest AWS API Documentation
+ #
+ class ListStudioComponentsRequest < Struct.new(
+ :max_results,
+ :next_token,
+ :states,
+ :studio_id,
+ :types)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_components
+ # A collection of studio components.
+ # @return [Array]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListStudioComponentsResponse AWS API Documentation
+ #
+ class ListStudioComponentsResponse < Struct.new(
+ :next_token,
+ :studio_components)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] max_results
+ # The max number of results to return in the response.
+ # @return [Integer]
+ #
+ # @!attribute [rw] next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListStudioMembersRequest AWS API Documentation
+ #
+ class ListStudioMembersRequest < Struct.new(
+ :max_results,
+ :next_token,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] members
+ # A list of admin members.
+ # @return [Array]
+ #
+ # @!attribute [rw] next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListStudioMembersResponse AWS API Documentation
+ #
+ class ListStudioMembersResponse < Struct.new(
+ :members,
+ :next_token)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListStudiosRequest AWS API Documentation
+ #
+ class ListStudiosRequest < Struct.new(
+ :next_token)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] next_token
+ # The token for the next set of results, or null if there are no more
+ # results.
+ # @return [String]
+ #
+ # @!attribute [rw] studios
+ # A collection of studios.
+ # @return [Array]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListStudiosResponse AWS API Documentation
+ #
+ class ListStudiosResponse < Struct.new(
+ :next_token,
+ :studios)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] resource_arn
+ # The Amazon Resource Name (ARN) of the resource for which you want to
+ # list tags.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListTagsForResourceRequest AWS API Documentation
+ #
+ class ListTagsForResourceRequest < Struct.new(
+ :resource_arn)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] tags
+ # A collection of labels, in the form of key-value pairs, that apply
+ # to this resource.
+ # @return [Hash]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ListTagsForResourceResponse AWS API Documentation
+ #
+ class ListTagsForResourceResponse < Struct.new(
+ :tags)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # A new member that is added to a launch profile.
+ #
+ # @!attribute [rw] persona
+ # The persona.
+ # @return [String]
+ #
+ # @!attribute [rw] principal_id
+ # The principal ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/NewLaunchProfileMember AWS API Documentation
+ #
+ class NewLaunchProfileMember < Struct.new(
+ :persona,
+ :principal_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # A new studio user's membership.
+ #
+ # @!attribute [rw] persona
+ # The persona.
+ # @return [String]
+ #
+ # @!attribute [rw] principal_id
+ # The principal ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/NewStudioMember AWS API Documentation
+ #
+ class NewStudioMember < Struct.new(
+ :persona,
+ :principal_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.
+ # @return [String]
+ #
+ # @!attribute [rw] identity_store_id
+ # The ID of the identity store.
+ # @return [String]
+ #
+ # @!attribute [rw] launch_profile_id
+ # The ID of the launch profile used to control access from the
+ # streaming session.
+ # @return [String]
+ #
+ # @!attribute [rw] members
+ # A list of members.
+ # @return [Array]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/PutLaunchProfileMembersRequest AWS API Documentation
+ #
+ class PutLaunchProfileMembersRequest < Struct.new(
+ :client_token,
+ :identity_store_id,
+ :launch_profile_id,
+ :members,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/PutLaunchProfileMembersResponse AWS API Documentation
+ #
+ class PutLaunchProfileMembersResponse < Aws::EmptyStructure; end
+
+ # @!attribute [rw] client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.
+ # @return [String]
+ #
+ # @!attribute [rw] identity_store_id
+ # The ID of the identity store.
+ # @return [String]
+ #
+ # @!attribute [rw] members
+ # A list of members.
+ # @return [Array]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/PutStudioMembersRequest AWS API Documentation
+ #
+ class PutStudioMembersRequest < Struct.new(
+ :client_token,
+ :identity_store_id,
+ :members,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/PutStudioMembersResponse AWS API Documentation
+ #
+ class PutStudioMembersResponse < Aws::EmptyStructure; end
+
+ # The specified resource could not be found.
+ #
+ # @!attribute [rw] code
+ # A more specific error code.
+ # @return [String]
+ #
+ # @!attribute [rw] context
+ # The exception context.
+ # @return [Hash]
+ #
+ # @!attribute [rw] message
+ # A human-readable description of the error.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ResourceNotFoundException AWS API Documentation
+ #
+ class ResourceNotFoundException < Struct.new(
+ :code,
+ :context,
+ :message)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # A parameter for a studio component script, in the form of a key-value
+ # pair.
+ #
+ # @!attribute [rw] key
+ # A script parameter key.
+ # @return [String]
+ #
+ # @!attribute [rw] value
+ # A script parameter value.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ScriptParameterKeyValue AWS API Documentation
+ #
+ class ScriptParameterKeyValue < Struct.new(
+ :key,
+ :value)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # Your current quota does not allow you to perform the request action.
+ # You can request increases for some quotas, and other quotas cannot be
+ # increased.
+ #
+ # Please use Amazon Web Services Service Quotas to request an increase.
+ #
+ # @!attribute [rw] code
+ # A more specific error code.
+ # @return [String]
+ #
+ # @!attribute [rw] context
+ # The exception context.
+ # @return [Hash]
+ #
+ # @!attribute [rw] message
+ # A human-readable description of the error.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ServiceQuotaExceededException AWS API Documentation
+ #
+ class ServiceQuotaExceededException < Struct.new(
+ :code,
+ :context,
+ :message)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # The configuration for a shared file storage system that is associated
+ # with a studio resource.
+ #
+ # @!attribute [rw] endpoint
+ # The endpoint of the shared file system that is accessed by the
+ # studio component resource.
+ # @return [String]
+ #
+ # @!attribute [rw] file_system_id
+ # The unique identifier for a file system.
+ # @return [String]
+ #
+ # @!attribute [rw] linux_mount_point
+ # The mount location for a shared file system on a Linux virtual
+ # workstation.
+ # @return [String]
+ #
+ # @!attribute [rw] share_name
+ # The name of the file share.
+ # @return [String]
+ #
+ # @!attribute [rw] windows_mount_drive
+ # The mount location for a shared file system on a Windows virtual
+ # workstation.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/SharedFileSystemConfiguration AWS API Documentation
+ #
+ class SharedFileSystemConfiguration < Struct.new(
+ :endpoint,
+ :file_system_id,
+ :linux_mount_point,
+ :share_name,
+ :windows_mount_drive)
+ SENSITIVE = [:endpoint, :linux_mount_point, :share_name]
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] backup_id
+ # The ID of the backup.
+ # @return [String]
+ #
+ # @!attribute [rw] client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.
+ # @return [String]
+ #
+ # @!attribute [rw] session_id
+ # The streaming session ID for the `StartStreamingSessionRequest`.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID for the StartStreamingSessionRequest.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/StartStreamingSessionRequest AWS API Documentation
+ #
+ class StartStreamingSessionRequest < Struct.new(
+ :backup_id,
+ :client_token,
+ :session_id,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] session
+ # A streaming session is a virtual workstation created using a
+ # particular launch profile.
+ # @return [Types::StreamingSession]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/StartStreamingSessionResponse AWS API Documentation
+ #
+ class StartStreamingSessionResponse < Struct.new(
+ :session)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/StartStudioSSOConfigurationRepairRequest AWS API Documentation
+ #
+ class StartStudioSSOConfigurationRepairRequest < Struct.new(
+ :client_token,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] studio
+ # Information about a studio.
+ # @return [Types::Studio]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/StartStudioSSOConfigurationRepairResponse AWS API Documentation
+ #
+ class StartStudioSSOConfigurationRepairResponse < Struct.new(
+ :studio)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.
+ # @return [String]
+ #
+ # @!attribute [rw] session_id
+ # The streaming session ID for the `StopStreamingSessionRequest`.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studioId for the StopStreamingSessionRequest.
+ # @return [String]
+ #
+ # @!attribute [rw] volume_retention_mode
+ # Adds additional instructions to a streaming session stop action to
+ # either retain the EBS volumes or delete the EBS volumes.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/StopStreamingSessionRequest AWS API Documentation
+ #
+ class StopStreamingSessionRequest < Struct.new(
+ :client_token,
+ :session_id,
+ :studio_id,
+ :volume_retention_mode)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] session
+ # A streaming session is a virtual workstation created using a
+ # particular launch profile.
+ # @return [Types::StreamingSession]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/StopStreamingSessionResponse AWS API Documentation
+ #
+ class StopStreamingSessionResponse < Struct.new(
+ :session)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # A configuration for a streaming session.
+ #
+ # @!attribute [rw] automatic_termination_mode
+ # Indicates if a streaming session created from this launch profile
+ # should be terminated automatically or retained without termination
+ # after being in a `STOPPED` state.
+ #
+ # * When `ACTIVATED`, the streaming session is scheduled for
+ # termination after being in the `STOPPED` state for the time
+ # specified in `maxStoppedSessionLengthInMinutes`.
+ #
+ # * When `DEACTIVATED`, the streaming session can remain in the
+ # `STOPPED` state indefinitely.
+ #
+ # This parameter is only allowed when `sessionPersistenceMode` is
+ # `ACTIVATED`. When allowed, the default value for this parameter is
+ # `DEACTIVATED`.
+ # @return [String]
+ #
+ # @!attribute [rw] clipboard_mode
+ # Allows or deactivates the use of the system clipboard to copy and
+ # paste between the streaming session and streaming client.
+ # @return [String]
+ #
+ # @!attribute [rw] ec2_instance_types
+ # The EC2 instance types that users can select from when launching a
+ # streaming session with this launch profile.
+ # @return [Array]
+ #
+ # @!attribute [rw] max_session_length_in_minutes
+ # The length of time, in minutes, that a streaming session can be
+ # active before it is stopped or terminated. After this point, Nimble
+ # Studio automatically terminates or stops the session. The default
+ # length of time is 690 minutes, and the maximum length of time is 30
+ # days.
+ # @return [Integer]
+ #
+ # @!attribute [rw] max_stopped_session_length_in_minutes
+ # Integer that determines if you can start and stop your sessions and
+ # how long a session can stay in the `STOPPED` state. The default
+ # value is 0. The maximum value is 5760.
+ #
+ # This field is allowed only when `sessionPersistenceMode` is
+ # `ACTIVATED` and `automaticTerminationMode` is `ACTIVATED`.
+ #
+ # If the value is set to 0, your sessions can’t be `STOPPED`. If you
+ # then call `StopStreamingSession`, the session fails. If the time
+ # that a session stays in the `READY` state exceeds the
+ # `maxSessionLengthInMinutes` value, the session will automatically be
+ # terminated (instead of `STOPPED`).
+ #
+ # If the value is set to a positive number, the session can be
+ # stopped. You can call `StopStreamingSession` to stop sessions in the
+ # `READY` state. If the time that a session stays in the `READY` state
+ # exceeds the `maxSessionLengthInMinutes` value, the session will
+ # automatically be stopped (instead of terminated).
+ # @return [Integer]
+ #
+ # @!attribute [rw] session_backup
+ # Information about the streaming session backup.
+ # @return [Types::StreamConfigurationSessionBackup]
+ #
+ # @!attribute [rw] session_persistence_mode
+ # Determine if a streaming session created from this launch profile
+ # can configure persistent storage. This means that
+ # `volumeConfiguration` and `automaticTerminationMode` are configured.
+ # @return [String]
+ #
+ # @!attribute [rw] session_storage
+ # The upload storage for a streaming session.
+ # @return [Types::StreamConfigurationSessionStorage]
+ #
+ # @!attribute [rw] streaming_image_ids
+ # The streaming images that users can select from when launching a
+ # streaming session with this launch profile.
+ # @return [Array]
+ #
+ # @!attribute [rw] volume_configuration
+ # Custom volume configuration for the root volumes that are attached
+ # to streaming sessions.
+ #
+ # This parameter is only allowed when `sessionPersistenceMode` is
+ # `ACTIVATED`.
+ # @return [Types::VolumeConfiguration]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/StreamConfiguration AWS API Documentation
+ #
+ class StreamConfiguration < Struct.new(
+ :automatic_termination_mode,
+ :clipboard_mode,
+ :ec2_instance_types,
+ :max_session_length_in_minutes,
+ :max_stopped_session_length_in_minutes,
+ :session_backup,
+ :session_persistence_mode,
+ :session_storage,
+ :streaming_image_ids,
+ :volume_configuration)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # Configuration for streaming workstations created using this launch
+ # profile.
+ #
+ # @!attribute [rw] automatic_termination_mode
+ # Indicates if a streaming session created from this launch profile
+ # should be terminated automatically or retained without termination
+ # after being in a `STOPPED` state.
+ #
+ # * When `ACTIVATED`, the streaming session is scheduled for
+ # termination after being in the `STOPPED` state for the time
+ # specified in `maxStoppedSessionLengthInMinutes`.
+ #
+ # * When `DEACTIVATED`, the streaming session can remain in the
+ # `STOPPED` state indefinitely.
+ #
+ # This parameter is only allowed when `sessionPersistenceMode` is
+ # `ACTIVATED`. When allowed, the default value for this parameter is
+ # `DEACTIVATED`.
+ # @return [String]
+ #
+ # @!attribute [rw] clipboard_mode
+ # Allows or deactivates the use of the system clipboard to copy and
+ # paste between the streaming session and streaming client.
+ # @return [String]
+ #
+ # @!attribute [rw] ec2_instance_types
+ # The EC2 instance types that users can select from when launching a
+ # streaming session with this launch profile.
+ # @return [Array]
+ #
+ # @!attribute [rw] max_session_length_in_minutes
+ # The length of time, in minutes, that a streaming session can be
+ # active before it is stopped or terminated. After this point, Nimble
+ # Studio automatically terminates or stops the session. The default
+ # length of time is 690 minutes, and the maximum length of time is 30
+ # days.
+ # @return [Integer]
+ #
+ # @!attribute [rw] max_stopped_session_length_in_minutes
+ # Integer that determines if you can start and stop your sessions and
+ # how long a session can stay in the `STOPPED` state. The default
+ # value is 0. The maximum value is 5760.
+ #
+ # This field is allowed only when `sessionPersistenceMode` is
+ # `ACTIVATED` and `automaticTerminationMode` is `ACTIVATED`.
+ #
+ # If the value is set to 0, your sessions can’t be `STOPPED`. If you
+ # then call `StopStreamingSession`, the session fails. If the time
+ # that a session stays in the `READY` state exceeds the
+ # `maxSessionLengthInMinutes` value, the session will automatically be
+ # terminated (instead of `STOPPED`).
+ #
+ # If the value is set to a positive number, the session can be
+ # stopped. You can call `StopStreamingSession` to stop sessions in the
+ # `READY` state. If the time that a session stays in the `READY` state
+ # exceeds the `maxSessionLengthInMinutes` value, the session will
+ # automatically be stopped (instead of terminated).
+ # @return [Integer]
+ #
+ # @!attribute [rw] session_backup
+ # Configures how streaming sessions are backed up when launched from
+ # this launch profile.
+ # @return [Types::StreamConfigurationSessionBackup]
+ #
+ # @!attribute [rw] session_persistence_mode
+ # Determine if a streaming session created from this launch profile
+ # can configure persistent storage. This means that
+ # `volumeConfiguration` and `automaticTerminationMode` are configured.
+ # @return [String]
+ #
+ # @!attribute [rw] session_storage
+ # The upload storage for a streaming workstation that is created using
+ # this launch profile.
+ # @return [Types::StreamConfigurationSessionStorage]
+ #
+ # @!attribute [rw] streaming_image_ids
+ # The streaming images that users can select from when launching a
+ # streaming session with this launch profile.
+ # @return [Array]
+ #
+ # @!attribute [rw] volume_configuration
+ # Custom volume configuration for the root volumes that are attached
+ # to streaming sessions.
+ #
+ # This parameter is only allowed when `sessionPersistenceMode` is
+ # `ACTIVATED`.
+ # @return [Types::VolumeConfiguration]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/StreamConfigurationCreate AWS API Documentation
+ #
+ class StreamConfigurationCreate < Struct.new(
+ :automatic_termination_mode,
+ :clipboard_mode,
+ :ec2_instance_types,
+ :max_session_length_in_minutes,
+ :max_stopped_session_length_in_minutes,
+ :session_backup,
+ :session_persistence_mode,
+ :session_storage,
+ :streaming_image_ids,
+ :volume_configuration)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # Configures how streaming sessions are backed up when launched from
+ # this launch profile.
+ #
+ # @!attribute [rw] max_backups_to_retain
+ # The maximum number of backups that each streaming session created
+ # from this launch profile can have.
+ # @return [Integer]
+ #
+ # @!attribute [rw] mode
+ # Specifies how artists sessions are backed up.
+ #
+ # Configures backups for streaming sessions launched with this launch
+ # profile. The default value is `DEACTIVATED`, which means that
+ # backups are deactivated. To allow backups, set this value to
+ # `AUTOMATIC`.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/StreamConfigurationSessionBackup AWS API Documentation
+ #
+ class StreamConfigurationSessionBackup < Struct.new(
+ :max_backups_to_retain,
+ :mode)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # The configuration for a streaming session’s upload storage.
+ #
+ # @!attribute [rw] mode
+ # Allows artists to upload files to their workstations. The only valid
+ # option is `UPLOAD`.
+ # @return [Array]
+ #
+ # @!attribute [rw] root
+ # The configuration for the upload storage root of the streaming
+ # session.
+ # @return [Types::StreamingSessionStorageRoot]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/StreamConfigurationSessionStorage AWS API Documentation
+ #
+ class StreamConfigurationSessionStorage < Struct.new(
+ :mode,
+ :root)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # Represents a streaming image resource.
+ #
+ # Streaming images are used by studio users to select which operating
+ # system and software they want to use in a Nimble Studio streaming
+ # session.
+ #
+ # Amazon provides a number of streaming images that include popular
+ # 3rd-party software.
+ #
+ # You can create your own streaming images using an Amazon EC2 machine
+ # image that you create for this purpose. You can also include software
+ # that your users require.
+ #
+ # @!attribute [rw] arn
+ # The Amazon Resource Name (ARN) that is assigned to a studio resource
+ # and uniquely identifies it. ARNs are unique across all Regions.
+ # @return [String]
+ #
+ # @!attribute [rw] description
+ # A human-readable description of the streaming image.
+ # @return [String]
+ #
+ # @!attribute [rw] ec2_image_id
+ # The ID of an EC2 machine image with which to create the streaming
+ # image.
+ # @return [String]
+ #
+ # @!attribute [rw] encryption_configuration
+ # The encryption configuration.
+ # @return [Types::StreamingImageEncryptionConfiguration]
+ #
+ # @!attribute [rw] eula_ids
+ # The list of EULAs that must be accepted before a Streaming Session
+ # can be started using this streaming image.
+ # @return [Array]
+ #
+ # @!attribute [rw] name
+ # A friendly name for a streaming image resource.
+ # @return [String]
+ #
+ # @!attribute [rw] owner
+ # The owner of the streaming image, either the `studioId` that
+ # contains the streaming image, or `amazon` for images that are
+ # provided by Amazon Nimble Studio.
+ # @return [String]
+ #
+ # @!attribute [rw] platform
+ # The platform of the streaming image, either Windows or Linux.
+ # @return [String]
+ #
+ # @!attribute [rw] state
+ # The current state.
+ # @return [String]
+ #
+ # @!attribute [rw] status_code
+ # The status code.
+ # @return [String]
+ #
+ # @!attribute [rw] status_message
+ # The status message for the streaming image.
+ # @return [String]
+ #
+ # @!attribute [rw] streaming_image_id
+ # The ID of the streaming image.
+ # @return [String]
+ #
+ # @!attribute [rw] tags
+ # A collection of labels, in the form of key-value pairs, that apply
+ # to this resource.
+ # @return [Hash]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/StreamingImage AWS API Documentation
+ #
+ class StreamingImage < Struct.new(
+ :arn,
+ :description,
+ :ec2_image_id,
+ :encryption_configuration,
+ :eula_ids,
+ :name,
+ :owner,
+ :platform,
+ :state,
+ :status_code,
+ :status_message,
+ :streaming_image_id,
+ :tags)
+ SENSITIVE = [:description, :name]
+ include Aws::Structure
+ end
+
+ # Specifies how a streaming image is encrypted.
+ #
+ # @!attribute [rw] key_arn
+ # The ARN for a KMS key that is used to encrypt studio data.
+ # @return [String]
+ #
+ # @!attribute [rw] key_type
+ # The type of KMS key that is used to encrypt studio data.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/StreamingImageEncryptionConfiguration AWS API Documentation
+ #
+ class StreamingImageEncryptionConfiguration < Struct.new(
+ :key_arn,
+ :key_type)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # A streaming session is a virtual workstation created using a
+ # particular launch profile.
+ #
+ # @!attribute [rw] arn
+ # The Amazon Resource Name (ARN) that is assigned to a studio resource
+ # and uniquely identifies it. ARNs are unique across all Regions.
+ # @return [String]
+ #
+ # @!attribute [rw] automatic_termination_mode
+ # Indicates if a streaming session created from this launch profile
+ # should be terminated automatically or retained without termination
+ # after being in a `STOPPED` state.
+ #
+ # * When `ACTIVATED`, the streaming session is scheduled for
+ # termination after being in the `STOPPED` state for the time
+ # specified in `maxStoppedSessionLengthInMinutes`.
+ #
+ # * When `DEACTIVATED`, the streaming session can remain in the
+ # `STOPPED` state indefinitely.
+ #
+ # This parameter is only allowed when `sessionPersistenceMode` is
+ # `ACTIVATED`. When allowed, the default value for this parameter is
+ # `DEACTIVATED`.
+ # @return [String]
+ #
+ # @!attribute [rw] backup_mode
+ # Shows the current backup setting of the session.
+ # @return [String]
+ #
+ # @!attribute [rw] created_at
+ # The ISO timestamp in seconds for when the resource was created.
+ # @return [Time]
+ #
+ # @!attribute [rw] created_by
+ # The user ID of the user that created the streaming session.
+ # @return [String]
+ #
+ # @!attribute [rw] ec2_instance_type
+ # The EC2 Instance type used for the streaming session.
+ # @return [String]
+ #
+ # @!attribute [rw] launch_profile_id
+ # The ID of the launch profile used to control access from the
+ # streaming session.
+ # @return [String]
+ #
+ # @!attribute [rw] max_backups_to_retain
+ # The maximum number of backups of a streaming session that you can
+ # have. When the maximum number of backups is reached, the oldest
+ # backup is deleted.
+ # @return [Integer]
+ #
+ # @!attribute [rw] owned_by
+ # The user ID of the user that owns the streaming session. The user
+ # that owns the session will be logging into the session and
+ # interacting with the virtual workstation.
+ # @return [String]
+ #
+ # @!attribute [rw] session_id
+ # The session ID.
+ # @return [String]
+ #
+ # @!attribute [rw] session_persistence_mode
+ # Determine if a streaming session created from this launch profile
+ # can configure persistent storage. This means that
+ # `volumeConfiguration` and `automaticTerminationMode` are configured.
+ # @return [String]
+ #
+ # @!attribute [rw] started_at
+ # The time the session entered `START_IN_PROGRESS` state.
+ # @return [Time]
+ #
+ # @!attribute [rw] started_by
+ # The user ID of the user that started the streaming session.
+ # @return [String]
+ #
+ # @!attribute [rw] started_from_backup_id
+ # The backup ID used to restore a streaming session.
+ # @return [String]
+ #
+ # @!attribute [rw] state
+ # The current state.
+ # @return [String]
+ #
+ # @!attribute [rw] status_code
+ # The status code.
+ # @return [String]
+ #
+ # @!attribute [rw] status_message
+ # The status message for the streaming session.
+ # @return [String]
+ #
+ # @!attribute [rw] stop_at
+ # The time the streaming session will automatically be stopped if the
+ # user doesn’t stop the session themselves.
+ # @return [Time]
+ #
+ # @!attribute [rw] stopped_at
+ # The time the session entered `STOP_IN_PROGRESS` state.
+ # @return [Time]
+ #
+ # @!attribute [rw] stopped_by
+ # The user ID of the user that stopped the streaming session.
+ # @return [String]
+ #
+ # @!attribute [rw] streaming_image_id
+ # The ID of the streaming image.
+ # @return [String]
+ #
+ # @!attribute [rw] tags
+ # A collection of labels, in the form of key-value pairs, that apply
+ # to this resource.
+ # @return [Hash]
+ #
+ # @!attribute [rw] terminate_at
+ # The time the streaming session will automatically terminate if not
+ # terminated by the user.
+ # @return [Time]
+ #
+ # @!attribute [rw] updated_at
+ # The ISO timestamp in seconds for when the resource was updated.
+ # @return [Time]
+ #
+ # @!attribute [rw] updated_by
+ # The user ID of the user that most recently updated the resource.
+ # @return [String]
+ #
+ # @!attribute [rw] volume_configuration
+ # Custom volume configuration for the root volumes that are attached
+ # to streaming sessions.
+ #
+ # This parameter is only allowed when `sessionPersistenceMode` is
+ # `ACTIVATED`.
+ # @return [Types::VolumeConfiguration]
+ #
+ # @!attribute [rw] volume_retention_mode
+ # Determine if an EBS volume created from this streaming session will
+ # be backed up.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/StreamingSession AWS API Documentation
+ #
+ class StreamingSession < Struct.new(
+ :arn,
+ :automatic_termination_mode,
+ :backup_mode,
+ :created_at,
+ :created_by,
+ :ec2_instance_type,
+ :launch_profile_id,
+ :max_backups_to_retain,
+ :owned_by,
+ :session_id,
+ :session_persistence_mode,
+ :started_at,
+ :started_by,
+ :started_from_backup_id,
+ :state,
+ :status_code,
+ :status_message,
+ :stop_at,
+ :stopped_at,
+ :stopped_by,
+ :streaming_image_id,
+ :tags,
+ :terminate_at,
+ :updated_at,
+ :updated_by,
+ :volume_configuration,
+ :volume_retention_mode)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # Information about the streaming session backup.
+ #
+ # @!attribute [rw] arn
+ # The Amazon Resource Name (ARN) that is assigned to a studio resource
+ # and uniquely identifies it. ARNs are unique across all Regions.
+ # @return [String]
+ #
+ # @!attribute [rw] backup_id
+ # The ID of the backup.
+ # @return [String]
+ #
+ # @!attribute [rw] created_at
+ # The ISO timestamp in for when the resource was created.
+ # @return [Time]
+ #
+ # @!attribute [rw] launch_profile_id
+ # The ID of the launch profile which allowed the backups for the
+ # streaming session.
+ # @return [String]
+ #
+ # @!attribute [rw] owned_by
+ # The user ID of the user that owns the streaming session.
+ # @return [String]
+ #
+ # @!attribute [rw] session_id
+ # The streaming session ID for the `StreamingSessionBackup`.
+ # @return [String]
+ #
+ # @!attribute [rw] state
+ # The streaming session state.
+ # @return [String]
+ #
+ # @!attribute [rw] status_code
+ # The status code.
+ # @return [String]
+ #
+ # @!attribute [rw] status_message
+ # The status message for the streaming session backup.
+ # @return [String]
+ #
+ # @!attribute [rw] tags
+ # A collection of labels, in the form of key-value pairs, that apply
+ # to this resource.
+ # @return [Hash]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/StreamingSessionBackup AWS API Documentation
+ #
+ class StreamingSessionBackup < Struct.new(
+ :arn,
+ :backup_id,
+ :created_at,
+ :launch_profile_id,
+ :owned_by,
+ :session_id,
+ :state,
+ :status_code,
+ :status_message,
+ :tags)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # The upload storage root location (folder) on streaming workstations
+ # where files are uploaded.
+ #
+ # @!attribute [rw] linux
+ # The folder path in Linux workstations where files are uploaded.
+ # @return [String]
+ #
+ # @!attribute [rw] windows
+ # The folder path in Windows workstations where files are uploaded.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/StreamingSessionStorageRoot AWS API Documentation
+ #
+ class StreamingSessionStorageRoot < Struct.new(
+ :linux,
+ :windows)
+ SENSITIVE = [:linux, :windows]
+ include Aws::Structure
+ end
+
+ # A stream is an active connection to a streaming session, enabling a
+ # studio user to control the streaming session using a compatible
+ # client. Streaming session streams are compatible with the NICE DCV web
+ # client, included in the Nimble Studio portal, or the NICE DCV desktop
+ # client.
+ #
+ # @!attribute [rw] created_at
+ # The ISO timestamp in seconds for when the resource was created.
+ # @return [Time]
+ #
+ # @!attribute [rw] created_by
+ # The user ID of the user that created the streaming session stream.
+ # @return [String]
+ #
+ # @!attribute [rw] expires_at
+ # The ISO timestamp in seconds for when the resource expires.
+ # @return [Time]
+ #
+ # @!attribute [rw] owned_by
+ # The user ID of the user that owns the streaming session. The user
+ # that owns the session will be logging into the session and
+ # interacting with the virtual workstation.
+ # @return [String]
+ #
+ # @!attribute [rw] state
+ # The current state.
+ # @return [String]
+ #
+ # @!attribute [rw] status_code
+ # The streaming session stream status code.
+ # @return [String]
+ #
+ # @!attribute [rw] stream_id
+ # The stream ID.
+ # @return [String]
+ #
+ # @!attribute [rw] url
+ # The URL to connect to this stream using the DCV client.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/StreamingSessionStream AWS API Documentation
+ #
+ class StreamingSessionStream < Struct.new(
+ :created_at,
+ :created_by,
+ :expires_at,
+ :owned_by,
+ :state,
+ :status_code,
+ :stream_id,
+ :url)
+ SENSITIVE = [:url]
+ include Aws::Structure
+ end
+
+ # Represents a studio resource.
+ #
+ # A studio is the core resource used with Nimble Studio. You must create
+ # a studio first, before any other resource type can be created. All
+ # other resources you create and manage in Nimble Studio are contained
+ # within a studio.
+ #
+ # When creating a studio, you must provides two IAM roles for use with
+ # the Nimble Studio portal. These roles are assumed by your users when
+ # they log in to the Nimble Studio portal via IAM Identity Center and
+ # your identity source.
+ #
+ # The user role must have the `AmazonNimbleStudio-StudioUser` managed
+ # policy attached for the portal to function properly.
+ #
+ # The admin role must have the `AmazonNimbleStudio-StudioAdmin` managed
+ # policy attached for the portal to function properly.
+ #
+ # Your studio roles must trust the `identity.nimble.amazonaws.com`
+ # service principal to function properly.
+ #
+ # @!attribute [rw] admin_role_arn
+ # The IAM role that studio admins assume when logging in to the Nimble
+ # Studio portal.
+ # @return [String]
+ #
+ # @!attribute [rw] arn
+ # The Amazon Resource Name (ARN) that is assigned to a studio resource
+ # and uniquely identifies it. ARNs are unique across all Regions.
+ # @return [String]
+ #
+ # @!attribute [rw] created_at
+ # The ISO timestamp in seconds for when the resource was created.
+ # @return [Time]
+ #
+ # @!attribute [rw] display_name
+ # A friendly name for the studio.
+ # @return [String]
+ #
+ # @!attribute [rw] home_region
+ # The Amazon Web Services Region where the studio resource is located.
+ # @return [String]
+ #
+ # @!attribute [rw] sso_client_id
+ # The IAM Identity Center application client ID used to integrate with
+ # IAM Identity Center. This ID allows IAM Identity Center users to log
+ # in to Nimble Studio portal.
+ # @return [String]
+ #
+ # @!attribute [rw] state
+ # The current state of the studio resource.
+ # @return [String]
+ #
+ # @!attribute [rw] status_code
+ # Status codes that provide additional detail on the studio state.
+ # @return [String]
+ #
+ # @!attribute [rw] status_message
+ # Additional detail on the studio state.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_encryption_configuration
+ # Configuration of the encryption method that is used for the studio.
+ # @return [Types::StudioEncryptionConfiguration]
+ #
+ # @!attribute [rw] studio_id
+ # The unique identifier for a studio resource. In Nimble Studio, all
+ # other resources are contained in a studio resource.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_name
+ # The name of the studio, as included in the URL when accessing it in
+ # the Nimble Studio portal.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_url
+ # The address of the web page for the studio.
+ # @return [String]
+ #
+ # @!attribute [rw] tags
+ # A collection of labels, in the form of key-value pairs, that apply
+ # to this resource.
+ # @return [Hash]
+ #
+ # @!attribute [rw] updated_at
+ # The ISO timestamp in seconds for when the resource was updated.
+ # @return [Time]
+ #
+ # @!attribute [rw] user_role_arn
+ # The IAM role that studio users assume when logging in to the Nimble
+ # Studio portal.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/Studio AWS API Documentation
+ #
+ class Studio < Struct.new(
+ :admin_role_arn,
+ :arn,
+ :created_at,
+ :display_name,
+ :home_region,
+ :sso_client_id,
+ :state,
+ :status_code,
+ :status_message,
+ :studio_encryption_configuration,
+ :studio_id,
+ :studio_name,
+ :studio_url,
+ :tags,
+ :updated_at,
+ :user_role_arn)
+ SENSITIVE = [:display_name]
+ include Aws::Structure
+ end
+
+ # A studio component represents a network resource to be used by a
+ # studio's users and workflows. A typical studio contains studio
+ # components for each of the following: render farm, Active Directory,
+ # licensing, and file system.
+ #
+ # Access to a studio component is managed by specifying security groups
+ # for the resource, as well as its endpoint.
+ #
+ # A studio component also has a set of initialization scripts that are
+ # returned by `GetLaunchProfileInitialization`. These initialization
+ # scripts run on streaming sessions when they start. They provide users
+ # with flexibility in controlling how the studio resources are
+ # configured on a streaming session.
+ #
+ # @!attribute [rw] arn
+ # The Amazon Resource Name (ARN) that is assigned to a studio resource
+ # and uniquely identifies it. ARNs are unique across all Regions.
+ # @return [String]
+ #
+ # @!attribute [rw] configuration
+ # The configuration of the studio component, based on component type.
+ # @return [Types::StudioComponentConfiguration]
+ #
+ # @!attribute [rw] created_at
+ # The ISO timestamp in seconds for when the resource was created.
+ # @return [Time]
+ #
+ # @!attribute [rw] created_by
+ # The user ID of the user that created the studio component.
+ # @return [String]
+ #
+ # @!attribute [rw] description
+ # A human-readable description for the studio component resource.
+ # @return [String]
+ #
+ # @!attribute [rw] ec2_security_group_ids
+ # The EC2 security groups that control access to the studio component.
+ # @return [Array]
+ #
+ # @!attribute [rw] initialization_scripts
+ # Initialization scripts for studio components.
+ # @return [Array]
+ #
+ # @!attribute [rw] name
+ # A friendly name for the studio component resource.
+ # @return [String]
+ #
+ # @!attribute [rw] runtime_role_arn
+ # An IAM role attached to a Studio Component that gives the studio
+ # component access to Amazon Web Services resources at anytime while
+ # the instance is running.
+ # @return [String]
+ #
+ # @!attribute [rw] script_parameters
+ # Parameters for the studio component scripts.
+ # @return [Array]
+ #
+ # @!attribute [rw] secure_initialization_role_arn
+ # An IAM role attached to Studio Component when the system
+ # initialization script runs which give the studio component access to
+ # Amazon Web Services resources when the system initialization script
+ # runs.
+ # @return [String]
+ #
+ # @!attribute [rw] state
+ # The current state.
+ # @return [String]
+ #
+ # @!attribute [rw] status_code
+ # The status code.
+ # @return [String]
+ #
+ # @!attribute [rw] status_message
+ # The status message for the studio component.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_component_id
+ # The unique identifier for a studio component resource.
+ # @return [String]
+ #
+ # @!attribute [rw] subtype
+ # The specific subtype of a studio component.
+ # @return [String]
+ #
+ # @!attribute [rw] tags
+ # A collection of labels, in the form of key-value pairs, that apply
+ # to this resource.
+ # @return [Hash]
+ #
+ # @!attribute [rw] type
+ # The type of the studio component.
+ # @return [String]
+ #
+ # @!attribute [rw] updated_at
+ # The ISO timestamp in seconds for when the resource was updated.
+ # @return [Time]
+ #
+ # @!attribute [rw] updated_by
+ # The user ID of the user that most recently updated the resource.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/StudioComponent AWS API Documentation
+ #
+ class StudioComponent < Struct.new(
+ :arn,
+ :configuration,
+ :created_at,
+ :created_by,
+ :description,
+ :ec2_security_group_ids,
+ :initialization_scripts,
+ :name,
+ :runtime_role_arn,
+ :script_parameters,
+ :secure_initialization_role_arn,
+ :state,
+ :status_code,
+ :status_message,
+ :studio_component_id,
+ :subtype,
+ :tags,
+ :type,
+ :updated_at,
+ :updated_by)
+ SENSITIVE = [:description, :name, :script_parameters]
+ include Aws::Structure
+ end
+
+ # The configuration of the studio component, based on component type.
+ #
+ # @note StudioComponentConfiguration is a union - when making an API calls you must set exactly one of the members.
+ #
+ # @note StudioComponentConfiguration is a union - when returned from an API call exactly one value will be set and the returned type will be a subclass of StudioComponentConfiguration corresponding to the set member.
+ #
+ # @!attribute [rw] active_directory_configuration
+ # The configuration for a Directory Service for Microsoft Active
+ # Directory studio resource.
+ # @return [Types::ActiveDirectoryConfiguration]
+ #
+ # @!attribute [rw] compute_farm_configuration
+ # The configuration for a render farm that is associated with a studio
+ # resource.
+ # @return [Types::ComputeFarmConfiguration]
+ #
+ # @!attribute [rw] license_service_configuration
+ # The configuration for a license service that is associated with a
+ # studio resource.
+ # @return [Types::LicenseServiceConfiguration]
+ #
+ # @!attribute [rw] shared_file_system_configuration
+ # The configuration for a shared file storage system that is
+ # associated with a studio resource.
+ # @return [Types::SharedFileSystemConfiguration]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/StudioComponentConfiguration AWS API Documentation
+ #
+ class StudioComponentConfiguration < Struct.new(
+ :active_directory_configuration,
+ :compute_farm_configuration,
+ :license_service_configuration,
+ :shared_file_system_configuration,
+ :unknown)
+ SENSITIVE = []
+ include Aws::Structure
+ include Aws::Structure::Union
+
+ class ActiveDirectoryConfiguration < StudioComponentConfiguration; end
+ class ComputeFarmConfiguration < StudioComponentConfiguration; end
+ class LicenseServiceConfiguration < StudioComponentConfiguration; end
+ class SharedFileSystemConfiguration < StudioComponentConfiguration; end
+ class Unknown < StudioComponentConfiguration; end
+ end
+
+ # Initialization scripts for studio components.
+ #
+ # @!attribute [rw] launch_profile_protocol_version
+ # The version number of the protocol that is used by the launch
+ # profile. The only valid version is "2021-03-31".
+ # @return [String]
+ #
+ # @!attribute [rw] platform
+ # The platform of the initialization script, either Windows or Linux.
+ # @return [String]
+ #
+ # @!attribute [rw] run_context
+ # The method to use when running the initialization script.
+ # @return [String]
+ #
+ # @!attribute [rw] script
+ # The initialization script.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/StudioComponentInitializationScript AWS API Documentation
+ #
+ class StudioComponentInitializationScript < Struct.new(
+ :launch_profile_protocol_version,
+ :platform,
+ :run_context,
+ :script)
+ SENSITIVE = [:script]
+ include Aws::Structure
+ end
+
+ # The studio component's summary.
+ #
+ # @!attribute [rw] created_at
+ # The ISO timestamp in seconds for when the resource was created.
+ # @return [Time]
+ #
+ # @!attribute [rw] created_by
+ # The user ID of the user that created the studio component.
+ # @return [String]
+ #
+ # @!attribute [rw] description
+ # The description.
+ # @return [String]
+ #
+ # @!attribute [rw] name
+ # The name for the studio component.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_component_id
+ # The unique identifier for a studio component resource.
+ # @return [String]
+ #
+ # @!attribute [rw] subtype
+ # The specific subtype of a studio component.
+ # @return [String]
+ #
+ # @!attribute [rw] type
+ # The type of the studio component.
+ # @return [String]
+ #
+ # @!attribute [rw] updated_at
+ # The ISO timestamp in seconds for when the resource was updated.
+ # @return [Time]
+ #
+ # @!attribute [rw] updated_by
+ # The user ID of the user that most recently updated the resource.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/StudioComponentSummary AWS API Documentation
+ #
+ class StudioComponentSummary < Struct.new(
+ :created_at,
+ :created_by,
+ :description,
+ :name,
+ :studio_component_id,
+ :subtype,
+ :type,
+ :updated_at,
+ :updated_by)
+ SENSITIVE = [:description, :name]
+ include Aws::Structure
+ end
+
+ # Configuration of the encryption method that is used for the studio.
+ #
+ # @!attribute [rw] key_arn
+ # The ARN for a KMS key that is used to encrypt studio data.
+ # @return [String]
+ #
+ # @!attribute [rw] key_type
+ # The type of KMS key that is used to encrypt studio data.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/StudioEncryptionConfiguration AWS API Documentation
+ #
+ class StudioEncryptionConfiguration < Struct.new(
+ :key_arn,
+ :key_type)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # A studio member is an association of a user from your studio identity
+ # source to elevated permissions that they are granted in the studio.
+ #
+ # When you add a user to your studio using the Nimble Studio console,
+ # they are given access to the studio's IAM Identity Center application
+ # and are given access to log in to the Nimble Studio portal. These
+ # users have the permissions provided by the studio's user IAM role and
+ # do not appear in the studio membership collection. Only studio admins
+ # appear in studio membership.
+ #
+ # When you add a user to studio membership with the ADMIN persona, upon
+ # logging in to the Nimble Studio portal, they are granted permissions
+ # specified by the Studio's Admin IAM role.
+ #
+ # @!attribute [rw] identity_store_id
+ # The ID of the identity store.
+ # @return [String]
+ #
+ # @!attribute [rw] persona
+ # The persona.
+ # @return [String]
+ #
+ # @!attribute [rw] principal_id
+ # The principal ID.
+ # @return [String]
+ #
+ # @!attribute [rw] sid
+ # The Active Directory Security Identifier for this user, if
+ # available.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/StudioMembership AWS API Documentation
+ #
+ class StudioMembership < Struct.new(
+ :identity_store_id,
+ :persona,
+ :principal_id,
+ :sid)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] resource_arn
+ # The Amazon Resource Name (ARN) of the resource you want to add tags
+ # to.
+ # @return [String]
+ #
+ # @!attribute [rw] tags
+ # A collection of labels, in the form of key-value pairs, that apply
+ # to this resource.
+ # @return [Hash]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/TagResourceRequest AWS API Documentation
+ #
+ class TagResourceRequest < Struct.new(
+ :resource_arn,
+ :tags)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/TagResourceResponse AWS API Documentation
+ #
+ class TagResourceResponse < Aws::EmptyStructure; end
+
+ # The request throughput limit was exceeded.
+ #
+ # @!attribute [rw] code
+ # A more specific error code.
+ # @return [String]
+ #
+ # @!attribute [rw] context
+ # The exception context.
+ # @return [Hash]
+ #
+ # @!attribute [rw] message
+ # A human-readable description of the error.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ThrottlingException AWS API Documentation
+ #
+ class ThrottlingException < Struct.new(
+ :code,
+ :context,
+ :message)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] resource_arn
+ # Identifies the Amazon Resource Name(ARN) key from which you are
+ # removing tags.
+ # @return [String]
+ #
+ # @!attribute [rw] tag_keys
+ # One or more tag keys. Specify only the tag keys, not the tag values.
+ # @return [Array]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/UntagResourceRequest AWS API Documentation
+ #
+ class UntagResourceRequest < Struct.new(
+ :resource_arn,
+ :tag_keys)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/UntagResourceResponse AWS API Documentation
+ #
+ class UntagResourceResponse < Aws::EmptyStructure; end
+
+ # @!attribute [rw] client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.
+ # @return [String]
+ #
+ # @!attribute [rw] launch_profile_id
+ # The ID of the launch profile used to control access from the
+ # streaming session.
+ # @return [String]
+ #
+ # @!attribute [rw] persona
+ # The persona.
+ # @return [String]
+ #
+ # @!attribute [rw] principal_id
+ # The principal ID. This currently supports a IAM Identity Center
+ # UserId.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/UpdateLaunchProfileMemberRequest AWS API Documentation
+ #
+ class UpdateLaunchProfileMemberRequest < Struct.new(
+ :client_token,
+ :launch_profile_id,
+ :persona,
+ :principal_id,
+ :studio_id)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] member
+ # The updated member.
+ # @return [Types::LaunchProfileMembership]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/UpdateLaunchProfileMemberResponse AWS API Documentation
+ #
+ class UpdateLaunchProfileMemberResponse < Struct.new(
+ :member)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.
+ # @return [String]
+ #
+ # @!attribute [rw] description
+ # The description.
+ # @return [String]
+ #
+ # @!attribute [rw] launch_profile_id
+ # The ID of the launch profile used to control access from the
+ # streaming session.
+ # @return [String]
+ #
+ # @!attribute [rw] launch_profile_protocol_versions
+ # The version number of the protocol that is used by the launch
+ # profile. The only valid version is "2021-03-31".
+ # @return [Array]
+ #
+ # @!attribute [rw] name
+ # The name for the launch profile.
+ # @return [String]
+ #
+ # @!attribute [rw] stream_configuration
+ # A configuration for a streaming session.
+ # @return [Types::StreamConfigurationCreate]
+ #
+ # @!attribute [rw] studio_component_ids
+ # Unique identifiers for a collection of studio components that can be
+ # used with this launch profile.
+ # @return [Array]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/UpdateLaunchProfileRequest AWS API Documentation
+ #
+ class UpdateLaunchProfileRequest < Struct.new(
+ :client_token,
+ :description,
+ :launch_profile_id,
+ :launch_profile_protocol_versions,
+ :name,
+ :stream_configuration,
+ :studio_component_ids,
+ :studio_id)
+ SENSITIVE = [:description, :name]
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] launch_profile
+ # The launch profile.
+ # @return [Types::LaunchProfile]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/UpdateLaunchProfileResponse AWS API Documentation
+ #
+ class UpdateLaunchProfileResponse < Struct.new(
+ :launch_profile)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.
+ # @return [String]
+ #
+ # @!attribute [rw] description
+ # The description.
+ # @return [String]
+ #
+ # @!attribute [rw] name
+ # The name for the streaming image.
+ # @return [String]
+ #
+ # @!attribute [rw] streaming_image_id
+ # The streaming image ID.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/UpdateStreamingImageRequest AWS API Documentation
+ #
+ class UpdateStreamingImageRequest < Struct.new(
+ :client_token,
+ :description,
+ :name,
+ :streaming_image_id,
+ :studio_id)
+ SENSITIVE = [:description, :name]
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] streaming_image
+ # Represents a streaming image resource.
+ #
+ # Streaming images are used by studio users to select which operating
+ # system and software they want to use in a Nimble Studio streaming
+ # session.
+ #
+ # Amazon provides a number of streaming images that include popular
+ # 3rd-party software.
+ #
+ # You can create your own streaming images using an Amazon EC2 machine
+ # image that you create for this purpose. You can also include
+ # software that your users require.
+ # @return [Types::StreamingImage]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/UpdateStreamingImageResponse AWS API Documentation
+ #
+ class UpdateStreamingImageResponse < Struct.new(
+ :streaming_image)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.
+ # @return [String]
+ #
+ # @!attribute [rw] configuration
+ # The configuration of the studio component, based on component type.
+ # @return [Types::StudioComponentConfiguration]
+ #
+ # @!attribute [rw] description
+ # The description.
+ # @return [String]
+ #
+ # @!attribute [rw] ec2_security_group_ids
+ # The EC2 security groups that control access to the studio component.
+ # @return [Array]
+ #
+ # @!attribute [rw] initialization_scripts
+ # Initialization scripts for studio components.
+ # @return [Array]
+ #
+ # @!attribute [rw] name
+ # The name for the studio component.
+ # @return [String]
+ #
+ # @!attribute [rw] runtime_role_arn
+ # An IAM role attached to a Studio Component that gives the studio
+ # component access to Amazon Web Services resources at anytime while
+ # the instance is running.
+ # @return [String]
+ #
+ # @!attribute [rw] script_parameters
+ # Parameters for the studio component scripts.
+ # @return [Array]
+ #
+ # @!attribute [rw] secure_initialization_role_arn
+ # An IAM role attached to Studio Component when the system
+ # initialization script runs which give the studio component access to
+ # Amazon Web Services resources when the system initialization script
+ # runs.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_component_id
+ # The studio component ID.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @!attribute [rw] subtype
+ # The specific subtype of a studio component.
+ # @return [String]
+ #
+ # @!attribute [rw] type
+ # The type of the studio component.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/UpdateStudioComponentRequest AWS API Documentation
+ #
+ class UpdateStudioComponentRequest < Struct.new(
+ :client_token,
+ :configuration,
+ :description,
+ :ec2_security_group_ids,
+ :initialization_scripts,
+ :name,
+ :runtime_role_arn,
+ :script_parameters,
+ :secure_initialization_role_arn,
+ :studio_component_id,
+ :studio_id,
+ :subtype,
+ :type)
+ SENSITIVE = [:description, :name, :script_parameters]
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] studio_component
+ # Information about the studio component.
+ # @return [Types::StudioComponent]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/UpdateStudioComponentResponse AWS API Documentation
+ #
+ class UpdateStudioComponentResponse < Struct.new(
+ :studio_component)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] admin_role_arn
+ # The IAM role that Studio Admins will assume when logging in to the
+ # Nimble Studio portal.
+ # @return [String]
+ #
+ # @!attribute [rw] client_token
+ # Unique, case-sensitive identifier that you provide to ensure the
+ # idempotency of the request. If you don’t specify a client token, the
+ # Amazon Web Services SDK automatically generates a client token and
+ # uses it for the request to ensure idempotency.
+ #
+ # **A suitable default value is auto-generated.** You should normally
+ # not need to pass this option.
+ # @return [String]
+ #
+ # @!attribute [rw] display_name
+ # A friendly name for the studio.
+ # @return [String]
+ #
+ # @!attribute [rw] studio_id
+ # The studio ID.
+ # @return [String]
+ #
+ # @!attribute [rw] user_role_arn
+ # The IAM role that Studio Users will assume when logging in to the
+ # Nimble Studio portal.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/UpdateStudioRequest AWS API Documentation
+ #
+ class UpdateStudioRequest < Struct.new(
+ :admin_role_arn,
+ :client_token,
+ :display_name,
+ :studio_id,
+ :user_role_arn)
+ SENSITIVE = [:display_name]
+ include Aws::Structure
+ end
+
+ # @!attribute [rw] studio
+ # Information about a studio.
+ # @return [Types::Studio]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/UpdateStudioResponse AWS API Documentation
+ #
+ class UpdateStudioResponse < Struct.new(
+ :studio)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # One of the parameters in the request is invalid.
+ #
+ # @!attribute [rw] code
+ # A more specific error code.
+ # @return [String]
+ #
+ # @!attribute [rw] context
+ # The exception context.
+ # @return [Hash]
+ #
+ # @!attribute [rw] message
+ # A human-readable description of the error.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ValidationException AWS API Documentation
+ #
+ class ValidationException < Struct.new(
+ :code,
+ :context,
+ :message)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # The launch profile validation result.
+ #
+ # @!attribute [rw] state
+ # The current state.
+ # @return [String]
+ #
+ # @!attribute [rw] status_code
+ # The status code. This will contain the failure reason if the state
+ # is `VALIDATION_FAILED`.
+ # @return [String]
+ #
+ # @!attribute [rw] status_message
+ # The status message for the validation result.
+ # @return [String]
+ #
+ # @!attribute [rw] type
+ # The type of the validation result.
+ # @return [String]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/ValidationResult AWS API Documentation
+ #
+ class ValidationResult < Struct.new(
+ :state,
+ :status_code,
+ :status_message,
+ :type)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ # Custom volume configuration for the root volumes that are attached to
+ # streaming sessions.
+ #
+ # This parameter is only allowed when `sessionPersistenceMode` is
+ # `ACTIVATED`.
+ #
+ # @!attribute [rw] iops
+ # The number of I/O operations per second for the root volume that is
+ # attached to streaming session.
+ # @return [Integer]
+ #
+ # @!attribute [rw] size
+ # The size of the root volume that is attached to the streaming
+ # session. The root volume size is measured in GiBs.
+ # @return [Integer]
+ #
+ # @!attribute [rw] throughput
+ # The throughput to provision for the root volume that is attached to
+ # the streaming session. The throughput is measured in MiB/s.
+ # @return [Integer]
+ #
+ # @see http://docs.aws.amazon.com/goto/WebAPI/nimble-2020-08-01/VolumeConfiguration AWS API Documentation
+ #
+ class VolumeConfiguration < Struct.new(
+ :iops,
+ :size,
+ :throughput)
+ SENSITIVE = []
+ include Aws::Structure
+ end
+
+ end
+end
+
diff --git a/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/waiters.rb b/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/waiters.rb
new file mode 100644
index 00000000000..fe3127cd31d
--- /dev/null
+++ b/gems/aws-sdk-nimblestudio/lib/aws-sdk-nimblestudio/waiters.rb
@@ -0,0 +1,657 @@
+# 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
+
+require 'aws-sdk-core/waiters'
+
+module Aws::NimbleStudio
+ # Waiters are utility methods that poll for a particular state to occur
+ # on a client. Waiters can fail after a number of attempts at a polling
+ # interval defined for the service client.
+ #
+ # For a list of operations that can be waited for and the
+ # client methods called for each operation, see the table below or the
+ # {Client#wait_until} field documentation for the {Client}.
+ #
+ # # Invoking a Waiter
+ # To invoke a waiter, call #wait_until on a {Client}. The first parameter
+ # is the waiter name, which is specific to the service client and indicates
+ # which operation is being waited for. The second parameter is a hash of
+ # parameters that are passed to the client method called by the waiter,
+ # which varies according to the waiter name.
+ #
+ # # Wait Failures
+ # To catch errors in a waiter, use WaiterFailed,
+ # as shown in the following example.
+ #
+ # rescue rescue Aws::Waiters::Errors::WaiterFailed => error
+ # puts "failed waiting for instance running: #{error.message}
+ # end
+ #
+ # # Configuring a Waiter
+ # Each waiter has a default polling interval and a maximum number of
+ # attempts it will make before returning control to your program.
+ # To set these values, use the `max_attempts` and `delay` parameters
+ # in your `#wait_until` call.
+ # The following example waits for up to 25 seconds, polling every five seconds.
+ #
+ # client.wait_until(...) do |w|
+ # w.max_attempts = 5
+ # w.delay = 5
+ # end
+ #
+ # To disable wait failures, set the value of either of these parameters
+ # to `nil`.
+ #
+ # # Extending a Waiter
+ # To modify the behavior of waiters, you can register callbacks that are
+ # triggered before each polling attempt and before waiting.
+ #
+ # The following example implements an exponential backoff in a waiter
+ # by doubling the amount of time to wait on every attempt.
+ #
+ # client.wait_until(...) do |w|
+ # w.interval = 0 # disable normal sleep
+ # w.before_wait do |n, resp|
+ # sleep(n ** 2)
+ # end
+ # end
+ #
+ # # Available Waiters
+ #
+ # The following table lists the valid waiter names, the operations they call,
+ # and the default `:delay` and `:max_attempts` values.
+ #
+ # | waiter_name | params | :delay | :max_attempts |
+ # | ------------------------------ | ------------------------------------- | -------- | ------------- |
+ # | launch_profile_deleted | {Client#get_launch_profile} | 5 | 150 |
+ # | launch_profile_ready | {Client#get_launch_profile} | 5 | 150 |
+ # | streaming_image_deleted | {Client#get_streaming_image} | 2 | 60 |
+ # | streaming_image_ready | {Client#get_streaming_image} | 2 | 60 |
+ # | streaming_session_deleted | {Client#get_streaming_session} | 5 | 180 |
+ # | streaming_session_ready | {Client#get_streaming_session} | 10 | 180 |
+ # | streaming_session_stopped | {Client#get_streaming_session} | 5 | 180 |
+ # | streaming_session_stream_ready | {Client#get_streaming_session_stream} | 5 | 30 |
+ # | studio_component_deleted | {Client#get_studio_component} | 1 | 120 |
+ # | studio_component_ready | {Client#get_studio_component} | 2 | 60 |
+ # | studio_deleted | {Client#get_studio} | 2 | 60 |
+ # | studio_ready | {Client#get_studio} | 2 | 60 |
+ #
+ module Waiters
+
+ # Wait until a LaunchProfile is Deleted. Use this after invoking DeleteLaunchProfile
+ class LaunchProfileDeleted
+
+ # @param [Hash] options
+ # @option options [required, Client] :client
+ # @option options [Integer] :max_attempts (150)
+ # @option options [Integer] :delay (5)
+ # @option options [Proc] :before_attempt
+ # @option options [Proc] :before_wait
+ def initialize(options)
+ @client = options.fetch(:client)
+ @waiter = Aws::Waiters::Waiter.new({
+ max_attempts: 150,
+ delay: 5,
+ poller: Aws::Waiters::Poller.new(
+ operation_name: :get_launch_profile,
+ acceptors: [
+ {
+ "matcher" => "path",
+ "argument" => "launch_profile.state",
+ "state" => "success",
+ "expected" => "DELETED"
+ },
+ {
+ "matcher" => "path",
+ "argument" => "launch_profile.state",
+ "state" => "failure",
+ "expected" => "DELETE_FAILED"
+ }
+ ]
+ )
+ }.merge(options))
+ end
+
+ # @option (see Client#get_launch_profile)
+ # @return (see Client#get_launch_profile)
+ def wait(params = {})
+ @waiter.wait(client: @client, params: params)
+ end
+
+ # @api private
+ attr_reader :waiter
+
+ end
+
+ # Wait until a LaunchProfile is Ready. Use this after invoking CreateLaunchProfile or UpdateLaunchProfile
+ class LaunchProfileReady
+
+ # @param [Hash] options
+ # @option options [required, Client] :client
+ # @option options [Integer] :max_attempts (150)
+ # @option options [Integer] :delay (5)
+ # @option options [Proc] :before_attempt
+ # @option options [Proc] :before_wait
+ def initialize(options)
+ @client = options.fetch(:client)
+ @waiter = Aws::Waiters::Waiter.new({
+ max_attempts: 150,
+ delay: 5,
+ poller: Aws::Waiters::Poller.new(
+ operation_name: :get_launch_profile,
+ acceptors: [
+ {
+ "matcher" => "path",
+ "argument" => "launch_profile.state",
+ "state" => "success",
+ "expected" => "READY"
+ },
+ {
+ "matcher" => "path",
+ "argument" => "launch_profile.state",
+ "state" => "failure",
+ "expected" => "CREATE_FAILED"
+ },
+ {
+ "matcher" => "path",
+ "argument" => "launch_profile.state",
+ "state" => "failure",
+ "expected" => "UPDATE_FAILED"
+ }
+ ]
+ )
+ }.merge(options))
+ end
+
+ # @option (see Client#get_launch_profile)
+ # @return (see Client#get_launch_profile)
+ def wait(params = {})
+ @waiter.wait(client: @client, params: params)
+ end
+
+ # @api private
+ attr_reader :waiter
+
+ end
+
+ # Wait until a StreamingImage Deleted. Use this after invoking DeleteStreamingImage
+ class StreamingImageDeleted
+
+ # @param [Hash] options
+ # @option options [required, Client] :client
+ # @option options [Integer] :max_attempts (60)
+ # @option options [Integer] :delay (2)
+ # @option options [Proc] :before_attempt
+ # @option options [Proc] :before_wait
+ def initialize(options)
+ @client = options.fetch(:client)
+ @waiter = Aws::Waiters::Waiter.new({
+ max_attempts: 60,
+ delay: 2,
+ poller: Aws::Waiters::Poller.new(
+ operation_name: :get_streaming_image,
+ acceptors: [
+ {
+ "matcher" => "path",
+ "argument" => "streaming_image.state",
+ "state" => "success",
+ "expected" => "DELETED"
+ },
+ {
+ "matcher" => "path",
+ "argument" => "streaming_image.state",
+ "state" => "failure",
+ "expected" => "DELETE_FAILED"
+ }
+ ]
+ )
+ }.merge(options))
+ end
+
+ # @option (see Client#get_streaming_image)
+ # @return (see Client#get_streaming_image)
+ def wait(params = {})
+ @waiter.wait(client: @client, params: params)
+ end
+
+ # @api private
+ attr_reader :waiter
+
+ end
+
+ # Wait until a StreamingImage is Ready. Use this after invoking CreateStreamingImage or UpdateStreamingImage
+ class StreamingImageReady
+
+ # @param [Hash] options
+ # @option options [required, Client] :client
+ # @option options [Integer] :max_attempts (60)
+ # @option options [Integer] :delay (2)
+ # @option options [Proc] :before_attempt
+ # @option options [Proc] :before_wait
+ def initialize(options)
+ @client = options.fetch(:client)
+ @waiter = Aws::Waiters::Waiter.new({
+ max_attempts: 60,
+ delay: 2,
+ poller: Aws::Waiters::Poller.new(
+ operation_name: :get_streaming_image,
+ acceptors: [
+ {
+ "matcher" => "path",
+ "argument" => "streaming_image.state",
+ "state" => "success",
+ "expected" => "READY"
+ },
+ {
+ "matcher" => "path",
+ "argument" => "streaming_image.state",
+ "state" => "failure",
+ "expected" => "CREATE_FAILED"
+ },
+ {
+ "matcher" => "path",
+ "argument" => "streaming_image.state",
+ "state" => "failure",
+ "expected" => "UPDATE_FAILED"
+ }
+ ]
+ )
+ }.merge(options))
+ end
+
+ # @option (see Client#get_streaming_image)
+ # @return (see Client#get_streaming_image)
+ def wait(params = {})
+ @waiter.wait(client: @client, params: params)
+ end
+
+ # @api private
+ attr_reader :waiter
+
+ end
+
+ # Wait until a StreamingSessionDeleted. Use this after invoking DeleteStreamingSession
+ class StreamingSessionDeleted
+
+ # @param [Hash] options
+ # @option options [required, Client] :client
+ # @option options [Integer] :max_attempts (180)
+ # @option options [Integer] :delay (5)
+ # @option options [Proc] :before_attempt
+ # @option options [Proc] :before_wait
+ def initialize(options)
+ @client = options.fetch(:client)
+ @waiter = Aws::Waiters::Waiter.new({
+ max_attempts: 180,
+ delay: 5,
+ poller: Aws::Waiters::Poller.new(
+ operation_name: :get_streaming_session,
+ acceptors: [
+ {
+ "matcher" => "path",
+ "argument" => "session.state",
+ "state" => "success",
+ "expected" => "DELETED"
+ },
+ {
+ "matcher" => "path",
+ "argument" => "session.state",
+ "state" => "failure",
+ "expected" => "DELETE_FAILED"
+ }
+ ]
+ )
+ }.merge(options))
+ end
+
+ # @option (see Client#get_streaming_session)
+ # @return (see Client#get_streaming_session)
+ def wait(params = {})
+ @waiter.wait(client: @client, params: params)
+ end
+
+ # @api private
+ attr_reader :waiter
+
+ end
+
+ # Wait until a StreamingSession is ready. Use this after invoking CreateStreamingSession, StartStreamingSession
+ class StreamingSessionReady
+
+ # @param [Hash] options
+ # @option options [required, Client] :client
+ # @option options [Integer] :max_attempts (180)
+ # @option options [Integer] :delay (10)
+ # @option options [Proc] :before_attempt
+ # @option options [Proc] :before_wait
+ def initialize(options)
+ @client = options.fetch(:client)
+ @waiter = Aws::Waiters::Waiter.new({
+ max_attempts: 180,
+ delay: 10,
+ poller: Aws::Waiters::Poller.new(
+ operation_name: :get_streaming_session,
+ acceptors: [
+ {
+ "matcher" => "path",
+ "argument" => "session.state",
+ "state" => "success",
+ "expected" => "READY"
+ },
+ {
+ "matcher" => "path",
+ "argument" => "session.state",
+ "state" => "failure",
+ "expected" => "CREATE_FAILED"
+ },
+ {
+ "matcher" => "path",
+ "argument" => "session.state",
+ "state" => "failure",
+ "expected" => "START_FAILED"
+ }
+ ]
+ )
+ }.merge(options))
+ end
+
+ # @option (see Client#get_streaming_session)
+ # @return (see Client#get_streaming_session)
+ def wait(params = {})
+ @waiter.wait(client: @client, params: params)
+ end
+
+ # @api private
+ attr_reader :waiter
+
+ end
+
+ # Wait until a StreamingSessionStopped. Use this after invoking StopStreamingSession
+ class StreamingSessionStopped
+
+ # @param [Hash] options
+ # @option options [required, Client] :client
+ # @option options [Integer] :max_attempts (180)
+ # @option options [Integer] :delay (5)
+ # @option options [Proc] :before_attempt
+ # @option options [Proc] :before_wait
+ def initialize(options)
+ @client = options.fetch(:client)
+ @waiter = Aws::Waiters::Waiter.new({
+ max_attempts: 180,
+ delay: 5,
+ poller: Aws::Waiters::Poller.new(
+ operation_name: :get_streaming_session,
+ acceptors: [
+ {
+ "matcher" => "path",
+ "argument" => "session.state",
+ "state" => "success",
+ "expected" => "STOPPED"
+ },
+ {
+ "matcher" => "path",
+ "argument" => "session.state",
+ "state" => "failure",
+ "expected" => "STOP_FAILED"
+ }
+ ]
+ )
+ }.merge(options))
+ end
+
+ # @option (see Client#get_streaming_session)
+ # @return (see Client#get_streaming_session)
+ def wait(params = {})
+ @waiter.wait(client: @client, params: params)
+ end
+
+ # @api private
+ attr_reader :waiter
+
+ end
+
+ # Wait until a StreamingSessionStream is ready. Use this after invoking CreateStreamingSessionStream
+ class StreamingSessionStreamReady
+
+ # @param [Hash] options
+ # @option options [required, Client] :client
+ # @option options [Integer] :max_attempts (30)
+ # @option options [Integer] :delay (5)
+ # @option options [Proc] :before_attempt
+ # @option options [Proc] :before_wait
+ def initialize(options)
+ @client = options.fetch(:client)
+ @waiter = Aws::Waiters::Waiter.new({
+ max_attempts: 30,
+ delay: 5,
+ poller: Aws::Waiters::Poller.new(
+ operation_name: :get_streaming_session_stream,
+ acceptors: [
+ {
+ "matcher" => "path",
+ "argument" => "stream.state",
+ "state" => "success",
+ "expected" => "READY"
+ },
+ {
+ "matcher" => "path",
+ "argument" => "stream.state",
+ "state" => "failure",
+ "expected" => "CREATE_FAILED"
+ }
+ ]
+ )
+ }.merge(options))
+ end
+
+ # @option (see Client#get_streaming_session_stream)
+ # @return (see Client#get_streaming_session_stream)
+ def wait(params = {})
+ @waiter.wait(client: @client, params: params)
+ end
+
+ # @api private
+ attr_reader :waiter
+
+ end
+
+ # Wait until a StudioComponent Deleted. Use this after invoking DeleteStudioComponent
+ class StudioComponentDeleted
+
+ # @param [Hash] options
+ # @option options [required, Client] :client
+ # @option options [Integer] :max_attempts (120)
+ # @option options [Integer] :delay (1)
+ # @option options [Proc] :before_attempt
+ # @option options [Proc] :before_wait
+ def initialize(options)
+ @client = options.fetch(:client)
+ @waiter = Aws::Waiters::Waiter.new({
+ max_attempts: 120,
+ delay: 1,
+ poller: Aws::Waiters::Poller.new(
+ operation_name: :get_studio_component,
+ acceptors: [
+ {
+ "matcher" => "path",
+ "argument" => "studio_component.state",
+ "state" => "success",
+ "expected" => "DELETED"
+ },
+ {
+ "matcher" => "path",
+ "argument" => "studio_component.state",
+ "state" => "failure",
+ "expected" => "DELETE_FAILED"
+ }
+ ]
+ )
+ }.merge(options))
+ end
+
+ # @option (see Client#get_studio_component)
+ # @return (see Client#get_studio_component)
+ def wait(params = {})
+ @waiter.wait(client: @client, params: params)
+ end
+
+ # @api private
+ attr_reader :waiter
+
+ end
+
+ # Wait until a StudioComponent is Ready. Use this after invoking CreateStudioComponent or UpdateStudioComponent
+ class StudioComponentReady
+
+ # @param [Hash] options
+ # @option options [required, Client] :client
+ # @option options [Integer] :max_attempts (60)
+ # @option options [Integer] :delay (2)
+ # @option options [Proc] :before_attempt
+ # @option options [Proc] :before_wait
+ def initialize(options)
+ @client = options.fetch(:client)
+ @waiter = Aws::Waiters::Waiter.new({
+ max_attempts: 60,
+ delay: 2,
+ poller: Aws::Waiters::Poller.new(
+ operation_name: :get_studio_component,
+ acceptors: [
+ {
+ "matcher" => "path",
+ "argument" => "studio_component.state",
+ "state" => "success",
+ "expected" => "READY"
+ },
+ {
+ "matcher" => "path",
+ "argument" => "studio_component.state",
+ "state" => "failure",
+ "expected" => "CREATE_FAILED"
+ },
+ {
+ "matcher" => "path",
+ "argument" => "studio_component.state",
+ "state" => "failure",
+ "expected" => "UPDATE_FAILED"
+ }
+ ]
+ )
+ }.merge(options))
+ end
+
+ # @option (see Client#get_studio_component)
+ # @return (see Client#get_studio_component)
+ def wait(params = {})
+ @waiter.wait(client: @client, params: params)
+ end
+
+ # @api private
+ attr_reader :waiter
+
+ end
+
+ # Wait until a Studio is Deleted. Use this after invoking DeleteStudio.
+ class StudioDeleted
+
+ # @param [Hash] options
+ # @option options [required, Client] :client
+ # @option options [Integer] :max_attempts (60)
+ # @option options [Integer] :delay (2)
+ # @option options [Proc] :before_attempt
+ # @option options [Proc] :before_wait
+ def initialize(options)
+ @client = options.fetch(:client)
+ @waiter = Aws::Waiters::Waiter.new({
+ max_attempts: 60,
+ delay: 2,
+ poller: Aws::Waiters::Poller.new(
+ operation_name: :get_studio,
+ acceptors: [
+ {
+ "matcher" => "path",
+ "argument" => "studio.state",
+ "state" => "success",
+ "expected" => "DELETED"
+ },
+ {
+ "matcher" => "path",
+ "argument" => "studio.state",
+ "state" => "failure",
+ "expected" => "DELETE_FAILED"
+ }
+ ]
+ )
+ }.merge(options))
+ end
+
+ # @option (see Client#get_studio)
+ # @return (see Client#get_studio)
+ def wait(params = {})
+ @waiter.wait(client: @client, params: params)
+ end
+
+ # @api private
+ attr_reader :waiter
+
+ end
+
+ # Wait until a Studio is Ready. Use this after invoking CreateStudio, UpdateStudio, or StartStudioSSOConfigurationRepair
+ class StudioReady
+
+ # @param [Hash] options
+ # @option options [required, Client] :client
+ # @option options [Integer] :max_attempts (60)
+ # @option options [Integer] :delay (2)
+ # @option options [Proc] :before_attempt
+ # @option options [Proc] :before_wait
+ def initialize(options)
+ @client = options.fetch(:client)
+ @waiter = Aws::Waiters::Waiter.new({
+ max_attempts: 60,
+ delay: 2,
+ poller: Aws::Waiters::Poller.new(
+ operation_name: :get_studio,
+ acceptors: [
+ {
+ "matcher" => "path",
+ "argument" => "studio.state",
+ "state" => "success",
+ "expected" => "READY"
+ },
+ {
+ "matcher" => "path",
+ "argument" => "studio.state",
+ "state" => "failure",
+ "expected" => "CREATE_FAILED"
+ },
+ {
+ "matcher" => "path",
+ "argument" => "studio.state",
+ "state" => "failure",
+ "expected" => "UPDATE_FAILED"
+ }
+ ]
+ )
+ }.merge(options))
+ end
+
+ # @option (see Client#get_studio)
+ # @return (see Client#get_studio)
+ def wait(params = {})
+ @waiter.wait(client: @client, params: params)
+ end
+
+ # @api private
+ attr_reader :waiter
+
+ end
+ end
+end
diff --git a/gems/aws-sdk-nimblestudio/sig/client.rbs b/gems/aws-sdk-nimblestudio/sig/client.rbs
new file mode 100644
index 00000000000..d6db86d20c4
--- /dev/null
+++ b/gems/aws-sdk-nimblestudio/sig/client.rbs
@@ -0,0 +1,914 @@
+# 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
+ module NimbleStudio
+ class Client < ::Seahorse::Client::Base
+ include ::Aws::ClientStubs
+
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#initialize-instance_method
+ def self.new: (
+ ?credentials: untyped,
+ ?region: String,
+ ?access_key_id: String,
+ ?account_id: String,
+ ?active_endpoint_cache: bool,
+ ?adaptive_retry_wait_to_fill: bool,
+ ?client_side_monitoring: bool,
+ ?client_side_monitoring_client_id: String,
+ ?client_side_monitoring_host: String,
+ ?client_side_monitoring_port: Integer,
+ ?client_side_monitoring_publisher: untyped,
+ ?convert_params: bool,
+ ?correct_clock_skew: bool,
+ ?defaults_mode: String,
+ ?disable_host_prefix_injection: bool,
+ ?disable_request_compression: bool,
+ ?endpoint: String,
+ ?endpoint_cache_max_entries: Integer,
+ ?endpoint_cache_max_threads: Integer,
+ ?endpoint_cache_poll_interval: Integer,
+ ?endpoint_discovery: bool,
+ ?ignore_configured_endpoint_urls: bool,
+ ?log_formatter: untyped,
+ ?log_level: Symbol,
+ ?logger: untyped,
+ ?max_attempts: Integer,
+ ?profile: String,
+ ?request_min_compression_size_bytes: Integer,
+ ?retry_backoff: Proc,
+ ?retry_base_delay: Float,
+ ?retry_jitter: (:none | :equal | :full | ^(Integer) -> Integer),
+ ?retry_limit: Integer,
+ ?retry_max_delay: Integer,
+ ?retry_mode: ("legacy" | "standard" | "adaptive"),
+ ?sdk_ua_app_id: String,
+ ?secret_access_key: String,
+ ?session_token: String,
+ ?sigv4a_signing_region_set: Array[String],
+ ?stub_responses: untyped,
+ ?telemetry_provider: Aws::Telemetry::TelemetryProviderBase,
+ ?token_provider: untyped,
+ ?use_dualstack_endpoint: bool,
+ ?use_fips_endpoint: bool,
+ ?validate_params: bool,
+ ?endpoint_provider: untyped,
+ ?http_proxy: String,
+ ?http_open_timeout: (Float | Integer),
+ ?http_read_timeout: (Float | Integer),
+ ?http_idle_timeout: (Float | Integer),
+ ?http_continue_timeout: (Float | Integer),
+ ?ssl_timeout: (Float | Integer | nil),
+ ?http_wire_trace: bool,
+ ?ssl_verify_peer: bool,
+ ?ssl_ca_bundle: String,
+ ?ssl_ca_directory: String,
+ ?ssl_ca_store: String,
+ ?on_chunk_received: Proc,
+ ?on_chunk_sent: Proc,
+ ?raise_response_errors: bool
+ ) -> instance
+ | (?Hash[Symbol, untyped]) -> instance
+
+
+ interface _AcceptEulasResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::AcceptEulasResponse]
+ def eula_acceptances: () -> ::Array[Types::EulaAcceptance]
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#accept_eulas-instance_method
+ def accept_eulas: (
+ ?client_token: ::String,
+ ?eula_ids: Array[::String],
+ studio_id: ::String
+ ) -> _AcceptEulasResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _AcceptEulasResponseSuccess
+
+ interface _CreateLaunchProfileResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::CreateLaunchProfileResponse]
+ def launch_profile: () -> Types::LaunchProfile
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#create_launch_profile-instance_method
+ def create_launch_profile: (
+ ?client_token: ::String,
+ ?description: ::String,
+ ec2_subnet_ids: Array[::String],
+ launch_profile_protocol_versions: Array[::String],
+ name: ::String,
+ stream_configuration: {
+ automatic_termination_mode: ("DEACTIVATED" | "ACTIVATED")?,
+ clipboard_mode: ("ENABLED" | "DISABLED"),
+ ec2_instance_types: Array[("g4dn.xlarge" | "g4dn.2xlarge" | "g4dn.4xlarge" | "g4dn.8xlarge" | "g4dn.12xlarge" | "g4dn.16xlarge" | "g3.4xlarge" | "g3s.xlarge" | "g5.xlarge" | "g5.2xlarge" | "g5.4xlarge" | "g5.8xlarge" | "g5.16xlarge")],
+ max_session_length_in_minutes: ::Integer?,
+ max_stopped_session_length_in_minutes: ::Integer?,
+ session_backup: {
+ max_backups_to_retain: ::Integer?,
+ mode: ("AUTOMATIC" | "DEACTIVATED")?
+ }?,
+ session_persistence_mode: ("DEACTIVATED" | "ACTIVATED")?,
+ session_storage: {
+ mode: Array[("UPLOAD")],
+ root: {
+ linux: ::String?,
+ windows: ::String?
+ }?
+ }?,
+ streaming_image_ids: Array[::String],
+ volume_configuration: {
+ iops: ::Integer?,
+ size: ::Integer?,
+ throughput: ::Integer?
+ }?
+ },
+ studio_component_ids: Array[::String],
+ studio_id: ::String,
+ ?tags: Hash[::String, ::String]
+ ) -> _CreateLaunchProfileResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _CreateLaunchProfileResponseSuccess
+
+ interface _CreateStreamingImageResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::CreateStreamingImageResponse]
+ def streaming_image: () -> Types::StreamingImage
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#create_streaming_image-instance_method
+ def create_streaming_image: (
+ ?client_token: ::String,
+ ?description: ::String,
+ ec2_image_id: ::String,
+ name: ::String,
+ studio_id: ::String,
+ ?tags: Hash[::String, ::String]
+ ) -> _CreateStreamingImageResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _CreateStreamingImageResponseSuccess
+
+ interface _CreateStreamingSessionResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::CreateStreamingSessionResponse]
+ def session: () -> Types::StreamingSession
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#create_streaming_session-instance_method
+ def create_streaming_session: (
+ ?client_token: ::String,
+ ?ec2_instance_type: ("g4dn.xlarge" | "g4dn.2xlarge" | "g4dn.4xlarge" | "g4dn.8xlarge" | "g4dn.12xlarge" | "g4dn.16xlarge" | "g3.4xlarge" | "g3s.xlarge" | "g5.xlarge" | "g5.2xlarge" | "g5.4xlarge" | "g5.8xlarge" | "g5.16xlarge"),
+ launch_profile_id: ::String,
+ ?owned_by: ::String,
+ ?streaming_image_id: ::String,
+ studio_id: ::String,
+ ?tags: Hash[::String, ::String]
+ ) -> _CreateStreamingSessionResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _CreateStreamingSessionResponseSuccess
+
+ interface _CreateStreamingSessionStreamResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::CreateStreamingSessionStreamResponse]
+ def stream: () -> Types::StreamingSessionStream
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#create_streaming_session_stream-instance_method
+ def create_streaming_session_stream: (
+ ?client_token: ::String,
+ ?expiration_in_seconds: ::Integer,
+ session_id: ::String,
+ studio_id: ::String
+ ) -> _CreateStreamingSessionStreamResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _CreateStreamingSessionStreamResponseSuccess
+
+ interface _CreateStudioResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::CreateStudioResponse]
+ def studio: () -> Types::Studio
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#create_studio-instance_method
+ def create_studio: (
+ admin_role_arn: ::String,
+ ?client_token: ::String,
+ display_name: ::String,
+ ?studio_encryption_configuration: {
+ key_arn: ::String?,
+ key_type: ("AWS_OWNED_KEY" | "CUSTOMER_MANAGED_KEY")
+ },
+ studio_name: ::String,
+ ?tags: Hash[::String, ::String],
+ user_role_arn: ::String
+ ) -> _CreateStudioResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _CreateStudioResponseSuccess
+
+ interface _CreateStudioComponentResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::CreateStudioComponentResponse]
+ def studio_component: () -> Types::StudioComponent
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#create_studio_component-instance_method
+ def create_studio_component: (
+ ?client_token: ::String,
+ ?configuration: {
+ active_directory_configuration: {
+ computer_attributes: Array[
+ {
+ name: ::String?,
+ value: ::String?
+ },
+ ]?,
+ directory_id: ::String?,
+ organizational_unit_distinguished_name: ::String?
+ }?,
+ compute_farm_configuration: {
+ active_directory_user: ::String?,
+ endpoint: ::String?
+ }?,
+ license_service_configuration: {
+ endpoint: ::String?
+ }?,
+ shared_file_system_configuration: {
+ endpoint: ::String?,
+ file_system_id: ::String?,
+ linux_mount_point: ::String?,
+ share_name: ::String?,
+ windows_mount_drive: ::String?
+ }?
+ },
+ ?description: ::String,
+ ?ec2_security_group_ids: Array[::String],
+ ?initialization_scripts: Array[
+ {
+ launch_profile_protocol_version: ::String?,
+ platform: ("LINUX" | "WINDOWS")?,
+ run_context: ("SYSTEM_INITIALIZATION" | "USER_INITIALIZATION")?,
+ script: ::String?
+ },
+ ],
+ name: ::String,
+ ?runtime_role_arn: ::String,
+ ?script_parameters: Array[
+ {
+ key: ::String?,
+ value: ::String?
+ },
+ ],
+ ?secure_initialization_role_arn: ::String,
+ studio_id: ::String,
+ ?subtype: ("AWS_MANAGED_MICROSOFT_AD" | "AMAZON_FSX_FOR_WINDOWS" | "AMAZON_FSX_FOR_LUSTRE" | "CUSTOM"),
+ ?tags: Hash[::String, ::String],
+ type: ("ACTIVE_DIRECTORY" | "SHARED_FILE_SYSTEM" | "COMPUTE_FARM" | "LICENSE_SERVICE" | "CUSTOM")
+ ) -> _CreateStudioComponentResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _CreateStudioComponentResponseSuccess
+
+ interface _DeleteLaunchProfileResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::DeleteLaunchProfileResponse]
+ def launch_profile: () -> Types::LaunchProfile
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#delete_launch_profile-instance_method
+ def delete_launch_profile: (
+ ?client_token: ::String,
+ launch_profile_id: ::String,
+ studio_id: ::String
+ ) -> _DeleteLaunchProfileResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _DeleteLaunchProfileResponseSuccess
+
+ interface _DeleteLaunchProfileMemberResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::DeleteLaunchProfileMemberResponse]
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#delete_launch_profile_member-instance_method
+ def delete_launch_profile_member: (
+ ?client_token: ::String,
+ launch_profile_id: ::String,
+ principal_id: ::String,
+ studio_id: ::String
+ ) -> _DeleteLaunchProfileMemberResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _DeleteLaunchProfileMemberResponseSuccess
+
+ interface _DeleteStreamingImageResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::DeleteStreamingImageResponse]
+ def streaming_image: () -> Types::StreamingImage
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#delete_streaming_image-instance_method
+ def delete_streaming_image: (
+ ?client_token: ::String,
+ streaming_image_id: ::String,
+ studio_id: ::String
+ ) -> _DeleteStreamingImageResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _DeleteStreamingImageResponseSuccess
+
+ interface _DeleteStreamingSessionResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::DeleteStreamingSessionResponse]
+ def session: () -> Types::StreamingSession
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#delete_streaming_session-instance_method
+ def delete_streaming_session: (
+ ?client_token: ::String,
+ session_id: ::String,
+ studio_id: ::String
+ ) -> _DeleteStreamingSessionResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _DeleteStreamingSessionResponseSuccess
+
+ interface _DeleteStudioResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::DeleteStudioResponse]
+ def studio: () -> Types::Studio
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#delete_studio-instance_method
+ def delete_studio: (
+ ?client_token: ::String,
+ studio_id: ::String
+ ) -> _DeleteStudioResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _DeleteStudioResponseSuccess
+
+ interface _DeleteStudioComponentResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::DeleteStudioComponentResponse]
+ def studio_component: () -> Types::StudioComponent
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#delete_studio_component-instance_method
+ def delete_studio_component: (
+ ?client_token: ::String,
+ studio_component_id: ::String,
+ studio_id: ::String
+ ) -> _DeleteStudioComponentResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _DeleteStudioComponentResponseSuccess
+
+ interface _DeleteStudioMemberResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::DeleteStudioMemberResponse]
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#delete_studio_member-instance_method
+ def delete_studio_member: (
+ ?client_token: ::String,
+ principal_id: ::String,
+ studio_id: ::String
+ ) -> _DeleteStudioMemberResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _DeleteStudioMemberResponseSuccess
+
+ interface _GetEulaResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::GetEulaResponse]
+ def eula: () -> Types::Eula
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#get_eula-instance_method
+ def get_eula: (
+ eula_id: ::String
+ ) -> _GetEulaResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _GetEulaResponseSuccess
+
+ interface _GetLaunchProfileResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::GetLaunchProfileResponse]
+ def launch_profile: () -> Types::LaunchProfile
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#get_launch_profile-instance_method
+ def get_launch_profile: (
+ launch_profile_id: ::String,
+ studio_id: ::String
+ ) -> _GetLaunchProfileResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _GetLaunchProfileResponseSuccess
+
+ interface _GetLaunchProfileDetailsResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::GetLaunchProfileDetailsResponse]
+ def launch_profile: () -> Types::LaunchProfile
+ def streaming_images: () -> ::Array[Types::StreamingImage]
+ def studio_component_summaries: () -> ::Array[Types::StudioComponentSummary]
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#get_launch_profile_details-instance_method
+ def get_launch_profile_details: (
+ launch_profile_id: ::String,
+ studio_id: ::String
+ ) -> _GetLaunchProfileDetailsResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _GetLaunchProfileDetailsResponseSuccess
+
+ interface _GetLaunchProfileInitializationResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::GetLaunchProfileInitializationResponse]
+ def launch_profile_initialization: () -> Types::LaunchProfileInitialization
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#get_launch_profile_initialization-instance_method
+ def get_launch_profile_initialization: (
+ launch_profile_id: ::String,
+ launch_profile_protocol_versions: Array[::String],
+ launch_purpose: ::String,
+ platform: ::String,
+ studio_id: ::String
+ ) -> _GetLaunchProfileInitializationResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _GetLaunchProfileInitializationResponseSuccess
+
+ interface _GetLaunchProfileMemberResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::GetLaunchProfileMemberResponse]
+ def member: () -> Types::LaunchProfileMembership
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#get_launch_profile_member-instance_method
+ def get_launch_profile_member: (
+ launch_profile_id: ::String,
+ principal_id: ::String,
+ studio_id: ::String
+ ) -> _GetLaunchProfileMemberResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _GetLaunchProfileMemberResponseSuccess
+
+ interface _GetStreamingImageResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::GetStreamingImageResponse]
+ def streaming_image: () -> Types::StreamingImage
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#get_streaming_image-instance_method
+ def get_streaming_image: (
+ streaming_image_id: ::String,
+ studio_id: ::String
+ ) -> _GetStreamingImageResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _GetStreamingImageResponseSuccess
+
+ interface _GetStreamingSessionResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::GetStreamingSessionResponse]
+ def session: () -> Types::StreamingSession
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#get_streaming_session-instance_method
+ def get_streaming_session: (
+ session_id: ::String,
+ studio_id: ::String
+ ) -> _GetStreamingSessionResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _GetStreamingSessionResponseSuccess
+
+ interface _GetStreamingSessionBackupResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::GetStreamingSessionBackupResponse]
+ def streaming_session_backup: () -> Types::StreamingSessionBackup
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#get_streaming_session_backup-instance_method
+ def get_streaming_session_backup: (
+ backup_id: ::String,
+ studio_id: ::String
+ ) -> _GetStreamingSessionBackupResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _GetStreamingSessionBackupResponseSuccess
+
+ interface _GetStreamingSessionStreamResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::GetStreamingSessionStreamResponse]
+ def stream: () -> Types::StreamingSessionStream
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#get_streaming_session_stream-instance_method
+ def get_streaming_session_stream: (
+ session_id: ::String,
+ stream_id: ::String,
+ studio_id: ::String
+ ) -> _GetStreamingSessionStreamResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _GetStreamingSessionStreamResponseSuccess
+
+ interface _GetStudioResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::GetStudioResponse]
+ def studio: () -> Types::Studio
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#get_studio-instance_method
+ def get_studio: (
+ studio_id: ::String
+ ) -> _GetStudioResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _GetStudioResponseSuccess
+
+ interface _GetStudioComponentResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::GetStudioComponentResponse]
+ def studio_component: () -> Types::StudioComponent
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#get_studio_component-instance_method
+ def get_studio_component: (
+ studio_component_id: ::String,
+ studio_id: ::String
+ ) -> _GetStudioComponentResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _GetStudioComponentResponseSuccess
+
+ interface _GetStudioMemberResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::GetStudioMemberResponse]
+ def member: () -> Types::StudioMembership
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#get_studio_member-instance_method
+ def get_studio_member: (
+ principal_id: ::String,
+ studio_id: ::String
+ ) -> _GetStudioMemberResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _GetStudioMemberResponseSuccess
+
+ interface _ListEulaAcceptancesResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::ListEulaAcceptancesResponse]
+ def eula_acceptances: () -> ::Array[Types::EulaAcceptance]
+ def next_token: () -> ::String
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#list_eula_acceptances-instance_method
+ def list_eula_acceptances: (
+ ?eula_ids: Array[::String],
+ ?next_token: ::String,
+ studio_id: ::String
+ ) -> _ListEulaAcceptancesResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _ListEulaAcceptancesResponseSuccess
+
+ interface _ListEulasResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::ListEulasResponse]
+ def eulas: () -> ::Array[Types::Eula]
+ def next_token: () -> ::String
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#list_eulas-instance_method
+ def list_eulas: (
+ ?eula_ids: Array[::String],
+ ?next_token: ::String
+ ) -> _ListEulasResponseSuccess
+ | (?Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _ListEulasResponseSuccess
+
+ interface _ListLaunchProfileMembersResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::ListLaunchProfileMembersResponse]
+ def members: () -> ::Array[Types::LaunchProfileMembership]
+ def next_token: () -> ::String
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#list_launch_profile_members-instance_method
+ def list_launch_profile_members: (
+ launch_profile_id: ::String,
+ ?max_results: ::Integer,
+ ?next_token: ::String,
+ studio_id: ::String
+ ) -> _ListLaunchProfileMembersResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _ListLaunchProfileMembersResponseSuccess
+
+ interface _ListLaunchProfilesResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::ListLaunchProfilesResponse]
+ def launch_profiles: () -> ::Array[Types::LaunchProfile]
+ def next_token: () -> ::String
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#list_launch_profiles-instance_method
+ def list_launch_profiles: (
+ ?max_results: ::Integer,
+ ?next_token: ::String,
+ ?principal_id: ::String,
+ ?states: Array[("CREATE_IN_PROGRESS" | "READY" | "UPDATE_IN_PROGRESS" | "DELETE_IN_PROGRESS" | "DELETED" | "DELETE_FAILED" | "CREATE_FAILED" | "UPDATE_FAILED")],
+ studio_id: ::String
+ ) -> _ListLaunchProfilesResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _ListLaunchProfilesResponseSuccess
+
+ interface _ListStreamingImagesResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::ListStreamingImagesResponse]
+ def next_token: () -> ::String
+ def streaming_images: () -> ::Array[Types::StreamingImage]
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#list_streaming_images-instance_method
+ def list_streaming_images: (
+ ?next_token: ::String,
+ ?owner: ::String,
+ studio_id: ::String
+ ) -> _ListStreamingImagesResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _ListStreamingImagesResponseSuccess
+
+ interface _ListStreamingSessionBackupsResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::ListStreamingSessionBackupsResponse]
+ def next_token: () -> ::String
+ def streaming_session_backups: () -> ::Array[Types::StreamingSessionBackup]
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#list_streaming_session_backups-instance_method
+ def list_streaming_session_backups: (
+ ?next_token: ::String,
+ ?owned_by: ::String,
+ studio_id: ::String
+ ) -> _ListStreamingSessionBackupsResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _ListStreamingSessionBackupsResponseSuccess
+
+ interface _ListStreamingSessionsResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::ListStreamingSessionsResponse]
+ def next_token: () -> ::String
+ def sessions: () -> ::Array[Types::StreamingSession]
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#list_streaming_sessions-instance_method
+ def list_streaming_sessions: (
+ ?created_by: ::String,
+ ?next_token: ::String,
+ ?owned_by: ::String,
+ ?session_ids: ::String,
+ studio_id: ::String
+ ) -> _ListStreamingSessionsResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _ListStreamingSessionsResponseSuccess
+
+ interface _ListStudioComponentsResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::ListStudioComponentsResponse]
+ def next_token: () -> ::String
+ def studio_components: () -> ::Array[Types::StudioComponent]
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#list_studio_components-instance_method
+ def list_studio_components: (
+ ?max_results: ::Integer,
+ ?next_token: ::String,
+ ?states: Array[("CREATE_IN_PROGRESS" | "READY" | "UPDATE_IN_PROGRESS" | "DELETE_IN_PROGRESS" | "DELETED" | "DELETE_FAILED" | "CREATE_FAILED" | "UPDATE_FAILED")],
+ studio_id: ::String,
+ ?types: Array[("ACTIVE_DIRECTORY" | "SHARED_FILE_SYSTEM" | "COMPUTE_FARM" | "LICENSE_SERVICE" | "CUSTOM")]
+ ) -> _ListStudioComponentsResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _ListStudioComponentsResponseSuccess
+
+ interface _ListStudioMembersResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::ListStudioMembersResponse]
+ def members: () -> ::Array[Types::StudioMembership]
+ def next_token: () -> ::String
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#list_studio_members-instance_method
+ def list_studio_members: (
+ ?max_results: ::Integer,
+ ?next_token: ::String,
+ studio_id: ::String
+ ) -> _ListStudioMembersResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _ListStudioMembersResponseSuccess
+
+ interface _ListStudiosResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::ListStudiosResponse]
+ def next_token: () -> ::String
+ def studios: () -> ::Array[Types::Studio]
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#list_studios-instance_method
+ def list_studios: (
+ ?next_token: ::String
+ ) -> _ListStudiosResponseSuccess
+ | (?Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _ListStudiosResponseSuccess
+
+ interface _ListTagsForResourceResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::ListTagsForResourceResponse]
+ def tags: () -> ::Hash[::String, ::String]
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#list_tags_for_resource-instance_method
+ def list_tags_for_resource: (
+ resource_arn: ::String
+ ) -> _ListTagsForResourceResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _ListTagsForResourceResponseSuccess
+
+ interface _PutLaunchProfileMembersResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::PutLaunchProfileMembersResponse]
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#put_launch_profile_members-instance_method
+ def put_launch_profile_members: (
+ ?client_token: ::String,
+ identity_store_id: ::String,
+ launch_profile_id: ::String,
+ members: Array[
+ {
+ persona: ("USER"),
+ principal_id: ::String
+ },
+ ],
+ studio_id: ::String
+ ) -> _PutLaunchProfileMembersResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _PutLaunchProfileMembersResponseSuccess
+
+ interface _PutStudioMembersResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::PutStudioMembersResponse]
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#put_studio_members-instance_method
+ def put_studio_members: (
+ ?client_token: ::String,
+ identity_store_id: ::String,
+ members: Array[
+ {
+ persona: ("ADMINISTRATOR"),
+ principal_id: ::String
+ },
+ ],
+ studio_id: ::String
+ ) -> _PutStudioMembersResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _PutStudioMembersResponseSuccess
+
+ interface _StartStreamingSessionResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::StartStreamingSessionResponse]
+ def session: () -> Types::StreamingSession
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#start_streaming_session-instance_method
+ def start_streaming_session: (
+ ?backup_id: ::String,
+ ?client_token: ::String,
+ session_id: ::String,
+ studio_id: ::String
+ ) -> _StartStreamingSessionResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _StartStreamingSessionResponseSuccess
+
+ interface _StartStudioSSOConfigurationRepairResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::StartStudioSSOConfigurationRepairResponse]
+ def studio: () -> Types::Studio
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#start_studio_sso_configuration_repair-instance_method
+ def start_studio_sso_configuration_repair: (
+ ?client_token: ::String,
+ studio_id: ::String
+ ) -> _StartStudioSSOConfigurationRepairResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _StartStudioSSOConfigurationRepairResponseSuccess
+
+ interface _StopStreamingSessionResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::StopStreamingSessionResponse]
+ def session: () -> Types::StreamingSession
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#stop_streaming_session-instance_method
+ def stop_streaming_session: (
+ ?client_token: ::String,
+ session_id: ::String,
+ studio_id: ::String,
+ ?volume_retention_mode: ("RETAIN" | "DELETE")
+ ) -> _StopStreamingSessionResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _StopStreamingSessionResponseSuccess
+
+ interface _TagResourceResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::TagResourceResponse]
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#tag_resource-instance_method
+ def tag_resource: (
+ resource_arn: ::String,
+ ?tags: Hash[::String, ::String]
+ ) -> _TagResourceResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _TagResourceResponseSuccess
+
+ interface _UntagResourceResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::UntagResourceResponse]
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#untag_resource-instance_method
+ def untag_resource: (
+ resource_arn: ::String,
+ tag_keys: Array[::String]
+ ) -> _UntagResourceResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _UntagResourceResponseSuccess
+
+ interface _UpdateLaunchProfileResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::UpdateLaunchProfileResponse]
+ def launch_profile: () -> Types::LaunchProfile
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#update_launch_profile-instance_method
+ def update_launch_profile: (
+ ?client_token: ::String,
+ ?description: ::String,
+ launch_profile_id: ::String,
+ ?launch_profile_protocol_versions: Array[::String],
+ ?name: ::String,
+ ?stream_configuration: {
+ automatic_termination_mode: ("DEACTIVATED" | "ACTIVATED")?,
+ clipboard_mode: ("ENABLED" | "DISABLED"),
+ ec2_instance_types: Array[("g4dn.xlarge" | "g4dn.2xlarge" | "g4dn.4xlarge" | "g4dn.8xlarge" | "g4dn.12xlarge" | "g4dn.16xlarge" | "g3.4xlarge" | "g3s.xlarge" | "g5.xlarge" | "g5.2xlarge" | "g5.4xlarge" | "g5.8xlarge" | "g5.16xlarge")],
+ max_session_length_in_minutes: ::Integer?,
+ max_stopped_session_length_in_minutes: ::Integer?,
+ session_backup: {
+ max_backups_to_retain: ::Integer?,
+ mode: ("AUTOMATIC" | "DEACTIVATED")?
+ }?,
+ session_persistence_mode: ("DEACTIVATED" | "ACTIVATED")?,
+ session_storage: {
+ mode: Array[("UPLOAD")],
+ root: {
+ linux: ::String?,
+ windows: ::String?
+ }?
+ }?,
+ streaming_image_ids: Array[::String],
+ volume_configuration: {
+ iops: ::Integer?,
+ size: ::Integer?,
+ throughput: ::Integer?
+ }?
+ },
+ ?studio_component_ids: Array[::String],
+ studio_id: ::String
+ ) -> _UpdateLaunchProfileResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _UpdateLaunchProfileResponseSuccess
+
+ interface _UpdateLaunchProfileMemberResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::UpdateLaunchProfileMemberResponse]
+ def member: () -> Types::LaunchProfileMembership
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#update_launch_profile_member-instance_method
+ def update_launch_profile_member: (
+ ?client_token: ::String,
+ launch_profile_id: ::String,
+ persona: ("USER"),
+ principal_id: ::String,
+ studio_id: ::String
+ ) -> _UpdateLaunchProfileMemberResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _UpdateLaunchProfileMemberResponseSuccess
+
+ interface _UpdateStreamingImageResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::UpdateStreamingImageResponse]
+ def streaming_image: () -> Types::StreamingImage
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#update_streaming_image-instance_method
+ def update_streaming_image: (
+ ?client_token: ::String,
+ ?description: ::String,
+ ?name: ::String,
+ streaming_image_id: ::String,
+ studio_id: ::String
+ ) -> _UpdateStreamingImageResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _UpdateStreamingImageResponseSuccess
+
+ interface _UpdateStudioResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::UpdateStudioResponse]
+ def studio: () -> Types::Studio
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#update_studio-instance_method
+ def update_studio: (
+ ?admin_role_arn: ::String,
+ ?client_token: ::String,
+ ?display_name: ::String,
+ studio_id: ::String,
+ ?user_role_arn: ::String
+ ) -> _UpdateStudioResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _UpdateStudioResponseSuccess
+
+ interface _UpdateStudioComponentResponseSuccess
+ include ::Seahorse::Client::_ResponseSuccess[Types::UpdateStudioComponentResponse]
+ def studio_component: () -> Types::StudioComponent
+ end
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#update_studio_component-instance_method
+ def update_studio_component: (
+ ?client_token: ::String,
+ ?configuration: {
+ active_directory_configuration: {
+ computer_attributes: Array[
+ {
+ name: ::String?,
+ value: ::String?
+ },
+ ]?,
+ directory_id: ::String?,
+ organizational_unit_distinguished_name: ::String?
+ }?,
+ compute_farm_configuration: {
+ active_directory_user: ::String?,
+ endpoint: ::String?
+ }?,
+ license_service_configuration: {
+ endpoint: ::String?
+ }?,
+ shared_file_system_configuration: {
+ endpoint: ::String?,
+ file_system_id: ::String?,
+ linux_mount_point: ::String?,
+ share_name: ::String?,
+ windows_mount_drive: ::String?
+ }?
+ },
+ ?description: ::String,
+ ?ec2_security_group_ids: Array[::String],
+ ?initialization_scripts: Array[
+ {
+ launch_profile_protocol_version: ::String?,
+ platform: ("LINUX" | "WINDOWS")?,
+ run_context: ("SYSTEM_INITIALIZATION" | "USER_INITIALIZATION")?,
+ script: ::String?
+ },
+ ],
+ ?name: ::String,
+ ?runtime_role_arn: ::String,
+ ?script_parameters: Array[
+ {
+ key: ::String?,
+ value: ::String?
+ },
+ ],
+ ?secure_initialization_role_arn: ::String,
+ studio_component_id: ::String,
+ studio_id: ::String,
+ ?subtype: ("AWS_MANAGED_MICROSOFT_AD" | "AMAZON_FSX_FOR_WINDOWS" | "AMAZON_FSX_FOR_LUSTRE" | "CUSTOM"),
+ ?type: ("ACTIVE_DIRECTORY" | "SHARED_FILE_SYSTEM" | "COMPUTE_FARM" | "LICENSE_SERVICE" | "CUSTOM")
+ ) -> _UpdateStudioComponentResponseSuccess
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _UpdateStudioComponentResponseSuccess
+
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Client.html#wait_until-instance_method
+ def wait_until: (:launch_profile_deleted waiter_name,
+ launch_profile_id: ::String,
+ studio_id: ::String
+ ) -> Client::_GetLaunchProfileResponseSuccess
+ | (:launch_profile_deleted waiter_name, Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> Client::_GetLaunchProfileResponseSuccess
+ | (:launch_profile_ready waiter_name,
+ launch_profile_id: ::String,
+ studio_id: ::String
+ ) -> Client::_GetLaunchProfileResponseSuccess
+ | (:launch_profile_ready waiter_name, Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> Client::_GetLaunchProfileResponseSuccess
+ | (:streaming_image_deleted waiter_name,
+ streaming_image_id: ::String,
+ studio_id: ::String
+ ) -> Client::_GetStreamingImageResponseSuccess
+ | (:streaming_image_deleted waiter_name, Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> Client::_GetStreamingImageResponseSuccess
+ | (:streaming_image_ready waiter_name,
+ streaming_image_id: ::String,
+ studio_id: ::String
+ ) -> Client::_GetStreamingImageResponseSuccess
+ | (:streaming_image_ready waiter_name, Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> Client::_GetStreamingImageResponseSuccess
+ | (:streaming_session_deleted waiter_name,
+ session_id: ::String,
+ studio_id: ::String
+ ) -> Client::_GetStreamingSessionResponseSuccess
+ | (:streaming_session_deleted waiter_name, Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> Client::_GetStreamingSessionResponseSuccess
+ | (:streaming_session_ready waiter_name,
+ session_id: ::String,
+ studio_id: ::String
+ ) -> Client::_GetStreamingSessionResponseSuccess
+ | (:streaming_session_ready waiter_name, Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> Client::_GetStreamingSessionResponseSuccess
+ | (:streaming_session_stopped waiter_name,
+ session_id: ::String,
+ studio_id: ::String
+ ) -> Client::_GetStreamingSessionResponseSuccess
+ | (:streaming_session_stopped waiter_name, Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> Client::_GetStreamingSessionResponseSuccess
+ | (:streaming_session_stream_ready waiter_name,
+ session_id: ::String,
+ stream_id: ::String,
+ studio_id: ::String
+ ) -> Client::_GetStreamingSessionStreamResponseSuccess
+ | (:streaming_session_stream_ready waiter_name, Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> Client::_GetStreamingSessionStreamResponseSuccess
+ | (:studio_component_deleted waiter_name,
+ studio_component_id: ::String,
+ studio_id: ::String
+ ) -> Client::_GetStudioComponentResponseSuccess
+ | (:studio_component_deleted waiter_name, Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> Client::_GetStudioComponentResponseSuccess
+ | (:studio_component_ready waiter_name,
+ studio_component_id: ::String,
+ studio_id: ::String
+ ) -> Client::_GetStudioComponentResponseSuccess
+ | (:studio_component_ready waiter_name, Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> Client::_GetStudioComponentResponseSuccess
+ | (:studio_deleted waiter_name,
+ studio_id: ::String
+ ) -> Client::_GetStudioResponseSuccess
+ | (:studio_deleted waiter_name, Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> Client::_GetStudioResponseSuccess
+ | (:studio_ready waiter_name,
+ studio_id: ::String
+ ) -> Client::_GetStudioResponseSuccess
+ | (:studio_ready waiter_name, Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> Client::_GetStudioResponseSuccess
+ end
+ end
+end
+
diff --git a/gems/aws-sdk-nimblestudio/sig/errors.rbs b/gems/aws-sdk-nimblestudio/sig/errors.rbs
new file mode 100644
index 00000000000..6852eaaecf1
--- /dev/null
+++ b/gems/aws-sdk-nimblestudio/sig/errors.rbs
@@ -0,0 +1,51 @@
+# 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
+ module NimbleStudio
+ module Errors
+ class ServiceError < ::Aws::Errors::ServiceError
+ end
+
+ class AccessDeniedException < ::Aws::Errors::ServiceError
+ def code: () -> ::String
+ def context: () -> ::String
+ def message: () -> ::String
+ end
+ class ConflictException < ::Aws::Errors::ServiceError
+ def code: () -> ::String
+ def context: () -> ::String
+ def message: () -> ::String
+ end
+ class InternalServerErrorException < ::Aws::Errors::ServiceError
+ def code: () -> ::String
+ def context: () -> ::String
+ def message: () -> ::String
+ end
+ class ResourceNotFoundException < ::Aws::Errors::ServiceError
+ def code: () -> ::String
+ def context: () -> ::String
+ def message: () -> ::String
+ end
+ class ServiceQuotaExceededException < ::Aws::Errors::ServiceError
+ def code: () -> ::String
+ def context: () -> ::String
+ def message: () -> ::String
+ end
+ class ThrottlingException < ::Aws::Errors::ServiceError
+ def code: () -> ::String
+ def context: () -> ::String
+ def message: () -> ::String
+ end
+ class ValidationException < ::Aws::Errors::ServiceError
+ def code: () -> ::String
+ def context: () -> ::String
+ def message: () -> ::String
+ end
+ end
+ end
+end
diff --git a/gems/aws-sdk-nimblestudio/sig/resource.rbs b/gems/aws-sdk-nimblestudio/sig/resource.rbs
new file mode 100644
index 00000000000..5cb5e6ba32a
--- /dev/null
+++ b/gems/aws-sdk-nimblestudio/sig/resource.rbs
@@ -0,0 +1,82 @@
+# 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
+ module NimbleStudio
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Resource.html
+ class Resource
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NimbleStudio/Resource.html#initialize-instance_method
+ def initialize: (
+ ?client: Client,
+ ?credentials: untyped,
+ ?region: String,
+ ?access_key_id: String,
+ ?account_id: String,
+ ?active_endpoint_cache: bool,
+ ?adaptive_retry_wait_to_fill: bool,
+ ?client_side_monitoring: bool,
+ ?client_side_monitoring_client_id: String,
+ ?client_side_monitoring_host: String,
+ ?client_side_monitoring_port: Integer,
+ ?client_side_monitoring_publisher: untyped,
+ ?convert_params: bool,
+ ?correct_clock_skew: bool,
+ ?defaults_mode: String,
+ ?disable_host_prefix_injection: bool,
+ ?disable_request_compression: bool,
+ ?endpoint: String,
+ ?endpoint_cache_max_entries: Integer,
+ ?endpoint_cache_max_threads: Integer,
+ ?endpoint_cache_poll_interval: Integer,
+ ?endpoint_discovery: bool,
+ ?ignore_configured_endpoint_urls: bool,
+ ?log_formatter: untyped,
+ ?log_level: Symbol,
+ ?logger: untyped,
+ ?max_attempts: Integer,
+ ?profile: String,
+ ?request_min_compression_size_bytes: Integer,
+ ?retry_backoff: Proc,
+ ?retry_base_delay: Float,
+ ?retry_jitter: (:none | :equal | :full | ^(Integer) -> Integer),
+ ?retry_limit: Integer,
+ ?retry_max_delay: Integer,
+ ?retry_mode: ("legacy" | "standard" | "adaptive"),
+ ?sdk_ua_app_id: String,
+ ?secret_access_key: String,
+ ?session_token: String,
+ ?sigv4a_signing_region_set: Array[String],
+ ?stub_responses: untyped,
+ ?telemetry_provider: Aws::Telemetry::TelemetryProviderBase,
+ ?token_provider: untyped,
+ ?use_dualstack_endpoint: bool,
+ ?use_fips_endpoint: bool,
+ ?validate_params: bool,
+ ?endpoint_provider: untyped,
+ ?http_proxy: String,
+ ?http_open_timeout: (Float | Integer),
+ ?http_read_timeout: (Float | Integer),
+ ?http_idle_timeout: (Float | Integer),
+ ?http_continue_timeout: (Float | Integer),
+ ?ssl_timeout: (Float | Integer | nil),
+ ?http_wire_trace: bool,
+ ?ssl_verify_peer: bool,
+ ?ssl_ca_bundle: String,
+ ?ssl_ca_directory: String,
+ ?ssl_ca_store: String,
+ ?on_chunk_received: Proc,
+ ?on_chunk_sent: Proc,
+ ?raise_response_errors: bool
+ ) -> void
+ | (?Hash[Symbol, untyped]) -> void
+
+ def client: () -> Client
+
+
+ end
+ end
+end
diff --git a/gems/aws-sdk-nimblestudio/sig/types.rbs b/gems/aws-sdk-nimblestudio/sig/types.rbs
new file mode 100644
index 00000000000..0e2c1867983
--- /dev/null
+++ b/gems/aws-sdk-nimblestudio/sig/types.rbs
@@ -0,0 +1,1063 @@
+# 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::NimbleStudio
+ module Types
+
+ class AcceptEulasRequest
+ attr_accessor client_token: ::String
+ attr_accessor eula_ids: ::Array[::String]
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class AcceptEulasResponse
+ attr_accessor eula_acceptances: ::Array[Types::EulaAcceptance]
+ SENSITIVE: []
+ end
+
+ class AccessDeniedException
+ attr_accessor code: ::String
+ attr_accessor context: ::Hash[::String, ::String]
+ attr_accessor message: ::String
+ SENSITIVE: []
+ end
+
+ class ActiveDirectoryComputerAttribute
+ attr_accessor name: ::String
+ attr_accessor value: ::String
+ SENSITIVE: []
+ end
+
+ class ActiveDirectoryConfiguration
+ attr_accessor computer_attributes: ::Array[Types::ActiveDirectoryComputerAttribute]
+ attr_accessor directory_id: ::String
+ attr_accessor organizational_unit_distinguished_name: ::String
+ SENSITIVE: [:computer_attributes]
+ end
+
+ class ComputeFarmConfiguration
+ attr_accessor active_directory_user: ::String
+ attr_accessor endpoint: ::String
+ SENSITIVE: [:endpoint]
+ end
+
+ class ConflictException
+ attr_accessor code: ::String
+ attr_accessor context: ::Hash[::String, ::String]
+ attr_accessor message: ::String
+ SENSITIVE: []
+ end
+
+ class CreateLaunchProfileRequest
+ attr_accessor client_token: ::String
+ attr_accessor description: ::String
+ attr_accessor ec2_subnet_ids: ::Array[::String]
+ attr_accessor launch_profile_protocol_versions: ::Array[::String]
+ attr_accessor name: ::String
+ attr_accessor stream_configuration: Types::StreamConfigurationCreate
+ attr_accessor studio_component_ids: ::Array[::String]
+ attr_accessor studio_id: ::String
+ attr_accessor tags: ::Hash[::String, ::String]
+ SENSITIVE: [:description, :name]
+ end
+
+ class CreateLaunchProfileResponse
+ attr_accessor launch_profile: Types::LaunchProfile
+ SENSITIVE: []
+ end
+
+ class CreateStreamingImageRequest
+ attr_accessor client_token: ::String
+ attr_accessor description: ::String
+ attr_accessor ec2_image_id: ::String
+ attr_accessor name: ::String
+ attr_accessor studio_id: ::String
+ attr_accessor tags: ::Hash[::String, ::String]
+ SENSITIVE: [:description, :name]
+ end
+
+ class CreateStreamingImageResponse
+ attr_accessor streaming_image: Types::StreamingImage
+ SENSITIVE: []
+ end
+
+ class CreateStreamingSessionRequest
+ attr_accessor client_token: ::String
+ attr_accessor ec2_instance_type: ("g4dn.xlarge" | "g4dn.2xlarge" | "g4dn.4xlarge" | "g4dn.8xlarge" | "g4dn.12xlarge" | "g4dn.16xlarge" | "g3.4xlarge" | "g3s.xlarge" | "g5.xlarge" | "g5.2xlarge" | "g5.4xlarge" | "g5.8xlarge" | "g5.16xlarge")
+ attr_accessor launch_profile_id: ::String
+ attr_accessor owned_by: ::String
+ attr_accessor streaming_image_id: ::String
+ attr_accessor studio_id: ::String
+ attr_accessor tags: ::Hash[::String, ::String]
+ SENSITIVE: []
+ end
+
+ class CreateStreamingSessionResponse
+ attr_accessor session: Types::StreamingSession
+ SENSITIVE: []
+ end
+
+ class CreateStreamingSessionStreamRequest
+ attr_accessor client_token: ::String
+ attr_accessor expiration_in_seconds: ::Integer
+ attr_accessor session_id: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class CreateStreamingSessionStreamResponse
+ attr_accessor stream: Types::StreamingSessionStream
+ SENSITIVE: []
+ end
+
+ class CreateStudioComponentRequest
+ attr_accessor client_token: ::String
+ attr_accessor configuration: Types::StudioComponentConfiguration
+ attr_accessor description: ::String
+ attr_accessor ec2_security_group_ids: ::Array[::String]
+ attr_accessor initialization_scripts: ::Array[Types::StudioComponentInitializationScript]
+ attr_accessor name: ::String
+ attr_accessor runtime_role_arn: ::String
+ attr_accessor script_parameters: ::Array[Types::ScriptParameterKeyValue]
+ attr_accessor secure_initialization_role_arn: ::String
+ attr_accessor studio_id: ::String
+ attr_accessor subtype: ("AWS_MANAGED_MICROSOFT_AD" | "AMAZON_FSX_FOR_WINDOWS" | "AMAZON_FSX_FOR_LUSTRE" | "CUSTOM")
+ attr_accessor tags: ::Hash[::String, ::String]
+ attr_accessor type: ("ACTIVE_DIRECTORY" | "SHARED_FILE_SYSTEM" | "COMPUTE_FARM" | "LICENSE_SERVICE" | "CUSTOM")
+ SENSITIVE: [:description, :name, :script_parameters]
+ end
+
+ class CreateStudioComponentResponse
+ attr_accessor studio_component: Types::StudioComponent
+ SENSITIVE: []
+ end
+
+ class CreateStudioRequest
+ attr_accessor admin_role_arn: ::String
+ attr_accessor client_token: ::String
+ attr_accessor display_name: ::String
+ attr_accessor studio_encryption_configuration: Types::StudioEncryptionConfiguration
+ attr_accessor studio_name: ::String
+ attr_accessor tags: ::Hash[::String, ::String]
+ attr_accessor user_role_arn: ::String
+ SENSITIVE: [:display_name]
+ end
+
+ class CreateStudioResponse
+ attr_accessor studio: Types::Studio
+ SENSITIVE: []
+ end
+
+ class DeleteLaunchProfileMemberRequest
+ attr_accessor client_token: ::String
+ attr_accessor launch_profile_id: ::String
+ attr_accessor principal_id: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class DeleteLaunchProfileMemberResponse < Aws::EmptyStructure
+ end
+
+ class DeleteLaunchProfileRequest
+ attr_accessor client_token: ::String
+ attr_accessor launch_profile_id: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class DeleteLaunchProfileResponse
+ attr_accessor launch_profile: Types::LaunchProfile
+ SENSITIVE: []
+ end
+
+ class DeleteStreamingImageRequest
+ attr_accessor client_token: ::String
+ attr_accessor streaming_image_id: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class DeleteStreamingImageResponse
+ attr_accessor streaming_image: Types::StreamingImage
+ SENSITIVE: []
+ end
+
+ class DeleteStreamingSessionRequest
+ attr_accessor client_token: ::String
+ attr_accessor session_id: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class DeleteStreamingSessionResponse
+ attr_accessor session: Types::StreamingSession
+ SENSITIVE: []
+ end
+
+ class DeleteStudioComponentRequest
+ attr_accessor client_token: ::String
+ attr_accessor studio_component_id: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class DeleteStudioComponentResponse
+ attr_accessor studio_component: Types::StudioComponent
+ SENSITIVE: []
+ end
+
+ class DeleteStudioMemberRequest
+ attr_accessor client_token: ::String
+ attr_accessor principal_id: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class DeleteStudioMemberResponse < Aws::EmptyStructure
+ end
+
+ class DeleteStudioRequest
+ attr_accessor client_token: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class DeleteStudioResponse
+ attr_accessor studio: Types::Studio
+ SENSITIVE: []
+ end
+
+ class Eula
+ attr_accessor content: ::String
+ attr_accessor created_at: ::Time
+ attr_accessor eula_id: ::String
+ attr_accessor name: ::String
+ attr_accessor updated_at: ::Time
+ SENSITIVE: []
+ end
+
+ class EulaAcceptance
+ attr_accessor accepted_at: ::Time
+ attr_accessor accepted_by: ::String
+ attr_accessor acceptee_id: ::String
+ attr_accessor eula_acceptance_id: ::String
+ attr_accessor eula_id: ::String
+ SENSITIVE: []
+ end
+
+ class GetEulaRequest
+ attr_accessor eula_id: ::String
+ SENSITIVE: []
+ end
+
+ class GetEulaResponse
+ attr_accessor eula: Types::Eula
+ SENSITIVE: []
+ end
+
+ class GetLaunchProfileDetailsRequest
+ attr_accessor launch_profile_id: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class GetLaunchProfileDetailsResponse
+ attr_accessor launch_profile: Types::LaunchProfile
+ attr_accessor streaming_images: ::Array[Types::StreamingImage]
+ attr_accessor studio_component_summaries: ::Array[Types::StudioComponentSummary]
+ SENSITIVE: []
+ end
+
+ class GetLaunchProfileInitializationRequest
+ attr_accessor launch_profile_id: ::String
+ attr_accessor launch_profile_protocol_versions: ::Array[::String]
+ attr_accessor launch_purpose: ::String
+ attr_accessor platform: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class GetLaunchProfileInitializationResponse
+ attr_accessor launch_profile_initialization: Types::LaunchProfileInitialization
+ SENSITIVE: []
+ end
+
+ class GetLaunchProfileMemberRequest
+ attr_accessor launch_profile_id: ::String
+ attr_accessor principal_id: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class GetLaunchProfileMemberResponse
+ attr_accessor member: Types::LaunchProfileMembership
+ SENSITIVE: []
+ end
+
+ class GetLaunchProfileRequest
+ attr_accessor launch_profile_id: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class GetLaunchProfileResponse
+ attr_accessor launch_profile: Types::LaunchProfile
+ SENSITIVE: []
+ end
+
+ class GetStreamingImageRequest
+ attr_accessor streaming_image_id: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class GetStreamingImageResponse
+ attr_accessor streaming_image: Types::StreamingImage
+ SENSITIVE: []
+ end
+
+ class GetStreamingSessionBackupRequest
+ attr_accessor backup_id: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class GetStreamingSessionBackupResponse
+ attr_accessor streaming_session_backup: Types::StreamingSessionBackup
+ SENSITIVE: []
+ end
+
+ class GetStreamingSessionRequest
+ attr_accessor session_id: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class GetStreamingSessionResponse
+ attr_accessor session: Types::StreamingSession
+ SENSITIVE: []
+ end
+
+ class GetStreamingSessionStreamRequest
+ attr_accessor session_id: ::String
+ attr_accessor stream_id: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class GetStreamingSessionStreamResponse
+ attr_accessor stream: Types::StreamingSessionStream
+ SENSITIVE: []
+ end
+
+ class GetStudioComponentRequest
+ attr_accessor studio_component_id: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class GetStudioComponentResponse
+ attr_accessor studio_component: Types::StudioComponent
+ SENSITIVE: []
+ end
+
+ class GetStudioMemberRequest
+ attr_accessor principal_id: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class GetStudioMemberResponse
+ attr_accessor member: Types::StudioMembership
+ SENSITIVE: []
+ end
+
+ class GetStudioRequest
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class GetStudioResponse
+ attr_accessor studio: Types::Studio
+ SENSITIVE: []
+ end
+
+ class InternalServerErrorException
+ attr_accessor code: ::String
+ attr_accessor context: ::Hash[::String, ::String]
+ attr_accessor message: ::String
+ SENSITIVE: []
+ end
+
+ class LaunchProfile
+ attr_accessor arn: ::String
+ attr_accessor created_at: ::Time
+ attr_accessor created_by: ::String
+ attr_accessor description: ::String
+ attr_accessor ec2_subnet_ids: ::Array[::String]
+ attr_accessor launch_profile_id: ::String
+ attr_accessor launch_profile_protocol_versions: ::Array[::String]
+ attr_accessor name: ::String
+ attr_accessor state: ("CREATE_IN_PROGRESS" | "READY" | "UPDATE_IN_PROGRESS" | "DELETE_IN_PROGRESS" | "DELETED" | "DELETE_FAILED" | "CREATE_FAILED" | "UPDATE_FAILED")
+ attr_accessor status_code: ("LAUNCH_PROFILE_CREATED" | "LAUNCH_PROFILE_UPDATED" | "LAUNCH_PROFILE_DELETED" | "LAUNCH_PROFILE_CREATE_IN_PROGRESS" | "LAUNCH_PROFILE_UPDATE_IN_PROGRESS" | "LAUNCH_PROFILE_DELETE_IN_PROGRESS" | "INTERNAL_ERROR" | "STREAMING_IMAGE_NOT_FOUND" | "STREAMING_IMAGE_NOT_READY" | "LAUNCH_PROFILE_WITH_STREAM_SESSIONS_NOT_DELETED" | "ENCRYPTION_KEY_ACCESS_DENIED" | "ENCRYPTION_KEY_NOT_FOUND" | "INVALID_SUBNETS_PROVIDED" | "INVALID_INSTANCE_TYPES_PROVIDED" | "INVALID_SUBNETS_COMBINATION")
+ attr_accessor status_message: ::String
+ attr_accessor stream_configuration: Types::StreamConfiguration
+ attr_accessor studio_component_ids: ::Array[::String]
+ attr_accessor tags: ::Hash[::String, ::String]
+ attr_accessor updated_at: ::Time
+ attr_accessor updated_by: ::String
+ attr_accessor validation_results: ::Array[Types::ValidationResult]
+ SENSITIVE: [:description, :name]
+ end
+
+ class LaunchProfileInitialization
+ attr_accessor active_directory: Types::LaunchProfileInitializationActiveDirectory
+ attr_accessor ec2_security_group_ids: ::Array[::String]
+ attr_accessor launch_profile_id: ::String
+ attr_accessor launch_profile_protocol_version: ::String
+ attr_accessor launch_purpose: ::String
+ attr_accessor name: ::String
+ attr_accessor platform: ("LINUX" | "WINDOWS")
+ attr_accessor system_initialization_scripts: ::Array[Types::LaunchProfileInitializationScript]
+ attr_accessor user_initialization_scripts: ::Array[Types::LaunchProfileInitializationScript]
+ SENSITIVE: [:name]
+ end
+
+ class LaunchProfileInitializationActiveDirectory
+ attr_accessor computer_attributes: ::Array[Types::ActiveDirectoryComputerAttribute]
+ attr_accessor directory_id: ::String
+ attr_accessor directory_name: ::String
+ attr_accessor dns_ip_addresses: ::Array[::String]
+ attr_accessor organizational_unit_distinguished_name: ::String
+ attr_accessor studio_component_id: ::String
+ attr_accessor studio_component_name: ::String
+ SENSITIVE: [:computer_attributes, :studio_component_name]
+ end
+
+ class LaunchProfileInitializationScript
+ attr_accessor runtime_role_arn: ::String
+ attr_accessor script: ::String
+ attr_accessor secure_initialization_role_arn: ::String
+ attr_accessor studio_component_id: ::String
+ attr_accessor studio_component_name: ::String
+ SENSITIVE: [:script, :studio_component_name]
+ end
+
+ class LaunchProfileMembership
+ attr_accessor identity_store_id: ::String
+ attr_accessor persona: ("USER")
+ attr_accessor principal_id: ::String
+ attr_accessor sid: ::String
+ SENSITIVE: []
+ end
+
+ class LicenseServiceConfiguration
+ attr_accessor endpoint: ::String
+ SENSITIVE: [:endpoint]
+ end
+
+ class ListEulaAcceptancesRequest
+ attr_accessor eula_ids: ::Array[::String]
+ attr_accessor next_token: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class ListEulaAcceptancesResponse
+ attr_accessor eula_acceptances: ::Array[Types::EulaAcceptance]
+ attr_accessor next_token: ::String
+ SENSITIVE: []
+ end
+
+ class ListEulasRequest
+ attr_accessor eula_ids: ::Array[::String]
+ attr_accessor next_token: ::String
+ SENSITIVE: []
+ end
+
+ class ListEulasResponse
+ attr_accessor eulas: ::Array[Types::Eula]
+ attr_accessor next_token: ::String
+ SENSITIVE: []
+ end
+
+ class ListLaunchProfileMembersRequest
+ attr_accessor launch_profile_id: ::String
+ attr_accessor max_results: ::Integer
+ attr_accessor next_token: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class ListLaunchProfileMembersResponse
+ attr_accessor members: ::Array[Types::LaunchProfileMembership]
+ attr_accessor next_token: ::String
+ SENSITIVE: []
+ end
+
+ class ListLaunchProfilesRequest
+ attr_accessor max_results: ::Integer
+ attr_accessor next_token: ::String
+ attr_accessor principal_id: ::String
+ attr_accessor states: ::Array[("CREATE_IN_PROGRESS" | "READY" | "UPDATE_IN_PROGRESS" | "DELETE_IN_PROGRESS" | "DELETED" | "DELETE_FAILED" | "CREATE_FAILED" | "UPDATE_FAILED")]
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class ListLaunchProfilesResponse
+ attr_accessor launch_profiles: ::Array[Types::LaunchProfile]
+ attr_accessor next_token: ::String
+ SENSITIVE: []
+ end
+
+ class ListStreamingImagesRequest
+ attr_accessor next_token: ::String
+ attr_accessor owner: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class ListStreamingImagesResponse
+ attr_accessor next_token: ::String
+ attr_accessor streaming_images: ::Array[Types::StreamingImage]
+ SENSITIVE: []
+ end
+
+ class ListStreamingSessionBackupsRequest
+ attr_accessor next_token: ::String
+ attr_accessor owned_by: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class ListStreamingSessionBackupsResponse
+ attr_accessor next_token: ::String
+ attr_accessor streaming_session_backups: ::Array[Types::StreamingSessionBackup]
+ SENSITIVE: []
+ end
+
+ class ListStreamingSessionsRequest
+ attr_accessor created_by: ::String
+ attr_accessor next_token: ::String
+ attr_accessor owned_by: ::String
+ attr_accessor session_ids: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class ListStreamingSessionsResponse
+ attr_accessor next_token: ::String
+ attr_accessor sessions: ::Array[Types::StreamingSession]
+ SENSITIVE: []
+ end
+
+ class ListStudioComponentsRequest
+ attr_accessor max_results: ::Integer
+ attr_accessor next_token: ::String
+ attr_accessor states: ::Array[("CREATE_IN_PROGRESS" | "READY" | "UPDATE_IN_PROGRESS" | "DELETE_IN_PROGRESS" | "DELETED" | "DELETE_FAILED" | "CREATE_FAILED" | "UPDATE_FAILED")]
+ attr_accessor studio_id: ::String
+ attr_accessor types: ::Array[("ACTIVE_DIRECTORY" | "SHARED_FILE_SYSTEM" | "COMPUTE_FARM" | "LICENSE_SERVICE" | "CUSTOM")]
+ SENSITIVE: []
+ end
+
+ class ListStudioComponentsResponse
+ attr_accessor next_token: ::String
+ attr_accessor studio_components: ::Array[Types::StudioComponent]
+ SENSITIVE: []
+ end
+
+ class ListStudioMembersRequest
+ attr_accessor max_results: ::Integer
+ attr_accessor next_token: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class ListStudioMembersResponse
+ attr_accessor members: ::Array[Types::StudioMembership]
+ attr_accessor next_token: ::String
+ SENSITIVE: []
+ end
+
+ class ListStudiosRequest
+ attr_accessor next_token: ::String
+ SENSITIVE: []
+ end
+
+ class ListStudiosResponse
+ attr_accessor next_token: ::String
+ attr_accessor studios: ::Array[Types::Studio]
+ SENSITIVE: []
+ end
+
+ class ListTagsForResourceRequest
+ attr_accessor resource_arn: ::String
+ SENSITIVE: []
+ end
+
+ class ListTagsForResourceResponse
+ attr_accessor tags: ::Hash[::String, ::String]
+ SENSITIVE: []
+ end
+
+ class NewLaunchProfileMember
+ attr_accessor persona: ("USER")
+ attr_accessor principal_id: ::String
+ SENSITIVE: []
+ end
+
+ class NewStudioMember
+ attr_accessor persona: ("ADMINISTRATOR")
+ attr_accessor principal_id: ::String
+ SENSITIVE: []
+ end
+
+ class PutLaunchProfileMembersRequest
+ attr_accessor client_token: ::String
+ attr_accessor identity_store_id: ::String
+ attr_accessor launch_profile_id: ::String
+ attr_accessor members: ::Array[Types::NewLaunchProfileMember]
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class PutLaunchProfileMembersResponse < Aws::EmptyStructure
+ end
+
+ class PutStudioMembersRequest
+ attr_accessor client_token: ::String
+ attr_accessor identity_store_id: ::String
+ attr_accessor members: ::Array[Types::NewStudioMember]
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class PutStudioMembersResponse < Aws::EmptyStructure
+ end
+
+ class ResourceNotFoundException
+ attr_accessor code: ::String
+ attr_accessor context: ::Hash[::String, ::String]
+ attr_accessor message: ::String
+ SENSITIVE: []
+ end
+
+ class ScriptParameterKeyValue
+ attr_accessor key: ::String
+ attr_accessor value: ::String
+ SENSITIVE: []
+ end
+
+ class ServiceQuotaExceededException
+ attr_accessor code: ::String
+ attr_accessor context: ::Hash[::String, ::String]
+ attr_accessor message: ::String
+ SENSITIVE: []
+ end
+
+ class SharedFileSystemConfiguration
+ attr_accessor endpoint: ::String
+ attr_accessor file_system_id: ::String
+ attr_accessor linux_mount_point: ::String
+ attr_accessor share_name: ::String
+ attr_accessor windows_mount_drive: ::String
+ SENSITIVE: [:endpoint, :linux_mount_point, :share_name]
+ end
+
+ class StartStreamingSessionRequest
+ attr_accessor backup_id: ::String
+ attr_accessor client_token: ::String
+ attr_accessor session_id: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class StartStreamingSessionResponse
+ attr_accessor session: Types::StreamingSession
+ SENSITIVE: []
+ end
+
+ class StartStudioSSOConfigurationRepairRequest
+ attr_accessor client_token: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class StartStudioSSOConfigurationRepairResponse
+ attr_accessor studio: Types::Studio
+ SENSITIVE: []
+ end
+
+ class StopStreamingSessionRequest
+ attr_accessor client_token: ::String
+ attr_accessor session_id: ::String
+ attr_accessor studio_id: ::String
+ attr_accessor volume_retention_mode: ("RETAIN" | "DELETE")
+ SENSITIVE: []
+ end
+
+ class StopStreamingSessionResponse
+ attr_accessor session: Types::StreamingSession
+ SENSITIVE: []
+ end
+
+ class StreamConfiguration
+ attr_accessor automatic_termination_mode: ("DEACTIVATED" | "ACTIVATED")
+ attr_accessor clipboard_mode: ("ENABLED" | "DISABLED")
+ attr_accessor ec2_instance_types: ::Array[("g4dn.xlarge" | "g4dn.2xlarge" | "g4dn.4xlarge" | "g4dn.8xlarge" | "g4dn.12xlarge" | "g4dn.16xlarge" | "g3.4xlarge" | "g3s.xlarge" | "g5.xlarge" | "g5.2xlarge" | "g5.4xlarge" | "g5.8xlarge" | "g5.16xlarge")]
+ attr_accessor max_session_length_in_minutes: ::Integer
+ attr_accessor max_stopped_session_length_in_minutes: ::Integer
+ attr_accessor session_backup: Types::StreamConfigurationSessionBackup
+ attr_accessor session_persistence_mode: ("DEACTIVATED" | "ACTIVATED")
+ attr_accessor session_storage: Types::StreamConfigurationSessionStorage
+ attr_accessor streaming_image_ids: ::Array[::String]
+ attr_accessor volume_configuration: Types::VolumeConfiguration
+ SENSITIVE: []
+ end
+
+ class StreamConfigurationCreate
+ attr_accessor automatic_termination_mode: ("DEACTIVATED" | "ACTIVATED")
+ attr_accessor clipboard_mode: ("ENABLED" | "DISABLED")
+ attr_accessor ec2_instance_types: ::Array[("g4dn.xlarge" | "g4dn.2xlarge" | "g4dn.4xlarge" | "g4dn.8xlarge" | "g4dn.12xlarge" | "g4dn.16xlarge" | "g3.4xlarge" | "g3s.xlarge" | "g5.xlarge" | "g5.2xlarge" | "g5.4xlarge" | "g5.8xlarge" | "g5.16xlarge")]
+ attr_accessor max_session_length_in_minutes: ::Integer
+ attr_accessor max_stopped_session_length_in_minutes: ::Integer
+ attr_accessor session_backup: Types::StreamConfigurationSessionBackup
+ attr_accessor session_persistence_mode: ("DEACTIVATED" | "ACTIVATED")
+ attr_accessor session_storage: Types::StreamConfigurationSessionStorage
+ attr_accessor streaming_image_ids: ::Array[::String]
+ attr_accessor volume_configuration: Types::VolumeConfiguration
+ SENSITIVE: []
+ end
+
+ class StreamConfigurationSessionBackup
+ attr_accessor max_backups_to_retain: ::Integer
+ attr_accessor mode: ("AUTOMATIC" | "DEACTIVATED")
+ SENSITIVE: []
+ end
+
+ class StreamConfigurationSessionStorage
+ attr_accessor mode: ::Array[("UPLOAD")]
+ attr_accessor root: Types::StreamingSessionStorageRoot
+ SENSITIVE: []
+ end
+
+ class StreamingImage
+ attr_accessor arn: ::String
+ attr_accessor description: ::String
+ attr_accessor ec2_image_id: ::String
+ attr_accessor encryption_configuration: Types::StreamingImageEncryptionConfiguration
+ attr_accessor eula_ids: ::Array[::String]
+ attr_accessor name: ::String
+ attr_accessor owner: ::String
+ attr_accessor platform: ::String
+ attr_accessor state: ("CREATE_IN_PROGRESS" | "READY" | "DELETE_IN_PROGRESS" | "DELETED" | "UPDATE_IN_PROGRESS" | "UPDATE_FAILED" | "CREATE_FAILED" | "DELETE_FAILED")
+ attr_accessor status_code: ("STREAMING_IMAGE_CREATE_IN_PROGRESS" | "STREAMING_IMAGE_READY" | "STREAMING_IMAGE_DELETE_IN_PROGRESS" | "STREAMING_IMAGE_DELETED" | "STREAMING_IMAGE_UPDATE_IN_PROGRESS" | "INTERNAL_ERROR" | "ACCESS_DENIED")
+ attr_accessor status_message: ::String
+ attr_accessor streaming_image_id: ::String
+ attr_accessor tags: ::Hash[::String, ::String]
+ SENSITIVE: [:description, :name]
+ end
+
+ class StreamingImageEncryptionConfiguration
+ attr_accessor key_arn: ::String
+ attr_accessor key_type: ("CUSTOMER_MANAGED_KEY")
+ SENSITIVE: []
+ end
+
+ class StreamingSession
+ attr_accessor arn: ::String
+ attr_accessor automatic_termination_mode: ("DEACTIVATED" | "ACTIVATED")
+ attr_accessor backup_mode: ("AUTOMATIC" | "DEACTIVATED")
+ attr_accessor created_at: ::Time
+ attr_accessor created_by: ::String
+ attr_accessor ec2_instance_type: ::String
+ attr_accessor launch_profile_id: ::String
+ attr_accessor max_backups_to_retain: ::Integer
+ attr_accessor owned_by: ::String
+ attr_accessor session_id: ::String
+ attr_accessor session_persistence_mode: ("DEACTIVATED" | "ACTIVATED")
+ attr_accessor started_at: ::Time
+ attr_accessor started_by: ::String
+ attr_accessor started_from_backup_id: ::String
+ attr_accessor state: ("CREATE_IN_PROGRESS" | "DELETE_IN_PROGRESS" | "READY" | "DELETED" | "CREATE_FAILED" | "DELETE_FAILED" | "STOP_IN_PROGRESS" | "START_IN_PROGRESS" | "STOPPED" | "STOP_FAILED" | "START_FAILED")
+ attr_accessor status_code: ("STREAMING_SESSION_READY" | "STREAMING_SESSION_DELETED" | "STREAMING_SESSION_CREATE_IN_PROGRESS" | "STREAMING_SESSION_DELETE_IN_PROGRESS" | "INTERNAL_ERROR" | "INSUFFICIENT_CAPACITY" | "ACTIVE_DIRECTORY_DOMAIN_JOIN_ERROR" | "NETWORK_CONNECTION_ERROR" | "INITIALIZATION_SCRIPT_ERROR" | "DECRYPT_STREAMING_IMAGE_ERROR" | "NETWORK_INTERFACE_ERROR" | "STREAMING_SESSION_STOPPED" | "STREAMING_SESSION_STARTED" | "STREAMING_SESSION_STOP_IN_PROGRESS" | "STREAMING_SESSION_START_IN_PROGRESS" | "AMI_VALIDATION_ERROR")
+ attr_accessor status_message: ::String
+ attr_accessor stop_at: ::Time
+ attr_accessor stopped_at: ::Time
+ attr_accessor stopped_by: ::String
+ attr_accessor streaming_image_id: ::String
+ attr_accessor tags: ::Hash[::String, ::String]
+ attr_accessor terminate_at: ::Time
+ attr_accessor updated_at: ::Time
+ attr_accessor updated_by: ::String
+ attr_accessor volume_configuration: Types::VolumeConfiguration
+ attr_accessor volume_retention_mode: ("RETAIN" | "DELETE")
+ SENSITIVE: []
+ end
+
+ class StreamingSessionBackup
+ attr_accessor arn: ::String
+ attr_accessor backup_id: ::String
+ attr_accessor created_at: ::Time
+ attr_accessor launch_profile_id: ::String
+ attr_accessor owned_by: ::String
+ attr_accessor session_id: ::String
+ attr_accessor state: ("CREATE_IN_PROGRESS" | "DELETE_IN_PROGRESS" | "READY" | "DELETED" | "CREATE_FAILED" | "DELETE_FAILED" | "STOP_IN_PROGRESS" | "START_IN_PROGRESS" | "STOPPED" | "STOP_FAILED" | "START_FAILED")
+ attr_accessor status_code: ("STREAMING_SESSION_READY" | "STREAMING_SESSION_DELETED" | "STREAMING_SESSION_CREATE_IN_PROGRESS" | "STREAMING_SESSION_DELETE_IN_PROGRESS" | "INTERNAL_ERROR" | "INSUFFICIENT_CAPACITY" | "ACTIVE_DIRECTORY_DOMAIN_JOIN_ERROR" | "NETWORK_CONNECTION_ERROR" | "INITIALIZATION_SCRIPT_ERROR" | "DECRYPT_STREAMING_IMAGE_ERROR" | "NETWORK_INTERFACE_ERROR" | "STREAMING_SESSION_STOPPED" | "STREAMING_SESSION_STARTED" | "STREAMING_SESSION_STOP_IN_PROGRESS" | "STREAMING_SESSION_START_IN_PROGRESS" | "AMI_VALIDATION_ERROR")
+ attr_accessor status_message: ::String
+ attr_accessor tags: ::Hash[::String, ::String]
+ SENSITIVE: []
+ end
+
+ class StreamingSessionStorageRoot
+ attr_accessor linux: ::String
+ attr_accessor windows: ::String
+ SENSITIVE: [:linux, :windows]
+ end
+
+ class StreamingSessionStream
+ attr_accessor created_at: ::Time
+ attr_accessor created_by: ::String
+ attr_accessor expires_at: ::Time
+ attr_accessor owned_by: ::String
+ attr_accessor state: ("READY" | "CREATE_IN_PROGRESS" | "DELETE_IN_PROGRESS" | "DELETED" | "CREATE_FAILED" | "DELETE_FAILED")
+ attr_accessor status_code: ("STREAM_CREATE_IN_PROGRESS" | "STREAM_READY" | "STREAM_DELETE_IN_PROGRESS" | "STREAM_DELETED" | "INTERNAL_ERROR" | "NETWORK_CONNECTION_ERROR")
+ attr_accessor stream_id: ::String
+ attr_accessor url: ::String
+ SENSITIVE: [:url]
+ end
+
+ class Studio
+ attr_accessor admin_role_arn: ::String
+ attr_accessor arn: ::String
+ attr_accessor created_at: ::Time
+ attr_accessor display_name: ::String
+ attr_accessor home_region: ::String
+ attr_accessor sso_client_id: ::String
+ attr_accessor state: ("CREATE_IN_PROGRESS" | "READY" | "UPDATE_IN_PROGRESS" | "DELETE_IN_PROGRESS" | "DELETED" | "DELETE_FAILED" | "CREATE_FAILED" | "UPDATE_FAILED")
+ attr_accessor status_code: ("STUDIO_CREATED" | "STUDIO_DELETED" | "STUDIO_UPDATED" | "STUDIO_CREATE_IN_PROGRESS" | "STUDIO_UPDATE_IN_PROGRESS" | "STUDIO_DELETE_IN_PROGRESS" | "STUDIO_WITH_LAUNCH_PROFILES_NOT_DELETED" | "STUDIO_WITH_STUDIO_COMPONENTS_NOT_DELETED" | "STUDIO_WITH_STREAMING_IMAGES_NOT_DELETED" | "AWS_SSO_NOT_ENABLED" | "AWS_SSO_ACCESS_DENIED" | "ROLE_NOT_OWNED_BY_STUDIO_OWNER" | "ROLE_COULD_NOT_BE_ASSUMED" | "INTERNAL_ERROR" | "ENCRYPTION_KEY_NOT_FOUND" | "ENCRYPTION_KEY_ACCESS_DENIED" | "AWS_SSO_CONFIGURATION_REPAIRED" | "AWS_SSO_CONFIGURATION_REPAIR_IN_PROGRESS" | "AWS_STS_REGION_DISABLED")
+ attr_accessor status_message: ::String
+ attr_accessor studio_encryption_configuration: Types::StudioEncryptionConfiguration
+ attr_accessor studio_id: ::String
+ attr_accessor studio_name: ::String
+ attr_accessor studio_url: ::String
+ attr_accessor tags: ::Hash[::String, ::String]
+ attr_accessor updated_at: ::Time
+ attr_accessor user_role_arn: ::String
+ SENSITIVE: [:display_name]
+ end
+
+ class StudioComponent
+ attr_accessor arn: ::String
+ attr_accessor configuration: Types::StudioComponentConfiguration
+ attr_accessor created_at: ::Time
+ attr_accessor created_by: ::String
+ attr_accessor description: ::String
+ attr_accessor ec2_security_group_ids: ::Array[::String]
+ attr_accessor initialization_scripts: ::Array[Types::StudioComponentInitializationScript]
+ attr_accessor name: ::String
+ attr_accessor runtime_role_arn: ::String
+ attr_accessor script_parameters: ::Array[Types::ScriptParameterKeyValue]
+ attr_accessor secure_initialization_role_arn: ::String
+ attr_accessor state: ("CREATE_IN_PROGRESS" | "READY" | "UPDATE_IN_PROGRESS" | "DELETE_IN_PROGRESS" | "DELETED" | "DELETE_FAILED" | "CREATE_FAILED" | "UPDATE_FAILED")
+ attr_accessor status_code: ("ACTIVE_DIRECTORY_ALREADY_EXISTS" | "STUDIO_COMPONENT_CREATED" | "STUDIO_COMPONENT_UPDATED" | "STUDIO_COMPONENT_DELETED" | "ENCRYPTION_KEY_ACCESS_DENIED" | "ENCRYPTION_KEY_NOT_FOUND" | "STUDIO_COMPONENT_CREATE_IN_PROGRESS" | "STUDIO_COMPONENT_UPDATE_IN_PROGRESS" | "STUDIO_COMPONENT_DELETE_IN_PROGRESS" | "INTERNAL_ERROR")
+ attr_accessor status_message: ::String
+ attr_accessor studio_component_id: ::String
+ attr_accessor subtype: ("AWS_MANAGED_MICROSOFT_AD" | "AMAZON_FSX_FOR_WINDOWS" | "AMAZON_FSX_FOR_LUSTRE" | "CUSTOM")
+ attr_accessor tags: ::Hash[::String, ::String]
+ attr_accessor type: ("ACTIVE_DIRECTORY" | "SHARED_FILE_SYSTEM" | "COMPUTE_FARM" | "LICENSE_SERVICE" | "CUSTOM")
+ attr_accessor updated_at: ::Time
+ attr_accessor updated_by: ::String
+ SENSITIVE: [:description, :name, :script_parameters]
+ end
+
+ class StudioComponentConfiguration
+ attr_accessor active_directory_configuration: Types::ActiveDirectoryConfiguration
+ attr_accessor compute_farm_configuration: Types::ComputeFarmConfiguration
+ attr_accessor license_service_configuration: Types::LicenseServiceConfiguration
+ attr_accessor shared_file_system_configuration: Types::SharedFileSystemConfiguration
+ attr_accessor unknown: untyped
+ SENSITIVE: []
+
+ class ActiveDirectoryConfiguration < StudioComponentConfiguration
+ end
+ class ComputeFarmConfiguration < StudioComponentConfiguration
+ end
+ class LicenseServiceConfiguration < StudioComponentConfiguration
+ end
+ class SharedFileSystemConfiguration < StudioComponentConfiguration
+ end
+ class Unknown < StudioComponentConfiguration
+ end
+ end
+
+ class StudioComponentInitializationScript
+ attr_accessor launch_profile_protocol_version: ::String
+ attr_accessor platform: ("LINUX" | "WINDOWS")
+ attr_accessor run_context: ("SYSTEM_INITIALIZATION" | "USER_INITIALIZATION")
+ attr_accessor script: ::String
+ SENSITIVE: [:script]
+ end
+
+ class StudioComponentSummary
+ attr_accessor created_at: ::Time
+ attr_accessor created_by: ::String
+ attr_accessor description: ::String
+ attr_accessor name: ::String
+ attr_accessor studio_component_id: ::String
+ attr_accessor subtype: ("AWS_MANAGED_MICROSOFT_AD" | "AMAZON_FSX_FOR_WINDOWS" | "AMAZON_FSX_FOR_LUSTRE" | "CUSTOM")
+ attr_accessor type: ("ACTIVE_DIRECTORY" | "SHARED_FILE_SYSTEM" | "COMPUTE_FARM" | "LICENSE_SERVICE" | "CUSTOM")
+ attr_accessor updated_at: ::Time
+ attr_accessor updated_by: ::String
+ SENSITIVE: [:description, :name]
+ end
+
+ class StudioEncryptionConfiguration
+ attr_accessor key_arn: ::String
+ attr_accessor key_type: ("AWS_OWNED_KEY" | "CUSTOMER_MANAGED_KEY")
+ SENSITIVE: []
+ end
+
+ class StudioMembership
+ attr_accessor identity_store_id: ::String
+ attr_accessor persona: ("ADMINISTRATOR")
+ attr_accessor principal_id: ::String
+ attr_accessor sid: ::String
+ SENSITIVE: []
+ end
+
+ class TagResourceRequest
+ attr_accessor resource_arn: ::String
+ attr_accessor tags: ::Hash[::String, ::String]
+ SENSITIVE: []
+ end
+
+ class TagResourceResponse < Aws::EmptyStructure
+ end
+
+ class ThrottlingException
+ attr_accessor code: ::String
+ attr_accessor context: ::Hash[::String, ::String]
+ attr_accessor message: ::String
+ SENSITIVE: []
+ end
+
+ class UntagResourceRequest
+ attr_accessor resource_arn: ::String
+ attr_accessor tag_keys: ::Array[::String]
+ SENSITIVE: []
+ end
+
+ class UntagResourceResponse < Aws::EmptyStructure
+ end
+
+ class UpdateLaunchProfileMemberRequest
+ attr_accessor client_token: ::String
+ attr_accessor launch_profile_id: ::String
+ attr_accessor persona: ("USER")
+ attr_accessor principal_id: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: []
+ end
+
+ class UpdateLaunchProfileMemberResponse
+ attr_accessor member: Types::LaunchProfileMembership
+ SENSITIVE: []
+ end
+
+ class UpdateLaunchProfileRequest
+ attr_accessor client_token: ::String
+ attr_accessor description: ::String
+ attr_accessor launch_profile_id: ::String
+ attr_accessor launch_profile_protocol_versions: ::Array[::String]
+ attr_accessor name: ::String
+ attr_accessor stream_configuration: Types::StreamConfigurationCreate
+ attr_accessor studio_component_ids: ::Array[::String]
+ attr_accessor studio_id: ::String
+ SENSITIVE: [:description, :name]
+ end
+
+ class UpdateLaunchProfileResponse
+ attr_accessor launch_profile: Types::LaunchProfile
+ SENSITIVE: []
+ end
+
+ class UpdateStreamingImageRequest
+ attr_accessor client_token: ::String
+ attr_accessor description: ::String
+ attr_accessor name: ::String
+ attr_accessor streaming_image_id: ::String
+ attr_accessor studio_id: ::String
+ SENSITIVE: [:description, :name]
+ end
+
+ class UpdateStreamingImageResponse
+ attr_accessor streaming_image: Types::StreamingImage
+ SENSITIVE: []
+ end
+
+ class UpdateStudioComponentRequest
+ attr_accessor client_token: ::String
+ attr_accessor configuration: Types::StudioComponentConfiguration
+ attr_accessor description: ::String
+ attr_accessor ec2_security_group_ids: ::Array[::String]
+ attr_accessor initialization_scripts: ::Array[Types::StudioComponentInitializationScript]
+ attr_accessor name: ::String
+ attr_accessor runtime_role_arn: ::String
+ attr_accessor script_parameters: ::Array[Types::ScriptParameterKeyValue]
+ attr_accessor secure_initialization_role_arn: ::String
+ attr_accessor studio_component_id: ::String
+ attr_accessor studio_id: ::String
+ attr_accessor subtype: ("AWS_MANAGED_MICROSOFT_AD" | "AMAZON_FSX_FOR_WINDOWS" | "AMAZON_FSX_FOR_LUSTRE" | "CUSTOM")
+ attr_accessor type: ("ACTIVE_DIRECTORY" | "SHARED_FILE_SYSTEM" | "COMPUTE_FARM" | "LICENSE_SERVICE" | "CUSTOM")
+ SENSITIVE: [:description, :name, :script_parameters]
+ end
+
+ class UpdateStudioComponentResponse
+ attr_accessor studio_component: Types::StudioComponent
+ SENSITIVE: []
+ end
+
+ class UpdateStudioRequest
+ attr_accessor admin_role_arn: ::String
+ attr_accessor client_token: ::String
+ attr_accessor display_name: ::String
+ attr_accessor studio_id: ::String
+ attr_accessor user_role_arn: ::String
+ SENSITIVE: [:display_name]
+ end
+
+ class UpdateStudioResponse
+ attr_accessor studio: Types::Studio
+ SENSITIVE: []
+ end
+
+ class ValidationException
+ attr_accessor code: ::String
+ attr_accessor context: ::Hash[::String, ::String]
+ attr_accessor message: ::String
+ SENSITIVE: []
+ end
+
+ class ValidationResult
+ attr_accessor state: ("VALIDATION_NOT_STARTED" | "VALIDATION_IN_PROGRESS" | "VALIDATION_SUCCESS" | "VALIDATION_FAILED" | "VALIDATION_FAILED_INTERNAL_SERVER_ERROR")
+ attr_accessor status_code: ("VALIDATION_NOT_STARTED" | "VALIDATION_IN_PROGRESS" | "VALIDATION_SUCCESS" | "VALIDATION_FAILED_INVALID_SUBNET_ROUTE_TABLE_ASSOCIATION" | "VALIDATION_FAILED_SUBNET_NOT_FOUND" | "VALIDATION_FAILED_INVALID_SECURITY_GROUP_ASSOCIATION" | "VALIDATION_FAILED_INVALID_ACTIVE_DIRECTORY" | "VALIDATION_FAILED_UNAUTHORIZED" | "VALIDATION_FAILED_INTERNAL_SERVER_ERROR")
+ attr_accessor status_message: ::String
+ attr_accessor type: ("VALIDATE_ACTIVE_DIRECTORY_STUDIO_COMPONENT" | "VALIDATE_SUBNET_ASSOCIATION" | "VALIDATE_NETWORK_ACL_ASSOCIATION" | "VALIDATE_SECURITY_GROUP_ASSOCIATION")
+ SENSITIVE: []
+ end
+
+ class VolumeConfiguration
+ attr_accessor iops: ::Integer
+ attr_accessor size: ::Integer
+ attr_accessor throughput: ::Integer
+ SENSITIVE: []
+ end
+ end
+end
diff --git a/gems/aws-sdk-nimblestudio/sig/waiters.rbs b/gems/aws-sdk-nimblestudio/sig/waiters.rbs
new file mode 100644
index 00000000000..4e293532db2
--- /dev/null
+++ b/gems/aws-sdk-nimblestudio/sig/waiters.rbs
@@ -0,0 +1,144 @@
+# 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
+ module NimbleStudio
+ module Waiters
+
+ class LaunchProfileDeleted
+ def initialize: (?client: Client, ?max_attempts: Integer, ?delay: Integer, ?before_attempt: Proc, ?before_wait: Proc) -> void
+ | (?Hash[Symbol, untyped]) -> void
+
+ def wait: (
+ launch_profile_id: ::String,
+ studio_id: ::String
+ ) -> Client::_GetLaunchProfileResponseSuccess
+ | (Hash[Symbol, untyped]) -> Client::_GetLaunchProfileResponseSuccess
+ end
+
+ class LaunchProfileReady
+ def initialize: (?client: Client, ?max_attempts: Integer, ?delay: Integer, ?before_attempt: Proc, ?before_wait: Proc) -> void
+ | (?Hash[Symbol, untyped]) -> void
+
+ def wait: (
+ launch_profile_id: ::String,
+ studio_id: ::String
+ ) -> Client::_GetLaunchProfileResponseSuccess
+ | (Hash[Symbol, untyped]) -> Client::_GetLaunchProfileResponseSuccess
+ end
+
+ class StreamingImageDeleted
+ def initialize: (?client: Client, ?max_attempts: Integer, ?delay: Integer, ?before_attempt: Proc, ?before_wait: Proc) -> void
+ | (?Hash[Symbol, untyped]) -> void
+
+ def wait: (
+ streaming_image_id: ::String,
+ studio_id: ::String
+ ) -> Client::_GetStreamingImageResponseSuccess
+ | (Hash[Symbol, untyped]) -> Client::_GetStreamingImageResponseSuccess
+ end
+
+ class StreamingImageReady
+ def initialize: (?client: Client, ?max_attempts: Integer, ?delay: Integer, ?before_attempt: Proc, ?before_wait: Proc) -> void
+ | (?Hash[Symbol, untyped]) -> void
+
+ def wait: (
+ streaming_image_id: ::String,
+ studio_id: ::String
+ ) -> Client::_GetStreamingImageResponseSuccess
+ | (Hash[Symbol, untyped]) -> Client::_GetStreamingImageResponseSuccess
+ end
+
+ class StreamingSessionDeleted
+ def initialize: (?client: Client, ?max_attempts: Integer, ?delay: Integer, ?before_attempt: Proc, ?before_wait: Proc) -> void
+ | (?Hash[Symbol, untyped]) -> void
+
+ def wait: (
+ session_id: ::String,
+ studio_id: ::String
+ ) -> Client::_GetStreamingSessionResponseSuccess
+ | (Hash[Symbol, untyped]) -> Client::_GetStreamingSessionResponseSuccess
+ end
+
+ class StreamingSessionReady
+ def initialize: (?client: Client, ?max_attempts: Integer, ?delay: Integer, ?before_attempt: Proc, ?before_wait: Proc) -> void
+ | (?Hash[Symbol, untyped]) -> void
+
+ def wait: (
+ session_id: ::String,
+ studio_id: ::String
+ ) -> Client::_GetStreamingSessionResponseSuccess
+ | (Hash[Symbol, untyped]) -> Client::_GetStreamingSessionResponseSuccess
+ end
+
+ class StreamingSessionStopped
+ def initialize: (?client: Client, ?max_attempts: Integer, ?delay: Integer, ?before_attempt: Proc, ?before_wait: Proc) -> void
+ | (?Hash[Symbol, untyped]) -> void
+
+ def wait: (
+ session_id: ::String,
+ studio_id: ::String
+ ) -> Client::_GetStreamingSessionResponseSuccess
+ | (Hash[Symbol, untyped]) -> Client::_GetStreamingSessionResponseSuccess
+ end
+
+ class StreamingSessionStreamReady
+ def initialize: (?client: Client, ?max_attempts: Integer, ?delay: Integer, ?before_attempt: Proc, ?before_wait: Proc) -> void
+ | (?Hash[Symbol, untyped]) -> void
+
+ def wait: (
+ session_id: ::String,
+ stream_id: ::String,
+ studio_id: ::String
+ ) -> Client::_GetStreamingSessionStreamResponseSuccess
+ | (Hash[Symbol, untyped]) -> Client::_GetStreamingSessionStreamResponseSuccess
+ end
+
+ class StudioComponentDeleted
+ def initialize: (?client: Client, ?max_attempts: Integer, ?delay: Integer, ?before_attempt: Proc, ?before_wait: Proc) -> void
+ | (?Hash[Symbol, untyped]) -> void
+
+ def wait: (
+ studio_component_id: ::String,
+ studio_id: ::String
+ ) -> Client::_GetStudioComponentResponseSuccess
+ | (Hash[Symbol, untyped]) -> Client::_GetStudioComponentResponseSuccess
+ end
+
+ class StudioComponentReady
+ def initialize: (?client: Client, ?max_attempts: Integer, ?delay: Integer, ?before_attempt: Proc, ?before_wait: Proc) -> void
+ | (?Hash[Symbol, untyped]) -> void
+
+ def wait: (
+ studio_component_id: ::String,
+ studio_id: ::String
+ ) -> Client::_GetStudioComponentResponseSuccess
+ | (Hash[Symbol, untyped]) -> Client::_GetStudioComponentResponseSuccess
+ end
+
+ class StudioDeleted
+ def initialize: (?client: Client, ?max_attempts: Integer, ?delay: Integer, ?before_attempt: Proc, ?before_wait: Proc) -> void
+ | (?Hash[Symbol, untyped]) -> void
+
+ def wait: (
+ studio_id: ::String
+ ) -> Client::_GetStudioResponseSuccess
+ | (Hash[Symbol, untyped]) -> Client::_GetStudioResponseSuccess
+ end
+
+ class StudioReady
+ def initialize: (?client: Client, ?max_attempts: Integer, ?delay: Integer, ?before_attempt: Proc, ?before_wait: Proc) -> void
+ | (?Hash[Symbol, untyped]) -> void
+
+ def wait: (
+ studio_id: ::String
+ ) -> Client::_GetStudioResponseSuccess
+ | (Hash[Symbol, untyped]) -> Client::_GetStudioResponseSuccess
+ end
+ end
+ end
+end
diff --git a/gems/aws-sdk-nimblestudio/spec/endpoint_provider_spec.rb b/gems/aws-sdk-nimblestudio/spec/endpoint_provider_spec.rb
new file mode 100644
index 00000000000..990b6ab3eb9
--- /dev/null
+++ b/gems/aws-sdk-nimblestudio/spec/endpoint_provider_spec.rb
@@ -0,0 +1,431 @@
+# 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
+
+
+require_relative 'spec_helper'
+
+module Aws::NimbleStudio
+ describe EndpointProvider do
+ subject { Aws::NimbleStudio::EndpointProvider.new }
+
+ context "For region ap-northeast-1 with FIPS disabled and DualStack disabled" do
+ let(:expected) do
+ {"endpoint"=>{"url"=>"https://nimble.ap-northeast-1.amazonaws.com"}}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"ap-northeast-1", :use_fips=>false, :use_dual_stack=>false})
+ endpoint = subject.resolve_endpoint(params)
+ expect(endpoint.url).to eq(expected['endpoint']['url'])
+ expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {})
+ expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {})
+ end
+ end
+
+ context "For region ap-southeast-2 with FIPS disabled and DualStack disabled" do
+ let(:expected) do
+ {"endpoint"=>{"url"=>"https://nimble.ap-southeast-2.amazonaws.com"}}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"ap-southeast-2", :use_fips=>false, :use_dual_stack=>false})
+ endpoint = subject.resolve_endpoint(params)
+ expect(endpoint.url).to eq(expected['endpoint']['url'])
+ expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {})
+ expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {})
+ end
+ end
+
+ context "For region ca-central-1 with FIPS disabled and DualStack disabled" do
+ let(:expected) do
+ {"endpoint"=>{"url"=>"https://nimble.ca-central-1.amazonaws.com"}}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"ca-central-1", :use_fips=>false, :use_dual_stack=>false})
+ endpoint = subject.resolve_endpoint(params)
+ expect(endpoint.url).to eq(expected['endpoint']['url'])
+ expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {})
+ expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {})
+ end
+ end
+
+ context "For region eu-west-2 with FIPS disabled and DualStack disabled" do
+ let(:expected) do
+ {"endpoint"=>{"url"=>"https://nimble.eu-west-2.amazonaws.com"}}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"eu-west-2", :use_fips=>false, :use_dual_stack=>false})
+ endpoint = subject.resolve_endpoint(params)
+ expect(endpoint.url).to eq(expected['endpoint']['url'])
+ expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {})
+ expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {})
+ end
+ end
+
+ context "For region us-east-1 with FIPS disabled and DualStack disabled" do
+ let(:expected) do
+ {"endpoint"=>{"url"=>"https://nimble.us-east-1.amazonaws.com"}}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>false, :use_dual_stack=>false})
+ endpoint = subject.resolve_endpoint(params)
+ expect(endpoint.url).to eq(expected['endpoint']['url'])
+ expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {})
+ expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {})
+ end
+ end
+
+ context "For region us-west-2 with FIPS disabled and DualStack disabled" do
+ let(:expected) do
+ {"endpoint"=>{"url"=>"https://nimble.us-west-2.amazonaws.com"}}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"us-west-2", :use_fips=>false, :use_dual_stack=>false})
+ endpoint = subject.resolve_endpoint(params)
+ expect(endpoint.url).to eq(expected['endpoint']['url'])
+ expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {})
+ expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {})
+ end
+ end
+
+ context "For region us-east-1 with FIPS enabled and DualStack enabled" do
+ let(:expected) do
+ {"endpoint"=>{"url"=>"https://nimble-fips.us-east-1.api.aws"}}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>true, :use_dual_stack=>true})
+ endpoint = subject.resolve_endpoint(params)
+ expect(endpoint.url).to eq(expected['endpoint']['url'])
+ expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {})
+ expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {})
+ end
+ end
+
+ context "For region us-east-1 with FIPS enabled and DualStack disabled" do
+ let(:expected) do
+ {"endpoint"=>{"url"=>"https://nimble-fips.us-east-1.amazonaws.com"}}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>true, :use_dual_stack=>false})
+ endpoint = subject.resolve_endpoint(params)
+ expect(endpoint.url).to eq(expected['endpoint']['url'])
+ expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {})
+ expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {})
+ end
+ end
+
+ context "For region us-east-1 with FIPS disabled and DualStack enabled" do
+ let(:expected) do
+ {"endpoint"=>{"url"=>"https://nimble.us-east-1.api.aws"}}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>false, :use_dual_stack=>true})
+ endpoint = subject.resolve_endpoint(params)
+ expect(endpoint.url).to eq(expected['endpoint']['url'])
+ expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {})
+ expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {})
+ end
+ end
+
+ context "For region cn-north-1 with FIPS enabled and DualStack enabled" do
+ let(:expected) do
+ {"endpoint"=>{"url"=>"https://nimble-fips.cn-north-1.api.amazonwebservices.com.cn"}}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"cn-north-1", :use_fips=>true, :use_dual_stack=>true})
+ endpoint = subject.resolve_endpoint(params)
+ expect(endpoint.url).to eq(expected['endpoint']['url'])
+ expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {})
+ expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {})
+ end
+ end
+
+ context "For region cn-north-1 with FIPS enabled and DualStack disabled" do
+ let(:expected) do
+ {"endpoint"=>{"url"=>"https://nimble-fips.cn-north-1.amazonaws.com.cn"}}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"cn-north-1", :use_fips=>true, :use_dual_stack=>false})
+ endpoint = subject.resolve_endpoint(params)
+ expect(endpoint.url).to eq(expected['endpoint']['url'])
+ expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {})
+ expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {})
+ end
+ end
+
+ context "For region cn-north-1 with FIPS disabled and DualStack enabled" do
+ let(:expected) do
+ {"endpoint"=>{"url"=>"https://nimble.cn-north-1.api.amazonwebservices.com.cn"}}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"cn-north-1", :use_fips=>false, :use_dual_stack=>true})
+ endpoint = subject.resolve_endpoint(params)
+ expect(endpoint.url).to eq(expected['endpoint']['url'])
+ expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {})
+ expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {})
+ end
+ end
+
+ context "For region cn-north-1 with FIPS disabled and DualStack disabled" do
+ let(:expected) do
+ {"endpoint"=>{"url"=>"https://nimble.cn-north-1.amazonaws.com.cn"}}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"cn-north-1", :use_fips=>false, :use_dual_stack=>false})
+ endpoint = subject.resolve_endpoint(params)
+ expect(endpoint.url).to eq(expected['endpoint']['url'])
+ expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {})
+ expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {})
+ end
+ end
+
+ context "For region us-gov-east-1 with FIPS enabled and DualStack enabled" do
+ let(:expected) do
+ {"endpoint"=>{"url"=>"https://nimble-fips.us-gov-east-1.api.aws"}}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"us-gov-east-1", :use_fips=>true, :use_dual_stack=>true})
+ endpoint = subject.resolve_endpoint(params)
+ expect(endpoint.url).to eq(expected['endpoint']['url'])
+ expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {})
+ expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {})
+ end
+ end
+
+ context "For region us-gov-east-1 with FIPS enabled and DualStack disabled" do
+ let(:expected) do
+ {"endpoint"=>{"url"=>"https://nimble-fips.us-gov-east-1.amazonaws.com"}}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"us-gov-east-1", :use_fips=>true, :use_dual_stack=>false})
+ endpoint = subject.resolve_endpoint(params)
+ expect(endpoint.url).to eq(expected['endpoint']['url'])
+ expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {})
+ expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {})
+ end
+ end
+
+ context "For region us-gov-east-1 with FIPS disabled and DualStack enabled" do
+ let(:expected) do
+ {"endpoint"=>{"url"=>"https://nimble.us-gov-east-1.api.aws"}}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"us-gov-east-1", :use_fips=>false, :use_dual_stack=>true})
+ endpoint = subject.resolve_endpoint(params)
+ expect(endpoint.url).to eq(expected['endpoint']['url'])
+ expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {})
+ expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {})
+ end
+ end
+
+ context "For region us-gov-east-1 with FIPS disabled and DualStack disabled" do
+ let(:expected) do
+ {"endpoint"=>{"url"=>"https://nimble.us-gov-east-1.amazonaws.com"}}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"us-gov-east-1", :use_fips=>false, :use_dual_stack=>false})
+ endpoint = subject.resolve_endpoint(params)
+ expect(endpoint.url).to eq(expected['endpoint']['url'])
+ expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {})
+ expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {})
+ end
+ end
+
+ context "For region us-iso-east-1 with FIPS enabled and DualStack enabled" do
+ let(:expected) do
+ {"error"=>"FIPS and DualStack are enabled, but this partition does not support one or both"}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"us-iso-east-1", :use_fips=>true, :use_dual_stack=>true})
+ expect do
+ subject.resolve_endpoint(params)
+ end.to raise_error(ArgumentError, expected['error'])
+ end
+ end
+
+ context "For region us-iso-east-1 with FIPS enabled and DualStack disabled" do
+ let(:expected) do
+ {"endpoint"=>{"url"=>"https://nimble-fips.us-iso-east-1.c2s.ic.gov"}}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"us-iso-east-1", :use_fips=>true, :use_dual_stack=>false})
+ endpoint = subject.resolve_endpoint(params)
+ expect(endpoint.url).to eq(expected['endpoint']['url'])
+ expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {})
+ expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {})
+ end
+ end
+
+ context "For region us-iso-east-1 with FIPS disabled and DualStack enabled" do
+ let(:expected) do
+ {"error"=>"DualStack is enabled but this partition does not support DualStack"}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"us-iso-east-1", :use_fips=>false, :use_dual_stack=>true})
+ expect do
+ subject.resolve_endpoint(params)
+ end.to raise_error(ArgumentError, expected['error'])
+ end
+ end
+
+ context "For region us-iso-east-1 with FIPS disabled and DualStack disabled" do
+ let(:expected) do
+ {"endpoint"=>{"url"=>"https://nimble.us-iso-east-1.c2s.ic.gov"}}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"us-iso-east-1", :use_fips=>false, :use_dual_stack=>false})
+ endpoint = subject.resolve_endpoint(params)
+ expect(endpoint.url).to eq(expected['endpoint']['url'])
+ expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {})
+ expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {})
+ end
+ end
+
+ context "For region us-isob-east-1 with FIPS enabled and DualStack enabled" do
+ let(:expected) do
+ {"error"=>"FIPS and DualStack are enabled, but this partition does not support one or both"}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"us-isob-east-1", :use_fips=>true, :use_dual_stack=>true})
+ expect do
+ subject.resolve_endpoint(params)
+ end.to raise_error(ArgumentError, expected['error'])
+ end
+ end
+
+ context "For region us-isob-east-1 with FIPS enabled and DualStack disabled" do
+ let(:expected) do
+ {"endpoint"=>{"url"=>"https://nimble-fips.us-isob-east-1.sc2s.sgov.gov"}}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"us-isob-east-1", :use_fips=>true, :use_dual_stack=>false})
+ endpoint = subject.resolve_endpoint(params)
+ expect(endpoint.url).to eq(expected['endpoint']['url'])
+ expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {})
+ expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {})
+ end
+ end
+
+ context "For region us-isob-east-1 with FIPS disabled and DualStack enabled" do
+ let(:expected) do
+ {"error"=>"DualStack is enabled but this partition does not support DualStack"}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"us-isob-east-1", :use_fips=>false, :use_dual_stack=>true})
+ expect do
+ subject.resolve_endpoint(params)
+ end.to raise_error(ArgumentError, expected['error'])
+ end
+ end
+
+ context "For region us-isob-east-1 with FIPS disabled and DualStack disabled" do
+ let(:expected) do
+ {"endpoint"=>{"url"=>"https://nimble.us-isob-east-1.sc2s.sgov.gov"}}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"us-isob-east-1", :use_fips=>false, :use_dual_stack=>false})
+ endpoint = subject.resolve_endpoint(params)
+ expect(endpoint.url).to eq(expected['endpoint']['url'])
+ expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {})
+ expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {})
+ end
+ end
+
+ context "For custom endpoint with region set and fips disabled and dualstack disabled" do
+ let(:expected) do
+ {"endpoint"=>{"url"=>"https://example.com"}}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>false, :use_dual_stack=>false, :endpoint=>"https://example.com"})
+ endpoint = subject.resolve_endpoint(params)
+ expect(endpoint.url).to eq(expected['endpoint']['url'])
+ expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {})
+ expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {})
+ end
+ end
+
+ context "For custom endpoint with region not set and fips disabled and dualstack disabled" do
+ let(:expected) do
+ {"endpoint"=>{"url"=>"https://example.com"}}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:use_fips=>false, :use_dual_stack=>false, :endpoint=>"https://example.com"})
+ endpoint = subject.resolve_endpoint(params)
+ expect(endpoint.url).to eq(expected['endpoint']['url'])
+ expect(endpoint.headers).to eq(expected['endpoint']['headers'] || {})
+ expect(endpoint.properties).to eq(expected['endpoint']['properties'] || {})
+ end
+ end
+
+ context "For custom endpoint with fips enabled and dualstack disabled" do
+ let(:expected) do
+ {"error"=>"Invalid Configuration: FIPS and custom endpoint are not supported"}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>true, :use_dual_stack=>false, :endpoint=>"https://example.com"})
+ expect do
+ subject.resolve_endpoint(params)
+ end.to raise_error(ArgumentError, expected['error'])
+ end
+ end
+
+ context "For custom endpoint with fips disabled and dualstack enabled" do
+ let(:expected) do
+ {"error"=>"Invalid Configuration: Dualstack and custom endpoint are not supported"}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{:region=>"us-east-1", :use_fips=>false, :use_dual_stack=>true, :endpoint=>"https://example.com"})
+ expect do
+ subject.resolve_endpoint(params)
+ end.to raise_error(ArgumentError, expected['error'])
+ end
+ end
+
+ context "Missing region" do
+ let(:expected) do
+ {"error"=>"Invalid Configuration: Missing Region"}
+ end
+
+ it 'produces the expected output from the EndpointProvider' do
+ params = EndpointParameters.new(**{})
+ expect do
+ subject.resolve_endpoint(params)
+ end.to raise_error(ArgumentError, expected['error'])
+ end
+ end
+
+ end
+end
diff --git a/gems/aws-sdk-nimblestudio/spec/spec_helper.rb b/gems/aws-sdk-nimblestudio/spec/spec_helper.rb
new file mode 100644
index 00000000000..74e5eefb450
--- /dev/null
+++ b/gems/aws-sdk-nimblestudio/spec/spec_helper.rb
@@ -0,0 +1,18 @@
+# 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
+
+require_relative '../../aws-sdk-core/spec/shared_spec_helper'
+
+$:.unshift(File.expand_path('../../lib', __FILE__))
+$:.unshift(File.expand_path('../../../aws-sdk-core/lib', __FILE__))
+$:.unshift(File.expand_path('../../../aws-sigv4/lib', __FILE__))
+
+require 'rspec'
+require 'webmock/rspec'
+require 'aws-sdk-nimblestudio'
diff --git a/services.json b/services.json
index 5d5282e902c..eede3297496 100644
--- a/services.json
+++ b/services.json
@@ -824,6 +824,10 @@
"NetworkMonitor": {
"models": "networkmonitor/2023-08-01"
},
+ "NimbleStudio": {
+ "models": "nimble/2020-08-01",
+ "deprecated": true
+ },
"OAM": {
"models": "oam/2022-06-10"
},