{
  "description": "ProcessingJob is the Schema for the ProcessingJobs 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": "ProcessingJobSpec defines the desired state of ProcessingJob.\n\nAn Amazon SageMaker processing job that is used to analyze data and evaluate\nmodels. For more information, see Process Data and Evaluate Models (https://docs.aws.amazon.com/sagemaker/latest/dg/processing-job.html).",
      "properties": {
        "appSpecification": {
          "description": "Configures the processing job to run a specified Docker container image.",
          "properties": {
            "containerArguments": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "containerEntrypoint": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "imageURI": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "environment": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "The environment variables to set in the Docker container. Up to 100 key and\nvalues entries in the map are supported.\n\nDo not include any security-sensitive information including account access\nIDs, secrets, or tokens in any environment fields. As part of the shared\nresponsibility model, you are responsible for any potential exposure, unauthorized\naccess, or compromise of your sensitive data if caused by security-sensitive\ninformation included in the request environment variable or plain text fields.",
          "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
        },
        "networkConfig": {
          "description": "Networking options for a processing job, such as whether to allow inbound\nand outbound network calls to and from processing containers, and the VPC\nsubnets and security groups to use for VPC-enabled processing jobs.",
          "properties": {
            "enableInterContainerTrafficEncryption": {
              "type": "boolean"
            },
            "enableNetworkIsolation": {
              "type": "boolean"
            },
            "vpcConfig": {
              "description": "Specifies an Amazon Virtual Private Cloud (VPC) that your SageMaker jobs,\nhosted models, and compute resources have access to. You can control access\nto and from your resources by configuring a VPC. For more information, see\nGive SageMaker Access to Resources in your Amazon VPC (https://docs.aws.amazon.com/sagemaker/latest/dg/infrastructure-give-access.html).",
              "properties": {
                "securityGroupIDs": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "subnets": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "processingInputs": {
          "description": "An array of inputs configuring the data to download into the processing container.",
          "items": {
            "description": "The inputs for a processing job. The processing input must specify exactly\none of either S3Input or DatasetDefinition types.",
            "properties": {
              "appManaged": {
                "type": "boolean"
              },
              "datasetDefinition": {
                "description": "Configuration for Dataset Definition inputs. The Dataset Definition input\nmust specify exactly one of either AthenaDatasetDefinition or RedshiftDatasetDefinition\ntypes.",
                "properties": {
                  "athenaDatasetDefinition": {
                    "description": "Configuration for Athena Dataset Definition input.",
                    "properties": {
                      "catalog": {
                        "description": "The name of the data catalog used in Athena query execution.",
                        "type": "string"
                      },
                      "database": {
                        "description": "The name of the database used in the Athena query execution.",
                        "type": "string"
                      },
                      "kmsKeyID": {
                        "type": "string"
                      },
                      "outputCompression": {
                        "description": "The compression used for Athena query results.",
                        "type": "string"
                      },
                      "outputFormat": {
                        "description": "The data storage format for Athena query results.",
                        "type": "string"
                      },
                      "outputS3URI": {
                        "type": "string"
                      },
                      "queryString": {
                        "description": "The SQL query statements, to be executed.",
                        "type": "string"
                      },
                      "workGroup": {
                        "description": "The name of the workgroup in which the Athena query is being started.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "dataDistributionType": {
                    "type": "string"
                  },
                  "inputMode": {
                    "type": "string"
                  },
                  "localPath": {
                    "type": "string"
                  },
                  "redshiftDatasetDefinition": {
                    "description": "Configuration for Redshift Dataset Definition input.",
                    "properties": {
                      "clusterID": {
                        "description": "The Redshift cluster Identifier.",
                        "type": "string"
                      },
                      "clusterRoleARN": {
                        "type": "string"
                      },
                      "database": {
                        "description": "The name of the Redshift database used in Redshift query execution.",
                        "type": "string"
                      },
                      "dbUser": {
                        "description": "The database user name used in Redshift query execution.",
                        "type": "string"
                      },
                      "kmsKeyID": {
                        "type": "string"
                      },
                      "outputCompression": {
                        "description": "The compression used for Redshift query results.",
                        "type": "string"
                      },
                      "outputFormat": {
                        "description": "The data storage format for Redshift query results.",
                        "type": "string"
                      },
                      "outputS3URI": {
                        "type": "string"
                      },
                      "queryString": {
                        "description": "The SQL query statements to be executed.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "inputName": {
                "type": "string"
              },
              "s3Input": {
                "description": "Configuration for downloading input data from Amazon S3 into the processing\ncontainer.",
                "properties": {
                  "localPath": {
                    "type": "string"
                  },
                  "s3CompressionType": {
                    "type": "string"
                  },
                  "s3DataDistributionType": {
                    "type": "string"
                  },
                  "s3DataType": {
                    "type": "string"
                  },
                  "s3InputMode": {
                    "type": "string"
                  },
                  "s3URI": {
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "processingJobName": {
          "description": "The name of the processing job. The name must be unique within an Amazon\nWeb Services Region in the Amazon Web Services account.\n\nRegex Pattern: `^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$`",
          "type": "string"
        },
        "processingOutputConfig": {
          "description": "Output configuration for the processing job.",
          "properties": {
            "kmsKeyID": {
              "type": "string"
            },
            "outputs": {
              "items": {
                "description": "Describes the results of a processing job. The processing output must specify\nexactly one of either S3Output or FeatureStoreOutput types.",
                "properties": {
                  "appManaged": {
                    "type": "boolean"
                  },
                  "featureStoreOutput": {
                    "description": "Configuration for processing job outputs in Amazon SageMaker Feature Store.",
                    "properties": {
                      "featureGroupName": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "outputName": {
                    "type": "string"
                  },
                  "s3Output": {
                    "description": "Configuration for uploading output data to Amazon S3 from the processing\ncontainer.",
                    "properties": {
                      "localPath": {
                        "type": "string"
                      },
                      "s3URI": {
                        "type": "string"
                      },
                      "s3UploadMode": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "processingResources": {
          "description": "Identifies the resources, ML compute instances, and ML storage volumes to\ndeploy for a processing job. In distributed training, you specify more than\none instance.",
          "properties": {
            "clusterConfig": {
              "description": "Configuration for the cluster used to run a processing job.",
              "properties": {
                "instanceCount": {
                  "format": "int64",
                  "type": "integer"
                },
                "instanceType": {
                  "type": "string"
                },
                "volumeKMSKeyID": {
                  "type": "string"
                },
                "volumeSizeInGB": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "roleARN": {
          "description": "The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume\nto perform tasks on your behalf.\n\nRegex Pattern: `^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$`",
          "type": "string"
        },
        "stoppingCondition": {
          "description": "The time limit for how long the processing job is allowed to run.",
          "properties": {
            "maxRuntimeInSeconds": {
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "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-whatURL)\nin the Amazon Web Services Billing and Cost Management User Guide.\n\nDo not include any security-sensitive information including account access\nIDs, secrets, or tokens in any tags. As part of the shared responsibility\nmodel, you are responsible for any potential exposure, unauthorized access,\nor compromise of your sensitive data if caused by security-sensitive information\nincluded in the request tag variable or plain text fields.",
          "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"
        }
      },
      "required": [
        "appSpecification",
        "processingJobName",
        "processingResources",
        "roleARN"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "ProcessingJobStatus defines the observed state of ProcessingJob",
      "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": "A string, up to one KB in size, that contains the reason a processing job\nfailed, if it failed.",
          "type": "string"
        },
        "processingJobStatus": {
          "description": "Provides the status of a processing job.",
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
