{
  "metadata": {
    "apiVersion": "2020-08-01",
    "endpointPrefix": "nimble",
    "signingName": "nimble",
    "serviceFullName": "AmazonNimbleStudio",
    "serviceId": "nimble",
    "protocol": "rest-json",
    "jsonVersion": "1.1",
    "uid": "nimble-2020-08-01",
    "signatureVersion": "v4"
  },
  "operations": {
    "AcceptEulas": {
      "name": "AcceptEulas",
      "http": {
        "method": "POST",
        "requestUri": "/2020-08-01/studios/{studioId}/eula-acceptances",
        "responseCode": 200
      },
      "input": {
        "shape": "AcceptEulasRequest"
      },
      "output": {
        "shape": "AcceptEulasResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Accept EULAs.</p>"
    },
    "CreateLaunchProfile": {
      "name": "CreateLaunchProfile",
      "http": {
        "method": "POST",
        "requestUri": "/2020-08-01/studios/{studioId}/launch-profiles",
        "responseCode": 200
      },
      "input": {
        "shape": "CreateLaunchProfileRequest"
      },
      "output": {
        "shape": "CreateLaunchProfileResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Create a launch profile.</p>"
    },
    "CreateStreamingImage": {
      "name": "CreateStreamingImage",
      "http": {
        "method": "POST",
        "requestUri": "/2020-08-01/studios/{studioId}/streaming-images",
        "responseCode": 200
      },
      "input": {
        "shape": "CreateStreamingImageRequest"
      },
      "output": {
        "shape": "CreateStreamingImageResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Creates a streaming image resource in a studio.</p>"
    },
    "CreateStreamingSession": {
      "name": "CreateStreamingSession",
      "http": {
        "method": "POST",
        "requestUri": "/2020-08-01/studios/{studioId}/streaming-sessions",
        "responseCode": 200
      },
      "input": {
        "shape": "CreateStreamingSessionRequest"
      },
      "output": {
        "shape": "CreateStreamingSessionResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Creates a streaming session in a studio.</p> <p>After invoking this operation, you must poll GetStreamingSession until the streaming session is in state READY.</p>"
    },
    "CreateStreamingSessionStream": {
      "name": "CreateStreamingSessionStream",
      "http": {
        "method": "POST",
        "requestUri": "/2020-08-01/studios/{studioId}/streaming-sessions/{sessionId}/streams",
        "responseCode": 200
      },
      "input": {
        "shape": "CreateStreamingSessionStreamRequest"
      },
      "output": {
        "shape": "CreateStreamingSessionStreamResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Creates a streaming session stream for a streaming session.</p> <p>After invoking this API, invoke GetStreamingSessionStream with the returned streamId to poll the resource until it is in state READY.</p>"
    },
    "CreateStudio": {
      "name": "CreateStudio",
      "http": {
        "method": "POST",
        "requestUri": "/2020-08-01/studios",
        "responseCode": 200
      },
      "input": {
        "shape": "CreateStudioRequest"
      },
      "output": {
        "shape": "CreateStudioResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Create a new Studio.</p> <p>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.</p> <p>The user role must have the AmazonNimbleStudio-StudioUser managed policy attached for the portal to function properly.</p> <p>The Admin Role must have the AmazonNimbleStudio-StudioAdmin managed policy attached for the portal to function properly.</p> <p>You may optionally specify a KMS key in the StudioEncryptionConfiguration.</p> <p>In Nimble Studio, resource names, descriptions, initialization scripts, and other data you provide are always encrypted at rest using an AWS KMS key. By default, this key is owned by AWS and managed on your behalf. You may provide your own AWS KMS key when calling CreateStudio to encrypt this data using a key you own and manage.</p> <p>When providing an AWS 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.</p> <p>If you delete this grant, the studio will no longer be accessible to your portal users.</p> <p>If you delete the studio KMS key, your studio will no longer be accessible.</p>"
    },
    "CreateStudioComponent": {
      "name": "CreateStudioComponent",
      "http": {
        "method": "POST",
        "requestUri": "/2020-08-01/studios/{studioId}/studio-components",
        "responseCode": 200
      },
      "input": {
        "shape": "CreateStudioComponentRequest"
      },
      "output": {
        "shape": "CreateStudioComponentResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Creates a studio component resource.</p>"
    },
    "DeleteLaunchProfile": {
      "name": "DeleteLaunchProfile",
      "http": {
        "method": "DELETE",
        "requestUri": "/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}",
        "responseCode": 200
      },
      "input": {
        "shape": "DeleteLaunchProfileRequest"
      },
      "output": {
        "shape": "DeleteLaunchProfileResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Permanently delete a launch profile.</p>"
    },
    "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",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Delete a user from launch profile membership.</p>"
    },
    "DeleteStreamingImage": {
      "name": "DeleteStreamingImage",
      "http": {
        "method": "DELETE",
        "requestUri": "/2020-08-01/studios/{studioId}/streaming-images/{streamingImageId}",
        "responseCode": 200
      },
      "input": {
        "shape": "DeleteStreamingImageRequest"
      },
      "output": {
        "shape": "DeleteStreamingImageResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Delete streaming image.</p>"
    },
    "DeleteStreamingSession": {
      "name": "DeleteStreamingSession",
      "http": {
        "method": "DELETE",
        "requestUri": "/2020-08-01/studios/{studioId}/streaming-sessions/{sessionId}",
        "responseCode": 200
      },
      "input": {
        "shape": "DeleteStreamingSessionRequest"
      },
      "output": {
        "shape": "DeleteStreamingSessionResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Deletes streaming session resource.</p> <p>After invoking this operation, use GetStreamingSession to poll the resource until it transitions to a DELETED state.</p> <p>A streaming session will count against your streaming session quota until it is marked DELETED.</p>"
    },
    "DeleteStudio": {
      "name": "DeleteStudio",
      "http": {
        "method": "DELETE",
        "requestUri": "/2020-08-01/studios/{studioId}",
        "responseCode": 200
      },
      "input": {
        "shape": "DeleteStudioRequest"
      },
      "output": {
        "shape": "DeleteStudioResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Delete a studio resource.</p>"
    },
    "DeleteStudioComponent": {
      "name": "DeleteStudioComponent",
      "http": {
        "method": "DELETE",
        "requestUri": "/2020-08-01/studios/{studioId}/studio-components/{studioComponentId}",
        "responseCode": 200
      },
      "input": {
        "shape": "DeleteStudioComponentRequest"
      },
      "output": {
        "shape": "DeleteStudioComponentResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Deletes a studio component resource.</p>"
    },
    "DeleteStudioMember": {
      "name": "DeleteStudioMember",
      "http": {
        "method": "DELETE",
        "requestUri": "/2020-08-01/studios/{studioId}/membership/{principalId}",
        "responseCode": 200
      },
      "input": {
        "shape": "DeleteStudioMemberRequest"
      },
      "output": {
        "shape": "DeleteStudioMemberResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Delete a user from studio membership.</p>"
    },
    "GetEula": {
      "name": "GetEula",
      "http": {
        "method": "GET",
        "requestUri": "/2020-08-01/eulas/{eulaId}",
        "responseCode": 200
      },
      "input": {
        "shape": "GetEulaRequest"
      },
      "output": {
        "shape": "GetEulaResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Get Eula.</p>"
    },
    "GetLaunchProfile": {
      "name": "GetLaunchProfile",
      "http": {
        "method": "GET",
        "requestUri": "/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}",
        "responseCode": 200
      },
      "input": {
        "shape": "GetLaunchProfileRequest"
      },
      "output": {
        "shape": "GetLaunchProfileResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Get a launch profile.</p>"
    },
    "GetLaunchProfileDetails": {
      "name": "GetLaunchProfileDetails",
      "http": {
        "method": "GET",
        "requestUri": "/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}/details",
        "responseCode": 200
      },
      "input": {
        "shape": "GetLaunchProfileDetailsRequest"
      },
      "output": {
        "shape": "GetLaunchProfileDetailsResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>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.</p>"
    },
    "GetLaunchProfileInitialization": {
      "name": "GetLaunchProfileInitialization",
      "http": {
        "method": "GET",
        "requestUri": "/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}/init",
        "responseCode": 200
      },
      "input": {
        "shape": "GetLaunchProfileInitializationRequest"
      },
      "output": {
        "shape": "GetLaunchProfileInitializationResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Get a launch profile initialization.</p>"
    },
    "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",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Get a user persona in launch profile membership.</p>"
    },
    "GetStreamingImage": {
      "name": "GetStreamingImage",
      "http": {
        "method": "GET",
        "requestUri": "/2020-08-01/studios/{studioId}/streaming-images/{streamingImageId}",
        "responseCode": 200
      },
      "input": {
        "shape": "GetStreamingImageRequest"
      },
      "output": {
        "shape": "GetStreamingImageResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Get streaming image.</p>"
    },
    "GetStreamingSession": {
      "name": "GetStreamingSession",
      "http": {
        "method": "GET",
        "requestUri": "/2020-08-01/studios/{studioId}/streaming-sessions/{sessionId}",
        "responseCode": 200
      },
      "input": {
        "shape": "GetStreamingSessionRequest"
      },
      "output": {
        "shape": "GetStreamingSessionResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Gets StreamingSession resource.</p> <p>Invoke this operation to poll for a streaming session state while creating or deleting a session.</p>"
    },
    "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",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Gets a StreamingSessionStream for a streaming session.</p> <p>Invoke this operation to poll the resource after invoking CreateStreamingSessionStream.</p> <p>After the StreamingSessionStream changes to the state READY, the url property will contain a stream to be used with the DCV streaming client.</p>"
    },
    "GetStudio": {
      "name": "GetStudio",
      "http": {
        "method": "GET",
        "requestUri": "/2020-08-01/studios/{studioId}",
        "responseCode": 200
      },
      "input": {
        "shape": "GetStudioRequest"
      },
      "output": {
        "shape": "GetStudioResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Get a Studio resource.</p>"
    },
    "GetStudioComponent": {
      "name": "GetStudioComponent",
      "http": {
        "method": "GET",
        "requestUri": "/2020-08-01/studios/{studioId}/studio-components/{studioComponentId}",
        "responseCode": 200
      },
      "input": {
        "shape": "GetStudioComponentRequest"
      },
      "output": {
        "shape": "GetStudioComponentResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Gets a studio component resource.</p>"
    },
    "GetStudioMember": {
      "name": "GetStudioMember",
      "http": {
        "method": "GET",
        "requestUri": "/2020-08-01/studios/{studioId}/membership/{principalId}",
        "responseCode": 200
      },
      "input": {
        "shape": "GetStudioMemberRequest"
      },
      "output": {
        "shape": "GetStudioMemberResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Get a user's membership in a studio.</p>"
    },
    "ListEulaAcceptances": {
      "name": "ListEulaAcceptances",
      "http": {
        "method": "GET",
        "requestUri": "/2020-08-01/studios/{studioId}/eula-acceptances",
        "responseCode": 200
      },
      "input": {
        "shape": "ListEulaAcceptancesRequest"
      },
      "output": {
        "shape": "ListEulaAcceptancesResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>List Eula Acceptances.</p>"
    },
    "ListEulas": {
      "name": "ListEulas",
      "http": {
        "method": "GET",
        "requestUri": "/2020-08-01/eulas",
        "responseCode": 200
      },
      "input": {
        "shape": "ListEulasRequest"
      },
      "output": {
        "shape": "ListEulasResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>List Eulas.</p>"
    },
    "ListLaunchProfileMembers": {
      "name": "ListLaunchProfileMembers",
      "http": {
        "method": "GET",
        "requestUri": "/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}/membership",
        "responseCode": 200
      },
      "input": {
        "shape": "ListLaunchProfileMembersRequest"
      },
      "output": {
        "shape": "ListLaunchProfileMembersResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Get all users in a given launch profile membership.</p>"
    },
    "ListLaunchProfiles": {
      "name": "ListLaunchProfiles",
      "http": {
        "method": "GET",
        "requestUri": "/2020-08-01/studios/{studioId}/launch-profiles",
        "responseCode": 200
      },
      "input": {
        "shape": "ListLaunchProfilesRequest"
      },
      "output": {
        "shape": "ListLaunchProfilesResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>List all the launch profiles a studio.</p>"
    },
    "ListStreamingImages": {
      "name": "ListStreamingImages",
      "http": {
        "method": "GET",
        "requestUri": "/2020-08-01/studios/{studioId}/streaming-images",
        "responseCode": 200
      },
      "input": {
        "shape": "ListStreamingImagesRequest"
      },
      "output": {
        "shape": "ListStreamingImagesResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>List the streaming image resources available to this studio.</p> <p>This list will contain both images provided by AWS, as well as streaming images that you have created in your studio.</p>"
    },
    "ListStreamingSessions": {
      "name": "ListStreamingSessions",
      "http": {
        "method": "GET",
        "requestUri": "/2020-08-01/studios/{studioId}/streaming-sessions",
        "responseCode": 200
      },
      "input": {
        "shape": "ListStreamingSessionsRequest"
      },
      "output": {
        "shape": "ListStreamingSessionsResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Lists the streaming image resources in a studio.</p>"
    },
    "ListStudioComponents": {
      "name": "ListStudioComponents",
      "http": {
        "method": "GET",
        "requestUri": "/2020-08-01/studios/{studioId}/studio-components",
        "responseCode": 200
      },
      "input": {
        "shape": "ListStudioComponentsRequest"
      },
      "output": {
        "shape": "ListStudioComponentsResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Lists the StudioComponents in a studio.</p>"
    },
    "ListStudioMembers": {
      "name": "ListStudioMembers",
      "http": {
        "method": "GET",
        "requestUri": "/2020-08-01/studios/{studioId}/membership",
        "responseCode": 200
      },
      "input": {
        "shape": "ListStudioMembersRequest"
      },
      "output": {
        "shape": "ListStudioMembersResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Get all users in a given studio membership.</p>"
    },
    "ListStudios": {
      "name": "ListStudios",
      "http": {
        "method": "GET",
        "requestUri": "/2020-08-01/studios",
        "responseCode": 200
      },
      "input": {
        "shape": "ListStudiosRequest"
      },
      "output": {
        "shape": "ListStudiosResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>List studios in your AWS account in the requested AWS Region.</p>"
    },
    "ListTagsForResource": {
      "name": "ListTagsForResource",
      "http": {
        "method": "GET",
        "requestUri": "/2020-08-01/tags/{resourceArn}",
        "responseCode": 200
      },
      "input": {
        "shape": "ListTagsForResourceRequest"
      },
      "output": {
        "shape": "ListTagsForResourceResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Gets the tags for a resource, given its Amazon Resource Names (ARN).</p> <p>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.</p>"
    },
    "PutLaunchProfileMembers": {
      "name": "PutLaunchProfileMembers",
      "http": {
        "method": "POST",
        "requestUri": "/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}/membership",
        "responseCode": 200
      },
      "input": {
        "shape": "PutLaunchProfileMembersRequest"
      },
      "output": {
        "shape": "PutLaunchProfileMembersResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Add/update users with given persona to launch profile membership.</p>"
    },
    "PutStudioMembers": {
      "name": "PutStudioMembers",
      "http": {
        "method": "POST",
        "requestUri": "/2020-08-01/studios/{studioId}/membership",
        "responseCode": 200
      },
      "input": {
        "shape": "PutStudioMembersRequest"
      },
      "output": {
        "shape": "PutStudioMembersResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Add/update users with given persona to studio membership.</p>"
    },
    "StartStudioSSOConfigurationRepair": {
      "name": "StartStudioSSOConfigurationRepair",
      "http": {
        "method": "PUT",
        "requestUri": "/2020-08-01/studios/{studioId}/sso-configuration",
        "responseCode": 200
      },
      "input": {
        "shape": "StartStudioSSOConfigurationRepairRequest"
      },
      "output": {
        "shape": "StartStudioSSOConfigurationRepairResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Repairs the SSO configuration for a given studio.</p> <p>If the studio has a valid AWS SSO configuration currently associated with it, this operation will fail with a validation error.</p> <p>If the studio does not have a valid AWS SSO configuration currently associated with it, then a new AWS SSO application is created for the studio and the studio is changed to the READY state.</p> <p>After the AWS SSO application is repaired, you must use the Amazon Nimble Studio console to add administrators and users to your studio.</p>"
    },
    "TagResource": {
      "name": "TagResource",
      "http": {
        "method": "POST",
        "requestUri": "/2020-08-01/tags/{resourceArn}",
        "responseCode": 204
      },
      "input": {
        "shape": "TagResourceRequest"
      },
      "output": {
        "shape": "TagResourceResponse",
        "documentation": "<p>204 response</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Creates tags for a resource, given its ARN.</p>"
    },
    "UntagResource": {
      "name": "UntagResource",
      "http": {
        "method": "DELETE",
        "requestUri": "/2020-08-01/tags/{resourceArn}",
        "responseCode": 204
      },
      "input": {
        "shape": "UntagResourceRequest"
      },
      "output": {
        "shape": "UntagResourceResponse",
        "documentation": "<p>204 response</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Deletes the tags for a resource.</p>"
    },
    "UpdateLaunchProfile": {
      "name": "UpdateLaunchProfile",
      "http": {
        "method": "PATCH",
        "requestUri": "/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}",
        "responseCode": 200
      },
      "input": {
        "shape": "UpdateLaunchProfileRequest"
      },
      "output": {
        "shape": "UpdateLaunchProfileResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Update a launch profile.</p>"
    },
    "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",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Update a user persona in launch profile membership.</p>"
    },
    "UpdateStreamingImage": {
      "name": "UpdateStreamingImage",
      "http": {
        "method": "PATCH",
        "requestUri": "/2020-08-01/studios/{studioId}/streaming-images/{streamingImageId}",
        "responseCode": 200
      },
      "input": {
        "shape": "UpdateStreamingImageRequest"
      },
      "output": {
        "shape": "UpdateStreamingImageResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Update streaming image.</p>"
    },
    "UpdateStudio": {
      "name": "UpdateStudio",
      "http": {
        "method": "PATCH",
        "requestUri": "/2020-08-01/studios/{studioId}",
        "responseCode": 200
      },
      "input": {
        "shape": "UpdateStudioRequest"
      },
      "output": {
        "shape": "UpdateStudioResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Update a Studio resource.</p> <p>Currently, this operation only supports updating the displayName of your studio.</p>"
    },
    "UpdateStudioComponent": {
      "name": "UpdateStudioComponent",
      "http": {
        "method": "PATCH",
        "requestUri": "/2020-08-01/studios/{studioId}/studio-components/{studioComponentId}",
        "responseCode": 200
      },
      "input": {
        "shape": "UpdateStudioComponentRequest"
      },
      "output": {
        "shape": "UpdateStudioComponentResponse",
        "documentation": "<p>Success</p>"
      },
      "errors": [
        {
          "shape": "ValidationException",
          "documentation": "<p>One of the parameters in the request is invalid.</p>"
        },
        {
          "shape": "InternalServerErrorException",
          "documentation": "<p>A service fault has occurred. Please retry your request and contact AWS support if this error continues.</p>"
        },
        {
          "shape": "ServiceQuotaExceededException",
          "documentation": "<p>This request would cause a service quota to be exceeded. Please use the AWS Service Quotas console to request an increase.</p>"
        },
        {
          "shape": "AccessDeniedException",
          "documentation": "<p>You do not have permission to perform this action.</p>"
        },
        {
          "shape": "ResourceNotFoundException",
          "documentation": "<p>A requested resource was not found.</p>"
        },
        {
          "shape": "ThrottlingException",
          "documentation": "<p>The request was denied due to request throttling. Please retry your request.</p>"
        },
        {
          "shape": "ConflictException",
          "documentation": "<p>This request conflicts with another concurrent request. Please retry your request.</p>"
        }
      ],
      "documentation": "<p>Updates a studio component resource.</p>"
    }
  },
  "shapes": {
    "AcceptEulasInput": {
      "type": "structure",
      "members": {
        "eulaIds": {
          "shape": "EulaIdList",
          "locationName": "eulaIds",
          "documentation": "<p>The EULA ID.</p>"
        }
      },
      "documentation": ""
    },
    "AcceptEulasOutput": {
      "type": "structure",
      "members": {
        "eulaAcceptances": {
          "shape": "EulaAcceptanceList",
          "locationName": "eulaAcceptances",
          "documentation": "<p>A collection of EULA acceptances.</p>"
        }
      },
      "documentation": ""
    },
    "AcceptEulasRequest": {
      "type": "structure",
      "members": {
        "clientToken": {
          "shape": "ClientToken",
          "location": "header",
          "locationName": "X-Amz-Client-Token",
          "documentation": "<p>To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.</p>",
          "idempotencyToken": true
        },
        "eulaIds": {
          "shape": "EulaIdList",
          "locationName": "eulaIds",
          "documentation": "<p>The EULA ID.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "documentation": "<p>A collection of EULA acceptances.</p>",
      "required": [
        "studioId"
      ]
    },
    "AcceptEulasResponse": {
      "type": "structure",
      "members": {
        "eulaAcceptances": {
          "shape": "EulaAcceptanceList",
          "locationName": "eulaAcceptances",
          "documentation": "<p>A collection of EULA acceptances.</p>"
        }
      }
    },
    "AccessDeniedException": {
      "type": "structure",
      "members": {
        "code": {
          "shape": "__string",
          "locationName": "code",
          "documentation": "<p>A more specific error code.</p>"
        },
        "context": {
          "shape": "ExceptionContext",
          "locationName": "context",
          "documentation": "<p>The exception context.</p>"
        },
        "message": {
          "shape": "__string",
          "locationName": "message",
          "documentation": "<p>A human-readable description of the error.</p>"
        }
      },
      "documentation": "",
      "exception": true,
      "error": {
        "httpStatusCode": 403
      }
    },
    "ActiveDirectoryComputerAttribute": {
      "type": "structure",
      "members": {
        "name": {
          "shape": "ActiveDirectoryComputerAttributeName",
          "locationName": "name",
          "documentation": "<p>The name for the LDAP attribute.</p>"
        },
        "value": {
          "shape": "ActiveDirectoryComputerAttributeValue",
          "locationName": "value",
          "documentation": "<p>The value for the LDAP attribute.</p>"
        }
      },
      "documentation": "<p>An LDAP attribute of an Active Directory computer account, in the form of a name:value pair.</p>"
    },
    "ActiveDirectoryComputerAttributeList": {
      "type": "list",
      "documentation": "<p>A collection of LDAP attributes to apply to Active Directory computer accounts that are created for streaming sessions.</p>",
      "max": 50,
      "member": {
        "shape": "ActiveDirectoryComputerAttribute"
      }
    },
    "ActiveDirectoryComputerAttributeName": {
      "type": "string",
      "documentation": "<p>The name for the LDAP attribute.</p>",
      "min": 1,
      "max": 40
    },
    "ActiveDirectoryComputerAttributeValue": {
      "type": "string",
      "documentation": "<p>The value for the LDAP attribute.</p>",
      "min": 1,
      "max": 64
    },
    "ActiveDirectoryConfiguration": {
      "type": "structure",
      "members": {
        "computerAttributes": {
          "shape": "ActiveDirectoryComputerAttributeList",
          "locationName": "computerAttributes",
          "documentation": "<p>A collection of custom attributes for an Active Directory computer.</p>"
        },
        "directoryId": {
          "shape": "DirectoryId",
          "locationName": "directoryId",
          "documentation": "<p>The directory ID of the AWS Directory Service for Microsoft AD to access using this studio component.</p>"
        },
        "organizationalUnitDistinguishedName": {
          "shape": "ActiveDirectoryOrganizationalUnitDistinguishedName",
          "locationName": "organizationalUnitDistinguishedName",
          "documentation": "<p>The distinguished name (DN) and organizational unit (OU) of an Active Directory computer.</p>"
        }
      },
      "documentation": "<p>The configuration for a Microsoft Active Directory (Microsoft AD) studio resource.</p>"
    },
    "ActiveDirectoryDnsIpAddress": {
      "type": "string"
    },
    "ActiveDirectoryDnsIpAddressList": {
      "type": "list",
      "documentation": "",
      "max": 10,
      "member": {
        "shape": "ActiveDirectoryDnsIpAddress"
      }
    },
    "ActiveDirectoryOrganizationalUnitDistinguishedName": {
      "type": "string",
      "documentation": "<p>The fully-qualified distinguished name of the organizational unit to place the computer account in.</p>",
      "min": 1,
      "max": 2000
    },
    "ComputeFarmConfiguration": {
      "type": "structure",
      "members": {
        "activeDirectoryUser": {
          "shape": "__string",
          "locationName": "activeDirectoryUser",
          "documentation": "<p>The name of an Active Directory user that is used on ComputeFarm worker instances.</p>"
        },
        "endpoint": {
          "shape": "__string",
          "locationName": "endpoint",
          "documentation": "<p>The endpoint of the ComputeFarm that is accessed by the studio component resource.</p>"
        }
      },
      "documentation": "<p>The configuration for a render farm that is associated with a studio resource.</p>"
    },
    "ConflictException": {
      "type": "structure",
      "members": {
        "code": {
          "shape": "__string",
          "locationName": "code",
          "documentation": "<p>A more specific error code.</p>"
        },
        "context": {
          "shape": "ExceptionContext",
          "locationName": "context",
          "documentation": "<p>The exception context.</p>"
        },
        "message": {
          "shape": "__string",
          "locationName": "message",
          "documentation": "<p>A human-readable description of the error.</p>"
        }
      },
      "documentation": "",
      "exception": true,
      "error": {
        "httpStatusCode": 409
      }
    },
    "CreateLaunchProfileInput": {
      "type": "structure",
      "members": {
        "description": {
          "shape": "LaunchProfileDescription",
          "locationName": "description",
          "documentation": "<p>The description.</p>"
        },
        "ec2SubnetIds": {
          "shape": "EC2SubnetIdList",
          "locationName": "ec2SubnetIds",
          "documentation": ""
        },
        "launchProfileProtocolVersions": {
          "shape": "LaunchProfileProtocolVersionList",
          "locationName": "launchProfileProtocolVersions",
          "documentation": "<p>The version number of the protocol that is used by the launch profile. The only valid version is \"2021-03-31\".</p>"
        },
        "name": {
          "shape": "LaunchProfileName",
          "locationName": "name",
          "documentation": "<p>The name for the launch profile.</p>"
        },
        "streamConfiguration": {
          "shape": "StreamConfigurationCreate",
          "locationName": "streamConfiguration",
          "documentation": "<p>A configuration for a streaming session.</p>"
        },
        "studioComponentIds": {
          "shape": "LaunchProfileStudioComponentIdList",
          "locationName": "studioComponentIds",
          "documentation": "<p>Unique identifiers for a collection of studio components that can be used with this launch profile.</p>"
        },
        "tags": {
          "shape": "Tags",
          "locationName": "tags",
          "documentation": "<p>A collection of labels, in the form of key:value pairs, that apply to this resource.</p>"
        }
      },
      "documentation": "",
      "required": [
        "ec2SubnetIds",
        "studioComponentIds",
        "launchProfileProtocolVersions",
        "name",
        "streamConfiguration"
      ]
    },
    "CreateLaunchProfileOutput": {
      "type": "structure",
      "members": {
        "launchProfile": {
          "shape": "LaunchProfile",
          "locationName": "launchProfile",
          "documentation": "<p>The created launch profile.</p>"
        }
      },
      "documentation": ""
    },
    "CreateLaunchProfileRequest": {
      "type": "structure",
      "members": {
        "clientToken": {
          "shape": "ClientToken",
          "location": "header",
          "locationName": "X-Amz-Client-Token",
          "documentation": "<p>To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.</p>",
          "idempotencyToken": true
        },
        "description": {
          "shape": "LaunchProfileDescription",
          "locationName": "description",
          "documentation": "<p>The description.</p>"
        },
        "ec2SubnetIds": {
          "shape": "EC2SubnetIdList",
          "locationName": "ec2SubnetIds",
          "documentation": ""
        },
        "launchProfileProtocolVersions": {
          "shape": "LaunchProfileProtocolVersionList",
          "locationName": "launchProfileProtocolVersions",
          "documentation": "<p>The version number of the protocol that is used by the launch profile. The only valid version is \"2021-03-31\".</p>"
        },
        "name": {
          "shape": "LaunchProfileName",
          "locationName": "name",
          "documentation": "<p>The name for the launch profile.</p>"
        },
        "streamConfiguration": {
          "shape": "StreamConfigurationCreate",
          "locationName": "streamConfiguration",
          "documentation": "<p>A configuration for a streaming session.</p>"
        },
        "studioComponentIds": {
          "shape": "LaunchProfileStudioComponentIdList",
          "locationName": "studioComponentIds",
          "documentation": "<p>Unique identifiers for a collection of studio components that can be used with this launch profile.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        },
        "tags": {
          "shape": "Tags",
          "locationName": "tags",
          "documentation": "<p>A collection of labels, in the form of key:value pairs, that apply to this resource.</p>"
        }
      },
      "documentation": "<p>A collection of launch profiles.</p>",
      "required": [
        "ec2SubnetIds",
        "studioComponentIds",
        "studioId",
        "launchProfileProtocolVersions",
        "name",
        "streamConfiguration"
      ]
    },
    "CreateLaunchProfileResponse": {
      "type": "structure",
      "members": {
        "launchProfile": {
          "shape": "LaunchProfile",
          "locationName": "launchProfile",
          "documentation": "<p>The launch profile.</p>"
        }
      }
    },
    "CreateStreamingImageInput": {
      "type": "structure",
      "members": {
        "description": {
          "shape": "StreamingImageDescription",
          "locationName": "description",
          "documentation": "<p>A human-readable description of the streaming image.</p>"
        },
        "ec2ImageId": {
          "shape": "EC2ImageId",
          "locationName": "ec2ImageId",
          "documentation": "<p>The ID of an EC2 machine image with which to create this streaming image.</p>"
        },
        "name": {
          "shape": "StreamingImageName",
          "locationName": "name",
          "documentation": "<p>A friendly name for a streaming image resource.</p>"
        },
        "tags": {
          "shape": "Tags",
          "locationName": "tags",
          "documentation": "<p>A collection of labels, in the form of key:value pairs, that apply to this resource.</p>"
        }
      },
      "documentation": "",
      "required": [
        "name",
        "ec2ImageId"
      ]
    },
    "CreateStreamingImageOutput": {
      "type": "structure",
      "members": {
        "streamingImage": {
          "shape": "StreamingImage",
          "locationName": "streamingImage",
          "documentation": ""
        }
      },
      "documentation": ""
    },
    "CreateStreamingImageRequest": {
      "type": "structure",
      "members": {
        "clientToken": {
          "shape": "ClientToken",
          "location": "header",
          "locationName": "X-Amz-Client-Token",
          "documentation": "<p>To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.</p>",
          "idempotencyToken": true
        },
        "description": {
          "shape": "StreamingImageDescription",
          "locationName": "description",
          "documentation": "<p>A human-readable description of the streaming image.</p>"
        },
        "ec2ImageId": {
          "shape": "EC2ImageId",
          "locationName": "ec2ImageId",
          "documentation": "<p>The ID of an EC2 machine image with which to create this streaming image.</p>"
        },
        "name": {
          "shape": "StreamingImageName",
          "locationName": "name",
          "documentation": "<p>A friendly name for a streaming image resource.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        },
        "tags": {
          "shape": "Tags",
          "locationName": "tags",
          "documentation": "<p>A collection of labels, in the form of key:value pairs, that apply to this resource.</p>"
        }
      },
      "documentation": "<p>A collection of streaming images.</p>",
      "required": [
        "studioId",
        "name",
        "ec2ImageId"
      ]
    },
    "CreateStreamingImageResponse": {
      "type": "structure",
      "members": {
        "streamingImage": {
          "shape": "StreamingImage",
          "locationName": "streamingImage",
          "documentation": ""
        }
      }
    },
    "CreateStreamingSessionInput": {
      "type": "structure",
      "members": {
        "ec2InstanceType": {
          "shape": "StreamingInstanceType",
          "locationName": "ec2InstanceType",
          "documentation": "<p>The EC2 Instance type used for the streaming session.</p>"
        },
        "launchProfileId": {
          "shape": "__string",
          "locationName": "launchProfileId",
          "documentation": "<p>The launch profile ID.</p>"
        },
        "streamingImageId": {
          "shape": "StreamingImageId",
          "locationName": "streamingImageId",
          "documentation": "<p>The ID of the streaming image.</p>"
        },
        "tags": {
          "shape": "Tags",
          "locationName": "tags",
          "documentation": "<p>A collection of labels, in the form of key:value pairs, that apply to this resource.</p>"
        }
      },
      "documentation": ""
    },
    "CreateStreamingSessionOutput": {
      "type": "structure",
      "members": {
        "session": {
          "shape": "StreamingSession",
          "locationName": "session",
          "documentation": "<p>The session.</p>"
        }
      },
      "documentation": ""
    },
    "CreateStreamingSessionRequest": {
      "type": "structure",
      "members": {
        "clientToken": {
          "shape": "ClientToken",
          "location": "header",
          "locationName": "X-Amz-Client-Token",
          "documentation": "<p>To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.</p>",
          "idempotencyToken": true
        },
        "ec2InstanceType": {
          "shape": "StreamingInstanceType",
          "locationName": "ec2InstanceType",
          "documentation": "<p>The EC2 Instance type used for the streaming session.</p>"
        },
        "launchProfileId": {
          "shape": "__string",
          "locationName": "launchProfileId",
          "documentation": "<p>The launch profile ID.</p>"
        },
        "streamingImageId": {
          "shape": "StreamingImageId",
          "locationName": "streamingImageId",
          "documentation": "<p>The ID of the streaming image.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        },
        "tags": {
          "shape": "Tags",
          "locationName": "tags",
          "documentation": "<p>A collection of labels, in the form of key:value pairs, that apply to this resource.</p>"
        }
      },
      "documentation": "<p>A collection of streaming sessions.</p>",
      "required": [
        "studioId"
      ]
    },
    "CreateStreamingSessionResponse": {
      "type": "structure",
      "members": {
        "session": {
          "shape": "StreamingSession",
          "locationName": "session",
          "documentation": "<p>The session.</p>"
        }
      }
    },
    "CreateStreamingSessionStreamInput": {
      "type": "structure",
      "members": {
        "expirationInSeconds": {
          "shape": "StreamingSessionStreamExpirationInSeconds",
          "locationName": "expirationInSeconds",
          "documentation": "<p>The expiration time in seconds.</p>"
        }
      },
      "documentation": ""
    },
    "CreateStreamingSessionStreamOutput": {
      "type": "structure",
      "members": {
        "stream": {
          "shape": "StreamingSessionStream",
          "locationName": "stream",
          "documentation": "<p>The stream.</p>"
        }
      },
      "documentation": ""
    },
    "CreateStreamingSessionStreamRequest": {
      "type": "structure",
      "members": {
        "clientToken": {
          "shape": "ClientToken",
          "location": "header",
          "locationName": "X-Amz-Client-Token",
          "documentation": "<p>To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.</p>",
          "idempotencyToken": true
        },
        "expirationInSeconds": {
          "shape": "StreamingSessionStreamExpirationInSeconds",
          "locationName": "expirationInSeconds",
          "documentation": "<p>The expiration time in seconds.</p>"
        },
        "sessionId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "sessionId",
          "documentation": "<p>The session ID.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "documentation": "<p>A list collection streams.</p>",
      "required": [
        "studioId",
        "sessionId"
      ]
    },
    "CreateStreamingSessionStreamResponse": {
      "type": "structure",
      "members": {
        "stream": {
          "shape": "StreamingSessionStream",
          "locationName": "stream",
          "documentation": "<p>The stream.</p>"
        }
      }
    },
    "CreateStudioComponentInput": {
      "type": "structure",
      "members": {
        "configuration": {
          "shape": "StudioComponentConfiguration",
          "locationName": "configuration",
          "documentation": "<p>The configuration of the studio component, based on component type.</p>"
        },
        "description": {
          "shape": "StudioComponentDescription",
          "locationName": "description",
          "documentation": "<p>The description.</p>"
        },
        "ec2SecurityGroupIds": {
          "shape": "StudioComponentSecurityGroupIdList",
          "locationName": "ec2SecurityGroupIds",
          "documentation": "<p>The EC2 security groups that control access to the studio component.</p>"
        },
        "initializationScripts": {
          "shape": "StudioComponentInitializationScriptList",
          "locationName": "initializationScripts",
          "documentation": "<p>Initialization scripts for studio components.</p>"
        },
        "name": {
          "shape": "StudioComponentName",
          "locationName": "name",
          "documentation": "<p>The name for the studio component.</p>"
        },
        "scriptParameters": {
          "shape": "StudioComponentScriptParameterKeyValueList",
          "locationName": "scriptParameters",
          "documentation": "<p>Parameters for the studio component scripts.</p>"
        },
        "subtype": {
          "shape": "StudioComponentSubtype",
          "locationName": "subtype",
          "documentation": "<p>The specific subtype of a studio component.</p>"
        },
        "tags": {
          "shape": "Tags",
          "locationName": "tags",
          "documentation": "<p>A collection of labels, in the form of key:value pairs, that apply to this resource.</p>"
        },
        "type": {
          "shape": "StudioComponentType",
          "locationName": "type",
          "documentation": "<p>The type of the studio component.</p>"
        }
      },
      "documentation": "",
      "required": [
        "name",
        "type"
      ]
    },
    "CreateStudioComponentOutput": {
      "type": "structure",
      "members": {
        "studioComponent": {
          "shape": "StudioComponent",
          "locationName": "studioComponent",
          "documentation": "<p>Information about the studio component.</p>"
        }
      },
      "documentation": "<p></p>"
    },
    "CreateStudioComponentRequest": {
      "type": "structure",
      "members": {
        "clientToken": {
          "shape": "ClientToken",
          "location": "header",
          "locationName": "X-Amz-Client-Token",
          "documentation": "<p>To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.</p>",
          "idempotencyToken": true
        },
        "configuration": {
          "shape": "StudioComponentConfiguration",
          "locationName": "configuration",
          "documentation": "<p>The configuration of the studio component, based on component type.</p>"
        },
        "description": {
          "shape": "StudioComponentDescription",
          "locationName": "description",
          "documentation": "<p>The description.</p>"
        },
        "ec2SecurityGroupIds": {
          "shape": "StudioComponentSecurityGroupIdList",
          "locationName": "ec2SecurityGroupIds",
          "documentation": "<p>The EC2 security groups that control access to the studio component.</p>"
        },
        "initializationScripts": {
          "shape": "StudioComponentInitializationScriptList",
          "locationName": "initializationScripts",
          "documentation": "<p>Initialization scripts for studio components.</p>"
        },
        "name": {
          "shape": "StudioComponentName",
          "locationName": "name",
          "documentation": "<p>The name for the studio component.</p>"
        },
        "scriptParameters": {
          "shape": "StudioComponentScriptParameterKeyValueList",
          "locationName": "scriptParameters",
          "documentation": "<p>Parameters for the studio component scripts.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        },
        "subtype": {
          "shape": "StudioComponentSubtype",
          "locationName": "subtype",
          "documentation": "<p>The specific subtype of a studio component.</p>"
        },
        "tags": {
          "shape": "Tags",
          "locationName": "tags",
          "documentation": "<p>A collection of labels, in the form of key:value pairs, that apply to this resource.</p>"
        },
        "type": {
          "shape": "StudioComponentType",
          "locationName": "type",
          "documentation": "<p>The type of the studio component.</p>"
        }
      },
      "documentation": "<p>The studio components.</p>",
      "required": [
        "studioId",
        "name",
        "type"
      ]
    },
    "CreateStudioComponentResponse": {
      "type": "structure",
      "members": {
        "studioComponent": {
          "shape": "StudioComponent",
          "locationName": "studioComponent",
          "documentation": "<p>Information about the studio component.</p>"
        }
      }
    },
    "CreateStudioInput": {
      "type": "structure",
      "members": {
        "adminRoleArn": {
          "shape": "__string",
          "locationName": "adminRoleArn",
          "documentation": "<p>The IAM role that Studio Admins will assume when logging in to the Nimble Studio portal.</p>"
        },
        "displayName": {
          "shape": "StudioDisplayName",
          "locationName": "displayName",
          "documentation": "<p>A friendly name for the studio.</p>"
        },
        "studioEncryptionConfiguration": {
          "shape": "StudioEncryptionConfiguration",
          "locationName": "studioEncryptionConfiguration",
          "documentation": "<p>The studio encryption configuration.</p>"
        },
        "studioName": {
          "shape": "StudioName",
          "locationName": "studioName",
          "documentation": "<p>The studio name that is used in the URL of the Nimble Studio portal when accessed by Nimble Studio users.</p>"
        },
        "tags": {
          "shape": "Tags",
          "locationName": "tags",
          "documentation": "<p>A collection of labels, in the form of key:value pairs, that apply to this resource.</p>"
        },
        "userRoleArn": {
          "shape": "__string",
          "locationName": "userRoleArn",
          "documentation": "<p>The IAM role that Studio Users will assume when logging in to the Nimble Studio portal.</p>"
        }
      },
      "documentation": "",
      "required": [
        "displayName",
        "studioName",
        "userRoleArn",
        "adminRoleArn"
      ]
    },
    "CreateStudioOutput": {
      "type": "structure",
      "members": {
        "studio": {
          "shape": "Studio",
          "locationName": "studio",
          "documentation": "<p>Information about a studio.</p>"
        }
      },
      "documentation": ""
    },
    "CreateStudioRequest": {
      "type": "structure",
      "members": {
        "adminRoleArn": {
          "shape": "__string",
          "locationName": "adminRoleArn",
          "documentation": "<p>The IAM role that Studio Admins will assume when logging in to the Nimble Studio portal.</p>"
        },
        "clientToken": {
          "shape": "ClientToken",
          "location": "header",
          "locationName": "X-Amz-Client-Token",
          "documentation": "<p>To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.</p>",
          "idempotencyToken": true
        },
        "displayName": {
          "shape": "StudioDisplayName",
          "locationName": "displayName",
          "documentation": "<p>A friendly name for the studio.</p>"
        },
        "studioEncryptionConfiguration": {
          "shape": "StudioEncryptionConfiguration",
          "locationName": "studioEncryptionConfiguration",
          "documentation": "<p>The studio encryption configuration.</p>"
        },
        "studioName": {
          "shape": "StudioName",
          "locationName": "studioName",
          "documentation": "<p>The studio name that is used in the URL of the Nimble Studio portal when accessed by Nimble Studio users.</p>"
        },
        "tags": {
          "shape": "Tags",
          "locationName": "tags",
          "documentation": "<p>A collection of labels, in the form of key:value pairs, that apply to this resource.</p>"
        },
        "userRoleArn": {
          "shape": "__string",
          "locationName": "userRoleArn",
          "documentation": "<p>The IAM role that Studio Users will assume when logging in to the Nimble Studio portal.</p>"
        }
      },
      "documentation": "<p>A collection of studio resources.</p>",
      "required": [
        "displayName",
        "studioName",
        "userRoleArn",
        "adminRoleArn"
      ]
    },
    "CreateStudioResponse": {
      "type": "structure",
      "members": {
        "studio": {
          "shape": "Studio",
          "locationName": "studio",
          "documentation": "<p>Information about a studio.</p>"
        }
      }
    },
    "DeleteLaunchProfileMemberOutput": {
      "type": "structure",
      "members": {},
      "documentation": ""
    },
    "DeleteLaunchProfileMemberRequest": {
      "type": "structure",
      "members": {
        "clientToken": {
          "shape": "ClientToken",
          "location": "header",
          "locationName": "X-Amz-Client-Token",
          "documentation": "<p>To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.</p>",
          "idempotencyToken": true
        },
        "launchProfileId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "launchProfileId",
          "documentation": "<p>The launch profile ID.</p>"
        },
        "principalId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "principalId",
          "documentation": "<p>The principal ID.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "required": [
        "studioId",
        "principalId",
        "launchProfileId"
      ]
    },
    "DeleteLaunchProfileMemberResponse": {
      "type": "structure",
      "members": {}
    },
    "DeleteLaunchProfileOutput": {
      "type": "structure",
      "members": {
        "launchProfile": {
          "shape": "LaunchProfile",
          "locationName": "launchProfile",
          "documentation": "<p>The launch profile.</p>"
        }
      },
      "documentation": ""
    },
    "DeleteLaunchProfileRequest": {
      "type": "structure",
      "members": {
        "clientToken": {
          "shape": "ClientToken",
          "location": "header",
          "locationName": "X-Amz-Client-Token",
          "documentation": "<p>To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.</p>",
          "idempotencyToken": true
        },
        "launchProfileId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "launchProfileId",
          "documentation": "<p>The launch profile ID.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "required": [
        "studioId",
        "launchProfileId"
      ]
    },
    "DeleteLaunchProfileResponse": {
      "type": "structure",
      "members": {
        "launchProfile": {
          "shape": "LaunchProfile",
          "locationName": "launchProfile",
          "documentation": "<p>The launch profile.</p>"
        }
      }
    },
    "DeleteStreamingImageOutput": {
      "type": "structure",
      "members": {
        "streamingImage": {
          "shape": "StreamingImage",
          "locationName": "streamingImage",
          "documentation": "<p>The streaming image.</p>"
        }
      },
      "documentation": ""
    },
    "DeleteStreamingImageRequest": {
      "type": "structure",
      "members": {
        "clientToken": {
          "shape": "ClientToken",
          "location": "header",
          "locationName": "X-Amz-Client-Token",
          "documentation": "<p>To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.</p>",
          "idempotencyToken": true
        },
        "streamingImageId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "streamingImageId",
          "documentation": "<p>The streaming image ID.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "required": [
        "studioId",
        "streamingImageId"
      ]
    },
    "DeleteStreamingImageResponse": {
      "type": "structure",
      "members": {
        "streamingImage": {
          "shape": "StreamingImage",
          "locationName": "streamingImage",
          "documentation": "<p>The streaming image.</p>"
        }
      }
    },
    "DeleteStreamingSessionOutput": {
      "type": "structure",
      "members": {
        "session": {
          "shape": "StreamingSession",
          "locationName": "session",
          "documentation": "<p>The session.</p>"
        }
      },
      "documentation": ""
    },
    "DeleteStreamingSessionRequest": {
      "type": "structure",
      "members": {
        "clientToken": {
          "shape": "ClientToken",
          "location": "header",
          "locationName": "X-Amz-Client-Token",
          "documentation": "<p>To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.</p>",
          "idempotencyToken": true
        },
        "sessionId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "sessionId",
          "documentation": "<p>The session ID.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "required": [
        "studioId",
        "sessionId"
      ]
    },
    "DeleteStreamingSessionResponse": {
      "type": "structure",
      "members": {
        "session": {
          "shape": "StreamingSession",
          "locationName": "session",
          "documentation": "<p>The session.</p>"
        }
      }
    },
    "DeleteStudioComponentOutput": {
      "type": "structure",
      "members": {
        "studioComponent": {
          "shape": "StudioComponent",
          "locationName": "studioComponent",
          "documentation": "<p>Information about the studio component.</p>"
        }
      },
      "documentation": ""
    },
    "DeleteStudioComponentRequest": {
      "type": "structure",
      "members": {
        "clientToken": {
          "shape": "ClientToken",
          "location": "header",
          "locationName": "X-Amz-Client-Token",
          "documentation": "<p>To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.</p>",
          "idempotencyToken": true
        },
        "studioComponentId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioComponentId",
          "documentation": "<p>The studio component ID.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "required": [
        "studioId",
        "studioComponentId"
      ]
    },
    "DeleteStudioComponentResponse": {
      "type": "structure",
      "members": {
        "studioComponent": {
          "shape": "StudioComponent",
          "locationName": "studioComponent",
          "documentation": "<p>Information about the studio component.</p>"
        }
      }
    },
    "DeleteStudioMemberOutput": {
      "type": "structure",
      "members": {},
      "documentation": ""
    },
    "DeleteStudioMemberRequest": {
      "type": "structure",
      "members": {
        "clientToken": {
          "shape": "ClientToken",
          "location": "header",
          "locationName": "X-Amz-Client-Token",
          "documentation": "<p>To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.</p>",
          "idempotencyToken": true
        },
        "principalId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "principalId",
          "documentation": "<p>The principal ID.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "required": [
        "studioId",
        "principalId"
      ]
    },
    "DeleteStudioMemberResponse": {
      "type": "structure",
      "members": {}
    },
    "DeleteStudioOutput": {
      "type": "structure",
      "members": {
        "studio": {
          "shape": "Studio",
          "locationName": "studio",
          "documentation": "<p>Information about a studio.</p>"
        }
      },
      "documentation": ""
    },
    "DeleteStudioRequest": {
      "type": "structure",
      "members": {
        "clientToken": {
          "shape": "ClientToken",
          "location": "header",
          "locationName": "X-Amz-Client-Token",
          "documentation": "<p>To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.</p>",
          "idempotencyToken": true
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "required": [
        "studioId"
      ]
    },
    "DeleteStudioResponse": {
      "type": "structure",
      "members": {
        "studio": {
          "shape": "Studio",
          "locationName": "studio",
          "documentation": "<p>Information about a studio.</p>"
        }
      }
    },
    "DirectoryId": {
      "type": "string"
    },
    "EC2ImageId": {
      "type": "string",
      "documentation": "",
      "pattern": "^ami-[0-9A-z]+$"
    },
    "EC2SubnetId": {
      "type": "string"
    },
    "EC2SubnetIdList": {
      "type": "list",
      "documentation": "",
      "max": 6,
      "member": {
        "shape": "EC2SubnetId"
      }
    },
    "Empty": {
      "type": "structure",
      "members": {},
      "documentation": ""
    },
    "Eula": {
      "type": "structure",
      "members": {
        "content": {
          "shape": "__string",
          "locationName": "content",
          "documentation": "<p>The EULA content.</p>"
        },
        "createdAt": {
          "shape": "Timestamp",
          "locationName": "createdAt",
          "documentation": "<p>The Unix epoch timestamp in seconds for when the resource was created.</p>"
        },
        "eulaId": {
          "shape": "EulaId",
          "locationName": "eulaId",
          "documentation": "<p>The EULA ID.</p>"
        },
        "name": {
          "shape": "EulaName",
          "locationName": "name",
          "documentation": "<p>The name for the EULA.</p>"
        },
        "updatedAt": {
          "shape": "Timestamp",
          "locationName": "updatedAt",
          "documentation": "<p>The Unix epoch timestamp in seconds for when the resource was updated.</p>"
        }
      },
      "documentation": "<p>Represents a EULA resource.</p>"
    },
    "EulaAcceptance": {
      "type": "structure",
      "members": {
        "acceptedAt": {
          "shape": "Timestamp",
          "locationName": "acceptedAt",
          "documentation": "<p>The Unix epoch timestamp in seconds for when the EULA was accepted.</p>"
        },
        "acceptedBy": {
          "shape": "__string",
          "locationName": "acceptedBy",
          "documentation": "<p>The ID of the person who accepted the EULA.</p>"
        },
        "accepteeId": {
          "shape": "__string",
          "locationName": "accepteeId",
          "documentation": "<p>The ID of the acceptee.</p>"
        },
        "eulaAcceptanceId": {
          "shape": "EulaAcceptanceId",
          "locationName": "eulaAcceptanceId",
          "documentation": "<p>The EULA acceptance ID.</p>"
        },
        "eulaId": {
          "shape": "EulaId",
          "locationName": "eulaId",
          "documentation": "<p>The EULA ID.</p>"
        }
      },
      "documentation": ""
    },
    "EulaAcceptanceId": {
      "type": "string",
      "documentation": "<p>The EULA acceptance ID.</p>",
      "max": 22,
      "pattern": "^[a-zA-Z0-9-_]*$"
    },
    "EulaAcceptanceList": {
      "type": "list",
      "documentation": "",
      "member": {
        "shape": "EulaAcceptance"
      }
    },
    "EulaId": {
      "type": "string",
      "documentation": "<p>Represents a EULA resource.</p>",
      "max": 22,
      "pattern": "^[a-zA-Z0-9-_]*$"
    },
    "EulaIdList": {
      "type": "list",
      "documentation": "",
      "member": {
        "shape": "__string"
      }
    },
    "EulaList": {
      "type": "list",
      "documentation": "",
      "member": {
        "shape": "Eula"
      }
    },
    "EulaName": {
      "type": "string",
      "max": 64
    },
    "ExceptionContext": {
      "type": "map",
      "documentation": "<p>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.</p> <p>ExceptionContext enables scripts and other programmatic clients to provide for better error handling.</p>",
      "key": {
        "shape": "__string"
      },
      "value": {
        "shape": "__string"
      }
    },
    "GetEulaOutput": {
      "type": "structure",
      "members": {
        "eula": {
          "shape": "Eula",
          "locationName": "eula",
          "documentation": "<p>The EULA.</p>"
        }
      },
      "documentation": ""
    },
    "GetEulaRequest": {
      "type": "structure",
      "members": {
        "eulaId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "eulaId",
          "documentation": "<p>The EULA ID.</p>"
        }
      },
      "required": [
        "eulaId"
      ]
    },
    "GetEulaResponse": {
      "type": "structure",
      "members": {
        "eula": {
          "shape": "Eula",
          "locationName": "eula",
          "documentation": "<p>The EULA.</p>"
        }
      }
    },
    "GetLaunchProfileDetailsOutput": {
      "type": "structure",
      "members": {
        "launchProfile": {
          "shape": "LaunchProfile",
          "locationName": "launchProfile",
          "documentation": "<p>The launch profile.</p>"
        },
        "streamingImages": {
          "shape": "StreamingImageList",
          "locationName": "streamingImages",
          "documentation": "<p>A collection of streaming images.</p>"
        },
        "studioComponentSummaries": {
          "shape": "StudioComponentSummaryList",
          "locationName": "studioComponentSummaries",
          "documentation": "<p>A collection of studio component summaries.</p>"
        }
      },
      "documentation": ""
    },
    "GetLaunchProfileDetailsRequest": {
      "type": "structure",
      "members": {
        "launchProfileId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "launchProfileId",
          "documentation": "<p>The launch profile ID.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "required": [
        "studioId",
        "launchProfileId"
      ]
    },
    "GetLaunchProfileDetailsResponse": {
      "type": "structure",
      "members": {
        "launchProfile": {
          "shape": "LaunchProfile",
          "locationName": "launchProfile",
          "documentation": "<p>The launch profile.</p>"
        },
        "streamingImages": {
          "shape": "StreamingImageList",
          "locationName": "streamingImages",
          "documentation": "<p>A collection of streaming images.</p>"
        },
        "studioComponentSummaries": {
          "shape": "StudioComponentSummaryList",
          "locationName": "studioComponentSummaries",
          "documentation": "<p>A collection of studio component summaries.</p>"
        }
      }
    },
    "GetLaunchProfileInitializationOutput": {
      "type": "structure",
      "members": {
        "launchProfileInitialization": {
          "shape": "LaunchProfileInitialization",
          "locationName": "launchProfileInitialization",
          "documentation": "<p>The launch profile initialization.</p>"
        }
      },
      "documentation": ""
    },
    "GetLaunchProfileInitializationRequest": {
      "type": "structure",
      "members": {
        "launchProfileId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "launchProfileId",
          "documentation": "<p>The launch profile ID.</p>"
        },
        "launchProfileProtocolVersions": {
          "shape": "multiValueQueryStringList",
          "location": "querystring",
          "locationName": "launchProfileProtocolVersions",
          "documentation": "<p>A collection of launch profile protocol versions.</p>"
        },
        "launchPurpose": {
          "shape": "__string",
          "location": "querystring",
          "locationName": "launchPurpose",
          "documentation": "<p>The launch purpose.</p>"
        },
        "platform": {
          "shape": "__string",
          "location": "querystring",
          "locationName": "platform",
          "documentation": "<p>The platform.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "required": [
        "studioId",
        "launchProfileProtocolVersions",
        "launchPurpose",
        "launchProfileId",
        "platform"
      ]
    },
    "GetLaunchProfileInitializationResponse": {
      "type": "structure",
      "members": {
        "launchProfileInitialization": {
          "shape": "LaunchProfileInitialization",
          "locationName": "launchProfileInitialization",
          "documentation": "<p>The launch profile initialization.</p>"
        }
      }
    },
    "GetLaunchProfileMemberOutput": {
      "type": "structure",
      "members": {
        "member": {
          "shape": "LaunchProfileMembership",
          "locationName": "member",
          "documentation": "<p>The member.</p>"
        }
      },
      "documentation": ""
    },
    "GetLaunchProfileMemberRequest": {
      "type": "structure",
      "members": {
        "launchProfileId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "launchProfileId",
          "documentation": "<p>The launch profile ID.</p>"
        },
        "principalId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "principalId",
          "documentation": "<p>The principal ID.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "required": [
        "studioId",
        "principalId",
        "launchProfileId"
      ]
    },
    "GetLaunchProfileMemberResponse": {
      "type": "structure",
      "members": {
        "member": {
          "shape": "LaunchProfileMembership",
          "locationName": "member",
          "documentation": "<p>The member.</p>"
        }
      }
    },
    "GetLaunchProfileOutput": {
      "type": "structure",
      "members": {
        "launchProfile": {
          "shape": "LaunchProfile",
          "locationName": "launchProfile",
          "documentation": "<p>The launch profile.</p>"
        }
      },
      "documentation": ""
    },
    "GetLaunchProfileRequest": {
      "type": "structure",
      "members": {
        "launchProfileId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "launchProfileId",
          "documentation": "<p>The launch profile ID.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "required": [
        "studioId",
        "launchProfileId"
      ]
    },
    "GetLaunchProfileResponse": {
      "type": "structure",
      "members": {
        "launchProfile": {
          "shape": "LaunchProfile",
          "locationName": "launchProfile",
          "documentation": "<p>The launch profile.</p>"
        }
      }
    },
    "GetStreamingImageOutput": {
      "type": "structure",
      "members": {
        "streamingImage": {
          "shape": "StreamingImage",
          "locationName": "streamingImage",
          "documentation": "<p>The streaming image.</p>"
        }
      },
      "documentation": ""
    },
    "GetStreamingImageRequest": {
      "type": "structure",
      "members": {
        "streamingImageId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "streamingImageId",
          "documentation": "<p>The streaming image ID.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "required": [
        "studioId",
        "streamingImageId"
      ]
    },
    "GetStreamingImageResponse": {
      "type": "structure",
      "members": {
        "streamingImage": {
          "shape": "StreamingImage",
          "locationName": "streamingImage",
          "documentation": "<p>The streaming image.</p>"
        }
      }
    },
    "GetStreamingSessionOutput": {
      "type": "structure",
      "members": {
        "session": {
          "shape": "StreamingSession",
          "locationName": "session",
          "documentation": "<p>The session.</p>"
        }
      },
      "documentation": ""
    },
    "GetStreamingSessionRequest": {
      "type": "structure",
      "members": {
        "sessionId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "sessionId",
          "documentation": "<p>The session ID.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "required": [
        "studioId",
        "sessionId"
      ]
    },
    "GetStreamingSessionResponse": {
      "type": "structure",
      "members": {
        "session": {
          "shape": "StreamingSession",
          "locationName": "session",
          "documentation": "<p>The session.</p>"
        }
      }
    },
    "GetStreamingSessionStreamOutput": {
      "type": "structure",
      "members": {
        "stream": {
          "shape": "StreamingSessionStream",
          "locationName": "stream",
          "documentation": "<p>The stream.</p>"
        }
      },
      "documentation": ""
    },
    "GetStreamingSessionStreamRequest": {
      "type": "structure",
      "members": {
        "sessionId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "sessionId",
          "documentation": "<p>The session ID.</p>"
        },
        "streamId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "streamId",
          "documentation": "<p>The stream ID.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "required": [
        "studioId",
        "streamId",
        "sessionId"
      ]
    },
    "GetStreamingSessionStreamResponse": {
      "type": "structure",
      "members": {
        "stream": {
          "shape": "StreamingSessionStream",
          "locationName": "stream",
          "documentation": "<p>The stream.</p>"
        }
      }
    },
    "GetStudioComponentOutput": {
      "type": "structure",
      "members": {
        "studioComponent": {
          "shape": "StudioComponent",
          "locationName": "studioComponent",
          "documentation": "<p>Information about the studio component.</p>"
        }
      },
      "documentation": ""
    },
    "GetStudioComponentRequest": {
      "type": "structure",
      "members": {
        "studioComponentId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioComponentId",
          "documentation": "<p>The studio component ID.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "required": [
        "studioId",
        "studioComponentId"
      ]
    },
    "GetStudioComponentResponse": {
      "type": "structure",
      "members": {
        "studioComponent": {
          "shape": "StudioComponent",
          "locationName": "studioComponent",
          "documentation": "<p>Information about the studio component.</p>"
        }
      }
    },
    "GetStudioMemberOutput": {
      "type": "structure",
      "members": {
        "member": {
          "shape": "StudioMembership",
          "locationName": "member",
          "documentation": "<p>The member.</p>"
        }
      },
      "documentation": ""
    },
    "GetStudioMemberRequest": {
      "type": "structure",
      "members": {
        "principalId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "principalId",
          "documentation": "<p>The principal ID.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "required": [
        "studioId",
        "principalId"
      ]
    },
    "GetStudioMemberResponse": {
      "type": "structure",
      "members": {
        "member": {
          "shape": "StudioMembership",
          "locationName": "member",
          "documentation": "<p>The member.</p>"
        }
      }
    },
    "GetStudioOutput": {
      "type": "structure",
      "members": {
        "studio": {
          "shape": "Studio",
          "locationName": "studio",
          "documentation": "<p>Information about a studio.</p>"
        }
      },
      "documentation": ""
    },
    "GetStudioRequest": {
      "type": "structure",
      "members": {
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "required": [
        "studioId"
      ]
    },
    "GetStudioResponse": {
      "type": "structure",
      "members": {
        "studio": {
          "shape": "Studio",
          "locationName": "studio",
          "documentation": "<p>Information about a studio.</p>"
        }
      }
    },
    "InternalServerErrorException": {
      "type": "structure",
      "members": {
        "code": {
          "shape": "__string",
          "locationName": "code",
          "documentation": "<p>A more specific error code.</p>"
        },
        "context": {
          "shape": "ExceptionContext",
          "locationName": "context",
          "documentation": "<p>The exception context.</p>"
        },
        "message": {
          "shape": "__string",
          "locationName": "message",
          "documentation": "<p>A human-readable description of the error.</p>"
        }
      },
      "documentation": "",
      "exception": true,
      "error": {
        "httpStatusCode": 500
      }
    },
    "InternalServerException": {
      "type": "structure",
      "members": {
        "code": {
          "shape": "__string",
          "locationName": "code",
          "documentation": "<p>A more specific error code.</p>"
        },
        "context": {
          "shape": "ExceptionContext",
          "locationName": "context",
          "documentation": "<p>The exception context.</p>"
        },
        "message": {
          "shape": "__string",
          "locationName": "message",
          "documentation": "<p>A human-readable description of the error.</p>"
        }
      },
      "documentation": ""
    },
    "LaunchProfile": {
      "type": "structure",
      "members": {
        "arn": {
          "shape": "__string",
          "locationName": "arn",
          "documentation": "<p>The ARN of the resource.</p>"
        },
        "createdAt": {
          "shape": "Timestamp",
          "locationName": "createdAt",
          "documentation": "<p>The Unix epoch timestamp in seconds for when the resource was created.</p>"
        },
        "createdBy": {
          "shape": "__string",
          "locationName": "createdBy",
          "documentation": "<p>The user ID of the user that created the launch profile.</p>"
        },
        "description": {
          "shape": "LaunchProfileDescription",
          "locationName": "description",
          "documentation": "<p>A human-readable description of the launch profile.</p>"
        },
        "ec2SubnetIds": {
          "shape": "EC2SubnetIdList",
          "locationName": "ec2SubnetIds",
          "documentation": "<p>Unique identifiers for a collection of EC2 subnets.</p>"
        },
        "launchProfileId": {
          "shape": "LaunchProfileId",
          "locationName": "launchProfileId",
          "documentation": "<p>The launch profile ID.</p>"
        },
        "launchProfileProtocolVersions": {
          "shape": "LaunchProfileProtocolVersionList",
          "locationName": "launchProfileProtocolVersions",
          "documentation": "<p>The version number of the protocol that is used by the launch profile. The only valid version is \"2021-03-31\".</p>"
        },
        "name": {
          "shape": "LaunchProfileName",
          "locationName": "name",
          "documentation": "<p>A friendly name for the launch profile.</p>"
        },
        "state": {
          "shape": "LaunchProfileState",
          "locationName": "state",
          "documentation": "<p>The current state.</p>"
        },
        "statusCode": {
          "shape": "LaunchProfileStatusCode",
          "locationName": "statusCode",
          "documentation": "<p>The status code.</p>"
        },
        "statusMessage": {
          "shape": "__string",
          "locationName": "statusMessage",
          "documentation": "<p>The status message for the launch profile.</p>"
        },
        "streamConfiguration": {
          "shape": "StreamConfiguration",
          "locationName": "streamConfiguration",
          "documentation": "<p>A configuration for a streaming session.</p>"
        },
        "studioComponentIds": {
          "shape": "LaunchProfileStudioComponentIdList",
          "locationName": "studioComponentIds",
          "documentation": "<p>Unique identifiers for a collection of studio components that can be used with this launch profile.</p>"
        },
        "tags": {
          "shape": "Tags",
          "locationName": "tags",
          "documentation": "<p>A collection of labels, in the form of key:value pairs, that apply to this resource.</p>"
        },
        "updatedAt": {
          "shape": "Timestamp",
          "locationName": "updatedAt",
          "documentation": "<p>The Unix epoch timestamp in seconds for when the resource was updated.</p>"
        },
        "updatedBy": {
          "shape": "__string",
          "locationName": "updatedBy",
          "documentation": "<p>The user ID of the user that most recently updated the resource.</p>"
        }
      },
      "documentation": ""
    },
    "LaunchProfileDescription": {
      "type": "string",
      "max": 256
    },
    "LaunchProfileId": {
      "type": "string",
      "max": 22,
      "pattern": "^[a-zA-Z0-9-_]*$"
    },
    "LaunchProfileInitialization": {
      "type": "structure",
      "members": {
        "activeDirectory": {
          "shape": "LaunchProfileInitializationActiveDirectory",
          "locationName": "activeDirectory",
          "documentation": "<p>A LaunchProfileInitializationActiveDirectory resource.</p>"
        },
        "ec2SecurityGroupIds": {
          "shape": "LaunchProfileSecurityGroupIdList",
          "locationName": "ec2SecurityGroupIds",
          "documentation": "<p>The EC2 security groups that control access to the studio component.</p>"
        },
        "launchProfileId": {
          "shape": "LaunchProfileId",
          "locationName": "launchProfileId",
          "documentation": "<p>The launch profile ID.</p>"
        },
        "launchProfileProtocolVersion": {
          "shape": "LaunchProfileProtocolVersion",
          "locationName": "launchProfileProtocolVersion",
          "documentation": "<p>The version number of the protocol that is used by the launch profile. The only valid version is \"2021-03-31\".</p>"
        },
        "launchPurpose": {
          "shape": "LaunchPurpose",
          "locationName": "launchPurpose",
          "documentation": "<p>The launch purpose.</p>"
        },
        "name": {
          "shape": "LaunchProfileName",
          "locationName": "name",
          "documentation": "<p>The name for the launch profile.</p>"
        },
        "platform": {
          "shape": "LaunchProfilePlatform",
          "locationName": "platform",
          "documentation": "<p>The platform of the launch platform, either WINDOWS or LINUX.</p>"
        },
        "systemInitializationScripts": {
          "shape": "LaunchProfileInitializationScriptList",
          "locationName": "systemInitializationScripts",
          "documentation": "<p>The system initializtion scripts.</p>"
        },
        "userInitializationScripts": {
          "shape": "LaunchProfileInitializationScriptList",
          "locationName": "userInitializationScripts",
          "documentation": "<p>The user initializtion scripts.</p>"
        }
      },
      "documentation": ""
    },
    "LaunchProfileInitializationActiveDirectory": {
      "type": "structure",
      "members": {
        "computerAttributes": {
          "shape": "ActiveDirectoryComputerAttributeList",
          "locationName": "computerAttributes",
          "documentation": "<p>A collection of custom attributes for an Active Directory computer.</p>"
        },
        "directoryId": {
          "shape": "DirectoryId",
          "locationName": "directoryId",
          "documentation": "<p>The directory ID of the AWS Directory Service for Microsoft AD to access using this launch profile.</p>"
        },
        "directoryName": {
          "shape": "__string",
          "locationName": "directoryName",
          "documentation": "<p>The directory name.</p>"
        },
        "dnsIpAddresses": {
          "shape": "ActiveDirectoryDnsIpAddressList",
          "locationName": "dnsIpAddresses",
          "documentation": "<p>The DNS IP address.</p>"
        },
        "organizationalUnitDistinguishedName": {
          "shape": "ActiveDirectoryOrganizationalUnitDistinguishedName",
          "locationName": "organizationalUnitDistinguishedName",
          "documentation": "<p>The name for the organizational unit distinguished name.</p>"
        },
        "studioComponentId": {
          "shape": "StudioComponentId",
          "locationName": "studioComponentId",
          "documentation": "<p>The unique identifier for a studio component resource.</p>"
        },
        "studioComponentName": {
          "shape": "StudioComponentName",
          "locationName": "studioComponentName",
          "documentation": "<p>The name for the studio component.</p>"
        }
      },
      "documentation": ""
    },
    "LaunchProfileInitializationScript": {
      "type": "structure",
      "members": {
        "script": {
          "shape": "StudioComponentInitializationScriptContent",
          "locationName": "script",
          "documentation": "<p>The initialization script.</p>"
        },
        "studioComponentId": {
          "shape": "StudioComponentId",
          "locationName": "studioComponentId",
          "documentation": "<p>The unique identifier for a studio component resource.</p>"
        },
        "studioComponentName": {
          "shape": "StudioComponentName",
          "locationName": "studioComponentName",
          "documentation": "<p>The name for the studio component.</p>"
        }
      },
      "documentation": ""
    },
    "LaunchProfileInitializationScriptList": {
      "type": "list",
      "documentation": "",
      "member": {
        "shape": "LaunchProfileInitializationScript"
      }
    },
    "LaunchProfileList": {
      "type": "list",
      "documentation": "",
      "member": {
        "shape": "LaunchProfile"
      }
    },
    "LaunchProfileMembership": {
      "type": "structure",
      "members": {
        "identityStoreId": {
          "shape": "__string",
          "locationName": "identityStoreId",
          "documentation": "<p>The ID of the identity store.</p>"
        },
        "persona": {
          "shape": "LaunchProfilePersona",
          "locationName": "persona",
          "documentation": "<p>The persona.</p>"
        },
        "principalId": {
          "shape": "__string",
          "locationName": "principalId",
          "documentation": "<p>The principal ID.</p>"
        }
      },
      "documentation": ""
    },
    "LaunchProfileMembershipList": {
      "type": "list",
      "documentation": "<p></p>",
      "max": 20,
      "member": {
        "shape": "LaunchProfileMembership"
      }
    },
    "LaunchProfileName": {
      "type": "string",
      "max": 64
    },
    "LaunchProfilePersona": {
      "type": "string",
      "documentation": "",
      "enum": [
        "USER"
      ]
    },
    "LaunchProfilePlatform": {
      "type": "string",
      "documentation": "",
      "enum": [
        "LINUX",
        "WINDOWS"
      ]
    },
    "LaunchProfileProtocolVersion": {
      "type": "string",
      "documentation": "<p>The version number of the protocol that is used by the launch profile. The only valid version is \"2021-03-31\".</p>",
      "max": 10,
      "pattern": "^2021\\-03\\-31$"
    },
    "LaunchProfileProtocolVersionList": {
      "type": "list",
      "documentation": "",
      "member": {
        "shape": "LaunchProfileProtocolVersion"
      }
    },
    "LaunchProfileSecurityGroupIdList": {
      "type": "list",
      "documentation": "",
      "min": 1,
      "member": {
        "shape": "SecurityGroupId"
      }
    },
    "LaunchProfileState": {
      "type": "string",
      "documentation": "",
      "enum": [
        "CREATE_IN_PROGRESS",
        "READY",
        "UPDATE_IN_PROGRESS",
        "DELETE_IN_PROGRESS",
        "DELETED",
        "DELETE_FAILED",
        "CREATE_FAILED",
        "UPDATE_FAILED"
      ]
    },
    "LaunchProfileStatusCode": {
      "type": "string",
      "documentation": "",
      "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"
      ]
    },
    "LaunchProfileStudioComponentIdList": {
      "type": "list",
      "documentation": "",
      "min": 1,
      "max": 100,
      "member": {
        "shape": "__string"
      }
    },
    "LaunchPurpose": {
      "type": "string",
      "documentation": "<p>The launch purpose.</p>",
      "max": 64,
      "pattern": "^[A-Z0-9_]+$"
    },
    "LicenseServiceConfiguration": {
      "type": "structure",
      "members": {
        "endpoint": {
          "shape": "__string",
          "locationName": "endpoint",
          "documentation": "<p>The endpoint of the license service that is accessed by the studio component resource.</p>"
        }
      },
      "documentation": "<p>The configuration for a license service that is associated with a studio resource.</p>"
    },
    "LinuxMountPoint": {
      "type": "string",
      "documentation": "",
      "max": 128,
      "pattern": "^(/?|(\\$HOME)?(/[^/\\n\\s\\\\]+)*)$"
    },
    "ListEulaAcceptancesOutput": {
      "type": "structure",
      "members": {
        "eulaAcceptances": {
          "shape": "EulaAcceptanceList",
          "locationName": "eulaAcceptances",
          "documentation": "<p>A collection of EULA acceptances.</p>"
        },
        "nextToken": {
          "shape": "__string",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        }
      },
      "documentation": "<p></p>"
    },
    "ListEulaAcceptancesRequest": {
      "type": "structure",
      "members": {
        "eulaIds": {
          "shape": "multiValueQueryStringList",
          "location": "querystring",
          "locationName": "eulaIds",
          "documentation": "<p>A collection of EULA IDs.</p>"
        },
        "nextToken": {
          "shape": "__string",
          "location": "querystring",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "required": [
        "studioId"
      ]
    },
    "ListEulaAcceptancesResponse": {
      "type": "structure",
      "members": {
        "eulaAcceptances": {
          "shape": "EulaAcceptanceList",
          "locationName": "eulaAcceptances",
          "documentation": "<p>A collection of EULA acceptances.</p>"
        },
        "nextToken": {
          "shape": "__string",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        }
      }
    },
    "ListEulasOutput": {
      "type": "structure",
      "members": {
        "eulas": {
          "shape": "EulaList",
          "locationName": "eulas",
          "documentation": "<p>A collection of EULA resources.</p>"
        },
        "nextToken": {
          "shape": "__string",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        }
      },
      "documentation": ""
    },
    "ListEulasRequest": {
      "type": "structure",
      "members": {
        "eulaIds": {
          "shape": "multiValueQueryStringList",
          "location": "querystring",
          "locationName": "eulaIds",
          "documentation": "<p>A collection of EULA IDs.</p>"
        },
        "nextToken": {
          "shape": "__string",
          "location": "querystring",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        }
      }
    },
    "ListEulasResponse": {
      "type": "structure",
      "members": {
        "eulas": {
          "shape": "EulaList",
          "locationName": "eulas",
          "documentation": "<p>A collection of EULA resources.</p>"
        },
        "nextToken": {
          "shape": "__string",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        }
      }
    },
    "ListLaunchProfileMembersOutput": {
      "type": "structure",
      "members": {
        "members": {
          "shape": "LaunchProfileMembershipList",
          "locationName": "members",
          "documentation": "<p>A list of members.</p>"
        },
        "nextToken": {
          "shape": "__string",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        }
      },
      "documentation": ""
    },
    "ListLaunchProfileMembersRequest": {
      "type": "structure",
      "members": {
        "launchProfileId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "launchProfileId",
          "documentation": "<p>The launch profile ID.</p>"
        },
        "maxResults": {
          "shape": "MaxResults",
          "location": "querystring",
          "locationName": "maxResults",
          "documentation": "<p>The maximum number of results to be returned per request.</p>"
        },
        "nextToken": {
          "shape": "__string",
          "location": "querystring",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "required": [
        "studioId",
        "launchProfileId"
      ]
    },
    "ListLaunchProfileMembersResponse": {
      "type": "structure",
      "members": {
        "members": {
          "shape": "LaunchProfileMembershipList",
          "locationName": "members",
          "documentation": "<p>A list of members.</p>"
        },
        "nextToken": {
          "shape": "__string",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        }
      }
    },
    "ListLaunchProfilesOutput": {
      "type": "structure",
      "members": {
        "launchProfiles": {
          "shape": "LaunchProfileList",
          "locationName": "launchProfiles",
          "documentation": "<p>A collection of launch profiles.</p>"
        },
        "nextToken": {
          "shape": "__string",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        }
      },
      "documentation": ""
    },
    "ListLaunchProfilesRequest": {
      "type": "structure",
      "members": {
        "maxResults": {
          "shape": "MaxResults",
          "location": "querystring",
          "locationName": "maxResults",
          "documentation": "<p>The maximum number of results to be returned per request.</p>"
        },
        "nextToken": {
          "shape": "__string",
          "location": "querystring",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        },
        "principalId": {
          "shape": "__string",
          "location": "querystring",
          "locationName": "principalId",
          "documentation": "<p>The principal ID.</p>"
        },
        "states": {
          "shape": "multiValueQueryStringList",
          "location": "querystring",
          "locationName": "states",
          "documentation": "<p>A list of states.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "required": [
        "studioId"
      ]
    },
    "ListLaunchProfilesResponse": {
      "type": "structure",
      "members": {
        "launchProfiles": {
          "shape": "LaunchProfileList",
          "locationName": "launchProfiles",
          "documentation": "<p>A collection of launch profiles.</p>"
        },
        "nextToken": {
          "shape": "__string",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        }
      }
    },
    "ListStreamingImagesOutput": {
      "type": "structure",
      "members": {
        "nextToken": {
          "shape": "__string",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        },
        "streamingImages": {
          "shape": "StreamingImageList",
          "locationName": "streamingImages",
          "documentation": "<p>A collection of streaming images.</p>"
        }
      },
      "documentation": ""
    },
    "ListStreamingImagesRequest": {
      "type": "structure",
      "members": {
        "nextToken": {
          "shape": "__string",
          "location": "querystring",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        },
        "owner": {
          "shape": "__string",
          "location": "querystring",
          "locationName": "owner",
          "documentation": "<p>The owner.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "required": [
        "studioId"
      ]
    },
    "ListStreamingImagesResponse": {
      "type": "structure",
      "members": {
        "nextToken": {
          "shape": "__string",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        },
        "streamingImages": {
          "shape": "StreamingImageList",
          "locationName": "streamingImages",
          "documentation": "<p>A collection of streaming images.</p>"
        }
      }
    },
    "ListStreamingSessionsOutput": {
      "type": "structure",
      "members": {
        "nextToken": {
          "shape": "__string",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        },
        "sessions": {
          "shape": "StreamingSessionList",
          "locationName": "sessions",
          "documentation": "<p>A collection of streaming sessions.</p>"
        }
      },
      "documentation": ""
    },
    "ListStreamingSessionsRequest": {
      "type": "structure",
      "members": {
        "createdBy": {
          "shape": "__string",
          "location": "querystring",
          "locationName": "createdBy",
          "documentation": "<p>The user ID.</p>"
        },
        "nextToken": {
          "shape": "__string",
          "location": "querystring",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        },
        "sessionIds": {
          "shape": "__string",
          "location": "querystring",
          "locationName": "sessionIds",
          "documentation": "<p>A collection of session IDs.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "required": [
        "studioId"
      ]
    },
    "ListStreamingSessionsResponse": {
      "type": "structure",
      "members": {
        "nextToken": {
          "shape": "__string",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        },
        "sessions": {
          "shape": "StreamingSessionList",
          "locationName": "sessions",
          "documentation": "<p>A collection of streaming sessions.</p>"
        }
      }
    },
    "ListStudioComponentsOutput": {
      "type": "structure",
      "members": {
        "nextToken": {
          "shape": "__string",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        },
        "studioComponents": {
          "shape": "StudioComponentList",
          "locationName": "studioComponents",
          "documentation": "<p>A collection of studio components.</p>"
        }
      },
      "documentation": ""
    },
    "ListStudioComponentsRequest": {
      "type": "structure",
      "members": {
        "maxResults": {
          "shape": "MaxResults",
          "location": "querystring",
          "locationName": "maxResults",
          "documentation": "<p>The maximum number of results to be returned per request.</p>"
        },
        "nextToken": {
          "shape": "__string",
          "location": "querystring",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        },
        "states": {
          "shape": "multiValueQueryStringList",
          "location": "querystring",
          "locationName": "states",
          "documentation": "<p>A list of states.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        },
        "types": {
          "shape": "multiValueQueryStringList",
          "location": "querystring",
          "locationName": "types",
          "documentation": "<p>The types.</p>"
        }
      },
      "required": [
        "studioId"
      ]
    },
    "ListStudioComponentsResponse": {
      "type": "structure",
      "members": {
        "nextToken": {
          "shape": "__string",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        },
        "studioComponents": {
          "shape": "StudioComponentList",
          "locationName": "studioComponents",
          "documentation": "<p>A collection of studio components.</p>"
        }
      }
    },
    "ListStudioMembersOutput": {
      "type": "structure",
      "members": {
        "members": {
          "shape": "StudioMembershipList",
          "locationName": "members",
          "documentation": "<p>A list of members.</p>"
        },
        "nextToken": {
          "shape": "__string",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        }
      },
      "documentation": ""
    },
    "ListStudioMembersRequest": {
      "type": "structure",
      "members": {
        "maxResults": {
          "shape": "MaxResults",
          "location": "querystring",
          "locationName": "maxResults",
          "documentation": "<p>The maximum number of results to be returned per request.</p>"
        },
        "nextToken": {
          "shape": "__string",
          "location": "querystring",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "required": [
        "studioId"
      ]
    },
    "ListStudioMembersResponse": {
      "type": "structure",
      "members": {
        "members": {
          "shape": "StudioMembershipList",
          "locationName": "members",
          "documentation": "<p>A list of members.</p>"
        },
        "nextToken": {
          "shape": "__string",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        }
      }
    },
    "ListStudiosOutput": {
      "type": "structure",
      "members": {
        "nextToken": {
          "shape": "__string",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        },
        "studios": {
          "shape": "StudioList",
          "locationName": "studios",
          "documentation": "<p>A collection of studios.</p>"
        }
      },
      "documentation": ""
    },
    "ListStudiosRequest": {
      "type": "structure",
      "members": {
        "nextToken": {
          "shape": "__string",
          "location": "querystring",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        }
      }
    },
    "ListStudiosResponse": {
      "type": "structure",
      "members": {
        "nextToken": {
          "shape": "__string",
          "locationName": "nextToken",
          "documentation": "<p>The token for the next set of results, or null if there are no more results.</p>"
        },
        "studios": {
          "shape": "StudioList",
          "locationName": "studios",
          "documentation": "<p>A collection of studios.</p>"
        }
      }
    },
    "ListTagsForResourceRequest": {
      "type": "structure",
      "members": {
        "resourceArn": {
          "shape": "__string",
          "location": "uri",
          "locationName": "resourceArn",
          "documentation": "<p>The ARN of the target resource for tagging operations.</p>"
        }
      },
      "required": [
        "resourceArn"
      ]
    },
    "ListTagsForResourceResponse": {
      "type": "structure",
      "members": {
        "tags": {
          "shape": "Tags",
          "locationName": "tags",
          "documentation": "<p>A collection of labels, in the form of key:value pairs, that apply to this resource.</p>"
        }
      }
    },
    "ListTagsOutput": {
      "type": "structure",
      "members": {
        "tags": {
          "shape": "Tags",
          "locationName": "tags",
          "documentation": "<p>A collection of labels, in the form of key:value pairs, that apply to this resource.</p>"
        }
      },
      "documentation": ""
    },
    "MaxResults": {
      "type": "integer",
      "min": 1,
      "max": 100
    },
    "NewLaunchProfileMember": {
      "type": "structure",
      "members": {
        "persona": {
          "shape": "LaunchProfilePersona",
          "locationName": "persona",
          "documentation": "<p>The persona.</p>"
        },
        "principalId": {
          "shape": "__string",
          "locationName": "principalId",
          "documentation": "<p>The principal ID.</p>"
        }
      },
      "documentation": "",
      "required": [
        "persona",
        "principalId"
      ]
    },
    "NewLaunchProfileMemberList": {
      "type": "list",
      "documentation": "",
      "max": 20,
      "member": {
        "shape": "NewLaunchProfileMember"
      }
    },
    "NewStudioMember": {
      "type": "structure",
      "members": {
        "persona": {
          "shape": "StudioPersona",
          "locationName": "persona",
          "documentation": "<p>The persona.</p>"
        },
        "principalId": {
          "shape": "__string",
          "locationName": "principalId",
          "documentation": "<p>The principal ID.</p>"
        }
      },
      "documentation": "",
      "required": [
        "persona",
        "principalId"
      ]
    },
    "NewStudioMemberList": {
      "type": "list",
      "documentation": "",
      "max": 20,
      "member": {
        "shape": "NewStudioMember"
      }
    },
    "PutLaunchProfileMembersInput": {
      "type": "structure",
      "members": {
        "identityStoreId": {
          "shape": "__string",
          "locationName": "identityStoreId",
          "documentation": "<p>The ID of the identity store.</p>"
        },
        "members": {
          "shape": "NewLaunchProfileMemberList",
          "locationName": "members",
          "documentation": "<p>A list of members.</p>"
        }
      },
      "documentation": "",
      "required": [
        "members",
        "identityStoreId"
      ]
    },
    "PutLaunchProfileMembersRequest": {
      "type": "structure",
      "members": {
        "clientToken": {
          "shape": "ClientToken",
          "location": "header",
          "locationName": "X-Amz-Client-Token",
          "documentation": "<p>To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.</p>",
          "idempotencyToken": true
        },
        "identityStoreId": {
          "shape": "__string",
          "locationName": "identityStoreId",
          "documentation": "<p>The ID of the identity store.</p>"
        },
        "launchProfileId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "launchProfileId",
          "documentation": "<p>The launch profile ID.</p>"
        },
        "members": {
          "shape": "NewLaunchProfileMemberList",
          "locationName": "members",
          "documentation": "<p>A list of members.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "documentation": "<p>Information about a launch profile membership.</p>",
      "required": [
        "studioId",
        "members",
        "launchProfileId",
        "identityStoreId"
      ]
    },
    "PutLaunchProfileMembersResponse": {
      "type": "structure",
      "members": {}
    },
    "PutStudioMembersInput": {
      "type": "structure",
      "members": {
        "identityStoreId": {
          "shape": "__string",
          "locationName": "identityStoreId",
          "documentation": "<p>The ID of the identity store.</p>"
        },
        "members": {
          "shape": "NewStudioMemberList",
          "locationName": "members",
          "documentation": "<p>A list of members.</p>"
        }
      },
      "documentation": "",
      "required": [
        "members",
        "identityStoreId"
      ]
    },
    "PutStudioMembersOutput": {
      "type": "structure",
      "members": {},
      "documentation": ""
    },
    "PutStudioMembersRequest": {
      "type": "structure",
      "members": {
        "clientToken": {
          "shape": "ClientToken",
          "location": "header",
          "locationName": "X-Amz-Client-Token",
          "documentation": "<p>To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.</p>",
          "idempotencyToken": true
        },
        "identityStoreId": {
          "shape": "__string",
          "locationName": "identityStoreId",
          "documentation": "<p>The ID of the identity store.</p>"
        },
        "members": {
          "shape": "NewStudioMemberList",
          "locationName": "members",
          "documentation": "<p>A list of members.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "documentation": "<p>A launch profile membership collection.</p>",
      "required": [
        "studioId",
        "members",
        "identityStoreId"
      ]
    },
    "PutStudioMembersResponse": {
      "type": "structure",
      "members": {}
    },
    "Region": {
      "type": "string",
      "documentation": "",
      "max": 50,
      "pattern": "[a-z]{2}-?(iso|gov)?-{1}[a-z]*-{1}[0-9]"
    },
    "ResourceNotFoundException": {
      "type": "structure",
      "members": {
        "code": {
          "shape": "__string",
          "locationName": "code",
          "documentation": "<p>A more specific error code.</p>"
        },
        "context": {
          "shape": "ExceptionContext",
          "locationName": "context",
          "documentation": "<p>The exception context.</p>"
        },
        "message": {
          "shape": "__string",
          "locationName": "message",
          "documentation": "<p>A human-readable description of the error.</p>"
        }
      },
      "documentation": "",
      "exception": true,
      "error": {
        "httpStatusCode": 404
      }
    },
    "ScriptParameterKey": {
      "type": "string",
      "documentation": "<p>A script parameter key.</p>",
      "min": 1,
      "max": 64,
      "pattern": "^[a-zA-Z_][a-zA-Z0-9_]+$"
    },
    "ScriptParameterKeyValue": {
      "type": "structure",
      "members": {
        "key": {
          "shape": "ScriptParameterKey",
          "locationName": "key",
          "documentation": "<p>A script parameter key.</p>"
        },
        "value": {
          "shape": "ScriptParameterValue",
          "locationName": "value",
          "documentation": "<p>A script parameter value.</p>"
        }
      },
      "documentation": "<p>A parameter for a studio component script, in the form of a key:value pair.</p>"
    },
    "ScriptParameterValue": {
      "type": "string",
      "documentation": "<p>A script parameter value.</p>",
      "min": 1,
      "max": 256
    },
    "SecurityGroupId": {
      "type": "string",
      "documentation": ""
    },
    "ServiceQuotaExceededException": {
      "type": "structure",
      "members": {
        "code": {
          "shape": "__string",
          "locationName": "code",
          "documentation": "<p>A more specific error code.</p>"
        },
        "context": {
          "shape": "ExceptionContext",
          "locationName": "context",
          "documentation": "<p>The exception context.</p>"
        },
        "message": {
          "shape": "__string",
          "locationName": "message",
          "documentation": "<p>A human-readable description of the error.</p>"
        }
      },
      "documentation": "",
      "exception": true,
      "error": {
        "httpStatusCode": 402
      }
    },
    "SharedFileSystemConfiguration": {
      "type": "structure",
      "members": {
        "endpoint": {
          "shape": "__string",
          "locationName": "endpoint",
          "documentation": "<p>The endpoint of the shared file system that is accessed by the studio component resource.</p>"
        },
        "fileSystemId": {
          "shape": "__string",
          "locationName": "fileSystemId",
          "documentation": "<p>The unique identifier for a file system.</p>"
        },
        "linuxMountPoint": {
          "shape": "LinuxMountPoint",
          "locationName": "linuxMountPoint",
          "documentation": "<p>The mount location for a shared file system on a Linux virtual workstation.</p>"
        },
        "shareName": {
          "shape": "__string",
          "locationName": "shareName",
          "documentation": "<p>The name of the file share.</p>"
        },
        "windowsMountDrive": {
          "shape": "WindowsMountDrive",
          "locationName": "windowsMountDrive",
          "documentation": "<p>The mount location for a shared file system on a Windows virtual workstation.</p>"
        }
      },
      "documentation": "<p>The configuration for a shared file storage system that is associated with a studio resource.</p>"
    },
    "StartStudioSSOConfigurationRepairOutput": {
      "type": "structure",
      "members": {
        "studio": {
          "shape": "Studio",
          "locationName": "studio",
          "documentation": "<p>Information about a studio.</p>"
        }
      },
      "documentation": ""
    },
    "StartStudioSSOConfigurationRepairRequest": {
      "type": "structure",
      "members": {
        "clientToken": {
          "shape": "ClientToken",
          "location": "header",
          "locationName": "X-Amz-Client-Token",
          "documentation": "<p>To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.</p>",
          "idempotencyToken": true
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "required": [
        "studioId"
      ]
    },
    "StartStudioSSOConfigurationRepairResponse": {
      "type": "structure",
      "members": {
        "studio": {
          "shape": "Studio",
          "locationName": "studio",
          "documentation": "<p>Information about a studio.</p>"
        }
      }
    },
    "StreamConfiguration": {
      "type": "structure",
      "members": {
        "clipboardMode": {
          "shape": "StreamingClipboardMode",
          "locationName": "clipboardMode",
          "documentation": "<p>Enable or disable the use of the system clipboard to copy and paste between the streaming session and streaming client.</p>"
        },
        "ec2InstanceTypes": {
          "shape": "StreamingInstanceTypeList",
          "locationName": "ec2InstanceTypes",
          "documentation": "<p>The EC2 instance types that users can select from when launching a streaming session with this launch profile.</p>"
        },
        "maxSessionLengthInMinutes": {
          "shape": "StreamConfigurationMaxSessionLengthInMinutes",
          "locationName": "maxSessionLengthInMinutes",
          "documentation": "<p>The length of time, in minutes, that a streaming session can run. After this point, Nimble Studio automatically terminates the session.</p>"
        },
        "streamingImageIds": {
          "shape": "StreamingImageIdList",
          "locationName": "streamingImageIds",
          "documentation": "<p>The streaming images that users can select from when launching a streaming session with this launch profile.</p>"
        }
      },
      "documentation": "<p>A configuration for a streaming session.</p>"
    },
    "StreamConfigurationCreate": {
      "type": "structure",
      "members": {
        "clipboardMode": {
          "shape": "StreamingClipboardMode",
          "locationName": "clipboardMode",
          "documentation": "<p>Enable or disable the use of the system clipboard to copy and paste between the streaming session and streaming client.</p>"
        },
        "ec2InstanceTypes": {
          "shape": "StreamingInstanceTypeList",
          "locationName": "ec2InstanceTypes",
          "documentation": "<p>The EC2 instance types that users can select from when launching a streaming session with this launch profile.</p>"
        },
        "maxSessionLengthInMinutes": {
          "shape": "StreamConfigurationMaxSessionLengthInMinutes",
          "locationName": "maxSessionLengthInMinutes",
          "documentation": "<p>The length of time, in minutes, that a streaming session can run. After this point, Nimble Studio automatically terminates the session.</p>"
        },
        "streamingImageIds": {
          "shape": "StreamingImageIdList",
          "locationName": "streamingImageIds",
          "documentation": "<p>The streaming images that users can select from when launching a streaming session with this launch profile.</p>"
        }
      },
      "documentation": "",
      "required": [
        "clipboardMode",
        "streamingImageIds",
        "ec2InstanceTypes"
      ]
    },
    "StreamConfigurationMaxSessionLengthInMinutes": {
      "type": "integer",
      "documentation": "",
      "min": 1,
      "max": 690
    },
    "StreamingClipboardMode": {
      "type": "string",
      "documentation": "",
      "enum": [
        "ENABLED",
        "DISABLED"
      ]
    },
    "StreamingImage": {
      "type": "structure",
      "members": {
        "arn": {
          "shape": "__string",
          "locationName": "arn",
          "documentation": "<p>The ARN of the resource.</p>"
        },
        "description": {
          "shape": "StreamingImageDescription",
          "locationName": "description",
          "documentation": "<p>A human-readable description of the streaming image.</p>"
        },
        "ec2ImageId": {
          "shape": "EC2ImageId",
          "locationName": "ec2ImageId",
          "documentation": "<p>The ID of an EC2 machine image with which to create the streaming image.</p>"
        },
        "encryptionConfiguration": {
          "shape": "StreamingImageEncryptionConfiguration",
          "locationName": "encryptionConfiguration",
          "documentation": "<p>The encryption configuration.</p>"
        },
        "eulaIds": {
          "shape": "EulaIdList",
          "locationName": "eulaIds",
          "documentation": "<p>The list of EULAs that must be accepted before a Streaming Session can be started using this streaming image.</p>"
        },
        "name": {
          "shape": "StreamingImageName",
          "locationName": "name",
          "documentation": "<p>A friendly name for a streaming image resource.</p>"
        },
        "owner": {
          "shape": "StreamingImageOwner",
          "locationName": "owner",
          "documentation": "<p>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.</p>"
        },
        "platform": {
          "shape": "StreamingImagePlatform",
          "locationName": "platform",
          "documentation": "<p>The platform of the streaming image, either WINDOWS or LINUX.</p>"
        },
        "state": {
          "shape": "StreamingImageState",
          "locationName": "state",
          "documentation": "<p>The current state.</p>"
        },
        "statusCode": {
          "shape": "StreamingImageStatusCode",
          "locationName": "statusCode",
          "documentation": "<p>The status code.</p>"
        },
        "statusMessage": {
          "shape": "__string",
          "locationName": "statusMessage",
          "documentation": "<p>The status message for the streaming image.</p>"
        },
        "streamingImageId": {
          "shape": "StreamingImageId",
          "locationName": "streamingImageId",
          "documentation": "<p>The ID of the streaming image.</p>"
        },
        "tags": {
          "shape": "Tags",
          "locationName": "tags",
          "documentation": "<p>A collection of labels, in the form of key:value pairs, that apply to this resource.</p>"
        }
      },
      "documentation": ""
    },
    "StreamingImageDescription": {
      "type": "string",
      "documentation": "<p>The description.</p>",
      "max": 256
    },
    "StreamingImageEncryptionConfiguration": {
      "type": "structure",
      "members": {
        "keyArn": {
          "shape": "StreamingImageEncryptionConfigurationKeyArn",
          "locationName": "keyArn",
          "documentation": "<p>The ARN for a KMS key that is used to encrypt studio data.</p>"
        },
        "keyType": {
          "shape": "StreamingImageEncryptionConfigurationKeyType",
          "locationName": "keyType",
          "documentation": "<p>The type of KMS key that is used to encrypt studio data.</p>"
        }
      },
      "documentation": "",
      "required": [
        "keyType"
      ]
    },
    "StreamingImageEncryptionConfigurationKeyArn": {
      "type": "string",
      "documentation": "",
      "min": 4,
      "pattern": "^arn:.*"
    },
    "StreamingImageEncryptionConfigurationKeyType": {
      "type": "string",
      "documentation": "<p></p>",
      "enum": [
        "CUSTOMER_MANAGED_KEY"
      ]
    },
    "StreamingImageId": {
      "type": "string",
      "documentation": "",
      "max": 22,
      "pattern": "^[a-zA-Z0-9-_]*$"
    },
    "StreamingImageIdList": {
      "type": "list",
      "documentation": "<p>A list of streaming image IDs that users can select from when launching a streaming session with this launch profile.</p>",
      "max": 20,
      "member": {
        "shape": "StreamingImageId"
      }
    },
    "StreamingImageList": {
      "type": "list",
      "documentation": "",
      "member": {
        "shape": "StreamingImage"
      }
    },
    "StreamingImageName": {
      "type": "string",
      "documentation": "<p>A friendly name for a streaming image resource.</p>",
      "max": 64
    },
    "StreamingImageOwner": {
      "type": "string",
      "documentation": "<p>StreamingImageOwner is the owner of a particular streaming image.</p> <p>This string is either the studioId that contains the streaming image, or the word 'AMAZON' for images provided by Nimble Studio.</p>"
    },
    "StreamingImagePlatform": {
      "type": "string",
      "documentation": "<p>The platform of this Streaming Image, either WINDOWS or LINUX.</p>",
      "pattern": "^[a-zA-Z]*$"
    },
    "StreamingImageSessionId": {
      "type": "string",
      "documentation": "<p>The streaming image session ID.</p>",
      "pattern": "^[A-z0-9-_:]*\\.{1}[A-z0-9-_]*$"
    },
    "StreamingImageState": {
      "type": "string",
      "documentation": "",
      "enum": [
        "CREATE_IN_PROGRESS",
        "READY",
        "DELETE_IN_PROGRESS",
        "DELETED",
        "UPDATE_IN_PROGRESS",
        "UPDATE_FAILED",
        "CREATE_FAILED",
        "DELETE_FAILED"
      ]
    },
    "StreamingImageStatusCode": {
      "type": "string",
      "documentation": "<p>The status code.</p>",
      "enum": [
        "STREAMING_IMAGE_CREATE_IN_PROGRESS",
        "STREAMING_IMAGE_READY",
        "STREAMING_IMAGE_DELETE_IN_PROGRESS",
        "STREAMING_IMAGE_DELETED",
        "STREAMING_IMAGE_UPDATE_IN_PROGRESS",
        "INTERNAL_ERROR"
      ]
    },
    "StreamingInstanceType": {
      "type": "string",
      "documentation": "",
      "enum": [
        "g4dn.xlarge",
        "g4dn.2xlarge",
        "g4dn.4xlarge",
        "g4dn.8xlarge",
        "g4dn.12xlarge",
        "g4dn.16xlarge"
      ]
    },
    "StreamingInstanceTypeList": {
      "type": "list",
      "documentation": "<p>The EC2 instance types that users can select from when launching a streaming session with this launch profile.</p>",
      "min": 1,
      "max": 30,
      "member": {
        "shape": "StreamingInstanceType"
      }
    },
    "StreamingSession": {
      "type": "structure",
      "members": {
        "arn": {
          "shape": "__string",
          "locationName": "arn",
          "documentation": "<p>The ARN of the resource.</p>"
        },
        "createdAt": {
          "shape": "Timestamp",
          "locationName": "createdAt",
          "documentation": "<p>The Unix epoch timestamp in seconds for when the resource was created.</p>"
        },
        "createdBy": {
          "shape": "__string",
          "locationName": "createdBy",
          "documentation": "<p>The user ID of the user that created the streaming session.</p>"
        },
        "ec2InstanceType": {
          "shape": "__string",
          "locationName": "ec2InstanceType",
          "documentation": "<p>The EC2 Instance type used for the streaming session.</p>"
        },
        "launchProfileId": {
          "shape": "__string",
          "locationName": "launchProfileId",
          "documentation": "<p>The ID of the launch profile used to control access from the streaming session.</p>"
        },
        "sessionId": {
          "shape": "StreamingImageSessionId",
          "locationName": "sessionId",
          "documentation": "<p>The session ID.</p>"
        },
        "state": {
          "shape": "StreamingSessionState",
          "locationName": "state",
          "documentation": "<p>The current state.</p>"
        },
        "statusCode": {
          "shape": "StreamingSessionStatusCode",
          "locationName": "statusCode",
          "documentation": "<p>The status code.</p>"
        },
        "statusMessage": {
          "shape": "__string",
          "locationName": "statusMessage",
          "documentation": "<p>The status message for the streaming session.</p>"
        },
        "streamingImageId": {
          "shape": "StreamingImageId",
          "locationName": "streamingImageId",
          "documentation": "<p>The ID of the streaming image.</p>"
        },
        "tags": {
          "shape": "Tags",
          "locationName": "tags",
          "documentation": "<p>A collection of labels, in the form of key:value pairs, that apply to this resource.</p>"
        },
        "terminateAt": {
          "shape": "Timestamp",
          "locationName": "terminateAt",
          "documentation": "<p>The time the streaming session will automatically terminate if not terminated by the user.</p>"
        },
        "updatedAt": {
          "shape": "Timestamp",
          "locationName": "updatedAt",
          "documentation": "<p>The Unix epoch timestamp in seconds for when the resource was updated.</p>"
        },
        "updatedBy": {
          "shape": "__string",
          "locationName": "updatedBy",
          "documentation": "<p>The user ID of the user that most recently updated the resource.</p>"
        }
      },
      "documentation": ""
    },
    "StreamingSessionList": {
      "type": "list",
      "documentation": "",
      "member": {
        "shape": "StreamingSession"
      }
    },
    "StreamingSessionState": {
      "type": "string",
      "documentation": "<p>The streaming session state.</p>",
      "enum": [
        "CREATE_IN_PROGRESS",
        "DELETE_IN_PROGRESS",
        "READY",
        "DELETED",
        "CREATE_FAILED",
        "DELETE_FAILED"
      ]
    },
    "StreamingSessionStatusCode": {
      "type": "string",
      "documentation": "",
      "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"
      ]
    },
    "StreamingSessionStream": {
      "type": "structure",
      "members": {
        "createdAt": {
          "shape": "Timestamp",
          "locationName": "createdAt",
          "documentation": "<p>The Unix epoch timestamp in seconds for when the resource was created.</p>"
        },
        "createdBy": {
          "shape": "__string",
          "locationName": "createdBy",
          "documentation": "<p>The user ID of the user that created the streaming session stream.</p>"
        },
        "expiresAt": {
          "shape": "Timestamp",
          "locationName": "expiresAt",
          "documentation": "<p>The Unix epoch timestamp in seconds for when the resource expires.</p>"
        },
        "state": {
          "shape": "StreamingSessionStreamState",
          "locationName": "state",
          "documentation": "<p>The current state.</p>"
        },
        "statusCode": {
          "shape": "StreamingSessionStreamStatusCode",
          "locationName": "statusCode",
          "documentation": "<p>The streaming session stream status code.</p>"
        },
        "streamId": {
          "shape": "__string",
          "locationName": "streamId",
          "documentation": "<p>The stream ID.</p>"
        },
        "url": {
          "shape": "__string",
          "locationName": "url",
          "documentation": "<p>The URL to connect to this stream using the DCV client.</p>"
        }
      },
      "documentation": ""
    },
    "StreamingSessionStreamExpirationInSeconds": {
      "type": "integer",
      "documentation": "",
      "min": 60,
      "max": 3600
    },
    "StreamingSessionStreamState": {
      "type": "string",
      "documentation": "",
      "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"
      ]
    },
    "Studio": {
      "type": "structure",
      "members": {
        "adminRoleArn": {
          "shape": "__string",
          "locationName": "adminRoleArn",
          "documentation": "<p>The IAM role that studio admins assume when logging in to the Nimble Studio portal.</p>"
        },
        "arn": {
          "shape": "__string",
          "locationName": "arn",
          "documentation": "<p>The Amazon Resource Name (ARN) that is assigned to a studio resource and uniquely identifies it. ARNs are unique across all Regions.</p>"
        },
        "createdAt": {
          "shape": "Timestamp",
          "locationName": "createdAt",
          "documentation": "<p>The Unix epoch timestamp in seconds for when the resource was created.</p>"
        },
        "displayName": {
          "shape": "StudioDisplayName",
          "locationName": "displayName",
          "documentation": "<p>A friendly name for the studio.</p>"
        },
        "homeRegion": {
          "shape": "Region",
          "locationName": "homeRegion",
          "documentation": "<p>The AWS region where the studio resource is located.</p>"
        },
        "ssoClientId": {
          "shape": "__string",
          "locationName": "ssoClientId",
          "documentation": "<p>The AWS SSO application client ID used to integrate with AWS SSO to enable AWS SSO users to log in to Nimble portal.</p>"
        },
        "state": {
          "shape": "StudioState",
          "locationName": "state",
          "documentation": "<p>The current state of the studio resource.</p>"
        },
        "statusCode": {
          "shape": "StudioStatusCode",
          "locationName": "statusCode",
          "documentation": "<p>Status codes that provide additional detail on the studio state.</p>"
        },
        "statusMessage": {
          "shape": "__string",
          "locationName": "statusMessage",
          "documentation": "<p>Additional detail on the studio state.</p>"
        },
        "studioEncryptionConfiguration": {
          "shape": "StudioEncryptionConfiguration",
          "locationName": "studioEncryptionConfiguration",
          "documentation": "<p>Configuration of the encryption method that is used for the studio.</p>"
        },
        "studioId": {
          "shape": "__string",
          "locationName": "studioId",
          "documentation": "<p>The unique identifier for a studio resource. In Nimble Studio, all other resources are contained in a studio resource.</p>"
        },
        "studioName": {
          "shape": "StudioName",
          "locationName": "studioName",
          "documentation": "<p>The name of the studio, as included in the URL when accessing it in the Nimble Studio portal.</p>"
        },
        "studioUrl": {
          "shape": "__string",
          "locationName": "studioUrl",
          "documentation": "<p>The address of the web page for the studio.</p>"
        },
        "tags": {
          "shape": "Tags",
          "locationName": "tags",
          "documentation": "<p>A collection of labels, in the form of key:value pairs, that apply to this resource.</p>"
        },
        "updatedAt": {
          "shape": "Timestamp",
          "locationName": "updatedAt",
          "documentation": "<p>The Unix epoch timestamp in seconds for when the resource was updated.</p>"
        },
        "userRoleArn": {
          "shape": "__string",
          "locationName": "userRoleArn",
          "documentation": "<p>The IAM role that studio users assume when logging in to the Nimble Studio portal.</p>"
        }
      },
      "documentation": ""
    },
    "StudioComponent": {
      "type": "structure",
      "members": {
        "arn": {
          "shape": "__string",
          "locationName": "arn",
          "documentation": "<p>The ARN of the resource.</p>"
        },
        "configuration": {
          "shape": "StudioComponentConfiguration",
          "locationName": "configuration",
          "documentation": "<p>The configuration of the studio component, based on component type.</p>"
        },
        "createdAt": {
          "shape": "Timestamp",
          "locationName": "createdAt",
          "documentation": "<p>The Unix epoch timestamp in seconds for when the resource was created.</p>"
        },
        "createdBy": {
          "shape": "__string",
          "locationName": "createdBy",
          "documentation": "<p>The user ID of the user that created the studio component.</p>"
        },
        "description": {
          "shape": "StudioComponentDescription",
          "locationName": "description",
          "documentation": "<p>A human-readable description for the studio component resource.</p>"
        },
        "ec2SecurityGroupIds": {
          "shape": "StudioComponentSecurityGroupIdList",
          "locationName": "ec2SecurityGroupIds",
          "documentation": "<p>The EC2 security groups that control access to the studio component.</p>"
        },
        "initializationScripts": {
          "shape": "StudioComponentInitializationScriptList",
          "locationName": "initializationScripts",
          "documentation": "<p>Initialization scripts for studio components.</p>"
        },
        "name": {
          "shape": "StudioComponentName",
          "locationName": "name",
          "documentation": "<p>A friendly name for the studio component resource.</p>"
        },
        "scriptParameters": {
          "shape": "StudioComponentScriptParameterKeyValueList",
          "locationName": "scriptParameters",
          "documentation": "<p>Parameters for the studio component scripts.</p>"
        },
        "state": {
          "shape": "StudioComponentState",
          "locationName": "state",
          "documentation": "<p>The current state.</p>"
        },
        "statusCode": {
          "shape": "StudioComponentStatusCode",
          "locationName": "statusCode",
          "documentation": "<p>The status code.</p>"
        },
        "statusMessage": {
          "shape": "__string",
          "locationName": "statusMessage",
          "documentation": "<p>The status message for the studio component.</p>"
        },
        "studioComponentId": {
          "shape": "StudioComponentId",
          "locationName": "studioComponentId",
          "documentation": "<p>The unique identifier for a studio component resource.</p>"
        },
        "subtype": {
          "shape": "StudioComponentSubtype",
          "locationName": "subtype",
          "documentation": "<p>The specific subtype of a studio component.</p>"
        },
        "tags": {
          "shape": "Tags",
          "locationName": "tags",
          "documentation": "<p>A collection of labels, in the form of key:value pairs, that apply to this resource.</p>"
        },
        "type": {
          "shape": "StudioComponentType",
          "locationName": "type",
          "documentation": "<p>The type of the studio component.</p>"
        },
        "updatedAt": {
          "shape": "Timestamp",
          "locationName": "updatedAt",
          "documentation": "<p>The Unix epoch timestamp in seconds for when the resource was updated.</p>"
        },
        "updatedBy": {
          "shape": "__string",
          "locationName": "updatedBy",
          "documentation": "<p>The user ID of the user that most recently updated the resource.</p>"
        }
      },
      "documentation": "<p>A network that is used by a studio’s users and workflows, including render farm, Active Directory, licensing, and file system.</p>"
    },
    "StudioComponentConfiguration": {
      "type": "structure",
      "members": {
        "activeDirectoryConfiguration": {
          "shape": "ActiveDirectoryConfiguration",
          "locationName": "activeDirectoryConfiguration",
          "documentation": "<p>The configuration for a Microsoft Active Directory (Microsoft AD) studio resource.</p>"
        },
        "computeFarmConfiguration": {
          "shape": "ComputeFarmConfiguration",
          "locationName": "computeFarmConfiguration",
          "documentation": "<p>The configuration for a render farm that is associated with a studio resource.</p>"
        },
        "licenseServiceConfiguration": {
          "shape": "LicenseServiceConfiguration",
          "locationName": "licenseServiceConfiguration",
          "documentation": "<p>The configuration for a license service that is associated with a studio resource.</p>"
        },
        "sharedFileSystemConfiguration": {
          "shape": "SharedFileSystemConfiguration",
          "locationName": "sharedFileSystemConfiguration",
          "documentation": "<p>The configuration for a shared file storage system that is associated with a studio resource.</p>"
        }
      },
      "documentation": "<p>The configuration of the studio component, based on component type.</p>",
      "union": true
    },
    "StudioComponentDescription": {
      "type": "string",
      "documentation": "",
      "max": 256
    },
    "StudioComponentId": {
      "type": "string",
      "max": 22,
      "pattern": "^[a-zA-Z0-9-_]*$"
    },
    "StudioComponentInitializationScript": {
      "type": "structure",
      "members": {
        "launchProfileProtocolVersion": {
          "shape": "LaunchProfileProtocolVersion",
          "locationName": "launchProfileProtocolVersion",
          "documentation": "<p>The version number of the protocol that is used by the launch profile. The only valid version is \"2021-03-31\".</p>"
        },
        "platform": {
          "shape": "LaunchProfilePlatform",
          "locationName": "platform",
          "documentation": "<p>The platform of the initialization script, either WINDOWS or LINUX.</p>"
        },
        "runContext": {
          "shape": "StudioComponentInitializationScriptRunContext",
          "locationName": "runContext",
          "documentation": "<p>The method to use when running the initialization script.</p>"
        },
        "script": {
          "shape": "StudioComponentInitializationScriptContent",
          "locationName": "script",
          "documentation": "<p>The initialization script.</p>"
        }
      },
      "documentation": "<p>Initialization scripts for studio components.</p>"
    },
    "StudioComponentInitializationScriptContent": {
      "type": "string",
      "documentation": "",
      "min": 1,
      "max": 5120
    },
    "StudioComponentInitializationScriptList": {
      "type": "list",
      "documentation": "",
      "member": {
        "shape": "StudioComponentInitializationScript"
      }
    },
    "StudioComponentInitializationScriptRunContext": {
      "type": "string",
      "documentation": "",
      "enum": [
        "SYSTEM_INITIALIZATION",
        "USER_INITIALIZATION"
      ]
    },
    "StudioComponentList": {
      "type": "list",
      "documentation": "",
      "max": 50,
      "member": {
        "shape": "StudioComponent"
      }
    },
    "StudioComponentName": {
      "type": "string",
      "documentation": "",
      "max": 64
    },
    "StudioComponentScriptParameterKeyValueList": {
      "type": "list",
      "documentation": "",
      "max": 30,
      "member": {
        "shape": "ScriptParameterKeyValue"
      }
    },
    "StudioComponentSecurityGroupIdList": {
      "type": "list",
      "documentation": "",
      "min": 1,
      "max": 30,
      "member": {
        "shape": "SecurityGroupId"
      }
    },
    "StudioComponentState": {
      "type": "string",
      "documentation": "<p>The current state of the studio component resource.</p> <p>While a studio component is being created, modified, or deleted, its state will equal \"CREATE_IN_PROGRESS\", \"UPDATE_IN_PROGRESS\", or \"DELETE_IN_PROGRESS\"</p> <p>These are called 'transition states'.</p> <p>No modifications may be made to the studio component while it is in a transition state.</p> <p>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.</p> <p>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.</p> <p>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.</p>",
      "enum": [
        "CREATE_IN_PROGRESS",
        "READY",
        "UPDATE_IN_PROGRESS",
        "DELETE_IN_PROGRESS",
        "DELETED",
        "DELETE_FAILED",
        "CREATE_FAILED",
        "UPDATE_FAILED"
      ]
    },
    "StudioComponentStatusCode": {
      "type": "string",
      "documentation": "<p>The current status of the studio component resource.</p> <p>When the resource is in the 'READY' state, the status code signals what the last mutation made to the resource was.</p> <p>When the resource is in a CREATE_FAILED/UPDATE_FAILED/DELETE_FAILED state, the status code signals what went wrong and why the mutation failed.</p>",
      "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",
      "documentation": "",
      "enum": [
        "AWS_MANAGED_MICROSOFT_AD",
        "AMAZON_FSX_FOR_WINDOWS",
        "AMAZON_FSX_FOR_LUSTRE",
        "CUSTOM"
      ]
    },
    "StudioComponentSummary": {
      "type": "structure",
      "members": {
        "createdAt": {
          "shape": "Timestamp",
          "locationName": "createdAt",
          "documentation": "<p>The Unix epoch timestamp in seconds for when the resource was created.</p>"
        },
        "createdBy": {
          "shape": "__string",
          "locationName": "createdBy",
          "documentation": "<p>The user ID of the user that created the studio component.</p>"
        },
        "description": {
          "shape": "StudioComponentDescription",
          "locationName": "description",
          "documentation": "<p>The description.</p>"
        },
        "name": {
          "shape": "StudioComponentName",
          "locationName": "name",
          "documentation": "<p>The name for the studio component.</p>"
        },
        "studioComponentId": {
          "shape": "StudioComponentId",
          "locationName": "studioComponentId",
          "documentation": "<p>The unique identifier for a studio component resource.</p>"
        },
        "subtype": {
          "shape": "StudioComponentSubtype",
          "locationName": "subtype",
          "documentation": "<p>The specific subtype of a studio component.</p>"
        },
        "type": {
          "shape": "StudioComponentType",
          "locationName": "type",
          "documentation": "<p>The type of the studio component.</p>"
        },
        "updatedAt": {
          "shape": "Timestamp",
          "locationName": "updatedAt",
          "documentation": "<p>The Unix epoch timestamp in seconds for when the resource was updated.</p>"
        },
        "updatedBy": {
          "shape": "__string",
          "locationName": "updatedBy",
          "documentation": "<p>The user ID of the user that most recently updated the resource.</p>"
        }
      },
      "documentation": "<p></p>"
    },
    "StudioComponentSummaryList": {
      "type": "list",
      "documentation": "",
      "member": {
        "shape": "StudioComponentSummary"
      }
    },
    "StudioComponentType": {
      "type": "string",
      "documentation": "",
      "enum": [
        "ACTIVE_DIRECTORY",
        "SHARED_FILE_SYSTEM",
        "COMPUTE_FARM",
        "LICENSE_SERVICE",
        "CUSTOM"
      ]
    },
    "StudioDisplayName": {
      "type": "string",
      "max": 64
    },
    "StudioEncryptionConfiguration": {
      "type": "structure",
      "members": {
        "keyArn": {
          "shape": "StudioEncryptionConfigurationKeyArn",
          "locationName": "keyArn",
          "documentation": "<p>The ARN for a KMS key that is used to encrypt studio data.</p>"
        },
        "keyType": {
          "shape": "StudioEncryptionConfigurationKeyType",
          "locationName": "keyType",
          "documentation": "<p>The type of KMS key that is used to encrypt studio data.</p>"
        }
      },
      "documentation": "<p>Configuration of the encryption method that is used for the studio.</p>",
      "required": [
        "keyType"
      ]
    },
    "StudioEncryptionConfigurationKeyArn": {
      "type": "string",
      "documentation": "<p>The Amazon Resource Name (ARN) for a KMS key that is used to encrypt studio data.</p>",
      "min": 4,
      "pattern": "^arn:.*"
    },
    "StudioEncryptionConfigurationKeyType": {
      "type": "string",
      "documentation": "<p>The type of KMS key that is used to encrypt studio data.</p>",
      "enum": [
        "AWS_OWNED_KEY",
        "CUSTOMER_MANAGED_KEY"
      ]
    },
    "StudioList": {
      "type": "list",
      "documentation": "",
      "member": {
        "shape": "Studio"
      }
    },
    "StudioMembership": {
      "type": "structure",
      "members": {
        "identityStoreId": {
          "shape": "__string",
          "locationName": "identityStoreId",
          "documentation": "<p>The ID of the identity store.</p>"
        },
        "persona": {
          "shape": "StudioPersona",
          "locationName": "persona",
          "documentation": "<p>The persona.</p>"
        },
        "principalId": {
          "shape": "__string",
          "locationName": "principalId",
          "documentation": "<p>The principal ID.</p>"
        }
      },
      "documentation": ""
    },
    "StudioMembershipList": {
      "type": "list",
      "documentation": "",
      "max": 20,
      "member": {
        "shape": "StudioMembership"
      }
    },
    "StudioName": {
      "type": "string",
      "documentation": "",
      "min": 3,
      "max": 64,
      "pattern": "^[a-z0-9]*$"
    },
    "StudioPersona": {
      "type": "string",
      "documentation": "",
      "enum": [
        "ADMINISTRATOR"
      ]
    },
    "StudioState": {
      "type": "string",
      "documentation": "",
      "enum": [
        "CREATE_IN_PROGRESS",
        "READY",
        "UPDATE_IN_PROGRESS",
        "DELETE_IN_PROGRESS",
        "DELETED",
        "DELETE_FAILED",
        "CREATE_FAILED",
        "UPDATE_FAILED"
      ]
    },
    "StudioStatusCode": {
      "type": "string",
      "documentation": "<p>The status code.</p>",
      "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"
      ]
    },
    "TagResourceInput": {
      "type": "structure",
      "members": {
        "tags": {
          "shape": "Tags",
          "locationName": "tags",
          "documentation": "<p>A collection of labels, in the form of key:value pairs, that apply to this resource.</p>"
        }
      },
      "documentation": "<p></p>"
    },
    "TagResourceRequest": {
      "type": "structure",
      "members": {
        "resourceArn": {
          "shape": "__string",
          "location": "uri",
          "locationName": "resourceArn",
          "documentation": "<p>The ARN of the target resource for tagging operations.</p>"
        },
        "tags": {
          "shape": "Tags",
          "locationName": "tags",
          "documentation": "<p>A collection of labels, in the form of key:value pairs, that apply to this resource.</p>"
        }
      },
      "documentation": "<p>The ARN for the role that manages access.</p>",
      "required": [
        "resourceArn"
      ]
    },
    "TagResourceResponse": {
      "type": "structure",
      "members": {}
    },
    "Tags": {
      "type": "map",
      "documentation": "",
      "key": {
        "shape": "__string"
      },
      "value": {
        "shape": "__string"
      }
    },
    "ThrottlingException": {
      "type": "structure",
      "members": {
        "code": {
          "shape": "__string",
          "locationName": "code",
          "documentation": "<p>A more specific error code.</p>"
        },
        "context": {
          "shape": "ExceptionContext",
          "locationName": "context",
          "documentation": "<p>The exception context.</p>"
        },
        "message": {
          "shape": "__string",
          "locationName": "message",
          "documentation": "<p>A human-readable description of the error.</p>"
        }
      },
      "documentation": "",
      "exception": true,
      "error": {
        "httpStatusCode": 429
      }
    },
    "Timestamp": {
      "type": "timestamp",
      "documentation": "",
      "timestampFormat": "iso8601"
    },
    "UntagResourceRequest": {
      "type": "structure",
      "members": {
        "resourceArn": {
          "shape": "__string",
          "location": "uri",
          "locationName": "resourceArn",
          "documentation": "<p>The ARN of the target resource for tagging operations.</p>"
        },
        "tagKeys": {
          "shape": "multiValueQueryStringList",
          "location": "querystring",
          "locationName": "tagKeys",
          "documentation": "<p>An array of tag keys to delete.</p>"
        }
      },
      "required": [
        "tagKeys",
        "resourceArn"
      ]
    },
    "UntagResourceResponse": {
      "type": "structure",
      "members": {}
    },
    "UpdateLaunchProfileInput": {
      "type": "structure",
      "members": {
        "description": {
          "shape": "LaunchProfileDescription",
          "locationName": "description",
          "documentation": "<p>The description.</p>"
        },
        "launchProfileProtocolVersions": {
          "shape": "LaunchProfileProtocolVersionList",
          "locationName": "launchProfileProtocolVersions",
          "documentation": "<p>The version number of the protocol that is used by the launch profile. The only valid version is \"2021-03-31\".</p>"
        },
        "name": {
          "shape": "LaunchProfileName",
          "locationName": "name",
          "documentation": "<p>The name for the launch profile.</p>"
        },
        "streamConfiguration": {
          "shape": "StreamConfigurationCreate",
          "locationName": "streamConfiguration",
          "documentation": "<p>A configuration for a streaming session.</p>"
        },
        "studioComponentIds": {
          "shape": "LaunchProfileStudioComponentIdList",
          "locationName": "studioComponentIds",
          "documentation": "<p>Unique identifiers for a collection of studio components that can be used with this launch profile.</p>"
        }
      },
      "documentation": ""
    },
    "UpdateLaunchProfileMemberInput": {
      "type": "structure",
      "members": {
        "persona": {
          "shape": "LaunchProfilePersona",
          "locationName": "persona",
          "documentation": "<p>The persona.</p>"
        }
      },
      "documentation": "<p></p>",
      "required": [
        "persona"
      ]
    },
    "UpdateLaunchProfileMemberRequest": {
      "type": "structure",
      "members": {
        "clientToken": {
          "shape": "ClientToken",
          "location": "header",
          "locationName": "X-Amz-Client-Token",
          "documentation": "<p>To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.</p>",
          "idempotencyToken": true
        },
        "launchProfileId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "launchProfileId",
          "documentation": "<p>The launch profile ID.</p>"
        },
        "persona": {
          "shape": "LaunchProfilePersona",
          "locationName": "persona",
          "documentation": "<p>The persona.</p>"
        },
        "principalId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "principalId",
          "documentation": "<p>The principal ID.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "documentation": "<p>The principal ID.</p>",
      "required": [
        "studioId",
        "persona",
        "principalId",
        "launchProfileId"
      ]
    },
    "UpdateLaunchProfileMemberResponse": {
      "type": "structure",
      "members": {
        "member": {
          "shape": "LaunchProfileMembership",
          "locationName": "member",
          "documentation": "<p>The member.</p>"
        }
      }
    },
    "UpdateLaunchProfileOutput": {
      "type": "structure",
      "members": {
        "launchProfile": {
          "shape": "LaunchProfile",
          "locationName": "launchProfile",
          "documentation": "<p>The launch profile.</p>"
        }
      },
      "documentation": ""
    },
    "UpdateLaunchProfileRequest": {
      "type": "structure",
      "members": {
        "clientToken": {
          "shape": "ClientToken",
          "location": "header",
          "locationName": "X-Amz-Client-Token",
          "documentation": "<p>To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.</p>",
          "idempotencyToken": true
        },
        "description": {
          "shape": "LaunchProfileDescription",
          "locationName": "description",
          "documentation": "<p>The description.</p>"
        },
        "launchProfileId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "launchProfileId",
          "documentation": "<p>The launch profile ID.</p>"
        },
        "launchProfileProtocolVersions": {
          "shape": "LaunchProfileProtocolVersionList",
          "locationName": "launchProfileProtocolVersions",
          "documentation": "<p>The version number of the protocol that is used by the launch profile. The only valid version is \"2021-03-31\".</p>"
        },
        "name": {
          "shape": "LaunchProfileName",
          "locationName": "name",
          "documentation": "<p>The name for the launch profile.</p>"
        },
        "streamConfiguration": {
          "shape": "StreamConfigurationCreate",
          "locationName": "streamConfiguration",
          "documentation": "<p>A configuration for a streaming session.</p>"
        },
        "studioComponentIds": {
          "shape": "LaunchProfileStudioComponentIdList",
          "locationName": "studioComponentIds",
          "documentation": "<p>Unique identifiers for a collection of studio components that can be used with this launch profile.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "documentation": "<p>The launch profile ID.</p>",
      "required": [
        "studioId",
        "launchProfileId"
      ]
    },
    "UpdateLaunchProfileResponse": {
      "type": "structure",
      "members": {
        "launchProfile": {
          "shape": "LaunchProfile",
          "locationName": "launchProfile",
          "documentation": "<p>The launch profile.</p>"
        }
      }
    },
    "UpdateStreamingImageInput": {
      "type": "structure",
      "members": {
        "description": {
          "shape": "StreamingImageDescription",
          "locationName": "description",
          "documentation": "<p>The description.</p>"
        },
        "name": {
          "shape": "StreamingImageName",
          "locationName": "name",
          "documentation": "<p>The name for the streaming image.</p>"
        }
      },
      "documentation": ""
    },
    "UpdateStreamingImageOutput": {
      "type": "structure",
      "members": {
        "streamingImage": {
          "shape": "StreamingImage",
          "locationName": "streamingImage",
          "documentation": "<p></p>"
        }
      },
      "documentation": "<p></p>"
    },
    "UpdateStreamingImageRequest": {
      "type": "structure",
      "members": {
        "clientToken": {
          "shape": "ClientToken",
          "location": "header",
          "locationName": "X-Amz-Client-Token",
          "documentation": "<p>To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.</p>",
          "idempotencyToken": true
        },
        "description": {
          "shape": "StreamingImageDescription",
          "locationName": "description",
          "documentation": "<p>The description.</p>"
        },
        "name": {
          "shape": "StreamingImageName",
          "locationName": "name",
          "documentation": "<p>The name for the streaming image.</p>"
        },
        "streamingImageId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "streamingImageId",
          "documentation": "<p>The streaming image ID.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        }
      },
      "documentation": "<p>The streaming image ID.</p>",
      "required": [
        "studioId",
        "streamingImageId"
      ]
    },
    "UpdateStreamingImageResponse": {
      "type": "structure",
      "members": {
        "streamingImage": {
          "shape": "StreamingImage",
          "locationName": "streamingImage",
          "documentation": "<p></p>"
        }
      }
    },
    "UpdateStudioComponentInput": {
      "type": "structure",
      "members": {
        "configuration": {
          "shape": "StudioComponentConfiguration",
          "locationName": "configuration",
          "documentation": "<p>The configuration of the studio component, based on component type.</p>"
        },
        "description": {
          "shape": "StudioComponentDescription",
          "locationName": "description",
          "documentation": "<p>The description.</p>"
        },
        "ec2SecurityGroupIds": {
          "shape": "StudioComponentSecurityGroupIdList",
          "locationName": "ec2SecurityGroupIds",
          "documentation": "<p>The EC2 security groups that control access to the studio component.</p>"
        },
        "initializationScripts": {
          "shape": "StudioComponentInitializationScriptList",
          "locationName": "initializationScripts",
          "documentation": "<p>Initialization scripts for studio components.</p>"
        },
        "name": {
          "shape": "StudioComponentName",
          "locationName": "name",
          "documentation": "<p>The name for the studio component.</p>"
        },
        "scriptParameters": {
          "shape": "StudioComponentScriptParameterKeyValueList",
          "locationName": "scriptParameters",
          "documentation": "<p>Parameters for the studio component scripts.</p>"
        },
        "subtype": {
          "shape": "StudioComponentSubtype",
          "locationName": "subtype",
          "documentation": "<p>The specific subtype of a studio component.</p>"
        },
        "type": {
          "shape": "StudioComponentType",
          "locationName": "type",
          "documentation": "<p>The type of the studio component.</p>"
        }
      },
      "documentation": ""
    },
    "UpdateStudioComponentOutput": {
      "type": "structure",
      "members": {
        "studioComponent": {
          "shape": "StudioComponent",
          "locationName": "studioComponent",
          "documentation": "<p>Information about the studio component.</p>"
        }
      },
      "documentation": ""
    },
    "UpdateStudioComponentRequest": {
      "type": "structure",
      "members": {
        "clientToken": {
          "shape": "ClientToken",
          "location": "header",
          "locationName": "X-Amz-Client-Token",
          "documentation": "<p>To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.</p>",
          "idempotencyToken": true
        },
        "configuration": {
          "shape": "StudioComponentConfiguration",
          "locationName": "configuration",
          "documentation": "<p>The configuration of the studio component, based on component type.</p>"
        },
        "description": {
          "shape": "StudioComponentDescription",
          "locationName": "description",
          "documentation": "<p>The description.</p>"
        },
        "ec2SecurityGroupIds": {
          "shape": "StudioComponentSecurityGroupIdList",
          "locationName": "ec2SecurityGroupIds",
          "documentation": "<p>The EC2 security groups that control access to the studio component.</p>"
        },
        "initializationScripts": {
          "shape": "StudioComponentInitializationScriptList",
          "locationName": "initializationScripts",
          "documentation": "<p>Initialization scripts for studio components.</p>"
        },
        "name": {
          "shape": "StudioComponentName",
          "locationName": "name",
          "documentation": "<p>The name for the studio component.</p>"
        },
        "scriptParameters": {
          "shape": "StudioComponentScriptParameterKeyValueList",
          "locationName": "scriptParameters",
          "documentation": "<p>Parameters for the studio component scripts.</p>"
        },
        "studioComponentId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioComponentId",
          "documentation": "<p>The studio component ID.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        },
        "subtype": {
          "shape": "StudioComponentSubtype",
          "locationName": "subtype",
          "documentation": "<p>The specific subtype of a studio component.</p>"
        },
        "type": {
          "shape": "StudioComponentType",
          "locationName": "type",
          "documentation": "<p>The type of the studio component.</p>"
        }
      },
      "documentation": "<p>The studio component ID.</p>",
      "required": [
        "studioId",
        "studioComponentId"
      ]
    },
    "UpdateStudioComponentResponse": {
      "type": "structure",
      "members": {
        "studioComponent": {
          "shape": "StudioComponent",
          "locationName": "studioComponent",
          "documentation": "<p>Information about the studio component.</p>"
        }
      }
    },
    "UpdateStudioInput": {
      "type": "structure",
      "members": {
        "adminRoleArn": {
          "shape": "__string",
          "locationName": "adminRoleArn",
          "documentation": "<p>The IAM role that Studio Admins will assume when logging in to the Nimble Studio portal.</p>"
        },
        "displayName": {
          "shape": "StudioDisplayName",
          "locationName": "displayName",
          "documentation": "<p>A friendly name for the studio.</p>"
        },
        "userRoleArn": {
          "shape": "__string",
          "locationName": "userRoleArn",
          "documentation": "<p>The IAM role that Studio Users will assume when logging in to the Nimble Studio portal.</p>"
        }
      },
      "documentation": ""
    },
    "UpdateStudioOutput": {
      "type": "structure",
      "members": {
        "studio": {
          "shape": "Studio",
          "locationName": "studio",
          "documentation": "<p>Information about a studio.</p>"
        }
      },
      "documentation": ""
    },
    "UpdateStudioRequest": {
      "type": "structure",
      "members": {
        "adminRoleArn": {
          "shape": "__string",
          "locationName": "adminRoleArn",
          "documentation": "<p>The IAM role that Studio Admins will assume when logging in to the Nimble Studio portal.</p>"
        },
        "clientToken": {
          "shape": "ClientToken",
          "location": "header",
          "locationName": "X-Amz-Client-Token",
          "documentation": "<p>To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.</p>",
          "idempotencyToken": true
        },
        "displayName": {
          "shape": "StudioDisplayName",
          "locationName": "displayName",
          "documentation": "<p>A friendly name for the studio.</p>"
        },
        "studioId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "studioId",
          "documentation": "<p>The studio ID.</p>"
        },
        "userRoleArn": {
          "shape": "__string",
          "locationName": "userRoleArn",
          "documentation": "<p>The IAM role that Studio Users will assume when logging in to the Nimble Studio portal.</p>"
        }
      },
      "documentation": "<p>The studio ID.</p>",
      "required": [
        "studioId"
      ]
    },
    "UpdateStudioResponse": {
      "type": "structure",
      "members": {
        "studio": {
          "shape": "Studio",
          "locationName": "studio",
          "documentation": "<p>Information about a studio.</p>"
        }
      }
    },
    "ValidationException": {
      "type": "structure",
      "members": {
        "code": {
          "shape": "__string",
          "locationName": "code",
          "documentation": "<p>A more specific error code.</p>"
        },
        "context": {
          "shape": "ExceptionContext",
          "locationName": "context",
          "documentation": "<p>The exception context.</p>"
        },
        "message": {
          "shape": "__string",
          "locationName": "message",
          "documentation": "<p>A human-readable description of the error.</p>"
        }
      },
      "documentation": "",
      "exception": true,
      "error": {
        "httpStatusCode": 400
      }
    },
    "WindowsMountDrive": {
      "type": "string",
      "documentation": "",
      "pattern": "^[A-Z]$"
    },
    "__boolean": {
      "type": "boolean"
    },
    "__double": {
      "type": "double"
    },
    "__integer": {
      "type": "integer"
    },
    "__listOf__string": {
      "type": "list",
      "member": {
        "shape": "__string"
      }
    },
    "__long": {
      "type": "long"
    },
    "__string": {
      "type": "string"
    },
    "__timestampIso8601": {
      "type": "timestamp",
      "timestampFormat": "iso8601"
    },
    "__timestampUnix": {
      "type": "timestamp",
      "timestampFormat": "unixTimestamp"
    },
    "ClientToken": {
      "type": "string",
      "min": 1,
      "max": 64
    },
    "multiValueQueryStringList": {
      "type": "list",
      "member": {
        "shape": "__string"
      }
    }
  }
}
