{
  "typeName" : "AWS::WorkSpaces::WorkspacesPool",
  "description" : "Resource Type definition for AWS::WorkSpaces::WorkspacesPool",
  "definitions" : {
    "Tag" : {
      "type" : "object",
      "properties" : {
        "Key" : {
          "type" : "string"
        },
        "Value" : {
          "type" : "string"
        }
      },
      "required" : [ "Key", "Value" ],
      "additionalProperties" : false
    },
    "ApplicationSettingsStatus" : {
      "type" : "string",
      "enum" : [ "DISABLED", "ENABLED" ]
    },
    "RunningMode" : {
      "type" : "string",
      "enum" : [ "ALWAYS_ON", "AUTO_STOP" ]
    },
    "Capacity" : {
      "type" : "object",
      "properties" : {
        "DesiredUserSessions" : {
          "type" : "integer",
          "minimum" : 0
        }
      },
      "required" : [ "DesiredUserSessions" ],
      "additionalProperties" : false
    },
    "ApplicationSettings" : {
      "type" : "object",
      "properties" : {
        "Status" : {
          "$ref" : "#/definitions/ApplicationSettingsStatus"
        },
        "SettingsGroup" : {
          "type" : "string",
          "pattern" : "^[A-Za-z0-9_./()!*'-]+$",
          "maxLength" : 100
        }
      },
      "required" : [ "Status" ],
      "additionalProperties" : false
    },
    "TimeoutSettings" : {
      "type" : "object",
      "properties" : {
        "DisconnectTimeoutInSeconds" : {
          "type" : "integer",
          "minimum" : 60,
          "maximum" : 36000
        },
        "IdleDisconnectTimeoutInSeconds" : {
          "type" : "integer",
          "minimum" : 0,
          "maximum" : 36000
        },
        "MaxUserDurationInSeconds" : {
          "type" : "integer",
          "minimum" : 600,
          "maximum" : 432000
        }
      },
      "required" : [ ],
      "additionalProperties" : false
    }
  },
  "properties" : {
    "PoolId" : {
      "type" : "string",
      "pattern" : "^wspool-[0-9a-z]{9}$"
    },
    "PoolArn" : {
      "type" : "string",
      "pattern" : "^arn:aws[a-z-]{0,7}:[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,127}$"
    },
    "Capacity" : {
      "$ref" : "#/definitions/Capacity"
    },
    "PoolName" : {
      "type" : "string",
      "pattern" : "^[A-Za-z0-9][A-Za-z0-9_.-]{0,63}$"
    },
    "Description" : {
      "type" : "string",
      "pattern" : "^[a-zA-Z0-9_./() -]+$",
      "minLength" : 1,
      "maxLength" : 255
    },
    "CreatedAt" : {
      "type" : "string"
    },
    "BundleId" : {
      "type" : "string",
      "pattern" : "^wsb-[0-9a-z]{8,63}$"
    },
    "DirectoryId" : {
      "type" : "string",
      "pattern" : "^wsd-[0-9a-z]{8,63}$",
      "minLength" : 10,
      "maxLength" : 65
    },
    "ApplicationSettings" : {
      "$ref" : "#/definitions/ApplicationSettings"
    },
    "TimeoutSettings" : {
      "$ref" : "#/definitions/TimeoutSettings"
    },
    "RunningMode" : {
      "$ref" : "#/definitions/RunningMode"
    },
    "Tags" : {
      "type" : "array",
      "uniqueItems" : false,
      "insertionOrder" : false,
      "items" : {
        "$ref" : "#/definitions/Tag"
      }
    }
  },
  "required" : [ "PoolName", "BundleId", "DirectoryId", "Capacity" ],
  "additionalProperties" : false,
  "tagging" : {
    "taggable" : true,
    "tagOnCreate" : true,
    "tagUpdatable" : true,
    "cloudFormationSystemTags" : false,
    "tagProperty" : "/properties/Tags",
    "permissions" : [ "workspaces:CreateTags", "workspaces:DescribeTags", "workspaces:DeleteTags" ]
  },
  "primaryIdentifier" : [ "/properties/PoolId" ],
  "createOnlyProperties" : [ "/properties/PoolName" ],
  "readOnlyProperties" : [ "/properties/PoolId", "/properties/PoolArn", "/properties/CreatedAt" ],
  "deprecatedProperties" : [ "/properties/Tags", "/properties/Tags/TagKey", "/properties/Tags/TagValue" ],
  "handlers" : {
    "create" : {
      "permissions" : [ "workspaces:CreateWorkspacesPool", "workspaces:DescribeWorkspacesPools", "workspaces:CreateTags" ]
    },
    "read" : {
      "permissions" : [ "workspaces:DescribeWorkspacesPools", "workspaces:DescribeTags" ]
    },
    "update" : {
      "permissions" : [ "workspaces:UpdateWorkspacesPool", "workspaces:CreateTags", "workspaces:DeleteTags", "workspaces:DescribeWorkspacesPools", "workspaces:DescribeTags" ]
    },
    "delete" : {
      "permissions" : [ "workspaces:DescribeWorkspacesPools", "workspaces:TerminateWorkspacesPool", "workspaces:DeleteTags" ]
    },
    "list" : {
      "permissions" : [ "workspaces:DescribeWorkspacesPools", "workspaces:DescribeTags" ]
    }
  }
}