// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
impl super::Client {
    /// Constructs a fluent builder for the [`CreateJobTemplate`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`job_template_id(impl Into<String>)`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::job_template_id) / [`set_job_template_id(Option<String>)`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::set_job_template_id): <p>A unique identifier for the job template. We recommend using a UUID. Alpha-numeric characters, "-", and "_" are valid for use here.</p>
    ///   - [`job_arn(impl Into<String>)`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::job_arn) / [`set_job_arn(Option<String>)`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::set_job_arn): <p>The ARN of the job to use as the basis for the job template.</p>
    ///   - [`document_source(impl Into<String>)`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::document_source) / [`set_document_source(Option<String>)`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::set_document_source): <p>An S3 link to the job document to use in the template. Required if you don't specify a value for <code>document</code>.</p> <note>   <p>If the job document resides in an S3 bucket, you must use a placeholder link when specifying the document.</p>   <p>The placeholder link is of the following form:</p>   <p> <code>${aws:iot:s3-presigned-url:https://s3.amazonaws.com/<i>bucket</i>/<i>key</i>}</code> </p>   <p>where <i>bucket</i> is your bucket name and <i>key</i> is the object in the bucket to which you are linking.</p>  </note>
    ///   - [`document(impl Into<String>)`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::document) / [`set_document(Option<String>)`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::set_document): <p>The job document. Required if you don't specify a value for <code>documentSource</code>.</p>
    ///   - [`description(impl Into<String>)`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::description) / [`set_description(Option<String>)`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::set_description): <p>A description of the job document.</p>
    ///   - [`presigned_url_config(PresignedUrlConfig)`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::presigned_url_config) / [`set_presigned_url_config(Option<PresignedUrlConfig>)`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::set_presigned_url_config): <p>Configuration for pre-signed S3 URLs.</p>
    ///   - [`job_executions_rollout_config(JobExecutionsRolloutConfig)`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::job_executions_rollout_config) / [`set_job_executions_rollout_config(Option<JobExecutionsRolloutConfig>)`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::set_job_executions_rollout_config): <p>Allows you to create a staged rollout of a job.</p>
    ///   - [`abort_config(AbortConfig)`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::abort_config) / [`set_abort_config(Option<AbortConfig>)`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::set_abort_config): <p>The criteria that determine when and how a job abort takes place.</p>
    ///   - [`timeout_config(TimeoutConfig)`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::timeout_config) / [`set_timeout_config(Option<TimeoutConfig>)`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::set_timeout_config): <p>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 <code>IN_PROGRESS</code>. If the job execution status is not set to another terminal state before the timer expires, it will be automatically set to <code>TIMED_OUT</code>.</p>
    ///   - [`tags(Tag)`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::set_tags): <p>Metadata that can be used to manage the job template.</p>
    ///   - [`job_executions_retry_config(JobExecutionsRetryConfig)`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::job_executions_retry_config) / [`set_job_executions_retry_config(Option<JobExecutionsRetryConfig>)`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::set_job_executions_retry_config): <p>Allows you to create the criteria to retry a job.</p>
    ///   - [`maintenance_windows(MaintenanceWindow)`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::maintenance_windows) / [`set_maintenance_windows(Option<Vec<MaintenanceWindow>>)`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::set_maintenance_windows): <p>Allows you to configure an optional maintenance window for the rollout of a job document to all devices in the target group for a job.</p>
    ///   - [`destination_package_versions(impl Into<String>)`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::destination_package_versions) / [`set_destination_package_versions(Option<Vec<String>>)`](crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::set_destination_package_versions): <p>The package version Amazon Resource Names (ARNs) that are installed on the device when the job successfully completes. </p>  <p> <b>Note:</b>The following Length Constraints relates to a single string. Up to five strings are allowed.</p>
    /// - On success, responds with [`CreateJobTemplateOutput`](crate::operation::create_job_template::CreateJobTemplateOutput) with field(s):
    ///   - [`job_template_arn(Option<String>)`](crate::operation::create_job_template::CreateJobTemplateOutput::job_template_arn): <p>The ARN of the job template.</p>
    ///   - [`job_template_id(Option<String>)`](crate::operation::create_job_template::CreateJobTemplateOutput::job_template_id): <p>The unique identifier of the job template.</p>
    /// - On failure, responds with [`SdkError<CreateJobTemplateError>`](crate::operation::create_job_template::CreateJobTemplateError)
    pub fn create_job_template(&self) -> crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder {
        crate::operation::create_job_template::builders::CreateJobTemplateFluentBuilder::new(self.handle.clone())
    }
}