{
  "description": "Model is the Schema for the Models API",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": "string"
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "ModelSpec defines the desired state of Model.\n\nThe properties of a model as returned by the Search (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Search.html)\nAPI.",
      "properties": {
        "containers": {
          "description": "Specifies the containers in the inference pipeline.",
          "items": {
            "description": "Describes the container, as part of model definition.",
            "properties": {
              "containerHostname": {
                "type": "string"
              },
              "environment": {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              "image": {
                "type": "string"
              },
              "imageConfig": {
                "description": "Specifies whether the model container is in Amazon ECR or a private Docker\nregistry accessible from your Amazon Virtual Private Cloud (VPC).",
                "properties": {
                  "repositoryAccessMode": {
                    "type": "string"
                  },
                  "repositoryAuthConfig": {
                    "description": "Specifies an authentication configuration for the private docker registry\nwhere your model image is hosted. Specify a value for this property only\nif you specified Vpc as the value for the RepositoryAccessMode field of the\nImageConfig object that you passed to a call to CreateModel and the private\nDocker registry where the model image is hosted requires authentication.",
                    "properties": {
                      "repositoryCredentialsProviderARN": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "inferenceSpecificationName": {
                "type": "string"
              },
              "mode": {
                "type": "string"
              },
              "modelDataSource": {
                "description": "Specifies the location of ML model data to deploy. If specified, you must\nspecify one and only one of the available data sources.",
                "properties": {
                  "s3DataSource": {
                    "description": "Specifies the S3 location of ML model data to deploy.",
                    "properties": {
                      "compressionType": {
                        "type": "string"
                      },
                      "modelAccessConfig": {
                        "description": "The access configuration file to control access to the ML model. You can\nexplicitly accept the model end-user license agreement (EULA) within the\nModelAccessConfig.\n\n   * If you are a Jumpstart user, see the End-user license agreements (https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-foundation-models-choose.html#jumpstart-foundation-models-choose-eula)\n   section for more details on accepting the EULA.\n\n   * If you are an AutoML user, see the Optional Parameters section of Create\n   an AutoML job to fine-tune text generation models using the API for details\n   on How to set the EULA acceptance when fine-tuning a model using the AutoML\n   API (https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-create-experiment-finetune-llms.html#autopilot-llms-finetuning-api-optional-params).",
                        "properties": {
                          "acceptEula": {
                            "type": "boolean"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "s3DataType": {
                        "type": "string"
                      },
                      "s3URI": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "modelDataURL": {
                "type": "string"
              },
              "modelPackageName": {
                "type": "string"
              },
              "multiModelConfig": {
                "description": "Specifies additional configuration for hosting multi-model endpoints.",
                "properties": {
                  "modelCacheSetting": {
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "enableNetworkIsolation": {
          "description": "Isolates the model container. No inbound or outbound network calls can be\nmade to or from the model container.",
          "type": "boolean"
        },
        "executionRoleARN": {
          "description": "The Amazon Resource Name (ARN) of the IAM role that SageMaker can assume\nto access model artifacts and docker image for deployment on ML compute instances\nor for batch transform jobs. Deploying on ML compute instances is part of\nmodel hosting. For more information, see SageMaker Roles (https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html).\n\nTo be able to pass this role to SageMaker, the caller of this API must have\nthe iam:PassRole permission.\n\nRegex Pattern: `^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$`",
          "type": "string"
        },
        "inferenceExecutionConfig": {
          "description": "Specifies details of how containers in a multi-container endpoint are called.",
          "properties": {
            "mode": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "modelName": {
          "description": "The name of the new model.\n\nRegex Pattern: `^[a-zA-Z0-9]([\\-a-zA-Z0-9]*[a-zA-Z0-9])?$`",
          "type": "string"
        },
        "primaryContainer": {
          "description": "The location of the primary docker image containing inference code, associated\nartifacts, and custom environment map that the inference code uses when the\nmodel is deployed for predictions.",
          "properties": {
            "containerHostname": {
              "type": "string"
            },
            "environment": {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            "image": {
              "type": "string"
            },
            "imageConfig": {
              "description": "Specifies whether the model container is in Amazon ECR or a private Docker\nregistry accessible from your Amazon Virtual Private Cloud (VPC).",
              "properties": {
                "repositoryAccessMode": {
                  "type": "string"
                },
                "repositoryAuthConfig": {
                  "description": "Specifies an authentication configuration for the private docker registry\nwhere your model image is hosted. Specify a value for this property only\nif you specified Vpc as the value for the RepositoryAccessMode field of the\nImageConfig object that you passed to a call to CreateModel and the private\nDocker registry where the model image is hosted requires authentication.",
                  "properties": {
                    "repositoryCredentialsProviderARN": {
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "inferenceSpecificationName": {
              "type": "string"
            },
            "mode": {
              "type": "string"
            },
            "modelDataSource": {
              "description": "Specifies the location of ML model data to deploy. If specified, you must\nspecify one and only one of the available data sources.",
              "properties": {
                "s3DataSource": {
                  "description": "Specifies the S3 location of ML model data to deploy.",
                  "properties": {
                    "compressionType": {
                      "type": "string"
                    },
                    "modelAccessConfig": {
                      "description": "The access configuration file to control access to the ML model. You can\nexplicitly accept the model end-user license agreement (EULA) within the\nModelAccessConfig.\n\n   * If you are a Jumpstart user, see the End-user license agreements (https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-foundation-models-choose.html#jumpstart-foundation-models-choose-eula)\n   section for more details on accepting the EULA.\n\n   * If you are an AutoML user, see the Optional Parameters section of Create\n   an AutoML job to fine-tune text generation models using the API for details\n   on How to set the EULA acceptance when fine-tuning a model using the AutoML\n   API (https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-create-experiment-finetune-llms.html#autopilot-llms-finetuning-api-optional-params).",
                      "properties": {
                        "acceptEula": {
                          "type": "boolean"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "s3DataType": {
                      "type": "string"
                    },
                    "s3URI": {
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "modelDataURL": {
              "type": "string"
            },
            "modelPackageName": {
              "type": "string"
            },
            "multiModelConfig": {
              "description": "Specifies additional configuration for hosting multi-model endpoints.",
              "properties": {
                "modelCacheSetting": {
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "tags": {
          "description": "An array of key-value pairs. You can use tags to categorize your Amazon Web\nServices resources in different ways, for example, by purpose, owner, or\nenvironment. For more information, see Tagging Amazon Web Services Resources\n(https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html).",
          "items": {
            "description": "A tag object that consists of a key and an optional value, used to manage\nmetadata for SageMaker Amazon Web Services resources.\n\nYou can add tags to notebook instances, training jobs, hyperparameter tuning\njobs, batch transform jobs, models, labeling jobs, work teams, endpoint configurations,\nand endpoints. For more information on adding tags to SageMaker resources,\nsee AddTags (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AddTags.html).\n\nFor more information on adding metadata to your Amazon Web Services resources\nwith tagging, see Tagging Amazon Web Services resources (https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html).\nFor advice on best practices for managing Amazon Web Services resources with\ntagging, see Tagging Best Practices: Implement an Effective Amazon Web Services\nResource Tagging Strategy (https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf).",
            "properties": {
              "key": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "vpcConfig": {
          "description": "A VpcConfig (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_VpcConfig.html)\nobject that specifies the VPC that you want your model to connect to. Control\naccess to and from your model container by configuring the VPC. VpcConfig\nis used in hosting services and in batch transform. For more information,\nsee Protect Endpoints by Using an Amazon Virtual Private Cloud (https://docs.aws.amazon.com/sagemaker/latest/dg/host-vpc.html)\nand Protect Data in Batch Transform Jobs by Using an Amazon Virtual Private\nCloud (https://docs.aws.amazon.com/sagemaker/latest/dg/batch-vpc.html).",
          "properties": {
            "securityGroupIDs": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "subnets": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object",
          "additionalProperties": false
        }
      },
      "required": [
        "modelName"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "ModelStatus defines the observed state of Model",
      "properties": {
        "ackResourceMetadata": {
          "description": "All CRs managed by ACK have a common `Status.ACKResourceMetadata` member\nthat is used to contain resource sync state, account ownership,\nconstructed ARN for the resource",
          "properties": {
            "arn": {
              "description": "ARN is the Amazon Resource Name for the resource. This is a\nglobally-unique identifier and is set only by the ACK service controller\nonce the controller has orchestrated the creation of the resource OR\nwhen it has verified that an \"adopted\" resource (a resource where the\nARN annotation was set by the Kubernetes user on the CR) exists and\nmatches the supplied CR's Spec field values.\nhttps://github.com/aws/aws-controllers-k8s/issues/270",
              "type": "string"
            },
            "ownerAccountID": {
              "description": "OwnerAccountID is the AWS Account ID of the account that owns the\nbackend AWS service API resource.",
              "type": "string"
            },
            "region": {
              "description": "Region is the AWS region in which the resource exists or will exist.",
              "type": "string"
            }
          },
          "required": [
            "ownerAccountID",
            "region"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "conditions": {
          "description": "All CRs managed by ACK have a common `Status.Conditions` member that\ncontains a collection of `ackv1alpha1.Condition` objects that describe\nthe various terminal states of the CR and its backend AWS service API\nresource",
          "items": {
            "description": "Condition is the common struct used by all CRDs managed by ACK service\ncontrollers to indicate terminal states  of the CR and its backend AWS\nservice API resource",
            "properties": {
              "lastTransitionTime": {
                "description": "Last time the condition transitioned from one status to another.",
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "description": "A human readable message indicating details about the transition.",
                "type": "string"
              },
              "reason": {
                "description": "The reason for the condition's last transition.",
                "type": "string"
              },
              "status": {
                "description": "Status of the condition, one of True, False, Unknown.",
                "type": "string"
              },
              "type": {
                "description": "Type is the type of the Condition",
                "type": "string"
              }
            },
            "required": [
              "status",
              "type"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
