// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
#[derive(Debug)]
pub(crate) struct Handle {
    pub(crate) client: aws_smithy_client::Client<
        aws_smithy_client::erase::DynConnector,
        aws_smithy_client::erase::DynMiddleware<aws_smithy_client::erase::DynConnector>,
    >,
    pub(crate) conf: crate::Config,
}

/// Client for AWS Systems Manager Incident Manager
///
/// Client for invoking operations on AWS Systems Manager Incident Manager. Each operation on AWS Systems Manager Incident Manager is a method on this
/// this struct. `.send()` MUST be invoked on the generated operations to dispatch the request to the service.
///
/// # Examples
/// **Constructing a client and invoking an operation**
/// ```rust,no_run
/// # async fn docs() {
///     // create a shared configuration. This can be used & shared between multiple service clients.
///     let shared_config = aws_config::load_from_env().await;
///     let client = aws_sdk_ssmincidents::Client::new(&shared_config);
///     // invoke an operation
///     /* let rsp = client
///         .<operation_name>().
///         .<param>("some value")
///         .send().await; */
/// # }
/// ```
/// **Constructing a client with custom configuration**
/// ```rust,no_run
/// use aws_config::RetryConfig;
/// # async fn docs() {
/// let shared_config = aws_config::load_from_env().await;
/// let config = aws_sdk_ssmincidents::config::Builder::from(&shared_config)
///   .retry_config(RetryConfig::disabled())
///   .build();
/// let client = aws_sdk_ssmincidents::Client::from_conf(config);
/// # }
#[derive(std::fmt::Debug)]
pub struct Client {
    handle: std::sync::Arc<Handle>,
}

impl std::clone::Clone for Client {
    fn clone(&self) -> Self {
        Self {
            handle: self.handle.clone(),
        }
    }
}

#[doc(inline)]
pub use aws_smithy_client::Builder;

impl
    From<
        aws_smithy_client::Client<
            aws_smithy_client::erase::DynConnector,
            aws_smithy_client::erase::DynMiddleware<aws_smithy_client::erase::DynConnector>,
        >,
    > for Client
{
    fn from(
        client: aws_smithy_client::Client<
            aws_smithy_client::erase::DynConnector,
            aws_smithy_client::erase::DynMiddleware<aws_smithy_client::erase::DynConnector>,
        >,
    ) -> Self {
        Self::with_config(client, crate::Config::builder().build())
    }
}

impl Client {
    /// Creates a client with the given service configuration.
    pub fn with_config(
        client: aws_smithy_client::Client<
            aws_smithy_client::erase::DynConnector,
            aws_smithy_client::erase::DynMiddleware<aws_smithy_client::erase::DynConnector>,
        >,
        conf: crate::Config,
    ) -> Self {
        Self {
            handle: std::sync::Arc::new(Handle { client, conf }),
        }
    }

    /// Returns the client's configuration.
    pub fn conf(&self) -> &crate::Config {
        &self.handle.conf
    }
}
impl Client {
    /// Constructs a fluent builder for the [`CreateReplicationSet`](crate::client::fluent_builders::CreateReplicationSet) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`regions(HashMap<String, RegionMapInputValue>)`](crate::client::fluent_builders::CreateReplicationSet::regions) / [`set_regions(Option<HashMap<String, RegionMapInputValue>>)`](crate::client::fluent_builders::CreateReplicationSet::set_regions): <p>The Regions that Incident Manager replicates your data to. You can have up to three Regions in your replication set.</p>
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::CreateReplicationSet::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::CreateReplicationSet::set_client_token): <p>A token ensuring that the operation is called only once with the specified details.</p>
    /// - On success, responds with [`CreateReplicationSetOutput`](crate::output::CreateReplicationSetOutput) with field(s):
    ///   - [`arn(Option<String>)`](crate::output::CreateReplicationSetOutput::arn): <p>The Amazon Resource Name (ARN) of the replication set. </p>
    /// - On failure, responds with [`SdkError<CreateReplicationSetError>`](crate::error::CreateReplicationSetError)
    pub fn create_replication_set(&self) -> fluent_builders::CreateReplicationSet {
        fluent_builders::CreateReplicationSet::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateResponsePlan`](crate::client::fluent_builders::CreateResponsePlan) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::CreateResponsePlan::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::CreateResponsePlan::set_client_token): <p>A token ensuring that the operation is called only once with the specified details.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateResponsePlan::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateResponsePlan::set_name): <p>The short format name of the response plan. Can't include spaces.</p>
    ///   - [`display_name(impl Into<String>)`](crate::client::fluent_builders::CreateResponsePlan::display_name) / [`set_display_name(Option<String>)`](crate::client::fluent_builders::CreateResponsePlan::set_display_name): <p>The long format of the response plan name. This field can contain spaces.</p>
    ///   - [`incident_template(IncidentTemplate)`](crate::client::fluent_builders::CreateResponsePlan::incident_template) / [`set_incident_template(Option<IncidentTemplate>)`](crate::client::fluent_builders::CreateResponsePlan::set_incident_template): <p>Details used to create an incident when using this response plan.</p>
    ///   - [`chat_channel(ChatChannel)`](crate::client::fluent_builders::CreateResponsePlan::chat_channel) / [`set_chat_channel(Option<ChatChannel>)`](crate::client::fluent_builders::CreateResponsePlan::set_chat_channel): <p>The Chatbot chat channel used for collaboration during an incident.</p>
    ///   - [`engagements(Vec<String>)`](crate::client::fluent_builders::CreateResponsePlan::engagements) / [`set_engagements(Option<Vec<String>>)`](crate::client::fluent_builders::CreateResponsePlan::set_engagements): <p>The contacts and escalation plans that the response plan engages during an incident.</p>
    ///   - [`actions(Vec<Action>)`](crate::client::fluent_builders::CreateResponsePlan::actions) / [`set_actions(Option<Vec<Action>>)`](crate::client::fluent_builders::CreateResponsePlan::set_actions): <p>The actions that the response plan starts at the beginning of an incident.</p>
    ///   - [`tags(HashMap<String, String>)`](crate::client::fluent_builders::CreateResponsePlan::tags) / [`set_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::CreateResponsePlan::set_tags): <p>A list of tags that you are adding to the response plan.</p>
    /// - On success, responds with [`CreateResponsePlanOutput`](crate::output::CreateResponsePlanOutput) with field(s):
    ///   - [`arn(Option<String>)`](crate::output::CreateResponsePlanOutput::arn): <p>The Amazon Resource Name (ARN) of the response plan.</p>
    /// - On failure, responds with [`SdkError<CreateResponsePlanError>`](crate::error::CreateResponsePlanError)
    pub fn create_response_plan(&self) -> fluent_builders::CreateResponsePlan {
        fluent_builders::CreateResponsePlan::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateTimelineEvent`](crate::client::fluent_builders::CreateTimelineEvent) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::CreateTimelineEvent::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::CreateTimelineEvent::set_client_token): <p>A token ensuring that the action is called only once with the specified details.</p>
    ///   - [`incident_record_arn(impl Into<String>)`](crate::client::fluent_builders::CreateTimelineEvent::incident_record_arn) / [`set_incident_record_arn(Option<String>)`](crate::client::fluent_builders::CreateTimelineEvent::set_incident_record_arn): <p>The Amazon Resource Name (ARN) of the incident record to which the event will be added.</p>
    ///   - [`event_time(DateTime)`](crate::client::fluent_builders::CreateTimelineEvent::event_time) / [`set_event_time(Option<DateTime>)`](crate::client::fluent_builders::CreateTimelineEvent::set_event_time): <p>The time that the event occurred.</p>
    ///   - [`event_type(impl Into<String>)`](crate::client::fluent_builders::CreateTimelineEvent::event_type) / [`set_event_type(Option<String>)`](crate::client::fluent_builders::CreateTimelineEvent::set_event_type): <p>The type of the event. You can create timeline events of type <code>Custom Event</code>.</p>
    ///   - [`event_data(impl Into<String>)`](crate::client::fluent_builders::CreateTimelineEvent::event_data) / [`set_event_data(Option<String>)`](crate::client::fluent_builders::CreateTimelineEvent::set_event_data): <p>A short description of the event.</p>
    /// - On success, responds with [`CreateTimelineEventOutput`](crate::output::CreateTimelineEventOutput) with field(s):
    ///   - [`incident_record_arn(Option<String>)`](crate::output::CreateTimelineEventOutput::incident_record_arn): <p>The ARN of the incident record that you added the event to.</p>
    ///   - [`event_id(Option<String>)`](crate::output::CreateTimelineEventOutput::event_id): <p>The ID of the event for easy reference later. </p>
    /// - On failure, responds with [`SdkError<CreateTimelineEventError>`](crate::error::CreateTimelineEventError)
    pub fn create_timeline_event(&self) -> fluent_builders::CreateTimelineEvent {
        fluent_builders::CreateTimelineEvent::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteIncidentRecord`](crate::client::fluent_builders::DeleteIncidentRecord) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`arn(impl Into<String>)`](crate::client::fluent_builders::DeleteIncidentRecord::arn) / [`set_arn(Option<String>)`](crate::client::fluent_builders::DeleteIncidentRecord::set_arn): <p>The Amazon Resource Name (ARN) of the incident record you are deleting.</p>
    /// - On success, responds with [`DeleteIncidentRecordOutput`](crate::output::DeleteIncidentRecordOutput)

    /// - On failure, responds with [`SdkError<DeleteIncidentRecordError>`](crate::error::DeleteIncidentRecordError)
    pub fn delete_incident_record(&self) -> fluent_builders::DeleteIncidentRecord {
        fluent_builders::DeleteIncidentRecord::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteReplicationSet`](crate::client::fluent_builders::DeleteReplicationSet) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`arn(impl Into<String>)`](crate::client::fluent_builders::DeleteReplicationSet::arn) / [`set_arn(Option<String>)`](crate::client::fluent_builders::DeleteReplicationSet::set_arn): <p>The Amazon Resource Name (ARN) of the replication set you're deleting.</p>
    /// - On success, responds with [`DeleteReplicationSetOutput`](crate::output::DeleteReplicationSetOutput)

    /// - On failure, responds with [`SdkError<DeleteReplicationSetError>`](crate::error::DeleteReplicationSetError)
    pub fn delete_replication_set(&self) -> fluent_builders::DeleteReplicationSet {
        fluent_builders::DeleteReplicationSet::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteResourcePolicy`](crate::client::fluent_builders::DeleteResourcePolicy) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`resource_arn(impl Into<String>)`](crate::client::fluent_builders::DeleteResourcePolicy::resource_arn) / [`set_resource_arn(Option<String>)`](crate::client::fluent_builders::DeleteResourcePolicy::set_resource_arn): <p>The Amazon Resource Name (ARN) of the resource you're deleting the policy from.</p>
    ///   - [`policy_id(impl Into<String>)`](crate::client::fluent_builders::DeleteResourcePolicy::policy_id) / [`set_policy_id(Option<String>)`](crate::client::fluent_builders::DeleteResourcePolicy::set_policy_id): <p>The ID of the resource policy you're deleting.</p>
    /// - On success, responds with [`DeleteResourcePolicyOutput`](crate::output::DeleteResourcePolicyOutput)

    /// - On failure, responds with [`SdkError<DeleteResourcePolicyError>`](crate::error::DeleteResourcePolicyError)
    pub fn delete_resource_policy(&self) -> fluent_builders::DeleteResourcePolicy {
        fluent_builders::DeleteResourcePolicy::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteResponsePlan`](crate::client::fluent_builders::DeleteResponsePlan) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`arn(impl Into<String>)`](crate::client::fluent_builders::DeleteResponsePlan::arn) / [`set_arn(Option<String>)`](crate::client::fluent_builders::DeleteResponsePlan::set_arn): <p>The Amazon Resource Name (ARN) of the response plan.</p>
    /// - On success, responds with [`DeleteResponsePlanOutput`](crate::output::DeleteResponsePlanOutput)

    /// - On failure, responds with [`SdkError<DeleteResponsePlanError>`](crate::error::DeleteResponsePlanError)
    pub fn delete_response_plan(&self) -> fluent_builders::DeleteResponsePlan {
        fluent_builders::DeleteResponsePlan::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteTimelineEvent`](crate::client::fluent_builders::DeleteTimelineEvent) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`incident_record_arn(impl Into<String>)`](crate::client::fluent_builders::DeleteTimelineEvent::incident_record_arn) / [`set_incident_record_arn(Option<String>)`](crate::client::fluent_builders::DeleteTimelineEvent::set_incident_record_arn): <p>The Amazon Resource Name (ARN) of the incident that includes the timeline event.</p>
    ///   - [`event_id(impl Into<String>)`](crate::client::fluent_builders::DeleteTimelineEvent::event_id) / [`set_event_id(Option<String>)`](crate::client::fluent_builders::DeleteTimelineEvent::set_event_id): <p>The ID of the event you are updating. You can find this by using <code>ListTimelineEvents</code>.</p>
    /// - On success, responds with [`DeleteTimelineEventOutput`](crate::output::DeleteTimelineEventOutput)

    /// - On failure, responds with [`SdkError<DeleteTimelineEventError>`](crate::error::DeleteTimelineEventError)
    pub fn delete_timeline_event(&self) -> fluent_builders::DeleteTimelineEvent {
        fluent_builders::DeleteTimelineEvent::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetIncidentRecord`](crate::client::fluent_builders::GetIncidentRecord) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`arn(impl Into<String>)`](crate::client::fluent_builders::GetIncidentRecord::arn) / [`set_arn(Option<String>)`](crate::client::fluent_builders::GetIncidentRecord::set_arn): <p>The Amazon Resource Name (ARN) of the incident record.</p>
    /// - On success, responds with [`GetIncidentRecordOutput`](crate::output::GetIncidentRecordOutput) with field(s):
    ///   - [`incident_record(Option<IncidentRecord>)`](crate::output::GetIncidentRecordOutput::incident_record): <p>Details the structure of the incident record.</p>
    /// - On failure, responds with [`SdkError<GetIncidentRecordError>`](crate::error::GetIncidentRecordError)
    pub fn get_incident_record(&self) -> fluent_builders::GetIncidentRecord {
        fluent_builders::GetIncidentRecord::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetReplicationSet`](crate::client::fluent_builders::GetReplicationSet) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`arn(impl Into<String>)`](crate::client::fluent_builders::GetReplicationSet::arn) / [`set_arn(Option<String>)`](crate::client::fluent_builders::GetReplicationSet::set_arn): <p>The Amazon Resource Name (ARN) of the replication set you want to retrieve.</p>
    /// - On success, responds with [`GetReplicationSetOutput`](crate::output::GetReplicationSetOutput) with field(s):
    ///   - [`replication_set(Option<ReplicationSet>)`](crate::output::GetReplicationSetOutput::replication_set): <p>Details of the replication set.</p>
    /// - On failure, responds with [`SdkError<GetReplicationSetError>`](crate::error::GetReplicationSetError)
    pub fn get_replication_set(&self) -> fluent_builders::GetReplicationSet {
        fluent_builders::GetReplicationSet::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetResourcePolicies`](crate::client::fluent_builders::GetResourcePolicies) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::GetResourcePolicies::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`resource_arn(impl Into<String>)`](crate::client::fluent_builders::GetResourcePolicies::resource_arn) / [`set_resource_arn(Option<String>)`](crate::client::fluent_builders::GetResourcePolicies::set_resource_arn): <p>The Amazon Resource Name (ARN) of the response plan with the attached resource policy. </p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::GetResourcePolicies::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::GetResourcePolicies::set_max_results): <p>The maximum number of resource policies to display per page of results.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::GetResourcePolicies::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::GetResourcePolicies::set_next_token): <p>The pagination token to continue to the next page of results.</p>
    /// - On success, responds with [`GetResourcePoliciesOutput`](crate::output::GetResourcePoliciesOutput) with field(s):
    ///   - [`resource_policies(Option<Vec<ResourcePolicy>>)`](crate::output::GetResourcePoliciesOutput::resource_policies): <p>Details about the resource policy attached to the response plan.</p>
    ///   - [`next_token(Option<String>)`](crate::output::GetResourcePoliciesOutput::next_token): <p>The pagination token to continue to the next page of results.</p>
    /// - On failure, responds with [`SdkError<GetResourcePoliciesError>`](crate::error::GetResourcePoliciesError)
    pub fn get_resource_policies(&self) -> fluent_builders::GetResourcePolicies {
        fluent_builders::GetResourcePolicies::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetResponsePlan`](crate::client::fluent_builders::GetResponsePlan) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`arn(impl Into<String>)`](crate::client::fluent_builders::GetResponsePlan::arn) / [`set_arn(Option<String>)`](crate::client::fluent_builders::GetResponsePlan::set_arn): <p>The Amazon Resource Name (ARN) of the response plan.</p>
    /// - On success, responds with [`GetResponsePlanOutput`](crate::output::GetResponsePlanOutput) with field(s):
    ///   - [`arn(Option<String>)`](crate::output::GetResponsePlanOutput::arn): <p>The ARN of the response plan.</p>
    ///   - [`name(Option<String>)`](crate::output::GetResponsePlanOutput::name): <p>The short format name of the response plan. The name can't contain spaces.</p>
    ///   - [`display_name(Option<String>)`](crate::output::GetResponsePlanOutput::display_name): <p>The long format name of the response plan. Can contain spaces.</p>
    ///   - [`incident_template(Option<IncidentTemplate>)`](crate::output::GetResponsePlanOutput::incident_template): <p>Details used to create the incident when using this response plan.</p>
    ///   - [`chat_channel(Option<ChatChannel>)`](crate::output::GetResponsePlanOutput::chat_channel): <p>The Chatbot chat channel used for collaboration during an incident.</p>
    ///   - [`engagements(Option<Vec<String>>)`](crate::output::GetResponsePlanOutput::engagements): <p>The contacts and escalation plans that the response plan engages during an incident.</p>
    ///   - [`actions(Option<Vec<Action>>)`](crate::output::GetResponsePlanOutput::actions): <p>The actions that this response plan takes at the beginning of the incident.</p>
    /// - On failure, responds with [`SdkError<GetResponsePlanError>`](crate::error::GetResponsePlanError)
    pub fn get_response_plan(&self) -> fluent_builders::GetResponsePlan {
        fluent_builders::GetResponsePlan::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetTimelineEvent`](crate::client::fluent_builders::GetTimelineEvent) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`incident_record_arn(impl Into<String>)`](crate::client::fluent_builders::GetTimelineEvent::incident_record_arn) / [`set_incident_record_arn(Option<String>)`](crate::client::fluent_builders::GetTimelineEvent::set_incident_record_arn): <p>The Amazon Resource Name (ARN) of the incident that includes the timeline event.</p>
    ///   - [`event_id(impl Into<String>)`](crate::client::fluent_builders::GetTimelineEvent::event_id) / [`set_event_id(Option<String>)`](crate::client::fluent_builders::GetTimelineEvent::set_event_id): <p>The ID of the event. You can get an event's ID when you create it, or by using <code>ListTimelineEvents</code>.</p>
    /// - On success, responds with [`GetTimelineEventOutput`](crate::output::GetTimelineEventOutput) with field(s):
    ///   - [`event(Option<TimelineEvent>)`](crate::output::GetTimelineEventOutput::event): <p>Details about the timeline event.</p>
    /// - On failure, responds with [`SdkError<GetTimelineEventError>`](crate::error::GetTimelineEventError)
    pub fn get_timeline_event(&self) -> fluent_builders::GetTimelineEvent {
        fluent_builders::GetTimelineEvent::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListIncidentRecords`](crate::client::fluent_builders::ListIncidentRecords) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListIncidentRecords::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`filters(Vec<Filter>)`](crate::client::fluent_builders::ListIncidentRecords::filters) / [`set_filters(Option<Vec<Filter>>)`](crate::client::fluent_builders::ListIncidentRecords::set_filters): <p>Filters the list of incident records through which you are searching. You can filter on the following keys:</p>  <ul>   <li> <p> <code>creationTime</code> </p> </li>   <li> <p> <code>impact</code> </p> </li>   <li> <p> <code>status</code> </p> </li>   <li> <p> <code>createdBy</code> </p> </li>  </ul>  <p>Note the following when deciding how to use Filters:</p>  <ul>   <li> <p>If you don't specify a Filter, the response includes all incident records.</p> </li>   <li> <p>If you specify more than one filter in a single request, the response returns incident records that match all filters.</p> </li>   <li> <p>If you specify a filter with more than one value, the response returns incident records that match any of the values provided.</p> </li>  </ul>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListIncidentRecords::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListIncidentRecords::set_max_results): <p>The maximum number of results per page.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListIncidentRecords::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListIncidentRecords::set_next_token): <p>The pagination token to continue to the next page of results.</p>
    /// - On success, responds with [`ListIncidentRecordsOutput`](crate::output::ListIncidentRecordsOutput) with field(s):
    ///   - [`incident_record_summaries(Option<Vec<IncidentRecordSummary>>)`](crate::output::ListIncidentRecordsOutput::incident_record_summaries): <p>The details of each listed incident record.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListIncidentRecordsOutput::next_token): <p>The pagination token to continue to the next page of results.</p>
    /// - On failure, responds with [`SdkError<ListIncidentRecordsError>`](crate::error::ListIncidentRecordsError)
    pub fn list_incident_records(&self) -> fluent_builders::ListIncidentRecords {
        fluent_builders::ListIncidentRecords::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListRelatedItems`](crate::client::fluent_builders::ListRelatedItems) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListRelatedItems::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`incident_record_arn(impl Into<String>)`](crate::client::fluent_builders::ListRelatedItems::incident_record_arn) / [`set_incident_record_arn(Option<String>)`](crate::client::fluent_builders::ListRelatedItems::set_incident_record_arn): <p>The Amazon Resource Name (ARN) of the incident record containing the listed related items.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListRelatedItems::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListRelatedItems::set_max_results): <p>The maximum number of related items per page.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListRelatedItems::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListRelatedItems::set_next_token): <p>The pagination token to continue to the next page of results.</p>
    /// - On success, responds with [`ListRelatedItemsOutput`](crate::output::ListRelatedItemsOutput) with field(s):
    ///   - [`related_items(Option<Vec<RelatedItem>>)`](crate::output::ListRelatedItemsOutput::related_items): <p>Details about each related item.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListRelatedItemsOutput::next_token): <p>The pagination token to continue to the next page of results.</p>
    /// - On failure, responds with [`SdkError<ListRelatedItemsError>`](crate::error::ListRelatedItemsError)
    pub fn list_related_items(&self) -> fluent_builders::ListRelatedItems {
        fluent_builders::ListRelatedItems::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListReplicationSets`](crate::client::fluent_builders::ListReplicationSets) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListReplicationSets::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListReplicationSets::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListReplicationSets::set_max_results): <p>The maximum number of results per page. </p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListReplicationSets::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListReplicationSets::set_next_token): <p>The pagination token to continue to the next page of results.</p>
    /// - On success, responds with [`ListReplicationSetsOutput`](crate::output::ListReplicationSetsOutput) with field(s):
    ///   - [`replication_set_arns(Option<Vec<String>>)`](crate::output::ListReplicationSetsOutput::replication_set_arns): <p>The Amazon Resource Name (ARN) of the list replication set.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListReplicationSetsOutput::next_token): <p>The pagination token to continue to the next page of results.</p>
    /// - On failure, responds with [`SdkError<ListReplicationSetsError>`](crate::error::ListReplicationSetsError)
    pub fn list_replication_sets(&self) -> fluent_builders::ListReplicationSets {
        fluent_builders::ListReplicationSets::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListResponsePlans`](crate::client::fluent_builders::ListResponsePlans) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListResponsePlans::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListResponsePlans::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListResponsePlans::set_max_results): <p>The maximum number of response plans per page.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListResponsePlans::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListResponsePlans::set_next_token): <p>The pagination token to continue to the next page of results.</p>
    /// - On success, responds with [`ListResponsePlansOutput`](crate::output::ListResponsePlansOutput) with field(s):
    ///   - [`response_plan_summaries(Option<Vec<ResponsePlanSummary>>)`](crate::output::ListResponsePlansOutput::response_plan_summaries): <p>Details of each response plan.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListResponsePlansOutput::next_token): <p>The pagination token to continue to the next page of results.</p>
    /// - On failure, responds with [`SdkError<ListResponsePlansError>`](crate::error::ListResponsePlansError)
    pub fn list_response_plans(&self) -> fluent_builders::ListResponsePlans {
        fluent_builders::ListResponsePlans::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListTagsForResource`](crate::client::fluent_builders::ListTagsForResource) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`resource_arn(impl Into<String>)`](crate::client::fluent_builders::ListTagsForResource::resource_arn) / [`set_resource_arn(Option<String>)`](crate::client::fluent_builders::ListTagsForResource::set_resource_arn): <p>The Amazon Resource Name (ARN) of the response plan.</p>
    /// - On success, responds with [`ListTagsForResourceOutput`](crate::output::ListTagsForResourceOutput) with field(s):
    ///   - [`tags(Option<HashMap<String, String>>)`](crate::output::ListTagsForResourceOutput::tags): <p>A list of tags for the response plan.</p>
    /// - On failure, responds with [`SdkError<ListTagsForResourceError>`](crate::error::ListTagsForResourceError)
    pub fn list_tags_for_resource(&self) -> fluent_builders::ListTagsForResource {
        fluent_builders::ListTagsForResource::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListTimelineEvents`](crate::client::fluent_builders::ListTimelineEvents) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListTimelineEvents::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`incident_record_arn(impl Into<String>)`](crate::client::fluent_builders::ListTimelineEvents::incident_record_arn) / [`set_incident_record_arn(Option<String>)`](crate::client::fluent_builders::ListTimelineEvents::set_incident_record_arn): <p>The Amazon Resource Name (ARN) of the incident that includes the timeline event.</p>
    ///   - [`filters(Vec<Filter>)`](crate::client::fluent_builders::ListTimelineEvents::filters) / [`set_filters(Option<Vec<Filter>>)`](crate::client::fluent_builders::ListTimelineEvents::set_filters): <p>Filters the timeline events based on the provided conditional values. You can filter timeline events using the following keys:</p>  <ul>   <li> <p> <code>eventTime</code> </p> </li>   <li> <p> <code>eventType</code> </p> </li>  </ul>  <p>Note the following when deciding how to use Filters:</p>  <ul>   <li> <p>If you don't specify a Filter, the response includes all timeline events.</p> </li>   <li> <p>If you specify more than one filter in a single request, the response returns timeline events that match all filters.</p> </li>   <li> <p>If you specify a filter with more than one value, the response returns timeline events that match any of the values provided.</p> </li>  </ul>
    ///   - [`sort_by(TimelineEventSort)`](crate::client::fluent_builders::ListTimelineEvents::sort_by) / [`set_sort_by(Option<TimelineEventSort>)`](crate::client::fluent_builders::ListTimelineEvents::set_sort_by): <p>Sort by the specified key value pair.</p>
    ///   - [`sort_order(SortOrder)`](crate::client::fluent_builders::ListTimelineEvents::sort_order) / [`set_sort_order(Option<SortOrder>)`](crate::client::fluent_builders::ListTimelineEvents::set_sort_order): <p>Sorts the order of timeline events by the value specified in the <code>sortBy</code> field.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListTimelineEvents::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListTimelineEvents::set_max_results): <p>The maximum number of results per page.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListTimelineEvents::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListTimelineEvents::set_next_token): <p>The pagination token to continue to the next page of results.</p>
    /// - On success, responds with [`ListTimelineEventsOutput`](crate::output::ListTimelineEventsOutput) with field(s):
    ///   - [`event_summaries(Option<Vec<EventSummary>>)`](crate::output::ListTimelineEventsOutput::event_summaries): <p>Details about each event that occurred during the incident.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListTimelineEventsOutput::next_token): <p>The pagination token to continue to the next page of results.</p>
    /// - On failure, responds with [`SdkError<ListTimelineEventsError>`](crate::error::ListTimelineEventsError)
    pub fn list_timeline_events(&self) -> fluent_builders::ListTimelineEvents {
        fluent_builders::ListTimelineEvents::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`PutResourcePolicy`](crate::client::fluent_builders::PutResourcePolicy) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`resource_arn(impl Into<String>)`](crate::client::fluent_builders::PutResourcePolicy::resource_arn) / [`set_resource_arn(Option<String>)`](crate::client::fluent_builders::PutResourcePolicy::set_resource_arn): <p>The Amazon Resource Name (ARN) of the response plan you're adding the resource policy to.</p>
    ///   - [`policy(impl Into<String>)`](crate::client::fluent_builders::PutResourcePolicy::policy) / [`set_policy(Option<String>)`](crate::client::fluent_builders::PutResourcePolicy::set_policy): <p>Details of the resource policy.</p>
    /// - On success, responds with [`PutResourcePolicyOutput`](crate::output::PutResourcePolicyOutput) with field(s):
    ///   - [`policy_id(Option<String>)`](crate::output::PutResourcePolicyOutput::policy_id): <p>The ID of the resource policy.</p>
    /// - On failure, responds with [`SdkError<PutResourcePolicyError>`](crate::error::PutResourcePolicyError)
    pub fn put_resource_policy(&self) -> fluent_builders::PutResourcePolicy {
        fluent_builders::PutResourcePolicy::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`StartIncident`](crate::client::fluent_builders::StartIncident) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::StartIncident::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::StartIncident::set_client_token): <p>A token ensuring that the operation is called only once with the specified details.</p>
    ///   - [`response_plan_arn(impl Into<String>)`](crate::client::fluent_builders::StartIncident::response_plan_arn) / [`set_response_plan_arn(Option<String>)`](crate::client::fluent_builders::StartIncident::set_response_plan_arn): <p>The Amazon Resource Name (ARN) of the response plan that pre-defines summary, chat channels, Amazon SNS topics, runbooks, title, and impact of the incident. </p>
    ///   - [`title(impl Into<String>)`](crate::client::fluent_builders::StartIncident::title) / [`set_title(Option<String>)`](crate::client::fluent_builders::StartIncident::set_title): <p>Provide a title for the incident. Providing a title overwrites the title provided by the response plan. </p>
    ///   - [`impact(i32)`](crate::client::fluent_builders::StartIncident::impact) / [`set_impact(Option<i32>)`](crate::client::fluent_builders::StartIncident::set_impact): <p>Defines the impact to the customers. Providing an impact overwrites the impact provided by a response plan.</p>  <p class="title"> <b>Possible impacts:</b> </p>  <ul>   <li> <p> <code>1</code> - Critical impact, this typically relates to full application failure that impacts many to all customers. </p> </li>   <li> <p> <code>2</code> - High impact, partial application failure with impact to many customers.</p> </li>   <li> <p> <code>3</code> - Medium impact, the application is providing reduced service to customers.</p> </li>   <li> <p> <code>4</code> - Low impact, customer might aren't impacted by the problem yet.</p> </li>   <li> <p> <code>5</code> - No impact, customers aren't currently impacted but urgent action is needed to avoid impact.</p> </li>  </ul>
    ///   - [`trigger_details(TriggerDetails)`](crate::client::fluent_builders::StartIncident::trigger_details) / [`set_trigger_details(Option<TriggerDetails>)`](crate::client::fluent_builders::StartIncident::set_trigger_details): <p>Details of what created the incident record in Incident Manager.</p>
    ///   - [`related_items(Vec<RelatedItem>)`](crate::client::fluent_builders::StartIncident::related_items) / [`set_related_items(Option<Vec<RelatedItem>>)`](crate::client::fluent_builders::StartIncident::set_related_items): <p>Add related items to the incident for other responders to use. Related items are AWS resources, external links, or files uploaded to an Amazon S3 bucket. </p>
    /// - On success, responds with [`StartIncidentOutput`](crate::output::StartIncidentOutput) with field(s):
    ///   - [`incident_record_arn(Option<String>)`](crate::output::StartIncidentOutput::incident_record_arn): <p>The ARN of the newly created incident record.</p>
    /// - On failure, responds with [`SdkError<StartIncidentError>`](crate::error::StartIncidentError)
    pub fn start_incident(&self) -> fluent_builders::StartIncident {
        fluent_builders::StartIncident::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`TagResource`](crate::client::fluent_builders::TagResource) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`resource_arn(impl Into<String>)`](crate::client::fluent_builders::TagResource::resource_arn) / [`set_resource_arn(Option<String>)`](crate::client::fluent_builders::TagResource::set_resource_arn): <p>The Amazon Resource Name (ARN) of the response plan you're adding the tags to.</p>
    ///   - [`tags(HashMap<String, String>)`](crate::client::fluent_builders::TagResource::tags) / [`set_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::TagResource::set_tags): <p>A list of tags that you are adding to the response plan.</p>
    /// - On success, responds with [`TagResourceOutput`](crate::output::TagResourceOutput)

    /// - On failure, responds with [`SdkError<TagResourceError>`](crate::error::TagResourceError)
    pub fn tag_resource(&self) -> fluent_builders::TagResource {
        fluent_builders::TagResource::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UntagResource`](crate::client::fluent_builders::UntagResource) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`resource_arn(impl Into<String>)`](crate::client::fluent_builders::UntagResource::resource_arn) / [`set_resource_arn(Option<String>)`](crate::client::fluent_builders::UntagResource::set_resource_arn): <p>The Amazon Resource Name (ARN) of the response plan you're removing a tag from.</p>
    ///   - [`tag_keys(Vec<String>)`](crate::client::fluent_builders::UntagResource::tag_keys) / [`set_tag_keys(Option<Vec<String>>)`](crate::client::fluent_builders::UntagResource::set_tag_keys): <p>The name of the tag you're removing from the response plan.</p>
    /// - On success, responds with [`UntagResourceOutput`](crate::output::UntagResourceOutput)

    /// - On failure, responds with [`SdkError<UntagResourceError>`](crate::error::UntagResourceError)
    pub fn untag_resource(&self) -> fluent_builders::UntagResource {
        fluent_builders::UntagResource::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateDeletionProtection`](crate::client::fluent_builders::UpdateDeletionProtection) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`arn(impl Into<String>)`](crate::client::fluent_builders::UpdateDeletionProtection::arn) / [`set_arn(Option<String>)`](crate::client::fluent_builders::UpdateDeletionProtection::set_arn): <p>The Amazon Resource Name (ARN) of the replication set you're updating.</p>
    ///   - [`deletion_protected(bool)`](crate::client::fluent_builders::UpdateDeletionProtection::deletion_protected) / [`set_deletion_protected(Option<bool>)`](crate::client::fluent_builders::UpdateDeletionProtection::set_deletion_protected): <p>Details if deletion protection is enabled or disabled in your account.</p>
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::UpdateDeletionProtection::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::UpdateDeletionProtection::set_client_token): <p>A token ensuring that the operation is called only once with the specified details.</p>
    /// - On success, responds with [`UpdateDeletionProtectionOutput`](crate::output::UpdateDeletionProtectionOutput)

    /// - On failure, responds with [`SdkError<UpdateDeletionProtectionError>`](crate::error::UpdateDeletionProtectionError)
    pub fn update_deletion_protection(&self) -> fluent_builders::UpdateDeletionProtection {
        fluent_builders::UpdateDeletionProtection::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateIncidentRecord`](crate::client::fluent_builders::UpdateIncidentRecord) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::UpdateIncidentRecord::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::UpdateIncidentRecord::set_client_token): <p>A token that ensures that the operation is called only once with the specified details.</p>
    ///   - [`arn(impl Into<String>)`](crate::client::fluent_builders::UpdateIncidentRecord::arn) / [`set_arn(Option<String>)`](crate::client::fluent_builders::UpdateIncidentRecord::set_arn): <p>The Amazon Resource Name (ARN) of the incident record you are updating.</p>
    ///   - [`title(impl Into<String>)`](crate::client::fluent_builders::UpdateIncidentRecord::title) / [`set_title(Option<String>)`](crate::client::fluent_builders::UpdateIncidentRecord::set_title): <p>A brief description of the incident.</p>
    ///   - [`summary(impl Into<String>)`](crate::client::fluent_builders::UpdateIncidentRecord::summary) / [`set_summary(Option<String>)`](crate::client::fluent_builders::UpdateIncidentRecord::set_summary): <p>A longer description of what occurred during the incident.</p>
    ///   - [`impact(i32)`](crate::client::fluent_builders::UpdateIncidentRecord::impact) / [`set_impact(Option<i32>)`](crate::client::fluent_builders::UpdateIncidentRecord::set_impact): <p>Defines the impact of the incident to customers and applications. Providing an impact overwrites the impact provided by the response plan.</p>  <p class="title"> <b>Possible impacts:</b> </p>  <ul>   <li> <p> <code>1</code> - Critical impact, full application failure that impacts many to all customers. </p> </li>   <li> <p> <code>2</code> - High impact, partial application failure with impact to many customers.</p> </li>   <li> <p> <code>3</code> - Medium impact, the application is providing reduced service to customers.</p> </li>   <li> <p> <code>4</code> - Low impact, customer aren't impacted by the problem yet.</p> </li>   <li> <p> <code>5</code> - No impact, customers aren't currently impacted but urgent action is needed to avoid impact.</p> </li>  </ul>
    ///   - [`status(IncidentRecordStatus)`](crate::client::fluent_builders::UpdateIncidentRecord::status) / [`set_status(Option<IncidentRecordStatus>)`](crate::client::fluent_builders::UpdateIncidentRecord::set_status): <p>The status of the incident. An incident can be <code>Open</code> or <code>Resolved</code>.</p>
    ///   - [`chat_channel(ChatChannel)`](crate::client::fluent_builders::UpdateIncidentRecord::chat_channel) / [`set_chat_channel(Option<ChatChannel>)`](crate::client::fluent_builders::UpdateIncidentRecord::set_chat_channel): <p>The Chatbot chat channel where responders can collaborate.</p>
    ///   - [`notification_targets(Vec<NotificationTargetItem>)`](crate::client::fluent_builders::UpdateIncidentRecord::notification_targets) / [`set_notification_targets(Option<Vec<NotificationTargetItem>>)`](crate::client::fluent_builders::UpdateIncidentRecord::set_notification_targets): <p>The Amazon SNS targets that are notified when updates are made to an incident.</p>  <p>Using multiple SNS topics creates redundancy in the event that a Region is down during the incident.</p>
    /// - On success, responds with [`UpdateIncidentRecordOutput`](crate::output::UpdateIncidentRecordOutput)

    /// - On failure, responds with [`SdkError<UpdateIncidentRecordError>`](crate::error::UpdateIncidentRecordError)
    pub fn update_incident_record(&self) -> fluent_builders::UpdateIncidentRecord {
        fluent_builders::UpdateIncidentRecord::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateRelatedItems`](crate::client::fluent_builders::UpdateRelatedItems) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::UpdateRelatedItems::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::UpdateRelatedItems::set_client_token): <p>A token ensuring that the operation is called only once with the specified details.</p>
    ///   - [`incident_record_arn(impl Into<String>)`](crate::client::fluent_builders::UpdateRelatedItems::incident_record_arn) / [`set_incident_record_arn(Option<String>)`](crate::client::fluent_builders::UpdateRelatedItems::set_incident_record_arn): <p>The Amazon Resource Name (ARN) of the incident record containing the related items you are updating.</p>
    ///   - [`related_items_update(RelatedItemsUpdate)`](crate::client::fluent_builders::UpdateRelatedItems::related_items_update) / [`set_related_items_update(Option<RelatedItemsUpdate>)`](crate::client::fluent_builders::UpdateRelatedItems::set_related_items_update): <p>Details about the item you are adding or deleting.</p>
    /// - On success, responds with [`UpdateRelatedItemsOutput`](crate::output::UpdateRelatedItemsOutput)

    /// - On failure, responds with [`SdkError<UpdateRelatedItemsError>`](crate::error::UpdateRelatedItemsError)
    pub fn update_related_items(&self) -> fluent_builders::UpdateRelatedItems {
        fluent_builders::UpdateRelatedItems::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateReplicationSet`](crate::client::fluent_builders::UpdateReplicationSet) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`arn(impl Into<String>)`](crate::client::fluent_builders::UpdateReplicationSet::arn) / [`set_arn(Option<String>)`](crate::client::fluent_builders::UpdateReplicationSet::set_arn): <p>The Amazon Resource Name (ARN) of the replication set you're updating.</p>
    ///   - [`actions(Vec<UpdateReplicationSetAction>)`](crate::client::fluent_builders::UpdateReplicationSet::actions) / [`set_actions(Option<Vec<UpdateReplicationSetAction>>)`](crate::client::fluent_builders::UpdateReplicationSet::set_actions): <p>An action to add or delete a Region.</p>
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::UpdateReplicationSet::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::UpdateReplicationSet::set_client_token): <p>A token ensuring that the operation is called only once with the specified details.</p>
    /// - On success, responds with [`UpdateReplicationSetOutput`](crate::output::UpdateReplicationSetOutput)

    /// - On failure, responds with [`SdkError<UpdateReplicationSetError>`](crate::error::UpdateReplicationSetError)
    pub fn update_replication_set(&self) -> fluent_builders::UpdateReplicationSet {
        fluent_builders::UpdateReplicationSet::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateResponsePlan`](crate::client::fluent_builders::UpdateResponsePlan) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::UpdateResponsePlan::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::UpdateResponsePlan::set_client_token): <p>A token ensuring that the operation is called only once with the specified details.</p>
    ///   - [`arn(impl Into<String>)`](crate::client::fluent_builders::UpdateResponsePlan::arn) / [`set_arn(Option<String>)`](crate::client::fluent_builders::UpdateResponsePlan::set_arn): <p>The Amazon Resource Name (ARN) of the response plan.</p>
    ///   - [`display_name(impl Into<String>)`](crate::client::fluent_builders::UpdateResponsePlan::display_name) / [`set_display_name(Option<String>)`](crate::client::fluent_builders::UpdateResponsePlan::set_display_name): <p>The long format name of the response plan. The display name can't contain spaces.</p>
    ///   - [`incident_template_title(impl Into<String>)`](crate::client::fluent_builders::UpdateResponsePlan::incident_template_title) / [`set_incident_template_title(Option<String>)`](crate::client::fluent_builders::UpdateResponsePlan::set_incident_template_title): <p>The short format name of the incident. The title can't contain spaces.</p>
    ///   - [`incident_template_impact(i32)`](crate::client::fluent_builders::UpdateResponsePlan::incident_template_impact) / [`set_incident_template_impact(Option<i32>)`](crate::client::fluent_builders::UpdateResponsePlan::set_incident_template_impact): <p>Defines the impact to the customers. Providing an impact overwrites the impact provided by a response plan.</p>  <p class="title"> <b>Possible impacts:</b> </p>  <ul>   <li> <p> <code>5</code> - Severe impact</p> </li>   <li> <p> <code>4</code> - High impact</p> </li>   <li> <p> <code>3</code> - Medium impact</p> </li>   <li> <p> <code>2</code> - Low impact</p> </li>   <li> <p> <code>1</code> - No impact</p> </li>  </ul>
    ///   - [`incident_template_summary(impl Into<String>)`](crate::client::fluent_builders::UpdateResponsePlan::incident_template_summary) / [`set_incident_template_summary(Option<String>)`](crate::client::fluent_builders::UpdateResponsePlan::set_incident_template_summary): <p>A brief summary of the incident. This typically contains what has happened, what's currently happening, and next steps.</p>
    ///   - [`incident_template_dedupe_string(impl Into<String>)`](crate::client::fluent_builders::UpdateResponsePlan::incident_template_dedupe_string) / [`set_incident_template_dedupe_string(Option<String>)`](crate::client::fluent_builders::UpdateResponsePlan::set_incident_template_dedupe_string): <p>The string Incident Manager uses to prevent duplicate incidents from being created by the same incident in the same account.</p>
    ///   - [`incident_template_notification_targets(Vec<NotificationTargetItem>)`](crate::client::fluent_builders::UpdateResponsePlan::incident_template_notification_targets) / [`set_incident_template_notification_targets(Option<Vec<NotificationTargetItem>>)`](crate::client::fluent_builders::UpdateResponsePlan::set_incident_template_notification_targets): <p>The Amazon SNS targets that are notified when updates are made to an incident.</p>
    ///   - [`chat_channel(ChatChannel)`](crate::client::fluent_builders::UpdateResponsePlan::chat_channel) / [`set_chat_channel(Option<ChatChannel>)`](crate::client::fluent_builders::UpdateResponsePlan::set_chat_channel): <p>The Chatbot chat channel used for collaboration during an incident.</p>  <p>Use the empty structure to remove the chat channel from the response plan.</p>
    ///   - [`engagements(Vec<String>)`](crate::client::fluent_builders::UpdateResponsePlan::engagements) / [`set_engagements(Option<Vec<String>>)`](crate::client::fluent_builders::UpdateResponsePlan::set_engagements): <p>The contacts and escalation plans that Incident Manager engages at the start of the incident.</p>
    ///   - [`actions(Vec<Action>)`](crate::client::fluent_builders::UpdateResponsePlan::actions) / [`set_actions(Option<Vec<Action>>)`](crate::client::fluent_builders::UpdateResponsePlan::set_actions): <p>The actions that this response plan takes at the beginning of an incident.</p>
    /// - On success, responds with [`UpdateResponsePlanOutput`](crate::output::UpdateResponsePlanOutput)

    /// - On failure, responds with [`SdkError<UpdateResponsePlanError>`](crate::error::UpdateResponsePlanError)
    pub fn update_response_plan(&self) -> fluent_builders::UpdateResponsePlan {
        fluent_builders::UpdateResponsePlan::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateTimelineEvent`](crate::client::fluent_builders::UpdateTimelineEvent) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::UpdateTimelineEvent::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::UpdateTimelineEvent::set_client_token): <p>A token ensuring that the operation is called only once with the specified details.</p>
    ///   - [`incident_record_arn(impl Into<String>)`](crate::client::fluent_builders::UpdateTimelineEvent::incident_record_arn) / [`set_incident_record_arn(Option<String>)`](crate::client::fluent_builders::UpdateTimelineEvent::set_incident_record_arn): <p>The Amazon Resource Name (ARN) of the incident that includes the timeline event.</p>
    ///   - [`event_id(impl Into<String>)`](crate::client::fluent_builders::UpdateTimelineEvent::event_id) / [`set_event_id(Option<String>)`](crate::client::fluent_builders::UpdateTimelineEvent::set_event_id): <p>The ID of the event you are updating. You can find this by using <code>ListTimelineEvents</code>.</p>
    ///   - [`event_time(DateTime)`](crate::client::fluent_builders::UpdateTimelineEvent::event_time) / [`set_event_time(Option<DateTime>)`](crate::client::fluent_builders::UpdateTimelineEvent::set_event_time): <p>The time that the event occurred.</p>
    ///   - [`event_type(impl Into<String>)`](crate::client::fluent_builders::UpdateTimelineEvent::event_type) / [`set_event_type(Option<String>)`](crate::client::fluent_builders::UpdateTimelineEvent::set_event_type): <p>The type of the event. You can update events of type <code>Custom Event</code>.</p>
    ///   - [`event_data(impl Into<String>)`](crate::client::fluent_builders::UpdateTimelineEvent::event_data) / [`set_event_data(Option<String>)`](crate::client::fluent_builders::UpdateTimelineEvent::set_event_data): <p>A short description of the event.</p>
    /// - On success, responds with [`UpdateTimelineEventOutput`](crate::output::UpdateTimelineEventOutput)

    /// - On failure, responds with [`SdkError<UpdateTimelineEventError>`](crate::error::UpdateTimelineEventError)
    pub fn update_timeline_event(&self) -> fluent_builders::UpdateTimelineEvent {
        fluent_builders::UpdateTimelineEvent::new(self.handle.clone())
    }
}
pub mod fluent_builders {
    //!
    //! Utilities to ergonomically construct a request to the service.
    //!
    //! Fluent builders are created through the [`Client`](crate::client::Client) by calling
    //! one if its operation methods. After parameters are set using the builder methods,
    //! the `send` method can be called to initiate the request.
    //!
    /// Fluent builder constructing a request to `CreateReplicationSet`.
    ///
    /// <p>A replication set replicates and encrypts your data to the provided Regions with the provided KMS key. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateReplicationSet {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_replication_set_input::Builder,
    }
    impl CreateReplicationSet {
        /// Creates a new `CreateReplicationSet`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::CreateReplicationSetOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateReplicationSetError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// Adds a key-value pair to `regions`.
        ///
        /// To override the contents of this collection use [`set_regions`](Self::set_regions).
        ///
        /// <p>The Regions that Incident Manager replicates your data to. You can have up to three Regions in your replication set.</p>
        pub fn regions(
            mut self,
            k: impl Into<std::string::String>,
            v: crate::model::RegionMapInputValue,
        ) -> Self {
            self.inner = self.inner.regions(k.into(), v);
            self
        }
        /// <p>The Regions that Incident Manager replicates your data to. You can have up to three Regions in your replication set.</p>
        pub fn set_regions(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, crate::model::RegionMapInputValue>,
            >,
        ) -> Self {
            self.inner = self.inner.set_regions(input);
            self
        }
        /// <p>A token ensuring that the operation is called only once with the specified details.</p>
        pub fn client_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.client_token(input.into());
            self
        }
        /// <p>A token ensuring that the operation is called only once with the specified details.</p>
        pub fn set_client_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_client_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateResponsePlan`.
    ///
    /// <p>Creates a response plan that automates the initial response to incidents. A response plan engages contacts, starts chat channel collaboration, and initiates runbooks at the beginning of an incident.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateResponsePlan {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_response_plan_input::Builder,
    }
    impl CreateResponsePlan {
        /// Creates a new `CreateResponsePlan`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::CreateResponsePlanOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateResponsePlanError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// <p>A token ensuring that the operation is called only once with the specified details.</p>
        pub fn client_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.client_token(input.into());
            self
        }
        /// <p>A token ensuring that the operation is called only once with the specified details.</p>
        pub fn set_client_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_client_token(input);
            self
        }
        /// <p>The short format name of the response plan. Can't include spaces.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The short format name of the response plan. Can't include spaces.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The long format of the response plan name. This field can contain spaces.</p>
        pub fn display_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.display_name(input.into());
            self
        }
        /// <p>The long format of the response plan name. This field can contain spaces.</p>
        pub fn set_display_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_display_name(input);
            self
        }
        /// <p>Details used to create an incident when using this response plan.</p>
        pub fn incident_template(mut self, input: crate::model::IncidentTemplate) -> Self {
            self.inner = self.inner.incident_template(input);
            self
        }
        /// <p>Details used to create an incident when using this response plan.</p>
        pub fn set_incident_template(
            mut self,
            input: std::option::Option<crate::model::IncidentTemplate>,
        ) -> Self {
            self.inner = self.inner.set_incident_template(input);
            self
        }
        /// <p>The Chatbot chat channel used for collaboration during an incident.</p>
        pub fn chat_channel(mut self, input: crate::model::ChatChannel) -> Self {
            self.inner = self.inner.chat_channel(input);
            self
        }
        /// <p>The Chatbot chat channel used for collaboration during an incident.</p>
        pub fn set_chat_channel(
            mut self,
            input: std::option::Option<crate::model::ChatChannel>,
        ) -> Self {
            self.inner = self.inner.set_chat_channel(input);
            self
        }
        /// <p>The contacts and escalation plans that the response plan engages during an incident.</p>
        pub fn engagements(mut self, input: std::vec::Vec<std::string::String>) -> Self {
            self.inner = self.inner.engagements(input);
            self
        }
        /// <p>The contacts and escalation plans that the response plan engages during an incident.</p>
        pub fn set_engagements(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_engagements(input);
            self
        }
        /// Appends an item to `actions`.
        ///
        /// To override the contents of this collection use [`set_actions`](Self::set_actions).
        ///
        /// <p>The actions that the response plan starts at the beginning of an incident.</p>
        pub fn actions(mut self, input: crate::model::Action) -> Self {
            self.inner = self.inner.actions(input);
            self
        }
        /// <p>The actions that the response plan starts at the beginning of an incident.</p>
        pub fn set_actions(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Action>>,
        ) -> Self {
            self.inner = self.inner.set_actions(input);
            self
        }
        /// Adds a key-value pair to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>A list of tags that you are adding to the response plan.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.tags(k.into(), v.into());
            self
        }
        /// <p>A list of tags that you are adding to the response plan.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateTimelineEvent`.
    ///
    /// <p>Creates a custom timeline event on the incident details page of an incident record. Timeline events are automatically created by Incident Manager, marking key moment during an incident. You can create custom timeline events to mark important events that are automatically detected by Incident Manager.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateTimelineEvent {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_timeline_event_input::Builder,
    }
    impl CreateTimelineEvent {
        /// Creates a new `CreateTimelineEvent`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::CreateTimelineEventOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateTimelineEventError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// <p>A token ensuring that the action is called only once with the specified details.</p>
        pub fn client_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.client_token(input.into());
            self
        }
        /// <p>A token ensuring that the action is called only once with the specified details.</p>
        pub fn set_client_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_client_token(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the incident record to which the event will be added.</p>
        pub fn incident_record_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.incident_record_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the incident record to which the event will be added.</p>
        pub fn set_incident_record_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_incident_record_arn(input);
            self
        }
        /// <p>The time that the event occurred.</p>
        pub fn event_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.inner = self.inner.event_time(input);
            self
        }
        /// <p>The time that the event occurred.</p>
        pub fn set_event_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.inner = self.inner.set_event_time(input);
            self
        }
        /// <p>The type of the event. You can create timeline events of type <code>Custom Event</code>.</p>
        pub fn event_type(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.event_type(input.into());
            self
        }
        /// <p>The type of the event. You can create timeline events of type <code>Custom Event</code>.</p>
        pub fn set_event_type(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_event_type(input);
            self
        }
        /// <p>A short description of the event.</p>
        pub fn event_data(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.event_data(input.into());
            self
        }
        /// <p>A short description of the event.</p>
        pub fn set_event_data(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_event_data(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteIncidentRecord`.
    ///
    /// <p>Delete an incident record from Incident Manager. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteIncidentRecord {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_incident_record_input::Builder,
    }
    impl DeleteIncidentRecord {
        /// Creates a new `DeleteIncidentRecord`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DeleteIncidentRecordOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteIncidentRecordError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the incident record you are deleting.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the incident record you are deleting.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteReplicationSet`.
    ///
    /// <p>Deletes all Regions in your replication set. Deleting the replication set deletes all Incident Manager data.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteReplicationSet {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_replication_set_input::Builder,
    }
    impl DeleteReplicationSet {
        /// Creates a new `DeleteReplicationSet`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DeleteReplicationSetOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteReplicationSetError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the replication set you're deleting.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the replication set you're deleting.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteResourcePolicy`.
    ///
    /// <p>Deletes the resource policy that Resource Access Manager uses to share your Incident Manager resource.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteResourcePolicy {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_resource_policy_input::Builder,
    }
    impl DeleteResourcePolicy {
        /// Creates a new `DeleteResourcePolicy`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DeleteResourcePolicyOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteResourcePolicyError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the resource you're deleting the policy from.</p>
        pub fn resource_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.resource_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the resource you're deleting the policy from.</p>
        pub fn set_resource_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_resource_arn(input);
            self
        }
        /// <p>The ID of the resource policy you're deleting.</p>
        pub fn policy_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.policy_id(input.into());
            self
        }
        /// <p>The ID of the resource policy you're deleting.</p>
        pub fn set_policy_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_policy_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteResponsePlan`.
    ///
    /// <p>Deletes the specified response plan. Deleting a response plan stops all linked CloudWatch alarms and EventBridge events from creating an incident with this response plan.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteResponsePlan {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_response_plan_input::Builder,
    }
    impl DeleteResponsePlan {
        /// Creates a new `DeleteResponsePlan`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DeleteResponsePlanOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteResponsePlanError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the response plan.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the response plan.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteTimelineEvent`.
    ///
    /// <p>Deletes a timeline event from an incident.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteTimelineEvent {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_timeline_event_input::Builder,
    }
    impl DeleteTimelineEvent {
        /// Creates a new `DeleteTimelineEvent`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DeleteTimelineEventOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteTimelineEventError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the incident that includes the timeline event.</p>
        pub fn incident_record_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.incident_record_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the incident that includes the timeline event.</p>
        pub fn set_incident_record_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_incident_record_arn(input);
            self
        }
        /// <p>The ID of the event you are updating. You can find this by using <code>ListTimelineEvents</code>.</p>
        pub fn event_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.event_id(input.into());
            self
        }
        /// <p>The ID of the event you are updating. You can find this by using <code>ListTimelineEvents</code>.</p>
        pub fn set_event_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_event_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetIncidentRecord`.
    ///
    /// <p>Returns the details for the specified incident record.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetIncidentRecord {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_incident_record_input::Builder,
    }
    impl GetIncidentRecord {
        /// Creates a new `GetIncidentRecord`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetIncidentRecordOutput,
            aws_smithy_http::result::SdkError<crate::error::GetIncidentRecordError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the incident record.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the incident record.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetReplicationSet`.
    ///
    /// <p>Retrieve your Incident Manager replication set.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetReplicationSet {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_replication_set_input::Builder,
    }
    impl GetReplicationSet {
        /// Creates a new `GetReplicationSet`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetReplicationSetOutput,
            aws_smithy_http::result::SdkError<crate::error::GetReplicationSetError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the replication set you want to retrieve.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the replication set you want to retrieve.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetResourcePolicies`.
    ///
    /// <p>Retrieves the resource policies attached to the specified response plan.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetResourcePolicies {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_resource_policies_input::Builder,
    }
    impl GetResourcePolicies {
        /// Creates a new `GetResourcePolicies`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetResourcePoliciesOutput,
            aws_smithy_http::result::SdkError<crate::error::GetResourcePoliciesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::GetResourcePoliciesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::GetResourcePoliciesPaginator {
            crate::paginator::GetResourcePoliciesPaginator::new(self.handle, self.inner)
        }
        /// <p>The Amazon Resource Name (ARN) of the response plan with the attached resource policy. </p>
        pub fn resource_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.resource_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the response plan with the attached resource policy. </p>
        pub fn set_resource_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_resource_arn(input);
            self
        }
        /// <p>The maximum number of resource policies to display per page of results.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of resource policies to display per page of results.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p>The pagination token to continue to the next page of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The pagination token to continue to the next page of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetResponsePlan`.
    ///
    /// <p>Retrieves the details of the specified response plan.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetResponsePlan {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_response_plan_input::Builder,
    }
    impl GetResponsePlan {
        /// Creates a new `GetResponsePlan`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetResponsePlanOutput,
            aws_smithy_http::result::SdkError<crate::error::GetResponsePlanError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the response plan.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the response plan.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetTimelineEvent`.
    ///
    /// <p>Retrieves a timeline event based on its ID and incident record.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetTimelineEvent {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_timeline_event_input::Builder,
    }
    impl GetTimelineEvent {
        /// Creates a new `GetTimelineEvent`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetTimelineEventOutput,
            aws_smithy_http::result::SdkError<crate::error::GetTimelineEventError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the incident that includes the timeline event.</p>
        pub fn incident_record_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.incident_record_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the incident that includes the timeline event.</p>
        pub fn set_incident_record_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_incident_record_arn(input);
            self
        }
        /// <p>The ID of the event. You can get an event's ID when you create it, or by using <code>ListTimelineEvents</code>.</p>
        pub fn event_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.event_id(input.into());
            self
        }
        /// <p>The ID of the event. You can get an event's ID when you create it, or by using <code>ListTimelineEvents</code>.</p>
        pub fn set_event_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_event_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListIncidentRecords`.
    ///
    /// <p>Lists all incident records in your account. Use this command to retrieve the Amazon Resource Name (ARN) of the incident record you want to update. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListIncidentRecords {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_incident_records_input::Builder,
    }
    impl ListIncidentRecords {
        /// Creates a new `ListIncidentRecords`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListIncidentRecordsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListIncidentRecordsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListIncidentRecordsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListIncidentRecordsPaginator {
            crate::paginator::ListIncidentRecordsPaginator::new(self.handle, self.inner)
        }
        /// Appends an item to `filters`.
        ///
        /// To override the contents of this collection use [`set_filters`](Self::set_filters).
        ///
        /// <p>Filters the list of incident records through which you are searching. You can filter on the following keys:</p>
        /// <ul>
        /// <li> <p> <code>creationTime</code> </p> </li>
        /// <li> <p> <code>impact</code> </p> </li>
        /// <li> <p> <code>status</code> </p> </li>
        /// <li> <p> <code>createdBy</code> </p> </li>
        /// </ul>
        /// <p>Note the following when deciding how to use Filters:</p>
        /// <ul>
        /// <li> <p>If you don't specify a Filter, the response includes all incident records.</p> </li>
        /// <li> <p>If you specify more than one filter in a single request, the response returns incident records that match all filters.</p> </li>
        /// <li> <p>If you specify a filter with more than one value, the response returns incident records that match any of the values provided.</p> </li>
        /// </ul>
        pub fn filters(mut self, input: crate::model::Filter) -> Self {
            self.inner = self.inner.filters(input);
            self
        }
        /// <p>Filters the list of incident records through which you are searching. You can filter on the following keys:</p>
        /// <ul>
        /// <li> <p> <code>creationTime</code> </p> </li>
        /// <li> <p> <code>impact</code> </p> </li>
        /// <li> <p> <code>status</code> </p> </li>
        /// <li> <p> <code>createdBy</code> </p> </li>
        /// </ul>
        /// <p>Note the following when deciding how to use Filters:</p>
        /// <ul>
        /// <li> <p>If you don't specify a Filter, the response includes all incident records.</p> </li>
        /// <li> <p>If you specify more than one filter in a single request, the response returns incident records that match all filters.</p> </li>
        /// <li> <p>If you specify a filter with more than one value, the response returns incident records that match any of the values provided.</p> </li>
        /// </ul>
        pub fn set_filters(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Filter>>,
        ) -> Self {
            self.inner = self.inner.set_filters(input);
            self
        }
        /// <p>The maximum number of results per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p>The pagination token to continue to the next page of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The pagination token to continue to the next page of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListRelatedItems`.
    ///
    /// <p>List all related items for an incident record.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListRelatedItems {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_related_items_input::Builder,
    }
    impl ListRelatedItems {
        /// Creates a new `ListRelatedItems`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListRelatedItemsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListRelatedItemsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListRelatedItemsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListRelatedItemsPaginator {
            crate::paginator::ListRelatedItemsPaginator::new(self.handle, self.inner)
        }
        /// <p>The Amazon Resource Name (ARN) of the incident record containing the listed related items.</p>
        pub fn incident_record_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.incident_record_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the incident record containing the listed related items.</p>
        pub fn set_incident_record_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_incident_record_arn(input);
            self
        }
        /// <p>The maximum number of related items per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of related items per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p>The pagination token to continue to the next page of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The pagination token to continue to the next page of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListReplicationSets`.
    ///
    /// <p>Lists details about the replication set configured in your account. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListReplicationSets {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_replication_sets_input::Builder,
    }
    impl ListReplicationSets {
        /// Creates a new `ListReplicationSets`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListReplicationSetsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListReplicationSetsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListReplicationSetsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListReplicationSetsPaginator {
            crate::paginator::ListReplicationSetsPaginator::new(self.handle, self.inner)
        }
        /// <p>The maximum number of results per page. </p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results per page. </p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p>The pagination token to continue to the next page of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The pagination token to continue to the next page of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListResponsePlans`.
    ///
    /// <p>Lists all response plans in your account.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListResponsePlans {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_response_plans_input::Builder,
    }
    impl ListResponsePlans {
        /// Creates a new `ListResponsePlans`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListResponsePlansOutput,
            aws_smithy_http::result::SdkError<crate::error::ListResponsePlansError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListResponsePlansPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListResponsePlansPaginator {
            crate::paginator::ListResponsePlansPaginator::new(self.handle, self.inner)
        }
        /// <p>The maximum number of response plans per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of response plans per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p>The pagination token to continue to the next page of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The pagination token to continue to the next page of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListTagsForResource`.
    ///
    /// <p>Lists the tags that are attached to the specified response plan.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListTagsForResource {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_tags_for_resource_input::Builder,
    }
    impl ListTagsForResource {
        /// Creates a new `ListTagsForResource`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListTagsForResourceOutput,
            aws_smithy_http::result::SdkError<crate::error::ListTagsForResourceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the response plan.</p>
        pub fn resource_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.resource_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the response plan.</p>
        pub fn set_resource_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_resource_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListTimelineEvents`.
    ///
    /// <p>Lists timeline events for the specified incident record.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListTimelineEvents {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_timeline_events_input::Builder,
    }
    impl ListTimelineEvents {
        /// Creates a new `ListTimelineEvents`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListTimelineEventsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListTimelineEventsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListTimelineEventsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListTimelineEventsPaginator {
            crate::paginator::ListTimelineEventsPaginator::new(self.handle, self.inner)
        }
        /// <p>The Amazon Resource Name (ARN) of the incident that includes the timeline event.</p>
        pub fn incident_record_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.incident_record_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the incident that includes the timeline event.</p>
        pub fn set_incident_record_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_incident_record_arn(input);
            self
        }
        /// Appends an item to `filters`.
        ///
        /// To override the contents of this collection use [`set_filters`](Self::set_filters).
        ///
        /// <p>Filters the timeline events based on the provided conditional values. You can filter timeline events using the following keys:</p>
        /// <ul>
        /// <li> <p> <code>eventTime</code> </p> </li>
        /// <li> <p> <code>eventType</code> </p> </li>
        /// </ul>
        /// <p>Note the following when deciding how to use Filters:</p>
        /// <ul>
        /// <li> <p>If you don't specify a Filter, the response includes all timeline events.</p> </li>
        /// <li> <p>If you specify more than one filter in a single request, the response returns timeline events that match all filters.</p> </li>
        /// <li> <p>If you specify a filter with more than one value, the response returns timeline events that match any of the values provided.</p> </li>
        /// </ul>
        pub fn filters(mut self, input: crate::model::Filter) -> Self {
            self.inner = self.inner.filters(input);
            self
        }
        /// <p>Filters the timeline events based on the provided conditional values. You can filter timeline events using the following keys:</p>
        /// <ul>
        /// <li> <p> <code>eventTime</code> </p> </li>
        /// <li> <p> <code>eventType</code> </p> </li>
        /// </ul>
        /// <p>Note the following when deciding how to use Filters:</p>
        /// <ul>
        /// <li> <p>If you don't specify a Filter, the response includes all timeline events.</p> </li>
        /// <li> <p>If you specify more than one filter in a single request, the response returns timeline events that match all filters.</p> </li>
        /// <li> <p>If you specify a filter with more than one value, the response returns timeline events that match any of the values provided.</p> </li>
        /// </ul>
        pub fn set_filters(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Filter>>,
        ) -> Self {
            self.inner = self.inner.set_filters(input);
            self
        }
        /// <p>Sort by the specified key value pair.</p>
        pub fn sort_by(mut self, input: crate::model::TimelineEventSort) -> Self {
            self.inner = self.inner.sort_by(input);
            self
        }
        /// <p>Sort by the specified key value pair.</p>
        pub fn set_sort_by(
            mut self,
            input: std::option::Option<crate::model::TimelineEventSort>,
        ) -> Self {
            self.inner = self.inner.set_sort_by(input);
            self
        }
        /// <p>Sorts the order of timeline events by the value specified in the <code>sortBy</code> field.</p>
        pub fn sort_order(mut self, input: crate::model::SortOrder) -> Self {
            self.inner = self.inner.sort_order(input);
            self
        }
        /// <p>Sorts the order of timeline events by the value specified in the <code>sortBy</code> field.</p>
        pub fn set_sort_order(
            mut self,
            input: std::option::Option<crate::model::SortOrder>,
        ) -> Self {
            self.inner = self.inner.set_sort_order(input);
            self
        }
        /// <p>The maximum number of results per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p>The pagination token to continue to the next page of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The pagination token to continue to the next page of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `PutResourcePolicy`.
    ///
    /// <p>Adds a resource policy to the specified response plan. The resource policy is used to share the response plan using Resource Access Manager (RAM). For more information about cross-account sharing, see <a href="https://docs.aws.amazon.com/incident-manager/latest/userguide/xa.html">Setting up cross-account functionality</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct PutResourcePolicy {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::put_resource_policy_input::Builder,
    }
    impl PutResourcePolicy {
        /// Creates a new `PutResourcePolicy`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::PutResourcePolicyOutput,
            aws_smithy_http::result::SdkError<crate::error::PutResourcePolicyError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the response plan you're adding the resource policy to.</p>
        pub fn resource_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.resource_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the response plan you're adding the resource policy to.</p>
        pub fn set_resource_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_resource_arn(input);
            self
        }
        /// <p>Details of the resource policy.</p>
        pub fn policy(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.policy(input.into());
            self
        }
        /// <p>Details of the resource policy.</p>
        pub fn set_policy(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_policy(input);
            self
        }
    }
    /// Fluent builder constructing a request to `StartIncident`.
    ///
    /// <p>Used to start an incident from CloudWatch alarms, EventBridge events, or manually. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct StartIncident {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::start_incident_input::Builder,
    }
    impl StartIncident {
        /// Creates a new `StartIncident`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::StartIncidentOutput,
            aws_smithy_http::result::SdkError<crate::error::StartIncidentError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// <p>A token ensuring that the operation is called only once with the specified details.</p>
        pub fn client_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.client_token(input.into());
            self
        }
        /// <p>A token ensuring that the operation is called only once with the specified details.</p>
        pub fn set_client_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_client_token(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the response plan that pre-defines summary, chat channels, Amazon SNS topics, runbooks, title, and impact of the incident. </p>
        pub fn response_plan_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.response_plan_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the response plan that pre-defines summary, chat channels, Amazon SNS topics, runbooks, title, and impact of the incident. </p>
        pub fn set_response_plan_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_response_plan_arn(input);
            self
        }
        /// <p>Provide a title for the incident. Providing a title overwrites the title provided by the response plan. </p>
        pub fn title(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.title(input.into());
            self
        }
        /// <p>Provide a title for the incident. Providing a title overwrites the title provided by the response plan. </p>
        pub fn set_title(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_title(input);
            self
        }
        /// <p>Defines the impact to the customers. Providing an impact overwrites the impact provided by a response plan.</p>
        /// <p class="title"> <b>Possible impacts:</b> </p>
        /// <ul>
        /// <li> <p> <code>1</code> - Critical impact, this typically relates to full application failure that impacts many to all customers. </p> </li>
        /// <li> <p> <code>2</code> - High impact, partial application failure with impact to many customers.</p> </li>
        /// <li> <p> <code>3</code> - Medium impact, the application is providing reduced service to customers.</p> </li>
        /// <li> <p> <code>4</code> - Low impact, customer might aren't impacted by the problem yet.</p> </li>
        /// <li> <p> <code>5</code> - No impact, customers aren't currently impacted but urgent action is needed to avoid impact.</p> </li>
        /// </ul>
        pub fn impact(mut self, input: i32) -> Self {
            self.inner = self.inner.impact(input);
            self
        }
        /// <p>Defines the impact to the customers. Providing an impact overwrites the impact provided by a response plan.</p>
        /// <p class="title"> <b>Possible impacts:</b> </p>
        /// <ul>
        /// <li> <p> <code>1</code> - Critical impact, this typically relates to full application failure that impacts many to all customers. </p> </li>
        /// <li> <p> <code>2</code> - High impact, partial application failure with impact to many customers.</p> </li>
        /// <li> <p> <code>3</code> - Medium impact, the application is providing reduced service to customers.</p> </li>
        /// <li> <p> <code>4</code> - Low impact, customer might aren't impacted by the problem yet.</p> </li>
        /// <li> <p> <code>5</code> - No impact, customers aren't currently impacted but urgent action is needed to avoid impact.</p> </li>
        /// </ul>
        pub fn set_impact(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_impact(input);
            self
        }
        /// <p>Details of what created the incident record in Incident Manager.</p>
        pub fn trigger_details(mut self, input: crate::model::TriggerDetails) -> Self {
            self.inner = self.inner.trigger_details(input);
            self
        }
        /// <p>Details of what created the incident record in Incident Manager.</p>
        pub fn set_trigger_details(
            mut self,
            input: std::option::Option<crate::model::TriggerDetails>,
        ) -> Self {
            self.inner = self.inner.set_trigger_details(input);
            self
        }
        /// Appends an item to `relatedItems`.
        ///
        /// To override the contents of this collection use [`set_related_items`](Self::set_related_items).
        ///
        /// <p>Add related items to the incident for other responders to use. Related items are AWS resources, external links, or files uploaded to an Amazon S3 bucket. </p>
        pub fn related_items(mut self, input: crate::model::RelatedItem) -> Self {
            self.inner = self.inner.related_items(input);
            self
        }
        /// <p>Add related items to the incident for other responders to use. Related items are AWS resources, external links, or files uploaded to an Amazon S3 bucket. </p>
        pub fn set_related_items(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::RelatedItem>>,
        ) -> Self {
            self.inner = self.inner.set_related_items(input);
            self
        }
    }
    /// Fluent builder constructing a request to `TagResource`.
    ///
    /// <p>Adds a tag to a response plan.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct TagResource {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::tag_resource_input::Builder,
    }
    impl TagResource {
        /// Creates a new `TagResource`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::TagResourceOutput,
            aws_smithy_http::result::SdkError<crate::error::TagResourceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the response plan you're adding the tags to.</p>
        pub fn resource_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.resource_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the response plan you're adding the tags to.</p>
        pub fn set_resource_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_resource_arn(input);
            self
        }
        /// Adds a key-value pair to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>A list of tags that you are adding to the response plan.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.tags(k.into(), v.into());
            self
        }
        /// <p>A list of tags that you are adding to the response plan.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UntagResource`.
    ///
    /// <p>Removes a tag from a resource.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UntagResource {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::untag_resource_input::Builder,
    }
    impl UntagResource {
        /// Creates a new `UntagResource`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UntagResourceOutput,
            aws_smithy_http::result::SdkError<crate::error::UntagResourceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the response plan you're removing a tag from.</p>
        pub fn resource_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.resource_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the response plan you're removing a tag from.</p>
        pub fn set_resource_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_resource_arn(input);
            self
        }
        /// Appends an item to `tagKeys`.
        ///
        /// To override the contents of this collection use [`set_tag_keys`](Self::set_tag_keys).
        ///
        /// <p>The name of the tag you're removing from the response plan.</p>
        pub fn tag_keys(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.tag_keys(input.into());
            self
        }
        /// <p>The name of the tag you're removing from the response plan.</p>
        pub fn set_tag_keys(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_tag_keys(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateDeletionProtection`.
    ///
    /// <p>Update deletion protection to either allow or deny deletion of the final Region in a replication set.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateDeletionProtection {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_deletion_protection_input::Builder,
    }
    impl UpdateDeletionProtection {
        /// Creates a new `UpdateDeletionProtection`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UpdateDeletionProtectionOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateDeletionProtectionError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the replication set you're updating.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the replication set you're updating.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_arn(input);
            self
        }
        /// <p>Details if deletion protection is enabled or disabled in your account.</p>
        pub fn deletion_protected(mut self, input: bool) -> Self {
            self.inner = self.inner.deletion_protected(input);
            self
        }
        /// <p>Details if deletion protection is enabled or disabled in your account.</p>
        pub fn set_deletion_protected(mut self, input: std::option::Option<bool>) -> Self {
            self.inner = self.inner.set_deletion_protected(input);
            self
        }
        /// <p>A token ensuring that the operation is called only once with the specified details.</p>
        pub fn client_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.client_token(input.into());
            self
        }
        /// <p>A token ensuring that the operation is called only once with the specified details.</p>
        pub fn set_client_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_client_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateIncidentRecord`.
    ///
    /// <p>Update the details of an incident record. You can use this operation to update an incident record from the defined chat channel. For more information about using actions in chat channels, see <a href="https://docs.aws.amazon.com/incident-manager/latest/userguide/chat.html#chat-interact">Interacting through chat</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateIncidentRecord {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_incident_record_input::Builder,
    }
    impl UpdateIncidentRecord {
        /// Creates a new `UpdateIncidentRecord`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UpdateIncidentRecordOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateIncidentRecordError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// <p>A token that ensures that the operation is called only once with the specified details.</p>
        pub fn client_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.client_token(input.into());
            self
        }
        /// <p>A token that ensures that the operation is called only once with the specified details.</p>
        pub fn set_client_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_client_token(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the incident record you are updating.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the incident record you are updating.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_arn(input);
            self
        }
        /// <p>A brief description of the incident.</p>
        pub fn title(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.title(input.into());
            self
        }
        /// <p>A brief description of the incident.</p>
        pub fn set_title(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_title(input);
            self
        }
        /// <p>A longer description of what occurred during the incident.</p>
        pub fn summary(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.summary(input.into());
            self
        }
        /// <p>A longer description of what occurred during the incident.</p>
        pub fn set_summary(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_summary(input);
            self
        }
        /// <p>Defines the impact of the incident to customers and applications. Providing an impact overwrites the impact provided by the response plan.</p>
        /// <p class="title"> <b>Possible impacts:</b> </p>
        /// <ul>
        /// <li> <p> <code>1</code> - Critical impact, full application failure that impacts many to all customers. </p> </li>
        /// <li> <p> <code>2</code> - High impact, partial application failure with impact to many customers.</p> </li>
        /// <li> <p> <code>3</code> - Medium impact, the application is providing reduced service to customers.</p> </li>
        /// <li> <p> <code>4</code> - Low impact, customer aren't impacted by the problem yet.</p> </li>
        /// <li> <p> <code>5</code> - No impact, customers aren't currently impacted but urgent action is needed to avoid impact.</p> </li>
        /// </ul>
        pub fn impact(mut self, input: i32) -> Self {
            self.inner = self.inner.impact(input);
            self
        }
        /// <p>Defines the impact of the incident to customers and applications. Providing an impact overwrites the impact provided by the response plan.</p>
        /// <p class="title"> <b>Possible impacts:</b> </p>
        /// <ul>
        /// <li> <p> <code>1</code> - Critical impact, full application failure that impacts many to all customers. </p> </li>
        /// <li> <p> <code>2</code> - High impact, partial application failure with impact to many customers.</p> </li>
        /// <li> <p> <code>3</code> - Medium impact, the application is providing reduced service to customers.</p> </li>
        /// <li> <p> <code>4</code> - Low impact, customer aren't impacted by the problem yet.</p> </li>
        /// <li> <p> <code>5</code> - No impact, customers aren't currently impacted but urgent action is needed to avoid impact.</p> </li>
        /// </ul>
        pub fn set_impact(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_impact(input);
            self
        }
        /// <p>The status of the incident. An incident can be <code>Open</code> or <code>Resolved</code>.</p>
        pub fn status(mut self, input: crate::model::IncidentRecordStatus) -> Self {
            self.inner = self.inner.status(input);
            self
        }
        /// <p>The status of the incident. An incident can be <code>Open</code> or <code>Resolved</code>.</p>
        pub fn set_status(
            mut self,
            input: std::option::Option<crate::model::IncidentRecordStatus>,
        ) -> Self {
            self.inner = self.inner.set_status(input);
            self
        }
        /// <p>The Chatbot chat channel where responders can collaborate.</p>
        pub fn chat_channel(mut self, input: crate::model::ChatChannel) -> Self {
            self.inner = self.inner.chat_channel(input);
            self
        }
        /// <p>The Chatbot chat channel where responders can collaborate.</p>
        pub fn set_chat_channel(
            mut self,
            input: std::option::Option<crate::model::ChatChannel>,
        ) -> Self {
            self.inner = self.inner.set_chat_channel(input);
            self
        }
        /// Appends an item to `notificationTargets`.
        ///
        /// To override the contents of this collection use [`set_notification_targets`](Self::set_notification_targets).
        ///
        /// <p>The Amazon SNS targets that are notified when updates are made to an incident.</p>
        /// <p>Using multiple SNS topics creates redundancy in the event that a Region is down during the incident.</p>
        pub fn notification_targets(mut self, input: crate::model::NotificationTargetItem) -> Self {
            self.inner = self.inner.notification_targets(input);
            self
        }
        /// <p>The Amazon SNS targets that are notified when updates are made to an incident.</p>
        /// <p>Using multiple SNS topics creates redundancy in the event that a Region is down during the incident.</p>
        pub fn set_notification_targets(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::NotificationTargetItem>>,
        ) -> Self {
            self.inner = self.inner.set_notification_targets(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateRelatedItems`.
    ///
    /// <p>Add or remove related items from the related items tab of an incident record.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateRelatedItems {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_related_items_input::Builder,
    }
    impl UpdateRelatedItems {
        /// Creates a new `UpdateRelatedItems`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UpdateRelatedItemsOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateRelatedItemsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// <p>A token ensuring that the operation is called only once with the specified details.</p>
        pub fn client_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.client_token(input.into());
            self
        }
        /// <p>A token ensuring that the operation is called only once with the specified details.</p>
        pub fn set_client_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_client_token(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the incident record containing the related items you are updating.</p>
        pub fn incident_record_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.incident_record_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the incident record containing the related items you are updating.</p>
        pub fn set_incident_record_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_incident_record_arn(input);
            self
        }
        /// <p>Details about the item you are adding or deleting.</p>
        pub fn related_items_update(mut self, input: crate::model::RelatedItemsUpdate) -> Self {
            self.inner = self.inner.related_items_update(input);
            self
        }
        /// <p>Details about the item you are adding or deleting.</p>
        pub fn set_related_items_update(
            mut self,
            input: std::option::Option<crate::model::RelatedItemsUpdate>,
        ) -> Self {
            self.inner = self.inner.set_related_items_update(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateReplicationSet`.
    ///
    /// <p>Add or delete Regions from your replication set.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateReplicationSet {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_replication_set_input::Builder,
    }
    impl UpdateReplicationSet {
        /// Creates a new `UpdateReplicationSet`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UpdateReplicationSetOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateReplicationSetError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the replication set you're updating.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the replication set you're updating.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_arn(input);
            self
        }
        /// Appends an item to `actions`.
        ///
        /// To override the contents of this collection use [`set_actions`](Self::set_actions).
        ///
        /// <p>An action to add or delete a Region.</p>
        pub fn actions(mut self, input: crate::model::UpdateReplicationSetAction) -> Self {
            self.inner = self.inner.actions(input);
            self
        }
        /// <p>An action to add or delete a Region.</p>
        pub fn set_actions(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::UpdateReplicationSetAction>>,
        ) -> Self {
            self.inner = self.inner.set_actions(input);
            self
        }
        /// <p>A token ensuring that the operation is called only once with the specified details.</p>
        pub fn client_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.client_token(input.into());
            self
        }
        /// <p>A token ensuring that the operation is called only once with the specified details.</p>
        pub fn set_client_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_client_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateResponsePlan`.
    ///
    /// <p>Updates the specified response plan.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateResponsePlan {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_response_plan_input::Builder,
    }
    impl UpdateResponsePlan {
        /// Creates a new `UpdateResponsePlan`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UpdateResponsePlanOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateResponsePlanError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// <p>A token ensuring that the operation is called only once with the specified details.</p>
        pub fn client_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.client_token(input.into());
            self
        }
        /// <p>A token ensuring that the operation is called only once with the specified details.</p>
        pub fn set_client_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_client_token(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the response plan.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the response plan.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_arn(input);
            self
        }
        /// <p>The long format name of the response plan. The display name can't contain spaces.</p>
        pub fn display_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.display_name(input.into());
            self
        }
        /// <p>The long format name of the response plan. The display name can't contain spaces.</p>
        pub fn set_display_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_display_name(input);
            self
        }
        /// <p>The short format name of the incident. The title can't contain spaces.</p>
        pub fn incident_template_title(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.incident_template_title(input.into());
            self
        }
        /// <p>The short format name of the incident. The title can't contain spaces.</p>
        pub fn set_incident_template_title(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_incident_template_title(input);
            self
        }
        /// <p>Defines the impact to the customers. Providing an impact overwrites the impact provided by a response plan.</p>
        /// <p class="title"> <b>Possible impacts:</b> </p>
        /// <ul>
        /// <li> <p> <code>5</code> - Severe impact</p> </li>
        /// <li> <p> <code>4</code> - High impact</p> </li>
        /// <li> <p> <code>3</code> - Medium impact</p> </li>
        /// <li> <p> <code>2</code> - Low impact</p> </li>
        /// <li> <p> <code>1</code> - No impact</p> </li>
        /// </ul>
        pub fn incident_template_impact(mut self, input: i32) -> Self {
            self.inner = self.inner.incident_template_impact(input);
            self
        }
        /// <p>Defines the impact to the customers. Providing an impact overwrites the impact provided by a response plan.</p>
        /// <p class="title"> <b>Possible impacts:</b> </p>
        /// <ul>
        /// <li> <p> <code>5</code> - Severe impact</p> </li>
        /// <li> <p> <code>4</code> - High impact</p> </li>
        /// <li> <p> <code>3</code> - Medium impact</p> </li>
        /// <li> <p> <code>2</code> - Low impact</p> </li>
        /// <li> <p> <code>1</code> - No impact</p> </li>
        /// </ul>
        pub fn set_incident_template_impact(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_incident_template_impact(input);
            self
        }
        /// <p>A brief summary of the incident. This typically contains what has happened, what's currently happening, and next steps.</p>
        pub fn incident_template_summary(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.incident_template_summary(input.into());
            self
        }
        /// <p>A brief summary of the incident. This typically contains what has happened, what's currently happening, and next steps.</p>
        pub fn set_incident_template_summary(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_incident_template_summary(input);
            self
        }
        /// <p>The string Incident Manager uses to prevent duplicate incidents from being created by the same incident in the same account.</p>
        pub fn incident_template_dedupe_string(
            mut self,
            input: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.incident_template_dedupe_string(input.into());
            self
        }
        /// <p>The string Incident Manager uses to prevent duplicate incidents from being created by the same incident in the same account.</p>
        pub fn set_incident_template_dedupe_string(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_incident_template_dedupe_string(input);
            self
        }
        /// Appends an item to `incidentTemplateNotificationTargets`.
        ///
        /// To override the contents of this collection use [`set_incident_template_notification_targets`](Self::set_incident_template_notification_targets).
        ///
        /// <p>The Amazon SNS targets that are notified when updates are made to an incident.</p>
        pub fn incident_template_notification_targets(
            mut self,
            input: crate::model::NotificationTargetItem,
        ) -> Self {
            self.inner = self.inner.incident_template_notification_targets(input);
            self
        }
        /// <p>The Amazon SNS targets that are notified when updates are made to an incident.</p>
        pub fn set_incident_template_notification_targets(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::NotificationTargetItem>>,
        ) -> Self {
            self.inner = self.inner.set_incident_template_notification_targets(input);
            self
        }
        /// <p>The Chatbot chat channel used for collaboration during an incident.</p>
        /// <p>Use the empty structure to remove the chat channel from the response plan.</p>
        pub fn chat_channel(mut self, input: crate::model::ChatChannel) -> Self {
            self.inner = self.inner.chat_channel(input);
            self
        }
        /// <p>The Chatbot chat channel used for collaboration during an incident.</p>
        /// <p>Use the empty structure to remove the chat channel from the response plan.</p>
        pub fn set_chat_channel(
            mut self,
            input: std::option::Option<crate::model::ChatChannel>,
        ) -> Self {
            self.inner = self.inner.set_chat_channel(input);
            self
        }
        /// <p>The contacts and escalation plans that Incident Manager engages at the start of the incident.</p>
        pub fn engagements(mut self, input: std::vec::Vec<std::string::String>) -> Self {
            self.inner = self.inner.engagements(input);
            self
        }
        /// <p>The contacts and escalation plans that Incident Manager engages at the start of the incident.</p>
        pub fn set_engagements(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_engagements(input);
            self
        }
        /// Appends an item to `actions`.
        ///
        /// To override the contents of this collection use [`set_actions`](Self::set_actions).
        ///
        /// <p>The actions that this response plan takes at the beginning of an incident.</p>
        pub fn actions(mut self, input: crate::model::Action) -> Self {
            self.inner = self.inner.actions(input);
            self
        }
        /// <p>The actions that this response plan takes at the beginning of an incident.</p>
        pub fn set_actions(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Action>>,
        ) -> Self {
            self.inner = self.inner.set_actions(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateTimelineEvent`.
    ///
    /// <p>Updates a timeline event. You can update events of type <code>Custom Event</code>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateTimelineEvent {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_timeline_event_input::Builder,
    }
    impl UpdateTimelineEvent {
        /// Creates a new `UpdateTimelineEvent`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UpdateTimelineEventOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateTimelineEventError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(|err| aws_smithy_http::result::SdkError::ConstructionFailure(err.into()))?
                .make_operation(&self.handle.conf)
                .await
                .map_err(|err| {
                    aws_smithy_http::result::SdkError::ConstructionFailure(err.into())
                })?;
            self.handle.client.call(op).await
        }
        /// <p>A token ensuring that the operation is called only once with the specified details.</p>
        pub fn client_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.client_token(input.into());
            self
        }
        /// <p>A token ensuring that the operation is called only once with the specified details.</p>
        pub fn set_client_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_client_token(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the incident that includes the timeline event.</p>
        pub fn incident_record_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.incident_record_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the incident that includes the timeline event.</p>
        pub fn set_incident_record_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_incident_record_arn(input);
            self
        }
        /// <p>The ID of the event you are updating. You can find this by using <code>ListTimelineEvents</code>.</p>
        pub fn event_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.event_id(input.into());
            self
        }
        /// <p>The ID of the event you are updating. You can find this by using <code>ListTimelineEvents</code>.</p>
        pub fn set_event_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_event_id(input);
            self
        }
        /// <p>The time that the event occurred.</p>
        pub fn event_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.inner = self.inner.event_time(input);
            self
        }
        /// <p>The time that the event occurred.</p>
        pub fn set_event_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.inner = self.inner.set_event_time(input);
            self
        }
        /// <p>The type of the event. You can update events of type <code>Custom Event</code>.</p>
        pub fn event_type(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.event_type(input.into());
            self
        }
        /// <p>The type of the event. You can update events of type <code>Custom Event</code>.</p>
        pub fn set_event_type(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_event_type(input);
            self
        }
        /// <p>A short description of the event.</p>
        pub fn event_data(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.event_data(input.into());
            self
        }
        /// <p>A short description of the event.</p>
        pub fn set_event_data(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_event_data(input);
            self
        }
    }
}

impl Client {
    /// Creates a client with the given service config and connector override.
    pub fn from_conf_conn<C, E>(conf: crate::Config, conn: C) -> Self
    where
        C: aws_smithy_client::bounds::SmithyConnector<Error = E> + Send + 'static,
        E: Into<aws_smithy_http::result::ConnectorError>,
    {
        let retry_config = conf.retry_config.as_ref().cloned().unwrap_or_default();
        let timeout_config = conf.timeout_config.as_ref().cloned().unwrap_or_default();
        let sleep_impl = conf.sleep_impl.clone();
        let mut builder = aws_smithy_client::Builder::new()
            .connector(aws_smithy_client::erase::DynConnector::new(conn))
            .middleware(aws_smithy_client::erase::DynMiddleware::new(
                crate::middleware::DefaultMiddleware::new(),
            ));
        builder.set_retry_config(retry_config.into());
        builder.set_timeout_config(timeout_config);
        if let Some(sleep_impl) = sleep_impl {
            builder.set_sleep_impl(Some(sleep_impl));
        }
        let client = builder.build();
        Self {
            handle: std::sync::Arc::new(Handle { client, conf }),
        }
    }

    /// Creates a new client from a shared config.
    #[cfg(any(feature = "rustls", feature = "native-tls"))]
    pub fn new(sdk_config: &aws_types::sdk_config::SdkConfig) -> Self {
        Self::from_conf(sdk_config.into())
    }

    /// Creates a new client from the service [`Config`](crate::Config).
    #[cfg(any(feature = "rustls", feature = "native-tls"))]
    pub fn from_conf(conf: crate::Config) -> Self {
        let retry_config = conf.retry_config.as_ref().cloned().unwrap_or_default();
        let timeout_config = conf.timeout_config.as_ref().cloned().unwrap_or_default();
        let sleep_impl = conf.sleep_impl.clone();
        let mut builder = aws_smithy_client::Builder::dyn_https().middleware(
            aws_smithy_client::erase::DynMiddleware::new(
                crate::middleware::DefaultMiddleware::new(),
            ),
        );
        builder.set_retry_config(retry_config.into());
        builder.set_timeout_config(timeout_config);
        // the builder maintains a try-state. To avoid suppressing the warning when sleep is unset,
        // only set it if we actually have a sleep impl.
        if let Some(sleep_impl) = sleep_impl {
            builder.set_sleep_impl(Some(sleep_impl));
        }
        let client = builder.build();

        Self {
            handle: std::sync::Arc::new(Handle { client, conf }),
        }
    }
}
