{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--aws-sagemaker-inferenceexperiment.json",
  "title": "AWSSageMakerInferenceExperimentProperties",
  "description": "Resource Type definition for AWS::SageMaker::InferenceExperiment. Source:- No source definition found, add manually please",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/lalcebo/json-schema/master/serverless/resources/cloudformation-modified/aws-sagemaker-inferenceexperiment.json",
    "sourceSha256": "9cc9d0b9d62d09c85ce81808c7e1a20ef29126f9a0711f3fb9e1c9142553c747"
  },
  "type": "object",
  "properties": {
    "Name": {
      "oneOf": [
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 120
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The name for the inference experiment."
    },
    "Type": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "ShadowMode"
          ]
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The type of the inference experiment that you want to run."
    },
    "Description": {
      "oneOf": [
        {
          "type": "string",
          "pattern": ".*",
          "minLength": 1,
          "maxLength": 1024
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The description of the inference experiment."
    },
    "RoleArn": {
      "oneOf": [
        {
          "type": "string",
          "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$",
          "minLength": 20,
          "maxLength": 2048
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume to access model artifacts and container images, and manage Amazon SageMaker Inference endpoints for model deployment."
    },
    "EndpointName": {
      "$ref": "#/$defs/EndpointName"
    },
    "Schedule": {
      "$ref": "#/$defs/InferenceExperimentSchedule"
    },
    "KmsKey": {
      "oneOf": [
        {
          "type": "string",
          "pattern": ".*",
          "maxLength": 2048
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The AWS Key Management Service (AWS KMS) key that Amazon SageMaker uses to encrypt data on the storage volume attached to the ML compute instance that hosts the endpoint."
    },
    "DataStorageConfig": {
      "$ref": "#/$defs/DataStorageConfig"
    },
    "ModelVariants": {
      "type": "array",
      "description": "An array of ModelVariantConfig objects. Each ModelVariantConfig object in the array describes the infrastructure configuration for the corresponding variant.",
      "maxItems": 2,
      "items": {
        "$ref": "#/$defs/ModelVariantConfig"
      }
    },
    "ShadowModeConfig": {
      "$ref": "#/$defs/ShadowModeConfig"
    },
    "Tags": {
      "description": "An array of key-value pairs to apply to this resource.",
      "type": "array",
      "maxItems": 50,
      "items": {
        "$ref": "#/$defs/Tag"
      }
    },
    "StatusReason": {
      "oneOf": [
        {
          "type": "string",
          "pattern": ".*",
          "minLength": 1,
          "maxLength": 1024
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The error message or client-specified reason from the StopInferenceExperiment API, that explains the status of the inference experiment."
    },
    "DesiredState": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "Running",
            "Completed",
            "Cancelled"
          ]
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The desired state of the experiment after starting or stopping operation."
    }
  },
  "typeName": "AWS::SageMaker::InferenceExperiment",
  "createOnlyProperties": [
    "/properties/Name",
    "/properties/Type",
    "/properties/RoleArn",
    "/properties/EndpointName",
    "/properties/KmsKey"
  ],
  "$defs": {
    "EndpointName": {
      "oneOf": [
        {
          "type": "string",
          "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*",
          "maxLength": 63
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The name of the endpoint used to run the inference experiment.",
      "title": "AWSSageMakerInferenceExperimentEndpointNameDefinition"
    },
    "EndpointMetadata": {
      "description": "The metadata of the endpoint on which the inference experiment ran.",
      "type": "object",
      "title": "AWSSageMakerInferenceExperimentEndpointMetadataDefinition",
      "properties": {
        "EndpointName": {
          "$ref": "#/$defs/EndpointName"
        },
        "EndpointConfigName": {
          "oneOf": [
            {
              "type": "string",
              "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*",
              "maxLength": 63
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The name of the endpoint configuration."
        },
        "EndpointStatus": {
          "oneOf": [
            {
              "type": "string",
              "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*",
              "enum": [
                "Creating",
                "Updating",
                "SystemUpdating",
                "RollingBack",
                "InService",
                "OutOfService",
                "Deleting",
                "Failed"
              ]
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The status of the endpoint. For possible values of the status of an endpoint."
        }
      },
      "required": [
        "EndpointName"
      ],
      "additionalProperties": false
    },
    "CaptureContentTypeHeader": {
      "description": "Configuration specifying how to treat different headers. If no headers are specified SageMaker will by default base64 encode when capturing the data.",
      "type": "object",
      "title": "AWSSageMakerInferenceExperimentCaptureContentTypeHeaderDefinition",
      "properties": {
        "CsvContentTypes": {
          "description": "The list of all content type headers that SageMaker will treat as CSV and capture accordingly.",
          "type": "array",
          "minItems": 1,
          "maxItems": 10,
          "items": {
            "type": "string",
            "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*/[a-zA-Z0-9](-*[a-zA-Z0-9.])*",
            "minLength": 1,
            "maxLength": 256
          }
        },
        "JsonContentTypes": {
          "description": "The list of all content type headers that SageMaker will treat as JSON and capture accordingly.",
          "type": "array",
          "minItems": 1,
          "maxItems": 10,
          "items": {
            "type": "string",
            "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*/[a-zA-Z0-9](-*[a-zA-Z0-9.])*",
            "minLength": 1,
            "maxLength": 256
          }
        }
      },
      "additionalProperties": false
    },
    "DataStorageConfig": {
      "description": "The Amazon S3 location and configuration for storing inference request and response data.",
      "type": "object",
      "title": "AWSSageMakerInferenceExperimentDataStorageConfigDefinition",
      "properties": {
        "Destination": {
          "oneOf": [
            {
              "type": "string",
              "pattern": "^(https|s3)://([^/])/?(.*)$",
              "maxLength": 512
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The Amazon S3 bucket where the inference request and response data is stored."
        },
        "KmsKey": {
          "oneOf": [
            {
              "type": "string",
              "pattern": ".*",
              "maxLength": 2048
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The AWS Key Management Service key that Amazon SageMaker uses to encrypt captured data at rest using Amazon S3 server-side encryption."
        },
        "ContentType": {
          "$ref": "#/$defs/CaptureContentTypeHeader"
        }
      },
      "required": [
        "Destination"
      ],
      "additionalProperties": false
    },
    "InferenceExperimentSchedule": {
      "description": "The duration for which you want the inference experiment to run.",
      "type": "object",
      "title": "AWSSageMakerInferenceExperimentInferenceExperimentScheduleDefinition",
      "properties": {
        "StartTime": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The timestamp at which the inference experiment started or will start."
        },
        "EndTime": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The timestamp at which the inference experiment ended or will end."
        }
      },
      "additionalProperties": false
    },
    "RealTimeInferenceConfig": {
      "description": "The infrastructure configuration for deploying the model to a real-time inference endpoint.",
      "type": "object",
      "title": "AWSSageMakerInferenceExperimentRealTimeInferenceConfigDefinition",
      "properties": {
        "InstanceType": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The instance type the model is deployed to."
        },
        "InstanceCount": {
          "description": "The number of instances of the type specified by InstanceType.",
          "type": "integer"
        }
      },
      "required": [
        "InstanceType",
        "InstanceCount"
      ],
      "additionalProperties": false
    },
    "ModelInfrastructureConfig": {
      "description": "The configuration for the infrastructure that the model will be deployed to.",
      "type": "object",
      "title": "AWSSageMakerInferenceExperimentModelInfrastructureConfigDefinition",
      "properties": {
        "InfrastructureType": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "RealTimeInference"
              ]
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The type of the inference experiment that you want to run."
        },
        "RealTimeInferenceConfig": {
          "$ref": "#/$defs/RealTimeInferenceConfig"
        }
      },
      "required": [
        "InfrastructureType",
        "RealTimeInferenceConfig"
      ],
      "additionalProperties": false
    },
    "ModelVariantConfig": {
      "description": "Contains information about the deployment options of a model.",
      "type": "object",
      "title": "AWSSageMakerInferenceExperimentModelVariantConfigDefinition",
      "properties": {
        "ModelName": {
          "oneOf": [
            {
              "type": "string",
              "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*",
              "maxLength": 63
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The name of the Amazon SageMaker Model entity."
        },
        "VariantName": {
          "oneOf": [
            {
              "type": "string",
              "pattern": "^[a-zA-Z0-9]([\\-a-zA-Z0-9]*[a-zA-Z0-9])?",
              "maxLength": 63
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The name of the variant."
        },
        "InfrastructureConfig": {
          "$ref": "#/$defs/ModelInfrastructureConfig"
        }
      },
      "required": [
        "ModelName",
        "VariantName",
        "InfrastructureConfig"
      ],
      "additionalProperties": false
    },
    "ShadowModelVariantConfig": {
      "description": "The name and sampling percentage of a shadow variant.",
      "type": "object",
      "title": "AWSSageMakerInferenceExperimentShadowModelVariantConfigDefinition",
      "properties": {
        "ShadowModelVariantName": {
          "oneOf": [
            {
              "type": "string",
              "pattern": "^[a-zA-Z0-9]([\\-a-zA-Z0-9]*[a-zA-Z0-9])?",
              "maxLength": 63
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The name of the shadow variant."
        },
        "SamplingPercentage": {
          "description": "The percentage of inference requests that Amazon SageMaker replicates from the production variant to the shadow variant.",
          "type": "integer",
          "maximum": 100
        }
      },
      "required": [
        "ShadowModelVariantName",
        "SamplingPercentage"
      ],
      "additionalProperties": false
    },
    "ShadowModeConfig": {
      "description": "The configuration of ShadowMode inference experiment type. Use this field to specify a production variant which takes all the inference requests, and a shadow variant to which Amazon SageMaker replicates a percentage of the inference requests. For the shadow variant also specify the percentage of requests that Amazon SageMaker replicates.",
      "type": "object",
      "title": "AWSSageMakerInferenceExperimentShadowModeConfigDefinition",
      "properties": {
        "SourceModelVariantName": {
          "oneOf": [
            {
              "type": "string",
              "pattern": "^[a-zA-Z0-9]([\\-a-zA-Z0-9]*[a-zA-Z0-9])?",
              "maxLength": 63
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The name of the production variant, which takes all the inference requests."
        },
        "ShadowModelVariants": {
          "description": "List of shadow variant configurations.",
          "type": "array",
          "minItems": 1,
          "maxItems": 1,
          "items": {
            "$ref": "#/$defs/ShadowModelVariantConfig"
          }
        }
      },
      "required": [
        "SourceModelVariantName",
        "ShadowModelVariants"
      ],
      "additionalProperties": false
    },
    "Tag": {
      "description": "A key-value pair to associate with a resource.",
      "type": "object",
      "title": "AWSSageMakerInferenceExperimentTagDefinition",
      "properties": {
        "Key": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. "
        },
        "Value": {
          "oneOf": [
            {
              "type": "string",
              "maxLength": 256,
              "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. "
        }
      },
      "required": [
        "Key",
        "Value"
      ],
      "additionalProperties": false
    }
  },
  "readOnlyProperties": [
    "/properties/Arn",
    "/properties/CreationTime",
    "/properties/LastModifiedTime",
    "/properties/EndpointMetadata",
    "/properties/Status"
  ],
  "additionalProperties": false,
  "required": [
    "Name",
    "Type",
    "RoleArn",
    "EndpointName",
    "ModelVariants"
  ],
  "primaryIdentifier": [
    "/properties/Name"
  ],
  "tagging": {
    "taggable": true,
    "tagOnCreate": true,
    "tagUpdatable": true,
    "cloudFormationSystemTags": false,
    "tagProperty": "/properties/Tags"
  }
}
