/** * 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 namespace Aws { namespace IoT { namespace Model { /** */ class AWS_IOT_API CreateJobRequest : public IoTRequest { public: CreateJobRequest(); // Service request name is the Operation name which will send this request out, // each operation should has unique request name, so that we can get operation's name from this request. // Note: this is not true for response, multiple operations may have the same response name, // so we can not get operation's name from response. inline virtual const char* GetServiceRequestName() const override { return "CreateJob"; } Aws::String SerializePayload() const override; /** *

A job identifier which must be unique for your AWS account. We recommend * using a UUID. Alpha-numeric characters, "-" and "_" are valid for use here.

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

A job identifier which must be unique for your AWS account. We recommend * using a UUID. Alpha-numeric characters, "-" and "_" are valid for use here.

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

A job identifier which must be unique for your AWS account. We recommend * using a UUID. Alpha-numeric characters, "-" and "_" are valid for use here.

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

A job identifier which must be unique for your AWS account. We recommend * using a UUID. Alpha-numeric characters, "-" and "_" are valid for use here.

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

A job identifier which must be unique for your AWS account. We recommend * using a UUID. Alpha-numeric characters, "-" and "_" are valid for use here.

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

A job identifier which must be unique for your AWS account. We recommend * using a UUID. Alpha-numeric characters, "-" and "_" are valid for use here.

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

A job identifier which must be unique for your AWS account. We recommend * using a UUID. Alpha-numeric characters, "-" and "_" are valid for use here.

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

A job identifier which must be unique for your AWS account. We recommend * using a UUID. Alpha-numeric characters, "-" and "_" are valid for use here.

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

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

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

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

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

A list of 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 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 things and thing groups to which the job should be sent.

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

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

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

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

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

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

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

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

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

An S3 link to the job document.

*/ inline const Aws::String& GetDocumentSource() const{ return m_documentSource; } /** *

An S3 link to the job document.

*/ inline bool DocumentSourceHasBeenSet() const { return m_documentSourceHasBeenSet; } /** *

An S3 link to the job document.

*/ inline void SetDocumentSource(const Aws::String& value) { m_documentSourceHasBeenSet = true; m_documentSource = value; } /** *

An S3 link to the job document.

*/ inline void SetDocumentSource(Aws::String&& value) { m_documentSourceHasBeenSet = true; m_documentSource = std::move(value); } /** *

An S3 link to the job document.

*/ inline void SetDocumentSource(const char* value) { m_documentSourceHasBeenSet = true; m_documentSource.assign(value); } /** *

An S3 link to the job document.

*/ inline CreateJobRequest& WithDocumentSource(const Aws::String& value) { SetDocumentSource(value); return *this;} /** *

An S3 link to the job document.

*/ inline CreateJobRequest& WithDocumentSource(Aws::String&& value) { SetDocumentSource(std::move(value)); return *this;} /** *

An S3 link to the job document.

*/ inline CreateJobRequest& WithDocumentSource(const char* value) { SetDocumentSource(value); return *this;} /** *

The job document.

If the job document resides in an S3 bucket, * you must use a placeholder link when specifying the document.

The * placeholder link is of the following form:

* ${aws:iot:s3-presigned-url:https://s3.amazonaws.com/bucket/key} *

where bucket is your bucket name and key is the object in * the bucket to which you are linking.

*/ inline const Aws::String& GetDocument() const{ return m_document; } /** *

The job document.

If the job document resides in an S3 bucket, * you must use a placeholder link when specifying the document.

The * placeholder link is of the following form:

* ${aws:iot:s3-presigned-url:https://s3.amazonaws.com/bucket/key} *

where bucket is your bucket name and key is the object in * the bucket to which you are linking.

*/ inline bool DocumentHasBeenSet() const { return m_documentHasBeenSet; } /** *

The job document.

If the job document resides in an S3 bucket, * you must use a placeholder link when specifying the document.

The * placeholder link is of the following form:

* ${aws:iot:s3-presigned-url:https://s3.amazonaws.com/bucket/key} *

where bucket is your bucket name and key is the object in * the bucket to which you are linking.

*/ inline void SetDocument(const Aws::String& value) { m_documentHasBeenSet = true; m_document = value; } /** *

The job document.

If the job document resides in an S3 bucket, * you must use a placeholder link when specifying the document.

The * placeholder link is of the following form:

* ${aws:iot:s3-presigned-url:https://s3.amazonaws.com/bucket/key} *

where bucket is your bucket name and key is the object in * the bucket to which you are linking.

*/ inline void SetDocument(Aws::String&& value) { m_documentHasBeenSet = true; m_document = std::move(value); } /** *

The job document.

If the job document resides in an S3 bucket, * you must use a placeholder link when specifying the document.

The * placeholder link is of the following form:

* ${aws:iot:s3-presigned-url:https://s3.amazonaws.com/bucket/key} *

where bucket is your bucket name and key is the object in * the bucket to which you are linking.

*/ inline void SetDocument(const char* value) { m_documentHasBeenSet = true; m_document.assign(value); } /** *

The job document.

If the job document resides in an S3 bucket, * you must use a placeholder link when specifying the document.

The * placeholder link is of the following form:

* ${aws:iot:s3-presigned-url:https://s3.amazonaws.com/bucket/key} *

where bucket is your bucket name and key is the object in * the bucket to which you are linking.

*/ inline CreateJobRequest& WithDocument(const Aws::String& value) { SetDocument(value); return *this;} /** *

The job document.

If the job document resides in an S3 bucket, * you must use a placeholder link when specifying the document.

The * placeholder link is of the following form:

* ${aws:iot:s3-presigned-url:https://s3.amazonaws.com/bucket/key} *

where bucket is your bucket name and key is the object in * the bucket to which you are linking.

*/ inline CreateJobRequest& WithDocument(Aws::String&& value) { SetDocument(std::move(value)); return *this;} /** *

The job document.

If the job document resides in an S3 bucket, * you must use a placeholder link when specifying the document.

The * placeholder link is of the following form:

* ${aws:iot:s3-presigned-url:https://s3.amazonaws.com/bucket/key} *

where bucket is your bucket name and key is the object in * the bucket to which you are linking.

*/ inline CreateJobRequest& WithDocument(const char* value) { SetDocument(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 CreateJobRequest& WithDescription(const Aws::String& value) { SetDescription(value); return *this;} /** *

A short text description of the job.

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

A short text description of the job.

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

Configuration information for pre-signed S3 URLs.

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

Configuration information for pre-signed S3 URLs.

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

Configuration information for pre-signed S3 URLs.

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

Configuration information for pre-signed S3 URLs.

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

Configuration information for pre-signed S3 URLs.

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

Configuration information for pre-signed S3 URLs.

*/ inline CreateJobRequest& WithPresignedUrlConfig(PresignedUrlConfig&& value) { SetPresignedUrlConfig(std::move(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 thing when the thing 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 thing when the thing 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 thing when the thing 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 thing when the thing 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 thing when the thing is * added to a target group, even after the job was completed by all things * originally in the group.

*/ inline CreateJobRequest& 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 thing when the thing is * added to a target group, even after the job was completed by all things * originally in the group.

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

Allows you to create a staged rollout of the job.

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

Allows you to create a staged rollout of the job.

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

Allows you to create a staged rollout of the job.

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

Allows you to create a staged rollout of the job.

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

Allows you to create a staged rollout of the job.

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

Allows you to create a staged rollout of the job.

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

Allows you to create criteria to abort a job.

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

Allows you to create criteria to abort a job.

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

Allows you to create criteria to abort a job.

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

Allows you to create criteria to abort a job.

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

Allows you to create criteria to abort a job.

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

Allows you to create criteria to abort a job.

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

Specifies the amount of time each device has to finish its execution of the * job. The 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 time 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. The 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 time 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. The 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 time 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. The 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 time 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. The 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 time expires, it will be automatically set to * TIMED_OUT.

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

Specifies the amount of time each device has to finish its execution of the * job. The 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 time expires, it will be automatically set to * TIMED_OUT.

*/ inline CreateJobRequest& WithTimeoutConfig(TimeoutConfig&& value) { SetTimeoutConfig(std::move(value)); return *this;} /** *

Metadata which can be used to manage the job.

*/ inline const Aws::Vector& GetTags() const{ return m_tags; } /** *

Metadata which can be used to manage the job.

*/ inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; } /** *

Metadata which can be used to manage the job.

*/ inline void SetTags(const Aws::Vector& value) { m_tagsHasBeenSet = true; m_tags = value; } /** *

Metadata which can be used to manage the job.

*/ inline void SetTags(Aws::Vector&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); } /** *

Metadata which can be used to manage the job.

*/ inline CreateJobRequest& WithTags(const Aws::Vector& value) { SetTags(value); return *this;} /** *

Metadata which can be used to manage the job.

*/ inline CreateJobRequest& WithTags(Aws::Vector&& value) { SetTags(std::move(value)); return *this;} /** *

Metadata which can be used to manage the job.

*/ inline CreateJobRequest& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; } /** *

Metadata which can be used to manage the job.

*/ inline CreateJobRequest& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(value)); return *this; } private: Aws::String m_jobId; bool m_jobIdHasBeenSet; Aws::Vector m_targets; bool m_targetsHasBeenSet; Aws::String m_documentSource; bool m_documentSourceHasBeenSet; Aws::String m_document; bool m_documentHasBeenSet; Aws::String m_description; bool m_descriptionHasBeenSet; PresignedUrlConfig m_presignedUrlConfig; bool m_presignedUrlConfigHasBeenSet; TargetSelection m_targetSelection; bool m_targetSelectionHasBeenSet; JobExecutionsRolloutConfig m_jobExecutionsRolloutConfig; bool m_jobExecutionsRolloutConfigHasBeenSet; AbortConfig m_abortConfig; bool m_abortConfigHasBeenSet; TimeoutConfig m_timeoutConfig; bool m_timeoutConfigHasBeenSet; Aws::Vector m_tags; bool m_tagsHasBeenSet; }; } // namespace Model } // namespace IoT } // namespace Aws