{
  "description": "TrainingJob is the Schema for the trainingjobs API",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More 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. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "TrainingJobSpec defines the desired state of TrainingJob",
      "properties": {
        "algorithmSpecification": {
          "properties": {
            "algorithmName": {
              "minLength": 1,
              "type": "string"
            },
            "metricDefinitions": {
              "items": {
                "properties": {
                  "name": {
                    "minLength": 1,
                    "type": "string"
                  },
                  "regex": {
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "regex"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "trainingImage": {
              "minLength": 1,
              "type": "string"
            },
            "trainingInputMode": {
              "enum": [
                "File",
                "Pipe"
              ],
              "type": "string"
            }
          },
          "required": [
            "trainingInputMode"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "checkpointConfig": {
          "properties": {
            "localPath": {
              "type": "string"
            },
            "s3Uri": {
              "pattern": "^(https|s3)://([^/]+)/?(.*)$",
              "type": "string"
            }
          },
          "required": [
            "s3Uri"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "debugHookConfig": {
          "description": "DebugHookConfig https://docs.aws.amazon.com/sagemaker/latest/dg/API_DebugHookConfig.html",
          "properties": {
            "collectionConfigurations": {
              "items": {
                "description": "CollectionConfiguration https://docs.aws.amazon.com/sagemaker/latest/dg/API_CollectionConfiguration.html",
                "properties": {
                  "collectionName": {
                    "type": "string"
                  },
                  "collectionParameters": {
                    "items": {
                      "description": "Used in describing maps in Kubernetes.",
                      "properties": {
                        "name": {
                          "type": "string"
                        },
                        "value": {
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "localPath": {
              "type": "string"
            },
            "ruleParameters": {
              "items": {
                "description": "Used in describing maps in Kubernetes.",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "value": {
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "s3OutputPath": {
              "pattern": "^(https|s3)://([^/]+)/?(.*)$",
              "type": "string"
            }
          },
          "required": [
            "s3OutputPath"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "debugRuleConfigurations": {
          "items": {
            "description": "DebugRuleConfiguration https://docs.aws.amazon.com/sagemaker/latest/dg/API_DebugRuleConfiguration.html",
            "properties": {
              "instanceType": {
                "type": "string"
              },
              "localPath": {
                "type": "string"
              },
              "ruleConfigurationName": {
                "type": "string"
              },
              "ruleEvaluatorImage": {
                "type": "string"
              },
              "ruleParameters": {
                "items": {
                  "description": "Used in describing maps in Kubernetes.",
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "value": {
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              },
              "s3OutputPath": {
                "pattern": "^(https|s3)://([^/]+)/?(.*)$",
                "type": "string"
              },
              "volumeSizeInGB": {
                "format": "int64",
                "minimum": 1,
                "type": "integer"
              }
            },
            "required": [
              "ruleConfigurationName",
              "ruleEvaluatorImage"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "enableInterContainerTrafficEncryption": {
          "type": "boolean"
        },
        "enableManagedSpotTraining": {
          "type": "boolean"
        },
        "enableNetworkIsolation": {
          "type": "boolean"
        },
        "hyperParameters": {
          "items": {
            "description": "Used in describing maps in Kubernetes.",
            "properties": {
              "name": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "inputDataConfig": {
          "items": {
            "properties": {
              "channelName": {
                "minLength": 1,
                "pattern": "[A-Za-z0-9\\.\\-_]+",
                "type": "string"
              },
              "compressionType": {
                "enum": [
                  "None",
                  "Gzip"
                ],
                "type": "string"
              },
              "contentType": {
                "type": "string"
              },
              "dataSource": {
                "properties": {
                  "fileSystemDataSource": {
                    "properties": {
                      "directoryPath": {
                        "type": "string"
                      },
                      "fileSystemAccessMode": {
                        "type": "string"
                      },
                      "fileSystemId": {
                        "type": "string"
                      },
                      "fileSystemType": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "directoryPath",
                      "fileSystemAccessMode",
                      "fileSystemId",
                      "fileSystemType"
                    ],
                    "type": "object",
                    "additionalProperties": false
                  },
                  "s3DataSource": {
                    "properties": {
                      "attributeNames": {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "s3DataDistributionType": {
                        "enum": [
                          "FullyReplicated",
                          "ShardedByS3Key"
                        ],
                        "type": "string"
                      },
                      "s3DataType": {
                        "enum": [
                          "S3Prefix",
                          "ManifestFile",
                          "AugmentedManifestFile"
                        ],
                        "type": "string"
                      },
                      "s3Uri": {
                        "pattern": "^(https|s3)://([^/]+)/?(.*)$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "s3DataType",
                      "s3Uri"
                    ],
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "inputMode": {
                "enum": [
                  "Pipe",
                  "File"
                ],
                "type": "string"
              },
              "recordWrapperType": {
                "type": "string"
              },
              "shuffleConfig": {
                "properties": {
                  "seed": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "required": [
                  "seed"
                ],
                "type": "object",
                "additionalProperties": false
              }
            },
            "required": [
              "channelName",
              "dataSource"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "minItems": 1,
          "type": "array"
        },
        "outputDataConfig": {
          "properties": {
            "kmsKeyId": {
              "type": "string"
            },
            "s3OutputPath": {
              "pattern": "^(https|s3)://([^/]+)/?(.*)$",
              "type": "string"
            }
          },
          "required": [
            "s3OutputPath"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "region": {
          "minLength": 1,
          "type": "string"
        },
        "resourceConfig": {
          "properties": {
            "instanceCount": {
              "format": "int64",
              "minimum": 1,
              "type": "integer"
            },
            "instanceType": {
              "minLength": 1,
              "type": "string"
            },
            "volumeKmsKeyId": {
              "type": "string"
            },
            "volumeSizeInGB": {
              "format": "int64",
              "minimum": 1,
              "type": "integer"
            }
          },
          "required": [
            "instanceCount",
            "instanceType",
            "volumeSizeInGB"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "roleArn": {
          "minLength": 20,
          "type": "string"
        },
        "sageMakerEndpoint": {
          "description": "A custom SageMaker endpoint to use when communicating with SageMaker.",
          "pattern": "^(https|http)://.*$",
          "type": "string"
        },
        "stoppingCondition": {
          "properties": {
            "maxRuntimeInSeconds": {
              "format": "int64",
              "minimum": 1,
              "type": "integer"
            },
            "maxWaitTimeInSeconds": {
              "format": "int64",
              "minimum": 1,
              "type": "integer"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "tags": {
          "items": {
            "properties": {
              "key": {
                "minLength": 1,
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "required": [
              "key",
              "value"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "tensorBoardOutputConfig": {
          "description": "TensorBoardOutputConfig https://docs.aws.amazon.com/sagemaker/latest/dg/API_TensorBoardOutputConfig.html",
          "properties": {
            "localPath": {
              "type": "string"
            },
            "s3OutputPath": {
              "pattern": "^(https|s3)://([^/]+)/?(.*)$",
              "type": "string"
            }
          },
          "required": [
            "s3OutputPath"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "trainingJobName": {
          "description": "The SageMaker training job name. This is optional for the SageMaker K8s operator. If it is empty, the operator will populate it with a generated name.",
          "maxLength": 63,
          "type": "string"
        },
        "vpcConfig": {
          "properties": {
            "securityGroupIds": {
              "items": {
                "type": "string"
              },
              "maxItems": 5,
              "minItems": 1,
              "type": "array"
            },
            "subnets": {
              "items": {
                "type": "string"
              },
              "maxItems": 16,
              "minItems": 1,
              "type": "array"
            }
          },
          "required": [
            "securityGroupIds",
            "subnets"
          ],
          "type": "object",
          "additionalProperties": false
        }
      },
      "required": [
        "algorithmSpecification",
        "outputDataConfig",
        "region",
        "resourceConfig",
        "roleArn",
        "stoppingCondition"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "TrainingJobStatus defines the observed state of TrainingJob",
      "properties": {
        "additional": {
          "description": "Field to store additional information, for example if we are unable to check the status we update this.",
          "type": "string"
        },
        "cloudWatchLogUrl": {
          "description": "Cloud Watch url for training log",
          "type": "string"
        },
        "debugRuleEvaluationStatuses": {
          "description": "Status of rule evaluation jobs, obtained from DebugRuleEvaluationStatuses. https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrainingJob.html#sagemaker-DescribeTrainingJob-response-DebugRuleEvaluationStatuses",
          "items": {
            "description": "DebugRuleEvaluationStatus https://docs.aws.amazon.com/sagemaker/latest/dg/API_DebugRuleEvaluationStatus.html",
            "properties": {
              "lastModifiedTime": {
                "format": "date-time",
                "type": "string"
              },
              "ruleConfigurationName": {
                "type": "string"
              },
              "ruleEvaluationJobArn": {
                "type": "string"
              },
              "ruleEvaluationStatus": {
                "type": "string"
              },
              "statusDetail": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "lastCheckTime": {
          "description": "The last time that we checked the status of the SageMaker job.",
          "format": "date-time",
          "type": "string"
        },
        "modelPath": {
          "description": "Full path to the training artifact (model)",
          "type": "string"
        },
        "sageMakerTrainingJobName": {
          "description": "SageMaker training job name",
          "type": "string"
        },
        "secondaryStatus": {
          "description": "The secondary, more granular status of the training job. https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeTrainingJob.html#SageMaker-DescribeTrainingJob-response-SecondaryStatus",
          "type": "string"
        },
        "trainingJobStatus": {
          "description": "The status of the training job. https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeTrainingJob.html#SageMaker-DescribeTrainingJob-response-TrainingJobStatus",
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "required": [
    "spec"
  ],
  "type": "object"
}
