{
 "additionalProperties": false,
 "createOnlyProperties": [
  "/properties/PeerVpcAwsAccountId",
  "/properties/BuildId",
  "/properties/EC2InstanceType",
  "/properties/ServerLaunchParameters",
  "/properties/CertificateConfiguration",
  "/properties/LogPaths",
  "/properties/ServerLaunchPath",
  "/properties/FleetType",
  "/properties/ScriptId",
  "/properties/PeerVpcId",
  "/properties/InstanceRoleARN"
 ],
 "definitions": {
  "CertificateConfiguration": {
   "additionalProperties": false,
   "properties": {
    "CertificateType": {
     "type": "string"
    }
   },
   "required": [
    "CertificateType"
   ],
   "type": "object"
  },
  "IpPermission": {
   "additionalProperties": false,
   "properties": {
    "FromPort": {
     "type": "integer"
    },
    "IpRange": {
     "type": "string"
    },
    "Protocol": {
     "type": "string"
    },
    "ToPort": {
     "type": "integer"
    }
   },
   "required": [
    "IpRange",
    "FromPort",
    "ToPort",
    "Protocol"
   ],
   "type": "object"
  },
  "ResourceCreationLimitPolicy": {
   "additionalProperties": false,
   "properties": {
    "NewGameSessionsPerCreator": {
     "type": "integer"
    },
    "PolicyPeriodInMinutes": {
     "type": "integer"
    }
   },
   "type": "object"
  },
  "RuntimeConfiguration": {
   "additionalProperties": false,
   "properties": {
    "GameSessionActivationTimeoutSeconds": {
     "type": "integer"
    },
    "MaxConcurrentGameSessionActivations": {
     "type": "integer"
    },
    "ServerProcesses": {
     "items": {
      "$ref": "#/definitions/ServerProcess"
     },
     "minItems": 1,
     "type": "array",
     "uniqueItems": true
    }
   },
   "type": "object"
  },
  "ServerProcess": {
   "additionalProperties": false,
   "properties": {
    "ConcurrentExecutions": {
     "type": "integer"
    },
    "LaunchPath": {
     "type": "string"
    },
    "Parameters": {
     "pattern": "^[A-Za-z0-9_:.+\\/\\\\\\- =@;{},?'\\[\\]\"]+$",
     "type": "string"
    }
   },
   "required": [
    "ConcurrentExecutions",
    "LaunchPath"
   ],
   "type": "object"
  }
 },
 "primaryIdentifier": [
  "/properties/Id"
 ],
 "properties": {
  "BuildId": {
   "type": "string"
  },
  "CertificateConfiguration": {
   "$ref": "#/definitions/CertificateConfiguration"
  },
  "Description": {
   "type": "string"
  },
  "DesiredEC2Instances": {
   "type": "integer"
  },
  "EC2InboundPermissions": {
   "items": {
    "$ref": "#/definitions/IpPermission"
   },
   "minItems": 0,
   "type": "array",
   "uniqueItems": true
  },
  "EC2InstanceType": {
   "type": "string"
  },
  "FleetType": {
   "type": "string"
  },
  "Id": {
   "type": "string"
  },
  "InstanceRoleARN": {
   "format": "AWS::IAM::Role.Arn",
   "type": "string"
  },
  "LogPaths": {
   "items": {
    "maxLength": 1024,
    "minLength": 1,
    "type": "string"
   },
   "type": "array",
   "uniqueItems": true
  },
  "MaxSize": {
   "type": "integer"
  },
  "MetricGroups": {
   "items": {
    "maxLength": 255,
    "minLength": 1,
    "type": "string"
   },
   "minItems": 0,
   "type": "array",
   "uniqueItems": true
  },
  "MinSize": {
   "type": "integer"
  },
  "Name": {
   "type": "string"
  },
  "NewGameSessionProtectionPolicy": {
   "type": "string"
  },
  "PeerVpcAwsAccountId": {
   "type": "string"
  },
  "PeerVpcId": {
   "type": "string"
  },
  "ResourceCreationLimitPolicy": {
   "$ref": "#/definitions/ResourceCreationLimitPolicy"
  },
  "RuntimeConfiguration": {
   "$ref": "#/definitions/RuntimeConfiguration"
  },
  "ScriptId": {
   "type": "string"
  },
  "ServerLaunchParameters": {
   "pattern": "^[A-Za-z0-9_:.+\\/\\\\\\- =@;{},?'\\[\\]\"]+$",
   "type": "string"
  },
  "ServerLaunchPath": {
   "pattern": "^[A-Za-z0-9_:.+\\/\\\\\\- ]+$",
   "type": "string"
  }
 },
 "readOnlyProperties": [
  "/properties/Id"
 ],
 "required": [
  "EC2InstanceType",
  "Name"
 ],
 "typeName": "AWS::GameLift::Fleet"
}
