aws-sdk-mediatailor 0.24.0

AWS SDK for AWS MediaTailor
Documentation
// 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 MediaTailor
///
/// Client for invoking operations on AWS MediaTailor. Each operation on AWS MediaTailor 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_mediatailor::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::retry::RetryConfig;
/// # async fn docs() {
/// let shared_config = aws_config::load_from_env().await;
/// let config = aws_sdk_mediatailor::config::Builder::from(&shared_config)
///   .retry_config(RetryConfig::disabled())
///   .build();
/// let client = aws_sdk_mediatailor::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 [`ConfigureLogsForPlaybackConfiguration`](crate::client::fluent_builders::ConfigureLogsForPlaybackConfiguration) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`percent_enabled(i32)`](crate::client::fluent_builders::ConfigureLogsForPlaybackConfiguration::percent_enabled) / [`set_percent_enabled(i32)`](crate::client::fluent_builders::ConfigureLogsForPlaybackConfiguration::set_percent_enabled): <p>The percentage of session logs that MediaTailor sends to your Cloudwatch Logs account. For example, if your playback configuration has 1000 sessions and percentEnabled is set to <code>60</code>, MediaTailor sends logs for 600 of the sessions to CloudWatch Logs. MediaTailor decides at random which of the playback configuration sessions to send logs for. If you want to view logs for a specific session, you can use the <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/debug-log-mode.html">debug log mode</a>.</p>  <p>Valid values: <code>0</code> - <code>100</code> </p>
    ///   - [`playback_configuration_name(impl Into<String>)`](crate::client::fluent_builders::ConfigureLogsForPlaybackConfiguration::playback_configuration_name) / [`set_playback_configuration_name(Option<String>)`](crate::client::fluent_builders::ConfigureLogsForPlaybackConfiguration::set_playback_configuration_name): <p>The name of the playback configuration.</p>
    /// - On success, responds with [`ConfigureLogsForPlaybackConfigurationOutput`](crate::output::ConfigureLogsForPlaybackConfigurationOutput) with field(s):
    ///   - [`percent_enabled(i32)`](crate::output::ConfigureLogsForPlaybackConfigurationOutput::percent_enabled): <p>The percentage of session logs that MediaTailor sends to your Cloudwatch Logs account.</p>
    ///   - [`playback_configuration_name(Option<String>)`](crate::output::ConfigureLogsForPlaybackConfigurationOutput::playback_configuration_name): <p>The name of the playback configuration.</p>
    /// - On failure, responds with [`SdkError<ConfigureLogsForPlaybackConfigurationError>`](crate::error::ConfigureLogsForPlaybackConfigurationError)
    pub fn configure_logs_for_playback_configuration(
        &self,
    ) -> fluent_builders::ConfigureLogsForPlaybackConfiguration {
        fluent_builders::ConfigureLogsForPlaybackConfiguration::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateChannel`](crate::client::fluent_builders::CreateChannel) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`channel_name(impl Into<String>)`](crate::client::fluent_builders::CreateChannel::channel_name) / [`set_channel_name(Option<String>)`](crate::client::fluent_builders::CreateChannel::set_channel_name): <p>The name of the channel.</p>
    ///   - [`filler_slate(SlateSource)`](crate::client::fluent_builders::CreateChannel::filler_slate) / [`set_filler_slate(Option<SlateSource>)`](crate::client::fluent_builders::CreateChannel::set_filler_slate): <p>The slate used to fill gaps between programs in the schedule. You must configure filler slate if your channel uses the <code>LINEAR</code> <code>PlaybackMode</code>. MediaTailor doesn't support filler slate for channels using the <code>LOOP</code> <code>PlaybackMode</code>.</p>
    ///   - [`outputs(Vec<RequestOutputItem>)`](crate::client::fluent_builders::CreateChannel::outputs) / [`set_outputs(Option<Vec<RequestOutputItem>>)`](crate::client::fluent_builders::CreateChannel::set_outputs): <p>The channel's output properties.</p>
    ///   - [`playback_mode(PlaybackMode)`](crate::client::fluent_builders::CreateChannel::playback_mode) / [`set_playback_mode(Option<PlaybackMode>)`](crate::client::fluent_builders::CreateChannel::set_playback_mode): <p>The type of playback mode to use for this channel.</p>  <p> <code>LINEAR</code> - The programs in the schedule play once back-to-back in the schedule.</p>  <p> <code>LOOP</code> - The programs in the schedule play back-to-back in an endless loop. When the last program in the schedule stops playing, playback loops back to the first program in the schedule.</p>
    ///   - [`tags(HashMap<String, String>)`](crate::client::fluent_builders::CreateChannel::tags) / [`set_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::CreateChannel::set_tags): <p>The tags to assign to the channel. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</p>
    ///   - [`tier(Tier)`](crate::client::fluent_builders::CreateChannel::tier) / [`set_tier(Option<Tier>)`](crate::client::fluent_builders::CreateChannel::set_tier): <p>The tier of the channel.</p>
    /// - On success, responds with [`CreateChannelOutput`](crate::output::CreateChannelOutput) with field(s):
    ///   - [`arn(Option<String>)`](crate::output::CreateChannelOutput::arn): <p>The Amazon Resource Name (ARN) to assign to the channel.</p>
    ///   - [`channel_name(Option<String>)`](crate::output::CreateChannelOutput::channel_name): <p>The name to assign to the channel.</p>
    ///   - [`channel_state(Option<ChannelState>)`](crate::output::CreateChannelOutput::channel_state): <p>Indicates whether the channel is in a running state or not.</p>
    ///   - [`creation_time(Option<DateTime>)`](crate::output::CreateChannelOutput::creation_time): <p>The timestamp of when the channel was created.</p>
    ///   - [`filler_slate(Option<SlateSource>)`](crate::output::CreateChannelOutput::filler_slate): <p>Contains information about the slate used to fill gaps between programs in the schedule.</p>
    ///   - [`last_modified_time(Option<DateTime>)`](crate::output::CreateChannelOutput::last_modified_time): <p>The timestamp of when the channel was last modified.</p>
    ///   - [`outputs(Option<Vec<ResponseOutputItem>>)`](crate::output::CreateChannelOutput::outputs): <p>The output properties to assign to the channel.</p>
    ///   - [`playback_mode(Option<String>)`](crate::output::CreateChannelOutput::playback_mode): <p>The playback mode to assign to the channel.</p>
    ///   - [`tags(Option<HashMap<String, String>>)`](crate::output::CreateChannelOutput::tags): <p>The tags to assign to the channel. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</p>
    ///   - [`tier(Option<String>)`](crate::output::CreateChannelOutput::tier): <p>The tier of the channel.</p>
    /// - On failure, responds with [`SdkError<CreateChannelError>`](crate::error::CreateChannelError)
    pub fn create_channel(&self) -> fluent_builders::CreateChannel {
        fluent_builders::CreateChannel::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateLiveSource`](crate::client::fluent_builders::CreateLiveSource) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`http_package_configurations(Vec<HttpPackageConfiguration>)`](crate::client::fluent_builders::CreateLiveSource::http_package_configurations) / [`set_http_package_configurations(Option<Vec<HttpPackageConfiguration>>)`](crate::client::fluent_builders::CreateLiveSource::set_http_package_configurations): <p>A list of HTTP package configuration parameters for this live source.</p>
    ///   - [`live_source_name(impl Into<String>)`](crate::client::fluent_builders::CreateLiveSource::live_source_name) / [`set_live_source_name(Option<String>)`](crate::client::fluent_builders::CreateLiveSource::set_live_source_name): <p>The name of the live source.</p>
    ///   - [`source_location_name(impl Into<String>)`](crate::client::fluent_builders::CreateLiveSource::source_location_name) / [`set_source_location_name(Option<String>)`](crate::client::fluent_builders::CreateLiveSource::set_source_location_name): <p>The name of the source location.</p>
    ///   - [`tags(HashMap<String, String>)`](crate::client::fluent_builders::CreateLiveSource::tags) / [`set_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::CreateLiveSource::set_tags): <p>The tags to assign to the live source. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</p>
    /// - On success, responds with [`CreateLiveSourceOutput`](crate::output::CreateLiveSourceOutput) with field(s):
    ///   - [`arn(Option<String>)`](crate::output::CreateLiveSourceOutput::arn): <p>The ARN to assign to the live source.</p>
    ///   - [`creation_time(Option<DateTime>)`](crate::output::CreateLiveSourceOutput::creation_time): <p>The time the live source was created.</p>
    ///   - [`http_package_configurations(Option<Vec<HttpPackageConfiguration>>)`](crate::output::CreateLiveSourceOutput::http_package_configurations): <p>A list of HTTP package configuration parameters for this live source.</p>
    ///   - [`last_modified_time(Option<DateTime>)`](crate::output::CreateLiveSourceOutput::last_modified_time): <p>The time the live source was last modified.</p>
    ///   - [`live_source_name(Option<String>)`](crate::output::CreateLiveSourceOutput::live_source_name): <p>The name to assign to the live source.</p>
    ///   - [`source_location_name(Option<String>)`](crate::output::CreateLiveSourceOutput::source_location_name): <p>The name to assign to the source location of the live source.</p>
    ///   - [`tags(Option<HashMap<String, String>>)`](crate::output::CreateLiveSourceOutput::tags): <p>The tags to assign to the live source. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</p>
    /// - On failure, responds with [`SdkError<CreateLiveSourceError>`](crate::error::CreateLiveSourceError)
    pub fn create_live_source(&self) -> fluent_builders::CreateLiveSource {
        fluent_builders::CreateLiveSource::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreatePrefetchSchedule`](crate::client::fluent_builders::CreatePrefetchSchedule) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`consumption(PrefetchConsumption)`](crate::client::fluent_builders::CreatePrefetchSchedule::consumption) / [`set_consumption(Option<PrefetchConsumption>)`](crate::client::fluent_builders::CreatePrefetchSchedule::set_consumption): <p>The configuration settings for MediaTailor's <i>consumption</i> of the prefetched ads from the ad decision server. Each consumption configuration contains an end time and an optional start time that define the <i>consumption window</i>. Prefetch schedules automatically expire no earlier than seven days after the end time.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreatePrefetchSchedule::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreatePrefetchSchedule::set_name): <p>The name to assign to the schedule request.</p>
    ///   - [`playback_configuration_name(impl Into<String>)`](crate::client::fluent_builders::CreatePrefetchSchedule::playback_configuration_name) / [`set_playback_configuration_name(Option<String>)`](crate::client::fluent_builders::CreatePrefetchSchedule::set_playback_configuration_name): <p>The name to assign to the playback configuration.</p>
    ///   - [`retrieval(PrefetchRetrieval)`](crate::client::fluent_builders::CreatePrefetchSchedule::retrieval) / [`set_retrieval(Option<PrefetchRetrieval>)`](crate::client::fluent_builders::CreatePrefetchSchedule::set_retrieval): <p>The configuration settings for retrieval of prefetched ads from the ad decision server. Only one set of prefetched ads will be retrieved and subsequently consumed for each ad break.</p>
    ///   - [`stream_id(impl Into<String>)`](crate::client::fluent_builders::CreatePrefetchSchedule::stream_id) / [`set_stream_id(Option<String>)`](crate::client::fluent_builders::CreatePrefetchSchedule::set_stream_id): <p>An optional stream identifier that MediaTailor uses to prefetch ads for multiple streams that use the same playback configuration. If <code>StreamId</code> is specified, MediaTailor returns all of the prefetch schedules with an exact match on <code>StreamId</code>. If not specified, MediaTailor returns all of the prefetch schedules for the playback configuration, regardless of <code>StreamId</code>.</p>
    /// - On success, responds with [`CreatePrefetchScheduleOutput`](crate::output::CreatePrefetchScheduleOutput) with field(s):
    ///   - [`arn(Option<String>)`](crate::output::CreatePrefetchScheduleOutput::arn): <p>The ARN to assign to the prefetch schedule.</p>
    ///   - [`consumption(Option<PrefetchConsumption>)`](crate::output::CreatePrefetchScheduleOutput::consumption): <p>The configuration settings for MediaTailor's <i>consumption</i> of the prefetched ads from the ad decision server. Each consumption configuration contains an end time and an optional start time that define the <i>consumption window</i>. Prefetch schedules automatically expire no earlier than seven days after the end time.</p>
    ///   - [`name(Option<String>)`](crate::output::CreatePrefetchScheduleOutput::name): <p>The name to assign to the prefetch schedule.</p>
    ///   - [`playback_configuration_name(Option<String>)`](crate::output::CreatePrefetchScheduleOutput::playback_configuration_name): <p>The name to assign to the playback configuration.</p>
    ///   - [`retrieval(Option<PrefetchRetrieval>)`](crate::output::CreatePrefetchScheduleOutput::retrieval): <p>The configuration settings for retrieval of prefetched ads from the ad decision server. Only one set of prefetched ads will be retrieved and subsequently consumed for each ad break.</p>
    ///   - [`stream_id(Option<String>)`](crate::output::CreatePrefetchScheduleOutput::stream_id): <p>An optional stream identifier that MediaTailor uses to prefetch ads for multiple streams that use the same playback configuration. If <code>StreamId</code> is specified, MediaTailor returns all of the prefetch schedules with an exact match on <code>StreamId</code>. If not specified, MediaTailor returns all of the prefetch schedules for the playback configuration, regardless of <code>StreamId</code>.</p>
    /// - On failure, responds with [`SdkError<CreatePrefetchScheduleError>`](crate::error::CreatePrefetchScheduleError)
    pub fn create_prefetch_schedule(&self) -> fluent_builders::CreatePrefetchSchedule {
        fluent_builders::CreatePrefetchSchedule::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateProgram`](crate::client::fluent_builders::CreateProgram) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`ad_breaks(Vec<AdBreak>)`](crate::client::fluent_builders::CreateProgram::ad_breaks) / [`set_ad_breaks(Option<Vec<AdBreak>>)`](crate::client::fluent_builders::CreateProgram::set_ad_breaks): <p>The ad break configuration settings.</p>
    ///   - [`channel_name(impl Into<String>)`](crate::client::fluent_builders::CreateProgram::channel_name) / [`set_channel_name(Option<String>)`](crate::client::fluent_builders::CreateProgram::set_channel_name): <p>The name of the channel for this Program.</p>
    ///   - [`live_source_name(impl Into<String>)`](crate::client::fluent_builders::CreateProgram::live_source_name) / [`set_live_source_name(Option<String>)`](crate::client::fluent_builders::CreateProgram::set_live_source_name): <p>The name of the LiveSource for this Program.</p>
    ///   - [`program_name(impl Into<String>)`](crate::client::fluent_builders::CreateProgram::program_name) / [`set_program_name(Option<String>)`](crate::client::fluent_builders::CreateProgram::set_program_name): <p>The name of the Program.</p>
    ///   - [`schedule_configuration(ScheduleConfiguration)`](crate::client::fluent_builders::CreateProgram::schedule_configuration) / [`set_schedule_configuration(Option<ScheduleConfiguration>)`](crate::client::fluent_builders::CreateProgram::set_schedule_configuration): <p>The schedule configuration settings.</p>
    ///   - [`source_location_name(impl Into<String>)`](crate::client::fluent_builders::CreateProgram::source_location_name) / [`set_source_location_name(Option<String>)`](crate::client::fluent_builders::CreateProgram::set_source_location_name): <p>The name of the source location.</p>
    ///   - [`vod_source_name(impl Into<String>)`](crate::client::fluent_builders::CreateProgram::vod_source_name) / [`set_vod_source_name(Option<String>)`](crate::client::fluent_builders::CreateProgram::set_vod_source_name): <p>The name that's used to refer to a VOD source.</p>
    /// - On success, responds with [`CreateProgramOutput`](crate::output::CreateProgramOutput) with field(s):
    ///   - [`ad_breaks(Option<Vec<AdBreak>>)`](crate::output::CreateProgramOutput::ad_breaks): <p>The ad break configuration settings.</p>
    ///   - [`arn(Option<String>)`](crate::output::CreateProgramOutput::arn): <p>The ARN to assign to the program.</p>
    ///   - [`channel_name(Option<String>)`](crate::output::CreateProgramOutput::channel_name): <p>The name to assign to the channel for this program.</p>
    ///   - [`creation_time(Option<DateTime>)`](crate::output::CreateProgramOutput::creation_time): <p>The time the program was created.</p>
    ///   - [`live_source_name(Option<String>)`](crate::output::CreateProgramOutput::live_source_name): <p>The name of the LiveSource for this Program.</p>
    ///   - [`program_name(Option<String>)`](crate::output::CreateProgramOutput::program_name): <p>The name to assign to this program.</p>
    ///   - [`scheduled_start_time(Option<DateTime>)`](crate::output::CreateProgramOutput::scheduled_start_time): <p>The scheduled start time for this Program.</p>
    ///   - [`source_location_name(Option<String>)`](crate::output::CreateProgramOutput::source_location_name): <p>The name to assign to the source location for this program.</p>
    ///   - [`vod_source_name(Option<String>)`](crate::output::CreateProgramOutput::vod_source_name): <p>The name that's used to refer to a VOD source.</p>
    /// - On failure, responds with [`SdkError<CreateProgramError>`](crate::error::CreateProgramError)
    pub fn create_program(&self) -> fluent_builders::CreateProgram {
        fluent_builders::CreateProgram::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateSourceLocation`](crate::client::fluent_builders::CreateSourceLocation) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`access_configuration(AccessConfiguration)`](crate::client::fluent_builders::CreateSourceLocation::access_configuration) / [`set_access_configuration(Option<AccessConfiguration>)`](crate::client::fluent_builders::CreateSourceLocation::set_access_configuration): <p>Access configuration parameters. Configures the type of authentication used to access content from your source location.</p>
    ///   - [`default_segment_delivery_configuration(DefaultSegmentDeliveryConfiguration)`](crate::client::fluent_builders::CreateSourceLocation::default_segment_delivery_configuration) / [`set_default_segment_delivery_configuration(Option<DefaultSegmentDeliveryConfiguration>)`](crate::client::fluent_builders::CreateSourceLocation::set_default_segment_delivery_configuration): <p>The optional configuration for the server that serves segments.</p>
    ///   - [`http_configuration(HttpConfiguration)`](crate::client::fluent_builders::CreateSourceLocation::http_configuration) / [`set_http_configuration(Option<HttpConfiguration>)`](crate::client::fluent_builders::CreateSourceLocation::set_http_configuration): <p>The source's HTTP package configurations.</p>
    ///   - [`segment_delivery_configurations(Vec<SegmentDeliveryConfiguration>)`](crate::client::fluent_builders::CreateSourceLocation::segment_delivery_configurations) / [`set_segment_delivery_configurations(Option<Vec<SegmentDeliveryConfiguration>>)`](crate::client::fluent_builders::CreateSourceLocation::set_segment_delivery_configurations): <p>A list of the segment delivery configurations associated with this resource.</p>
    ///   - [`source_location_name(impl Into<String>)`](crate::client::fluent_builders::CreateSourceLocation::source_location_name) / [`set_source_location_name(Option<String>)`](crate::client::fluent_builders::CreateSourceLocation::set_source_location_name): <p>The name associated with the source location.</p>
    ///   - [`tags(HashMap<String, String>)`](crate::client::fluent_builders::CreateSourceLocation::tags) / [`set_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::CreateSourceLocation::set_tags): <p>The tags to assign to the source location. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</p>
    /// - On success, responds with [`CreateSourceLocationOutput`](crate::output::CreateSourceLocationOutput) with field(s):
    ///   - [`access_configuration(Option<AccessConfiguration>)`](crate::output::CreateSourceLocationOutput::access_configuration): <p>Access configuration parameters. Configures the type of authentication used to access content from your source location.</p>
    ///   - [`arn(Option<String>)`](crate::output::CreateSourceLocationOutput::arn): <p>The ARN to assign to the source location.</p>
    ///   - [`creation_time(Option<DateTime>)`](crate::output::CreateSourceLocationOutput::creation_time): <p>The time the source location was created.</p>
    ///   - [`default_segment_delivery_configuration(Option<DefaultSegmentDeliveryConfiguration>)`](crate::output::CreateSourceLocationOutput::default_segment_delivery_configuration): <p>The optional configuration for the server that serves segments.</p>
    ///   - [`http_configuration(Option<HttpConfiguration>)`](crate::output::CreateSourceLocationOutput::http_configuration): <p>The source's HTTP package configurations.</p>
    ///   - [`last_modified_time(Option<DateTime>)`](crate::output::CreateSourceLocationOutput::last_modified_time): <p>The time the source location was last modified.</p>
    ///   - [`segment_delivery_configurations(Option<Vec<SegmentDeliveryConfiguration>>)`](crate::output::CreateSourceLocationOutput::segment_delivery_configurations): <p>The segment delivery configurations for the source location. For information about MediaTailor configurations, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/configurations.html">Working with configurations in AWS Elemental MediaTailor</a>.</p>
    ///   - [`source_location_name(Option<String>)`](crate::output::CreateSourceLocationOutput::source_location_name): <p>The name to assign to the source location.</p>
    ///   - [`tags(Option<HashMap<String, String>>)`](crate::output::CreateSourceLocationOutput::tags): <p>The tags to assign to the source location. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</p>
    /// - On failure, responds with [`SdkError<CreateSourceLocationError>`](crate::error::CreateSourceLocationError)
    pub fn create_source_location(&self) -> fluent_builders::CreateSourceLocation {
        fluent_builders::CreateSourceLocation::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateVodSource`](crate::client::fluent_builders::CreateVodSource) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`http_package_configurations(Vec<HttpPackageConfiguration>)`](crate::client::fluent_builders::CreateVodSource::http_package_configurations) / [`set_http_package_configurations(Option<Vec<HttpPackageConfiguration>>)`](crate::client::fluent_builders::CreateVodSource::set_http_package_configurations): <p>A list of HTTP package configuration parameters for this VOD source.</p>
    ///   - [`source_location_name(impl Into<String>)`](crate::client::fluent_builders::CreateVodSource::source_location_name) / [`set_source_location_name(Option<String>)`](crate::client::fluent_builders::CreateVodSource::set_source_location_name): <p>The name of the source location for this VOD source.</p>
    ///   - [`tags(HashMap<String, String>)`](crate::client::fluent_builders::CreateVodSource::tags) / [`set_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::CreateVodSource::set_tags): <p>The tags to assign to the VOD source. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</p>
    ///   - [`vod_source_name(impl Into<String>)`](crate::client::fluent_builders::CreateVodSource::vod_source_name) / [`set_vod_source_name(Option<String>)`](crate::client::fluent_builders::CreateVodSource::set_vod_source_name): <p>The name associated with the VOD source.&gt;</p>
    /// - On success, responds with [`CreateVodSourceOutput`](crate::output::CreateVodSourceOutput) with field(s):
    ///   - [`arn(Option<String>)`](crate::output::CreateVodSourceOutput::arn): <p>The ARN to assign to this VOD source.</p>
    ///   - [`creation_time(Option<DateTime>)`](crate::output::CreateVodSourceOutput::creation_time): <p>The time the VOD source was created.</p>
    ///   - [`http_package_configurations(Option<Vec<HttpPackageConfiguration>>)`](crate::output::CreateVodSourceOutput::http_package_configurations): <p>A list of HTTP package configuration parameters for this VOD source.</p>
    ///   - [`last_modified_time(Option<DateTime>)`](crate::output::CreateVodSourceOutput::last_modified_time): <p>The time the VOD source was last modified.</p>
    ///   - [`source_location_name(Option<String>)`](crate::output::CreateVodSourceOutput::source_location_name): <p>The name to assign to the source location for this VOD source.</p>
    ///   - [`tags(Option<HashMap<String, String>>)`](crate::output::CreateVodSourceOutput::tags): <p>The tags to assign to the VOD source. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</p>
    ///   - [`vod_source_name(Option<String>)`](crate::output::CreateVodSourceOutput::vod_source_name): <p>The name to assign to the VOD source.</p>
    /// - On failure, responds with [`SdkError<CreateVodSourceError>`](crate::error::CreateVodSourceError)
    pub fn create_vod_source(&self) -> fluent_builders::CreateVodSource {
        fluent_builders::CreateVodSource::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteChannel`](crate::client::fluent_builders::DeleteChannel) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`channel_name(impl Into<String>)`](crate::client::fluent_builders::DeleteChannel::channel_name) / [`set_channel_name(Option<String>)`](crate::client::fluent_builders::DeleteChannel::set_channel_name): <p>The name of the channel.</p>
    /// - On success, responds with [`DeleteChannelOutput`](crate::output::DeleteChannelOutput)

    /// - On failure, responds with [`SdkError<DeleteChannelError>`](crate::error::DeleteChannelError)
    pub fn delete_channel(&self) -> fluent_builders::DeleteChannel {
        fluent_builders::DeleteChannel::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteChannelPolicy`](crate::client::fluent_builders::DeleteChannelPolicy) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`channel_name(impl Into<String>)`](crate::client::fluent_builders::DeleteChannelPolicy::channel_name) / [`set_channel_name(Option<String>)`](crate::client::fluent_builders::DeleteChannelPolicy::set_channel_name): <p>The name of the channel associated with this channel policy.</p>
    /// - On success, responds with [`DeleteChannelPolicyOutput`](crate::output::DeleteChannelPolicyOutput)

    /// - On failure, responds with [`SdkError<DeleteChannelPolicyError>`](crate::error::DeleteChannelPolicyError)
    pub fn delete_channel_policy(&self) -> fluent_builders::DeleteChannelPolicy {
        fluent_builders::DeleteChannelPolicy::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteLiveSource`](crate::client::fluent_builders::DeleteLiveSource) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`live_source_name(impl Into<String>)`](crate::client::fluent_builders::DeleteLiveSource::live_source_name) / [`set_live_source_name(Option<String>)`](crate::client::fluent_builders::DeleteLiveSource::set_live_source_name): <p>The name of the live source.</p>
    ///   - [`source_location_name(impl Into<String>)`](crate::client::fluent_builders::DeleteLiveSource::source_location_name) / [`set_source_location_name(Option<String>)`](crate::client::fluent_builders::DeleteLiveSource::set_source_location_name): <p>The name of the source location associated with this Live Source.</p>
    /// - On success, responds with [`DeleteLiveSourceOutput`](crate::output::DeleteLiveSourceOutput)

    /// - On failure, responds with [`SdkError<DeleteLiveSourceError>`](crate::error::DeleteLiveSourceError)
    pub fn delete_live_source(&self) -> fluent_builders::DeleteLiveSource {
        fluent_builders::DeleteLiveSource::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeletePlaybackConfiguration`](crate::client::fluent_builders::DeletePlaybackConfiguration) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::DeletePlaybackConfiguration::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::DeletePlaybackConfiguration::set_name): <p>The name of the playback configuration.</p>
    /// - On success, responds with [`DeletePlaybackConfigurationOutput`](crate::output::DeletePlaybackConfigurationOutput)

    /// - On failure, responds with [`SdkError<DeletePlaybackConfigurationError>`](crate::error::DeletePlaybackConfigurationError)
    pub fn delete_playback_configuration(&self) -> fluent_builders::DeletePlaybackConfiguration {
        fluent_builders::DeletePlaybackConfiguration::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeletePrefetchSchedule`](crate::client::fluent_builders::DeletePrefetchSchedule) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::DeletePrefetchSchedule::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::DeletePrefetchSchedule::set_name): <p>The name of the prefetch schedule. If the action is successful, the service sends back an HTTP 204 response with an empty HTTP body.</p>
    ///   - [`playback_configuration_name(impl Into<String>)`](crate::client::fluent_builders::DeletePrefetchSchedule::playback_configuration_name) / [`set_playback_configuration_name(Option<String>)`](crate::client::fluent_builders::DeletePrefetchSchedule::set_playback_configuration_name): <p>The name of the playback configuration for this prefetch schedule.</p>
    /// - On success, responds with [`DeletePrefetchScheduleOutput`](crate::output::DeletePrefetchScheduleOutput)

    /// - On failure, responds with [`SdkError<DeletePrefetchScheduleError>`](crate::error::DeletePrefetchScheduleError)
    pub fn delete_prefetch_schedule(&self) -> fluent_builders::DeletePrefetchSchedule {
        fluent_builders::DeletePrefetchSchedule::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteProgram`](crate::client::fluent_builders::DeleteProgram) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`channel_name(impl Into<String>)`](crate::client::fluent_builders::DeleteProgram::channel_name) / [`set_channel_name(Option<String>)`](crate::client::fluent_builders::DeleteProgram::set_channel_name): <p>The name of the channel.</p>
    ///   - [`program_name(impl Into<String>)`](crate::client::fluent_builders::DeleteProgram::program_name) / [`set_program_name(Option<String>)`](crate::client::fluent_builders::DeleteProgram::set_program_name): <p>The name of the program.</p>
    /// - On success, responds with [`DeleteProgramOutput`](crate::output::DeleteProgramOutput)

    /// - On failure, responds with [`SdkError<DeleteProgramError>`](crate::error::DeleteProgramError)
    pub fn delete_program(&self) -> fluent_builders::DeleteProgram {
        fluent_builders::DeleteProgram::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteSourceLocation`](crate::client::fluent_builders::DeleteSourceLocation) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`source_location_name(impl Into<String>)`](crate::client::fluent_builders::DeleteSourceLocation::source_location_name) / [`set_source_location_name(Option<String>)`](crate::client::fluent_builders::DeleteSourceLocation::set_source_location_name): <p>The name of the source location.</p>
    /// - On success, responds with [`DeleteSourceLocationOutput`](crate::output::DeleteSourceLocationOutput)

    /// - On failure, responds with [`SdkError<DeleteSourceLocationError>`](crate::error::DeleteSourceLocationError)
    pub fn delete_source_location(&self) -> fluent_builders::DeleteSourceLocation {
        fluent_builders::DeleteSourceLocation::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteVodSource`](crate::client::fluent_builders::DeleteVodSource) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`source_location_name(impl Into<String>)`](crate::client::fluent_builders::DeleteVodSource::source_location_name) / [`set_source_location_name(Option<String>)`](crate::client::fluent_builders::DeleteVodSource::set_source_location_name): <p>The name of the source location associated with this VOD Source.</p>
    ///   - [`vod_source_name(impl Into<String>)`](crate::client::fluent_builders::DeleteVodSource::vod_source_name) / [`set_vod_source_name(Option<String>)`](crate::client::fluent_builders::DeleteVodSource::set_vod_source_name): <p>The name of the VOD source.</p>
    /// - On success, responds with [`DeleteVodSourceOutput`](crate::output::DeleteVodSourceOutput)

    /// - On failure, responds with [`SdkError<DeleteVodSourceError>`](crate::error::DeleteVodSourceError)
    pub fn delete_vod_source(&self) -> fluent_builders::DeleteVodSource {
        fluent_builders::DeleteVodSource::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeChannel`](crate::client::fluent_builders::DescribeChannel) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`channel_name(impl Into<String>)`](crate::client::fluent_builders::DescribeChannel::channel_name) / [`set_channel_name(Option<String>)`](crate::client::fluent_builders::DescribeChannel::set_channel_name): <p>The name of the channel.</p>
    /// - On success, responds with [`DescribeChannelOutput`](crate::output::DescribeChannelOutput) with field(s):
    ///   - [`arn(Option<String>)`](crate::output::DescribeChannelOutput::arn): <p>The ARN of the channel.</p>
    ///   - [`channel_name(Option<String>)`](crate::output::DescribeChannelOutput::channel_name): <p>The name of the channel.</p>
    ///   - [`channel_state(Option<ChannelState>)`](crate::output::DescribeChannelOutput::channel_state): <p>Indicates whether the channel is in a running state or not.</p>
    ///   - [`creation_time(Option<DateTime>)`](crate::output::DescribeChannelOutput::creation_time): <p>The timestamp of when the channel was created.</p>
    ///   - [`filler_slate(Option<SlateSource>)`](crate::output::DescribeChannelOutput::filler_slate): <p>Contains information about the slate used to fill gaps between programs in the schedule.</p>
    ///   - [`last_modified_time(Option<DateTime>)`](crate::output::DescribeChannelOutput::last_modified_time): <p>The timestamp of when the channel was last modified.</p>
    ///   - [`outputs(Option<Vec<ResponseOutputItem>>)`](crate::output::DescribeChannelOutput::outputs): <p>The channel's output properties.</p>
    ///   - [`playback_mode(Option<String>)`](crate::output::DescribeChannelOutput::playback_mode): <p>The channel's playback mode.</p>
    ///   - [`tags(Option<HashMap<String, String>>)`](crate::output::DescribeChannelOutput::tags): <p>The tags assigned to the channel. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</p>
    ///   - [`tier(Option<String>)`](crate::output::DescribeChannelOutput::tier): <p>The channel's tier.</p>
    /// - On failure, responds with [`SdkError<DescribeChannelError>`](crate::error::DescribeChannelError)
    pub fn describe_channel(&self) -> fluent_builders::DescribeChannel {
        fluent_builders::DescribeChannel::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeLiveSource`](crate::client::fluent_builders::DescribeLiveSource) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`live_source_name(impl Into<String>)`](crate::client::fluent_builders::DescribeLiveSource::live_source_name) / [`set_live_source_name(Option<String>)`](crate::client::fluent_builders::DescribeLiveSource::set_live_source_name): <p>The name of the live source.</p>
    ///   - [`source_location_name(impl Into<String>)`](crate::client::fluent_builders::DescribeLiveSource::source_location_name) / [`set_source_location_name(Option<String>)`](crate::client::fluent_builders::DescribeLiveSource::set_source_location_name): <p>The name of the source location associated with this Live Source.</p>
    /// - On success, responds with [`DescribeLiveSourceOutput`](crate::output::DescribeLiveSourceOutput) with field(s):
    ///   - [`arn(Option<String>)`](crate::output::DescribeLiveSourceOutput::arn): <p>The ARN of the live source.</p>
    ///   - [`creation_time(Option<DateTime>)`](crate::output::DescribeLiveSourceOutput::creation_time): <p>The timestamp that indicates when the live source was created.</p>
    ///   - [`http_package_configurations(Option<Vec<HttpPackageConfiguration>>)`](crate::output::DescribeLiveSourceOutput::http_package_configurations): <p>The HTTP package configurations.</p>
    ///   - [`last_modified_time(Option<DateTime>)`](crate::output::DescribeLiveSourceOutput::last_modified_time): <p>The timestamp that indicates when the live source was modified.</p>
    ///   - [`live_source_name(Option<String>)`](crate::output::DescribeLiveSourceOutput::live_source_name): <p>The name of the live source.</p>
    ///   - [`source_location_name(Option<String>)`](crate::output::DescribeLiveSourceOutput::source_location_name): <p>The name of the source location associated with the live source.</p>
    ///   - [`tags(Option<HashMap<String, String>>)`](crate::output::DescribeLiveSourceOutput::tags): <p>The tags assigned to the live source. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</p>
    /// - On failure, responds with [`SdkError<DescribeLiveSourceError>`](crate::error::DescribeLiveSourceError)
    pub fn describe_live_source(&self) -> fluent_builders::DescribeLiveSource {
        fluent_builders::DescribeLiveSource::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeProgram`](crate::client::fluent_builders::DescribeProgram) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`channel_name(impl Into<String>)`](crate::client::fluent_builders::DescribeProgram::channel_name) / [`set_channel_name(Option<String>)`](crate::client::fluent_builders::DescribeProgram::set_channel_name): <p>The name of the channel associated with this Program.</p>
    ///   - [`program_name(impl Into<String>)`](crate::client::fluent_builders::DescribeProgram::program_name) / [`set_program_name(Option<String>)`](crate::client::fluent_builders::DescribeProgram::set_program_name): <p>The name of the program.</p>
    /// - On success, responds with [`DescribeProgramOutput`](crate::output::DescribeProgramOutput) with field(s):
    ///   - [`ad_breaks(Option<Vec<AdBreak>>)`](crate::output::DescribeProgramOutput::ad_breaks): <p>The ad break configuration settings.</p>
    ///   - [`arn(Option<String>)`](crate::output::DescribeProgramOutput::arn): <p>The ARN of the program.</p>
    ///   - [`channel_name(Option<String>)`](crate::output::DescribeProgramOutput::channel_name): <p>The name of the channel that the program belongs to.</p>
    ///   - [`creation_time(Option<DateTime>)`](crate::output::DescribeProgramOutput::creation_time): <p>The timestamp of when the program was created.</p>
    ///   - [`live_source_name(Option<String>)`](crate::output::DescribeProgramOutput::live_source_name): <p>The name of the LiveSource for this Program.</p>
    ///   - [`program_name(Option<String>)`](crate::output::DescribeProgramOutput::program_name): <p>The name of the program.</p>
    ///   - [`scheduled_start_time(Option<DateTime>)`](crate::output::DescribeProgramOutput::scheduled_start_time): <p>The date and time that the program is scheduled to start in ISO 8601 format and Coordinated Universal Time (UTC). For example, the value 2021-03-27T17:48:16.751Z represents March 27, 2021 at 17:48:16.751 UTC.</p>
    ///   - [`source_location_name(Option<String>)`](crate::output::DescribeProgramOutput::source_location_name): <p>The source location name.</p>
    ///   - [`vod_source_name(Option<String>)`](crate::output::DescribeProgramOutput::vod_source_name): <p>The name that's used to refer to a VOD source.</p>
    /// - On failure, responds with [`SdkError<DescribeProgramError>`](crate::error::DescribeProgramError)
    pub fn describe_program(&self) -> fluent_builders::DescribeProgram {
        fluent_builders::DescribeProgram::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeSourceLocation`](crate::client::fluent_builders::DescribeSourceLocation) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`source_location_name(impl Into<String>)`](crate::client::fluent_builders::DescribeSourceLocation::source_location_name) / [`set_source_location_name(Option<String>)`](crate::client::fluent_builders::DescribeSourceLocation::set_source_location_name): <p>The name of the source location.</p>
    /// - On success, responds with [`DescribeSourceLocationOutput`](crate::output::DescribeSourceLocationOutput) with field(s):
    ///   - [`access_configuration(Option<AccessConfiguration>)`](crate::output::DescribeSourceLocationOutput::access_configuration): <p>The access configuration for the source location.</p>
    ///   - [`arn(Option<String>)`](crate::output::DescribeSourceLocationOutput::arn): <p>The ARN of the source location.</p>
    ///   - [`creation_time(Option<DateTime>)`](crate::output::DescribeSourceLocationOutput::creation_time): <p>The timestamp that indicates when the source location was created.</p>
    ///   - [`default_segment_delivery_configuration(Option<DefaultSegmentDeliveryConfiguration>)`](crate::output::DescribeSourceLocationOutput::default_segment_delivery_configuration): <p>The default segment delivery configuration settings.</p>
    ///   - [`http_configuration(Option<HttpConfiguration>)`](crate::output::DescribeSourceLocationOutput::http_configuration): <p>The HTTP package configuration settings for the source location.</p>
    ///   - [`last_modified_time(Option<DateTime>)`](crate::output::DescribeSourceLocationOutput::last_modified_time): <p>The timestamp that indicates when the source location was last modified.</p>
    ///   - [`segment_delivery_configurations(Option<Vec<SegmentDeliveryConfiguration>>)`](crate::output::DescribeSourceLocationOutput::segment_delivery_configurations): <p>A list of the segment delivery configurations associated with this resource.</p>
    ///   - [`source_location_name(Option<String>)`](crate::output::DescribeSourceLocationOutput::source_location_name): <p>The name of the source location.</p>
    ///   - [`tags(Option<HashMap<String, String>>)`](crate::output::DescribeSourceLocationOutput::tags): <p>The tags assigned to the source location. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</p>
    /// - On failure, responds with [`SdkError<DescribeSourceLocationError>`](crate::error::DescribeSourceLocationError)
    pub fn describe_source_location(&self) -> fluent_builders::DescribeSourceLocation {
        fluent_builders::DescribeSourceLocation::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeVodSource`](crate::client::fluent_builders::DescribeVodSource) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`source_location_name(impl Into<String>)`](crate::client::fluent_builders::DescribeVodSource::source_location_name) / [`set_source_location_name(Option<String>)`](crate::client::fluent_builders::DescribeVodSource::set_source_location_name): <p>The name of the source location associated with this VOD Source.</p>
    ///   - [`vod_source_name(impl Into<String>)`](crate::client::fluent_builders::DescribeVodSource::vod_source_name) / [`set_vod_source_name(Option<String>)`](crate::client::fluent_builders::DescribeVodSource::set_vod_source_name): <p>The name of the VOD Source.</p>
    /// - On success, responds with [`DescribeVodSourceOutput`](crate::output::DescribeVodSourceOutput) with field(s):
    ///   - [`arn(Option<String>)`](crate::output::DescribeVodSourceOutput::arn): <p>The ARN of the VOD source.</p>
    ///   - [`creation_time(Option<DateTime>)`](crate::output::DescribeVodSourceOutput::creation_time): <p>The timestamp that indicates when the VOD source was created.</p>
    ///   - [`http_package_configurations(Option<Vec<HttpPackageConfiguration>>)`](crate::output::DescribeVodSourceOutput::http_package_configurations): <p>The HTTP package configurations.</p>
    ///   - [`last_modified_time(Option<DateTime>)`](crate::output::DescribeVodSourceOutput::last_modified_time): <p>The last modified time of the VOD source.</p>
    ///   - [`source_location_name(Option<String>)`](crate::output::DescribeVodSourceOutput::source_location_name): <p>The name of the source location associated with the VOD source.</p>
    ///   - [`tags(Option<HashMap<String, String>>)`](crate::output::DescribeVodSourceOutput::tags): <p>The tags assigned to the VOD source. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</p>
    ///   - [`vod_source_name(Option<String>)`](crate::output::DescribeVodSourceOutput::vod_source_name): <p>The name of the VOD source.</p>
    /// - On failure, responds with [`SdkError<DescribeVodSourceError>`](crate::error::DescribeVodSourceError)
    pub fn describe_vod_source(&self) -> fluent_builders::DescribeVodSource {
        fluent_builders::DescribeVodSource::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetChannelPolicy`](crate::client::fluent_builders::GetChannelPolicy) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`channel_name(impl Into<String>)`](crate::client::fluent_builders::GetChannelPolicy::channel_name) / [`set_channel_name(Option<String>)`](crate::client::fluent_builders::GetChannelPolicy::set_channel_name): <p>The name of the channel associated with this Channel Policy.</p>
    /// - On success, responds with [`GetChannelPolicyOutput`](crate::output::GetChannelPolicyOutput) with field(s):
    ///   - [`policy(Option<String>)`](crate::output::GetChannelPolicyOutput::policy): <p>The IAM policy for the channel. IAM policies are used to control access to your channel.</p>
    /// - On failure, responds with [`SdkError<GetChannelPolicyError>`](crate::error::GetChannelPolicyError)
    pub fn get_channel_policy(&self) -> fluent_builders::GetChannelPolicy {
        fluent_builders::GetChannelPolicy::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetChannelSchedule`](crate::client::fluent_builders::GetChannelSchedule) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::GetChannelSchedule::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`channel_name(impl Into<String>)`](crate::client::fluent_builders::GetChannelSchedule::channel_name) / [`set_channel_name(Option<String>)`](crate::client::fluent_builders::GetChannelSchedule::set_channel_name): <p>The name of the channel associated with this Channel Schedule.</p>
    ///   - [`duration_minutes(impl Into<String>)`](crate::client::fluent_builders::GetChannelSchedule::duration_minutes) / [`set_duration_minutes(Option<String>)`](crate::client::fluent_builders::GetChannelSchedule::set_duration_minutes): <p>The duration in minutes of the channel schedule.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::GetChannelSchedule::max_results) / [`set_max_results(i32)`](crate::client::fluent_builders::GetChannelSchedule::set_max_results): <p>The maximum number of channel schedules that you want MediaTailor to return in response to the current request. If there are more than <code>MaxResults</code> channel schedules, use the value of <code>NextToken</code> in the response to get the next page of results.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::GetChannelSchedule::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::GetChannelSchedule::set_next_token): <p>(Optional) If the playback configuration has more than <code>MaxResults</code> channel schedules, use <code>NextToken</code> to get the second and subsequent pages of results.</p>  <p>For the first <code>GetChannelScheduleRequest</code> request, omit this value.</p>  <p>For the second and subsequent requests, get the value of <code>NextToken</code> from the previous response and specify that value for <code>NextToken</code> in the request.</p>  <p>If the previous response didn't include a <code>NextToken</code> element, there are no more channel schedules to get.</p>
    /// - On success, responds with [`GetChannelScheduleOutput`](crate::output::GetChannelScheduleOutput) with field(s):
    ///   - [`items(Option<Vec<ScheduleEntry>>)`](crate::output::GetChannelScheduleOutput::items): <p>A list of schedule entries for the channel.</p>
    ///   - [`next_token(Option<String>)`](crate::output::GetChannelScheduleOutput::next_token): <p>Pagination token returned by the list request when results exceed the maximum allowed. Use the token to fetch the next page of results.</p>
    /// - On failure, responds with [`SdkError<GetChannelScheduleError>`](crate::error::GetChannelScheduleError)
    pub fn get_channel_schedule(&self) -> fluent_builders::GetChannelSchedule {
        fluent_builders::GetChannelSchedule::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetPlaybackConfiguration`](crate::client::fluent_builders::GetPlaybackConfiguration) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::GetPlaybackConfiguration::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::GetPlaybackConfiguration::set_name): <p>The identifier for the playback configuration.</p>
    /// - On success, responds with [`GetPlaybackConfigurationOutput`](crate::output::GetPlaybackConfigurationOutput) with field(s):
    ///   - [`ad_decision_server_url(Option<String>)`](crate::output::GetPlaybackConfigurationOutput::ad_decision_server_url): <p>The URL for the ad decision server (ADS). This includes the specification of static parameters and placeholders for dynamic parameters. AWS Elemental MediaTailor substitutes player-specific and session-specific parameters as needed when calling the ADS. Alternately, for testing, you can provide a static VAST URL. The maximum length is 25,000 characters.</p>
    ///   - [`avail_suppression(Option<AvailSuppression>)`](crate::output::GetPlaybackConfigurationOutput::avail_suppression): <p>The configuration for avail suppression, also known as ad suppression. For more information about ad suppression, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/ad-behavior.html">Ad Suppression</a>.</p>
    ///   - [`bumper(Option<Bumper>)`](crate::output::GetPlaybackConfigurationOutput::bumper): <p>The configuration for bumpers. Bumpers are short audio or video clips that play at the start or before the end of an ad break. To learn more about bumpers, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/bumpers.html">Bumpers</a>.</p>
    ///   - [`cdn_configuration(Option<CdnConfiguration>)`](crate::output::GetPlaybackConfigurationOutput::cdn_configuration): <p>The configuration for using a content delivery network (CDN), like Amazon CloudFront, for content and ad segment management.</p>
    ///   - [`configuration_aliases(Option<HashMap<String, HashMap<String, String>>>)`](crate::output::GetPlaybackConfigurationOutput::configuration_aliases): <p>The player parameters and aliases used as dynamic variables during session initialization. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/variables-domain.html">Domain Variables</a>.</p>
    ///   - [`dash_configuration(Option<DashConfiguration>)`](crate::output::GetPlaybackConfigurationOutput::dash_configuration): <p>The configuration for DASH content.</p>
    ///   - [`hls_configuration(Option<HlsConfiguration>)`](crate::output::GetPlaybackConfigurationOutput::hls_configuration): <p>The configuration for HLS content.</p>
    ///   - [`live_pre_roll_configuration(Option<LivePreRollConfiguration>)`](crate::output::GetPlaybackConfigurationOutput::live_pre_roll_configuration): <p>The configuration for pre-roll ad insertion.</p>
    ///   - [`log_configuration(Option<LogConfiguration>)`](crate::output::GetPlaybackConfigurationOutput::log_configuration): <p>The Amazon CloudWatch log settings for a playback configuration.</p>
    ///   - [`manifest_processing_rules(Option<ManifestProcessingRules>)`](crate::output::GetPlaybackConfigurationOutput::manifest_processing_rules): <p>The configuration for manifest processing rules. Manifest processing rules enable customization of the personalized manifests created by MediaTailor.</p>
    ///   - [`name(Option<String>)`](crate::output::GetPlaybackConfigurationOutput::name): <p>The identifier for the playback configuration.</p>
    ///   - [`personalization_threshold_seconds(i32)`](crate::output::GetPlaybackConfigurationOutput::personalization_threshold_seconds): <p>Defines the maximum duration of underfilled ad time (in seconds) allowed in an ad break. If the duration of underfilled ad time exceeds the personalization threshold, then the personalization of the ad break is abandoned and the underlying content is shown. This feature applies to <i>ad replacement</i> in live and VOD streams, rather than ad insertion, because it relies on an underlying content stream. For more information about ad break behavior, including ad replacement and insertion, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/ad-behavior.html">Ad Behavior in AWS Elemental MediaTailor</a>.</p>
    ///   - [`playback_configuration_arn(Option<String>)`](crate::output::GetPlaybackConfigurationOutput::playback_configuration_arn): <p>The Amazon Resource Name (ARN) for the playback configuration.</p>
    ///   - [`playback_endpoint_prefix(Option<String>)`](crate::output::GetPlaybackConfigurationOutput::playback_endpoint_prefix): <p>The URL that the player accesses to get a manifest from AWS Elemental MediaTailor. This session will use server-side reporting.</p>
    ///   - [`session_initialization_endpoint_prefix(Option<String>)`](crate::output::GetPlaybackConfigurationOutput::session_initialization_endpoint_prefix): <p>The URL that the player uses to initialize a session that uses client-side reporting.</p>
    ///   - [`slate_ad_url(Option<String>)`](crate::output::GetPlaybackConfigurationOutput::slate_ad_url): <p>The URL for a high-quality video asset to transcode and use to fill in time that's not used by ads. AWS Elemental MediaTailor shows the slate to fill in gaps in media content. Configuring the slate is optional for non-VPAID playback configurations. For VPAID, the slate is required because MediaTailor provides it in the slots designated for dynamic ad content. The slate must be a high-quality asset that contains both audio and video.</p>
    ///   - [`tags(Option<HashMap<String, String>>)`](crate::output::GetPlaybackConfigurationOutput::tags): <p>The tags assigned to the playback configuration. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</p>
    ///   - [`transcode_profile_name(Option<String>)`](crate::output::GetPlaybackConfigurationOutput::transcode_profile_name): <p>The name that is used to associate this playback configuration with a custom transcode profile. This overrides the dynamic transcoding defaults of MediaTailor. Use this only if you have already set up custom profiles with the help of AWS Support.</p>
    ///   - [`video_content_source_url(Option<String>)`](crate::output::GetPlaybackConfigurationOutput::video_content_source_url): <p>The URL prefix for the parent manifest for the stream, minus the asset ID. The maximum length is 512 characters.</p>
    /// - On failure, responds with [`SdkError<GetPlaybackConfigurationError>`](crate::error::GetPlaybackConfigurationError)
    pub fn get_playback_configuration(&self) -> fluent_builders::GetPlaybackConfiguration {
        fluent_builders::GetPlaybackConfiguration::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetPrefetchSchedule`](crate::client::fluent_builders::GetPrefetchSchedule) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::GetPrefetchSchedule::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::GetPrefetchSchedule::set_name): <p>The name of the prefetch schedule. The name must be unique among all prefetch schedules that are associated with the specified playback configuration.</p>
    ///   - [`playback_configuration_name(impl Into<String>)`](crate::client::fluent_builders::GetPrefetchSchedule::playback_configuration_name) / [`set_playback_configuration_name(Option<String>)`](crate::client::fluent_builders::GetPrefetchSchedule::set_playback_configuration_name): <p>Returns information about the prefetch schedule for a specific playback configuration. If you call <code>GetPrefetchSchedule</code> on an expired prefetch schedule, MediaTailor returns an HTTP 404 status code.</p>
    /// - On success, responds with [`GetPrefetchScheduleOutput`](crate::output::GetPrefetchScheduleOutput) with field(s):
    ///   - [`arn(Option<String>)`](crate::output::GetPrefetchScheduleOutput::arn): <p>The Amazon Resource Name (ARN) of the prefetch schedule.</p>
    ///   - [`consumption(Option<PrefetchConsumption>)`](crate::output::GetPrefetchScheduleOutput::consumption): <p>Consumption settings determine how, and when, MediaTailor places the prefetched ads into ad breaks. Ad consumption occurs within a span of time that you define, called a <i>consumption window</i>. You can designate which ad breaks that MediaTailor fills with prefetch ads by setting avail matching criteria.</p>
    ///   - [`name(Option<String>)`](crate::output::GetPrefetchScheduleOutput::name): <p>The name of the prefetch schedule. The name must be unique among all prefetch schedules that are associated with the specified playback configuration.</p>
    ///   - [`playback_configuration_name(Option<String>)`](crate::output::GetPrefetchScheduleOutput::playback_configuration_name): <p>The name of the playback configuration to create the prefetch schedule for.</p>
    ///   - [`retrieval(Option<PrefetchRetrieval>)`](crate::output::GetPrefetchScheduleOutput::retrieval): <p>A complex type that contains settings for prefetch retrieval from the ad decision server (ADS).</p>
    ///   - [`stream_id(Option<String>)`](crate::output::GetPrefetchScheduleOutput::stream_id): <p>An optional stream identifier that you can specify in order to prefetch for multiple streams that use the same playback configuration.</p>
    /// - On failure, responds with [`SdkError<GetPrefetchScheduleError>`](crate::error::GetPrefetchScheduleError)
    pub fn get_prefetch_schedule(&self) -> fluent_builders::GetPrefetchSchedule {
        fluent_builders::GetPrefetchSchedule::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListAlerts`](crate::client::fluent_builders::ListAlerts) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListAlerts::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListAlerts::max_results) / [`set_max_results(i32)`](crate::client::fluent_builders::ListAlerts::set_max_results): <p>The maximum number of alerts that you want MediaTailor to return in response to the current request. If there are more than <code>MaxResults</code> alerts, use the value of <code>NextToken</code> in the response to get the next page of results.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListAlerts::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListAlerts::set_next_token): <p>Pagination token returned by the list request when results exceed the maximum allowed. Use the token to fetch the next page of results.</p>
    ///   - [`resource_arn(impl Into<String>)`](crate::client::fluent_builders::ListAlerts::resource_arn) / [`set_resource_arn(Option<String>)`](crate::client::fluent_builders::ListAlerts::set_resource_arn): <p>The Amazon Resource Name (ARN) of the resource.</p>
    /// - On success, responds with [`ListAlertsOutput`](crate::output::ListAlertsOutput) with field(s):
    ///   - [`items(Option<Vec<Alert>>)`](crate::output::ListAlertsOutput::items): <p>A list of alerts that are associated with this resource.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListAlertsOutput::next_token): <p>Pagination token returned by the list request when results exceed the maximum allowed. Use the token to fetch the next page of results.</p>
    /// - On failure, responds with [`SdkError<ListAlertsError>`](crate::error::ListAlertsError)
    pub fn list_alerts(&self) -> fluent_builders::ListAlerts {
        fluent_builders::ListAlerts::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListChannels`](crate::client::fluent_builders::ListChannels) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListChannels::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListChannels::max_results) / [`set_max_results(i32)`](crate::client::fluent_builders::ListChannels::set_max_results): <p>The maximum number of channels that you want MediaTailor to return in response to the current request. If there are more than <code>MaxResults</code> channels, use the value of <code>NextToken</code> in the response to get the next page of results.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListChannels::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListChannels::set_next_token): <p>Pagination token returned by the list request when results exceed the maximum allowed. Use the token to fetch the next page of results.</p>
    /// - On success, responds with [`ListChannelsOutput`](crate::output::ListChannelsOutput) with field(s):
    ///   - [`items(Option<Vec<Channel>>)`](crate::output::ListChannelsOutput::items): <p>A list of channels that are associated with this account.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListChannelsOutput::next_token): <p>Pagination token returned by the list request when results exceed the maximum allowed. Use the token to fetch the next page of results.</p>
    /// - On failure, responds with [`SdkError<ListChannelsError>`](crate::error::ListChannelsError)
    pub fn list_channels(&self) -> fluent_builders::ListChannels {
        fluent_builders::ListChannels::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListLiveSources`](crate::client::fluent_builders::ListLiveSources) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListLiveSources::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListLiveSources::max_results) / [`set_max_results(i32)`](crate::client::fluent_builders::ListLiveSources::set_max_results): <p>The maximum number of live sources that you want MediaTailor to return in response to the current request. If there are more than <code>MaxResults</code> live sources, use the value of <code>NextToken</code> in the response to get the next page of results.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListLiveSources::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListLiveSources::set_next_token): <p>Pagination token returned by the list request when results exceed the maximum allowed. Use the token to fetch the next page of results.</p>
    ///   - [`source_location_name(impl Into<String>)`](crate::client::fluent_builders::ListLiveSources::source_location_name) / [`set_source_location_name(Option<String>)`](crate::client::fluent_builders::ListLiveSources::set_source_location_name): <p>The name of the source location associated with this Live Sources list.</p>
    /// - On success, responds with [`ListLiveSourcesOutput`](crate::output::ListLiveSourcesOutput) with field(s):
    ///   - [`items(Option<Vec<LiveSource>>)`](crate::output::ListLiveSourcesOutput::items): <p>Lists the live sources.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListLiveSourcesOutput::next_token): <p>Pagination token returned by the list request when results exceed the maximum allowed. Use the token to fetch the next page of results.</p>
    /// - On failure, responds with [`SdkError<ListLiveSourcesError>`](crate::error::ListLiveSourcesError)
    pub fn list_live_sources(&self) -> fluent_builders::ListLiveSources {
        fluent_builders::ListLiveSources::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListPlaybackConfigurations`](crate::client::fluent_builders::ListPlaybackConfigurations) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListPlaybackConfigurations::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListPlaybackConfigurations::max_results) / [`set_max_results(i32)`](crate::client::fluent_builders::ListPlaybackConfigurations::set_max_results): <p>The maximum number of playback configurations that you want MediaTailor to return in response to the current request. If there are more than <code>MaxResults</code> playback configurations, use the value of <code>NextToken</code> in the response to get the next page of results.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListPlaybackConfigurations::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListPlaybackConfigurations::set_next_token): <p>Pagination token returned by the list request when results exceed the maximum allowed. Use the token to fetch the next page of results.</p>
    /// - On success, responds with [`ListPlaybackConfigurationsOutput`](crate::output::ListPlaybackConfigurationsOutput) with field(s):
    ///   - [`items(Option<Vec<PlaybackConfiguration>>)`](crate::output::ListPlaybackConfigurationsOutput::items): <p>Array of playback configurations. This might be all the available configurations or a subset, depending on the settings that you provide and the total number of configurations stored.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListPlaybackConfigurationsOutput::next_token): <p>Pagination token returned by the GET list request when results exceed the maximum allowed. Use the token to fetch the next page of results.</p>
    /// - On failure, responds with [`SdkError<ListPlaybackConfigurationsError>`](crate::error::ListPlaybackConfigurationsError)
    pub fn list_playback_configurations(&self) -> fluent_builders::ListPlaybackConfigurations {
        fluent_builders::ListPlaybackConfigurations::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListPrefetchSchedules`](crate::client::fluent_builders::ListPrefetchSchedules) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListPrefetchSchedules::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListPrefetchSchedules::max_results) / [`set_max_results(i32)`](crate::client::fluent_builders::ListPrefetchSchedules::set_max_results): <p>The maximum number of prefetch schedules that you want MediaTailor to return in response to the current request. If there are more than <code>MaxResults</code> prefetch schedules, use the value of <code>NextToken</code> in the response to get the next page of results.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListPrefetchSchedules::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListPrefetchSchedules::set_next_token): <p>(Optional) If the playback configuration has more than <code>MaxResults</code> prefetch schedules, use <code>NextToken</code> to get the second and subsequent pages of results.</p>  <p> For the first <code>ListPrefetchSchedulesRequest</code> request, omit this value.</p>  <p> For the second and subsequent requests, get the value of <code>NextToken</code> from the previous response and specify that value for <code>NextToken</code> in the request.</p>  <p> If the previous response didn't include a <code>NextToken</code> element, there are no more prefetch schedules to get.</p>
    ///   - [`playback_configuration_name(impl Into<String>)`](crate::client::fluent_builders::ListPrefetchSchedules::playback_configuration_name) / [`set_playback_configuration_name(Option<String>)`](crate::client::fluent_builders::ListPrefetchSchedules::set_playback_configuration_name): <p>Retrieves the prefetch schedule(s) for a specific playback configuration.</p>
    ///   - [`stream_id(impl Into<String>)`](crate::client::fluent_builders::ListPrefetchSchedules::stream_id) / [`set_stream_id(Option<String>)`](crate::client::fluent_builders::ListPrefetchSchedules::set_stream_id): <p>An optional filtering parameter whereby MediaTailor filters the prefetch schedules to include only specific streams.</p>
    /// - On success, responds with [`ListPrefetchSchedulesOutput`](crate::output::ListPrefetchSchedulesOutput) with field(s):
    ///   - [`items(Option<Vec<PrefetchSchedule>>)`](crate::output::ListPrefetchSchedulesOutput::items): <p>Lists the prefetch schedules. An empty <code>Items</code> list doesn't mean there aren't more items to fetch, just that that page was empty.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListPrefetchSchedulesOutput::next_token): <p>Pagination token returned by the list request when results exceed the maximum allowed. Use the token to fetch the next page of results.</p>
    /// - On failure, responds with [`SdkError<ListPrefetchSchedulesError>`](crate::error::ListPrefetchSchedulesError)
    pub fn list_prefetch_schedules(&self) -> fluent_builders::ListPrefetchSchedules {
        fluent_builders::ListPrefetchSchedules::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListSourceLocations`](crate::client::fluent_builders::ListSourceLocations) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListSourceLocations::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListSourceLocations::max_results) / [`set_max_results(i32)`](crate::client::fluent_builders::ListSourceLocations::set_max_results): <p> The maximum number of source locations that you want MediaTailor to return in response to the current request. If there are more than <code>MaxResults</code> source locations, use the value of <code>NextToken</code> in the response to get the next page of results.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListSourceLocations::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListSourceLocations::set_next_token): <p>Pagination token returned by the list request when results exceed the maximum allowed. Use the token to fetch the next page of results.</p>
    /// - On success, responds with [`ListSourceLocationsOutput`](crate::output::ListSourceLocationsOutput) with field(s):
    ///   - [`items(Option<Vec<SourceLocation>>)`](crate::output::ListSourceLocationsOutput::items): <p>A list of source locations.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListSourceLocationsOutput::next_token): <p>Pagination token returned by the list request when results exceed the maximum allowed. Use the token to fetch the next page of results.</p>
    /// - On failure, responds with [`SdkError<ListSourceLocationsError>`](crate::error::ListSourceLocationsError)
    pub fn list_source_locations(&self) -> fluent_builders::ListSourceLocations {
        fluent_builders::ListSourceLocations::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) associated with this resource.</p>
    /// - On success, responds with [`ListTagsForResourceOutput`](crate::output::ListTagsForResourceOutput) with field(s):
    ///   - [`tags(Option<HashMap<String, String>>)`](crate::output::ListTagsForResourceOutput::tags): <p>The tags associated with this resource. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</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 [`ListVodSources`](crate::client::fluent_builders::ListVodSources) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListVodSources::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListVodSources::max_results) / [`set_max_results(i32)`](crate::client::fluent_builders::ListVodSources::set_max_results): <p> The maximum number of VOD sources that you want MediaTailor to return in response to the current request. If there are more than <code>MaxResults</code> VOD sources, use the value of <code>NextToken</code> in the response to get the next page of results.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListVodSources::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListVodSources::set_next_token): <p>Pagination token returned by the list request when results exceed the maximum allowed. Use the token to fetch the next page of results.</p>
    ///   - [`source_location_name(impl Into<String>)`](crate::client::fluent_builders::ListVodSources::source_location_name) / [`set_source_location_name(Option<String>)`](crate::client::fluent_builders::ListVodSources::set_source_location_name): <p>The name of the source location associated with this VOD Source list.</p>
    /// - On success, responds with [`ListVodSourcesOutput`](crate::output::ListVodSourcesOutput) with field(s):
    ///   - [`items(Option<Vec<VodSource>>)`](crate::output::ListVodSourcesOutput::items): <p>Lists the VOD sources.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListVodSourcesOutput::next_token): <p>Pagination token returned by the list request when results exceed the maximum allowed. Use the token to fetch the next page of results.</p>
    /// - On failure, responds with [`SdkError<ListVodSourcesError>`](crate::error::ListVodSourcesError)
    pub fn list_vod_sources(&self) -> fluent_builders::ListVodSources {
        fluent_builders::ListVodSources::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`PutChannelPolicy`](crate::client::fluent_builders::PutChannelPolicy) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`channel_name(impl Into<String>)`](crate::client::fluent_builders::PutChannelPolicy::channel_name) / [`set_channel_name(Option<String>)`](crate::client::fluent_builders::PutChannelPolicy::set_channel_name): <p>The channel name associated with this Channel Policy.</p>
    ///   - [`policy(impl Into<String>)`](crate::client::fluent_builders::PutChannelPolicy::policy) / [`set_policy(Option<String>)`](crate::client::fluent_builders::PutChannelPolicy::set_policy): <p>Adds an IAM role that determines the permissions of your channel.</p>
    /// - On success, responds with [`PutChannelPolicyOutput`](crate::output::PutChannelPolicyOutput)

    /// - On failure, responds with [`SdkError<PutChannelPolicyError>`](crate::error::PutChannelPolicyError)
    pub fn put_channel_policy(&self) -> fluent_builders::PutChannelPolicy {
        fluent_builders::PutChannelPolicy::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`PutPlaybackConfiguration`](crate::client::fluent_builders::PutPlaybackConfiguration) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`ad_decision_server_url(impl Into<String>)`](crate::client::fluent_builders::PutPlaybackConfiguration::ad_decision_server_url) / [`set_ad_decision_server_url(Option<String>)`](crate::client::fluent_builders::PutPlaybackConfiguration::set_ad_decision_server_url): <p>The URL for the ad decision server (ADS). This includes the specification of static parameters and placeholders for dynamic parameters. AWS Elemental MediaTailor substitutes player-specific and session-specific parameters as needed when calling the ADS. Alternately, for testing you can provide a static VAST URL. The maximum length is 25,000 characters.</p>
    ///   - [`avail_suppression(AvailSuppression)`](crate::client::fluent_builders::PutPlaybackConfiguration::avail_suppression) / [`set_avail_suppression(Option<AvailSuppression>)`](crate::client::fluent_builders::PutPlaybackConfiguration::set_avail_suppression): <p>The configuration for avail suppression, also known as ad suppression. For more information about ad suppression, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/ad-behavior.html">Ad Suppression</a>.</p>
    ///   - [`bumper(Bumper)`](crate::client::fluent_builders::PutPlaybackConfiguration::bumper) / [`set_bumper(Option<Bumper>)`](crate::client::fluent_builders::PutPlaybackConfiguration::set_bumper): <p>The configuration for bumpers. Bumpers are short audio or video clips that play at the start or before the end of an ad break. To learn more about bumpers, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/bumpers.html">Bumpers</a>.</p>
    ///   - [`cdn_configuration(CdnConfiguration)`](crate::client::fluent_builders::PutPlaybackConfiguration::cdn_configuration) / [`set_cdn_configuration(Option<CdnConfiguration>)`](crate::client::fluent_builders::PutPlaybackConfiguration::set_cdn_configuration): <p>The configuration for using a content delivery network (CDN), like Amazon CloudFront, for content and ad segment management.</p>
    ///   - [`configuration_aliases(HashMap<String, HashMap<String, String>>)`](crate::client::fluent_builders::PutPlaybackConfiguration::configuration_aliases) / [`set_configuration_aliases(Option<HashMap<String, HashMap<String, String>>>)`](crate::client::fluent_builders::PutPlaybackConfiguration::set_configuration_aliases): <p>The player parameters and aliases used as dynamic variables during session initialization. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/variables-domain.html">Domain Variables</a>.</p>
    ///   - [`dash_configuration(DashConfigurationForPut)`](crate::client::fluent_builders::PutPlaybackConfiguration::dash_configuration) / [`set_dash_configuration(Option<DashConfigurationForPut>)`](crate::client::fluent_builders::PutPlaybackConfiguration::set_dash_configuration): <p>The configuration for DASH content.</p>
    ///   - [`live_pre_roll_configuration(LivePreRollConfiguration)`](crate::client::fluent_builders::PutPlaybackConfiguration::live_pre_roll_configuration) / [`set_live_pre_roll_configuration(Option<LivePreRollConfiguration>)`](crate::client::fluent_builders::PutPlaybackConfiguration::set_live_pre_roll_configuration): <p>The configuration for pre-roll ad insertion.</p>
    ///   - [`manifest_processing_rules(ManifestProcessingRules)`](crate::client::fluent_builders::PutPlaybackConfiguration::manifest_processing_rules) / [`set_manifest_processing_rules(Option<ManifestProcessingRules>)`](crate::client::fluent_builders::PutPlaybackConfiguration::set_manifest_processing_rules): <p>The configuration for manifest processing rules. Manifest processing rules enable customization of the personalized manifests created by MediaTailor.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::PutPlaybackConfiguration::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::PutPlaybackConfiguration::set_name): <p>The identifier for the playback configuration.</p>
    ///   - [`personalization_threshold_seconds(i32)`](crate::client::fluent_builders::PutPlaybackConfiguration::personalization_threshold_seconds) / [`set_personalization_threshold_seconds(i32)`](crate::client::fluent_builders::PutPlaybackConfiguration::set_personalization_threshold_seconds): <p>Defines the maximum duration of underfilled ad time (in seconds) allowed in an ad break. If the duration of underfilled ad time exceeds the personalization threshold, then the personalization of the ad break is abandoned and the underlying content is shown. This feature applies to <i>ad replacement</i> in live and VOD streams, rather than ad insertion, because it relies on an underlying content stream. For more information about ad break behavior, including ad replacement and insertion, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/ad-behavior.html">Ad Behavior in AWS Elemental MediaTailor</a>.</p>
    ///   - [`slate_ad_url(impl Into<String>)`](crate::client::fluent_builders::PutPlaybackConfiguration::slate_ad_url) / [`set_slate_ad_url(Option<String>)`](crate::client::fluent_builders::PutPlaybackConfiguration::set_slate_ad_url): <p>The URL for a high-quality video asset to transcode and use to fill in time that's not used by ads. AWS Elemental MediaTailor shows the slate to fill in gaps in media content. Configuring the slate is optional for non-VPAID configurations. For VPAID, the slate is required because MediaTailor provides it in the slots that are designated for dynamic ad content. The slate must be a high-quality asset that contains both audio and video.</p>
    ///   - [`tags(HashMap<String, String>)`](crate::client::fluent_builders::PutPlaybackConfiguration::tags) / [`set_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::PutPlaybackConfiguration::set_tags): <p>The tags to assign to the playback configuration. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</p>
    ///   - [`transcode_profile_name(impl Into<String>)`](crate::client::fluent_builders::PutPlaybackConfiguration::transcode_profile_name) / [`set_transcode_profile_name(Option<String>)`](crate::client::fluent_builders::PutPlaybackConfiguration::set_transcode_profile_name): <p>The name that is used to associate this playback configuration with a custom transcode profile. This overrides the dynamic transcoding defaults of MediaTailor. Use this only if you have already set up custom profiles with the help of AWS Support.</p>
    ///   - [`video_content_source_url(impl Into<String>)`](crate::client::fluent_builders::PutPlaybackConfiguration::video_content_source_url) / [`set_video_content_source_url(Option<String>)`](crate::client::fluent_builders::PutPlaybackConfiguration::set_video_content_source_url): <p>The URL prefix for the parent manifest for the stream, minus the asset ID. The maximum length is 512 characters.</p>
    /// - On success, responds with [`PutPlaybackConfigurationOutput`](crate::output::PutPlaybackConfigurationOutput) with field(s):
    ///   - [`ad_decision_server_url(Option<String>)`](crate::output::PutPlaybackConfigurationOutput::ad_decision_server_url): <p>The URL for the ad decision server (ADS). This includes the specification of static parameters and placeholders for dynamic parameters. AWS Elemental MediaTailor substitutes player-specific and session-specific parameters as needed when calling the ADS. Alternately, for testing you can provide a static VAST URL. The maximum length is 25,000 characters.</p>
    ///   - [`avail_suppression(Option<AvailSuppression>)`](crate::output::PutPlaybackConfigurationOutput::avail_suppression): <p>The configuration for avail suppression, also known as ad suppression. For more information about ad suppression, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/ad-behavior.html">Ad Suppression</a>.</p>
    ///   - [`bumper(Option<Bumper>)`](crate::output::PutPlaybackConfigurationOutput::bumper): <p>The configuration for bumpers. Bumpers are short audio or video clips that play at the start or before the end of an ad break. To learn more about bumpers, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/bumpers.html">Bumpers</a>.</p>
    ///   - [`cdn_configuration(Option<CdnConfiguration>)`](crate::output::PutPlaybackConfigurationOutput::cdn_configuration): <p>The configuration for using a content delivery network (CDN), like Amazon CloudFront, for content and ad segment management.</p>
    ///   - [`configuration_aliases(Option<HashMap<String, HashMap<String, String>>>)`](crate::output::PutPlaybackConfigurationOutput::configuration_aliases): <p>The player parameters and aliases used as dynamic variables during session initialization. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/variables-domain.html">Domain Variables</a>.</p>
    ///   - [`dash_configuration(Option<DashConfiguration>)`](crate::output::PutPlaybackConfigurationOutput::dash_configuration): <p>The configuration for DASH content.</p>
    ///   - [`hls_configuration(Option<HlsConfiguration>)`](crate::output::PutPlaybackConfigurationOutput::hls_configuration): <p>The configuration for HLS content.</p>
    ///   - [`live_pre_roll_configuration(Option<LivePreRollConfiguration>)`](crate::output::PutPlaybackConfigurationOutput::live_pre_roll_configuration): <p>The configuration for pre-roll ad insertion.</p>
    ///   - [`log_configuration(Option<LogConfiguration>)`](crate::output::PutPlaybackConfigurationOutput::log_configuration): <p>The Amazon CloudWatch log settings for a playback configuration.</p>
    ///   - [`manifest_processing_rules(Option<ManifestProcessingRules>)`](crate::output::PutPlaybackConfigurationOutput::manifest_processing_rules): <p>The configuration for manifest processing rules. Manifest processing rules enable customization of the personalized manifests created by MediaTailor.</p>
    ///   - [`name(Option<String>)`](crate::output::PutPlaybackConfigurationOutput::name): <p>The identifier for the playback configuration.</p>
    ///   - [`personalization_threshold_seconds(i32)`](crate::output::PutPlaybackConfigurationOutput::personalization_threshold_seconds): <p>Defines the maximum duration of underfilled ad time (in seconds) allowed in an ad break. If the duration of underfilled ad time exceeds the personalization threshold, then the personalization of the ad break is abandoned and the underlying content is shown. This feature applies to <i>ad replacement</i> in live and VOD streams, rather than ad insertion, because it relies on an underlying content stream. For more information about ad break behavior, including ad replacement and insertion, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/ad-behavior.html">Ad Behavior in AWS Elemental MediaTailor</a>.</p>
    ///   - [`playback_configuration_arn(Option<String>)`](crate::output::PutPlaybackConfigurationOutput::playback_configuration_arn): <p>The Amazon Resource Name (ARN) associated with the playback configuration.</p>
    ///   - [`playback_endpoint_prefix(Option<String>)`](crate::output::PutPlaybackConfigurationOutput::playback_endpoint_prefix): <p>The playback endpoint prefix associated with the playback configuration.</p>
    ///   - [`session_initialization_endpoint_prefix(Option<String>)`](crate::output::PutPlaybackConfigurationOutput::session_initialization_endpoint_prefix): <p>The session initialization endpoint prefix associated with the playback configuration.</p>
    ///   - [`slate_ad_url(Option<String>)`](crate::output::PutPlaybackConfigurationOutput::slate_ad_url): <p>The URL for a high-quality video asset to transcode and use to fill in time that's not used by ads. AWS Elemental MediaTailor shows the slate to fill in gaps in media content. Configuring the slate is optional for non-VPAID configurations. For VPAID, the slate is required because MediaTailor provides it in the slots that are designated for dynamic ad content. The slate must be a high-quality asset that contains both audio and video.</p>
    ///   - [`tags(Option<HashMap<String, String>>)`](crate::output::PutPlaybackConfigurationOutput::tags): <p>The tags to assign to the playback configuration. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</p>
    ///   - [`transcode_profile_name(Option<String>)`](crate::output::PutPlaybackConfigurationOutput::transcode_profile_name): <p>The name that is used to associate this playback configuration with a custom transcode profile. This overrides the dynamic transcoding defaults of MediaTailor. Use this only if you have already set up custom profiles with the help of AWS Support.</p>
    ///   - [`video_content_source_url(Option<String>)`](crate::output::PutPlaybackConfigurationOutput::video_content_source_url): <p>The URL prefix for the parent manifest for the stream, minus the asset ID. The maximum length is 512 characters.</p>
    /// - On failure, responds with [`SdkError<PutPlaybackConfigurationError>`](crate::error::PutPlaybackConfigurationError)
    pub fn put_playback_configuration(&self) -> fluent_builders::PutPlaybackConfiguration {
        fluent_builders::PutPlaybackConfiguration::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`StartChannel`](crate::client::fluent_builders::StartChannel) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`channel_name(impl Into<String>)`](crate::client::fluent_builders::StartChannel::channel_name) / [`set_channel_name(Option<String>)`](crate::client::fluent_builders::StartChannel::set_channel_name): <p>The name of the channel.</p>
    /// - On success, responds with [`StartChannelOutput`](crate::output::StartChannelOutput)

    /// - On failure, responds with [`SdkError<StartChannelError>`](crate::error::StartChannelError)
    pub fn start_channel(&self) -> fluent_builders::StartChannel {
        fluent_builders::StartChannel::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`StopChannel`](crate::client::fluent_builders::StopChannel) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`channel_name(impl Into<String>)`](crate::client::fluent_builders::StopChannel::channel_name) / [`set_channel_name(Option<String>)`](crate::client::fluent_builders::StopChannel::set_channel_name): <p>The name of the channel.</p>
    /// - On success, responds with [`StopChannelOutput`](crate::output::StopChannelOutput)

    /// - On failure, responds with [`SdkError<StopChannelError>`](crate::error::StopChannelError)
    pub fn stop_channel(&self) -> fluent_builders::StopChannel {
        fluent_builders::StopChannel::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) associated with the resource.</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>The tags to assign to the resource. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</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 resource to untag.</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 tag keys associated with the resource.</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 [`UpdateChannel`](crate::client::fluent_builders::UpdateChannel) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`channel_name(impl Into<String>)`](crate::client::fluent_builders::UpdateChannel::channel_name) / [`set_channel_name(Option<String>)`](crate::client::fluent_builders::UpdateChannel::set_channel_name): <p>The name of the channel.</p>
    ///   - [`filler_slate(SlateSource)`](crate::client::fluent_builders::UpdateChannel::filler_slate) / [`set_filler_slate(Option<SlateSource>)`](crate::client::fluent_builders::UpdateChannel::set_filler_slate): <p>The slate used to fill gaps between programs in the schedule. You must configure filler slate if your channel uses the <code>LINEAR</code> <code>PlaybackMode</code>. MediaTailor doesn't support filler slate for channels using the <code>LOOP</code> <code>PlaybackMode</code>.</p>
    ///   - [`outputs(Vec<RequestOutputItem>)`](crate::client::fluent_builders::UpdateChannel::outputs) / [`set_outputs(Option<Vec<RequestOutputItem>>)`](crate::client::fluent_builders::UpdateChannel::set_outputs): <p>The channel's output properties.</p>
    /// - On success, responds with [`UpdateChannelOutput`](crate::output::UpdateChannelOutput) with field(s):
    ///   - [`arn(Option<String>)`](crate::output::UpdateChannelOutput::arn): <p>The Amazon Resource Name (ARN) associated with the channel.</p>
    ///   - [`channel_name(Option<String>)`](crate::output::UpdateChannelOutput::channel_name): <p>The name of the channel.</p>
    ///   - [`channel_state(Option<ChannelState>)`](crate::output::UpdateChannelOutput::channel_state): <p>Returns the state whether the channel is running or not.</p>
    ///   - [`creation_time(Option<DateTime>)`](crate::output::UpdateChannelOutput::creation_time): <p>The timestamp of when the channel was created.</p>
    ///   - [`filler_slate(Option<SlateSource>)`](crate::output::UpdateChannelOutput::filler_slate): <p>The slate used to fill gaps between programs in the schedule. You must configure filler slate if your channel uses the <code>LINEAR</code> <code>PlaybackMode</code>. MediaTailor doesn't support filler slate for channels using the <code>LOOP</code> <code>PlaybackMode</code>.</p>
    ///   - [`last_modified_time(Option<DateTime>)`](crate::output::UpdateChannelOutput::last_modified_time): <p>The timestamp that indicates when the channel was last modified.</p>
    ///   - [`outputs(Option<Vec<ResponseOutputItem>>)`](crate::output::UpdateChannelOutput::outputs): <p>The channel's output properties.</p>
    ///   - [`playback_mode(Option<String>)`](crate::output::UpdateChannelOutput::playback_mode): <p>The type of playback mode for this channel.</p>  <p> <code>LINEAR</code> - Programs play back-to-back only once.</p>  <p> <code>LOOP</code> - Programs play back-to-back in an endless loop. When the last program in the schedule plays, playback loops back to the first program in the schedule.</p>
    ///   - [`tags(Option<HashMap<String, String>>)`](crate::output::UpdateChannelOutput::tags): <p>The tags to assign to the channel. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</p>
    ///   - [`tier(Option<String>)`](crate::output::UpdateChannelOutput::tier): <p>The tier associated with this Channel.</p>
    /// - On failure, responds with [`SdkError<UpdateChannelError>`](crate::error::UpdateChannelError)
    pub fn update_channel(&self) -> fluent_builders::UpdateChannel {
        fluent_builders::UpdateChannel::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateLiveSource`](crate::client::fluent_builders::UpdateLiveSource) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`http_package_configurations(Vec<HttpPackageConfiguration>)`](crate::client::fluent_builders::UpdateLiveSource::http_package_configurations) / [`set_http_package_configurations(Option<Vec<HttpPackageConfiguration>>)`](crate::client::fluent_builders::UpdateLiveSource::set_http_package_configurations): <p>A list of HTTP package configurations for the live source on this account.</p>
    ///   - [`live_source_name(impl Into<String>)`](crate::client::fluent_builders::UpdateLiveSource::live_source_name) / [`set_live_source_name(Option<String>)`](crate::client::fluent_builders::UpdateLiveSource::set_live_source_name): <p>The name of the live source.</p>
    ///   - [`source_location_name(impl Into<String>)`](crate::client::fluent_builders::UpdateLiveSource::source_location_name) / [`set_source_location_name(Option<String>)`](crate::client::fluent_builders::UpdateLiveSource::set_source_location_name): <p>The name of the source location associated with this Live Source.</p>
    /// - On success, responds with [`UpdateLiveSourceOutput`](crate::output::UpdateLiveSourceOutput) with field(s):
    ///   - [`arn(Option<String>)`](crate::output::UpdateLiveSourceOutput::arn): <p>The Amazon Resource Name (ARN) associated with this live source.</p>
    ///   - [`creation_time(Option<DateTime>)`](crate::output::UpdateLiveSourceOutput::creation_time): <p>The timestamp that indicates when the live source was created.</p>
    ///   - [`http_package_configurations(Option<Vec<HttpPackageConfiguration>>)`](crate::output::UpdateLiveSourceOutput::http_package_configurations): <p>A list of HTTP package configurations for the live source on this account.</p>
    ///   - [`last_modified_time(Option<DateTime>)`](crate::output::UpdateLiveSourceOutput::last_modified_time): <p>The timestamp that indicates when the live source was last modified.</p>
    ///   - [`live_source_name(Option<String>)`](crate::output::UpdateLiveSourceOutput::live_source_name): <p>The name of the live source.</p>
    ///   - [`source_location_name(Option<String>)`](crate::output::UpdateLiveSourceOutput::source_location_name): <p>The name of the source location associated with the live source.</p>
    ///   - [`tags(Option<HashMap<String, String>>)`](crate::output::UpdateLiveSourceOutput::tags): <p>The tags to assign to the live source. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</p>
    /// - On failure, responds with [`SdkError<UpdateLiveSourceError>`](crate::error::UpdateLiveSourceError)
    pub fn update_live_source(&self) -> fluent_builders::UpdateLiveSource {
        fluent_builders::UpdateLiveSource::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateSourceLocation`](crate::client::fluent_builders::UpdateSourceLocation) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`access_configuration(AccessConfiguration)`](crate::client::fluent_builders::UpdateSourceLocation::access_configuration) / [`set_access_configuration(Option<AccessConfiguration>)`](crate::client::fluent_builders::UpdateSourceLocation::set_access_configuration): <p>Access configuration parameters. Configures the type of authentication used to access content from your source location.</p>
    ///   - [`default_segment_delivery_configuration(DefaultSegmentDeliveryConfiguration)`](crate::client::fluent_builders::UpdateSourceLocation::default_segment_delivery_configuration) / [`set_default_segment_delivery_configuration(Option<DefaultSegmentDeliveryConfiguration>)`](crate::client::fluent_builders::UpdateSourceLocation::set_default_segment_delivery_configuration): <p>The optional configuration for the host server that serves segments.</p>
    ///   - [`http_configuration(HttpConfiguration)`](crate::client::fluent_builders::UpdateSourceLocation::http_configuration) / [`set_http_configuration(Option<HttpConfiguration>)`](crate::client::fluent_builders::UpdateSourceLocation::set_http_configuration): <p>The HTTP configuration for the source location.</p>
    ///   - [`segment_delivery_configurations(Vec<SegmentDeliveryConfiguration>)`](crate::client::fluent_builders::UpdateSourceLocation::segment_delivery_configurations) / [`set_segment_delivery_configurations(Option<Vec<SegmentDeliveryConfiguration>>)`](crate::client::fluent_builders::UpdateSourceLocation::set_segment_delivery_configurations): <p>A list of the segment delivery configurations associated with this resource.</p>
    ///   - [`source_location_name(impl Into<String>)`](crate::client::fluent_builders::UpdateSourceLocation::source_location_name) / [`set_source_location_name(Option<String>)`](crate::client::fluent_builders::UpdateSourceLocation::set_source_location_name): <p>The name of the source location.</p>
    /// - On success, responds with [`UpdateSourceLocationOutput`](crate::output::UpdateSourceLocationOutput) with field(s):
    ///   - [`access_configuration(Option<AccessConfiguration>)`](crate::output::UpdateSourceLocationOutput::access_configuration): <p>Access configuration parameters. Configures the type of authentication used to access content from your source location.</p>
    ///   - [`arn(Option<String>)`](crate::output::UpdateSourceLocationOutput::arn): <p>The Amazon Resource Name (ARN) associated with the source location.</p>
    ///   - [`creation_time(Option<DateTime>)`](crate::output::UpdateSourceLocationOutput::creation_time): <p>The timestamp that indicates when the source location was created.</p>
    ///   - [`default_segment_delivery_configuration(Option<DefaultSegmentDeliveryConfiguration>)`](crate::output::UpdateSourceLocationOutput::default_segment_delivery_configuration): <p>The optional configuration for the host server that serves segments.</p>
    ///   - [`http_configuration(Option<HttpConfiguration>)`](crate::output::UpdateSourceLocationOutput::http_configuration): <p>The HTTP configuration for the source location.</p>
    ///   - [`last_modified_time(Option<DateTime>)`](crate::output::UpdateSourceLocationOutput::last_modified_time): <p>The timestamp that indicates when the source location was last modified.</p>
    ///   - [`segment_delivery_configurations(Option<Vec<SegmentDeliveryConfiguration>>)`](crate::output::UpdateSourceLocationOutput::segment_delivery_configurations): <p>The segment delivery configurations for the source location. For information about MediaTailor configurations, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/configurations.html">Working with configurations in AWS Elemental MediaTailor</a>.</p>
    ///   - [`source_location_name(Option<String>)`](crate::output::UpdateSourceLocationOutput::source_location_name): <p>The name of the source location.</p>
    ///   - [`tags(Option<HashMap<String, String>>)`](crate::output::UpdateSourceLocationOutput::tags): <p>The tags to assign to the source location. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</p>
    /// - On failure, responds with [`SdkError<UpdateSourceLocationError>`](crate::error::UpdateSourceLocationError)
    pub fn update_source_location(&self) -> fluent_builders::UpdateSourceLocation {
        fluent_builders::UpdateSourceLocation::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateVodSource`](crate::client::fluent_builders::UpdateVodSource) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`http_package_configurations(Vec<HttpPackageConfiguration>)`](crate::client::fluent_builders::UpdateVodSource::http_package_configurations) / [`set_http_package_configurations(Option<Vec<HttpPackageConfiguration>>)`](crate::client::fluent_builders::UpdateVodSource::set_http_package_configurations): <p>A list of HTTP package configurations for the VOD source on this account.</p>
    ///   - [`source_location_name(impl Into<String>)`](crate::client::fluent_builders::UpdateVodSource::source_location_name) / [`set_source_location_name(Option<String>)`](crate::client::fluent_builders::UpdateVodSource::set_source_location_name): <p>The name of the source location associated with this VOD Source.</p>
    ///   - [`vod_source_name(impl Into<String>)`](crate::client::fluent_builders::UpdateVodSource::vod_source_name) / [`set_vod_source_name(Option<String>)`](crate::client::fluent_builders::UpdateVodSource::set_vod_source_name): <p>The name of the VOD source.</p>
    /// - On success, responds with [`UpdateVodSourceOutput`](crate::output::UpdateVodSourceOutput) with field(s):
    ///   - [`arn(Option<String>)`](crate::output::UpdateVodSourceOutput::arn): <p>The Amazon Resource Name (ARN) associated with the VOD source.</p>
    ///   - [`creation_time(Option<DateTime>)`](crate::output::UpdateVodSourceOutput::creation_time): <p>The timestamp that indicates when the VOD source was created.</p>
    ///   - [`http_package_configurations(Option<Vec<HttpPackageConfiguration>>)`](crate::output::UpdateVodSourceOutput::http_package_configurations): <p>A list of HTTP package configurations for the VOD source on this account.</p>
    ///   - [`last_modified_time(Option<DateTime>)`](crate::output::UpdateVodSourceOutput::last_modified_time): <p>The timestamp that indicates when the VOD source was last modified.</p>
    ///   - [`source_location_name(Option<String>)`](crate::output::UpdateVodSourceOutput::source_location_name): <p>The name of the source location associated with the VOD source.</p>
    ///   - [`tags(Option<HashMap<String, String>>)`](crate::output::UpdateVodSourceOutput::tags): <p>The tags to assign to the VOD source. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</p>
    ///   - [`vod_source_name(Option<String>)`](crate::output::UpdateVodSourceOutput::vod_source_name): <p>The name of the VOD source.</p>
    /// - On failure, responds with [`SdkError<UpdateVodSourceError>`](crate::error::UpdateVodSourceError)
    pub fn update_vod_source(&self) -> fluent_builders::UpdateVodSource {
        fluent_builders::UpdateVodSource::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 `ConfigureLogsForPlaybackConfiguration`.
    ///
    /// <p>Amazon CloudWatch log settings for a playback configuration.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ConfigureLogsForPlaybackConfiguration {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::configure_logs_for_playback_configuration_input::Builder,
    }
    impl ConfigureLogsForPlaybackConfiguration {
        /// Creates a new `ConfigureLogsForPlaybackConfiguration`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ConfigureLogsForPlaybackConfiguration,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<
                crate::error::ConfigureLogsForPlaybackConfigurationError,
            >,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::ConfigureLogsForPlaybackConfigurationOutput,
            aws_smithy_http::result::SdkError<
                crate::error::ConfigureLogsForPlaybackConfigurationError,
            >,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The percentage of session logs that MediaTailor sends to your Cloudwatch Logs account. For example, if your playback configuration has 1000 sessions and percentEnabled is set to <code>60</code>, MediaTailor sends logs for 600 of the sessions to CloudWatch Logs. MediaTailor decides at random which of the playback configuration sessions to send logs for. If you want to view logs for a specific session, you can use the <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/debug-log-mode.html">debug log mode</a>.</p>
        /// <p>Valid values: <code>0</code> - <code>100</code> </p>
        pub fn percent_enabled(mut self, input: i32) -> Self {
            self.inner = self.inner.percent_enabled(input);
            self
        }
        /// <p>The percentage of session logs that MediaTailor sends to your Cloudwatch Logs account. For example, if your playback configuration has 1000 sessions and percentEnabled is set to <code>60</code>, MediaTailor sends logs for 600 of the sessions to CloudWatch Logs. MediaTailor decides at random which of the playback configuration sessions to send logs for. If you want to view logs for a specific session, you can use the <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/debug-log-mode.html">debug log mode</a>.</p>
        /// <p>Valid values: <code>0</code> - <code>100</code> </p>
        pub fn set_percent_enabled(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_percent_enabled(input);
            self
        }
        /// <p>The name of the playback configuration.</p>
        pub fn playback_configuration_name(
            mut self,
            input: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.playback_configuration_name(input.into());
            self
        }
        /// <p>The name of the playback configuration.</p>
        pub fn set_playback_configuration_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_playback_configuration_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateChannel`.
    ///
    /// <p>Creates a channel. For information about MediaTailor channels, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/channel-assembly-channels.html">Working with channels</a> in the <i>MediaTailor User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateChannel {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_channel_input::Builder,
    }
    impl CreateChannel {
        /// Creates a new `CreateChannel`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::CreateChannel,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateChannelError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::CreateChannelOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateChannelError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the channel.</p>
        pub fn channel_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.channel_name(input.into());
            self
        }
        /// <p>The name of the channel.</p>
        pub fn set_channel_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_channel_name(input);
            self
        }
        /// <p>The slate used to fill gaps between programs in the schedule. You must configure filler slate if your channel uses the <code>LINEAR</code> <code>PlaybackMode</code>. MediaTailor doesn't support filler slate for channels using the <code>LOOP</code> <code>PlaybackMode</code>.</p>
        pub fn filler_slate(mut self, input: crate::model::SlateSource) -> Self {
            self.inner = self.inner.filler_slate(input);
            self
        }
        /// <p>The slate used to fill gaps between programs in the schedule. You must configure filler slate if your channel uses the <code>LINEAR</code> <code>PlaybackMode</code>. MediaTailor doesn't support filler slate for channels using the <code>LOOP</code> <code>PlaybackMode</code>.</p>
        pub fn set_filler_slate(
            mut self,
            input: std::option::Option<crate::model::SlateSource>,
        ) -> Self {
            self.inner = self.inner.set_filler_slate(input);
            self
        }
        /// Appends an item to `Outputs`.
        ///
        /// To override the contents of this collection use [`set_outputs`](Self::set_outputs).
        ///
        /// <p>The channel's output properties.</p>
        pub fn outputs(mut self, input: crate::model::RequestOutputItem) -> Self {
            self.inner = self.inner.outputs(input);
            self
        }
        /// <p>The channel's output properties.</p>
        pub fn set_outputs(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::RequestOutputItem>>,
        ) -> Self {
            self.inner = self.inner.set_outputs(input);
            self
        }
        /// <p>The type of playback mode to use for this channel.</p>
        /// <p> <code>LINEAR</code> - The programs in the schedule play once back-to-back in the schedule.</p>
        /// <p> <code>LOOP</code> - The programs in the schedule play back-to-back in an endless loop. When the last program in the schedule stops playing, playback loops back to the first program in the schedule.</p>
        pub fn playback_mode(mut self, input: crate::model::PlaybackMode) -> Self {
            self.inner = self.inner.playback_mode(input);
            self
        }
        /// <p>The type of playback mode to use for this channel.</p>
        /// <p> <code>LINEAR</code> - The programs in the schedule play once back-to-back in the schedule.</p>
        /// <p> <code>LOOP</code> - The programs in the schedule play back-to-back in an endless loop. When the last program in the schedule stops playing, playback loops back to the first program in the schedule.</p>
        pub fn set_playback_mode(
            mut self,
            input: std::option::Option<crate::model::PlaybackMode>,
        ) -> Self {
            self.inner = self.inner.set_playback_mode(input);
            self
        }
        /// Adds a key-value pair to `Tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The tags to assign to the channel. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</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>The tags to assign to the channel. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</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
        }
        /// <p>The tier of the channel.</p>
        pub fn tier(mut self, input: crate::model::Tier) -> Self {
            self.inner = self.inner.tier(input);
            self
        }
        /// <p>The tier of the channel.</p>
        pub fn set_tier(mut self, input: std::option::Option<crate::model::Tier>) -> Self {
            self.inner = self.inner.set_tier(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateLiveSource`.
    ///
    /// <p>The live source configuration.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateLiveSource {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_live_source_input::Builder,
    }
    impl CreateLiveSource {
        /// Creates a new `CreateLiveSource`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::CreateLiveSource,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateLiveSourceError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::CreateLiveSourceOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateLiveSourceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Appends an item to `HttpPackageConfigurations`.
        ///
        /// To override the contents of this collection use [`set_http_package_configurations`](Self::set_http_package_configurations).
        ///
        /// <p>A list of HTTP package configuration parameters for this live source.</p>
        pub fn http_package_configurations(
            mut self,
            input: crate::model::HttpPackageConfiguration,
        ) -> Self {
            self.inner = self.inner.http_package_configurations(input);
            self
        }
        /// <p>A list of HTTP package configuration parameters for this live source.</p>
        pub fn set_http_package_configurations(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::HttpPackageConfiguration>>,
        ) -> Self {
            self.inner = self.inner.set_http_package_configurations(input);
            self
        }
        /// <p>The name of the live source.</p>
        pub fn live_source_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.live_source_name(input.into());
            self
        }
        /// <p>The name of the live source.</p>
        pub fn set_live_source_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_live_source_name(input);
            self
        }
        /// <p>The name of the source location.</p>
        pub fn source_location_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.source_location_name(input.into());
            self
        }
        /// <p>The name of the source location.</p>
        pub fn set_source_location_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_source_location_name(input);
            self
        }
        /// Adds a key-value pair to `Tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The tags to assign to the live source. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</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>The tags to assign to the live source. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</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 `CreatePrefetchSchedule`.
    ///
    /// <p>Creates a prefetch schedule for a playback configuration. A prefetch schedule allows you to tell MediaTailor to fetch and prepare certain ads before an ad break happens. For more information about ad prefetching, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/prefetching-ads.html">Using ad prefetching</a> in the <i>MediaTailor User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreatePrefetchSchedule {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_prefetch_schedule_input::Builder,
    }
    impl CreatePrefetchSchedule {
        /// Creates a new `CreatePrefetchSchedule`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::CreatePrefetchSchedule,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreatePrefetchScheduleError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::CreatePrefetchScheduleOutput,
            aws_smithy_http::result::SdkError<crate::error::CreatePrefetchScheduleError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The configuration settings for MediaTailor's <i>consumption</i> of the prefetched ads from the ad decision server. Each consumption configuration contains an end time and an optional start time that define the <i>consumption window</i>. Prefetch schedules automatically expire no earlier than seven days after the end time.</p>
        pub fn consumption(mut self, input: crate::model::PrefetchConsumption) -> Self {
            self.inner = self.inner.consumption(input);
            self
        }
        /// <p>The configuration settings for MediaTailor's <i>consumption</i> of the prefetched ads from the ad decision server. Each consumption configuration contains an end time and an optional start time that define the <i>consumption window</i>. Prefetch schedules automatically expire no earlier than seven days after the end time.</p>
        pub fn set_consumption(
            mut self,
            input: std::option::Option<crate::model::PrefetchConsumption>,
        ) -> Self {
            self.inner = self.inner.set_consumption(input);
            self
        }
        /// <p>The name to assign to the schedule request.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name to assign to the schedule request.</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 name to assign to the playback configuration.</p>
        pub fn playback_configuration_name(
            mut self,
            input: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.playback_configuration_name(input.into());
            self
        }
        /// <p>The name to assign to the playback configuration.</p>
        pub fn set_playback_configuration_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_playback_configuration_name(input);
            self
        }
        /// <p>The configuration settings for retrieval of prefetched ads from the ad decision server. Only one set of prefetched ads will be retrieved and subsequently consumed for each ad break.</p>
        pub fn retrieval(mut self, input: crate::model::PrefetchRetrieval) -> Self {
            self.inner = self.inner.retrieval(input);
            self
        }
        /// <p>The configuration settings for retrieval of prefetched ads from the ad decision server. Only one set of prefetched ads will be retrieved and subsequently consumed for each ad break.</p>
        pub fn set_retrieval(
            mut self,
            input: std::option::Option<crate::model::PrefetchRetrieval>,
        ) -> Self {
            self.inner = self.inner.set_retrieval(input);
            self
        }
        /// <p>An optional stream identifier that MediaTailor uses to prefetch ads for multiple streams that use the same playback configuration. If <code>StreamId</code> is specified, MediaTailor returns all of the prefetch schedules with an exact match on <code>StreamId</code>. If not specified, MediaTailor returns all of the prefetch schedules for the playback configuration, regardless of <code>StreamId</code>.</p>
        pub fn stream_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.stream_id(input.into());
            self
        }
        /// <p>An optional stream identifier that MediaTailor uses to prefetch ads for multiple streams that use the same playback configuration. If <code>StreamId</code> is specified, MediaTailor returns all of the prefetch schedules with an exact match on <code>StreamId</code>. If not specified, MediaTailor returns all of the prefetch schedules for the playback configuration, regardless of <code>StreamId</code>.</p>
        pub fn set_stream_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_stream_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateProgram`.
    ///
    /// <p>Creates a program within a channel. For information about programs, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/channel-assembly-programs.html">Working with programs</a> in the <i>MediaTailor User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateProgram {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_program_input::Builder,
    }
    impl CreateProgram {
        /// Creates a new `CreateProgram`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::CreateProgram,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateProgramError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::CreateProgramOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateProgramError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Appends an item to `AdBreaks`.
        ///
        /// To override the contents of this collection use [`set_ad_breaks`](Self::set_ad_breaks).
        ///
        /// <p>The ad break configuration settings.</p>
        pub fn ad_breaks(mut self, input: crate::model::AdBreak) -> Self {
            self.inner = self.inner.ad_breaks(input);
            self
        }
        /// <p>The ad break configuration settings.</p>
        pub fn set_ad_breaks(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::AdBreak>>,
        ) -> Self {
            self.inner = self.inner.set_ad_breaks(input);
            self
        }
        /// <p>The name of the channel for this Program.</p>
        pub fn channel_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.channel_name(input.into());
            self
        }
        /// <p>The name of the channel for this Program.</p>
        pub fn set_channel_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_channel_name(input);
            self
        }
        /// <p>The name of the LiveSource for this Program.</p>
        pub fn live_source_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.live_source_name(input.into());
            self
        }
        /// <p>The name of the LiveSource for this Program.</p>
        pub fn set_live_source_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_live_source_name(input);
            self
        }
        /// <p>The name of the Program.</p>
        pub fn program_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.program_name(input.into());
            self
        }
        /// <p>The name of the Program.</p>
        pub fn set_program_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_program_name(input);
            self
        }
        /// <p>The schedule configuration settings.</p>
        pub fn schedule_configuration(
            mut self,
            input: crate::model::ScheduleConfiguration,
        ) -> Self {
            self.inner = self.inner.schedule_configuration(input);
            self
        }
        /// <p>The schedule configuration settings.</p>
        pub fn set_schedule_configuration(
            mut self,
            input: std::option::Option<crate::model::ScheduleConfiguration>,
        ) -> Self {
            self.inner = self.inner.set_schedule_configuration(input);
            self
        }
        /// <p>The name of the source location.</p>
        pub fn source_location_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.source_location_name(input.into());
            self
        }
        /// <p>The name of the source location.</p>
        pub fn set_source_location_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_source_location_name(input);
            self
        }
        /// <p>The name that's used to refer to a VOD source.</p>
        pub fn vod_source_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.vod_source_name(input.into());
            self
        }
        /// <p>The name that's used to refer to a VOD source.</p>
        pub fn set_vod_source_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_vod_source_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateSourceLocation`.
    ///
    /// <p>Creates a source location. A source location is a container for sources. For more information about source locations, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/channel-assembly-source-locations.html">Working with source locations</a> in the <i>MediaTailor User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateSourceLocation {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_source_location_input::Builder,
    }
    impl CreateSourceLocation {
        /// Creates a new `CreateSourceLocation`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::CreateSourceLocation,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateSourceLocationError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::CreateSourceLocationOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateSourceLocationError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>Access configuration parameters. Configures the type of authentication used to access content from your source location.</p>
        pub fn access_configuration(mut self, input: crate::model::AccessConfiguration) -> Self {
            self.inner = self.inner.access_configuration(input);
            self
        }
        /// <p>Access configuration parameters. Configures the type of authentication used to access content from your source location.</p>
        pub fn set_access_configuration(
            mut self,
            input: std::option::Option<crate::model::AccessConfiguration>,
        ) -> Self {
            self.inner = self.inner.set_access_configuration(input);
            self
        }
        /// <p>The optional configuration for the server that serves segments.</p>
        pub fn default_segment_delivery_configuration(
            mut self,
            input: crate::model::DefaultSegmentDeliveryConfiguration,
        ) -> Self {
            self.inner = self.inner.default_segment_delivery_configuration(input);
            self
        }
        /// <p>The optional configuration for the server that serves segments.</p>
        pub fn set_default_segment_delivery_configuration(
            mut self,
            input: std::option::Option<crate::model::DefaultSegmentDeliveryConfiguration>,
        ) -> Self {
            self.inner = self.inner.set_default_segment_delivery_configuration(input);
            self
        }
        /// <p>The source's HTTP package configurations.</p>
        pub fn http_configuration(mut self, input: crate::model::HttpConfiguration) -> Self {
            self.inner = self.inner.http_configuration(input);
            self
        }
        /// <p>The source's HTTP package configurations.</p>
        pub fn set_http_configuration(
            mut self,
            input: std::option::Option<crate::model::HttpConfiguration>,
        ) -> Self {
            self.inner = self.inner.set_http_configuration(input);
            self
        }
        /// Appends an item to `SegmentDeliveryConfigurations`.
        ///
        /// To override the contents of this collection use [`set_segment_delivery_configurations`](Self::set_segment_delivery_configurations).
        ///
        /// <p>A list of the segment delivery configurations associated with this resource.</p>
        pub fn segment_delivery_configurations(
            mut self,
            input: crate::model::SegmentDeliveryConfiguration,
        ) -> Self {
            self.inner = self.inner.segment_delivery_configurations(input);
            self
        }
        /// <p>A list of the segment delivery configurations associated with this resource.</p>
        pub fn set_segment_delivery_configurations(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::SegmentDeliveryConfiguration>>,
        ) -> Self {
            self.inner = self.inner.set_segment_delivery_configurations(input);
            self
        }
        /// <p>The name associated with the source location.</p>
        pub fn source_location_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.source_location_name(input.into());
            self
        }
        /// <p>The name associated with the source location.</p>
        pub fn set_source_location_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_source_location_name(input);
            self
        }
        /// Adds a key-value pair to `Tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The tags to assign to the source location. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</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>The tags to assign to the source location. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</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 `CreateVodSource`.
    ///
    /// <p>The VOD source configuration parameters.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateVodSource {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_vod_source_input::Builder,
    }
    impl CreateVodSource {
        /// Creates a new `CreateVodSource`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::CreateVodSource,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateVodSourceError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::CreateVodSourceOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateVodSourceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Appends an item to `HttpPackageConfigurations`.
        ///
        /// To override the contents of this collection use [`set_http_package_configurations`](Self::set_http_package_configurations).
        ///
        /// <p>A list of HTTP package configuration parameters for this VOD source.</p>
        pub fn http_package_configurations(
            mut self,
            input: crate::model::HttpPackageConfiguration,
        ) -> Self {
            self.inner = self.inner.http_package_configurations(input);
            self
        }
        /// <p>A list of HTTP package configuration parameters for this VOD source.</p>
        pub fn set_http_package_configurations(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::HttpPackageConfiguration>>,
        ) -> Self {
            self.inner = self.inner.set_http_package_configurations(input);
            self
        }
        /// <p>The name of the source location for this VOD source.</p>
        pub fn source_location_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.source_location_name(input.into());
            self
        }
        /// <p>The name of the source location for this VOD source.</p>
        pub fn set_source_location_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_source_location_name(input);
            self
        }
        /// Adds a key-value pair to `Tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The tags to assign to the VOD source. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</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>The tags to assign to the VOD source. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</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
        }
        /// <p>The name associated with the VOD source.&gt;</p>
        pub fn vod_source_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.vod_source_name(input.into());
            self
        }
        /// <p>The name associated with the VOD source.&gt;</p>
        pub fn set_vod_source_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_vod_source_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteChannel`.
    ///
    /// <p>Deletes a channel. For information about MediaTailor channels, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/channel-assembly-channels.html">Working with channels</a> in the <i>MediaTailor User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteChannel {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_channel_input::Builder,
    }
    impl DeleteChannel {
        /// Creates a new `DeleteChannel`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeleteChannel,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteChannelError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::DeleteChannelOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteChannelError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the channel.</p>
        pub fn channel_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.channel_name(input.into());
            self
        }
        /// <p>The name of the channel.</p>
        pub fn set_channel_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_channel_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteChannelPolicy`.
    ///
    /// <p>The channel policy to delete.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteChannelPolicy {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_channel_policy_input::Builder,
    }
    impl DeleteChannelPolicy {
        /// Creates a new `DeleteChannelPolicy`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeleteChannelPolicy,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteChannelPolicyError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::DeleteChannelPolicyOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteChannelPolicyError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the channel associated with this channel policy.</p>
        pub fn channel_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.channel_name(input.into());
            self
        }
        /// <p>The name of the channel associated with this channel policy.</p>
        pub fn set_channel_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_channel_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteLiveSource`.
    ///
    /// <p>The live source to delete.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteLiveSource {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_live_source_input::Builder,
    }
    impl DeleteLiveSource {
        /// Creates a new `DeleteLiveSource`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeleteLiveSource,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteLiveSourceError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::DeleteLiveSourceOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteLiveSourceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the live source.</p>
        pub fn live_source_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.live_source_name(input.into());
            self
        }
        /// <p>The name of the live source.</p>
        pub fn set_live_source_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_live_source_name(input);
            self
        }
        /// <p>The name of the source location associated with this Live Source.</p>
        pub fn source_location_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.source_location_name(input.into());
            self
        }
        /// <p>The name of the source location associated with this Live Source.</p>
        pub fn set_source_location_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_source_location_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeletePlaybackConfiguration`.
    ///
    /// <p>Deletes a playback configuration. For information about MediaTailor configurations, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/configurations.html">Working with configurations in AWS Elemental MediaTailor</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeletePlaybackConfiguration {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_playback_configuration_input::Builder,
    }
    impl DeletePlaybackConfiguration {
        /// Creates a new `DeletePlaybackConfiguration`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeletePlaybackConfiguration,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeletePlaybackConfigurationError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::DeletePlaybackConfigurationOutput,
            aws_smithy_http::result::SdkError<crate::error::DeletePlaybackConfigurationError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the playback configuration.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the playback configuration.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeletePrefetchSchedule`.
    ///
    /// <p>Deletes a prefetch schedule for a specific playback configuration. If you call <code>DeletePrefetchSchedule</code> on an expired prefetch schedule, MediaTailor returns an HTTP 404 status code. For more information about ad prefetching, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/prefetching-ads.html">Using ad prefetching</a> in the <i>MediaTailor User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeletePrefetchSchedule {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_prefetch_schedule_input::Builder,
    }
    impl DeletePrefetchSchedule {
        /// Creates a new `DeletePrefetchSchedule`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeletePrefetchSchedule,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeletePrefetchScheduleError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::DeletePrefetchScheduleOutput,
            aws_smithy_http::result::SdkError<crate::error::DeletePrefetchScheduleError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the prefetch schedule. If the action is successful, the service sends back an HTTP 204 response with an empty HTTP body.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the prefetch schedule. If the action is successful, the service sends back an HTTP 204 response with an empty HTTP body.</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 name of the playback configuration for this prefetch schedule.</p>
        pub fn playback_configuration_name(
            mut self,
            input: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.playback_configuration_name(input.into());
            self
        }
        /// <p>The name of the playback configuration for this prefetch schedule.</p>
        pub fn set_playback_configuration_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_playback_configuration_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteProgram`.
    ///
    /// <p>Deletes a program within a channel. For information about programs, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/channel-assembly-programs.html">Working with programs</a> in the <i>MediaTailor User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteProgram {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_program_input::Builder,
    }
    impl DeleteProgram {
        /// Creates a new `DeleteProgram`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeleteProgram,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteProgramError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::DeleteProgramOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteProgramError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the channel.</p>
        pub fn channel_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.channel_name(input.into());
            self
        }
        /// <p>The name of the channel.</p>
        pub fn set_channel_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_channel_name(input);
            self
        }
        /// <p>The name of the program.</p>
        pub fn program_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.program_name(input.into());
            self
        }
        /// <p>The name of the program.</p>
        pub fn set_program_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_program_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteSourceLocation`.
    ///
    /// <p>Deletes a source location. A source location is a container for sources. For more information about source locations, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/channel-assembly-source-locations.html">Working with source locations</a> in the <i>MediaTailor User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteSourceLocation {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_source_location_input::Builder,
    }
    impl DeleteSourceLocation {
        /// Creates a new `DeleteSourceLocation`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeleteSourceLocation,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteSourceLocationError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::DeleteSourceLocationOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteSourceLocationError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the source location.</p>
        pub fn source_location_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.source_location_name(input.into());
            self
        }
        /// <p>The name of the source location.</p>
        pub fn set_source_location_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_source_location_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteVodSource`.
    ///
    /// <p>The video on demand (VOD) source to delete.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteVodSource {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_vod_source_input::Builder,
    }
    impl DeleteVodSource {
        /// Creates a new `DeleteVodSource`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeleteVodSource,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteVodSourceError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::DeleteVodSourceOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteVodSourceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the source location associated with this VOD Source.</p>
        pub fn source_location_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.source_location_name(input.into());
            self
        }
        /// <p>The name of the source location associated with this VOD Source.</p>
        pub fn set_source_location_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_source_location_name(input);
            self
        }
        /// <p>The name of the VOD source.</p>
        pub fn vod_source_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.vod_source_name(input.into());
            self
        }
        /// <p>The name of the VOD source.</p>
        pub fn set_vod_source_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_vod_source_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeChannel`.
    ///
    /// <p>Describes a channel. For information about MediaTailor channels, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/channel-assembly-channels.html">Working with channels</a> in the <i>MediaTailor User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeChannel {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_channel_input::Builder,
    }
    impl DescribeChannel {
        /// Creates a new `DescribeChannel`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribeChannel,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeChannelError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::DescribeChannelOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeChannelError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the channel.</p>
        pub fn channel_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.channel_name(input.into());
            self
        }
        /// <p>The name of the channel.</p>
        pub fn set_channel_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_channel_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeLiveSource`.
    ///
    /// <p>The live source to describe.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeLiveSource {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_live_source_input::Builder,
    }
    impl DescribeLiveSource {
        /// Creates a new `DescribeLiveSource`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribeLiveSource,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeLiveSourceError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::DescribeLiveSourceOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeLiveSourceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the live source.</p>
        pub fn live_source_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.live_source_name(input.into());
            self
        }
        /// <p>The name of the live source.</p>
        pub fn set_live_source_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_live_source_name(input);
            self
        }
        /// <p>The name of the source location associated with this Live Source.</p>
        pub fn source_location_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.source_location_name(input.into());
            self
        }
        /// <p>The name of the source location associated with this Live Source.</p>
        pub fn set_source_location_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_source_location_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeProgram`.
    ///
    /// <p>Describes a program within a channel. For information about programs, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/channel-assembly-programs.html">Working with programs</a> in the <i>MediaTailor User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeProgram {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_program_input::Builder,
    }
    impl DescribeProgram {
        /// Creates a new `DescribeProgram`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribeProgram,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeProgramError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::DescribeProgramOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeProgramError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the channel associated with this Program.</p>
        pub fn channel_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.channel_name(input.into());
            self
        }
        /// <p>The name of the channel associated with this Program.</p>
        pub fn set_channel_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_channel_name(input);
            self
        }
        /// <p>The name of the program.</p>
        pub fn program_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.program_name(input.into());
            self
        }
        /// <p>The name of the program.</p>
        pub fn set_program_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_program_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeSourceLocation`.
    ///
    /// <p>Describes a source location. A source location is a container for sources. For more information about source locations, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/channel-assembly-source-locations.html">Working with source locations</a> in the <i>MediaTailor User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeSourceLocation {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_source_location_input::Builder,
    }
    impl DescribeSourceLocation {
        /// Creates a new `DescribeSourceLocation`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribeSourceLocation,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeSourceLocationError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::DescribeSourceLocationOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeSourceLocationError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the source location.</p>
        pub fn source_location_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.source_location_name(input.into());
            self
        }
        /// <p>The name of the source location.</p>
        pub fn set_source_location_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_source_location_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeVodSource`.
    ///
    /// <p>Provides details about a specific video on demand (VOD) source in a specific source location.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeVodSource {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_vod_source_input::Builder,
    }
    impl DescribeVodSource {
        /// Creates a new `DescribeVodSource`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribeVodSource,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeVodSourceError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::DescribeVodSourceOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeVodSourceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the source location associated with this VOD Source.</p>
        pub fn source_location_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.source_location_name(input.into());
            self
        }
        /// <p>The name of the source location associated with this VOD Source.</p>
        pub fn set_source_location_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_source_location_name(input);
            self
        }
        /// <p>The name of the VOD Source.</p>
        pub fn vod_source_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.vod_source_name(input.into());
            self
        }
        /// <p>The name of the VOD Source.</p>
        pub fn set_vod_source_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_vod_source_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetChannelPolicy`.
    ///
    /// <p>Returns the channel's IAM policy. IAM policies are used to control access to your channel.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetChannelPolicy {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_channel_policy_input::Builder,
    }
    impl GetChannelPolicy {
        /// Creates a new `GetChannelPolicy`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::GetChannelPolicy,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::GetChannelPolicyError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::GetChannelPolicyOutput,
            aws_smithy_http::result::SdkError<crate::error::GetChannelPolicyError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the channel associated with this Channel Policy.</p>
        pub fn channel_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.channel_name(input.into());
            self
        }
        /// <p>The name of the channel associated with this Channel Policy.</p>
        pub fn set_channel_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_channel_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetChannelSchedule`.
    ///
    /// <p>Retrieves information about your channel's schedule.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetChannelSchedule {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_channel_schedule_input::Builder,
    }
    impl GetChannelSchedule {
        /// Creates a new `GetChannelSchedule`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::GetChannelSchedule,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::GetChannelScheduleError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::GetChannelScheduleOutput,
            aws_smithy_http::result::SdkError<crate::error::GetChannelScheduleError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::GetChannelSchedulePaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::GetChannelSchedulePaginator {
            crate::paginator::GetChannelSchedulePaginator::new(self.handle, self.inner)
        }
        /// <p>The name of the channel associated with this Channel Schedule.</p>
        pub fn channel_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.channel_name(input.into());
            self
        }
        /// <p>The name of the channel associated with this Channel Schedule.</p>
        pub fn set_channel_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_channel_name(input);
            self
        }
        /// <p>The duration in minutes of the channel schedule.</p>
        pub fn duration_minutes(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.duration_minutes(input.into());
            self
        }
        /// <p>The duration in minutes of the channel schedule.</p>
        pub fn set_duration_minutes(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_duration_minutes(input);
            self
        }
        /// <p>The maximum number of channel schedules that you want MediaTailor to return in response to the current request. If there are more than <code>MaxResults</code> channel schedules, use the value of <code>NextToken</code> in the response to get the next 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 channel schedules that you want MediaTailor to return in response to the current request. If there are more than <code>MaxResults</code> channel schedules, use the value of <code>NextToken</code> in the response to get the next 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>(Optional) If the playback configuration has more than <code>MaxResults</code> channel schedules, use <code>NextToken</code> to get the second and subsequent pages of results.</p>
        /// <p>For the first <code>GetChannelScheduleRequest</code> request, omit this value.</p>
        /// <p>For the second and subsequent requests, get the value of <code>NextToken</code> from the previous response and specify that value for <code>NextToken</code> in the request.</p>
        /// <p>If the previous response didn't include a <code>NextToken</code> element, there are no more channel schedules to get.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>(Optional) If the playback configuration has more than <code>MaxResults</code> channel schedules, use <code>NextToken</code> to get the second and subsequent pages of results.</p>
        /// <p>For the first <code>GetChannelScheduleRequest</code> request, omit this value.</p>
        /// <p>For the second and subsequent requests, get the value of <code>NextToken</code> from the previous response and specify that value for <code>NextToken</code> in the request.</p>
        /// <p>If the previous response didn't include a <code>NextToken</code> element, there are no more channel schedules to get.</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 `GetPlaybackConfiguration`.
    ///
    /// <p>Retrieves a playback configuration. For information about MediaTailor configurations, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/configurations.html">Working with configurations in AWS Elemental MediaTailor</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetPlaybackConfiguration {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_playback_configuration_input::Builder,
    }
    impl GetPlaybackConfiguration {
        /// Creates a new `GetPlaybackConfiguration`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::GetPlaybackConfiguration,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::GetPlaybackConfigurationError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::GetPlaybackConfigurationOutput,
            aws_smithy_http::result::SdkError<crate::error::GetPlaybackConfigurationError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier for the playback configuration.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The identifier for the playback configuration.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetPrefetchSchedule`.
    ///
    /// <p>Retrieves a prefetch schedule for a playback configuration. A prefetch schedule allows you to tell MediaTailor to fetch and prepare certain ads before an ad break happens. For more information about ad prefetching, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/prefetching-ads.html">Using ad prefetching</a> in the <i>MediaTailor User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetPrefetchSchedule {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_prefetch_schedule_input::Builder,
    }
    impl GetPrefetchSchedule {
        /// Creates a new `GetPrefetchSchedule`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::GetPrefetchSchedule,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::GetPrefetchScheduleError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::GetPrefetchScheduleOutput,
            aws_smithy_http::result::SdkError<crate::error::GetPrefetchScheduleError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the prefetch schedule. The name must be unique among all prefetch schedules that are associated with the specified playback configuration.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the prefetch schedule. The name must be unique among all prefetch schedules that are associated with the specified playback configuration.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>Returns information about the prefetch schedule for a specific playback configuration. If you call <code>GetPrefetchSchedule</code> on an expired prefetch schedule, MediaTailor returns an HTTP 404 status code.</p>
        pub fn playback_configuration_name(
            mut self,
            input: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.playback_configuration_name(input.into());
            self
        }
        /// <p>Returns information about the prefetch schedule for a specific playback configuration. If you call <code>GetPrefetchSchedule</code> on an expired prefetch schedule, MediaTailor returns an HTTP 404 status code.</p>
        pub fn set_playback_configuration_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_playback_configuration_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListAlerts`.
    ///
    /// <p>Lists the alerts that are associated with a MediaTailor channel assembly resource.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListAlerts {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_alerts_input::Builder,
    }
    impl ListAlerts {
        /// Creates a new `ListAlerts`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListAlerts,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListAlertsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::ListAlertsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListAlertsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListAlertsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListAlertsPaginator {
            crate::paginator::ListAlertsPaginator::new(self.handle, self.inner)
        }
        /// <p>The maximum number of alerts that you want MediaTailor to return in response to the current request. If there are more than <code>MaxResults</code> alerts, use the value of <code>NextToken</code> in the response to get the next 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 alerts that you want MediaTailor to return in response to the current request. If there are more than <code>MaxResults</code> alerts, use the value of <code>NextToken</code> in the response to get the next 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>Pagination token returned by the list request when results exceed the maximum allowed. Use the token to fetch 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>Pagination token returned by the list request when results exceed the maximum allowed. Use the token to fetch 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
        }
        /// <p>The Amazon Resource Name (ARN) of the resource.</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.</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 `ListChannels`.
    ///
    /// <p>Retrieves information about the channels that are associated with the current AWS account.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListChannels {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_channels_input::Builder,
    }
    impl ListChannels {
        /// Creates a new `ListChannels`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListChannels,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListChannelsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::ListChannelsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListChannelsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListChannelsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListChannelsPaginator {
            crate::paginator::ListChannelsPaginator::new(self.handle, self.inner)
        }
        /// <p>The maximum number of channels that you want MediaTailor to return in response to the current request. If there are more than <code>MaxResults</code> channels, use the value of <code>NextToken</code> in the response to get the next 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 channels that you want MediaTailor to return in response to the current request. If there are more than <code>MaxResults</code> channels, use the value of <code>NextToken</code> in the response to get the next 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>Pagination token returned by the list request when results exceed the maximum allowed. Use the token to fetch 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>Pagination token returned by the list request when results exceed the maximum allowed. Use the token to fetch 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 `ListLiveSources`.
    ///
    /// <p>Lists the live sources contained in a source location. A source represents a piece of content.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListLiveSources {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_live_sources_input::Builder,
    }
    impl ListLiveSources {
        /// Creates a new `ListLiveSources`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListLiveSources,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListLiveSourcesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::ListLiveSourcesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListLiveSourcesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListLiveSourcesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListLiveSourcesPaginator {
            crate::paginator::ListLiveSourcesPaginator::new(self.handle, self.inner)
        }
        /// <p>The maximum number of live sources that you want MediaTailor to return in response to the current request. If there are more than <code>MaxResults</code> live sources, use the value of <code>NextToken</code> in the response to get the next 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 live sources that you want MediaTailor to return in response to the current request. If there are more than <code>MaxResults</code> live sources, use the value of <code>NextToken</code> in the response to get the next 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>Pagination token returned by the list request when results exceed the maximum allowed. Use the token to fetch 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>Pagination token returned by the list request when results exceed the maximum allowed. Use the token to fetch 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
        }
        /// <p>The name of the source location associated with this Live Sources list.</p>
        pub fn source_location_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.source_location_name(input.into());
            self
        }
        /// <p>The name of the source location associated with this Live Sources list.</p>
        pub fn set_source_location_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_source_location_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListPlaybackConfigurations`.
    ///
    /// <p>Retrieves existing playback configurations. For information about MediaTailor configurations, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/configurations.html">Working with Configurations in AWS Elemental MediaTailor</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListPlaybackConfigurations {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_playback_configurations_input::Builder,
    }
    impl ListPlaybackConfigurations {
        /// Creates a new `ListPlaybackConfigurations`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListPlaybackConfigurations,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListPlaybackConfigurationsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::ListPlaybackConfigurationsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListPlaybackConfigurationsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListPlaybackConfigurationsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListPlaybackConfigurationsPaginator {
            crate::paginator::ListPlaybackConfigurationsPaginator::new(self.handle, self.inner)
        }
        /// <p>The maximum number of playback configurations that you want MediaTailor to return in response to the current request. If there are more than <code>MaxResults</code> playback configurations, use the value of <code>NextToken</code> in the response to get the next 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 playback configurations that you want MediaTailor to return in response to the current request. If there are more than <code>MaxResults</code> playback configurations, use the value of <code>NextToken</code> in the response to get the next 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>Pagination token returned by the list request when results exceed the maximum allowed. Use the token to fetch 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>Pagination token returned by the list request when results exceed the maximum allowed. Use the token to fetch 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 `ListPrefetchSchedules`.
    ///
    /// <p>Lists the prefetch schedules for a playback configuration.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListPrefetchSchedules {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_prefetch_schedules_input::Builder,
    }
    impl ListPrefetchSchedules {
        /// Creates a new `ListPrefetchSchedules`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListPrefetchSchedules,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListPrefetchSchedulesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::ListPrefetchSchedulesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListPrefetchSchedulesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListPrefetchSchedulesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListPrefetchSchedulesPaginator {
            crate::paginator::ListPrefetchSchedulesPaginator::new(self.handle, self.inner)
        }
        /// <p>The maximum number of prefetch schedules that you want MediaTailor to return in response to the current request. If there are more than <code>MaxResults</code> prefetch schedules, use the value of <code>NextToken</code> in the response to get the next 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 prefetch schedules that you want MediaTailor to return in response to the current request. If there are more than <code>MaxResults</code> prefetch schedules, use the value of <code>NextToken</code> in the response to get the next 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>(Optional) If the playback configuration has more than <code>MaxResults</code> prefetch schedules, use <code>NextToken</code> to get the second and subsequent pages of results.</p>
        /// <p> For the first <code>ListPrefetchSchedulesRequest</code> request, omit this value.</p>
        /// <p> For the second and subsequent requests, get the value of <code>NextToken</code> from the previous response and specify that value for <code>NextToken</code> in the request.</p>
        /// <p> If the previous response didn't include a <code>NextToken</code> element, there are no more prefetch schedules to get.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>(Optional) If the playback configuration has more than <code>MaxResults</code> prefetch schedules, use <code>NextToken</code> to get the second and subsequent pages of results.</p>
        /// <p> For the first <code>ListPrefetchSchedulesRequest</code> request, omit this value.</p>
        /// <p> For the second and subsequent requests, get the value of <code>NextToken</code> from the previous response and specify that value for <code>NextToken</code> in the request.</p>
        /// <p> If the previous response didn't include a <code>NextToken</code> element, there are no more prefetch schedules to get.</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
        }
        /// <p>Retrieves the prefetch schedule(s) for a specific playback configuration.</p>
        pub fn playback_configuration_name(
            mut self,
            input: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.playback_configuration_name(input.into());
            self
        }
        /// <p>Retrieves the prefetch schedule(s) for a specific playback configuration.</p>
        pub fn set_playback_configuration_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_playback_configuration_name(input);
            self
        }
        /// <p>An optional filtering parameter whereby MediaTailor filters the prefetch schedules to include only specific streams.</p>
        pub fn stream_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.stream_id(input.into());
            self
        }
        /// <p>An optional filtering parameter whereby MediaTailor filters the prefetch schedules to include only specific streams.</p>
        pub fn set_stream_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_stream_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListSourceLocations`.
    ///
    /// <p>Lists the source locations for a channel. A source location defines the host server URL, and contains a list of sources.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListSourceLocations {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_source_locations_input::Builder,
    }
    impl ListSourceLocations {
        /// Creates a new `ListSourceLocations`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListSourceLocations,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListSourceLocationsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::ListSourceLocationsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListSourceLocationsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListSourceLocationsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListSourceLocationsPaginator {
            crate::paginator::ListSourceLocationsPaginator::new(self.handle, self.inner)
        }
        /// <p> The maximum number of source locations that you want MediaTailor to return in response to the current request. If there are more than <code>MaxResults</code> source locations, use the value of <code>NextToken</code> in the response to get the next 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 source locations that you want MediaTailor to return in response to the current request. If there are more than <code>MaxResults</code> source locations, use the value of <code>NextToken</code> in the response to get the next 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>Pagination token returned by the list request when results exceed the maximum allowed. Use the token to fetch 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>Pagination token returned by the list request when results exceed the maximum allowed. Use the token to fetch 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>A list of tags that are associated with this resource. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</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(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListTagsForResource,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListTagsForResourceError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) associated with this resource.</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) associated with this resource.</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 `ListVodSources`.
    ///
    /// <p>Lists the VOD sources contained in a source location. A source represents a piece of content.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListVodSources {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_vod_sources_input::Builder,
    }
    impl ListVodSources {
        /// Creates a new `ListVodSources`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListVodSources,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListVodSourcesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::ListVodSourcesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListVodSourcesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListVodSourcesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListVodSourcesPaginator {
            crate::paginator::ListVodSourcesPaginator::new(self.handle, self.inner)
        }
        /// <p> The maximum number of VOD sources that you want MediaTailor to return in response to the current request. If there are more than <code>MaxResults</code> VOD sources, use the value of <code>NextToken</code> in the response to get the next 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 VOD sources that you want MediaTailor to return in response to the current request. If there are more than <code>MaxResults</code> VOD sources, use the value of <code>NextToken</code> in the response to get the next 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>Pagination token returned by the list request when results exceed the maximum allowed. Use the token to fetch 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>Pagination token returned by the list request when results exceed the maximum allowed. Use the token to fetch 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
        }
        /// <p>The name of the source location associated with this VOD Source list.</p>
        pub fn source_location_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.source_location_name(input.into());
            self
        }
        /// <p>The name of the source location associated with this VOD Source list.</p>
        pub fn set_source_location_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_source_location_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `PutChannelPolicy`.
    ///
    /// <p>Creates an IAM policy for the channel. IAM policies are used to control access to your channel.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct PutChannelPolicy {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::put_channel_policy_input::Builder,
    }
    impl PutChannelPolicy {
        /// Creates a new `PutChannelPolicy`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::PutChannelPolicy,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::PutChannelPolicyError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::PutChannelPolicyOutput,
            aws_smithy_http::result::SdkError<crate::error::PutChannelPolicyError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The channel name associated with this Channel Policy.</p>
        pub fn channel_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.channel_name(input.into());
            self
        }
        /// <p>The channel name associated with this Channel Policy.</p>
        pub fn set_channel_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_channel_name(input);
            self
        }
        /// <p>Adds an IAM role that determines the permissions of your channel.</p>
        pub fn policy(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.policy(input.into());
            self
        }
        /// <p>Adds an IAM role that determines the permissions of your channel.</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 `PutPlaybackConfiguration`.
    ///
    /// <p>Creates a playback configuration. For information about MediaTailor configurations, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/configurations.html">Working with configurations in AWS Elemental MediaTailor</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct PutPlaybackConfiguration {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::put_playback_configuration_input::Builder,
    }
    impl PutPlaybackConfiguration {
        /// Creates a new `PutPlaybackConfiguration`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::PutPlaybackConfiguration,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::PutPlaybackConfigurationError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::PutPlaybackConfigurationOutput,
            aws_smithy_http::result::SdkError<crate::error::PutPlaybackConfigurationError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The URL for the ad decision server (ADS). This includes the specification of static parameters and placeholders for dynamic parameters. AWS Elemental MediaTailor substitutes player-specific and session-specific parameters as needed when calling the ADS. Alternately, for testing you can provide a static VAST URL. The maximum length is 25,000 characters.</p>
        pub fn ad_decision_server_url(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.ad_decision_server_url(input.into());
            self
        }
        /// <p>The URL for the ad decision server (ADS). This includes the specification of static parameters and placeholders for dynamic parameters. AWS Elemental MediaTailor substitutes player-specific and session-specific parameters as needed when calling the ADS. Alternately, for testing you can provide a static VAST URL. The maximum length is 25,000 characters.</p>
        pub fn set_ad_decision_server_url(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_ad_decision_server_url(input);
            self
        }
        /// <p>The configuration for avail suppression, also known as ad suppression. For more information about ad suppression, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/ad-behavior.html">Ad Suppression</a>.</p>
        pub fn avail_suppression(mut self, input: crate::model::AvailSuppression) -> Self {
            self.inner = self.inner.avail_suppression(input);
            self
        }
        /// <p>The configuration for avail suppression, also known as ad suppression. For more information about ad suppression, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/ad-behavior.html">Ad Suppression</a>.</p>
        pub fn set_avail_suppression(
            mut self,
            input: std::option::Option<crate::model::AvailSuppression>,
        ) -> Self {
            self.inner = self.inner.set_avail_suppression(input);
            self
        }
        /// <p>The configuration for bumpers. Bumpers are short audio or video clips that play at the start or before the end of an ad break. To learn more about bumpers, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/bumpers.html">Bumpers</a>.</p>
        pub fn bumper(mut self, input: crate::model::Bumper) -> Self {
            self.inner = self.inner.bumper(input);
            self
        }
        /// <p>The configuration for bumpers. Bumpers are short audio or video clips that play at the start or before the end of an ad break. To learn more about bumpers, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/bumpers.html">Bumpers</a>.</p>
        pub fn set_bumper(mut self, input: std::option::Option<crate::model::Bumper>) -> Self {
            self.inner = self.inner.set_bumper(input);
            self
        }
        /// <p>The configuration for using a content delivery network (CDN), like Amazon CloudFront, for content and ad segment management.</p>
        pub fn cdn_configuration(mut self, input: crate::model::CdnConfiguration) -> Self {
            self.inner = self.inner.cdn_configuration(input);
            self
        }
        /// <p>The configuration for using a content delivery network (CDN), like Amazon CloudFront, for content and ad segment management.</p>
        pub fn set_cdn_configuration(
            mut self,
            input: std::option::Option<crate::model::CdnConfiguration>,
        ) -> Self {
            self.inner = self.inner.set_cdn_configuration(input);
            self
        }
        /// Adds a key-value pair to `ConfigurationAliases`.
        ///
        /// To override the contents of this collection use [`set_configuration_aliases`](Self::set_configuration_aliases).
        ///
        /// <p>The player parameters and aliases used as dynamic variables during session initialization. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/variables-domain.html">Domain Variables</a>.</p>
        pub fn configuration_aliases(
            mut self,
            k: impl Into<std::string::String>,
            v: std::collections::HashMap<std::string::String, std::string::String>,
        ) -> Self {
            self.inner = self.inner.configuration_aliases(k.into(), v);
            self
        }
        /// <p>The player parameters and aliases used as dynamic variables during session initialization. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/variables-domain.html">Domain Variables</a>.</p>
        pub fn set_configuration_aliases(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<
                    std::string::String,
                    std::collections::HashMap<std::string::String, std::string::String>,
                >,
            >,
        ) -> Self {
            self.inner = self.inner.set_configuration_aliases(input);
            self
        }
        /// <p>The configuration for DASH content.</p>
        pub fn dash_configuration(mut self, input: crate::model::DashConfigurationForPut) -> Self {
            self.inner = self.inner.dash_configuration(input);
            self
        }
        /// <p>The configuration for DASH content.</p>
        pub fn set_dash_configuration(
            mut self,
            input: std::option::Option<crate::model::DashConfigurationForPut>,
        ) -> Self {
            self.inner = self.inner.set_dash_configuration(input);
            self
        }
        /// <p>The configuration for pre-roll ad insertion.</p>
        pub fn live_pre_roll_configuration(
            mut self,
            input: crate::model::LivePreRollConfiguration,
        ) -> Self {
            self.inner = self.inner.live_pre_roll_configuration(input);
            self
        }
        /// <p>The configuration for pre-roll ad insertion.</p>
        pub fn set_live_pre_roll_configuration(
            mut self,
            input: std::option::Option<crate::model::LivePreRollConfiguration>,
        ) -> Self {
            self.inner = self.inner.set_live_pre_roll_configuration(input);
            self
        }
        /// <p>The configuration for manifest processing rules. Manifest processing rules enable customization of the personalized manifests created by MediaTailor.</p>
        pub fn manifest_processing_rules(
            mut self,
            input: crate::model::ManifestProcessingRules,
        ) -> Self {
            self.inner = self.inner.manifest_processing_rules(input);
            self
        }
        /// <p>The configuration for manifest processing rules. Manifest processing rules enable customization of the personalized manifests created by MediaTailor.</p>
        pub fn set_manifest_processing_rules(
            mut self,
            input: std::option::Option<crate::model::ManifestProcessingRules>,
        ) -> Self {
            self.inner = self.inner.set_manifest_processing_rules(input);
            self
        }
        /// <p>The identifier for the playback configuration.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The identifier for the playback configuration.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>Defines the maximum duration of underfilled ad time (in seconds) allowed in an ad break. If the duration of underfilled ad time exceeds the personalization threshold, then the personalization of the ad break is abandoned and the underlying content is shown. This feature applies to <i>ad replacement</i> in live and VOD streams, rather than ad insertion, because it relies on an underlying content stream. For more information about ad break behavior, including ad replacement and insertion, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/ad-behavior.html">Ad Behavior in AWS Elemental MediaTailor</a>.</p>
        pub fn personalization_threshold_seconds(mut self, input: i32) -> Self {
            self.inner = self.inner.personalization_threshold_seconds(input);
            self
        }
        /// <p>Defines the maximum duration of underfilled ad time (in seconds) allowed in an ad break. If the duration of underfilled ad time exceeds the personalization threshold, then the personalization of the ad break is abandoned and the underlying content is shown. This feature applies to <i>ad replacement</i> in live and VOD streams, rather than ad insertion, because it relies on an underlying content stream. For more information about ad break behavior, including ad replacement and insertion, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/ad-behavior.html">Ad Behavior in AWS Elemental MediaTailor</a>.</p>
        pub fn set_personalization_threshold_seconds(
            mut self,
            input: std::option::Option<i32>,
        ) -> Self {
            self.inner = self.inner.set_personalization_threshold_seconds(input);
            self
        }
        /// <p>The URL for a high-quality video asset to transcode and use to fill in time that's not used by ads. AWS Elemental MediaTailor shows the slate to fill in gaps in media content. Configuring the slate is optional for non-VPAID configurations. For VPAID, the slate is required because MediaTailor provides it in the slots that are designated for dynamic ad content. The slate must be a high-quality asset that contains both audio and video.</p>
        pub fn slate_ad_url(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.slate_ad_url(input.into());
            self
        }
        /// <p>The URL for a high-quality video asset to transcode and use to fill in time that's not used by ads. AWS Elemental MediaTailor shows the slate to fill in gaps in media content. Configuring the slate is optional for non-VPAID configurations. For VPAID, the slate is required because MediaTailor provides it in the slots that are designated for dynamic ad content. The slate must be a high-quality asset that contains both audio and video.</p>
        pub fn set_slate_ad_url(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_slate_ad_url(input);
            self
        }
        /// Adds a key-value pair to `Tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The tags to assign to the playback configuration. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</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>The tags to assign to the playback configuration. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</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
        }
        /// <p>The name that is used to associate this playback configuration with a custom transcode profile. This overrides the dynamic transcoding defaults of MediaTailor. Use this only if you have already set up custom profiles with the help of AWS Support.</p>
        pub fn transcode_profile_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.transcode_profile_name(input.into());
            self
        }
        /// <p>The name that is used to associate this playback configuration with a custom transcode profile. This overrides the dynamic transcoding defaults of MediaTailor. Use this only if you have already set up custom profiles with the help of AWS Support.</p>
        pub fn set_transcode_profile_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_transcode_profile_name(input);
            self
        }
        /// <p>The URL prefix for the parent manifest for the stream, minus the asset ID. The maximum length is 512 characters.</p>
        pub fn video_content_source_url(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.video_content_source_url(input.into());
            self
        }
        /// <p>The URL prefix for the parent manifest for the stream, minus the asset ID. The maximum length is 512 characters.</p>
        pub fn set_video_content_source_url(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_video_content_source_url(input);
            self
        }
    }
    /// Fluent builder constructing a request to `StartChannel`.
    ///
    /// <p>Starts a channel. For information about MediaTailor channels, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/channel-assembly-channels.html">Working with channels</a> in the <i>MediaTailor User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct StartChannel {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::start_channel_input::Builder,
    }
    impl StartChannel {
        /// Creates a new `StartChannel`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::StartChannel,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::StartChannelError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::StartChannelOutput,
            aws_smithy_http::result::SdkError<crate::error::StartChannelError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the channel.</p>
        pub fn channel_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.channel_name(input.into());
            self
        }
        /// <p>The name of the channel.</p>
        pub fn set_channel_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_channel_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `StopChannel`.
    ///
    /// <p>Stops a channel. For information about MediaTailor channels, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/channel-assembly-channels.html">Working with channels</a> in the <i>MediaTailor User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct StopChannel {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::stop_channel_input::Builder,
    }
    impl StopChannel {
        /// Creates a new `StopChannel`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::StopChannel,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::StopChannelError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::StopChannelOutput,
            aws_smithy_http::result::SdkError<crate::error::StopChannelError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the channel.</p>
        pub fn channel_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.channel_name(input.into());
            self
        }
        /// <p>The name of the channel.</p>
        pub fn set_channel_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_channel_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `TagResource`.
    ///
    /// <p>The resource to tag. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</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(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::TagResource,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::TagResourceError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) associated with the resource.</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) associated with the resource.</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>The tags to assign to the resource. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</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>The tags to assign to the resource. Tags are key-value pairs that you can associate with Amazon resources to help with organization, access control, and cost tracking. For more information, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/tagging.html">Tagging AWS Elemental MediaTailor Resources</a>.</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>The resource to untag.</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(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UntagResource,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UntagResourceError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the resource to untag.</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 to untag.</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 tag keys associated with the resource.</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 tag keys associated with the resource.</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 `UpdateChannel`.
    ///
    /// <p>Updates a channel. For information about MediaTailor channels, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/channel-assembly-channels.html">Working with channels</a> in the <i>MediaTailor User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateChannel {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_channel_input::Builder,
    }
    impl UpdateChannel {
        /// Creates a new `UpdateChannel`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateChannel,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateChannelError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::UpdateChannelOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateChannelError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the channel.</p>
        pub fn channel_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.channel_name(input.into());
            self
        }
        /// <p>The name of the channel.</p>
        pub fn set_channel_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_channel_name(input);
            self
        }
        /// <p>The slate used to fill gaps between programs in the schedule. You must configure filler slate if your channel uses the <code>LINEAR</code> <code>PlaybackMode</code>. MediaTailor doesn't support filler slate for channels using the <code>LOOP</code> <code>PlaybackMode</code>.</p>
        pub fn filler_slate(mut self, input: crate::model::SlateSource) -> Self {
            self.inner = self.inner.filler_slate(input);
            self
        }
        /// <p>The slate used to fill gaps between programs in the schedule. You must configure filler slate if your channel uses the <code>LINEAR</code> <code>PlaybackMode</code>. MediaTailor doesn't support filler slate for channels using the <code>LOOP</code> <code>PlaybackMode</code>.</p>
        pub fn set_filler_slate(
            mut self,
            input: std::option::Option<crate::model::SlateSource>,
        ) -> Self {
            self.inner = self.inner.set_filler_slate(input);
            self
        }
        /// Appends an item to `Outputs`.
        ///
        /// To override the contents of this collection use [`set_outputs`](Self::set_outputs).
        ///
        /// <p>The channel's output properties.</p>
        pub fn outputs(mut self, input: crate::model::RequestOutputItem) -> Self {
            self.inner = self.inner.outputs(input);
            self
        }
        /// <p>The channel's output properties.</p>
        pub fn set_outputs(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::RequestOutputItem>>,
        ) -> Self {
            self.inner = self.inner.set_outputs(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateLiveSource`.
    ///
    /// <p>Updates a live source's configuration.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateLiveSource {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_live_source_input::Builder,
    }
    impl UpdateLiveSource {
        /// Creates a new `UpdateLiveSource`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateLiveSource,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateLiveSourceError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::UpdateLiveSourceOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateLiveSourceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Appends an item to `HttpPackageConfigurations`.
        ///
        /// To override the contents of this collection use [`set_http_package_configurations`](Self::set_http_package_configurations).
        ///
        /// <p>A list of HTTP package configurations for the live source on this account.</p>
        pub fn http_package_configurations(
            mut self,
            input: crate::model::HttpPackageConfiguration,
        ) -> Self {
            self.inner = self.inner.http_package_configurations(input);
            self
        }
        /// <p>A list of HTTP package configurations for the live source on this account.</p>
        pub fn set_http_package_configurations(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::HttpPackageConfiguration>>,
        ) -> Self {
            self.inner = self.inner.set_http_package_configurations(input);
            self
        }
        /// <p>The name of the live source.</p>
        pub fn live_source_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.live_source_name(input.into());
            self
        }
        /// <p>The name of the live source.</p>
        pub fn set_live_source_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_live_source_name(input);
            self
        }
        /// <p>The name of the source location associated with this Live Source.</p>
        pub fn source_location_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.source_location_name(input.into());
            self
        }
        /// <p>The name of the source location associated with this Live Source.</p>
        pub fn set_source_location_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_source_location_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateSourceLocation`.
    ///
    /// <p>Updates a source location. A source location is a container for sources. For more information about source locations, see <a href="https://docs.aws.amazon.com/mediatailor/latest/ug/channel-assembly-source-locations.html">Working with source locations</a> in the <i>MediaTailor User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateSourceLocation {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_source_location_input::Builder,
    }
    impl UpdateSourceLocation {
        /// Creates a new `UpdateSourceLocation`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateSourceLocation,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateSourceLocationError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::UpdateSourceLocationOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateSourceLocationError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>Access configuration parameters. Configures the type of authentication used to access content from your source location.</p>
        pub fn access_configuration(mut self, input: crate::model::AccessConfiguration) -> Self {
            self.inner = self.inner.access_configuration(input);
            self
        }
        /// <p>Access configuration parameters. Configures the type of authentication used to access content from your source location.</p>
        pub fn set_access_configuration(
            mut self,
            input: std::option::Option<crate::model::AccessConfiguration>,
        ) -> Self {
            self.inner = self.inner.set_access_configuration(input);
            self
        }
        /// <p>The optional configuration for the host server that serves segments.</p>
        pub fn default_segment_delivery_configuration(
            mut self,
            input: crate::model::DefaultSegmentDeliveryConfiguration,
        ) -> Self {
            self.inner = self.inner.default_segment_delivery_configuration(input);
            self
        }
        /// <p>The optional configuration for the host server that serves segments.</p>
        pub fn set_default_segment_delivery_configuration(
            mut self,
            input: std::option::Option<crate::model::DefaultSegmentDeliveryConfiguration>,
        ) -> Self {
            self.inner = self.inner.set_default_segment_delivery_configuration(input);
            self
        }
        /// <p>The HTTP configuration for the source location.</p>
        pub fn http_configuration(mut self, input: crate::model::HttpConfiguration) -> Self {
            self.inner = self.inner.http_configuration(input);
            self
        }
        /// <p>The HTTP configuration for the source location.</p>
        pub fn set_http_configuration(
            mut self,
            input: std::option::Option<crate::model::HttpConfiguration>,
        ) -> Self {
            self.inner = self.inner.set_http_configuration(input);
            self
        }
        /// Appends an item to `SegmentDeliveryConfigurations`.
        ///
        /// To override the contents of this collection use [`set_segment_delivery_configurations`](Self::set_segment_delivery_configurations).
        ///
        /// <p>A list of the segment delivery configurations associated with this resource.</p>
        pub fn segment_delivery_configurations(
            mut self,
            input: crate::model::SegmentDeliveryConfiguration,
        ) -> Self {
            self.inner = self.inner.segment_delivery_configurations(input);
            self
        }
        /// <p>A list of the segment delivery configurations associated with this resource.</p>
        pub fn set_segment_delivery_configurations(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::SegmentDeliveryConfiguration>>,
        ) -> Self {
            self.inner = self.inner.set_segment_delivery_configurations(input);
            self
        }
        /// <p>The name of the source location.</p>
        pub fn source_location_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.source_location_name(input.into());
            self
        }
        /// <p>The name of the source location.</p>
        pub fn set_source_location_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_source_location_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateVodSource`.
    ///
    /// <p>Updates a VOD source's configuration.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateVodSource {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_vod_source_input::Builder,
    }
    impl UpdateVodSource {
        /// Creates a new `UpdateVodSource`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateVodSource,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateVodSourceError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::UpdateVodSourceOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateVodSourceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Appends an item to `HttpPackageConfigurations`.
        ///
        /// To override the contents of this collection use [`set_http_package_configurations`](Self::set_http_package_configurations).
        ///
        /// <p>A list of HTTP package configurations for the VOD source on this account.</p>
        pub fn http_package_configurations(
            mut self,
            input: crate::model::HttpPackageConfiguration,
        ) -> Self {
            self.inner = self.inner.http_package_configurations(input);
            self
        }
        /// <p>A list of HTTP package configurations for the VOD source on this account.</p>
        pub fn set_http_package_configurations(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::HttpPackageConfiguration>>,
        ) -> Self {
            self.inner = self.inner.set_http_package_configurations(input);
            self
        }
        /// <p>The name of the source location associated with this VOD Source.</p>
        pub fn source_location_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.source_location_name(input.into());
            self
        }
        /// <p>The name of the source location associated with this VOD Source.</p>
        pub fn set_source_location_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_source_location_name(input);
            self
        }
        /// <p>The name of the VOD source.</p>
        pub fn vod_source_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.vod_source_name(input.into());
            self
        }
        /// <p>The name of the VOD source.</p>
        pub fn set_vod_source_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_vod_source_name(input);
            self
        }
    }
}

impl Client {
    /// Creates a new client from an [SDK Config](aws_types::sdk_config::SdkConfig).
    ///
    /// # Panics
    ///
    /// - This method will panic if the `sdk_config` is missing an async sleep implementation. If you experience this panic, set
    ///     the `sleep_impl` on the Config passed into this function to fix it.
    /// - This method will panic if the `sdk_config` is missing an HTTP connector. If you experience this panic, set the
    ///     `http_connector` on the Config passed into this function to fix it.
    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).
    ///
    /// # Panics
    ///
    /// - This method will panic if the `conf` is missing an async sleep implementation. If you experience this panic, set
    ///     the `sleep_impl` on the Config passed into this function to fix it.
    /// - This method will panic if the `conf` is missing an HTTP connector. If you experience this panic, set the
    ///     `http_connector` on the Config passed into this function to fix it.
    pub fn from_conf(conf: crate::Config) -> Self {
        let retry_config = conf
            .retry_config()
            .cloned()
            .unwrap_or_else(aws_smithy_types::retry::RetryConfig::disabled);
        let timeout_config = conf
            .timeout_config()
            .cloned()
            .unwrap_or_else(aws_smithy_types::timeout::TimeoutConfig::disabled);
        let sleep_impl = conf.sleep_impl();
        if (retry_config.has_retry() || timeout_config.has_timeouts()) && sleep_impl.is_none() {
            panic!("An async sleep implementation is required for retries or timeouts to work. \
                                    Set the `sleep_impl` on the Config passed into this function to fix this panic.");
        }

        let connector = conf.http_connector().and_then(|c| {
            let timeout_config = conf
                .timeout_config()
                .cloned()
                .unwrap_or_else(aws_smithy_types::timeout::TimeoutConfig::disabled);
            let connector_settings =
                aws_smithy_client::http_connector::ConnectorSettings::from_timeout_config(
                    &timeout_config,
                );
            c.connector(&connector_settings, conf.sleep_impl())
        });

        let builder = aws_smithy_client::Builder::new();

        let builder = match connector {
            // Use provided connector
            Some(c) => builder.connector(c),
            None => {
                #[cfg(any(feature = "rustls", feature = "native-tls"))]
                {
                    // Use default connector based on enabled features
                    builder.dyn_https_connector(
                        aws_smithy_client::http_connector::ConnectorSettings::from_timeout_config(
                            &timeout_config,
                        ),
                    )
                }
                #[cfg(not(any(feature = "rustls", feature = "native-tls")))]
                {
                    panic!("No HTTP connector was available. Enable the `rustls` or `native-tls` crate feature or set a connector to fix this.");
                }
            }
        };
        let mut builder = builder
            .middleware(aws_smithy_client::erase::DynMiddleware::new(
                crate::middleware::DefaultMiddleware::new(),
            ))
            .retry_config(retry_config.into())
            .operation_timeout_config(timeout_config.into());
        builder.set_sleep_impl(sleep_impl);
        let client = builder.build();

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