aws-sdk-oam 0.2.0

AWS SDK for CloudWatch Observability Access Manager
Documentation
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct UpdateLinkOutput {
    /// <p>The ARN of the link that you have updated.</p>
    #[doc(hidden)]
    pub arn: std::option::Option<std::string::String>,
    /// <p>The random ID string that Amazon Web Services generated as part of the sink ARN.</p>
    #[doc(hidden)]
    pub id: std::option::Option<std::string::String>,
    /// <p>The label assigned to this link, with the variables resolved to their actual values.</p>
    #[doc(hidden)]
    pub label: std::option::Option<std::string::String>,
    /// <p>The exact label template that was specified when the link was created, with the template variables not resolved.</p>
    #[doc(hidden)]
    pub label_template: std::option::Option<std::string::String>,
    /// <p>The resource types now supported by this link.</p>
    #[doc(hidden)]
    pub resource_types: std::option::Option<std::vec::Vec<std::string::String>>,
    /// <p>The ARN of the sink that is used for this link.</p>
    #[doc(hidden)]
    pub sink_arn: std::option::Option<std::string::String>,
    /// <p>The tags assigned to the link.</p>
    #[doc(hidden)]
    pub tags:
        std::option::Option<std::collections::HashMap<std::string::String, std::string::String>>,
}
impl UpdateLinkOutput {
    /// <p>The ARN of the link that you have updated.</p>
    pub fn arn(&self) -> std::option::Option<&str> {
        self.arn.as_deref()
    }
    /// <p>The random ID string that Amazon Web Services generated as part of the sink ARN.</p>
    pub fn id(&self) -> std::option::Option<&str> {
        self.id.as_deref()
    }
    /// <p>The label assigned to this link, with the variables resolved to their actual values.</p>
    pub fn label(&self) -> std::option::Option<&str> {
        self.label.as_deref()
    }
    /// <p>The exact label template that was specified when the link was created, with the template variables not resolved.</p>
    pub fn label_template(&self) -> std::option::Option<&str> {
        self.label_template.as_deref()
    }
    /// <p>The resource types now supported by this link.</p>
    pub fn resource_types(&self) -> std::option::Option<&[std::string::String]> {
        self.resource_types.as_deref()
    }
    /// <p>The ARN of the sink that is used for this link.</p>
    pub fn sink_arn(&self) -> std::option::Option<&str> {
        self.sink_arn.as_deref()
    }
    /// <p>The tags assigned to the link.</p>
    pub fn tags(
        &self,
    ) -> std::option::Option<&std::collections::HashMap<std::string::String, std::string::String>>
    {
        self.tags.as_ref()
    }
}
/// See [`UpdateLinkOutput`](crate::output::UpdateLinkOutput).
pub mod update_link_output {

    /// A builder for [`UpdateLinkOutput`](crate::output::UpdateLinkOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) arn: std::option::Option<std::string::String>,
        pub(crate) id: std::option::Option<std::string::String>,
        pub(crate) label: std::option::Option<std::string::String>,
        pub(crate) label_template: std::option::Option<std::string::String>,
        pub(crate) resource_types: std::option::Option<std::vec::Vec<std::string::String>>,
        pub(crate) sink_arn: std::option::Option<std::string::String>,
        pub(crate) tags: std::option::Option<
            std::collections::HashMap<std::string::String, std::string::String>,
        >,
    }
    impl Builder {
        /// <p>The ARN of the link that you have updated.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.arn = Some(input.into());
            self
        }
        /// <p>The ARN of the link that you have updated.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.arn = input;
            self
        }
        /// <p>The random ID string that Amazon Web Services generated as part of the sink ARN.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.id = Some(input.into());
            self
        }
        /// <p>The random ID string that Amazon Web Services generated as part of the sink ARN.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.id = input;
            self
        }
        /// <p>The label assigned to this link, with the variables resolved to their actual values.</p>
        pub fn label(mut self, input: impl Into<std::string::String>) -> Self {
            self.label = Some(input.into());
            self
        }
        /// <p>The label assigned to this link, with the variables resolved to their actual values.</p>
        pub fn set_label(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.label = input;
            self
        }
        /// <p>The exact label template that was specified when the link was created, with the template variables not resolved.</p>
        pub fn label_template(mut self, input: impl Into<std::string::String>) -> Self {
            self.label_template = Some(input.into());
            self
        }
        /// <p>The exact label template that was specified when the link was created, with the template variables not resolved.</p>
        pub fn set_label_template(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.label_template = input;
            self
        }
        /// Appends an item to `resource_types`.
        ///
        /// To override the contents of this collection use [`set_resource_types`](Self::set_resource_types).
        ///
        /// <p>The resource types now supported by this link.</p>
        pub fn resource_types(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.resource_types.unwrap_or_default();
            v.push(input.into());
            self.resource_types = Some(v);
            self
        }
        /// <p>The resource types now supported by this link.</p>
        pub fn set_resource_types(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.resource_types = input;
            self
        }
        /// <p>The ARN of the sink that is used for this link.</p>
        pub fn sink_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.sink_arn = Some(input.into());
            self
        }
        /// <p>The ARN of the sink that is used for this link.</p>
        pub fn set_sink_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.sink_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 assigned to the link.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            let mut hash_map = self.tags.unwrap_or_default();
            hash_map.insert(k.into(), v.into());
            self.tags = Some(hash_map);
            self
        }
        /// <p>The tags assigned to the link.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.tags = input;
            self
        }
        /// Consumes the builder and constructs a [`UpdateLinkOutput`](crate::output::UpdateLinkOutput).
        pub fn build(self) -> crate::output::UpdateLinkOutput {
            crate::output::UpdateLinkOutput {
                arn: self.arn,
                id: self.id,
                label: self.label,
                label_template: self.label_template,
                resource_types: self.resource_types,
                sink_arn: self.sink_arn,
                tags: self.tags,
            }
        }
    }
}
impl UpdateLinkOutput {
    /// Creates a new builder-style object to manufacture [`UpdateLinkOutput`](crate::output::UpdateLinkOutput).
    pub fn builder() -> crate::output::update_link_output::Builder {
        crate::output::update_link_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct UntagResourceOutput {}
/// See [`UntagResourceOutput`](crate::output::UntagResourceOutput).
pub mod untag_resource_output {

    /// A builder for [`UntagResourceOutput`](crate::output::UntagResourceOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {}
    impl Builder {
        /// Consumes the builder and constructs a [`UntagResourceOutput`](crate::output::UntagResourceOutput).
        pub fn build(self) -> crate::output::UntagResourceOutput {
            crate::output::UntagResourceOutput {}
        }
    }
}
impl UntagResourceOutput {
    /// Creates a new builder-style object to manufacture [`UntagResourceOutput`](crate::output::UntagResourceOutput).
    pub fn builder() -> crate::output::untag_resource_output::Builder {
        crate::output::untag_resource_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct TagResourceOutput {}
/// See [`TagResourceOutput`](crate::output::TagResourceOutput).
pub mod tag_resource_output {

    /// A builder for [`TagResourceOutput`](crate::output::TagResourceOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {}
    impl Builder {
        /// Consumes the builder and constructs a [`TagResourceOutput`](crate::output::TagResourceOutput).
        pub fn build(self) -> crate::output::TagResourceOutput {
            crate::output::TagResourceOutput {}
        }
    }
}
impl TagResourceOutput {
    /// Creates a new builder-style object to manufacture [`TagResourceOutput`](crate::output::TagResourceOutput).
    pub fn builder() -> crate::output::tag_resource_output::Builder {
        crate::output::tag_resource_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct PutSinkPolicyOutput {
    /// <p>The ARN of the sink.</p>
    #[doc(hidden)]
    pub sink_arn: std::option::Option<std::string::String>,
    /// <p>The random ID string that Amazon Web Services generated as part of the sink ARN.</p>
    #[doc(hidden)]
    pub sink_id: std::option::Option<std::string::String>,
    /// <p>The policy that you specified.</p>
    #[doc(hidden)]
    pub policy: std::option::Option<std::string::String>,
}
impl PutSinkPolicyOutput {
    /// <p>The ARN of the sink.</p>
    pub fn sink_arn(&self) -> std::option::Option<&str> {
        self.sink_arn.as_deref()
    }
    /// <p>The random ID string that Amazon Web Services generated as part of the sink ARN.</p>
    pub fn sink_id(&self) -> std::option::Option<&str> {
        self.sink_id.as_deref()
    }
    /// <p>The policy that you specified.</p>
    pub fn policy(&self) -> std::option::Option<&str> {
        self.policy.as_deref()
    }
}
/// See [`PutSinkPolicyOutput`](crate::output::PutSinkPolicyOutput).
pub mod put_sink_policy_output {

    /// A builder for [`PutSinkPolicyOutput`](crate::output::PutSinkPolicyOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) sink_arn: std::option::Option<std::string::String>,
        pub(crate) sink_id: std::option::Option<std::string::String>,
        pub(crate) policy: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// <p>The ARN of the sink.</p>
        pub fn sink_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.sink_arn = Some(input.into());
            self
        }
        /// <p>The ARN of the sink.</p>
        pub fn set_sink_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.sink_arn = input;
            self
        }
        /// <p>The random ID string that Amazon Web Services generated as part of the sink ARN.</p>
        pub fn sink_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.sink_id = Some(input.into());
            self
        }
        /// <p>The random ID string that Amazon Web Services generated as part of the sink ARN.</p>
        pub fn set_sink_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.sink_id = input;
            self
        }
        /// <p>The policy that you specified.</p>
        pub fn policy(mut self, input: impl Into<std::string::String>) -> Self {
            self.policy = Some(input.into());
            self
        }
        /// <p>The policy that you specified.</p>
        pub fn set_policy(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.policy = input;
            self
        }
        /// Consumes the builder and constructs a [`PutSinkPolicyOutput`](crate::output::PutSinkPolicyOutput).
        pub fn build(self) -> crate::output::PutSinkPolicyOutput {
            crate::output::PutSinkPolicyOutput {
                sink_arn: self.sink_arn,
                sink_id: self.sink_id,
                policy: self.policy,
            }
        }
    }
}
impl PutSinkPolicyOutput {
    /// Creates a new builder-style object to manufacture [`PutSinkPolicyOutput`](crate::output::PutSinkPolicyOutput).
    pub fn builder() -> crate::output::put_sink_policy_output::Builder {
        crate::output::put_sink_policy_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct ListTagsForResourceOutput {
    /// <p>The list of tags associated with the requested resource.&gt;</p>
    #[doc(hidden)]
    pub tags:
        std::option::Option<std::collections::HashMap<std::string::String, std::string::String>>,
}
impl ListTagsForResourceOutput {
    /// <p>The list of tags associated with the requested resource.&gt;</p>
    pub fn tags(
        &self,
    ) -> std::option::Option<&std::collections::HashMap<std::string::String, std::string::String>>
    {
        self.tags.as_ref()
    }
}
/// See [`ListTagsForResourceOutput`](crate::output::ListTagsForResourceOutput).
pub mod list_tags_for_resource_output {

    /// A builder for [`ListTagsForResourceOutput`](crate::output::ListTagsForResourceOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) tags: std::option::Option<
            std::collections::HashMap<std::string::String, std::string::String>,
        >,
    }
    impl Builder {
        /// Adds a key-value pair to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The list of tags associated with the requested resource.&gt;</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            let mut hash_map = self.tags.unwrap_or_default();
            hash_map.insert(k.into(), v.into());
            self.tags = Some(hash_map);
            self
        }
        /// <p>The list of tags associated with the requested resource.&gt;</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.tags = input;
            self
        }
        /// Consumes the builder and constructs a [`ListTagsForResourceOutput`](crate::output::ListTagsForResourceOutput).
        pub fn build(self) -> crate::output::ListTagsForResourceOutput {
            crate::output::ListTagsForResourceOutput { tags: self.tags }
        }
    }
}
impl ListTagsForResourceOutput {
    /// Creates a new builder-style object to manufacture [`ListTagsForResourceOutput`](crate::output::ListTagsForResourceOutput).
    pub fn builder() -> crate::output::list_tags_for_resource_output::Builder {
        crate::output::list_tags_for_resource_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct ListSinksOutput {
    /// <p>An array of structures that contain the information about the returned sinks.</p>
    #[doc(hidden)]
    pub items: std::option::Option<std::vec::Vec<crate::model::ListSinksItem>>,
    /// <p>The token to use when requesting the next set of sinks.</p>
    #[doc(hidden)]
    pub next_token: std::option::Option<std::string::String>,
}
impl ListSinksOutput {
    /// <p>An array of structures that contain the information about the returned sinks.</p>
    pub fn items(&self) -> std::option::Option<&[crate::model::ListSinksItem]> {
        self.items.as_deref()
    }
    /// <p>The token to use when requesting the next set of sinks.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
}
/// See [`ListSinksOutput`](crate::output::ListSinksOutput).
pub mod list_sinks_output {

    /// A builder for [`ListSinksOutput`](crate::output::ListSinksOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) items: std::option::Option<std::vec::Vec<crate::model::ListSinksItem>>,
        pub(crate) next_token: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// Appends an item to `items`.
        ///
        /// To override the contents of this collection use [`set_items`](Self::set_items).
        ///
        /// <p>An array of structures that contain the information about the returned sinks.</p>
        pub fn items(mut self, input: crate::model::ListSinksItem) -> Self {
            let mut v = self.items.unwrap_or_default();
            v.push(input);
            self.items = Some(v);
            self
        }
        /// <p>An array of structures that contain the information about the returned sinks.</p>
        pub fn set_items(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::ListSinksItem>>,
        ) -> Self {
            self.items = input;
            self
        }
        /// <p>The token to use when requesting the next set of sinks.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The token to use when requesting the next set of sinks.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.next_token = input;
            self
        }
        /// Consumes the builder and constructs a [`ListSinksOutput`](crate::output::ListSinksOutput).
        pub fn build(self) -> crate::output::ListSinksOutput {
            crate::output::ListSinksOutput {
                items: self.items,
                next_token: self.next_token,
            }
        }
    }
}
impl ListSinksOutput {
    /// Creates a new builder-style object to manufacture [`ListSinksOutput`](crate::output::ListSinksOutput).
    pub fn builder() -> crate::output::list_sinks_output::Builder {
        crate::output::list_sinks_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct ListLinksOutput {
    /// <p>An array of structures that contain the information about the returned links.</p>
    #[doc(hidden)]
    pub items: std::option::Option<std::vec::Vec<crate::model::ListLinksItem>>,
    /// <p>The token to use when requesting the next set of links.</p>
    #[doc(hidden)]
    pub next_token: std::option::Option<std::string::String>,
}
impl ListLinksOutput {
    /// <p>An array of structures that contain the information about the returned links.</p>
    pub fn items(&self) -> std::option::Option<&[crate::model::ListLinksItem]> {
        self.items.as_deref()
    }
    /// <p>The token to use when requesting the next set of links.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
}
/// See [`ListLinksOutput`](crate::output::ListLinksOutput).
pub mod list_links_output {

    /// A builder for [`ListLinksOutput`](crate::output::ListLinksOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) items: std::option::Option<std::vec::Vec<crate::model::ListLinksItem>>,
        pub(crate) next_token: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// Appends an item to `items`.
        ///
        /// To override the contents of this collection use [`set_items`](Self::set_items).
        ///
        /// <p>An array of structures that contain the information about the returned links.</p>
        pub fn items(mut self, input: crate::model::ListLinksItem) -> Self {
            let mut v = self.items.unwrap_or_default();
            v.push(input);
            self.items = Some(v);
            self
        }
        /// <p>An array of structures that contain the information about the returned links.</p>
        pub fn set_items(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::ListLinksItem>>,
        ) -> Self {
            self.items = input;
            self
        }
        /// <p>The token to use when requesting the next set of links.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The token to use when requesting the next set of links.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.next_token = input;
            self
        }
        /// Consumes the builder and constructs a [`ListLinksOutput`](crate::output::ListLinksOutput).
        pub fn build(self) -> crate::output::ListLinksOutput {
            crate::output::ListLinksOutput {
                items: self.items,
                next_token: self.next_token,
            }
        }
    }
}
impl ListLinksOutput {
    /// Creates a new builder-style object to manufacture [`ListLinksOutput`](crate::output::ListLinksOutput).
    pub fn builder() -> crate::output::list_links_output::Builder {
        crate::output::list_links_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct ListAttachedLinksOutput {
    /// <p>An array of structures that contain the information about the attached links.</p>
    #[doc(hidden)]
    pub items: std::option::Option<std::vec::Vec<crate::model::ListAttachedLinksItem>>,
    /// <p>The token to use when requesting the next set of links.</p>
    #[doc(hidden)]
    pub next_token: std::option::Option<std::string::String>,
}
impl ListAttachedLinksOutput {
    /// <p>An array of structures that contain the information about the attached links.</p>
    pub fn items(&self) -> std::option::Option<&[crate::model::ListAttachedLinksItem]> {
        self.items.as_deref()
    }
    /// <p>The token to use when requesting the next set of links.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
}
/// See [`ListAttachedLinksOutput`](crate::output::ListAttachedLinksOutput).
pub mod list_attached_links_output {

    /// A builder for [`ListAttachedLinksOutput`](crate::output::ListAttachedLinksOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) items: std::option::Option<std::vec::Vec<crate::model::ListAttachedLinksItem>>,
        pub(crate) next_token: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// Appends an item to `items`.
        ///
        /// To override the contents of this collection use [`set_items`](Self::set_items).
        ///
        /// <p>An array of structures that contain the information about the attached links.</p>
        pub fn items(mut self, input: crate::model::ListAttachedLinksItem) -> Self {
            let mut v = self.items.unwrap_or_default();
            v.push(input);
            self.items = Some(v);
            self
        }
        /// <p>An array of structures that contain the information about the attached links.</p>
        pub fn set_items(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::ListAttachedLinksItem>>,
        ) -> Self {
            self.items = input;
            self
        }
        /// <p>The token to use when requesting the next set of links.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The token to use when requesting the next set of links.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.next_token = input;
            self
        }
        /// Consumes the builder and constructs a [`ListAttachedLinksOutput`](crate::output::ListAttachedLinksOutput).
        pub fn build(self) -> crate::output::ListAttachedLinksOutput {
            crate::output::ListAttachedLinksOutput {
                items: self.items,
                next_token: self.next_token,
            }
        }
    }
}
impl ListAttachedLinksOutput {
    /// Creates a new builder-style object to manufacture [`ListAttachedLinksOutput`](crate::output::ListAttachedLinksOutput).
    pub fn builder() -> crate::output::list_attached_links_output::Builder {
        crate::output::list_attached_links_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct GetSinkPolicyOutput {
    /// <p>The ARN of the sink.</p>
    #[doc(hidden)]
    pub sink_arn: std::option::Option<std::string::String>,
    /// <p>The random ID string that Amazon Web Services generated as part of the sink ARN.</p>
    #[doc(hidden)]
    pub sink_id: std::option::Option<std::string::String>,
    /// <p>The policy that you specified, in JSON format.</p>
    #[doc(hidden)]
    pub policy: std::option::Option<std::string::String>,
}
impl GetSinkPolicyOutput {
    /// <p>The ARN of the sink.</p>
    pub fn sink_arn(&self) -> std::option::Option<&str> {
        self.sink_arn.as_deref()
    }
    /// <p>The random ID string that Amazon Web Services generated as part of the sink ARN.</p>
    pub fn sink_id(&self) -> std::option::Option<&str> {
        self.sink_id.as_deref()
    }
    /// <p>The policy that you specified, in JSON format.</p>
    pub fn policy(&self) -> std::option::Option<&str> {
        self.policy.as_deref()
    }
}
/// See [`GetSinkPolicyOutput`](crate::output::GetSinkPolicyOutput).
pub mod get_sink_policy_output {

    /// A builder for [`GetSinkPolicyOutput`](crate::output::GetSinkPolicyOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) sink_arn: std::option::Option<std::string::String>,
        pub(crate) sink_id: std::option::Option<std::string::String>,
        pub(crate) policy: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// <p>The ARN of the sink.</p>
        pub fn sink_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.sink_arn = Some(input.into());
            self
        }
        /// <p>The ARN of the sink.</p>
        pub fn set_sink_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.sink_arn = input;
            self
        }
        /// <p>The random ID string that Amazon Web Services generated as part of the sink ARN.</p>
        pub fn sink_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.sink_id = Some(input.into());
            self
        }
        /// <p>The random ID string that Amazon Web Services generated as part of the sink ARN.</p>
        pub fn set_sink_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.sink_id = input;
            self
        }
        /// <p>The policy that you specified, in JSON format.</p>
        pub fn policy(mut self, input: impl Into<std::string::String>) -> Self {
            self.policy = Some(input.into());
            self
        }
        /// <p>The policy that you specified, in JSON format.</p>
        pub fn set_policy(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.policy = input;
            self
        }
        /// Consumes the builder and constructs a [`GetSinkPolicyOutput`](crate::output::GetSinkPolicyOutput).
        pub fn build(self) -> crate::output::GetSinkPolicyOutput {
            crate::output::GetSinkPolicyOutput {
                sink_arn: self.sink_arn,
                sink_id: self.sink_id,
                policy: self.policy,
            }
        }
    }
}
impl GetSinkPolicyOutput {
    /// Creates a new builder-style object to manufacture [`GetSinkPolicyOutput`](crate::output::GetSinkPolicyOutput).
    pub fn builder() -> crate::output::get_sink_policy_output::Builder {
        crate::output::get_sink_policy_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct GetSinkOutput {
    /// <p>The ARN of the sink.</p>
    #[doc(hidden)]
    pub arn: std::option::Option<std::string::String>,
    /// <p>The random ID string that Amazon Web Services generated as part of the sink ARN.</p>
    #[doc(hidden)]
    pub id: std::option::Option<std::string::String>,
    /// <p>The name of the sink.</p>
    #[doc(hidden)]
    pub name: std::option::Option<std::string::String>,
    /// <p>The tags assigned to the sink.</p>
    #[doc(hidden)]
    pub tags:
        std::option::Option<std::collections::HashMap<std::string::String, std::string::String>>,
}
impl GetSinkOutput {
    /// <p>The ARN of the sink.</p>
    pub fn arn(&self) -> std::option::Option<&str> {
        self.arn.as_deref()
    }
    /// <p>The random ID string that Amazon Web Services generated as part of the sink ARN.</p>
    pub fn id(&self) -> std::option::Option<&str> {
        self.id.as_deref()
    }
    /// <p>The name of the sink.</p>
    pub fn name(&self) -> std::option::Option<&str> {
        self.name.as_deref()
    }
    /// <p>The tags assigned to the sink.</p>
    pub fn tags(
        &self,
    ) -> std::option::Option<&std::collections::HashMap<std::string::String, std::string::String>>
    {
        self.tags.as_ref()
    }
}
/// See [`GetSinkOutput`](crate::output::GetSinkOutput).
pub mod get_sink_output {

    /// A builder for [`GetSinkOutput`](crate::output::GetSinkOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) arn: std::option::Option<std::string::String>,
        pub(crate) id: std::option::Option<std::string::String>,
        pub(crate) name: std::option::Option<std::string::String>,
        pub(crate) tags: std::option::Option<
            std::collections::HashMap<std::string::String, std::string::String>,
        >,
    }
    impl Builder {
        /// <p>The ARN of the sink.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.arn = Some(input.into());
            self
        }
        /// <p>The ARN of the sink.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.arn = input;
            self
        }
        /// <p>The random ID string that Amazon Web Services generated as part of the sink ARN.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.id = Some(input.into());
            self
        }
        /// <p>The random ID string that Amazon Web Services generated as part of the sink ARN.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.id = input;
            self
        }
        /// <p>The name of the sink.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.name = Some(input.into());
            self
        }
        /// <p>The name of the sink.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.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 assigned to the sink.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            let mut hash_map = self.tags.unwrap_or_default();
            hash_map.insert(k.into(), v.into());
            self.tags = Some(hash_map);
            self
        }
        /// <p>The tags assigned to the sink.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.tags = input;
            self
        }
        /// Consumes the builder and constructs a [`GetSinkOutput`](crate::output::GetSinkOutput).
        pub fn build(self) -> crate::output::GetSinkOutput {
            crate::output::GetSinkOutput {
                arn: self.arn,
                id: self.id,
                name: self.name,
                tags: self.tags,
            }
        }
    }
}
impl GetSinkOutput {
    /// Creates a new builder-style object to manufacture [`GetSinkOutput`](crate::output::GetSinkOutput).
    pub fn builder() -> crate::output::get_sink_output::Builder {
        crate::output::get_sink_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct GetLinkOutput {
    /// <p>The ARN of the link.</p>
    #[doc(hidden)]
    pub arn: std::option::Option<std::string::String>,
    /// <p>The random ID string that Amazon Web Services generated as part of the link ARN.</p>
    #[doc(hidden)]
    pub id: std::option::Option<std::string::String>,
    /// <p>The label that you assigned to this link, with the variables resolved to their actual values.</p>
    #[doc(hidden)]
    pub label: std::option::Option<std::string::String>,
    /// <p>The exact label template that was specified when the link was created, with the template variables not resolved.</p>
    #[doc(hidden)]
    pub label_template: std::option::Option<std::string::String>,
    /// <p>The resource types supported by this link.</p>
    #[doc(hidden)]
    pub resource_types: std::option::Option<std::vec::Vec<std::string::String>>,
    /// <p>The ARN of the sink that is used for this link.</p>
    #[doc(hidden)]
    pub sink_arn: std::option::Option<std::string::String>,
    /// <p>The tags assigned to the link.</p>
    #[doc(hidden)]
    pub tags:
        std::option::Option<std::collections::HashMap<std::string::String, std::string::String>>,
}
impl GetLinkOutput {
    /// <p>The ARN of the link.</p>
    pub fn arn(&self) -> std::option::Option<&str> {
        self.arn.as_deref()
    }
    /// <p>The random ID string that Amazon Web Services generated as part of the link ARN.</p>
    pub fn id(&self) -> std::option::Option<&str> {
        self.id.as_deref()
    }
    /// <p>The label that you assigned to this link, with the variables resolved to their actual values.</p>
    pub fn label(&self) -> std::option::Option<&str> {
        self.label.as_deref()
    }
    /// <p>The exact label template that was specified when the link was created, with the template variables not resolved.</p>
    pub fn label_template(&self) -> std::option::Option<&str> {
        self.label_template.as_deref()
    }
    /// <p>The resource types supported by this link.</p>
    pub fn resource_types(&self) -> std::option::Option<&[std::string::String]> {
        self.resource_types.as_deref()
    }
    /// <p>The ARN of the sink that is used for this link.</p>
    pub fn sink_arn(&self) -> std::option::Option<&str> {
        self.sink_arn.as_deref()
    }
    /// <p>The tags assigned to the link.</p>
    pub fn tags(
        &self,
    ) -> std::option::Option<&std::collections::HashMap<std::string::String, std::string::String>>
    {
        self.tags.as_ref()
    }
}
/// See [`GetLinkOutput`](crate::output::GetLinkOutput).
pub mod get_link_output {

    /// A builder for [`GetLinkOutput`](crate::output::GetLinkOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) arn: std::option::Option<std::string::String>,
        pub(crate) id: std::option::Option<std::string::String>,
        pub(crate) label: std::option::Option<std::string::String>,
        pub(crate) label_template: std::option::Option<std::string::String>,
        pub(crate) resource_types: std::option::Option<std::vec::Vec<std::string::String>>,
        pub(crate) sink_arn: std::option::Option<std::string::String>,
        pub(crate) tags: std::option::Option<
            std::collections::HashMap<std::string::String, std::string::String>,
        >,
    }
    impl Builder {
        /// <p>The ARN of the link.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.arn = Some(input.into());
            self
        }
        /// <p>The ARN of the link.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.arn = input;
            self
        }
        /// <p>The random ID string that Amazon Web Services generated as part of the link ARN.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.id = Some(input.into());
            self
        }
        /// <p>The random ID string that Amazon Web Services generated as part of the link ARN.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.id = input;
            self
        }
        /// <p>The label that you assigned to this link, with the variables resolved to their actual values.</p>
        pub fn label(mut self, input: impl Into<std::string::String>) -> Self {
            self.label = Some(input.into());
            self
        }
        /// <p>The label that you assigned to this link, with the variables resolved to their actual values.</p>
        pub fn set_label(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.label = input;
            self
        }
        /// <p>The exact label template that was specified when the link was created, with the template variables not resolved.</p>
        pub fn label_template(mut self, input: impl Into<std::string::String>) -> Self {
            self.label_template = Some(input.into());
            self
        }
        /// <p>The exact label template that was specified when the link was created, with the template variables not resolved.</p>
        pub fn set_label_template(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.label_template = input;
            self
        }
        /// Appends an item to `resource_types`.
        ///
        /// To override the contents of this collection use [`set_resource_types`](Self::set_resource_types).
        ///
        /// <p>The resource types supported by this link.</p>
        pub fn resource_types(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.resource_types.unwrap_or_default();
            v.push(input.into());
            self.resource_types = Some(v);
            self
        }
        /// <p>The resource types supported by this link.</p>
        pub fn set_resource_types(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.resource_types = input;
            self
        }
        /// <p>The ARN of the sink that is used for this link.</p>
        pub fn sink_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.sink_arn = Some(input.into());
            self
        }
        /// <p>The ARN of the sink that is used for this link.</p>
        pub fn set_sink_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.sink_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 assigned to the link.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            let mut hash_map = self.tags.unwrap_or_default();
            hash_map.insert(k.into(), v.into());
            self.tags = Some(hash_map);
            self
        }
        /// <p>The tags assigned to the link.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.tags = input;
            self
        }
        /// Consumes the builder and constructs a [`GetLinkOutput`](crate::output::GetLinkOutput).
        pub fn build(self) -> crate::output::GetLinkOutput {
            crate::output::GetLinkOutput {
                arn: self.arn,
                id: self.id,
                label: self.label,
                label_template: self.label_template,
                resource_types: self.resource_types,
                sink_arn: self.sink_arn,
                tags: self.tags,
            }
        }
    }
}
impl GetLinkOutput {
    /// Creates a new builder-style object to manufacture [`GetLinkOutput`](crate::output::GetLinkOutput).
    pub fn builder() -> crate::output::get_link_output::Builder {
        crate::output::get_link_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct DeleteSinkOutput {}
/// See [`DeleteSinkOutput`](crate::output::DeleteSinkOutput).
pub mod delete_sink_output {

    /// A builder for [`DeleteSinkOutput`](crate::output::DeleteSinkOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {}
    impl Builder {
        /// Consumes the builder and constructs a [`DeleteSinkOutput`](crate::output::DeleteSinkOutput).
        pub fn build(self) -> crate::output::DeleteSinkOutput {
            crate::output::DeleteSinkOutput {}
        }
    }
}
impl DeleteSinkOutput {
    /// Creates a new builder-style object to manufacture [`DeleteSinkOutput`](crate::output::DeleteSinkOutput).
    pub fn builder() -> crate::output::delete_sink_output::Builder {
        crate::output::delete_sink_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct DeleteLinkOutput {}
/// See [`DeleteLinkOutput`](crate::output::DeleteLinkOutput).
pub mod delete_link_output {

    /// A builder for [`DeleteLinkOutput`](crate::output::DeleteLinkOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {}
    impl Builder {
        /// Consumes the builder and constructs a [`DeleteLinkOutput`](crate::output::DeleteLinkOutput).
        pub fn build(self) -> crate::output::DeleteLinkOutput {
            crate::output::DeleteLinkOutput {}
        }
    }
}
impl DeleteLinkOutput {
    /// Creates a new builder-style object to manufacture [`DeleteLinkOutput`](crate::output::DeleteLinkOutput).
    pub fn builder() -> crate::output::delete_link_output::Builder {
        crate::output::delete_link_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct CreateSinkOutput {
    /// <p>The ARN of the sink that is newly created.</p>
    #[doc(hidden)]
    pub arn: std::option::Option<std::string::String>,
    /// <p>The random ID string that Amazon Web Services generated as part of the sink ARN.</p>
    #[doc(hidden)]
    pub id: std::option::Option<std::string::String>,
    /// <p>The name of the sink.</p>
    #[doc(hidden)]
    pub name: std::option::Option<std::string::String>,
    /// <p>The tags assigned to the sink.</p>
    #[doc(hidden)]
    pub tags:
        std::option::Option<std::collections::HashMap<std::string::String, std::string::String>>,
}
impl CreateSinkOutput {
    /// <p>The ARN of the sink that is newly created.</p>
    pub fn arn(&self) -> std::option::Option<&str> {
        self.arn.as_deref()
    }
    /// <p>The random ID string that Amazon Web Services generated as part of the sink ARN.</p>
    pub fn id(&self) -> std::option::Option<&str> {
        self.id.as_deref()
    }
    /// <p>The name of the sink.</p>
    pub fn name(&self) -> std::option::Option<&str> {
        self.name.as_deref()
    }
    /// <p>The tags assigned to the sink.</p>
    pub fn tags(
        &self,
    ) -> std::option::Option<&std::collections::HashMap<std::string::String, std::string::String>>
    {
        self.tags.as_ref()
    }
}
/// See [`CreateSinkOutput`](crate::output::CreateSinkOutput).
pub mod create_sink_output {

    /// A builder for [`CreateSinkOutput`](crate::output::CreateSinkOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) arn: std::option::Option<std::string::String>,
        pub(crate) id: std::option::Option<std::string::String>,
        pub(crate) name: std::option::Option<std::string::String>,
        pub(crate) tags: std::option::Option<
            std::collections::HashMap<std::string::String, std::string::String>,
        >,
    }
    impl Builder {
        /// <p>The ARN of the sink that is newly created.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.arn = Some(input.into());
            self
        }
        /// <p>The ARN of the sink that is newly created.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.arn = input;
            self
        }
        /// <p>The random ID string that Amazon Web Services generated as part of the sink ARN.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.id = Some(input.into());
            self
        }
        /// <p>The random ID string that Amazon Web Services generated as part of the sink ARN.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.id = input;
            self
        }
        /// <p>The name of the sink.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.name = Some(input.into());
            self
        }
        /// <p>The name of the sink.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.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 assigned to the sink.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            let mut hash_map = self.tags.unwrap_or_default();
            hash_map.insert(k.into(), v.into());
            self.tags = Some(hash_map);
            self
        }
        /// <p>The tags assigned to the sink.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.tags = input;
            self
        }
        /// Consumes the builder and constructs a [`CreateSinkOutput`](crate::output::CreateSinkOutput).
        pub fn build(self) -> crate::output::CreateSinkOutput {
            crate::output::CreateSinkOutput {
                arn: self.arn,
                id: self.id,
                name: self.name,
                tags: self.tags,
            }
        }
    }
}
impl CreateSinkOutput {
    /// Creates a new builder-style object to manufacture [`CreateSinkOutput`](crate::output::CreateSinkOutput).
    pub fn builder() -> crate::output::create_sink_output::Builder {
        crate::output::create_sink_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct CreateLinkOutput {
    /// <p>The ARN of the link that is newly created.</p>
    #[doc(hidden)]
    pub arn: std::option::Option<std::string::String>,
    /// <p>The random ID string that Amazon Web Services generated as part of the link ARN.</p>
    #[doc(hidden)]
    pub id: std::option::Option<std::string::String>,
    /// <p>The label that you assigned to this link. If the <code>labelTemplate</code> includes variables, this field displays the variables resolved to their actual values.</p>
    #[doc(hidden)]
    pub label: std::option::Option<std::string::String>,
    /// <p>The exact label template that you specified, with the variables not resolved.</p>
    #[doc(hidden)]
    pub label_template: std::option::Option<std::string::String>,
    /// <p>The resource types supported by this link.</p>
    #[doc(hidden)]
    pub resource_types: std::option::Option<std::vec::Vec<std::string::String>>,
    /// <p>The ARN of the sink that is used for this link.</p>
    #[doc(hidden)]
    pub sink_arn: std::option::Option<std::string::String>,
    /// <p>The tags assigned to the link.</p>
    #[doc(hidden)]
    pub tags:
        std::option::Option<std::collections::HashMap<std::string::String, std::string::String>>,
}
impl CreateLinkOutput {
    /// <p>The ARN of the link that is newly created.</p>
    pub fn arn(&self) -> std::option::Option<&str> {
        self.arn.as_deref()
    }
    /// <p>The random ID string that Amazon Web Services generated as part of the link ARN.</p>
    pub fn id(&self) -> std::option::Option<&str> {
        self.id.as_deref()
    }
    /// <p>The label that you assigned to this link. If the <code>labelTemplate</code> includes variables, this field displays the variables resolved to their actual values.</p>
    pub fn label(&self) -> std::option::Option<&str> {
        self.label.as_deref()
    }
    /// <p>The exact label template that you specified, with the variables not resolved.</p>
    pub fn label_template(&self) -> std::option::Option<&str> {
        self.label_template.as_deref()
    }
    /// <p>The resource types supported by this link.</p>
    pub fn resource_types(&self) -> std::option::Option<&[std::string::String]> {
        self.resource_types.as_deref()
    }
    /// <p>The ARN of the sink that is used for this link.</p>
    pub fn sink_arn(&self) -> std::option::Option<&str> {
        self.sink_arn.as_deref()
    }
    /// <p>The tags assigned to the link.</p>
    pub fn tags(
        &self,
    ) -> std::option::Option<&std::collections::HashMap<std::string::String, std::string::String>>
    {
        self.tags.as_ref()
    }
}
/// See [`CreateLinkOutput`](crate::output::CreateLinkOutput).
pub mod create_link_output {

    /// A builder for [`CreateLinkOutput`](crate::output::CreateLinkOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) arn: std::option::Option<std::string::String>,
        pub(crate) id: std::option::Option<std::string::String>,
        pub(crate) label: std::option::Option<std::string::String>,
        pub(crate) label_template: std::option::Option<std::string::String>,
        pub(crate) resource_types: std::option::Option<std::vec::Vec<std::string::String>>,
        pub(crate) sink_arn: std::option::Option<std::string::String>,
        pub(crate) tags: std::option::Option<
            std::collections::HashMap<std::string::String, std::string::String>,
        >,
    }
    impl Builder {
        /// <p>The ARN of the link that is newly created.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.arn = Some(input.into());
            self
        }
        /// <p>The ARN of the link that is newly created.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.arn = input;
            self
        }
        /// <p>The random ID string that Amazon Web Services generated as part of the link ARN.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.id = Some(input.into());
            self
        }
        /// <p>The random ID string that Amazon Web Services generated as part of the link ARN.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.id = input;
            self
        }
        /// <p>The label that you assigned to this link. If the <code>labelTemplate</code> includes variables, this field displays the variables resolved to their actual values.</p>
        pub fn label(mut self, input: impl Into<std::string::String>) -> Self {
            self.label = Some(input.into());
            self
        }
        /// <p>The label that you assigned to this link. If the <code>labelTemplate</code> includes variables, this field displays the variables resolved to their actual values.</p>
        pub fn set_label(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.label = input;
            self
        }
        /// <p>The exact label template that you specified, with the variables not resolved.</p>
        pub fn label_template(mut self, input: impl Into<std::string::String>) -> Self {
            self.label_template = Some(input.into());
            self
        }
        /// <p>The exact label template that you specified, with the variables not resolved.</p>
        pub fn set_label_template(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.label_template = input;
            self
        }
        /// Appends an item to `resource_types`.
        ///
        /// To override the contents of this collection use [`set_resource_types`](Self::set_resource_types).
        ///
        /// <p>The resource types supported by this link.</p>
        pub fn resource_types(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.resource_types.unwrap_or_default();
            v.push(input.into());
            self.resource_types = Some(v);
            self
        }
        /// <p>The resource types supported by this link.</p>
        pub fn set_resource_types(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.resource_types = input;
            self
        }
        /// <p>The ARN of the sink that is used for this link.</p>
        pub fn sink_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.sink_arn = Some(input.into());
            self
        }
        /// <p>The ARN of the sink that is used for this link.</p>
        pub fn set_sink_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.sink_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 assigned to the link.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            let mut hash_map = self.tags.unwrap_or_default();
            hash_map.insert(k.into(), v.into());
            self.tags = Some(hash_map);
            self
        }
        /// <p>The tags assigned to the link.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.tags = input;
            self
        }
        /// Consumes the builder and constructs a [`CreateLinkOutput`](crate::output::CreateLinkOutput).
        pub fn build(self) -> crate::output::CreateLinkOutput {
            crate::output::CreateLinkOutput {
                arn: self.arn,
                id: self.id,
                label: self.label,
                label_template: self.label_template,
                resource_types: self.resource_types,
                sink_arn: self.sink_arn,
                tags: self.tags,
            }
        }
    }
}
impl CreateLinkOutput {
    /// Creates a new builder-style object to manufacture [`CreateLinkOutput`](crate::output::CreateLinkOutput).
    pub fn builder() -> crate::output::create_link_output::Builder {
        crate::output::create_link_output::Builder::default()
    }
}