/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace IoT { namespace Model { /** *

Specifies the date and time that a job will begin the rollout of the job * document to all devices in the target group. Additionally, you can specify the * end behavior for each job execution when it reaches the scheduled end * time.

See Also:

AWS * API Reference

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

The time a job will begin rollout of the job document to all devices in the * target group for a job. The startTime can be scheduled up to a year * in advance and must be scheduled a minimum of thirty minutes from the current * time. The date and time format for the startTime is YYYY-MM-DD for * the date and HH:MM for the time.

*/ inline const Aws::String& GetStartTime() const{ return m_startTime; } /** *

The time a job will begin rollout of the job document to all devices in the * target group for a job. The startTime can be scheduled up to a year * in advance and must be scheduled a minimum of thirty minutes from the current * time. The date and time format for the startTime is YYYY-MM-DD for * the date and HH:MM for the time.

*/ inline bool StartTimeHasBeenSet() const { return m_startTimeHasBeenSet; } /** *

The time a job will begin rollout of the job document to all devices in the * target group for a job. The startTime can be scheduled up to a year * in advance and must be scheduled a minimum of thirty minutes from the current * time. The date and time format for the startTime is YYYY-MM-DD for * the date and HH:MM for the time.

*/ inline void SetStartTime(const Aws::String& value) { m_startTimeHasBeenSet = true; m_startTime = value; } /** *

The time a job will begin rollout of the job document to all devices in the * target group for a job. The startTime can be scheduled up to a year * in advance and must be scheduled a minimum of thirty minutes from the current * time. The date and time format for the startTime is YYYY-MM-DD for * the date and HH:MM for the time.

*/ inline void SetStartTime(Aws::String&& value) { m_startTimeHasBeenSet = true; m_startTime = std::move(value); } /** *

The time a job will begin rollout of the job document to all devices in the * target group for a job. The startTime can be scheduled up to a year * in advance and must be scheduled a minimum of thirty minutes from the current * time. The date and time format for the startTime is YYYY-MM-DD for * the date and HH:MM for the time.

*/ inline void SetStartTime(const char* value) { m_startTimeHasBeenSet = true; m_startTime.assign(value); } /** *

The time a job will begin rollout of the job document to all devices in the * target group for a job. The startTime can be scheduled up to a year * in advance and must be scheduled a minimum of thirty minutes from the current * time. The date and time format for the startTime is YYYY-MM-DD for * the date and HH:MM for the time.

*/ inline SchedulingConfig& WithStartTime(const Aws::String& value) { SetStartTime(value); return *this;} /** *

The time a job will begin rollout of the job document to all devices in the * target group for a job. The startTime can be scheduled up to a year * in advance and must be scheduled a minimum of thirty minutes from the current * time. The date and time format for the startTime is YYYY-MM-DD for * the date and HH:MM for the time.

*/ inline SchedulingConfig& WithStartTime(Aws::String&& value) { SetStartTime(std::move(value)); return *this;} /** *

The time a job will begin rollout of the job document to all devices in the * target group for a job. The startTime can be scheduled up to a year * in advance and must be scheduled a minimum of thirty minutes from the current * time. The date and time format for the startTime is YYYY-MM-DD for * the date and HH:MM for the time.

*/ inline SchedulingConfig& WithStartTime(const char* value) { SetStartTime(value); return *this;} /** *

The time a job will stop rollout of the job document to all devices in the * target group for a job. The endTime must take place no later than * two years from the current time and be scheduled a minimum of thirty minutes * from the current time. The minimum duration between startTime and * endTime is thirty minutes. The maximum duration between * startTime and endTime is two years. The date and time * format for the endTime is YYYY-MM-DD for the date and HH:MM for the * time.

*/ inline const Aws::String& GetEndTime() const{ return m_endTime; } /** *

The time a job will stop rollout of the job document to all devices in the * target group for a job. The endTime must take place no later than * two years from the current time and be scheduled a minimum of thirty minutes * from the current time. The minimum duration between startTime and * endTime is thirty minutes. The maximum duration between * startTime and endTime is two years. The date and time * format for the endTime is YYYY-MM-DD for the date and HH:MM for the * time.

*/ inline bool EndTimeHasBeenSet() const { return m_endTimeHasBeenSet; } /** *

The time a job will stop rollout of the job document to all devices in the * target group for a job. The endTime must take place no later than * two years from the current time and be scheduled a minimum of thirty minutes * from the current time. The minimum duration between startTime and * endTime is thirty minutes. The maximum duration between * startTime and endTime is two years. The date and time * format for the endTime is YYYY-MM-DD for the date and HH:MM for the * time.

*/ inline void SetEndTime(const Aws::String& value) { m_endTimeHasBeenSet = true; m_endTime = value; } /** *

The time a job will stop rollout of the job document to all devices in the * target group for a job. The endTime must take place no later than * two years from the current time and be scheduled a minimum of thirty minutes * from the current time. The minimum duration between startTime and * endTime is thirty minutes. The maximum duration between * startTime and endTime is two years. The date and time * format for the endTime is YYYY-MM-DD for the date and HH:MM for the * time.

*/ inline void SetEndTime(Aws::String&& value) { m_endTimeHasBeenSet = true; m_endTime = std::move(value); } /** *

The time a job will stop rollout of the job document to all devices in the * target group for a job. The endTime must take place no later than * two years from the current time and be scheduled a minimum of thirty minutes * from the current time. The minimum duration between startTime and * endTime is thirty minutes. The maximum duration between * startTime and endTime is two years. The date and time * format for the endTime is YYYY-MM-DD for the date and HH:MM for the * time.

*/ inline void SetEndTime(const char* value) { m_endTimeHasBeenSet = true; m_endTime.assign(value); } /** *

The time a job will stop rollout of the job document to all devices in the * target group for a job. The endTime must take place no later than * two years from the current time and be scheduled a minimum of thirty minutes * from the current time. The minimum duration between startTime and * endTime is thirty minutes. The maximum duration between * startTime and endTime is two years. The date and time * format for the endTime is YYYY-MM-DD for the date and HH:MM for the * time.

*/ inline SchedulingConfig& WithEndTime(const Aws::String& value) { SetEndTime(value); return *this;} /** *

The time a job will stop rollout of the job document to all devices in the * target group for a job. The endTime must take place no later than * two years from the current time and be scheduled a minimum of thirty minutes * from the current time. The minimum duration between startTime and * endTime is thirty minutes. The maximum duration between * startTime and endTime is two years. The date and time * format for the endTime is YYYY-MM-DD for the date and HH:MM for the * time.

*/ inline SchedulingConfig& WithEndTime(Aws::String&& value) { SetEndTime(std::move(value)); return *this;} /** *

The time a job will stop rollout of the job document to all devices in the * target group for a job. The endTime must take place no later than * two years from the current time and be scheduled a minimum of thirty minutes * from the current time. The minimum duration between startTime and * endTime is thirty minutes. The maximum duration between * startTime and endTime is two years. The date and time * format for the endTime is YYYY-MM-DD for the date and HH:MM for the * time.

*/ inline SchedulingConfig& WithEndTime(const char* value) { SetEndTime(value); return *this;} /** *

Specifies the end behavior for all job executions after a job reaches the * selected endTime. If endTime is not selected when * creating the job, then endBehavior does not apply.

*/ inline const JobEndBehavior& GetEndBehavior() const{ return m_endBehavior; } /** *

Specifies the end behavior for all job executions after a job reaches the * selected endTime. If endTime is not selected when * creating the job, then endBehavior does not apply.

*/ inline bool EndBehaviorHasBeenSet() const { return m_endBehaviorHasBeenSet; } /** *

Specifies the end behavior for all job executions after a job reaches the * selected endTime. If endTime is not selected when * creating the job, then endBehavior does not apply.

*/ inline void SetEndBehavior(const JobEndBehavior& value) { m_endBehaviorHasBeenSet = true; m_endBehavior = value; } /** *

Specifies the end behavior for all job executions after a job reaches the * selected endTime. If endTime is not selected when * creating the job, then endBehavior does not apply.

*/ inline void SetEndBehavior(JobEndBehavior&& value) { m_endBehaviorHasBeenSet = true; m_endBehavior = std::move(value); } /** *

Specifies the end behavior for all job executions after a job reaches the * selected endTime. If endTime is not selected when * creating the job, then endBehavior does not apply.

*/ inline SchedulingConfig& WithEndBehavior(const JobEndBehavior& value) { SetEndBehavior(value); return *this;} /** *

Specifies the end behavior for all job executions after a job reaches the * selected endTime. If endTime is not selected when * creating the job, then endBehavior does not apply.

*/ inline SchedulingConfig& WithEndBehavior(JobEndBehavior&& value) { SetEndBehavior(std::move(value)); return *this;} /** *

An optional configuration within the SchedulingConfig to setup a * recurring maintenance window with a predetermined start time and duration for * the rollout of a job document to all devices in a target group for a job.

*/ inline const Aws::Vector& GetMaintenanceWindows() const{ return m_maintenanceWindows; } /** *

An optional configuration within the SchedulingConfig to setup a * recurring maintenance window with a predetermined start time and duration for * the rollout of a job document to all devices in a target group for a job.

*/ inline bool MaintenanceWindowsHasBeenSet() const { return m_maintenanceWindowsHasBeenSet; } /** *

An optional configuration within the SchedulingConfig to setup a * recurring maintenance window with a predetermined start time and duration for * the rollout of a job document to all devices in a target group for a job.

*/ inline void SetMaintenanceWindows(const Aws::Vector& value) { m_maintenanceWindowsHasBeenSet = true; m_maintenanceWindows = value; } /** *

An optional configuration within the SchedulingConfig to setup a * recurring maintenance window with a predetermined start time and duration for * the rollout of a job document to all devices in a target group for a job.

*/ inline void SetMaintenanceWindows(Aws::Vector&& value) { m_maintenanceWindowsHasBeenSet = true; m_maintenanceWindows = std::move(value); } /** *

An optional configuration within the SchedulingConfig to setup a * recurring maintenance window with a predetermined start time and duration for * the rollout of a job document to all devices in a target group for a job.

*/ inline SchedulingConfig& WithMaintenanceWindows(const Aws::Vector& value) { SetMaintenanceWindows(value); return *this;} /** *

An optional configuration within the SchedulingConfig to setup a * recurring maintenance window with a predetermined start time and duration for * the rollout of a job document to all devices in a target group for a job.

*/ inline SchedulingConfig& WithMaintenanceWindows(Aws::Vector&& value) { SetMaintenanceWindows(std::move(value)); return *this;} /** *

An optional configuration within the SchedulingConfig to setup a * recurring maintenance window with a predetermined start time and duration for * the rollout of a job document to all devices in a target group for a job.

*/ inline SchedulingConfig& AddMaintenanceWindows(const MaintenanceWindow& value) { m_maintenanceWindowsHasBeenSet = true; m_maintenanceWindows.push_back(value); return *this; } /** *

An optional configuration within the SchedulingConfig to setup a * recurring maintenance window with a predetermined start time and duration for * the rollout of a job document to all devices in a target group for a job.

*/ inline SchedulingConfig& AddMaintenanceWindows(MaintenanceWindow&& value) { m_maintenanceWindowsHasBeenSet = true; m_maintenanceWindows.push_back(std::move(value)); return *this; } private: Aws::String m_startTime; bool m_startTimeHasBeenSet = false; Aws::String m_endTime; bool m_endTimeHasBeenSet = false; JobEndBehavior m_endBehavior; bool m_endBehaviorHasBeenSet = false; Aws::Vector m_maintenanceWindows; bool m_maintenanceWindowsHasBeenSet = false; }; } // namespace Model } // namespace IoT } // namespace Aws