{
 "additionalProperties": false,
 "conditionalCreateOnlyProperties": [
  "/properties/Tags"
 ],
 "createOnlyProperties": [
  "/properties/ManagedInstance"
 ],
 "definitions": {
  "BlockDeviceMapping": {
   "additionalProperties": false,
   "properties": {
    "DeviceName": {
     "maxLength": 32,
     "minLength": 0,
     "type": "string"
    },
    "Ebs": {
     "$ref": "#/definitions/EbsBlockDevice"
    },
    "NoDevice": {
     "maxLength": 32,
     "minLength": 0,
     "type": "string"
    },
    "VirtualName": {
     "pattern": "^ephemeral(0|[1-9][0-9]{0,2})$",
     "type": "string"
    }
   },
   "type": "object"
  },
  "CapacityReservationSpecification": {
   "additionalProperties": false,
   "properties": {
    "CapacityReservationPreference": {
     "enum": [
      "capacity-reservations-only",
      "open",
      "none"
     ],
     "type": "string"
    },
    "CapacityReservationTarget": {
     "$ref": "#/definitions/CapacityReservationTarget"
    }
   },
   "type": "object"
  },
  "CapacityReservationTarget": {
   "additionalProperties": false,
   "properties": {
    "CapacityReservationId": {
     "maxLength": 128,
     "minLength": 0,
     "type": "string"
    },
    "CapacityReservationResourceGroupArn": {
     "maxLength": 2048,
     "minLength": 0,
     "pattern": "^arn:.*",
     "type": "string"
    }
   },
   "type": "object"
  },
  "ConnectionTrackingSpecificationRequest": {
   "additionalProperties": false,
   "properties": {
    "TcpEstablishedTimeout": {
     "type": "integer"
    },
    "UdpStreamTimeout": {
     "type": "integer"
    },
    "UdpTimeout": {
     "type": "integer"
    }
   },
   "type": "object"
  },
  "CpuOptionsRequest": {
   "additionalProperties": false,
   "properties": {
    "CoreCount": {
     "minimum": 0,
     "type": "integer"
    },
    "ThreadsPerCore": {
     "minimum": 0,
     "type": "integer"
    }
   },
   "type": "object"
  },
  "CreditSpecificationRequest": {
   "additionalProperties": false,
   "properties": {
    "CpuCredits": {
     "enum": [
      "standard",
      "unlimited"
     ],
     "type": "string"
    }
   },
   "type": "object"
  },
  "EC2ManagedInstance": {
   "additionalProperties": false,
   "properties": {
    "InstanceId": {
     "type": "string"
    }
   },
   "type": "object"
  },
  "EbsBlockDevice": {
   "additionalProperties": false,
   "properties": {
    "Encrypted": {
     "type": "boolean"
    },
    "Iops": {
     "minimum": 0,
     "type": "integer"
    },
    "KmsKeyId": {
     "anyOf": [
      {
       "format": "AWS::KMS::Key.Arn"
      },
      {
       "format": "AWS::KMS::Key.Id"
      },
      {
       "format": "AWS::KMS::Alias.AliasName"
      }
     ],
     "maxLength": 128,
     "minLength": 0,
     "type": "string"
    },
    "Throughput": {
     "minimum": 0,
     "type": "integer"
    },
    "VolumeSize": {
     "minimum": 0,
     "type": "integer"
    },
    "VolumeType": {
     "enum": [
      "standard",
      "io1",
      "io2",
      "gp2",
      "sc1",
      "st1",
      "gp3"
     ],
     "type": "string"
    }
   },
   "type": "object"
  },
  "EnaSrdSpecificationRequest": {
   "additionalProperties": false,
   "properties": {
    "EnaSrdEnabled": {
     "type": "boolean"
    },
    "EnaSrdUdpSpecification": {
     "$ref": "#/definitions/EnaSrdUdpSpecificationRequest"
    }
   },
   "type": "object"
  },
  "EnaSrdUdpSpecificationRequest": {
   "additionalProperties": false,
   "properties": {
    "EnaSrdUdpEnabled": {
     "type": "boolean"
    }
   },
   "type": "object"
  },
  "EnclaveOptionsRequest": {
   "additionalProperties": false,
   "properties": {
    "Enabled": {
     "type": "boolean"
    }
   },
   "type": "object"
  },
  "HibernationOptionsRequest": {
   "additionalProperties": false,
   "properties": {
    "Configured": {
     "type": "boolean"
    }
   },
   "type": "object"
  },
  "IamInstanceProfileSpecification": {
   "additionalProperties": false,
   "properties": {
    "Arn": {
     "maxLength": 2048,
     "minLength": 0,
     "pattern": "^arn:.*",
     "type": "string"
    },
    "Name": {
     "maxLength": 64,
     "minLength": 0,
     "type": "string"
    }
   },
   "type": "object"
  },
  "InstanceIpv6Address": {
   "additionalProperties": false,
   "properties": {
    "Ipv6Address": {
     "maxLength": 128,
     "type": "string"
    },
    "IsPrimaryIpv6": {
     "type": "boolean"
    }
   },
   "type": "object"
  },
  "InstanceMaintenanceOptionsRequest": {
   "additionalProperties": false,
   "properties": {
    "AutoRecovery": {
     "enum": [
      "disabled",
      "default"
     ],
     "type": "string"
    }
   },
   "type": "object"
  },
  "InstanceMarketOptionsRequest": {
   "additionalProperties": false,
   "properties": {
    "MarketType": {
     "enum": [
      "spot",
      "capacity-block"
     ],
     "type": "string"
    },
    "SpotOptions": {
     "$ref": "#/definitions/SpotMarketOptions"
    }
   },
   "type": "object"
  },
  "InstanceMetadataOptionsRequest": {
   "additionalProperties": false,
   "properties": {
    "HttpEndpoint": {
     "enum": [
      "enabled",
      "disabled"
     ],
     "type": "string"
    },
    "HttpProtocolIpv6": {
     "enum": [
      "enabled",
      "disabled"
     ],
     "type": "string"
    },
    "HttpPutResponseHopLimit": {
     "maximum": 64,
     "minimum": 1,
     "type": "integer"
    },
    "HttpTokens": {
     "enum": [
      "optional",
      "required"
     ],
     "type": "string"
    },
    "InstanceMetadataTags": {
     "enum": [
      "enabled",
      "disabled"
     ],
     "type": "string"
    }
   },
   "type": "object"
  },
  "InstanceNetworkInterfaceSpecification": {
   "additionalProperties": false,
   "properties": {
    "Description": {
     "maxLength": 1000,
     "minLength": 0,
     "pattern": "^[\\S\\s]*$",
     "type": "string"
    },
    "DeviceIndex": {
     "minimum": 0,
     "type": "integer"
    },
    "Groups": {
     "items": {
      "pattern": "^sg-[0-9a-zA-Z]{1,63}$",
      "type": "string"
     },
     "type": "array"
    },
    "SubnetId": {
     "format": "AWS::EC2::Subnet.Id",
     "pattern": "^subnet-[0-9a-zA-Z]{1,63}$",
     "type": "string"
    }
   },
   "type": "object"
  },
  "InstanceNetworkPerformanceOptionsRequest": {
   "additionalProperties": false,
   "properties": {
    "BandwidthWeighting": {
     "enum": [
      "default",
      "vpc-1",
      "ebs-1"
     ],
     "type": "string"
    }
   },
   "type": "object"
  },
  "Ipv4PrefixSpecificationRequest": {
   "additionalProperties": false,
   "properties": {
    "Ipv4Prefix": {
     "maxLength": 128,
     "type": "string"
    }
   },
   "type": "object"
  },
  "Ipv6PrefixSpecificationRequest": {
   "additionalProperties": false,
   "properties": {
    "Ipv6Prefix": {
     "maxLength": 128,
     "type": "string"
    }
   },
   "type": "object"
  },
  "LicenseConfigurationRequest": {
   "additionalProperties": false,
   "properties": {
    "LicenseConfigurationArn": {
     "maxLength": 2048,
     "minLength": 0,
     "pattern": "^arn:.*",
     "type": "string"
    }
   },
   "type": "object"
  },
  "Placement": {
   "additionalProperties": false,
   "properties": {
    "AvailabilityZone": {
     "pattern": "^[a-z]{2}-[a-z]+-\\d[a-z](-[a-z0-9]+)?$",
     "type": "string"
    },
    "GroupId": {
     "pattern": "^pg-[0-9a-zA-Z]{1,63}$",
     "type": "string"
    },
    "GroupName": {
     "maxLength": 255,
     "minLength": 0,
     "type": "string"
    },
    "PartitionNumber": {
     "minimum": 0,
     "type": "integer"
    },
    "Tenancy": {
     "enum": [
      "default",
      "dedicated",
      "host"
     ],
     "type": "string"
    }
   },
   "type": "object"
  },
  "PrivateDnsNameOptionsRequest": {
   "additionalProperties": false,
   "properties": {
    "EnableResourceNameDnsAAAARecord": {
     "type": "boolean"
    },
    "EnableResourceNameDnsARecord": {
     "type": "boolean"
    },
    "HostnameType": {
     "enum": [
      "ip-name",
      "resource-name"
     ],
     "type": "string"
    }
   },
   "type": "object"
  },
  "PrivateIpAddressSpecification": {
   "additionalProperties": false,
   "properties": {
    "Primary": {
     "type": "boolean"
    },
    "PrivateIpAddress": {
     "maxLength": 128,
     "type": "string"
    }
   },
   "type": "object"
  },
  "RunInstancesMonitoringEnabled": {
   "additionalProperties": false,
   "properties": {
    "Enabled": {
     "type": "boolean"
    }
   },
   "type": "object"
  },
  "SpotMarketOptions": {
   "additionalProperties": false,
   "properties": {
    "InstanceInterruptionBehavior": {
     "enum": [
      "hibernate",
      "stop"
     ],
     "type": "string"
    },
    "MaxPrice": {
     "maxLength": 64,
     "type": "string"
    },
    "SpotInstanceType": {
     "enum": [
      "one-time",
      "persistent"
     ],
     "type": "string"
    },
    "ValidUntilUtc": {
     "maxLength": 64,
     "type": "string"
    }
   },
   "type": "object"
  },
  "Tag": {
   "additionalProperties": false,
   "properties": {
    "Key": {
     "maxLength": 128,
     "minLength": 1,
     "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]+)$",
     "type": "string"
    },
    "Value": {
     "maxLength": 256,
     "minLength": 0,
     "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$",
     "type": "string"
    }
   },
   "required": [
    "Key"
   ],
   "type": "object"
  },
  "TagSpecification": {
   "additionalProperties": false,
   "properties": {
    "ResourceType": {
     "enum": [
      "instance",
      "volume",
      "spot-instances-request",
      "network-interface"
     ],
     "type": "string"
    },
    "Tags": {
     "items": {
      "$ref": "#/definitions/Tag"
     },
     "maxItems": 30,
     "minItems": 0,
     "type": "array"
    }
   },
   "type": "object"
  }
 },
 "primaryIdentifier": [
  "/properties/WorkspaceInstanceId"
 ],
 "properties": {
  "EC2ManagedInstance": {
   "$ref": "#/definitions/EC2ManagedInstance"
  },
  "ManagedInstance": {
   "additionalProperties": false,
   "properties": {
    "BlockDeviceMappings": {
     "items": {
      "$ref": "#/definitions/BlockDeviceMapping"
     },
     "type": "array"
    },
    "CapacityReservationSpecification": {
     "$ref": "#/definitions/CapacityReservationSpecification"
    },
    "CpuOptions": {
     "$ref": "#/definitions/CpuOptionsRequest"
    },
    "CreditSpecification": {
     "$ref": "#/definitions/CreditSpecificationRequest"
    },
    "DisableApiStop": {
     "type": "boolean"
    },
    "EbsOptimized": {
     "type": "boolean"
    },
    "EnablePrimaryIpv6": {
     "type": "boolean"
    },
    "EnclaveOptions": {
     "$ref": "#/definitions/EnclaveOptionsRequest"
    },
    "HibernationOptions": {
     "$ref": "#/definitions/HibernationOptionsRequest"
    },
    "IamInstanceProfile": {
     "$ref": "#/definitions/IamInstanceProfileSpecification"
    },
    "ImageId": {
     "format": "AWS::EC2::Image.Id",
     "pattern": "^ami-[0-9a-zA-Z]{1,63}$",
     "type": "string"
    },
    "InstanceMarketOptions": {
     "$ref": "#/definitions/InstanceMarketOptionsRequest"
    },
    "InstanceType": {
     "pattern": "^([a-z0-9-]+)\\.([a-z0-9]+)$",
     "type": "string"
    },
    "Ipv6AddressCount": {
     "minimum": 0,
     "type": "integer"
    },
    "KeyName": {
     "maxLength": 64,
     "minLength": 0,
     "type": "string"
    },
    "LicenseSpecifications": {
     "items": {
      "$ref": "#/definitions/LicenseConfigurationRequest"
     },
     "type": "array"
    },
    "MaintenanceOptions": {
     "$ref": "#/definitions/InstanceMaintenanceOptionsRequest"
    },
    "MetadataOptions": {
     "$ref": "#/definitions/InstanceMetadataOptionsRequest"
    },
    "Monitoring": {
     "$ref": "#/definitions/RunInstancesMonitoringEnabled"
    },
    "NetworkInterfaces": {
     "items": {
      "$ref": "#/definitions/InstanceNetworkInterfaceSpecification"
     },
     "type": "array"
    },
    "NetworkPerformanceOptions": {
     "$ref": "#/definitions/InstanceNetworkPerformanceOptionsRequest"
    },
    "Placement": {
     "$ref": "#/definitions/Placement"
    },
    "PrivateDnsNameOptions": {
     "$ref": "#/definitions/PrivateDnsNameOptionsRequest"
    },
    "SubnetId": {
     "format": "AWS::EC2::Subnet.Id",
     "pattern": "^subnet-[0-9a-zA-Z]{1,63}$",
     "type": "string"
    },
    "TagSpecifications": {
     "items": {
      "$ref": "#/definitions/TagSpecification"
     },
     "maxItems": 30,
     "type": "array"
    },
    "UserData": {
     "maxLength": 16000,
     "minLength": 0,
     "type": "string"
    }
   },
   "required": [
    "ImageId",
    "InstanceType"
   ],
   "type": "object"
  },
  "ProvisionState": {
   "enum": [
    "ALLOCATING",
    "ALLOCATED",
    "DEALLOCATING",
    "DEALLOCATED",
    "ERROR_ALLOCATING",
    "ERROR_DEALLOCATING"
   ],
   "type": "string"
  },
  "Tags": {
   "items": {
    "$ref": "#/definitions/Tag"
   },
   "maxItems": 30,
   "minItems": 0,
   "type": "array"
  },
  "WorkspaceInstanceId": {
   "pattern": "^wsinst-[0-9a-zA-Z]{8,63}$",
   "type": "string"
  }
 },
 "readOnlyProperties": [
  "/properties/WorkspaceInstanceId",
  "/properties/ProvisionState",
  "/properties/EC2ManagedInstance",
  "/properties/EC2ManagedInstance/InstanceId"
 ],
 "required": [],
 "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-schema.git",
 "tagging": {
  "cloudFormationSystemTags": true,
  "tagOnCreate": true,
  "tagProperty": "/properties/Tags",
  "tagUpdatable": true,
  "taggable": true
 },
 "typeName": "AWS::WorkspacesInstances::WorkspaceInstance",
 "writeOnlyProperties": [
  "/properties/ManagedInstance"
 ]
}
