{
  "description": "TransformJob is the Schema for the TransformJobs 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": "TransformJobSpec defines the desired state of TransformJob.\n\nA batch transform job. For information about SageMaker batch transform, see\nUse Batch Transform (https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform.html).",
      "properties": {
        "batchStrategy": {
          "description": "Specifies the number of records to include in a mini-batch for an HTTP inference\nrequest. A record is a single unit of input data that inference can be made\non. For example, a single line in a CSV file is a record.\n\nTo enable the batch strategy, you must set the SplitType property to Line,\nRecordIO, or TFRecord.\n\nTo use only one record when making an HTTP invocation request to a container,\nset BatchStrategy to SingleRecord and SplitType to Line.\n\nTo fit as many records in a mini-batch as can fit within the MaxPayloadInMB\nlimit, set BatchStrategy to MultiRecord and SplitType to Line.",
          "type": "string"
        },
        "dataProcessing": {
          "description": "The data structure used to specify the data to be used for inference in a\nbatch transform job and to associate the data that is relevant to the prediction\nresults in the output. The input filter provided allows you to exclude input\ndata that is not needed for inference in a batch transform job. The output\nfilter provided allows you to include input data relevant to interpreting\nthe predictions in the output from the job. For more information, see Associate\nPrediction Results with their Corresponding Input Records (https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform-data-processing.html).",
          "properties": {
            "inputFilter": {
              "type": "string"
            },
            "joinSource": {
              "type": "string"
            },
            "outputFilter": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "environment": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "The environment variables to set in the Docker container. Don't include any\nsensitive data in your environment variables. We support up to 16 key and\nvalues entries in the map.",
          "type": "object"
        },
        "experimentConfig": {
          "description": "Associates a SageMaker job as a trial component with an experiment and trial.\nSpecified when you call the following APIs:\n\n  - CreateProcessingJob (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateProcessingJob.html)\n\n  - CreateTrainingJob (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)\n\n  - CreateTransformJob (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html)",
          "properties": {
            "experimentName": {
              "type": "string"
            },
            "trialComponentDisplayName": {
              "type": "string"
            },
            "trialName": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "maxConcurrentTransforms": {
          "description": "The maximum number of parallel requests that can be sent to each instance\nin a transform job. If MaxConcurrentTransforms is set to 0 or left unset,\nAmazon SageMaker checks the optional execution-parameters to determine the\nsettings for your chosen algorithm. If the execution-parameters endpoint\nis not enabled, the default value is 1. For more information on execution-parameters,\nsee How Containers Serve Requests (https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-batch-code.html#your-algorithms-batch-code-how-containe-serves-requests).\nFor built-in algorithms, you don't need to set a value for MaxConcurrentTransforms.",
          "format": "int64",
          "type": "integer"
        },
        "maxPayloadInMB": {
          "description": "The maximum allowed size of the payload, in MB. A payload is the data portion\nof a record (without metadata). The value in MaxPayloadInMB must be greater\nthan, or equal to, the size of a single record. To estimate the size of a\nrecord in MB, divide the size of your dataset by the number of records. To\nensure that the records fit within the maximum payload size, we recommend\nusing a slightly larger value. The default value is 6 MB.\n\nThe value of MaxPayloadInMB cannot be greater than 100 MB. If you specify\nthe MaxConcurrentTransforms parameter, the value of (MaxConcurrentTransforms\n* MaxPayloadInMB) also cannot exceed 100 MB.\n\nFor cases where the payload might be arbitrarily large and is transmitted\nusing HTTP chunked encoding, set the value to 0. This feature works only\nin supported algorithms. Currently, Amazon SageMaker built-in algorithms\ndo not support HTTP chunked encoding.",
          "format": "int64",
          "type": "integer"
        },
        "modelClientConfig": {
          "description": "Configures the timeout and maximum number of retries for processing a transform\njob invocation.",
          "properties": {
            "invocationsMaxRetries": {
              "format": "int64",
              "type": "integer"
            },
            "invocationsTimeoutInSeconds": {
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "modelName": {
          "description": "The name of the model that you want to use for the transform job. ModelName\nmust be the name of an existing Amazon SageMaker model within an Amazon Web\nServices Region in an Amazon Web Services account.\n\nRegex Pattern: `^[a-zA-Z0-9]([\\-a-zA-Z0-9]*[a-zA-Z0-9])?$`",
          "type": "string"
        },
        "tags": {
          "description": "(Optional) An array of key-value pairs. For more information, see Using Cost\nAllocation Tags (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-what)\nin the Amazon Web Services Billing and Cost Management User Guide.",
          "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"
        },
        "transformInput": {
          "description": "Describes the input source and the way the transform job consumes it.",
          "properties": {
            "compressionType": {
              "type": "string"
            },
            "contentType": {
              "type": "string"
            },
            "dataSource": {
              "description": "Describes the location of the channel data.",
              "properties": {
                "s3DataSource": {
                  "description": "Describes the S3 data source.",
                  "properties": {
                    "s3DataType": {
                      "type": "string"
                    },
                    "s3URI": {
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "splitType": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "transformJobName": {
          "description": "The name of the transform job. The name must be unique within an Amazon Web\nServices Region in an Amazon Web Services account.\n\nRegex Pattern: `^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$`",
          "type": "string"
        },
        "transformOutput": {
          "description": "Describes the results of the transform job.",
          "properties": {
            "accept": {
              "type": "string"
            },
            "assembleWith": {
              "type": "string"
            },
            "kmsKeyID": {
              "type": "string"
            },
            "s3OutputPath": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "transformResources": {
          "description": "Describes the resources, including ML instance types and ML instance count,\nto use for the transform job.",
          "properties": {
            "instanceCount": {
              "format": "int64",
              "type": "integer"
            },
            "instanceType": {
              "type": "string"
            },
            "transformAMIVersion": {
              "type": "string"
            },
            "volumeKMSKeyID": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        }
      },
      "required": [
        "modelName",
        "transformInput",
        "transformJobName",
        "transformOutput",
        "transformResources"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "TransformJobStatus defines the observed state of TransformJob",
      "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"
        },
        "failureReason": {
          "description": "If the transform job failed, FailureReason describes why it failed. A transform\njob creates a log file, which includes error messages, and stores it as an\nAmazon S3 object. For more information, see Log Amazon SageMaker Events with\nAmazon CloudWatch (https://docs.aws.amazon.com/sagemaker/latest/dg/logging-cloudwatch.html).",
          "type": "string"
        },
        "transformJobStatus": {
          "description": "The status of the transform job. If the transform job failed, the reason\nis returned in the FailureReason field.",
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
