/**
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * SPDX-License-Identifier: Apache-2.0.
 */
#pragma once
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
namespace Aws
{
namespace Utils
{
namespace Json
{
  class JsonValue;
  class JsonView;
} // namespace Json
} // namespace Utils
namespace GlueDataBrew
{
namespace Model
{
  /**
   * Represents one run of a DataBrew job.
See Also:
   AWS API
   * Reference
   */
  class JobRun
  {
  public:
    AWS_GLUEDATABREW_API JobRun();
    AWS_GLUEDATABREW_API JobRun(Aws::Utils::Json::JsonView jsonValue);
    AWS_GLUEDATABREW_API JobRun& operator=(Aws::Utils::Json::JsonView jsonValue);
    AWS_GLUEDATABREW_API Aws::Utils::Json::JsonValue Jsonize() const;
    /**
     * The number of times that DataBrew has attempted to run the job.
     */
    inline int GetAttempt() const{ return m_attempt; }
    /**
     * The number of times that DataBrew has attempted to run the job.
     */
    inline bool AttemptHasBeenSet() const { return m_attemptHasBeenSet; }
    /**
     * The number of times that DataBrew has attempted to run the job.
     */
    inline void SetAttempt(int value) { m_attemptHasBeenSet = true; m_attempt = value; }
    /**
     * The number of times that DataBrew has attempted to run the job.
     */
    inline JobRun& WithAttempt(int value) { SetAttempt(value); return *this;}
    /**
     * The date and time when the job completed processing.
     */
    inline const Aws::Utils::DateTime& GetCompletedOn() const{ return m_completedOn; }
    /**
     * The date and time when the job completed processing.
     */
    inline bool CompletedOnHasBeenSet() const { return m_completedOnHasBeenSet; }
    /**
     * The date and time when the job completed processing.
     */
    inline void SetCompletedOn(const Aws::Utils::DateTime& value) { m_completedOnHasBeenSet = true; m_completedOn = value; }
    /**
     * The date and time when the job completed processing.
     */
    inline void SetCompletedOn(Aws::Utils::DateTime&& value) { m_completedOnHasBeenSet = true; m_completedOn = std::move(value); }
    /**
     * The date and time when the job completed processing.
     */
    inline JobRun& WithCompletedOn(const Aws::Utils::DateTime& value) { SetCompletedOn(value); return *this;}
    /**
     * The date and time when the job completed processing.
     */
    inline JobRun& WithCompletedOn(Aws::Utils::DateTime&& value) { SetCompletedOn(std::move(value)); return *this;}
    /**
     * The name of the dataset for the job to process.
     */
    inline const Aws::String& GetDatasetName() const{ return m_datasetName; }
    /**
     * The name of the dataset for the job to process.
     */
    inline bool DatasetNameHasBeenSet() const { return m_datasetNameHasBeenSet; }
    /**
     * The name of the dataset for the job to process.
     */
    inline void SetDatasetName(const Aws::String& value) { m_datasetNameHasBeenSet = true; m_datasetName = value; }
    /**
     * The name of the dataset for the job to process.
     */
    inline void SetDatasetName(Aws::String&& value) { m_datasetNameHasBeenSet = true; m_datasetName = std::move(value); }
    /**
     * The name of the dataset for the job to process.
     */
    inline void SetDatasetName(const char* value) { m_datasetNameHasBeenSet = true; m_datasetName.assign(value); }
    /**
     * The name of the dataset for the job to process.
     */
    inline JobRun& WithDatasetName(const Aws::String& value) { SetDatasetName(value); return *this;}
    /**
     * The name of the dataset for the job to process.
     */
    inline JobRun& WithDatasetName(Aws::String&& value) { SetDatasetName(std::move(value)); return *this;}
    /**
     * The name of the dataset for the job to process.
     */
    inline JobRun& WithDatasetName(const char* value) { SetDatasetName(value); return *this;}
    /**
     * A message indicating an error (if any) that was encountered when the job
     * ran.
     */
    inline const Aws::String& GetErrorMessage() const{ return m_errorMessage; }
    /**
     * A message indicating an error (if any) that was encountered when the job
     * ran.
     */
    inline bool ErrorMessageHasBeenSet() const { return m_errorMessageHasBeenSet; }
    /**
     * A message indicating an error (if any) that was encountered when the job
     * ran.
     */
    inline void SetErrorMessage(const Aws::String& value) { m_errorMessageHasBeenSet = true; m_errorMessage = value; }
    /**
     * A message indicating an error (if any) that was encountered when the job
     * ran.
     */
    inline void SetErrorMessage(Aws::String&& value) { m_errorMessageHasBeenSet = true; m_errorMessage = std::move(value); }
    /**
     * A message indicating an error (if any) that was encountered when the job
     * ran.
     */
    inline void SetErrorMessage(const char* value) { m_errorMessageHasBeenSet = true; m_errorMessage.assign(value); }
    /**
     * A message indicating an error (if any) that was encountered when the job
     * ran.
     */
    inline JobRun& WithErrorMessage(const Aws::String& value) { SetErrorMessage(value); return *this;}
    /**
     * A message indicating an error (if any) that was encountered when the job
     * ran.
     */
    inline JobRun& WithErrorMessage(Aws::String&& value) { SetErrorMessage(std::move(value)); return *this;}
    /**
     * A message indicating an error (if any) that was encountered when the job
     * ran.
     */
    inline JobRun& WithErrorMessage(const char* value) { SetErrorMessage(value); return *this;}
    /**
     * The amount of time, in seconds, during which a job run consumed
     * resources.
     */
    inline int GetExecutionTime() const{ return m_executionTime; }
    /**
     * The amount of time, in seconds, during which a job run consumed
     * resources.
     */
    inline bool ExecutionTimeHasBeenSet() const { return m_executionTimeHasBeenSet; }
    /**
     * The amount of time, in seconds, during which a job run consumed
     * resources.
     */
    inline void SetExecutionTime(int value) { m_executionTimeHasBeenSet = true; m_executionTime = value; }
    /**
     * The amount of time, in seconds, during which a job run consumed
     * resources.
     */
    inline JobRun& WithExecutionTime(int value) { SetExecutionTime(value); return *this;}
    /**
     * The name of the job being processed during this run.
     */
    inline const Aws::String& GetJobName() const{ return m_jobName; }
    /**
     * The name of the job being processed during this run.
     */
    inline bool JobNameHasBeenSet() const { return m_jobNameHasBeenSet; }
    /**
     * The name of the job being processed during this run.
     */
    inline void SetJobName(const Aws::String& value) { m_jobNameHasBeenSet = true; m_jobName = value; }
    /**
     * The name of the job being processed during this run.
     */
    inline void SetJobName(Aws::String&& value) { m_jobNameHasBeenSet = true; m_jobName = std::move(value); }
    /**
     * The name of the job being processed during this run.
     */
    inline void SetJobName(const char* value) { m_jobNameHasBeenSet = true; m_jobName.assign(value); }
    /**
     * The name of the job being processed during this run.
     */
    inline JobRun& WithJobName(const Aws::String& value) { SetJobName(value); return *this;}
    /**
     * The name of the job being processed during this run.
     */
    inline JobRun& WithJobName(Aws::String&& value) { SetJobName(std::move(value)); return *this;}
    /**
     * The name of the job being processed during this run.
     */
    inline JobRun& WithJobName(const char* value) { SetJobName(value); return *this;}
    /**
     * The unique identifier of the job run.
     */
    inline const Aws::String& GetRunId() const{ return m_runId; }
    /**
     * The unique identifier of the job run.
     */
    inline bool RunIdHasBeenSet() const { return m_runIdHasBeenSet; }
    /**
     * The unique identifier of the job run.
     */
    inline void SetRunId(const Aws::String& value) { m_runIdHasBeenSet = true; m_runId = value; }
    /**
     * The unique identifier of the job run.
     */
    inline void SetRunId(Aws::String&& value) { m_runIdHasBeenSet = true; m_runId = std::move(value); }
    /**
     * The unique identifier of the job run.
     */
    inline void SetRunId(const char* value) { m_runIdHasBeenSet = true; m_runId.assign(value); }
    /**
     * The unique identifier of the job run.
     */
    inline JobRun& WithRunId(const Aws::String& value) { SetRunId(value); return *this;}
    /**
     * The unique identifier of the job run.
     */
    inline JobRun& WithRunId(Aws::String&& value) { SetRunId(std::move(value)); return *this;}
    /**
     * The unique identifier of the job run.
     */
    inline JobRun& WithRunId(const char* value) { SetRunId(value); return *this;}
    /**
     * The current state of the job run entity itself.
     */
    inline const JobRunState& GetState() const{ return m_state; }
    /**
     * The current state of the job run entity itself.
     */
    inline bool StateHasBeenSet() const { return m_stateHasBeenSet; }
    /**
     * The current state of the job run entity itself.
     */
    inline void SetState(const JobRunState& value) { m_stateHasBeenSet = true; m_state = value; }
    /**
     * The current state of the job run entity itself.
     */
    inline void SetState(JobRunState&& value) { m_stateHasBeenSet = true; m_state = std::move(value); }
    /**
     * The current state of the job run entity itself.
     */
    inline JobRun& WithState(const JobRunState& value) { SetState(value); return *this;}
    /**
     * The current state of the job run entity itself.
     */
    inline JobRun& WithState(JobRunState&& value) { SetState(std::move(value)); return *this;}
    /**
     * The current status of Amazon CloudWatch logging for the job run.
     */
    inline const LogSubscription& GetLogSubscription() const{ return m_logSubscription; }
    /**
     * The current status of Amazon CloudWatch logging for the job run.
     */
    inline bool LogSubscriptionHasBeenSet() const { return m_logSubscriptionHasBeenSet; }
    /**
     * The current status of Amazon CloudWatch logging for the job run.
     */
    inline void SetLogSubscription(const LogSubscription& value) { m_logSubscriptionHasBeenSet = true; m_logSubscription = value; }
    /**
     * The current status of Amazon CloudWatch logging for the job run.
     */
    inline void SetLogSubscription(LogSubscription&& value) { m_logSubscriptionHasBeenSet = true; m_logSubscription = std::move(value); }
    /**
     * The current status of Amazon CloudWatch logging for the job run.
     */
    inline JobRun& WithLogSubscription(const LogSubscription& value) { SetLogSubscription(value); return *this;}
    /**
     * The current status of Amazon CloudWatch logging for the job run.
     */
    inline JobRun& WithLogSubscription(LogSubscription&& value) { SetLogSubscription(std::move(value)); return *this;}
    /**
     * The name of an Amazon CloudWatch log group, where the job writes diagnostic
     * messages when it runs.
     */
    inline const Aws::String& GetLogGroupName() const{ return m_logGroupName; }
    /**
     * The name of an Amazon CloudWatch log group, where the job writes diagnostic
     * messages when it runs.
     */
    inline bool LogGroupNameHasBeenSet() const { return m_logGroupNameHasBeenSet; }
    /**
     * The name of an Amazon CloudWatch log group, where the job writes diagnostic
     * messages when it runs.
     */
    inline void SetLogGroupName(const Aws::String& value) { m_logGroupNameHasBeenSet = true; m_logGroupName = value; }
    /**
     * The name of an Amazon CloudWatch log group, where the job writes diagnostic
     * messages when it runs.
     */
    inline void SetLogGroupName(Aws::String&& value) { m_logGroupNameHasBeenSet = true; m_logGroupName = std::move(value); }
    /**
     * The name of an Amazon CloudWatch log group, where the job writes diagnostic
     * messages when it runs.
     */
    inline void SetLogGroupName(const char* value) { m_logGroupNameHasBeenSet = true; m_logGroupName.assign(value); }
    /**
     * The name of an Amazon CloudWatch log group, where the job writes diagnostic
     * messages when it runs.
     */
    inline JobRun& WithLogGroupName(const Aws::String& value) { SetLogGroupName(value); return *this;}
    /**
     * The name of an Amazon CloudWatch log group, where the job writes diagnostic
     * messages when it runs.
     */
    inline JobRun& WithLogGroupName(Aws::String&& value) { SetLogGroupName(std::move(value)); return *this;}
    /**
     * The name of an Amazon CloudWatch log group, where the job writes diagnostic
     * messages when it runs.
     */
    inline JobRun& WithLogGroupName(const char* value) { SetLogGroupName(value); return *this;}
    /**
     * One or more output artifacts from a job run.
     */
    inline const Aws::Vector