{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2016-12-01",
    "endpointPrefix":"appstream2",
    "jsonVersion":"1.1",
    "protocol":"json",
    "serviceFullName":"Amazon AppStream",
    "signatureVersion":"v4",
    "signingName":"appstream",
    "targetPrefix":"PhotonAdminProxyService",
    "uid":"appstream-2016-12-01"
  },
  "operations":{
    "AssociateFleet":{
      "name":"AssociateFleet",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"AssociateFleetRequest"},
      "output":{"shape":"AssociateFleetResult"},
      "errors":[
        {"shape":"LimitExceededException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>Associate a fleet to a stack.</p>"
    },
    "CreateFleet":{
      "name":"CreateFleet",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateFleetRequest"},
      "output":{"shape":"CreateFleetResult"},
      "errors":[
        {"shape":"ResourceAlreadyExistsException"},
        {"shape":"ResourceNotAvailableException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"LimitExceededException"},
        {"shape":"InvalidRoleException"}
      ],
      "documentation":"<p>Creates a new fleet.</p>"
    },
    "CreateStack":{
      "name":"CreateStack",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateStackRequest"},
      "output":{"shape":"CreateStackResult"},
      "errors":[
        {"shape":"LimitExceededException"},
        {"shape":"ResourceAlreadyExistsException"}
      ],
      "documentation":"<p>Create a new stack.</p>"
    },
    "CreateStreamingURL":{
      "name":"CreateStreamingURL",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateStreamingURLRequest"},
      "output":{"shape":"CreateStreamingURLResult"},
      "errors":[
        {"shape":"ResourceNotFoundException"},
        {"shape":"ResourceNotAvailableException"},
        {"shape":"OperationNotPermittedException"}
      ],
      "documentation":"<p>Creates a URL to start an AppStream 2.0 streaming session for a user. By default, the URL is valid only for 1 minute from the time that it is generated.</p>"
    },
    "DeleteFleet":{
      "name":"DeleteFleet",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteFleetRequest"},
      "output":{"shape":"DeleteFleetResult"},
      "errors":[
        {"shape":"ResourceInUseException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>Deletes a fleet.</p>"
    },
    "DeleteStack":{
      "name":"DeleteStack",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteStackRequest"},
      "output":{"shape":"DeleteStackResult"},
      "errors":[
        {"shape":"ResourceInUseException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>Deletes the stack. After this operation completes, the environment can no longer be activated, and any reservations made for the stack are released.</p>"
    },
    "DescribeFleets":{
      "name":"DescribeFleets",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeFleetsRequest"},
      "output":{"shape":"DescribeFleetsResult"},
      "errors":[
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>If fleet names are provided, this operation describes the specified fleets; otherwise, all the fleets in the account are described.</p>"
    },
    "DescribeImages":{
      "name":"DescribeImages",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeImagesRequest"},
      "output":{"shape":"DescribeImagesResult"},
      "errors":[
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>Describes the images. If a list of names is not provided, all images in your account are returned. This operation does not return a paginated result.</p>"
    },
    "DescribeSessions":{
      "name":"DescribeSessions",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeSessionsRequest"},
      "output":{"shape":"DescribeSessionsResult"},
      "documentation":"<p>Describes the streaming sessions for a stack and a fleet. If a user ID is provided, this operation returns streaming sessions for only that user. Pass this value for the <code>nextToken</code> parameter in a subsequent call to this operation to retrieve the next set of items.</p>"
    },
    "DescribeStacks":{
      "name":"DescribeStacks",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DescribeStacksRequest"},
      "output":{"shape":"DescribeStacksResult"},
      "errors":[
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>If stack names are not provided, this operation describes the specified stacks; otherwise, all stacks in the account are described. Pass the <code>nextToken</code> value in a subsequent call to this operation to retrieve the next set of items.</p>"
    },
    "DisassociateFleet":{
      "name":"DisassociateFleet",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DisassociateFleetRequest"},
      "output":{"shape":"DisassociateFleetResult"},
      "errors":[
        {"shape":"ResourceInUseException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>Disassociates a fleet from a stack.</p>"
    },
    "ExpireSession":{
      "name":"ExpireSession",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ExpireSessionRequest"},
      "output":{"shape":"ExpireSessionResult"},
      "documentation":"<p>This operation immediately stops a streaming session.</p>"
    },
    "ListAssociatedFleets":{
      "name":"ListAssociatedFleets",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListAssociatedFleetsRequest"},
      "output":{"shape":"ListAssociatedFleetsResult"},
      "documentation":"<p>Lists all fleets associated with the stack.</p>"
    },
    "ListAssociatedStacks":{
      "name":"ListAssociatedStacks",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListAssociatedStacksRequest"},
      "output":{"shape":"ListAssociatedStacksResult"},
      "documentation":"<p>Lists all stacks to which the specified fleet is associated.</p>"
    },
    "StartFleet":{
      "name":"StartFleet",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StartFleetRequest"},
      "output":{"shape":"StartFleetResult"},
      "errors":[
        {"shape":"ResourceNotFoundException"},
        {"shape":"LimitExceededException"}
      ],
      "documentation":"<p>Starts a fleet.</p>"
    },
    "StopFleet":{
      "name":"StopFleet",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StopFleetRequest"},
      "output":{"shape":"StopFleetResult"},
      "errors":[
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>Stops a fleet.</p>"
    },
    "UpdateFleet":{
      "name":"UpdateFleet",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateFleetRequest"},
      "output":{"shape":"UpdateFleetResult"},
      "errors":[
        {"shape":"ResourceInUseException"},
        {"shape":"LimitExceededException"},
        {"shape":"InvalidRoleException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>Updates an existing fleet. All the attributes except the fleet name can be updated in the <b>STOPPED</b> state. Only <b>ComputeCapacity</b> and <b>ImageName</b> can be updated in any other state. </p>"
    },
    "UpdateStack":{
      "name":"UpdateStack",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateStackRequest"},
      "output":{"shape":"UpdateStackResult"},
      "errors":[
        {"shape":"ResourceNotFoundException"},
        {"shape":"ResourceInUseException"}
      ],
      "documentation":"<p>Updates the specified fields in the stack with the specified name.</p>"
    }
  },
  "shapes":{
    "Application":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"String",
          "documentation":"<p>The unique identifier for the application.</p>"
        },
        "DisplayName":{
          "shape":"String",
          "documentation":"<p>The name of the application shown to the end users.</p>"
        },
        "IconURL":{
          "shape":"String",
          "documentation":"<p>The URL for the application icon. This URL may be time-limited.</p>"
        },
        "LaunchPath":{
          "shape":"String",
          "documentation":"<p>The path to the application executable in the instance.</p>"
        },
        "LaunchParameters":{
          "shape":"String",
          "documentation":"<p>A list of arguments that are passed to the application at launch.</p>"
        },
        "Enabled":{
          "shape":"Boolean",
          "documentation":"<p>An application can be disabled after image creation if there is a problem.</p>"
        },
        "Metadata":{
          "shape":"Metadata",
          "documentation":"<p>Additional attributes that describes the application.</p>"
        }
      },
      "documentation":"<p>An entry for a single application in the application catalog.</p>"
    },
    "Applications":{
      "type":"list",
      "member":{"shape":"Application"}
    },
    "Arn":{
      "type":"string",
      "pattern":"^arn:aws:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$"
    },
    "AssociateFleetRequest":{
      "type":"structure",
      "required":[
        "FleetName",
        "StackName"
      ],
      "members":{
        "FleetName":{
          "shape":"String",
          "documentation":"<p>The name of the fleet to associate.</p>"
        },
        "StackName":{
          "shape":"String",
          "documentation":"<p>The name of the stack to which the fleet is associated.</p>"
        }
      }
    },
    "AssociateFleetResult":{
      "type":"structure",
      "members":{
      }
    },
    "Boolean":{"type":"boolean"},
    "ComputeCapacity":{
      "type":"structure",
      "required":["DesiredInstances"],
      "members":{
        "DesiredInstances":{
          "shape":"Integer",
          "documentation":"<p>The desired number of streaming instances.</p>"
        }
      },
      "documentation":"<p>The capacity configuration for the fleet.</p>"
    },
    "ComputeCapacityStatus":{
      "type":"structure",
      "required":["Desired"],
      "members":{
        "Desired":{
          "shape":"Integer",
          "documentation":"<p>The desired number of streaming instances.</p>"
        },
        "Running":{
          "shape":"Integer",
          "documentation":"<p>The total number of simultaneous streaming instances that are running.</p>"
        },
        "InUse":{
          "shape":"Integer",
          "documentation":"<p>The number of instances that are being used for streaming.</p>"
        },
        "Available":{
          "shape":"Integer",
          "documentation":"<p>The number of currently available instances that can be used to stream sessions.</p>"
        }
      },
      "documentation":"<p>The capacity information for the fleet.</p>"
    },
    "CreateFleetRequest":{
      "type":"structure",
      "required":[
        "Name",
        "ImageName",
        "InstanceType",
        "ComputeCapacity"
      ],
      "members":{
        "Name":{
          "shape":"Name",
          "documentation":"<p>A unique identifier for the fleet.</p>"
        },
        "ImageName":{
          "shape":"String",
          "documentation":"<p>Unique name of the image used by the fleet.</p>"
        },
        "InstanceType":{
          "shape":"String",
          "documentation":"<p>The instance type of compute resources for the fleet. Fleet instances are launched from this instance type.</p>"
        },
        "ComputeCapacity":{
          "shape":"ComputeCapacity",
          "documentation":"<p>The parameters for the capacity allocated to the fleet.</p>"
        },
        "VpcConfig":{
          "shape":"VpcConfig",
          "documentation":"<p>The VPC configuration for the fleet.</p>"
        },
        "MaxUserDurationInSeconds":{
          "shape":"Integer",
          "documentation":"<p>The maximum time up to which a streaming session can run.</p>"
        },
        "DisconnectTimeoutInSeconds":{
          "shape":"Integer",
          "documentation":"<p>The time after disconnection when a session is considered to have ended. If a user who got disconnected reconnects within this timeout interval, the user is connected back to his/her previous session. </p>"
        },
        "Description":{
          "shape":"Description",
          "documentation":"<p>The description of the fleet.</p>"
        },
        "DisplayName":{
          "shape":"DisplayName",
          "documentation":"<p>The display name of the fleet.</p>"
        }
      },
      "documentation":"<p>Contains the parameters for the new fleet to create.</p>"
    },
    "CreateFleetResult":{
      "type":"structure",
      "members":{
        "Fleet":{
          "shape":"Fleet",
          "documentation":"<p>The details for the created fleet.</p>"
        }
      }
    },
    "CreateStackRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"String",
          "documentation":"<p>The unique identifier for this stack.</p>"
        },
        "Description":{
          "shape":"Description",
          "documentation":"<p>The description displayed to end users on the AppStream 2.0 portal.</p>"
        },
        "DisplayName":{
          "shape":"DisplayName",
          "documentation":"<p>The name displayed to end users on the AppStream 2.0 portal.</p>"
        }
      }
    },
    "CreateStackResult":{
      "type":"structure",
      "members":{
        "Stack":{
          "shape":"Stack",
          "documentation":"<p>The details for the created stack.</p>"
        }
      }
    },
    "CreateStreamingURLRequest":{
      "type":"structure",
      "required":[
        "StackName",
        "FleetName",
        "UserId"
      ],
      "members":{
        "StackName":{
          "shape":"String",
          "documentation":"<p>The stack for which the URL is generated.</p>"
        },
        "FleetName":{
          "shape":"String",
          "documentation":"<p>The fleet for which the URL is generated.</p>"
        },
        "UserId":{
          "shape":"UserId",
          "documentation":"<p>A unique user ID for whom the URL is generated.</p>"
        },
        "ApplicationId":{
          "shape":"String",
          "documentation":"<p>The ID of the application that must be launched after the session starts.</p>"
        },
        "Validity":{
          "shape":"Long",
          "documentation":"<p>The validity duration of the URL in seconds. After this duration, the URL returned by this operation becomes invalid.</p>"
        },
        "SessionContext":{
          "shape":"String",
          "documentation":"<p>The sessionContext of the streaming URL.</p>"
        }
      }
    },
    "CreateStreamingURLResult":{
      "type":"structure",
      "members":{
        "StreamingURL":{
          "shape":"String",
          "documentation":"<p>The URL to start the AppStream 2.0 streaming session.</p>"
        },
        "Expires":{
          "shape":"Timestamp",
          "documentation":"<p>Elapsed seconds after the Unix epoch, at which time this URL expires.</p>"
        }
      }
    },
    "DeleteFleetRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"String",
          "documentation":"<p>The name of the fleet to be deleted.</p>"
        }
      }
    },
    "DeleteFleetResult":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteStackRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"String",
          "documentation":"<p>The name of the stack to delete.</p>"
        }
      }
    },
    "DeleteStackResult":{
      "type":"structure",
      "members":{
      }
    },
    "DescribeFleetsRequest":{
      "type":"structure",
      "members":{
        "Names":{
          "shape":"StringList",
          "documentation":"<p>The fleet names to describe. Use null to describe all the fleets for the AWS account.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.</p>"
        }
      }
    },
    "DescribeFleetsResult":{
      "type":"structure",
      "members":{
        "Fleets":{
          "shape":"FleetList",
          "documentation":"<p>The list of fleet details.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.</p>"
        }
      }
    },
    "DescribeImagesRequest":{
      "type":"structure",
      "members":{
        "Names":{
          "shape":"StringList",
          "documentation":"<p>A specific list of images to describe.</p>"
        }
      }
    },
    "DescribeImagesResult":{
      "type":"structure",
      "members":{
        "Images":{
          "shape":"ImageList",
          "documentation":"<p>The list of images.</p>"
        }
      }
    },
    "DescribeSessionsRequest":{
      "type":"structure",
      "required":[
        "StackName",
        "FleetName"
      ],
      "members":{
        "StackName":{
          "shape":"String",
          "documentation":"<p>The name of the stack for which to list sessions.</p>"
        },
        "FleetName":{
          "shape":"String",
          "documentation":"<p>The name of the fleet for which to list sessions.</p>"
        },
        "UserId":{
          "shape":"UserId",
          "documentation":"<p>The user for whom to list sessions. Use null to describe all the sessions for the stack and fleet.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.</p>"
        },
        "Limit":{
          "shape":"Integer",
          "documentation":"<p>The size of each page of results. The default value is 20 and the maximum supported value is 50.</p>"
        }
      }
    },
    "DescribeSessionsResult":{
      "type":"structure",
      "members":{
        "Sessions":{
          "shape":"SessionList",
          "documentation":"<p>The list of streaming sessions.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.</p>"
        }
      }
    },
    "DescribeStacksRequest":{
      "type":"structure",
      "members":{
        "Names":{
          "shape":"StringList",
          "documentation":"<p>The stack names to describe. Use null to describe all the stacks for the AWS account.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.</p>"
        }
      }
    },
    "DescribeStacksResult":{
      "type":"structure",
      "members":{
        "Stacks":{
          "shape":"StackList",
          "documentation":"<p>The list of stack details.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.</p>"
        }
      }
    },
    "Description":{
      "type":"string",
      "max":256
    },
    "DisassociateFleetRequest":{
      "type":"structure",
      "required":[
        "FleetName",
        "StackName"
      ],
      "members":{
        "FleetName":{
          "shape":"String",
          "documentation":"<p>The name of the fleet to disassociate.</p>"
        },
        "StackName":{
          "shape":"String",
          "documentation":"<p>The name of the stack with which the fleet is associated.</p>"
        }
      }
    },
    "DisassociateFleetResult":{
      "type":"structure",
      "members":{
      }
    },
    "DisplayName":{
      "type":"string",
      "max":100
    },
    "ErrorMessage":{"type":"string"},
    "ExpireSessionRequest":{
      "type":"structure",
      "required":["SessionId"],
      "members":{
        "SessionId":{
          "shape":"String",
          "documentation":"<p>The unique identifier of the streaming session to be stopped.</p>"
        }
      }
    },
    "ExpireSessionResult":{
      "type":"structure",
      "members":{
      }
    },
    "Fleet":{
      "type":"structure",
      "required":[
        "Arn",
        "Name",
        "ImageName",
        "InstanceType",
        "ComputeCapacityStatus",
        "State"
      ],
      "members":{
        "Arn":{
          "shape":"Arn",
          "documentation":"<p>The ARN for the fleet.</p>"
        },
        "Name":{
          "shape":"String",
          "documentation":"<p>The name of the fleet.</p>"
        },
        "DisplayName":{
          "shape":"String",
          "documentation":"<p>The name displayed to end users on the AppStream 2.0 portal.</p>"
        },
        "Description":{
          "shape":"String",
          "documentation":"<p>The description displayed to end users on the AppStream 2.0 portal.</p>"
        },
        "ImageName":{
          "shape":"String",
          "documentation":"<p>The image used by the fleet.</p>"
        },
        "InstanceType":{
          "shape":"String",
          "documentation":"<p>The instance type of compute resources for the fleet. The fleet instances are launched from this instance type. </p>"
        },
        "ComputeCapacityStatus":{
          "shape":"ComputeCapacityStatus",
          "documentation":"<p>The capacity information for the fleet.</p>"
        },
        "MaxUserDurationInSeconds":{
          "shape":"Integer",
          "documentation":"<p>The maximum time during which a streaming session can run.</p>"
        },
        "DisconnectTimeoutInSeconds":{
          "shape":"Integer",
          "documentation":"<p>The time after disconnection when a session is considered to have ended. When a user reconnects after a disconnection, the user is connected to the same session and instance within this time interval.</p>"
        },
        "State":{
          "shape":"FleetState",
          "documentation":"<p>The current state for the fleet.</p>"
        },
        "VpcConfig":{
          "shape":"VpcConfig",
          "documentation":"<p>The VPC configuration for the fleet.</p>"
        },
        "CreatedTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time at which the fleet was created.</p>"
        },
        "FleetErrors":{
          "shape":"FleetErrors",
          "documentation":"<p>The list of fleet errors is appended to this list.</p>"
        }
      },
      "documentation":"<p>Contains the parameters for a fleet.</p>"
    },
    "FleetError":{
      "type":"structure",
      "members":{
        "ErrorCode":{
          "shape":"FleetErrorCode",
          "documentation":"<p>The error code for the fleet error.</p>"
        },
        "ErrorMessage":{
          "shape":"String",
          "documentation":"<p>The error message generated when the fleet has errors.</p>"
        }
      },
      "documentation":"<p>The details of the fleet error.</p>"
    },
    "FleetErrorCode":{
      "type":"string",
      "enum":[
        "IAM_SERVICE_ROLE_MISSING_ENI_DESCRIBE_ACTION",
        "IAM_SERVICE_ROLE_MISSING_ENI_CREATE_ACTION",
        "IAM_SERVICE_ROLE_MISSING_ENI_DELETE_ACTION",
        "NETWORK_INTERFACE_LIMIT_EXCEEDED",
        "INTERNAL_SERVICE_ERROR",
        "IAM_SERVICE_ROLE_IS_MISSING",
        "SUBNET_HAS_INSUFFICIENT_IP_ADDRESSES",
        "IAM_SERVICE_ROLE_MISSING_DESCRIBE_SUBNET_ACTION",
        "SUBNET_NOT_FOUND",
        "IMAGE_NOT_FOUND",
        "INVALID_SUBNET_CONFIGURATION"
      ]
    },
    "FleetErrors":{
      "type":"list",
      "member":{"shape":"FleetError"}
    },
    "FleetList":{
      "type":"list",
      "member":{"shape":"Fleet"},
      "documentation":"<p>A list of fleets.</p>"
    },
    "FleetState":{
      "type":"string",
      "enum":[
        "STARTING",
        "RUNNING",
        "STOPPING",
        "STOPPED"
      ]
    },
    "Image":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"String",
          "documentation":"<p>The unique identifier for the image.</p>"
        },
        "Arn":{
          "shape":"Arn",
          "documentation":"<p>The ARN for the image.</p>"
        },
        "BaseImageArn":{
          "shape":"Arn",
          "documentation":"<p>The source image ARN from which this image was created.</p>"
        },
        "DisplayName":{
          "shape":"String",
          "documentation":"<p>The display name for the image.</p>"
        },
        "State":{
          "shape":"ImageState",
          "documentation":"<p>The image starts in the <b>PENDING</b> state, and then moves to <b>AVAILABLE</b> if image creation succeeds and <b>FAILED</b> if image creation has failed.</p>"
        },
        "Visibility":{
          "shape":"VisibilityType",
          "documentation":"<p>The visibility of an image to the user; images can be public or private.</p>"
        },
        "Platform":{
          "shape":"PlatformType",
          "documentation":"<p>The operating system platform of the image.</p>"
        },
        "Description":{
          "shape":"String",
          "documentation":"<p>A meaningful description for the image.</p>"
        },
        "StateChangeReason":{
          "shape":"ImageStateChangeReason",
          "documentation":"<p>The reason why the last state change occurred.</p>"
        },
        "Applications":{
          "shape":"Applications",
          "documentation":"<p>The applications associated with an image.</p>"
        },
        "CreatedTime":{
          "shape":"Timestamp",
          "documentation":"<p>The timestamp when the image was created.</p>"
        }
      },
      "documentation":"<p>New streaming instances are booted from images. The image stores the application catalog and is connected to fleets.</p>"
    },
    "ImageList":{
      "type":"list",
      "member":{"shape":"Image"}
    },
    "ImageState":{
      "type":"string",
      "enum":[
        "PENDING",
        "AVAILABLE",
        "FAILED",
        "DELETING"
      ]
    },
    "ImageStateChangeReason":{
      "type":"structure",
      "members":{
        "Code":{
          "shape":"ImageStateChangeReasonCode",
          "documentation":"<p>The state change reason code of the image.</p>"
        },
        "Message":{
          "shape":"String",
          "documentation":"<p>The state change reason message to the end user.</p>"
        }
      },
      "documentation":"<p>The reason why the last state change occurred.</p>"
    },
    "ImageStateChangeReasonCode":{
      "type":"string",
      "enum":[
        "INTERNAL_ERROR",
        "IMAGE_BUILDER_NOT_AVAILABLE"
      ]
    },
    "Integer":{"type":"integer"},
    "InvalidRoleException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>The specified role is invalid.</p>",
      "exception":true
    },
    "LimitExceededException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>The requested limit exceeds the permitted limit for an account.</p>",
      "exception":true
    },
    "ListAssociatedFleetsRequest":{
      "type":"structure",
      "required":["StackName"],
      "members":{
        "StackName":{
          "shape":"String",
          "documentation":"<p>The name of the stack whose associated fleets are listed.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.</p>"
        }
      }
    },
    "ListAssociatedFleetsResult":{
      "type":"structure",
      "members":{
        "Names":{
          "shape":"StringList",
          "documentation":"<p>The names of associated fleets.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.</p>"
        }
      },
      "documentation":"<p>The response from a successful operation.</p>"
    },
    "ListAssociatedStacksRequest":{
      "type":"structure",
      "required":["FleetName"],
      "members":{
        "FleetName":{
          "shape":"String",
          "documentation":"<p>The name of the fleet whose associated stacks are listed.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.</p>"
        }
      }
    },
    "ListAssociatedStacksResult":{
      "type":"structure",
      "members":{
        "Names":{
          "shape":"StringList",
          "documentation":"<p>The names of associated stacks.</p>"
        },
        "NextToken":{
          "shape":"String",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.</p>"
        }
      },
      "documentation":"<p>The response from a successful operation.</p>"
    },
    "Long":{"type":"long"},
    "Metadata":{
      "type":"map",
      "key":{"shape":"String"},
      "value":{"shape":"String"}
    },
    "Name":{
      "type":"string",
      "pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,100}$"
    },
    "OperationNotPermittedException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>The attempted operation is not permitted.</p>",
      "exception":true
    },
    "PlatformType":{
      "type":"string",
      "enum":["WINDOWS"]
    },
    "ResourceAlreadyExistsException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>The specified resource already exists.</p>",
      "exception":true
    },
    "ResourceInUseException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>The specified resource is in use.</p>",
      "exception":true
    },
    "ResourceNotAvailableException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>The specified resource exists and is not in use, but isn't available.</p>",
      "exception":true
    },
    "ResourceNotFoundException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "documentation":"<p>The specified resource was not found.</p>",
      "exception":true
    },
    "Session":{
      "type":"structure",
      "required":[
        "Id",
        "UserId",
        "StackName",
        "FleetName",
        "State"
      ],
      "members":{
        "Id":{
          "shape":"String",
          "documentation":"<p>The unique ID for a streaming session.</p>"
        },
        "UserId":{
          "shape":"UserId",
          "documentation":"<p>The identifier of the user for whom the session was created.</p>"
        },
        "StackName":{
          "shape":"String",
          "documentation":"<p>The name of the stack for which the streaming session was created.</p>"
        },
        "FleetName":{
          "shape":"String",
          "documentation":"<p>The name of the fleet for which the streaming session was created.</p>"
        },
        "State":{
          "shape":"SessionState",
          "documentation":"<p>The current state of the streaming session.</p>"
        }
      },
      "documentation":"<p>Contains the parameters for a streaming session.</p>"
    },
    "SessionList":{
      "type":"list",
      "member":{"shape":"Session"},
      "documentation":"<p>List of sessions.</p>"
    },
    "SessionState":{
      "type":"string",
      "documentation":"<p>Possible values for the state of a streaming session.</p>",
      "enum":[
        "ACTIVE",
        "PENDING",
        "EXPIRED"
      ]
    },
    "Stack":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Arn":{
          "shape":"Arn",
          "documentation":"<p>The ARN of the stack.</p>"
        },
        "Name":{
          "shape":"String",
          "documentation":"<p>The unique identifier of the stack.</p>"
        },
        "Description":{
          "shape":"String",
          "documentation":"<p>A meaningful description for the stack.</p>"
        },
        "DisplayName":{
          "shape":"String",
          "documentation":"<p>A display name for the stack.</p>"
        },
        "CreatedTime":{
          "shape":"Timestamp",
          "documentation":"<p>The timestamp when the stack was created.</p>"
        }
      },
      "documentation":"<p>Details about a stack.</p>"
    },
    "StackList":{
      "type":"list",
      "member":{"shape":"Stack"},
      "documentation":"<p>A list of stacks.</p>"
    },
    "StartFleetRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"String",
          "documentation":"<p>The name of the fleet to start.</p>"
        }
      }
    },
    "StartFleetResult":{
      "type":"structure",
      "members":{
      }
    },
    "StopFleetRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"String",
          "documentation":"<p>The name of the fleet to stop.</p>"
        }
      }
    },
    "StopFleetResult":{
      "type":"structure",
      "members":{
      }
    },
    "String":{
      "type":"string",
      "min":1
    },
    "StringList":{
      "type":"list",
      "member":{"shape":"String"}
    },
    "SubnetIdList":{
      "type":"list",
      "member":{"shape":"String"},
      "documentation":"<p>A list of subnet IDs.</p>",
      "min":1
    },
    "Timestamp":{"type":"timestamp"},
    "UpdateFleetRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "ImageName":{
          "shape":"String",
          "documentation":"<p>The image name from which a fleet is created.</p>"
        },
        "Name":{
          "shape":"String",
          "documentation":"<p>The name of the fleet.</p>"
        },
        "InstanceType":{
          "shape":"String",
          "documentation":"<p>The instance type of compute resources for the fleet. Fleet instances are launched from this instance type.</p>"
        },
        "ComputeCapacity":{
          "shape":"ComputeCapacity",
          "documentation":"<p>The parameters for the capacity allocated to the fleet. </p>"
        },
        "VpcConfig":{
          "shape":"VpcConfig",
          "documentation":"<p>The VPC configuration for the fleet.</p>"
        },
        "MaxUserDurationInSeconds":{
          "shape":"Integer",
          "documentation":"<p>The maximum time during which a streaming session can run.</p>"
        },
        "DisconnectTimeoutInSeconds":{
          "shape":"Integer",
          "documentation":"<p>The time after disconnection when a session is considered to have ended. When the user reconnects after a disconnection, the user is connected to the same instance within this time interval.</p>"
        },
        "DeleteVpcConfig":{
          "shape":"Boolean",
          "documentation":"<p>Delete the VPC association for the specified fleet.</p>"
        },
        "Description":{
          "shape":"Description",
          "documentation":"<p>The description displayed to end users on the AppStream 2.0 portal.</p>"
        },
        "DisplayName":{
          "shape":"DisplayName",
          "documentation":"<p>The name displayed to end users on the AppStream 2.0 portal.</p>"
        }
      }
    },
    "UpdateFleetResult":{
      "type":"structure",
      "members":{
        "Fleet":{
          "shape":"Fleet",
          "documentation":"<p>A list of fleet details.</p>"
        }
      }
    },
    "UpdateStackRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "DisplayName":{
          "shape":"DisplayName",
          "documentation":"<p>The name displayed to end users on the AppStream 2.0 portal.</p>"
        },
        "Description":{
          "shape":"Description",
          "documentation":"<p>The description displayed to end users on the AppStream 2.0 portal.</p>"
        },
        "Name":{
          "shape":"String",
          "documentation":"<p>The name of the stack to update.</p>"
        }
      }
    },
    "UpdateStackResult":{
      "type":"structure",
      "members":{
        "Stack":{
          "shape":"Stack",
          "documentation":"<p>A list of stack details.</p>"
        }
      }
    },
    "UserId":{
      "type":"string",
      "max":32,
      "min":2
    },
    "VisibilityType":{
      "type":"string",
      "enum":[
        "PUBLIC",
        "PRIVATE"
      ]
    },
    "VpcConfig":{
      "type":"structure",
      "required":["SubnetIds"],
      "members":{
        "SubnetIds":{
          "shape":"SubnetIdList",
          "documentation":"<p>The list of subnets to which a network interface is established from the fleet instance.</p>"
        }
      },
      "documentation":"<p>The VPC in which the fleet is launched.</p>"
    }
  },
  "documentation":"<fullname>Amazon AppStream 2.0</fullname> <p>API documentation for Amazon AppStream 2.0.</p>"
}
