/** * 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 namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace IoT { namespace Model { /** *

The Job object contains details about a job.

See * Also:

AWS API * Reference

*/ class AWS_IOT_API Job { public: Job(); Job(Aws::Utils::Json::JsonView jsonValue); Job& operator=(Aws::Utils::Json::JsonView jsonValue); Aws::Utils::Json::JsonValue Jsonize() const; /** *

An ARN identifying the job with format * "arn:aws:iot:region:account:job/jobId".

*/ inline const Aws::String& GetJobArn() const{ return m_jobArn; } /** *

An ARN identifying the job with format * "arn:aws:iot:region:account:job/jobId".

*/ inline bool JobArnHasBeenSet() const { return m_jobArnHasBeenSet; } /** *

An ARN identifying the job with format * "arn:aws:iot:region:account:job/jobId".

*/ inline void SetJobArn(const Aws::String& value) { m_jobArnHasBeenSet = true; m_jobArn = value; } /** *

An ARN identifying the job with format * "arn:aws:iot:region:account:job/jobId".

*/ inline void SetJobArn(Aws::String&& value) { m_jobArnHasBeenSet = true; m_jobArn = std::move(value); } /** *

An ARN identifying the job with format * "arn:aws:iot:region:account:job/jobId".

*/ inline void SetJobArn(const char* value) { m_jobArnHasBeenSet = true; m_jobArn.assign(value); } /** *

An ARN identifying the job with format * "arn:aws:iot:region:account:job/jobId".

*/ inline Job& WithJobArn(const Aws::String& value) { SetJobArn(value); return *this;} /** *

An ARN identifying the job with format * "arn:aws:iot:region:account:job/jobId".

*/ inline Job& WithJobArn(Aws::String&& value) { SetJobArn(std::move(value)); return *this;} /** *

An ARN identifying the job with format * "arn:aws:iot:region:account:job/jobId".

*/ inline Job& WithJobArn(const char* value) { SetJobArn(value); return *this;} /** *

The unique identifier you assigned to this job when it was created.

*/ inline const Aws::String& GetJobId() const{ return m_jobId; } /** *

The unique identifier you assigned to this job when it was created.

*/ inline bool JobIdHasBeenSet() const { return m_jobIdHasBeenSet; } /** *

The unique identifier you assigned to this job when it was created.

*/ inline void SetJobId(const Aws::String& value) { m_jobIdHasBeenSet = true; m_jobId = value; } /** *

The unique identifier you assigned to this job when it was created.

*/ inline void SetJobId(Aws::String&& value) { m_jobIdHasBeenSet = true; m_jobId = std::move(value); } /** *

The unique identifier you assigned to this job when it was created.

*/ inline void SetJobId(const char* value) { m_jobIdHasBeenSet = true; m_jobId.assign(value); } /** *

The unique identifier you assigned to this job when it was created.

*/ inline Job& WithJobId(const Aws::String& value) { SetJobId(value); return *this;} /** *

The unique identifier you assigned to this job when it was created.

*/ inline Job& WithJobId(Aws::String&& value) { SetJobId(std::move(value)); return *this;} /** *

The unique identifier you assigned to this job when it was created.

*/ inline Job& WithJobId(const char* value) { SetJobId(value); return *this;} /** *

Specifies whether the job will continue to run (CONTINUOUS), or will be * complete after all those things specified as targets have completed the job * (SNAPSHOT). If continuous, the job may also be run on a thing when a change is * detected in a target. For example, a job will run on a device when the thing * representing the device is added to a target group, even after the job was * completed by all things originally in the group.

*/ inline const TargetSelection& GetTargetSelection() const{ return m_targetSelection; } /** *

Specifies whether the job will continue to run (CONTINUOUS), or will be * complete after all those things specified as targets have completed the job * (SNAPSHOT). If continuous, the job may also be run on a thing when a change is * detected in a target. For example, a job will run on a device when the thing * representing the device is added to a target group, even after the job was * completed by all things originally in the group.

*/ inline bool TargetSelectionHasBeenSet() const { return m_targetSelectionHasBeenSet; } /** *

Specifies whether the job will continue to run (CONTINUOUS), or will be * complete after all those things specified as targets have completed the job * (SNAPSHOT). If continuous, the job may also be run on a thing when a change is * detected in a target. For example, a job will run on a device when the thing * representing the device is added to a target group, even after the job was * completed by all things originally in the group.

*/ inline void SetTargetSelection(const TargetSelection& value) { m_targetSelectionHasBeenSet = true; m_targetSelection = value; } /** *

Specifies whether the job will continue to run (CONTINUOUS), or will be * complete after all those things specified as targets have completed the job * (SNAPSHOT). If continuous, the job may also be run on a thing when a change is * detected in a target. For example, a job will run on a device when the thing * representing the device is added to a target group, even after the job was * completed by all things originally in the group.

*/ inline void SetTargetSelection(TargetSelection&& value) { m_targetSelectionHasBeenSet = true; m_targetSelection = std::move(value); } /** *

Specifies whether the job will continue to run (CONTINUOUS), or will be * complete after all those things specified as targets have completed the job * (SNAPSHOT). If continuous, the job may also be run on a thing when a change is * detected in a target. For example, a job will run on a device when the thing * representing the device is added to a target group, even after the job was * completed by all things originally in the group.

*/ inline Job& WithTargetSelection(const TargetSelection& value) { SetTargetSelection(value); return *this;} /** *

Specifies whether the job will continue to run (CONTINUOUS), or will be * complete after all those things specified as targets have completed the job * (SNAPSHOT). If continuous, the job may also be run on a thing when a change is * detected in a target. For example, a job will run on a device when the thing * representing the device is added to a target group, even after the job was * completed by all things originally in the group.

*/ inline Job& WithTargetSelection(TargetSelection&& value) { SetTargetSelection(std::move(value)); return *this;} /** *

The status of the job, one of IN_PROGRESS, * CANCELED, DELETION_IN_PROGRESS or * COMPLETED.

*/ inline const JobStatus& GetStatus() const{ return m_status; } /** *

The status of the job, one of IN_PROGRESS, * CANCELED, DELETION_IN_PROGRESS or * COMPLETED.

*/ inline bool StatusHasBeenSet() const { return m_statusHasBeenSet; } /** *

The status of the job, one of IN_PROGRESS, * CANCELED, DELETION_IN_PROGRESS or * COMPLETED.

*/ inline void SetStatus(const JobStatus& value) { m_statusHasBeenSet = true; m_status = value; } /** *

The status of the job, one of IN_PROGRESS, * CANCELED, DELETION_IN_PROGRESS or * COMPLETED.

*/ inline void SetStatus(JobStatus&& value) { m_statusHasBeenSet = true; m_status = std::move(value); } /** *

The status of the job, one of IN_PROGRESS, * CANCELED, DELETION_IN_PROGRESS or * COMPLETED.

*/ inline Job& WithStatus(const JobStatus& value) { SetStatus(value); return *this;} /** *

The status of the job, one of IN_PROGRESS, * CANCELED, DELETION_IN_PROGRESS or * COMPLETED.

*/ inline Job& WithStatus(JobStatus&& value) { SetStatus(std::move(value)); return *this;} /** *

Will be true if the job was canceled with the optional * force parameter set to true.

*/ inline bool GetForceCanceled() const{ return m_forceCanceled; } /** *

Will be true if the job was canceled with the optional * force parameter set to true.

*/ inline bool ForceCanceledHasBeenSet() const { return m_forceCanceledHasBeenSet; } /** *

Will be true if the job was canceled with the optional * force parameter set to true.

*/ inline void SetForceCanceled(bool value) { m_forceCanceledHasBeenSet = true; m_forceCanceled = value; } /** *

Will be true if the job was canceled with the optional * force parameter set to true.

*/ inline Job& WithForceCanceled(bool value) { SetForceCanceled(value); return *this;} /** *

If the job was updated, provides the reason code for the update.

*/ inline const Aws::String& GetReasonCode() const{ return m_reasonCode; } /** *

If the job was updated, provides the reason code for the update.

*/ inline bool ReasonCodeHasBeenSet() const { return m_reasonCodeHasBeenSet; } /** *

If the job was updated, provides the reason code for the update.

*/ inline void SetReasonCode(const Aws::String& value) { m_reasonCodeHasBeenSet = true; m_reasonCode = value; } /** *

If the job was updated, provides the reason code for the update.

*/ inline void SetReasonCode(Aws::String&& value) { m_reasonCodeHasBeenSet = true; m_reasonCode = std::move(value); } /** *

If the job was updated, provides the reason code for the update.

*/ inline void SetReasonCode(const char* value) { m_reasonCodeHasBeenSet = true; m_reasonCode.assign(value); } /** *

If the job was updated, provides the reason code for the update.

*/ inline Job& WithReasonCode(const Aws::String& value) { SetReasonCode(value); return *this;} /** *

If the job was updated, provides the reason code for the update.

*/ inline Job& WithReasonCode(Aws::String&& value) { SetReasonCode(std::move(value)); return *this;} /** *

If the job was updated, provides the reason code for the update.

*/ inline Job& WithReasonCode(const char* value) { SetReasonCode(value); return *this;} /** *

If the job was updated, describes the reason for the update.

*/ inline const Aws::String& GetComment() const{ return m_comment; } /** *

If the job was updated, describes the reason for the update.

*/ inline bool CommentHasBeenSet() const { return m_commentHasBeenSet; } /** *

If the job was updated, describes the reason for the update.

*/ inline void SetComment(const Aws::String& value) { m_commentHasBeenSet = true; m_comment = value; } /** *

If the job was updated, describes the reason for the update.

*/ inline void SetComment(Aws::String&& value) { m_commentHasBeenSet = true; m_comment = std::move(value); } /** *

If the job was updated, describes the reason for the update.

*/ inline void SetComment(const char* value) { m_commentHasBeenSet = true; m_comment.assign(value); } /** *

If the job was updated, describes the reason for the update.

*/ inline Job& WithComment(const Aws::String& value) { SetComment(value); return *this;} /** *

If the job was updated, describes the reason for the update.

*/ inline Job& WithComment(Aws::String&& value) { SetComment(std::move(value)); return *this;} /** *

If the job was updated, describes the reason for the update.

*/ inline Job& WithComment(const char* value) { SetComment(value); return *this;} /** *

A list of IoT things and thing groups to which the job should be sent.

*/ inline const Aws::Vector& GetTargets() const{ return m_targets; } /** *

A list of IoT things and thing groups to which the job should be sent.

*/ inline bool TargetsHasBeenSet() const { return m_targetsHasBeenSet; } /** *

A list of IoT things and thing groups to which the job should be sent.

*/ inline void SetTargets(const Aws::Vector& value) { m_targetsHasBeenSet = true; m_targets = value; } /** *

A list of IoT things and thing groups to which the job should be sent.

*/ inline void SetTargets(Aws::Vector&& value) { m_targetsHasBeenSet = true; m_targets = std::move(value); } /** *

A list of IoT things and thing groups to which the job should be sent.

*/ inline Job& WithTargets(const Aws::Vector& value) { SetTargets(value); return *this;} /** *

A list of IoT things and thing groups to which the job should be sent.

*/ inline Job& WithTargets(Aws::Vector&& value) { SetTargets(std::move(value)); return *this;} /** *

A list of IoT things and thing groups to which the job should be sent.

*/ inline Job& AddTargets(const Aws::String& value) { m_targetsHasBeenSet = true; m_targets.push_back(value); return *this; } /** *

A list of IoT things and thing groups to which the job should be sent.

*/ inline Job& AddTargets(Aws::String&& value) { m_targetsHasBeenSet = true; m_targets.push_back(std::move(value)); return *this; } /** *

A list of IoT things and thing groups to which the job should be sent.

*/ inline Job& AddTargets(const char* value) { m_targetsHasBeenSet = true; m_targets.push_back(value); return *this; } /** *

A short text description of the job.

*/ inline const Aws::String& GetDescription() const{ return m_description; } /** *

A short text description of the job.

*/ inline bool DescriptionHasBeenSet() const { return m_descriptionHasBeenSet; } /** *

A short text description of the job.

*/ inline void SetDescription(const Aws::String& value) { m_descriptionHasBeenSet = true; m_description = value; } /** *

A short text description of the job.

*/ inline void SetDescription(Aws::String&& value) { m_descriptionHasBeenSet = true; m_description = std::move(value); } /** *

A short text description of the job.

*/ inline void SetDescription(const char* value) { m_descriptionHasBeenSet = true; m_description.assign(value); } /** *

A short text description of the job.

*/ inline Job& WithDescription(const Aws::String& value) { SetDescription(value); return *this;} /** *

A short text description of the job.

*/ inline Job& WithDescription(Aws::String&& value) { SetDescription(std::move(value)); return *this;} /** *

A short text description of the job.

*/ inline Job& WithDescription(const char* value) { SetDescription(value); return *this;} /** *

Configuration for pre-signed S3 URLs.

*/ inline const PresignedUrlConfig& GetPresignedUrlConfig() const{ return m_presignedUrlConfig; } /** *

Configuration for pre-signed S3 URLs.

*/ inline bool PresignedUrlConfigHasBeenSet() const { return m_presignedUrlConfigHasBeenSet; } /** *

Configuration for pre-signed S3 URLs.

*/ inline void SetPresignedUrlConfig(const PresignedUrlConfig& value) { m_presignedUrlConfigHasBeenSet = true; m_presignedUrlConfig = value; } /** *

Configuration for pre-signed S3 URLs.

*/ inline void SetPresignedUrlConfig(PresignedUrlConfig&& value) { m_presignedUrlConfigHasBeenSet = true; m_presignedUrlConfig = std::move(value); } /** *

Configuration for pre-signed S3 URLs.

*/ inline Job& WithPresignedUrlConfig(const PresignedUrlConfig& value) { SetPresignedUrlConfig(value); return *this;} /** *

Configuration for pre-signed S3 URLs.

*/ inline Job& WithPresignedUrlConfig(PresignedUrlConfig&& value) { SetPresignedUrlConfig(std::move(value)); return *this;} /** *

Allows you to create a staged rollout of a job.

*/ inline const JobExecutionsRolloutConfig& GetJobExecutionsRolloutConfig() const{ return m_jobExecutionsRolloutConfig; } /** *

Allows you to create a staged rollout of a job.

*/ inline bool JobExecutionsRolloutConfigHasBeenSet() const { return m_jobExecutionsRolloutConfigHasBeenSet; } /** *

Allows you to create a staged rollout of a job.

*/ inline void SetJobExecutionsRolloutConfig(const JobExecutionsRolloutConfig& value) { m_jobExecutionsRolloutConfigHasBeenSet = true; m_jobExecutionsRolloutConfig = value; } /** *

Allows you to create a staged rollout of a job.

*/ inline void SetJobExecutionsRolloutConfig(JobExecutionsRolloutConfig&& value) { m_jobExecutionsRolloutConfigHasBeenSet = true; m_jobExecutionsRolloutConfig = std::move(value); } /** *

Allows you to create a staged rollout of a job.

*/ inline Job& WithJobExecutionsRolloutConfig(const JobExecutionsRolloutConfig& value) { SetJobExecutionsRolloutConfig(value); return *this;} /** *

Allows you to create a staged rollout of a job.

*/ inline Job& WithJobExecutionsRolloutConfig(JobExecutionsRolloutConfig&& value) { SetJobExecutionsRolloutConfig(std::move(value)); return *this;} /** *

Configuration for criteria to abort the job.

*/ inline const AbortConfig& GetAbortConfig() const{ return m_abortConfig; } /** *

Configuration for criteria to abort the job.

*/ inline bool AbortConfigHasBeenSet() const { return m_abortConfigHasBeenSet; } /** *

Configuration for criteria to abort the job.

*/ inline void SetAbortConfig(const AbortConfig& value) { m_abortConfigHasBeenSet = true; m_abortConfig = value; } /** *

Configuration for criteria to abort the job.

*/ inline void SetAbortConfig(AbortConfig&& value) { m_abortConfigHasBeenSet = true; m_abortConfig = std::move(value); } /** *

Configuration for criteria to abort the job.

*/ inline Job& WithAbortConfig(const AbortConfig& value) { SetAbortConfig(value); return *this;} /** *

Configuration for criteria to abort the job.

*/ inline Job& WithAbortConfig(AbortConfig&& value) { SetAbortConfig(std::move(value)); return *this;} /** *

The time, in seconds since the epoch, when the job was created.

*/ inline const Aws::Utils::DateTime& GetCreatedAt() const{ return m_createdAt; } /** *

The time, in seconds since the epoch, when the job was created.

*/ inline bool CreatedAtHasBeenSet() const { return m_createdAtHasBeenSet; } /** *

The time, in seconds since the epoch, when the job was created.

*/ inline void SetCreatedAt(const Aws::Utils::DateTime& value) { m_createdAtHasBeenSet = true; m_createdAt = value; } /** *

The time, in seconds since the epoch, when the job was created.

*/ inline void SetCreatedAt(Aws::Utils::DateTime&& value) { m_createdAtHasBeenSet = true; m_createdAt = std::move(value); } /** *

The time, in seconds since the epoch, when the job was created.

*/ inline Job& WithCreatedAt(const Aws::Utils::DateTime& value) { SetCreatedAt(value); return *this;} /** *

The time, in seconds since the epoch, when the job was created.

*/ inline Job& WithCreatedAt(Aws::Utils::DateTime&& value) { SetCreatedAt(std::move(value)); return *this;} /** *

The time, in seconds since the epoch, when the job was last updated.

*/ inline const Aws::Utils::DateTime& GetLastUpdatedAt() const{ return m_lastUpdatedAt; } /** *

The time, in seconds since the epoch, when the job was last updated.

*/ inline bool LastUpdatedAtHasBeenSet() const { return m_lastUpdatedAtHasBeenSet; } /** *

The time, in seconds since the epoch, when the job was last updated.

*/ inline void SetLastUpdatedAt(const Aws::Utils::DateTime& value) { m_lastUpdatedAtHasBeenSet = true; m_lastUpdatedAt = value; } /** *

The time, in seconds since the epoch, when the job was last updated.

*/ inline void SetLastUpdatedAt(Aws::Utils::DateTime&& value) { m_lastUpdatedAtHasBeenSet = true; m_lastUpdatedAt = std::move(value); } /** *

The time, in seconds since the epoch, when the job was last updated.

*/ inline Job& WithLastUpdatedAt(const Aws::Utils::DateTime& value) { SetLastUpdatedAt(value); return *this;} /** *

The time, in seconds since the epoch, when the job was last updated.

*/ inline Job& WithLastUpdatedAt(Aws::Utils::DateTime&& value) { SetLastUpdatedAt(std::move(value)); return *this;} /** *

The time, in seconds since the epoch, when the job was completed.

*/ inline const Aws::Utils::DateTime& GetCompletedAt() const{ return m_completedAt; } /** *

The time, in seconds since the epoch, when the job was completed.

*/ inline bool CompletedAtHasBeenSet() const { return m_completedAtHasBeenSet; } /** *

The time, in seconds since the epoch, when the job was completed.

*/ inline void SetCompletedAt(const Aws::Utils::DateTime& value) { m_completedAtHasBeenSet = true; m_completedAt = value; } /** *

The time, in seconds since the epoch, when the job was completed.

*/ inline void SetCompletedAt(Aws::Utils::DateTime&& value) { m_completedAtHasBeenSet = true; m_completedAt = std::move(value); } /** *

The time, in seconds since the epoch, when the job was completed.

*/ inline Job& WithCompletedAt(const Aws::Utils::DateTime& value) { SetCompletedAt(value); return *this;} /** *

The time, in seconds since the epoch, when the job was completed.

*/ inline Job& WithCompletedAt(Aws::Utils::DateTime&& value) { SetCompletedAt(std::move(value)); return *this;} /** *

Details about the job process.

*/ inline const JobProcessDetails& GetJobProcessDetails() const{ return m_jobProcessDetails; } /** *

Details about the job process.

*/ inline bool JobProcessDetailsHasBeenSet() const { return m_jobProcessDetailsHasBeenSet; } /** *

Details about the job process.

*/ inline void SetJobProcessDetails(const JobProcessDetails& value) { m_jobProcessDetailsHasBeenSet = true; m_jobProcessDetails = value; } /** *

Details about the job process.

*/ inline void SetJobProcessDetails(JobProcessDetails&& value) { m_jobProcessDetailsHasBeenSet = true; m_jobProcessDetails = std::move(value); } /** *

Details about the job process.

*/ inline Job& WithJobProcessDetails(const JobProcessDetails& value) { SetJobProcessDetails(value); return *this;} /** *

Details about the job process.

*/ inline Job& WithJobProcessDetails(JobProcessDetails&& value) { SetJobProcessDetails(std::move(value)); return *this;} /** *

Specifies the amount of time each device has to finish its execution of the * job. A timer is started when the job execution status is set to * IN_PROGRESS. If the job execution status is not set to another * terminal state before the timer expires, it will be automatically set to * TIMED_OUT.

*/ inline const TimeoutConfig& GetTimeoutConfig() const{ return m_timeoutConfig; } /** *

Specifies the amount of time each device has to finish its execution of the * job. A timer is started when the job execution status is set to * IN_PROGRESS. If the job execution status is not set to another * terminal state before the timer expires, it will be automatically set to * TIMED_OUT.

*/ inline bool TimeoutConfigHasBeenSet() const { return m_timeoutConfigHasBeenSet; } /** *

Specifies the amount of time each device has to finish its execution of the * job. A timer is started when the job execution status is set to * IN_PROGRESS. If the job execution status is not set to another * terminal state before the timer expires, it will be automatically set to * TIMED_OUT.

*/ inline void SetTimeoutConfig(const TimeoutConfig& value) { m_timeoutConfigHasBeenSet = true; m_timeoutConfig = value; } /** *

Specifies the amount of time each device has to finish its execution of the * job. A timer is started when the job execution status is set to * IN_PROGRESS. If the job execution status is not set to another * terminal state before the timer expires, it will be automatically set to * TIMED_OUT.

*/ inline void SetTimeoutConfig(TimeoutConfig&& value) { m_timeoutConfigHasBeenSet = true; m_timeoutConfig = std::move(value); } /** *

Specifies the amount of time each device has to finish its execution of the * job. A timer is started when the job execution status is set to * IN_PROGRESS. If the job execution status is not set to another * terminal state before the timer expires, it will be automatically set to * TIMED_OUT.

*/ inline Job& WithTimeoutConfig(const TimeoutConfig& value) { SetTimeoutConfig(value); return *this;} /** *

Specifies the amount of time each device has to finish its execution of the * job. A timer is started when the job execution status is set to * IN_PROGRESS. If the job execution status is not set to another * terminal state before the timer expires, it will be automatically set to * TIMED_OUT.

*/ inline Job& WithTimeoutConfig(TimeoutConfig&& value) { SetTimeoutConfig(std::move(value)); return *this;} private: Aws::String m_jobArn; bool m_jobArnHasBeenSet; Aws::String m_jobId; bool m_jobIdHasBeenSet; TargetSelection m_targetSelection; bool m_targetSelectionHasBeenSet; JobStatus m_status; bool m_statusHasBeenSet; bool m_forceCanceled; bool m_forceCanceledHasBeenSet; Aws::String m_reasonCode; bool m_reasonCodeHasBeenSet; Aws::String m_comment; bool m_commentHasBeenSet; Aws::Vector m_targets; bool m_targetsHasBeenSet; Aws::String m_description; bool m_descriptionHasBeenSet; PresignedUrlConfig m_presignedUrlConfig; bool m_presignedUrlConfigHasBeenSet; JobExecutionsRolloutConfig m_jobExecutionsRolloutConfig; bool m_jobExecutionsRolloutConfigHasBeenSet; AbortConfig m_abortConfig; bool m_abortConfigHasBeenSet; Aws::Utils::DateTime m_createdAt; bool m_createdAtHasBeenSet; Aws::Utils::DateTime m_lastUpdatedAt; bool m_lastUpdatedAtHasBeenSet; Aws::Utils::DateTime m_completedAt; bool m_completedAtHasBeenSet; JobProcessDetails m_jobProcessDetails; bool m_jobProcessDetailsHasBeenSet; TimeoutConfig m_timeoutConfig; bool m_timeoutConfigHasBeenSet; }; } // namespace Model } // namespace IoT } // namespace Aws