{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--aws-nimblestudio-launchprofile.json",
  "title": "AWSNimbleStudioLaunchProfileProperties",
  "description": "Represents a launch profile which delegates access to a collection of studio components to studio users. Source:- <https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-nimblestudio>",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/lalcebo/json-schema/master/serverless/resources/cloudformation-modified/aws-nimblestudio-launchprofile.json",
    "sourceSha256": "814f82a5ba4b4835b944f5d3e9348ee0b5160d72f3a8367b78f3dd0a3e67e02b"
  },
  "type": "object",
  "properties": {
    "Description": {
      "oneOf": [
        {
          "type": "string",
          "maxLength": 256,
          "minLength": 0
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "<p>The description.</p>"
    },
    "Ec2SubnetIds": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 6,
      "minItems": 0,
      "description": "<p>Specifies the IDs of the EC2 subnets where streaming sessions will be accessible from.\n            These subnets must support the specified instance types. </p>"
    },
    "LaunchProfileProtocolVersions": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 10,
        "minLength": 0,
        "pattern": "^2021\\-03\\-31$",
        "description": "<p>The version number of the protocol that is used by the launch profile. The only valid\n            version is \"2021-03-31\".</p>"
      },
      "description": "<p>The version number of the protocol that is used by the launch profile. The only valid\n            version is \"2021-03-31\".</p>"
    },
    "Name": {
      "oneOf": [
        {
          "type": "string",
          "maxLength": 64,
          "minLength": 1
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "<p>The name for the launch profile.</p>"
    },
    "StreamConfiguration": {
      "$ref": "#/$defs/StreamConfiguration"
    },
    "StudioComponentIds": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 100,
      "minItems": 1,
      "description": "<p>Unique identifiers for a collection of studio components that can be used with this\n            launch profile.</p>"
    },
    "StudioId": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "<p>The studio ID. </p>"
    },
    "Tags": {
      "$ref": "#/$defs/Tags"
    }
  },
  "typeName": "AWS::NimbleStudio::LaunchProfile",
  "$defs": {
    "AutomaticTerminationMode": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "DEACTIVATED",
            "ACTIVATED"
          ]
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "title": "AWSNimbleStudioLaunchProfileAutomaticTerminationModeDefinition"
    },
    "SessionBackupMode": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "AUTOMATIC",
            "DEACTIVATED"
          ]
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "title": "AWSNimbleStudioLaunchProfileSessionBackupModeDefinition"
    },
    "SessionPersistenceMode": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "DEACTIVATED",
            "ACTIVATED"
          ]
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "title": "AWSNimbleStudioLaunchProfileSessionPersistenceModeDefinition"
    },
    "StreamConfiguration": {
      "type": "object",
      "description": "<p>A configuration for a streaming session.</p>",
      "properties": {
        "ClipboardMode": {
          "$ref": "#/$defs/StreamingClipboardMode"
        },
        "Ec2InstanceTypes": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/StreamingInstanceType"
          },
          "maxItems": 30,
          "minItems": 1,
          "description": "<p>The EC2 instance types that users can select from when launching a streaming session\n            with this launch profile.</p>"
        },
        "MaxSessionLengthInMinutes": {
          "type": "number",
          "default": 690,
          "maximum": 43200,
          "minimum": 1,
          "description": "<p>The length of time, in minutes, that a streaming session can be active before it is\n            stopped or terminated. After this point, Nimble Studio automatically terminates or\n            stops the session. The default length of time is 690 minutes, and the maximum length of\n            time is 30 days.</p>"
        },
        "StreamingImageIds": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 22,
            "minLength": 0,
            "pattern": "^[a-zA-Z0-9-_]*$"
          },
          "maxItems": 20,
          "minItems": 1,
          "description": "<p>The streaming images that users can select from when launching a streaming session\n            with this launch profile.</p>"
        },
        "MaxStoppedSessionLengthInMinutes": {
          "type": "number",
          "default": 0,
          "maximum": 5760,
          "minimum": 0,
          "description": "<p>Integer that determines if you can start and stop your sessions and how long a session\n            can stay in the <code>STOPPED</code> state. The default value is 0. The maximum value is\n            5760.</p>\n         <p>This field is allowed only when <code>sessionPersistenceMode</code> is\n                <code>ACTIVATED</code> and <code>automaticTerminationMode</code> is\n                <code>ACTIVATED</code>.</p>\n         <p>If the value is set to 0, your sessions can’t be <code>STOPPED</code>. If you then\n            call <code>StopStreamingSession</code>, the session fails. If the time that a session\n            stays in the <code>READY</code> state exceeds the <code>maxSessionLengthInMinutes</code>\n            value, the session will automatically be terminated (instead of\n            <code>STOPPED</code>).</p>\n         <p>If the value is set to a positive number, the session can be stopped. You can call\n                <code>StopStreamingSession</code> to stop sessions in the <code>READY</code> state.\n            If the time that a session stays in the <code>READY</code> state exceeds the\n                <code>maxSessionLengthInMinutes</code> value, the session will automatically be\n            stopped (instead of terminated).</p>"
        },
        "SessionStorage": {
          "$ref": "#/$defs/StreamConfigurationSessionStorage"
        },
        "SessionBackup": {
          "$ref": "#/$defs/StreamConfigurationSessionBackup"
        },
        "SessionPersistenceMode": {
          "$ref": "#/$defs/SessionPersistenceMode"
        },
        "VolumeConfiguration": {
          "$ref": "#/$defs/VolumeConfiguration"
        },
        "AutomaticTerminationMode": {
          "$ref": "#/$defs/AutomaticTerminationMode"
        }
      },
      "required": [
        "ClipboardMode",
        "Ec2InstanceTypes",
        "StreamingImageIds"
      ],
      "title": "AWSNimbleStudioLaunchProfileStreamConfigurationDefinition",
      "additionalProperties": false
    },
    "StreamConfigurationSessionBackup": {
      "type": "object",
      "description": "<p>Configures how streaming sessions are backed up when launched from this launch\n            profile.</p>",
      "properties": {
        "Mode": {
          "$ref": "#/$defs/SessionBackupMode"
        },
        "MaxBackupsToRetain": {
          "type": "number",
          "default": 0,
          "maximum": 10,
          "minimum": 0,
          "description": "<p>The maximum number of backups that each streaming session created from this launch\n            profile can have.</p>"
        }
      },
      "title": "AWSNimbleStudioLaunchProfileStreamConfigurationSessionBackupDefinition",
      "additionalProperties": false
    },
    "StreamConfigurationSessionStorage": {
      "type": "object",
      "description": "<p>The configuration for a streaming session’s upload storage.</p>",
      "properties": {
        "Root": {
          "$ref": "#/$defs/StreamingSessionStorageRoot"
        },
        "Mode": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/StreamingSessionStorageMode"
          },
          "minItems": 1,
          "description": "<p>Allows artists to upload files to their workstations. The only valid option is\n                <code>UPLOAD</code>.</p>"
        }
      },
      "required": [
        "Mode"
      ],
      "title": "AWSNimbleStudioLaunchProfileStreamConfigurationSessionStorageDefinition",
      "additionalProperties": false
    },
    "StreamingClipboardMode": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "ENABLED",
            "DISABLED"
          ]
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "title": "AWSNimbleStudioLaunchProfileStreamingClipboardModeDefinition"
    },
    "StreamingInstanceType": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "g4dn.xlarge",
            "g4dn.2xlarge",
            "g4dn.4xlarge",
            "g4dn.8xlarge",
            "g4dn.12xlarge",
            "g4dn.16xlarge",
            "g3.4xlarge",
            "g3s.xlarge",
            "g5.xlarge",
            "g5.2xlarge",
            "g5.4xlarge",
            "g5.8xlarge",
            "g5.16xlarge"
          ]
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "title": "AWSNimbleStudioLaunchProfileStreamingInstanceTypeDefinition"
    },
    "StreamingSessionStorageMode": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "UPLOAD"
          ]
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "title": "AWSNimbleStudioLaunchProfileStreamingSessionStorageModeDefinition"
    },
    "StreamingSessionStorageRoot": {
      "type": "object",
      "description": "<p>The upload storage root location (folder) on streaming workstations where files are\n            uploaded.</p>",
      "properties": {
        "Linux": {
          "oneOf": [
            {
              "type": "string",
              "maxLength": 128,
              "minLength": 1,
              "pattern": "^(\\$HOME|/)[/]?([A-Za-z0-9-_]+/)*([A-Za-z0-9_-]+)$"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "<p>The folder path in Linux workstations where files are uploaded.</p>"
        },
        "Windows": {
          "oneOf": [
            {
              "type": "string",
              "maxLength": 128,
              "minLength": 1,
              "pattern": "^((\\%HOMEPATH\\%)|[a-zA-Z]:)[\\\\/](?:[a-zA-Z0-9_-]+[\\\\/])*[a-zA-Z0-9_-]+$"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "<p>The folder path in Windows workstations where files are uploaded.</p>"
        }
      },
      "title": "AWSNimbleStudioLaunchProfileStreamingSessionStorageRootDefinition",
      "additionalProperties": false
    },
    "Tags": {
      "type": "object",
      "additionalProperties": false,
      "title": "AWSNimbleStudioLaunchProfileTagsDefinition",
      "patternProperties": {
        ".+": {
          "type": "string"
        }
      }
    },
    "VolumeConfiguration": {
      "type": "object",
      "description": "<p>Custom volume configuration for the root volumes that are attached to streaming\n            sessions.</p>\n         <p>This parameter is only allowed when <code>sessionPersistenceMode</code> is\n                <code>ACTIVATED</code>.</p>",
      "properties": {
        "Size": {
          "type": "number",
          "default": 500,
          "maximum": 16000,
          "minimum": 100,
          "description": "<p>The size of the root volume that is attached to the streaming session. The root volume\n            size is measured in GiBs.</p>"
        },
        "Throughput": {
          "type": "number",
          "default": 125,
          "maximum": 1000,
          "minimum": 125,
          "description": "<p>The throughput to provision for the root volume that is attached to the streaming\n            session. The throughput is measured in MiB/s.</p>"
        },
        "Iops": {
          "type": "number",
          "default": 3000,
          "maximum": 16000,
          "minimum": 3000,
          "description": "<p>The number of I/O operations per second for the root volume that is attached to\n            streaming session.</p>"
        }
      },
      "title": "AWSNimbleStudioLaunchProfileVolumeConfigurationDefinition",
      "additionalProperties": false
    }
  },
  "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-nimblestudio",
  "additionalProperties": false,
  "primaryIdentifier": [
    "/properties/LaunchProfileId",
    "/properties/StudioId"
  ],
  "required": [
    "StudioId",
    "Name",
    "StudioComponentIds",
    "Ec2SubnetIds",
    "StreamConfiguration",
    "LaunchProfileProtocolVersions"
  ],
  "readOnlyProperties": [
    "/properties/LaunchProfileId"
  ],
  "createOnlyProperties": [
    "/properties/Ec2SubnetIds",
    "/properties/StudioId",
    "/properties/Tags"
  ]
}
