{
 "additionalProperties": false,
 "createOnlyProperties": [
  "/properties/EndpointName"
 ],
 "definitions": {
  "Alarm": {
   "additionalProperties": false,
   "properties": {
    "AlarmName": {
     "maxLength": 255,
     "minLength": 1,
     "pattern": "^(?!\\s*$).+$",
     "type": "string"
    }
   },
   "required": [
    "AlarmName"
   ],
   "type": "object"
  },
  "AutoRollbackConfig": {
   "additionalProperties": false,
   "properties": {
    "Alarms": {
     "items": {
      "$ref": "#/definitions/Alarm"
     },
     "maxItems": 10,
     "minItems": 1,
     "type": "array",
     "uniqueItems": false
    }
   },
   "required": [
    "Alarms"
   ],
   "type": "object"
  },
  "BlueGreenUpdatePolicy": {
   "additionalProperties": false,
   "properties": {
    "MaximumExecutionTimeoutInSeconds": {
     "maximum": 28800,
     "minimum": 600,
     "type": "integer"
    },
    "TerminationWaitInSeconds": {
     "maximum": 3600,
     "minimum": 0,
     "type": "integer"
    },
    "TrafficRoutingConfiguration": {
     "$ref": "#/definitions/TrafficRoutingConfig"
    }
   },
   "required": [
    "TrafficRoutingConfiguration"
   ],
   "type": "object"
  },
  "CapacitySize": {
   "additionalProperties": false,
   "properties": {
    "Type": {
     "enum": [
      "CAPACITY_PERCENT",
      "INSTANCE_COUNT"
     ],
     "type": "string"
    },
    "Value": {
     "minimum": 1,
     "type": "integer"
    }
   },
   "required": [
    "Type",
    "Value"
   ],
   "type": "object"
  },
  "DeploymentConfig": {
   "additionalProperties": false,
   "properties": {
    "AutoRollbackConfiguration": {
     "$ref": "#/definitions/AutoRollbackConfig"
    },
    "BlueGreenUpdatePolicy": {
     "$ref": "#/definitions/BlueGreenUpdatePolicy"
    },
    "RollingUpdatePolicy": {
     "$ref": "#/definitions/RollingUpdatePolicy"
    }
   },
   "type": "object"
  },
  "RollingUpdatePolicy": {
   "additionalProperties": false,
   "properties": {
    "MaximumBatchSize": {
     "$ref": "#/definitions/CapacitySize"
    },
    "MaximumExecutionTimeoutInSeconds": {
     "maximum": 28800,
     "minimum": 600,
     "type": "integer"
    },
    "RollbackMaximumBatchSize": {
     "$ref": "#/definitions/CapacitySize"
    },
    "WaitIntervalInSeconds": {
     "maximum": 3600,
     "minimum": 0,
     "type": "integer"
    }
   },
   "required": [
    "MaximumBatchSize",
    "WaitIntervalInSeconds"
   ],
   "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": [
    "Value",
    "Key"
   ],
   "type": "object"
  },
  "TrafficRoutingConfig": {
   "additionalProperties": false,
   "properties": {
    "CanarySize": {
     "$ref": "#/definitions/CapacitySize"
    },
    "LinearStepSize": {
     "$ref": "#/definitions/CapacitySize"
    },
    "Type": {
     "enum": [
      "ALL_AT_ONCE",
      "CANARY",
      "LINEAR"
     ],
     "type": "string"
    },
    "WaitIntervalInSeconds": {
     "maximum": 3600,
     "minimum": 0,
     "type": "integer"
    }
   },
   "required": [
    "Type"
   ],
   "type": "object"
  },
  "VariantProperty": {
   "additionalProperties": false,
   "properties": {
    "VariantPropertyType": {
     "type": "string"
    }
   },
   "type": "object"
  }
 },
 "primaryIdentifier": [
  "/properties/Id"
 ],
 "properties": {
  "DeploymentConfig": {
   "$ref": "#/definitions/DeploymentConfig"
  },
  "EndpointConfigName": {
   "maxLength": 63,
   "minLength": 0,
   "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$",
   "type": "string"
  },
  "EndpointName": {
   "maxLength": 63,
   "minLength": 0,
   "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$",
   "type": "string"
  },
  "ExcludeRetainedVariantProperties": {
   "items": {
    "$ref": "#/definitions/VariantProperty"
   },
   "type": "array",
   "uniqueItems": false
  },
  "Id": {
   "type": "string"
  },
  "RetainAllVariantProperties": {
   "type": "boolean"
  },
  "RetainDeploymentConfig": {
   "type": "boolean"
  },
  "Tags": {
   "items": {
    "$ref": "#/definitions/Tag"
   },
   "maxItems": 50,
   "minItems": 0,
   "type": "array",
   "uniqueItems": false
  }
 },
 "readOnlyProperties": [
  "/properties/Id"
 ],
 "required": [
  "EndpointConfigName"
 ],
 "typeName": "AWS::SageMaker::Endpoint"
}
