{
 "additionalProperties": false,
 "createOnlyProperties": [
  "/properties/Name",
  "/properties/Type",
  "/properties/RoleArn",
  "/properties/EndpointName",
  "/properties/KmsKey"
 ],
 "definitions": {
  "CaptureContentTypeHeader": {
   "additionalProperties": false,
   "properties": {
    "CsvContentTypes": {
     "items": {
      "maxLength": 256,
      "minLength": 1,
      "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*/[a-zA-Z0-9](-*[a-zA-Z0-9.])*",
      "type": "string"
     },
     "maxItems": 10,
     "minItems": 1,
     "type": "array"
    },
    "JsonContentTypes": {
     "items": {
      "maxLength": 256,
      "minLength": 1,
      "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*/[a-zA-Z0-9](-*[a-zA-Z0-9.])*",
      "type": "string"
     },
     "maxItems": 10,
     "minItems": 1,
     "type": "array"
    }
   },
   "type": "object"
  },
  "DataStorageConfig": {
   "additionalProperties": false,
   "properties": {
    "ContentType": {
     "$ref": "#/definitions/CaptureContentTypeHeader"
    },
    "Destination": {
     "maxLength": 512,
     "minLength": 0,
     "pattern": "^(https|s3)://([^/])/?(.*)$",
     "type": "string"
    },
    "KmsKey": {
     "maxLength": 2048,
     "minLength": 0,
     "pattern": ".*",
     "type": "string"
    }
   },
   "required": [
    "Destination"
   ],
   "type": "object"
  },
  "EndpointMetadata": {
   "additionalProperties": false,
   "properties": {
    "EndpointConfigName": {
     "maxLength": 63,
     "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*",
     "type": "string"
    },
    "EndpointName": {
     "$ref": "#/definitions/EndpointName"
    },
    "EndpointStatus": {
     "enum": [
      "Creating",
      "Updating",
      "SystemUpdating",
      "RollingBack",
      "InService",
      "OutOfService",
      "Deleting",
      "Failed"
     ],
     "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*",
     "type": "string"
    }
   },
   "required": [
    "EndpointName"
   ],
   "type": "object"
  },
  "EndpointName": {
   "maxLength": 63,
   "minLength": 0,
   "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*",
   "type": "string"
  },
  "InferenceExperimentSchedule": {
   "additionalProperties": false,
   "properties": {
    "EndTime": {
     "type": "string"
    },
    "StartTime": {
     "type": "string"
    }
   },
   "type": "object"
  },
  "ModelInfrastructureConfig": {
   "additionalProperties": false,
   "properties": {
    "InfrastructureType": {
     "enum": [
      "RealTimeInference"
     ],
     "type": "string"
    },
    "RealTimeInferenceConfig": {
     "$ref": "#/definitions/RealTimeInferenceConfig"
    }
   },
   "required": [
    "InfrastructureType",
    "RealTimeInferenceConfig"
   ],
   "type": "object"
  },
  "ModelVariantConfig": {
   "additionalProperties": false,
   "properties": {
    "InfrastructureConfig": {
     "$ref": "#/definitions/ModelInfrastructureConfig"
    },
    "ModelName": {
     "maxLength": 63,
     "minLength": 0,
     "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*",
     "type": "string"
    },
    "VariantName": {
     "maxLength": 63,
     "minLength": 0,
     "pattern": "^[a-zA-Z0-9]([\\-a-zA-Z0-9]*[a-zA-Z0-9])?",
     "type": "string"
    }
   },
   "required": [
    "ModelName",
    "VariantName",
    "InfrastructureConfig"
   ],
   "type": "object"
  },
  "RealTimeInferenceConfig": {
   "additionalProperties": false,
   "properties": {
    "InstanceCount": {
     "minimum": 0,
     "type": "integer"
    },
    "InstanceType": {
     "enum": [
      "ml.c4.2xlarge",
      "ml.c4.4xlarge",
      "ml.c4.8xlarge",
      "ml.c4.xlarge",
      "ml.c5.18xlarge",
      "ml.c5.2xlarge",
      "ml.c5.4xlarge",
      "ml.c5.9xlarge",
      "ml.c5.xlarge",
      "ml.c5d.18xlarge",
      "ml.c5d.2xlarge",
      "ml.c5d.4xlarge",
      "ml.c5d.9xlarge",
      "ml.c5d.xlarge",
      "ml.c6i.12xlarge",
      "ml.c6i.16xlarge",
      "ml.c6i.24xlarge",
      "ml.c6i.2xlarge",
      "ml.c6i.32xlarge",
      "ml.c6i.4xlarge",
      "ml.c6i.8xlarge",
      "ml.c6i.large",
      "ml.c6i.xlarge",
      "ml.c6id.12xlarge",
      "ml.c6id.16xlarge",
      "ml.c6id.24xlarge",
      "ml.c6id.2xlarge",
      "ml.c6id.32xlarge",
      "ml.c6id.4xlarge",
      "ml.c6id.8xlarge",
      "ml.c6id.large",
      "ml.c6id.xlarge",
      "ml.c7i.12xlarge",
      "ml.c7i.16xlarge",
      "ml.c7i.24xlarge",
      "ml.c7i.2xlarge",
      "ml.c7i.48xlarge",
      "ml.c7i.4xlarge",
      "ml.c7i.8xlarge",
      "ml.c7i.large",
      "ml.c7i.xlarge",
      "ml.g4dn.12xlarge",
      "ml.g4dn.16xlarge",
      "ml.g4dn.2xlarge",
      "ml.g4dn.4xlarge",
      "ml.g4dn.8xlarge",
      "ml.g4dn.xlarge",
      "ml.g5.12xlarge",
      "ml.g5.16xlarge",
      "ml.g5.24xlarge",
      "ml.g5.2xlarge",
      "ml.g5.48xlarge",
      "ml.g5.4xlarge",
      "ml.g5.8xlarge",
      "ml.g5.xlarge",
      "ml.g6.12xlarge",
      "ml.g6.16xlarge",
      "ml.g6.24xlarge",
      "ml.g6.2xlarge",
      "ml.g6.48xlarge",
      "ml.g6.4xlarge",
      "ml.g6.8xlarge",
      "ml.g6.xlarge",
      "ml.inf1.24xlarge",
      "ml.inf1.2xlarge",
      "ml.inf1.6xlarge",
      "ml.inf1.xlarge",
      "ml.inf2.24xlarge",
      "ml.inf2.48xlarge",
      "ml.inf2.8xlarge",
      "ml.inf2.xlarge",
      "ml.m4.10xlarge",
      "ml.m4.16xlarge",
      "ml.m4.2xlarge",
      "ml.m4.4xlarge",
      "ml.m4.xlarge",
      "ml.m5.12xlarge",
      "ml.m5.24xlarge",
      "ml.m5.2xlarge",
      "ml.m5.4xlarge",
      "ml.m5.xlarge",
      "ml.m5d.12xlarge",
      "ml.m5d.16xlarge",
      "ml.m5d.24xlarge",
      "ml.m5d.2xlarge",
      "ml.m5d.4xlarge",
      "ml.m5d.8xlarge",
      "ml.m5d.large",
      "ml.m5d.xlarge",
      "ml.m6i.12xlarge",
      "ml.m6i.16xlarge",
      "ml.m6i.24xlarge",
      "ml.m6i.2xlarge",
      "ml.m6i.32xlarge",
      "ml.m6i.4xlarge",
      "ml.m6i.8xlarge",
      "ml.m6i.large",
      "ml.m6i.xlarge",
      "ml.m6id.12xlarge",
      "ml.m6id.16xlarge",
      "ml.m6id.24xlarge",
      "ml.m6id.2xlarge",
      "ml.m6id.32xlarge",
      "ml.m6id.4xlarge",
      "ml.m6id.8xlarge",
      "ml.m6id.large",
      "ml.m6id.xlarge",
      "ml.m7i.12xlarge",
      "ml.m7i.16xlarge",
      "ml.m7i.24xlarge",
      "ml.m7i.2xlarge",
      "ml.m7i.48xlarge",
      "ml.m7i.4xlarge",
      "ml.m7i.8xlarge",
      "ml.m7i.large",
      "ml.m7i.xlarge",
      "ml.p2.16xlarge",
      "ml.p2.8xlarge",
      "ml.p2.xlarge",
      "ml.p3.16xlarge",
      "ml.p3.2xlarge",
      "ml.p3.8xlarge",
      "ml.p3dn.24xlarge",
      "ml.p4d.24xlarge",
      "ml.p4de.24xlarge",
      "ml.p5.48xlarge",
      "ml.p6-b200.48xlarge",
      "ml.r5.12xlarge",
      "ml.r5.16xlarge",
      "ml.r5.24xlarge",
      "ml.r5.2xlarge",
      "ml.r5.4xlarge",
      "ml.r5.8xlarge",
      "ml.r5.large",
      "ml.r5.xlarge",
      "ml.r6i.12xlarge",
      "ml.r6i.16xlarge",
      "ml.r6i.24xlarge",
      "ml.r6i.2xlarge",
      "ml.r6i.32xlarge",
      "ml.r6i.4xlarge",
      "ml.r6i.8xlarge",
      "ml.r6i.large",
      "ml.r6i.xlarge",
      "ml.r6id.12xlarge",
      "ml.r6id.16xlarge",
      "ml.r6id.24xlarge",
      "ml.r6id.2xlarge",
      "ml.r6id.32xlarge",
      "ml.r6id.4xlarge",
      "ml.r6id.8xlarge",
      "ml.r6id.large",
      "ml.r6id.xlarge",
      "ml.r7i.12xlarge",
      "ml.r7i.16xlarge",
      "ml.r7i.24xlarge",
      "ml.r7i.2xlarge",
      "ml.r7i.48xlarge",
      "ml.r7i.4xlarge",
      "ml.r7i.8xlarge",
      "ml.r7i.large",
      "ml.r7i.xlarge",
      "ml.t2.2xlarge",
      "ml.t2.large",
      "ml.t2.medium",
      "ml.t2.xlarge",
      "ml.t3.2xlarge",
      "ml.t3.large",
      "ml.t3.medium",
      "ml.t3.xlarge",
      "ml.trn1.2xlarge",
      "ml.trn1.32xlarge",
      "ml.trn1n.32xlarge"
     ],
     "type": "string"
    }
   },
   "required": [
    "InstanceType",
    "InstanceCount"
   ],
   "type": "object"
  },
  "ShadowModeConfig": {
   "additionalProperties": false,
   "properties": {
    "ShadowModelVariants": {
     "items": {
      "$ref": "#/definitions/ShadowModelVariantConfig"
     },
     "maxItems": 1,
     "minItems": 1,
     "type": "array"
    },
    "SourceModelVariantName": {
     "maxLength": 63,
     "minLength": 0,
     "pattern": "^[a-zA-Z0-9]([\\-a-zA-Z0-9]*[a-zA-Z0-9])?",
     "type": "string"
    }
   },
   "required": [
    "SourceModelVariantName",
    "ShadowModelVariants"
   ],
   "type": "object"
  },
  "ShadowModelVariantConfig": {
   "additionalProperties": false,
   "properties": {
    "SamplingPercentage": {
     "maximum": 100,
     "type": "integer"
    },
    "ShadowModelVariantName": {
     "maxLength": 63,
     "minLength": 0,
     "pattern": "^[a-zA-Z0-9]([\\-a-zA-Z0-9]*[a-zA-Z0-9])?",
     "type": "string"
    }
   },
   "required": [
    "ShadowModelVariantName",
    "SamplingPercentage"
   ],
   "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",
    "Value"
   ],
   "type": "object"
  }
 },
 "primaryIdentifier": [
  "/properties/Name"
 ],
 "properties": {
  "Arn": {
   "maxLength": 256,
   "minLength": 20,
   "pattern": "^arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:inference-experiment/[a-zA-Z_0-9+=,.@\\-_/]+$",
   "type": "string"
  },
  "CreationTime": {
   "type": "string"
  },
  "DataStorageConfig": {
   "$ref": "#/definitions/DataStorageConfig"
  },
  "Description": {
   "maxLength": 1024,
   "minLength": 1,
   "pattern": ".*",
   "type": "string"
  },
  "DesiredState": {
   "enum": [
    "Running",
    "Completed",
    "Cancelled"
   ],
   "type": "string"
  },
  "EndpointMetadata": {
   "$ref": "#/definitions/EndpointMetadata"
  },
  "EndpointName": {
   "$ref": "#/definitions/EndpointName"
  },
  "KmsKey": {
   "maxLength": 2048,
   "minLength": 0,
   "pattern": ".*",
   "type": "string"
  },
  "LastModifiedTime": {
   "type": "string"
  },
  "ModelVariants": {
   "items": {
    "$ref": "#/definitions/ModelVariantConfig"
   },
   "maxItems": 2,
   "minItems": 1,
   "type": "array"
  },
  "Name": {
   "maxLength": 120,
   "minLength": 1,
   "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,119}$",
   "type": "string"
  },
  "RoleArn": {
   "format": "AWS::IAM::Role.Arn",
   "maxLength": 2048,
   "minLength": 20,
   "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$",
   "type": "string"
  },
  "Schedule": {
   "$ref": "#/definitions/InferenceExperimentSchedule"
  },
  "ShadowModeConfig": {
   "$ref": "#/definitions/ShadowModeConfig"
  },
  "Status": {
   "enum": [
    "Creating",
    "Created",
    "Updating",
    "Starting",
    "Stopping",
    "Running",
    "Completed",
    "Cancelled"
   ],
   "type": "string"
  },
  "StatusReason": {
   "maxLength": 1024,
   "minLength": 1,
   "pattern": ".*",
   "type": "string"
  },
  "Tags": {
   "items": {
    "$ref": "#/definitions/Tag"
   },
   "maxItems": 50,
   "minItems": 0,
   "type": "array"
  },
  "Type": {
   "enum": [
    "ShadowMode"
   ],
   "type": "string"
  }
 },
 "readOnlyProperties": [
  "/properties/Arn",
  "/properties/CreationTime",
  "/properties/LastModifiedTime",
  "/properties/EndpointMetadata",
  "/properties/Status"
 ],
 "required": [
  "Name",
  "Type",
  "RoleArn",
  "EndpointName",
  "ModelVariants"
 ],
 "tagging": {
  "cloudFormationSystemTags": false,
  "tagOnCreate": true,
  "tagProperty": "/properties/Tags",
  "tagUpdatable": true,
  "taggable": true
 },
 "typeName": "AWS::SageMaker::InferenceExperiment"
}
